4require_once(
"./Services/FileSystem/classes/class.ilFileData.php");
5require_once(
"./Services/Utilities/classes/class.ilFileUtils.php");
41 define(
'FORUM_PATH',
'forum');
42 parent::__construct();
43 $this->forum_path = parent::getPath().
"/".FORUM_PATH;
50 $this->obj_id = $a_obj_id;
51 $this->pos_id = $a_pos_id;
64 $this->pos_id = $a_id;
79 public function getFiles()
83 foreach(
new DirectoryIterator($this->forum_path) as
$file)
98 'path' =>
$file->getPathname(),
99 'md5' => md5($this->obj_id .
'_' . $this->pos_id .
'_' .
$rest),
101 'size' =>
$file->getSize(),
102 'ctime' =>
date(
'Y-m-d H:i:s',
$file->getCTime())
113 public function getFilesOfPost()
117 foreach(
new DirectoryIterator($this->forum_path) as
$file)
135 'path' =>
$file->getPathname(),
136 'md5' => md5($this->obj_id .
'_' . $this->pos_id .
'_' .
$rest),
138 'size' =>
$file->getSize(),
139 'ctime' =>
date(
'Y-m-d H:i:s',
$file->getCTime())
152 public function moveFilesOfPost($a_new_frm_id = 0)
154 if((
int)$a_new_frm_id)
156 foreach(
new DirectoryIterator($this->forum_path) as
$file)
174 $file->getPathname(),
175 $this->forum_path .
'/' . $a_new_frm_id .
'_' . $this->pos_id .
'_' .
$rest
189 foreach($this->getFilesOfPost() as
$file)
191 @copy($this->
getForumPath().
"/".$this->obj_id.
"_".$this->pos_id.
"_".
$file[
"name"],
192 $this->getForumPath().
"/".$a_new_obj_id.
"_".$a_new_pos_id.
"_".
$file[
"name"]);
198 foreach($this->getFiles() as
$file)
221 foreach(
$files[
'name'] as $index => $name)
224 $name = rtrim($name,
'/');
227 $temp_name =
$files[
'tmp_name'][$index];
241 else if(isset(
$files[
'name']) && is_string(
$files[
'name']))
247 $temp_name =
$files[
'tmp_name'];
267 if(is_array($a_filenames))
269 foreach($a_filenames as
$file)
287 if(file_exists($this->forum_path.
'/'.$this->obj_id.
'_'.$this->pos_id.
'_'.$a_filename))
289 return unlink($this->forum_path.
'/'.$this->obj_id.
'_'.$this->pos_id.
"_".$a_filename);
300 return $this->forum_path.
'/'.$this->obj_id.
'_'.$this->pos_id.
"_".$a_path;
314 if(
$file[
'type'] ==
'file' && md5(
$file[
'entry']) == $a_md5_filename)
317 'path' => $this->forum_path.
'/'.
$file[
'entry'],
318 'filename' =>
$file[
'entry'],
319 'clean_filename' => str_replace($this->obj_id.
'_'.$this->pos_id.
'_',
'',
$file[
'entry'])
336 if(is_array($a_md5_filename))
340 if(
$file[
'type'] ==
'file' && in_array(md5(
$file[
'entry']), $a_md5_filename))
342 unlink( $this->forum_path.
'/'.
$file[
'entry'] );
352 if(
$file[
'type'] ==
'file' && md5(
$file[
'entry']) == $a_md5_filename)
354 return unlink( $this->forum_path.
'/'.
$file[
'entry'] );
372 foreach($a_files as
$file)
374 if(!file_exists($this->forum_path.
'/'.$this->obj_id.
'_'.$this->pos_id.
'_'.
$file))
403 if(is_writable($this->forum_path) && is_readable($this->forum_path))
409 $this->
ilias->raiseError(
"Forum directory is not readable/writable by webserver",$this->
ilias->error_obj->FATAL);
420 if(is_writable($this->
getPath()))
422 if(mkdir($this->
getPath().
'/'.FORUM_PATH))
424 if(chmod($this->
getPath().
'/'.FORUM_PATH,0755))
426 $this->forum_path = $this->
getPath().
'/'.FORUM_PATH;
442 if(file_exists($a_path))
445 return \ilFileUtils::rename($a_path, $a_path .
'.old');
469 public function deliverZipFile()
496 $filesOfPost = $this->getFilesOfPost();
501 foreach($filesOfPost as
$file)
503 @copy(
$file[
'path'], $tmp_dir .
'/' .
$file[
'name']);
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
An exception for terminatinating execution or to throw for unit testing.
This class handles all operations on files for the forum object.
__construct($a_obj_id=0, $a_pos_id=0)
Constructor call base constructors checks if directory is writable and sets the optional obj_id.
__rotateFiles($a_path)
rotate files with same name recursive method
getAbsolutePath($a_path)
get absolute path of filename
unlinkFilesByMD5Filenames($a_md5_filename)
get file data of a specific attachment
getFileDataByMD5Filename($a_md5_filename)
get file data of a specific attachment
__initDirectory()
init directory overwritten method @access public
getForumPath()
get forum path @access public
storeUploadedFile($files)
Store uploaded files in filesystem.
unlinkFile($a_filename)
unlink one uploaded file expects a filename e.g 'foo'
ilClone($a_new_obj_id, $a_new_pos_id)
__checkReadWrite()
check if directory is writable overwritten method from base class @access private
unlinkFiles($a_filenames)
unlink files: expects an array of filenames e.g.
checkFilesExist($a_files)
check if files exist
This class handles all operations on files in directory /ilias_data/.
getPath()
get Path @access public
static rename($a_source, $a_target)
Rename a file.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static delDir($a_dir, $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static _sanitizeFilemame($a_filename)
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static zip($a_dir, $a_file, $compress_content=false)
static getDir($a_dir, $a_rec=false, $a_sub_dir="")
get directory
static makeDirParents($a_dir)
Create a new directory and all parent directories.
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
redirection script todo: (a better solution should control the processing via a xml file)
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file