/** * Renders the specified object into images. * The images do not need to be of the preview image size. * * @param ilObjFile $obj The object to create images from. * @return array An array of ilRenderedImage containing the absolute file paths to the images. */ protected function renderImages($obj) { $numOfPreviews = $this->getMaximumNumberOfPreviews(); // get file path $filepath = $obj->getFile(); $inputFile = $this->prepareFileForExec($filepath); // create a temporary file name and remove its extension $output = str_replace(".tmp", "", ilUtil::ilTempnam()); // use '#' instead of '%' as it gets replaced by 'escapeShellArg' on windows! $outputFile = $output . "_#02d.png"; // create images with ghostscript (we use PNG here as it has better transparency quality) // gswin32c -dBATCH -dNOPAUSE -dSAFER -dFirstPage=1 -dLastPage=5 -sDEVICE=pngalpha -dEPSCrop -r72 -o $outputFile $inputFile // gswin32c -dBATCH -dNOPAUSE -dSAFER -dFirstPage=1 -dLastPage=5 -sDEVICE=jpeg -dJPEGQ=90 -r72 -o $outputFile $inputFile $args = sprintf("-dBATCH -dNOPAUSE -dSAFER -dFirstPage=1 -dLastPage=%d -sDEVICE=pngalpha -dEPSCrop -r72 -o %s %s", $numOfPreviews, str_replace("#", "%", ilUtil::escapeShellArg($outputFile)), ilUtil::escapeShellArg($inputFile)); ilUtil::execQuoted(PATH_TO_GHOSTSCRIPT, $args); // was a temporary file created? then delete it if ($filepath != $inputFile) { @unlink($inputFile); } // check each file and add it $images = array(); $outputFile = str_replace("#", "%", $outputFile); for ($i = 1; $i <= $numOfPreviews; $i++) { $imagePath = sprintf($outputFile, $i); if (!file_exists($imagePath)) { break; } $images[] = new ilRenderedImage($imagePath); } return $images; }
function validateXML($file) { exec(ilUtil::getJavaPath() . " -jar " . ilUtil::escapeShellArg(ILIAS_ABSOLUTE_PATH . "/Modules/ScormAicc/validation/vali.jar") . " " . ilUtil::escapeShellArg($file) . " 2>&1", $error); if (count($error) != 0) { $this->summary[] = ""; $this->summary[] = "<b>File: {$file}</b>"; foreach ($error as $line) { $this->summary[] = $line; //echo "<br><b>".$line."</b>"; } } }
/** * Download all submitted files of an assignment (all user) * * @param $members array of user names, key is user id */ function downloadAllDeliveredFiles($a_eph_id, $a_ass_id, $members) { global $lng, $ilObjDataCache, $ilias; include_once "./Services/Utilities/classes/class.ilUtil.php"; include_once "./Customizing/global/plugins/Services/Repository/RepositoryObject/Ephorus/classes/class.ilFSStorageEphorus.php"; $storage = new ilFSStorageEphorus($a_eph_id, $a_ass_id); $storage->create(); ksort($members); //$savepath = $this->getEphorusPath() . "/" . $this->obj_id . "/"; $savepath = $storage->getAbsoluteSubmissionPath(); $cdir = getcwd(); // important check: if the directory does not exist // ILIAS stays in the current directory (echoing only a warning) // and the zip command below archives the whole ILIAS directory // (including the data directory) and sends a mega file to the user :-o if (!is_dir($savepath)) { return; } // Safe mode fix // chdir($this->getEphorusPath()); chdir($storage->getTempPath()); $zip = PATH_TO_ZIP; // check first, if we have enough free disk space to copy all files to temporary directory $tmpdir = ilUtil::ilTempnam(); ilUtil::makeDir($tmpdir); chdir($tmpdir); $dirsize = 0; foreach ($members as $id => $object) { $directory = $savepath . DIRECTORY_SEPARATOR . $id; $dirsize += ilUtil::dirsize($directory); } if ($dirsize > disk_free_space($tmpdir)) { return -1; } // copy all member directories to the temporary folder // switch from id to member name and append the login if the member name is double // ensure that no illegal filenames will be created // remove timestamp from filename $cache = array(); foreach ($members as $id => $user) { $sourcedir = $savepath . DIRECTORY_SEPARATOR . $id; if (!is_dir($sourcedir)) { continue; } $userName = ilObjUser::_lookupName($id); $directory = ilUtil::getASCIIFilename(trim($userName["lastname"]) . "_" . trim($userName["firstname"])); if (array_key_exists($directory, $cache)) { // first try is to append the login; $directory = ilUtil::getASCIIFilename($directory . "_" . trim(ilObjUser::_lookupLogin($id))); if (array_key_exists($directory, $cache)) { // second and secure: append the user id as well. $directory .= "_" . $id; } } $cache[$directory] = $directory; ilUtil::makeDir($directory); $sourcefiles = scandir($sourcedir); foreach ($sourcefiles as $sourcefile) { if ($sourcefile == "." || $sourcefile == "..") { continue; } $targetfile = trim(basename($sourcefile)); $pos = strpos($targetfile, "_"); if ($pos === false) { } else { $targetfile = substr($targetfile, $pos + 1); } $targetfile = $directory . DIRECTORY_SEPARATOR . $targetfile; $sourcefile = $sourcedir . DIRECTORY_SEPARATOR . $sourcefile; if (!copy($sourcefile, $targetfile)) { //echo 'Could not copy '.$sourcefile.' to '.$targetfile; $ilias->raiseError('Could not copy ' . basename($sourcefile) . " to '" . $targetfile . "'.", $ilias->error_obj->MESSAGE); } else { // preserve time stamp touch($targetfile, filectime($sourcefile)); } } } $tmpfile = ilUtil::ilTempnam(); $tmpzipfile = $tmpfile . ".zip"; // Safe mode fix $zipcmd = $zip . " -r " . ilUtil::escapeShellArg($tmpzipfile) . " ."; exec($zipcmd); ilUtil::delDir($tmpdir); $assTitle = ilEphAssignment::lookupTitle($a_ass_id); chdir($cdir); ilUtil::deliverFile($tmpzipfile, (strlen($assTitle) == 0 ? strtolower($lng->txt("rep_robj_xeph_ephorus_assignment")) : $assTitle) . ".zip", "", false, true); }
/** * Upload new image file * * @param array $a_upload * @return bool */ function uploadImage(array $a_upload) { if (!$this->id) { return false; } $this->deleteImage(); // #10074 $clean_name = preg_replace("/[^a-zA-Z0-9\\_\\.\\-]/", "", $a_upload["name"]); $path = $this->initStorage($this->id); $original = "org_" . $this->id . "_" . $clean_name; $thumb = "thb_" . $this->id . "_" . $clean_name; $processed = $this->id . "_" . $clean_name; if (@move_uploaded_file($a_upload["tmp_name"], $path . $original)) { chmod($path . $original, 0770); $blga_set = new ilSetting("blga"); $dimensions = $blga_set->get("banner_width") . "x" . $blga_set->get("banner_height"); // take quality 100 to avoid jpeg artefacts when uploading jpeg files // taking only frame [0] to avoid problems with animated gifs $original_file = ilUtil::escapeShellArg($path . $original); $thumb_file = ilUtil::escapeShellArg($path . $thumb); $processed_file = ilUtil::escapeShellArg($path . $processed); ilUtil::execConvert($original_file . "[0] -geometry 100x100 -quality 100 JPEG:" . $thumb_file); ilUtil::execConvert($original_file . "[0] -geometry " . $dimensions . "! -quality 100 JPEG:" . $processed_file); $this->setImage($processed); return true; } return false; }
/** * Upload video preview picture * * @param * @return */ function generatePreviewPic($a_width, $a_height) { $item = $this->getMediaItem("Standard"); if ($item->getLocationType() == "LocalFile" && is_int(strpos($item->getFormat(), "image/"))) { $dir = ilObjMediaObject::_getDirectory($this->getId()); $file = $dir . "/" . $item->getLocation(); if (is_file($file)) { if (ilUtil::isConvertVersionAtLeast("6.3.8-3")) { ilUtil::execConvert(ilUtil::escapeShellArg($file) . "[0] -geometry " . $a_width . "x" . $a_height . "^ -gravity center -extent " . $a_width . "x" . $a_height . " PNG:" . $dir . "/mob_vpreview.png"); } else { ilUtil::convertImage($file, $dir . "/mob_vpreview.png", "PNG", $a_width . "x" . $a_height); } } } }
/** * unzip file * * @param string $a_file full path/filename * @param boolean $overwrite pass true to overwrite existing files */ function unzip($a_file, $overwrite = false) { //global $ilias; $pathinfo = pathinfo($a_file); $dir = $pathinfo["dirname"]; $file = $pathinfo["basename"]; // unzip $cdir = getcwd(); chdir($dir); $unzip = $this->ini->readVariable("tools", "unzip"); $unzipcmd = $unzip . " -Z -1 " . ilUtil::escapeShellArg($file); exec($unzipcmd, $arr); $zdirs = array(); foreach ($arr as $line) { if (is_int(strpos($line, "/"))) { $zdir = substr($line, 0, strrpos($line, "/")); $nr = substr_count($zdir, "/"); //echo $zdir." ".$nr."<br>"; while ($zdir != "") { $nr = substr_count($zdir, "/"); $zdirs[$zdir] = $nr; // collect directories //echo $dir." ".$nr."<br>"; $zdir = substr($zdir, 0, strrpos($zdir, "/")); } } } asort($zdirs); foreach ($zdirs as $zdir => $nr) { ilUtil::createDirectory($zdir); } // real unzip if ($overvwrite) { $unzipcmd = $unzip . " " . ilUtil::escapeShellArg($file); } else { $unzipcmd = $unzip . " -o " . ilUtil::escapeShellArg($file); } exec($unzipcmd); chdir($cdir); }
/** * Upload new image file * * @param array $a_upload * @return bool */ function uploadImage(array $a_upload, $a_clone = false) { if (!$this->id) { return false; } $this->deleteImage(); // #10074 $clean_name = preg_replace("/[^a-zA-Z0-9\\_\\.\\-]/", "", $a_upload["name"]); $path = $this->initStorage($this->id); $original = "org_" . $this->id . "_" . $clean_name; $thumb = "thb_" . $this->id . "_" . $clean_name; $processed = $this->id . "_" . $clean_name; $success = false; if (!$a_clone) { $success = @move_uploaded_file($a_upload["tmp_name"], $path . $original); } else { $success = @copy($a_upload["tmp_name"], $path . $original); } if ($success) { chmod($path . $original, 0770); // take quality 100 to avoid jpeg artefacts when uploading jpeg files // taking only frame [0] to avoid problems with animated gifs $original_file = ilUtil::escapeShellArg($path . $original); $thumb_file = ilUtil::escapeShellArg($path . $thumb); $processed_file = ilUtil::escapeShellArg($path . $processed); ilUtil::execConvert($original_file . "[0] -geometry \"100x100>\" -quality 100 PNG:" . $thumb_file); ilUtil::execConvert($original_file . "[0] -geometry \"" . self::getImageSize() . ">\" -quality 100 PNG:" . $processed_file); $this->setImage($processed); return true; } return false; }
function newModuleVersionUpload() { global $_FILES, $rbacsystem; $unzip = PATH_TO_UNZIP; $tocheck = "imsmanifest.xml"; include_once 'Services/FileSystem/classes/class.ilUploadFiles.php'; // check create permission before because the uploaded file will be copied if (!$rbacsystem->checkAccess("write", $_GET["ref_id"])) { $this->ilias->raiseError($this->lng->txt("no_create_permission"), $this->ilias->error_obj->WARNING); } elseif ($_FILES["scormfile"]["name"]) { // check if file was uploaded $source = $_FILES["scormfile"]["tmp_name"]; if ($source == 'none' || !$source) { ilUtil::sendInfo($this->lng->txt("upload_error_file_not_found"), true); $this->newModuleVersion(); return; } } elseif ($_POST["uploaded_file"]) { // check if the file is in the ftp directory and readable if (!ilUploadFiles::_checkUploadFile($_POST["uploaded_file"])) { $this->ilias->raiseError($this->lng->txt("upload_error_file_not_found"), $this->ilias->error_obj->MESSAGE); } // copy the uploaded file to the client web dir to analyze the imsmanifest // the copy will be moved to the lm directory or deleted $source = CLIENT_WEB_DIR . "/" . $_POST["uploaded_file"]; ilUploadFiles::_copyUploadFile($_POST["uploaded_file"], $source); $source_is_copy = true; } else { ilUtil::sendInfo($this->lng->txt("upload_error_file_not_found"), true); $this->newModuleVersion(); return; } // fim. //unzip the imsmanifest-file from new uploaded file $pathinfo = pathinfo($source); $dir = $pathinfo["dirname"]; $file = $pathinfo["basename"]; $cdir = getcwd(); chdir($dir); //we need more flexible unzip here than ILIAS standard classes allow $unzipcmd = $unzip . " -o " . ilUtil::escapeShellArg($source) . " " . $tocheck; exec($unzipcmd); chdir($cdir); $tmp_file = $dir . "/" . $tocheck . "." . $_GET["ref_id"]; rename($dir . "/" . $tocheck, $tmp_file); $new_manifest = file_get_contents($tmp_file); //remove temp file unlink($tmp_file); //get old manifest file $old_manifest = file_get_contents($this->object->getDataDirectory() . "/" . $tocheck); //reload fixed version of file $check = '/xmlns="http:\\/\\/www.imsglobal.org\\/xsd\\/imscp_v1p1"/'; $replace = "xmlns=\"http://www.imsproject.org/xsd/imscp_rootv1p1p2\""; $reload_manifest = preg_replace($check, $replace, $new_manifest); //do testing for converted versions as well as earlier ILIAS version messed up utf8 conversion if (strcmp($new_manifest, $old_manifest) == 0 || strcmp(utf8_encode($new_manifest), $old_manifest) == 0 || strcmp($reload_manifest, $old_manifest) == 0 || strcmp(utf8_encode($reload_manifest), $old_manifest) == 0) { //get exisiting module version $module_version = $this->object->getModuleVersion(); if ($_FILES["scormfile"]["name"]) { //build targetdir in lm_data $file_path = $this->object->getDataDirectory() . "/" . $_FILES["scormfile"]["name"] . "." . $module_version; //move to data directory and add subfix for versioning ilUtil::moveUploadedFile($_FILES["scormfile"]["tmp_name"], $_FILES["scormfile"]["name"], $file_path); } else { //build targetdir in lm_data $file_path = $this->object->getDataDirectory() . "/" . $_POST["uploaded_file"] . "." . $module_version; // move the already copied file to the lm_data directory rename($source, $file_path); } //unzip and replace old extracted files ilUtil::unzip($file_path, true); ilUtil::renameExecutables($this->object->getDataDirectory()); //(security) //increase module version $this->object->setModuleVersion($module_version + 1); $this->object->update(); //redirect to properties and display success ilUtil::sendInfo($this->lng->txt("cont_new_module_added"), true); ilUtil::redirect("ilias.php?baseClass=ilSAHSEditGUI&ref_id=" . $_GET["ref_id"]); exit; } else { if ($source_is_copy) { unlink($source); } ilUtil::sendInfo($this->lng->txt("cont_invalid_new_module"), true); $this->newModuleVersion(); } }
/** * Upload user image */ function uploadUserPicture() { global $ilUser; if ($this->workWithUserSetting("upload")) { if (!$this->form->hasFileUpload("userfile")) { if ($this->form->getItemByPostVar("userfile")->getDeletionFlag()) { $ilUser->removeUserPicture(); } return; } else { $webspace_dir = ilUtil::getWebspaceDir(); $image_dir = $webspace_dir . "/usr_images"; $store_file = "usr_" . $ilUser->getID() . "." . "jpg"; // store filename $ilUser->setPref("profile_image", $store_file); $ilUser->update(); // move uploaded file $uploaded_file = $this->form->moveFileUpload($image_dir, "userfile", "upload_" . $ilUser->getId() . "pic"); if (!$uploaded_file) { ilUtil::sendFailure($this->lng->txt("upload_error", true)); $this->ctrl->redirect($this, "showProfile"); } chmod($uploaded_file, 0770); // take quality 100 to avoid jpeg artefacts when uploading jpeg files // taking only frame [0] to avoid problems with animated gifs $show_file = "{$image_dir}/usr_" . $ilUser->getId() . ".jpg"; $thumb_file = "{$image_dir}/usr_" . $ilUser->getId() . "_small.jpg"; $xthumb_file = "{$image_dir}/usr_" . $ilUser->getId() . "_xsmall.jpg"; $xxthumb_file = "{$image_dir}/usr_" . $ilUser->getId() . "_xxsmall.jpg"; $uploaded_file = ilUtil::escapeShellArg($uploaded_file); $show_file = ilUtil::escapeShellArg($show_file); $thumb_file = ilUtil::escapeShellArg($thumb_file); $xthumb_file = ilUtil::escapeShellArg($xthumb_file); $xxthumb_file = ilUtil::escapeShellArg($xxthumb_file); if (ilUtil::isConvertVersionAtLeast("6.3.8-3")) { ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200^ -gravity center -extent 200x200 -quality 100 JPEG:" . $show_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100^ -gravity center -extent 100x100 -quality 100 JPEG:" . $thumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75^ -gravity center -extent 75x75 -quality 100 JPEG:" . $xthumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30^ -gravity center -extent 30x30 -quality 100 JPEG:" . $xxthumb_file); } else { ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200 -quality 100 JPEG:" . $show_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100 -quality 100 JPEG:" . $thumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75 -quality 100 JPEG:" . $xthumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30 -quality 100 JPEG:" . $xxthumb_file); } } } // $this->saveProfile(); }
/** * produce pdf out of html with htmldoc * @param html String HTML-Data given to create pdf-file * @param pdf_file String Filename to save pdf in * @static */ public static function htmlfile2pdf($html_file, $pdf_file) { $htmldoc_path = PATH_TO_HTMLDOC; $htmldoc = "--no-toc "; $htmldoc .= "--no-jpeg "; $htmldoc .= "--webpage "; $htmldoc .= "--outfile " . ilUtil::escapeShellArg($pdf_file) . " "; $htmldoc .= "--bodyfont Arial "; $htmldoc .= "--charset iso-8859-15 "; $htmldoc .= "--color "; $htmldoc .= "--size A4 "; // --landscape $htmldoc .= "--format pdf "; $htmldoc .= "--footer ... "; $htmldoc .= "--header ... "; $htmldoc .= "--left 60 "; // $htmldoc .= "--right 200 "; $htmldoc .= $html_file; ilUtil::execQuoted($htmldoc_path, $htmldoc); }
/** * Extract image from video file * * @param string $a_file source file (full path included) * @param string $a_target_dir target directory (no trailing "/") * @param string $a_target_filename target file name (no path!) * * @return string new file (full path) */ static function extractImage($a_file, $a_target_filename, $a_target_dir = "", $a_sec = 1) { //echo "-$a_file-$a_target_filename-$a_target_dir-$a_sec-<br>"; $spi = pathinfo($a_file); // use source directory if no target directory is passed $target_dir = $a_target_dir != "" ? $a_target_dir : $spi['dirname']; $target_file = $target_dir . "/" . $a_target_filename; $sec = (int) $a_sec; $cmd = "-y -i " . ilUtil::escapeShellArg($a_file) . " -r 1 -f image2 -vframes 1 -ss " . $sec . " " . ilUtil::escapeShellArg($target_file); //echo "-$cmd-"; exit; $ret = self::exec($cmd . " 2>&1"); self::$last_return = $ret; if (is_file($target_file)) { return $target_file; } else { include_once "./Services/MediaObjects/exceptions/class.ilFFmpegException.php"; throw new ilFFmpegException("It was not possible to extract an image from " . basename($a_file) . "."); } }
/** * save container icons */ function saveIcons($a_big_icon, $a_small_icon, $a_tiny_icon) { global $ilDB; $this->createContainerDirectory(); $cont_dir = $this->getContainerDirectory(); // save big icon $big_geom = $this->ilias->getSetting("custom_icon_big_width") . "x" . $this->ilias->getSetting("custom_icon_big_height"); $big_file_name = $cont_dir . "/icon_big.png"; if (is_file($a_big_icon)) { $a_big_icon = ilUtil::escapeShellArg($a_big_icon); $big_file_name = ilUtil::escapeShellArg($big_file_name); ilUtil::execConvert($a_big_icon . "[0] -geometry " . $big_geom . " PNG:" . $big_file_name); } if (is_file($cont_dir . "/icon_big.png")) { ilContainer::_writeContainerSetting($this->getId(), "icon_big", 1); } else { ilContainer::_writeContainerSetting($this->getId(), "icon_big", 0); } // save small icon $small_geom = $this->ilias->getSetting("custom_icon_small_width") . "x" . $this->ilias->getSetting("custom_icon_small_height"); $small_file_name = $cont_dir . "/icon_small.png"; if (is_file($a_small_icon)) { $a_small_icon = ilUtil::escapeShellArg($a_small_icon); $small_file_name = ilUtil::escapeShellArg($small_file_name); ilUtil::execConvert($a_small_icon . "[0] -geometry " . $small_geom . " PNG:" . $small_file_name); } if (is_file($cont_dir . "/icon_small.png")) { ilContainer::_writeContainerSetting($this->getId(), "icon_small", 1); } else { ilContainer::_writeContainerSetting($this->getId(), "icon_small", 0); } // save tiny icon $tiny_geom = $this->ilias->getSetting("custom_icon_tiny_width") . "x" . $this->ilias->getSetting("custom_icon_tiny_height"); $tiny_file_name = $cont_dir . "/icon_tiny.png"; if (is_file($a_tiny_icon)) { $a_tiny_icon = ilUtil::escapeShellArg($a_tiny_icon); $tiny_file_name = ilUtil::escapeShellArg($tiny_file_name); ilUtil::execConvert($a_tiny_icon . "[0] -geometry " . $tiny_geom . " PNG:" . $tiny_file_name); } if (is_file($cont_dir . "/icon_tiny.png")) { ilContainer::_writeContainerSetting($this->getId(), "icon_tiny", 1); } else { ilContainer::_writeContainerSetting($this->getId(), "icon_tiny", 0); } }
/** * Creates a preview image path from the specified source image. * * @param string $src_img_path The source image path. * @param string $dest_img_path The destination image path. * @return bool true, if the preview was created; otherwise, false. */ private function createPreviewImage($src_img_path, $dest_img_path) { // create resize argument $imgSize = $this->getImageSize(); $resizeArg = $imgSize . "x" . $imgSize . (ilUtil::isWindows() ? "^" : "\\") . ">"; // cmd: convert $src_img_path -background white -flatten -resize 280x280 -quality 85 -sharpen 0x0.5 $dest_img_path $args = sprintf("%s -background white -flatten -resize %s -quality %d -sharpen 0x0.5 %s", ilUtil::escapeShellArg($src_img_path), $resizeArg, $this->getImageQuality(), ilUtil::escapeShellArg($dest_img_path)); ilUtil::execConvert($args); return is_file($dest_img_path); }
function getXMLZip() { global $ilias; $zip = PATH_TO_ZIP; exec($zip . ' ' . ilUtil::escapeShellArg($this->getDirectory() . '/' . $this->getFileName()) . " " . ilUtil::escapeShellArg($this->getDirectory() . '/' . '1.zip')); return $this->getDirectory() . '/1.zip'; }
/** * upload user image * * (original method by ratana ty) */ function uploadUserPictureObject() { global $ilUser, $rbacsystem; // User folder if ($this->usrf_ref_id == USER_FOLDER_ID and !$rbacsystem->checkAccess('visible,read', $this->usrf_ref_id)) { $this->ilias->raiseError($this->lng->txt("msg_no_perm_modify_user"), $this->ilias->error_obj->MESSAGE); } // if called from local administration $this->usrf_ref_id is category id // Todo: this has to be fixed. Do not mix user folder id and category id if ($this->usrf_ref_id != USER_FOLDER_ID) { // check if user is assigned to category if (!$rbacsystem->checkAccess('cat_administrate_users', $this->object->getTimeLimitOwner())) { $this->ilias->raiseError($this->lng->txt("msg_no_perm_modify_user"), $this->ilias->error_obj->MESSAGE); } } $userfile_input = $this->form_gui->getItemByPostVar("userfile"); if ($_FILES["userfile"]["tmp_name"] == "") { if ($userfile_input->getDeletionFlag()) { $this->object->removeUserPicture(); } return; } if ($_FILES["userfile"]["size"] == 0) { ilUtil::sendFailure($this->lng->txt("msg_no_file")); } else { $webspace_dir = ilUtil::getWebspaceDir(); $image_dir = $webspace_dir . "/usr_images"; $store_file = "usr_" . $this->object->getId() . "." . "jpg"; // store filename $this->object->setPref("profile_image", $store_file); $this->object->update(); // move uploaded file $uploaded_file = $image_dir . "/upload_" . $this->object->getId() . "pic"; if (!ilUtil::moveUploadedFile($_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["name"], $uploaded_file, false)) { ilUtil::sendFailure($this->lng->txt("upload_error", true)); $this->ctrl->redirect($this, "showProfile"); } chmod($uploaded_file, 0770); // take quality 100 to avoid jpeg artefacts when uploading jpeg files // taking only frame [0] to avoid problems with animated gifs $show_file = "{$image_dir}/usr_" . $this->object->getId() . ".jpg"; $thumb_file = "{$image_dir}/usr_" . $this->object->getId() . "_small.jpg"; $xthumb_file = "{$image_dir}/usr_" . $this->object->getId() . "_xsmall.jpg"; $xxthumb_file = "{$image_dir}/usr_" . $this->object->getId() . "_xxsmall.jpg"; $uploaded_file = ilUtil::escapeShellArg($uploaded_file); $show_file = ilUtil::escapeShellArg($show_file); $thumb_file = ilUtil::escapeShellArg($thumb_file); $xthumb_file = ilUtil::escapeShellArg($xthumb_file); $xxthumb_file = ilUtil::escapeShellArg($xxthumb_file); if (ilUtil::isConvertVersionAtLeast("6.3.8-3")) { ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200^ -gravity center -extent 200x200 -quality 100 JPEG:" . $show_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100^ -gravity center -extent 100x100 -quality 100 JPEG:" . $thumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75^ -gravity center -extent 75x75 -quality 100 JPEG:" . $xthumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30^ -gravity center -extent 30x30 -quality 100 JPEG:" . $xxthumb_file); } else { ilUtil::execConvert($uploaded_file . "[0] -geometry 200x200 -quality 100 JPEG:" . $show_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 100x100 -quality 100 JPEG:" . $thumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 75x75 -quality 100 JPEG:" . $xthumb_file); ilUtil::execConvert($uploaded_file . "[0] -geometry 30x30 -quality 100 JPEG:" . $xxthumb_file); } } }
/** * Save an icon * * @param string path to the uploaded file * @param string size ("big", "small", "tiny" or "svg") * @param string level ("type" or "object") * @param integer type id or object id */ static function _saveIcon($a_upload_path, $a_size, $a_level, $a_id) { global $ilSetting; if (is_file($a_upload_path)) { $icon_path = self::_createWebspaceDir($a_level, $a_id) . "/" . self::_getIconName($a_size); if ($a_size == "svg") { ilUtil::moveUploadedFile($a_upload_path, 'icon', $icon_path); } else { switch ($a_size) { case "small": $geom = self::SMALL_ICON_SIZE; break; case "tiny": $geom = self::TINY_ICON_SIZE; break; case "big": default: $geom = self::BIG_ICON_SIZE; break; } $a_upload_path = ilUtil::escapeShellArg($a_upload_path); $icon_path = ilUtil::escapeShellArg($icon_path); ilUtil::execConvert($a_upload_path . "[0] -geometry " . $geom . " PNG:" . $icon_path); } } }