35 include_once
'Services/Utilities/classes/class.ilFileUtilsException.php';
53 function processZipFile ($a_directory, $a_file, $structure,
$ref_id = null, $containerType = null, $tree = null, $access_handler = null) {
56 include_once(
"Services/Utilities/classes/class.ilUtil.php");
58 $pathinfo = pathinfo($a_file);
59 $file = $pathinfo[
"basename"];
64 move_uploaded_file($a_file, $a_directory .
"/" .
$file);
66 unlink ($a_directory .
"/" . $file);
73 if (empty($filearray)) {
79 foreach ($filearray[
"file"] as $key => $value)
82 if(substr($value, 0, 1) ==
"." || stristr($filearray[
"path"][$key],
"/__MACOSX/"))
84 unlink($filearray[
"path"][$key].$value);
85 unset($filearray[
"path"][$key]);
86 unset($filearray[
"file"][$key]);
94 unlink($filearray[path][$key]);
111 foreach (array_count_values($filearray[
"file"]) as $key => $value)
120 if (isset($doublettes))
122 throw new ilFileUtilsException($lng->txt(
"exc_upload_error") .
"<br />" . $lng->txt(
"zip_structure_error") . $doublettes ,
129 $mac_dir = $a_directory.
"/__MACOSX";
130 if(file_exists($mac_dir))
156 $dirlist = opendir(
$dir);
157 while (
false !== (
$file = readdir ($dirlist)))
159 if (!is_file(
$dir .
"/" .
$file) && !is_dir(
$dir .
"/" . $file))
164 if ($file !=
'.' && $file !=
'..')
167 $level = explode(
'/',$newpath);
168 if (is_dir($newpath))
174 $arr[
"path"][] =
$dir .
"/";
175 $arr[
"file"][] = end($level);
198 $dirlist = opendir(
$dir);
200 while (
false !== (
$file = readdir ($dirlist)))
202 if (!is_file(
$dir .
"/" .
$file) && !is_dir(
$dir .
"/" . $file))
206 if ($file !=
'.' && $file !=
'..')
209 $level = explode(
'/',$newpath);
210 if (is_dir($newpath))
244 switch($containerType)
247 include_once(
"./Modules/Category/classes/class.ilObjCategory.php");
249 $newObj->setType(
"cat");
253 include_once(
"./Modules/Folder/classes/class.ilObjFolder.php");
255 $newObj->setType(
"fold");
258 case "WorkspaceFolder":
259 include_once(
"./Modules/WorkspaceFolder/classes/class.ilObjWorkspaceFolder.php");
264 $newObj->setTitle($name);
270 $newObj->createReference();
272 $newObj->setPermissions(
$ref_id);
274 if ($newObj->getType() ==
"cat")
277 $newObj->addTranslation($name,
"", $lng->getLangKey(), $lng->getLangKey());
280 return $newObj->getRefId();
285 $node_id = $tree->insertObject(
$ref_id, $newObj->getId());
286 $access_handler->setPermissions(
$ref_id, $node_id);
307 $permission = $rbacsystem->checkAccess(
"create",
$ref_id,
"file");
311 $permission = $access_handler->checkAccess(
"create",
"",
$ref_id,
"file");
316 include_once(
"./Modules/File/classes/class.ilObjFile.php");
318 $fileObj->setType($this->type);
323 include_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
331 $fileObj->createReference();
333 $fileObj->setPermissions(
$ref_id);
337 $node_id = $tree->insertObject(
$ref_id, $fileObj->getId());
338 $access_handler->setPermissions(
$ref_id, $node_id);
342 $fileObj->createDirectory();
346 $this->ilErr->raiseError($this->lng->txt(
"permission_denied"),$this->ilErr->MESSAGE);
361 return (preg_match(
'%^(?:
362 [\x09\x0A\x0D\x20-\x7E] # ASCII
363 | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
364 | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
365 | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
366 | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
367 | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
368 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
369 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
370 )*$%xs', $string))? $string :
utf8_encode($string);
381 $fh = fopen($filein,
'rb');
382 $fh2= fopen($fileout,
'wb');
383 stream_filter_append($fh2,
'convert.base64-decode');
387 if ($chunk ===
false)
389 fwrite ($fh2, $chunk);
403 $fh = fopen($filein,
'rb');
404 $fh2= fopen($fileout,
'wb');
405 stream_filter_append($fh2,
'convert.base64-encode');
408 $chunk = fgets($fh,76);
409 if ($chunk ===
false)
413 fwrite ($fh2, $chunk);
430 if (!file_exists (
$in) || !is_readable (
$in))
432 if ((!file_exists (
$out) && !is_writable (dirname (
$out)) || (file_exists(
$out) && !is_writable(
$out)) ))
435 $in_file = fopen (
$in,
"rb");
436 if (!$out_file = gzopen (
$out,
"wb".$param)) {
440 while (!feof ($in_file)) {
441 $buffer = fgets ($in_file, 4096);
442 gzwrite ($out_file, $buffer, 4096);
461 if (!file_exists (
$in) || !is_readable (
$in))
463 if ((!file_exists (
$out) && !is_writable (dirname (
$out)) || (file_exists(
$out) && !is_writable(
$out)) ))
466 $in_file = gzopen (
$in,
"rb");
467 $out_file = fopen (
$out,
"wb");
469 while (!gzeof ($in_file)) {
470 $buffer = gzread ($in_file, 4096);
471 fwrite ($out_file, $buffer, 4096);
485 if(!file_exists($a_file) or !is_readable($a_file))
490 if(class_exists(
'finfo'))
492 $finfo =
new finfo(FILEINFO_MIME);
493 return $finfo->buffer(file_get_contents($a_file));
495 if(function_exists(
'mime_content_type'))
497 return mime_content_type($a_file);
499 return 'application/octet-stream';