ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f87
class.ilFSStorageCourse.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
24 include_once('Services/FileSystem/classes/class.ilFileSystemStorage.php');
25 
35 {
36  const MEMBER_EXPORT_DIR = 'memberExport';
37  const INFO_DIR = 'info';
38  const ARCHIVE_DIR = 'archives';
39 
40  private $log;
47  public function __construct($a_container_id = 0)
48  {
49  global $log;
50 
51  $this->log = $log;
52  parent::__construct(ilFileSystemStorage::STORAGE_DATA,true,$a_container_id);
53  }
54 
64  public static function _clone($a_source_id,$a_target_id)
65  {
66  $source = new ilFSStorageCourse($a_source_id);
67  $target = new ilFSStorageCourse($a_target_id);
68 
69  $target->create();
70  ilFileSystemStorage::_copyDirectory($source->getAbsolutePath(),$target->getAbsolutePath());
71 
72  // Delete member export files
73  $target->deleteDirectory($target->getMemberExportDirectory());
74 
75  unset($source);
76  unset($target);
77  return true;
78  }
79 
80  // Info files
87  public function initInfoDirectory()
88  {
90  }
91 
98  public function getInfoDirectory()
99  {
100  return $this->getAbsolutePath().'/'.self::INFO_DIR;
101  }
102 
103 
110  public function initMemberExportDirectory()
111  {
113  }
114 
121  public function getMemberExportDirectory()
122  {
123  return $this->getAbsolutePath().'/'.self::MEMBER_EXPORT_DIR;
124  }
125 
134  public function addMemberExportFile($a_data,$a_rel_name)
135  {
136  $this->initMemberExportDirectory();
137  if(!$this->writeToFile($a_data,$this->getMemberExportDirectory().'/'.$a_rel_name))
138  {
139  $this->log->write('Cannot write to file: '.$this->getMemberExportDirectory().'/'.$a_rel_name);
140  return false;
141  }
142 
143  return true;
144 
145  }
146 
153  public function getMemberExportFiles()
154  {
155  if(!@is_dir($this->getMemberExportDirectory()))
156  {
157  return array();
158  }
159 
160  $files = array();
161  $dp = @opendir($this->getMemberExportDirectory());
162 
163  while($file = readdir($dp))
164  {
165  if(is_dir($file))
166  {
167  continue;
168  }
169 
170  if(preg_match("/^([0-9]{10})_[a-zA-Z]*_export_([a-z]+)_([0-9]+)\.[a-z]+$/",$file,$matches) and $matches[3] == $this->getContainerId())
171  {
172  $timest = $matches[1];
173  $file_info['name'] = $matches[0];
174  $file_info['timest'] = $matches[1];
175  $file_info['type'] = $matches[2];
176  $file_info['id'] = $matches[3];
177  $file_info['size'] = filesize($this->getMemberExportDirectory().'/'.$file);
178 
179  $files[$timest] = $file_info;
180  }
181  }
182  closedir($dp);
183  return $files ? $files : array();
184  }
185 
186  public function getMemberExportFile($a_name)
187  {
188  $file_name = $this->getMemberExportDirectory().'/'.$a_name;
189 
190  if(@file_exists($file_name))
191  {
192  return file_get_contents($file_name);
193  }
194  }
195 
203  public function deleteMemberExportFile($a_export_name)
204  {
205  return $this->deleteFile($this->getMemberExportDirectory().'/'.$a_export_name);
206  }
207 
208  // ARCHIVE Methods
216  public function initArchiveDirectory()
217  {
219  }
220 
227  public function getArchiveDirectory()
228  {
229  return $this->getAbsolutePath().'/'.self::ARCHIVE_DIR;
230  }
231 
239  public function addArchiveSubDirectory($a_name)
240  {
241  ilUtil::makeDirParents($this->getArchiveDirectory().'/'.$a_name);
242  }
243 
251  public function writeArchiveFile($a_data,$a_rel_name)
252  {
253  if(!$this->writeToFile($a_data,$this->getArchiveDirectory().'/'.$a_rel_name))
254  {
255  $this->log->write('Cannot write to file: '.$this->getArchiveDirectory().'/'.$a_rel_name);
256  return false;
257  }
258  return true;
259  }
260 
270  public function zipArchive($a_rel_name,$a_zip_name)
271  {
272  if(ilUtil::zip($this->getArchiveDirectory().'/'.$a_rel_name,$this->getArchiveDirectory().'/'.$a_zip_name))
273  {
274  return filesize($this->getArchiveDirectory().'/'.$a_zip_name);
275  }
276  return 0;
277  }
278 
286  public function deleteArchive($a_rel_name)
287  {
288  $this->deleteFile($this->getArchiveDirectory().'/'.$a_rel_name.'.zip');
289  $this->deleteDirectory($this->getArchiveDirectory().'/'.$a_rel_name);
290  }
291 
292  public function createArchiveOnlineVersion($a_rel_name)
293  {
294  ilUtil::makeDirParents(CLIENT_WEB_DIR.'/courses/'.$a_rel_name);
295  ilUtil::rCopy($this->getArchiveDirectory().'/'.$a_rel_name,CLIENT_WEB_DIR.'/courses/'.$a_rel_name);
296 
297  return true;
298  }
299 
300  public function getOnlineLink($a_rel_name)
301  {
302  return ilUtil::getWebspaceDir('filesystem').'/courses/'.$a_rel_name.'/index.html';
303  }
304 
305 
312  protected function getPathPostfix()
313  {
314  return 'crs';
315  }
316 
323  protected function getPathPrefix()
324  {
325  return 'ilCourse';
326  }
327 
328 }
329 
330 
331 
332 
333 ?>
static makeDirParents($a_dir)
Create a new directory and all parent directories.
initMemberExportDirectory()
Init export directory and create it if it does not exist.
print $file
__construct($a_container_id=0)
Constructor.
getMemberExportDirectory()
Get path of export directory.
getArchiveDirectory()
Get archive directory.
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
writeArchiveFile($a_data, $a_rel_name)
Write archive string to file.
_copyDirectory($a_source, $a_target)
Copy directory and all contents.
deleteDirectory($a_abs_name)
Delete directory.
static _clone($a_source_id, $a_target_id)
Clone course data directory.
getInfoDirectory()
Get course info directory.
createArchiveOnlineVersion($a_rel_name)
getPathPostfix()
Implementation of abstract method.
addArchiveSubDirectory($a_name)
Add subdirectory for archives.
addMemberExportFile($a_data, $a_rel_name)
Add new export file.
writeToFile($a_data, $a_absolute_path)
Write data to file.
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
getAbsolutePath()
Get absolute path of storage directory.
getPathPrefix()
Implementation of abstract method.
initInfoDirectory()
init info directory
getMemberExportFiles()
Get all member export files.
deleteArchive($a_rel_name)
Delete one archive.
deleteMemberExportFile($a_export_name)
Delete Member Export File.
static getWebspaceDir($mode="filesystem")
get webspace directory
initArchiveDirectory()
init Archive Directory
deleteFile($a_abs_name)
Delete file.
zipArchive($a_rel_name, $a_zip_name)
Zip archive directory.