ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilFileUtils Class Reference

Class ilFileUtils. More...

+ Collaboration diagram for ilFileUtils:

Static Public Member Functions

static recursive_dirscan (string $dir, array &$arr)
 Recursively scans a given directory and writes path and filename into referenced array. More...
 
static utf8_encode (string $string)
 
static getValidFilename (string $a_filename)
 
static rename (string $a_source, string $a_target)
 
static rCopy (string $a_sdir, string $a_tdir, bool $preserveTimeAttributes=false)
 Copies content of a directory $a_sdir recursively to a directory $a_tdir. More...
 
static makeDirParents (string $a_dir)
 Create a new directory and all parent directories. More...
 
static getDataDir ()
 get data directory (outside webspace) More...
 
static dirsize (string $directory)
 get size of a directory or a file. More...
 
static makeDir (string $a_dir)
 creates a new directory and inherits all filesystem permissions of the parent directory You may pass only the name of your new directory or with the entire path or relative path information. More...
 
static moveUploadedFile (string $a_file, string $a_name, string $a_target, bool $a_raise_errors=true, string $a_mode="move_uploaded")
 move uploaded file More...
 
static zip (string $a_dir, string $a_file, bool $compress_content=false)
 
static delDir (string $a_dir, bool $a_clean_only=false)
 removes a dir and all its content (subdirs and files) recursively More...
 
static getSafeFilename (string $a_initial_filename)
 
static getDir (string $a_dir, bool $a_rec=false, ?string $a_sub_dir="")
 get directory More...
 
static getWebspaceDir (string $mode="filesystem")
 get webspace directory More...
 
static createDirectory (string $a_dir, int $a_mod=0755)
 create directory More...
 
static getFileSizeInfo ()
 
static getASCIIFilename (string $a_filename)
 
static ilTempnam (?string $a_temp_path=null)
 Returns a unique and non existing Path for e temporary file or directory. More...
 
static unzip (string $a_file, bool $overwrite=false, bool $a_flat=false)
 unzip file More...
 
static renameExecutables (string $a_dir)
 
static rRenameSuffix (string $a_dir, string $a_old_suffix, string $a_new_suffix)
 Renames all files with certain suffix and gives them a new suffix. More...
 
static removeTrailingPathSeparators (string $path)
 
static getPhpUploadSizeLimitInBytes ()
 
static _sanitizeFilemame (string $a_filename)
 

Static Protected Member Functions

static sanitateTargetPath (string $a_target)
 

Detailed Description

Class ilFileUtils.

Deprecated:
All Methods are widely used and there is currently no other service providing all of them, but please do not implement new methods in this class.

Definition at line 30 of file class.ilFileUtils.php.

Member Function Documentation

◆ _sanitizeFilemame()

static ilFileUtils::_sanitizeFilemame ( string  $a_filename)
static

Definition at line 842 of file class.ilFileUtils.php.

References ilUtil\stripSlashes().

Referenced by ilFileDataMail\storeAsAttachment(), ilFileDataForumDraftsLegacyImplementation\storeUploadedFile(), and ilFileDataMail\storeUploadedFile().

842  : string
843  {
844  return strip_tags(ilUtil::stripSlashes($a_filename));
845  }
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createDirectory()

static ilFileUtils::createDirectory ( string  $a_dir,
int  $a_mod = 0755 
)
static

create directory

Parameters
string$a_dir
int$a_mod
Deprecated:
in favour of Filesystem::createDir() located at the filesystem service.
See also
::createDir()

Definition at line 637 of file class.ilFileUtils.php.

References makeDir().

Referenced by ilObjMediaObject\_createThumbnailDirectory(), ilPropertyFormGUI\appendOnloadCode(), ilExerciseManagementCollectFilesJob\createSubmissionsDirectory(), ilMediaItem\createWorkDirectory(), and ilTempnam().

637  : void
638  {
639  ilFileUtils::makeDir($a_dir);
640  }
static makeDir(string $a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ delDir()

static ilFileUtils::delDir ( string  $a_dir,
bool  $a_clean_only = false 
)
static

removes a dir and all its content (subdirs and files) recursively

public

Parameters
string$a_dirdir to delete
bool$a_clean_only
Author
Unknown flexe.nosp@m.r@cu.nosp@m.tephp.nosp@m..com (source: http://www.php.net/rmdir)
Deprecated:
in favour of Filesystem::deleteDir() located at the filesystem service.
See also
::deleteDir()

Definition at line 475 of file class.ilFileUtils.php.

Referenced by ilObjTest\_createImportDirectory(), assSingleChoice\afterSyncWithOriginal(), assMatchingQuestion\afterSyncWithOriginal(), ilScorm2004DataSet\afterXmlRecordWriting(), ilUserDataSet\afterXmlRecordWriting(), ILIAS\Wiki\Export\WikiHtmlExport\buildExportFile(), ilSurveyExport\buildExportFileXML(), ilObjStyleSheet\cleanExportDirectory(), assOrderingQuestion\cleanImagefiles(), assLongMenu\clearFolder(), ilMobMultiSrtUpload\clearMultiSrtDirectory(), ilObjMediaObject\clearMultiSrtDirectory(), ilCertificateUtilHelper\delDir(), ilObjMediaObject\delete(), ilFileDataForumDraftsLegacyImplementation\delete(), ilObjFileBasedLM\delete(), ilObjSurvey\delete(), ilTestExportGUI\delete(), ilBadgeImageTemplate\delete(), ilExportGUI\delete(), SurveyQuestion\delete(), assQuestion\delete(), ilObjSAHSLearningModule\delete(), ilObjSurveyQuestionPool\deleteAllData(), ilFileDataMail\deleteAttachmentDirectory(), ILIAS\Mail\Cron\ExpiredOrOrphanedMails\MailDeletionHandler\deleteDirectory(), ilFileDataCourse\deleteDirectory(), ilObjSurveyQuestionPoolGUI\deleteExportFileObject(), ilFileSystemGUI\deleteFile(), ilExAssignment\deleteGlobalFeedbackFile(), ilObjQuestionPool\deleteQuestionpool(), ilBadge\deleteStaticFiles(), assQuestion\deleteSuggestedSolutions(), ilObjSurvey\deleteSurveyRecord(), ilObjTest\deleteTest(), ilFileDataForumDraftsLegacyImplementation\deliverZipFile(), ilFileDataForumLegacyImplementation\deliverZipFile(), ilObjCmiXapi\doDelete(), ilExSubmission\downloadAllAssignmentFiles(), ilExSubmission\downloadMultipleFiles(), ilExport\exportEntity(), ilObjFileBasedLMGUI\exportHTML(), ilExportContainer\exportObject(), ilExport\exportObject(), ilObjUser\exportPersonalData(), ilObjContentObject\getExportDirectory(), ilExcCriteriaFile\importFromPeerReviewForm(), ilObjSurveyQuestionPool\importObject(), ilObjQuestionPoolGUI\importVerifiedFileObject(), ilObjTestGUI\importVerifiedFileObject(), ILIAS\Glossary\Export\GlossaryHtmlExport\initDirectories(), ILIAS\Notes\Export\NotesHtmlExport\initDirectories(), ILIAS\Portfolio\Export\PortfolioHtmlExport\initDirectories(), ILIAS\Blog\Export\BlogHtmlExport\initDirectories(), ILIAS\LearningModule\Export\LMHtmlExport\initDirectories(), assMultipleChoice\isForcedEmptySolution(), ilExSubmission\processUploadedZipFile(), ilExSubmission\processZipFile(), assKprimChoice\removeAnswerImage(), ilObjTest\removeTestResultsByActiveIds(), rRenameSuffix(), ILIAS\MediaCast\BackgroundTasks\DownloadAllZipJob\run(), ilSubmissionsZipJob\run(), ilCalendarZipJob\run(), ilZipJob\run(), assSingleChoice\savePreviewData(), ilOrgUnitExporter\sendAndCreateSimpleExportFile(), assMultipleChoice\syncImages(), assSingleChoice\syncImages(), assQuestion\syncSuggestedSolutionFiles(), ilMobMultiSrtUpload\uploadMultipleSubtitleFile(), ilObjMediaObject\uploadMultipleSubtitleFile(), ilObjSAHSLearningModuleGUI\uploadObject(), ilObjQuestionPoolGUI\uploadQplObject(), ilObjTestGUI\uploadTst(), ilUserCertificateZip\zipCertificatesInArchiveDirectory(), ILIAS\Glossary\Export\GlossaryHtmlExport\zipPackage(), ILIAS\Notes\Export\NotesHtmlExport\zipPackage(), ILIAS\Blog\Export\BlogHtmlExport\zipPackage(), ILIAS\Portfolio\Export\PortfolioHtmlExport\zipPackage(), and ILIAS\LearningModule\Export\LMHtmlExport\zipPackage().

475  : void
476  {
477  if (!is_dir($a_dir) || is_int(strpos($a_dir, ".."))) {
478  return;
479  }
480 
481  $current_dir = opendir($a_dir);
482 
483  $files = [];
484 
485  // this extra loop has been necessary because of a strange bug
486  // at least on MacOS X. A looped readdir() didn't work
487  // correctly with larger directories
488  // when an unlink happened inside the loop. Getting all files
489  // into the memory first solved the problem.
490  while ($entryname = readdir($current_dir)) {
491  $files[] = $entryname;
492  }
493 
494  foreach ($files as $file) {
495  if (is_dir(
496  $a_dir . "/" . $file
497  ) and ($file != "." and $file != "..")) {
498  ilFileUtils::delDir($a_dir . "/" . $file);
499  } elseif ($file != "." and $file != "..") {
500  unlink($a_dir . "/" . $file);
501  }
502  }
503 
504  closedir($current_dir);
505  if (!$a_clean_only) {
506  @rmdir($a_dir);
507  }
508  }
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
+ Here is the caller graph for this function:

◆ dirsize()

static ilFileUtils::dirsize ( string  $directory)
static

get size of a directory or a file.

Parameters
stringpath to a directory or a file
Returns
integer. Returns -1, if the directory does not exist.

Definition at line 256 of file class.ilFileUtils.php.

Referenced by ilObjSAHSLearningModuleAccess\_lookupDiskUsage(), ilObjFileBasedLMAccess\_lookupDiskUsage(), ilObjMediaCastAccess\_lookupDiskUsage(), ilExSubmission\downloadAllAssignmentFiles(), and ilPortfolioTemplatePage\getPageDiskSize().

256  : int
257  {
258  $size = 0;
259  if (!is_dir($directory)) {
260  // dirsize of non-existing directory
261  $size = @filesize($directory);
262  return ($size === false) ? -1 : $size;
263  }
264  if ($DIR = opendir($directory)) {
265  while (($dirfile = readdir($DIR)) !== false) {
266  if (is_link(
267  $directory . DIRECTORY_SEPARATOR . $dirfile
268  ) || $dirfile == '.' || $dirfile == '..') {
269  continue;
270  }
271  if (is_file($directory . DIRECTORY_SEPARATOR . $dirfile)) {
272  $size += filesize(
273  $directory . DIRECTORY_SEPARATOR . $dirfile
274  );
275  } elseif (is_dir($directory . DIRECTORY_SEPARATOR . $dirfile)) {
276  $dirSize = ilFileUtils::dirsize(
277  $directory . DIRECTORY_SEPARATOR . $dirfile
278  );
279  if ($dirSize >= 0) {
280  $size += $dirSize;
281  } else {
282  return -1;
283  }
284  }
285  }
286  closedir($DIR);
287  }
288  return $size;
289  }
static dirsize(string $directory)
get size of a directory or a file.
+ Here is the caller graph for this function:

◆ getASCIIFilename()

static ilFileUtils::getASCIIFilename ( string  $a_filename)
static
Deprecated:

Definition at line 655 of file class.ilFileUtils.php.

References $DIC, and ilFileServicesPolicy\ascii().

Referenced by ilPropertyFormGUI\appendOnloadCode(), ILIAS\Wiki\Export\WikiHtmlExport\buildExportFile(), ilExerciseManagementCollectFilesJob\collectAssignmentData(), ilDownloadFilesBackgroundTask\collectFiles(), ilCSVTestExport\deliver(), ilExcelTestExport\deliver(), ilFileDataMail\deliverAttachmentsAsZip(), ilObjTest\deliverPDFfromFO(), ilExSubmission\downloadAllAssignmentFiles(), ilExSubmission\downloadMultipleFiles(), ilSurveyParticipantsGUI\exportAllCodesObject(), ilTestEvaluationGUI\exportCertificateArchive(), ilSurveyParticipantsGUI\exportCodesObject(), ilSurveyEvaluationGUI\exportCumulatedResults(), ilSurveyEvaluationGUI\exportEvaluationUser(), ilObjExercise\exportGradesExcel(), ilCOPageHTMLExport\exportHTMLFileDirect(), ilObjMediaObject\fixFilename(), ilObjWorkspaceFolderGUI\getBucketTitle(), ilContainerGUI\getBucketTitle(), ilExSubmission\getDirectoryNameFromUserData(), ilAssFileUploadUploadsExporter\getDispoZipFileName(), ilCollectWorkspaceFilesJob\getFileDirs(), ilTestParticipantData\getFileSystemCompliantFullnameByActiveId(), ilVerificationObject\getOfflineFilename(), ilDclPropertyFormGUI\getTempFilename(), ilObjTest\getTitleFilenameCompliant(), assQuestion\getTitleFilenameCompliant(), ilAssFileUploadUploadsExporter\initFilenames(), ilDclMobRecordFieldModel\parseValue(), ilCollectWorkspaceFilesJob\recurseFolder(), ilCollectFilesJob\recurseFolder(), ILIAS\MediaCast\BackgroundTasks\DownloadAllBackgroundTask\run(), ilDownloadSubmissionsBackgroundTask\run(), ilDownloadWorkspaceFolderBackgroundTask\run(), ilDownloadContainerFilesBackgroundTask\run(), ilDownloadFilesBackgroundTask\run(), ilQtiMatImageSecurity\sanitizeLabel(), ilChatroomHistoryGUI\showMessages(), and ilObjMediaCastGUI\updateMediaItem().

655  : string
656  {
657  global $DIC;
658  $policy = new ilFileServicesPolicy($DIC->fileServiceSettings());
659  return $policy->ascii($a_filename);
660  }
Class ilFileServicesPolicy.
global $DIC
Definition: feed.php:28
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDataDir()

static ilFileUtils::getDataDir ( )
static

get data directory (outside webspace)

Deprecated:
in favour of the filesystem service which should be used to operate on the storage directory.
See also
filesystem()
::storage()

Definition at line 243 of file class.ilFileUtils.php.

References CLIENT_DATA_DIR.

Referenced by ilAdvancedMDRecordExportFiles\__construct(), ilAdvancedMDRecordImportFiles\__construct(), ilObjTest\_createImportDirectory(), ilHtmlPurifierAbstractLibWrapper\_getCacheDirectory(), ilExport\_getExportDirectory(), ilObjCategoryGUI\_getImportDir(), ilPropertyFormGUI\appendOnloadCode(), assLongMenu\buildFolderName(), ilObjStyleSheet\cleanExportDirectory(), ilDclPropertyFormGUI\cleanupTempFiles(), ilSimpleSAMLphpConfigTemplateHandler\copy(), ilChatroomConfigFileHandler\createDataDirIfNotExists(), ilObjTest\createExportDirectory(), ilObjContentObject\createExportDirectory(), ilObjSurveyQuestionPool\createExportDirectory(), ilObjUserFolder\createExportDirectory(), ilObjQuestionPool\createExportDirectory(), ilObjStyleSheet\createExportDirectory(), ilObjSurvey\createExportDirectory(), ilObjContentObject\createImportDirectory(), ilObjSurveyQuestionPool\createImportDirectory(), ilObjGlossary\createImportDirectory(), ilObjQuestionPoolGUI\createImportDirectory(), ilObjStyleSheet\createImportDirectory(), ilObjSurvey\createImportDirectory(), ilMediaItem\createWorkDirectory(), ilObjSurveyQuestionPool\deleteAllData(), ilObjQuestionPool\deleteQuestionpool(), ilObjSurvey\deleteSurveyRecord(), ilObjTest\deleteTest(), ilImportDirectory\getAbsolutePath(), ilExportImportDirectory\getAbsolutePathForHash(), ilSamlAuthFactory\getConfigDirectory(), ilObjContentObject\getDataDirectory(), ilObjUserFolder\getExportDirectory(), ilObjTest\getExportDirectory(), ilObjContentObject\getExportDirectory(), ilObjSurveyQuestionPool\getExportDirectory(), ilObjQuestionPool\getExportDirectory(), ilObjSurvey\getExportDirectory(), ilMediaImageUtil\getImageSize(), ilObjContentObject\getImportDirectory(), ilObjSurveyQuestionPool\getImportDirectory(), ilObjGlossary\getImportDirectory(), ilObjSurvey\getImportDirectory(), ilUserPasswordManager\getInstance(), ilFSStorageMail\getRelativePathExMailDirectory(), ilDclPropertyFormGUI\getTempFilename(), ilLMMultiSrt\getUploadDir(), ilMepMultiSrt\getUploadDir(), ilMediaItem\getWorkDirectory(), ilObjUserFolderGUI\handleUploadedFiles(), ilTempnam(), ilObjUserFolderGUI\importUserRoleAssignmentObject(), ilObjUserFolderGUI\importUsersObject(), ilTestQuestionPoolExporter\lookupExportDirectory(), ilXmlExporter\lookupExportDirectory(), ilDclPropertyFormGUI\rebuildTempFileByHash(), ilPropertyFormGUI\rebuildUploadedFiles(), ilObjectCustomIcon\saveFromTempFileName(), and ilObjStudyProgramme\updateCustomIcon().

243  : string
244  {
245  return CLIENT_DATA_DIR;
246  }
const CLIENT_DATA_DIR
Definition: constants.php:46
+ Here is the caller graph for this function:

◆ getDir()

static ilFileUtils::getDir ( string  $a_dir,
bool  $a_rec = false,
?string  $a_sub_dir = "" 
)
static

get directory

Parameters
string$a_dir
bool$a_rec
string | null$a_sub_dir
Returns
array
Deprecated:
in favour of Filesystem::listContents() located at the filesystem service.
See also
::listContents()

Definition at line 556 of file class.ilFileUtils.php.

Referenced by assOrderingQuestion\cleanImagefiles(), ilFileDataMail\getAttachmentPathAndFilenameByMd5Hash(), ilCertificateUtilHelper\getDir(), ilFileDataForumDraftsLegacyImplementation\getFileDataByMD5Filename(), ilFileDataForumLegacyImplementation\getFileDataByMD5Filename(), ilFileSystemGUI\getFileList(), ilUploadDirFilesTableGUI\getFiles(), ilAdvancedMDRecordExportFiles\getFiles(), ilObjMediaObject\getFilesOfDirectory(), ilMobMultiSrtUpload\getMultiSrtFiles(), ilObjMediaObject\getMultiSrtFiles(), ilObjUser\getPersonalDataExportFile(), ilObjMediaObject\getSrtFiles(), ilFileDataForumDraftsLegacyImplementation\unlinkFilesByMD5Filenames(), ilFileDataForumLegacyImplementation\unlinkFilesByMD5Filenames(), and ilFileSystemGUI\unzipFile().

560  : array {
561  $current_dir = opendir($a_dir . $a_sub_dir);
562 
563  $dirs = [];
564  $files = [];
565  $subitems = [];
566  while ($entry = readdir($current_dir)) {
567  if (is_dir($a_dir . "/" . $entry)) {
568  $dirs[$entry] = ["type" => "dir",
569  "entry" => $entry,
570  "subdir" => $a_sub_dir
571  ];
572  if ($a_rec && $entry != "." && $entry != "..") {
573  $si = ilFileUtils::getDir(
574  $a_dir,
575  true,
576  $a_sub_dir . "/" . $entry
577  );
578  $subitems = array_merge($subitems, $si);
579  }
580  } else {
581  if ($entry != "." && $entry != "..") {
582  $size = filesize($a_dir . $a_sub_dir . "/" . $entry);
583  $files[$entry] = ["type" => "file",
584  "entry" => $entry,
585  "size" => $size,
586  "subdir" => $a_sub_dir
587  ];
588  }
589  }
590  }
591  ksort($dirs);
592  ksort($files);
593 
594  return array_merge($dirs, $files, $subitems);
595  }
static getDir(string $a_dir, bool $a_rec=false, ?string $a_sub_dir="")
get directory
+ Here is the caller graph for this function:

◆ getFileSizeInfo()

static ilFileUtils::getFileSizeInfo ( )
static

Definition at line 642 of file class.ilFileUtils.php.

References $DIC, and $lng.

Referenced by ilTinyMCE\addCustomRTESupport(), ilTinyMCE\addRTESupport(), ilKprimChoiceWizardInputGUI\checkInput(), ilAssSingleChoiceCorrectionsInputGUI\insert(), ilAssMultipleChoiceCorrectionsInputGUI\insert(), ilMultipleChoiceWizardInputGUI\insert(), ilMatchingWizardInputGUI\insert(), ilSingleChoiceWizardInputGUI\insert(), and ilMultipleImagesInputGUI\render().

642  : string
643  {
644  global $DIC;
645  $size = new DataSize(self::getPhpUploadSizeLimitInBytes(), DataSize::MB);
646  $max_filesize = $size->__toString();
647  $lng = $DIC->language();
648 
649  return $lng->txt("file_notice") . " $max_filesize.";
650  }
This class provides the data size with additional information to remove the work to calculate the siz...
Definition: DataSize.php:30
global $DIC
Definition: feed.php:28
$lng
+ Here is the caller graph for this function:

◆ getPhpUploadSizeLimitInBytes()

static ilFileUtils::getPhpUploadSizeLimitInBytes ( )
static
Deprecated:
should use DataSize instead

Definition at line 802 of file class.ilFileUtils.php.

Referenced by ilDAVContainer\createFile(), InitUIFramework\init(), ilDAVFile\put(), and ILIAS\FileUpload\FileUploadImpl\uploadSizeLimit().

802  : string
803  {
804  $convertPhpIniSizeValueToBytes = function ($phpIniSizeValue) {
805  if (is_numeric($phpIniSizeValue)) {
806  return $phpIniSizeValue;
807  }
808 
809  $suffix = substr($phpIniSizeValue, -1);
810  $value = substr($phpIniSizeValue, 0, -1);
811 
812  switch (strtoupper($suffix)) {
813  case 'P':
814  $value *= 1024;
815  // no break
816  case 'T':
817  $value *= 1024;
818  // no break
819  case 'G':
820  $value *= 1024;
821  // no break
822  case 'M':
823  $value *= 1024;
824  // no break
825  case 'K':
826  $value *= 1024;
827  break;
828  }
829 
830  return $value;
831  };
832 
833 
834  $uploadSizeLimitBytes = min(
835  $convertPhpIniSizeValueToBytes(ini_get('post_max_size')),
836  $convertPhpIniSizeValueToBytes(ini_get('upload_max_filesize'))
837  );
838 
839  return $uploadSizeLimitBytes;
840  }
+ Here is the caller graph for this function:

◆ getSafeFilename()

static ilFileUtils::getSafeFilename ( string  $a_initial_filename)
static

Definition at line 510 of file class.ilFileUtils.php.

Referenced by ilExAssignment\instructionFileInsertOrder().

510  : string
511  {
512  $file_peaces = explode('.', $a_initial_filename);
513 
514  $file_extension = array_pop($file_peaces);
515 
516  if (SUFFIX_REPL_ADDITIONAL) {
517  $string_extensions = SUFFIX_REPL_DEFAULT . "," . SUFFIX_REPL_ADDITIONAL;
518  } else {
519  $string_extensions = SUFFIX_REPL_DEFAULT;
520  }
521 
522  $sufixes = explode(",", $string_extensions);
523 
524  if (in_array($file_extension, $sufixes)) {
525  $file_extension = "sec";
526  }
527 
528  $file_peaces[] = $file_extension;
529 
530  $safe_filename = "";
531  foreach ($file_peaces as $piece) {
532  $safe_filename .= "$piece";
533  if ($piece != end($file_peaces)) {
534  $safe_filename .= ".";
535  }
536  }
537 
538  return $safe_filename;
539  }
+ Here is the caller graph for this function:

◆ getValidFilename()

◆ getWebspaceDir()

static ilFileUtils::getWebspaceDir ( string  $mode = "filesystem")
static

get webspace directory

Parameters
string$modeuse "filesystem" for filesystem operations and "output" for output operations, e.g. images
Returns
string
Deprecated:
in favour of the filesystem service which should be used for operations on the web dir.
See also
filesystem()
Filesystems::web()

Definition at line 612 of file class.ilFileUtils.php.

References CLIENT_ID, and ILIAS_WEB_DIR.

Referenced by ilObjStyleSheet\_createImagesDirectory(), ilObjMediaObject\_createThumbnailDirectory(), ilObjFileBasedLMAccess\_determineStartUrl(), ilContainer\_getContainerDirectory(), ilObjMediaObject\_getDirectory(), ilObjStyleSheet\_getImagesDirectory(), ilObjMediaObject\_getThumbnailDirectory(), ilObjMediaObject\_getURL(), ilObjSAHSLearningModuleAccess\_lookupDiskUsage(), ilObjFileBasedLMAccess\_lookupDiskUsage(), ilPCTableGUI\_renderTable(), ilObjMediaObjectGUI\assignFullscreenObject(), ilObjMediaObjectGUI\assignStandardObject(), ilCmiXapiLaunchGUI\buildLaunchLink(), ilQuestionPageParser\copyMobFiles(), ilObjUser\copyProfilePicturesToDirectory(), ilContainer\createContainerDirectory(), ilObjSAHSLearningModule\createDataDirectory(), ilObjectCustomIcon\createFromImportDir(), ilObjStyleSheet\delete(), ilPageObjectGUI\displayMedia(), ilObjCmiXapi\doCloneObject(), ilObjCmiXapi\doDelete(), ilObjMediaObject\exportFiles(), ilCOPageHTMLExport\exportHTMLMOB(), ilCOPageHTMLExport\exportQuestionFiles(), ilStudyProgrammeTypeCustomIconsFormGUI\fillForm(), ilLTIConsumeProviderIcon\getAbsoluteFilePath(), ilCmiXapiContentUploadImporter\getAbsoluteObjectDirectory(), ilDidacticTemplateIconHandler\getAbsolutePath(), ilPCInteractiveImage\getBackgroundImage(), ilBadgeHandler\getBasePath(), ilPCTabsGUI\getCaptionForm(), ilObjStyleSheet\getContentStylePath(), ilObjFileBasedLM\getDataDirectory(), ilObjSAHSLearningModule\getDataDirectory(), ilObjMediaObject\getDataDirectory(), ilScormAiccDataSet\getExtendedXmlRepresentation(), ILIAS\Object\Properties\CoreProperties\TileImage\ilObjectTileImage\getFullPath(), ilObjectCustomIcon\getFullPath(), ilOpenIdConnectSettings\getImageFilePath(), ilImageMapEditorGUI\getImageMapOutput(), ilFileDataCourse\getOnlineLink(), ilFSStorageMail\getRelativePathExMailDirectory(), ilLMPresentationGUI\ilMedia(), ilUserCertificateGUI\listCertificates(), ilGlossaryPresentationGUI\media(), ilCmiXapiImporter\prepareLocalSourceStorage(), ilObjUserGUI\removeUserPictureObject(), ilPCTableGUI\renderCell(), ilUserAvatarResolver\resolveLegacyPicturePath(), ilObjMediaObjectGUI\returnToContextObject(), ilCmiXapiContentUploadImporter\sanitizeObjectDirectory(), ilObjMediaPoolGUI\showMedia(), ilPageObjectGUI\showMediaFullscreen(), ilPageObjectGUI\showPage(), ilLMPresentationGUI\showPrintView(), and ilObjStyleSheet\writeCSSFile().

612  : string
613  {
614  if ($mode === "filesystem") {
615  return "./" . ILIAS_WEB_DIR . "/" . CLIENT_ID;
616  } else {
617  if (defined("ILIAS_MODULE")) {
618  return "../" . ILIAS_WEB_DIR . "/" . CLIENT_ID;
619  } else {
620  return "./" . ILIAS_WEB_DIR . "/" . CLIENT_ID;
621  }
622  }
623  }
const CLIENT_ID
Definition: constants.php:41
const ILIAS_WEB_DIR
Definition: constants.php:45
+ Here is the caller graph for this function:

◆ ilTempnam()

static ilFileUtils::ilTempnam ( ?string  $a_temp_path = null)
static

Returns a unique and non existing Path for e temporary file or directory.

Parameters
string | null$a_temp_path
Returns
string

Definition at line 669 of file class.ilFileUtils.php.

References createDirectory(), and getDataDir().

Referenced by ilImagemapPreview\__construct(), ilObjUserFolder\buildExportFile(), ilTestArchiveService\buildOverviewFilename(), ilDidacticTemplateSettingsGUI\checkInput(), ilVirusScanner\createBufferFile(), ILIAS\MediaCast\BackgroundTasks\DownloadAllCollectFilesJob\createDirectory(), ilRestFileStorage\createFile(), ilAdvancedMDParser\createLocalRecord(), ilTestExportGUI\createTestArchiveExport(), ilCopyWorkspaceFilesToTempDirectoryJob\createUniqueTempDirectory(), ilCopyFilesToTempDirectoryJob\createUniqueTempDirectory(), ilCalendarCopyFilesToTempDirectoryJob\createUniqueTempDirectory(), ilExerciseManagementCollectFilesJob\createUniqueTempDirectory(), ilFileDataMail\deliverAttachmentsAsZip(), ilObjTest\deliverPDFfromFO(), ilMediaItem\determineDuration(), ilExSubmission\downloadMultipleFiles(), ilPageLayoutAdministrationGUI\exportLayout(), ilObjectCustomIconUploadHandlerGUI\getUploadResult(), ilUserDataSet\getXmlRecord(), ilFileXMLParser\handlerEndTag(), assOrderingQuestionImport\handleUploadedFile(), ilImport\importEntity(), ilAssFileUploadUploadsExporter\initFilenames(), ilTestHTMLGenerator\makeHtmlDocument(), ilExSubmission\processUploadedZipFile(), ilObjectCommonSettingFormAdapter\saveIcon(), ilUserImportParser\saveTempImage(), ilObjTest\sendAdvancedNotification(), ilExcel\sendToClient(), ilRestFileStorage\storeFileForRest(), ilECSConnector\updateResource(), ilCalendarCategoryGUI\uploadAppointments(), ilObjSAHSLearningModuleGUI\uploadObject(), ilObjLanguageExtGUI\uploadObject(), and ilExcel\writeToTmpFile().

669  : string
670  {
671  if ($a_temp_path === null) {
672  $temp_path = ilFileUtils::getDataDir() . "/temp";
673  } else {
674  $temp_path = $a_temp_path;
675  }
676 
677  if (!is_dir($temp_path)) {
678  ilFileUtils::createDirectory($temp_path);
679  }
680  $temp_name = $temp_path . "/" . uniqid("tmp");
681 
682  return $temp_name;
683  }
static createDirectory(string $a_dir, int $a_mod=0755)
create directory
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ makeDir()

static ilFileUtils::makeDir ( string  $a_dir)
static

creates a new directory and inherits all filesystem permissions of the parent directory You may pass only the name of your new directory or with the entire path or relative path information.

examples: a_dir = /tmp/test/your_dir a_dir = ../test/your_dir a_dir = your_dir (–> creates your_dir in current directory)

public

Parameters
string[path] + directory name
Returns
boolean
Deprecated:
in favour of Filesystem::createDir() located at the filesystem service.
See also
::createDir()

Definition at line 309 of file class.ilFileUtils.php.

References $path.

Referenced by ilFileDataCourse\__checkImportPath(), ilFileDataCourse\__checkPath(), ilFileDataCourse\__initDirectory(), ilObjStyleSheet\_createImagesDirectory(), ilObjTest\_createImportDirectory(), ilFileDataCourse\addDirectory(), ILIAS\Wiki\Export\WikiHtmlExport\buildExportFile(), ilSurveyQuestionpoolExport\buildExportFileXML(), ilSurveyExport\buildExportFileXML(), ilGlossaryExport\buildExportFileXML(), ilContObjectExport\buildExportFileXML(), ilQuestionpoolExport\buildExportFileXML(), ilTestExport\buildExportFileXML(), ilTestExport\buildExportResultFile(), ilQuestionPageParser\copyMobFiles(), ilContainer\createContainerDirectory(), ilObjFileBasedLM\createDataDirectory(), ilObjSAHSLearningModule\createDataDirectory(), ilChatroomConfigFileHandler\createDataDirIfNotExists(), ilCOPageHTMLExport\createDirectories(), ilFileSystemGUI\createDirectory(), createDirectory(), ilObjTest\createExportDirectory(), ilObjContentObject\createExportDirectory(), ilObjSurveyQuestionPool\createExportDirectory(), ilObjUserFolder\createExportDirectory(), ilObjQuestionPool\createExportDirectory(), ilObjStyleSheet\createExportDirectory(), ilObjSurvey\createExportDirectory(), ilObjStyleSheet\createExportSubDirectory(), ilObjContentObject\createImportDirectory(), ilObjSurveyQuestionPool\createImportDirectory(), ilObjGlossary\createImportDirectory(), ilObjQuestionPoolGUI\createImportDirectory(), ilObjStyleSheet\createImportDirectory(), ilObjSurvey\createImportDirectory(), ilFileDataCourse\createOnlineVersion(), ilMediaItem\determineDuration(), ilExSubmission\downloadAllAssignmentFiles(), ilExSubmission\downloadMultipleFiles(), ilObjQuestionPool\exportFileItems(), ilObjTest\exportFileItems(), ilObjMediaObject\exportFiles(), ilObjFileBasedLMGUI\exportHTML(), ilCOPageHTMLExport\exportHTMLFile(), ilCOPageHTMLExport\exportHTMLFileDirect(), ilCOPageHTMLExport\exportHTMLMOB(), ilPageLayoutAdministrationGUI\exportLayout(), ilObjLanguageExt\getDataPath(), ilUserDataSet\getXmlRecord(), ILIAS\Glossary\Export\GlossaryHtmlExport\initDirectories(), ILIAS\Notes\Export\NotesHtmlExport\initDirectories(), ILIAS\Portfolio\Export\PortfolioHtmlExport\initDirectories(), ILIAS\Blog\Export\BlogHtmlExport\initDirectories(), ILIAS\LearningModule\Export\LMHtmlExport\initDirectories(), ilFileDataImport\initExportDirectory(), ilSCORM13PlayerGUI\logDirectory(), ilExSubmission\processUploadedZipFile(), ilForumXMLWriter\start(), ilFSStorageExercise\uploadFile(), ilObjSAHSLearningModuleGUI\uploadObject(), and ILIAS\LearningModule\Export\LMHtmlExport\zipPackage().

309  : bool
310  {
311  $a_dir = trim($a_dir);
312 
313  // remove trailing slash (bugfix for php 4.2.x)
314  if (substr($a_dir, -1) == "/") {
315  $a_dir = substr($a_dir, 0, -1);
316  }
317 
318  // check if a_dir comes with a path
319  if (!($path = substr(
320  $a_dir,
321  0,
322  strrpos($a_dir, "/") - strlen($a_dir)
323  ))) {
324  $path = ".";
325  }
326 
327  // create directory with file permissions of parent directory
328  if (is_dir($a_dir)) {
329  return true;
330  }
331  $old_mask = umask(0000);
332  $result = @mkdir($a_dir, fileperms($path));
333  umask($old_mask);
334 
335  return $result;
336  }
$path
Definition: ltiservices.php:32
+ Here is the caller graph for this function:

◆ makeDirParents()

static ilFileUtils::makeDirParents ( string  $a_dir)
static

Create a new directory and all parent directories.

Creates a new directory and inherits all filesystem permissions of the parent directory If the parent directories doesn't exist, they will be created recursively. The directory name NEEDS TO BE an absolute path, because it seems that relative paths are not working with PHP's file_exists function.

Parameters
string$a_dirThe directory name to be created public
Returns
bool
Author
Helmut Schottmüller hscho.nosp@m.ttm@.nosp@m.tzi.d.nosp@m.e
Deprecated:
in favour of Filesystem::createDir() located at the filesystem service.
See also
::createDir()

Definition at line 183 of file class.ilFileUtils.php.

References ILIAS\LTI\ToolProvider\$key.

Referenced by ilExport\_createExportDirectory(), ilHtmlPurifierAbstractLibWrapper\_getCacheDirectory(), ilDataSet\addRecordsXml(), ilExportContainer\addSubitems(), assKprimChoice\afterSyncWithOriginal(), assSingleChoice\afterSyncWithOriginal(), assMatchingQuestion\afterSyncWithOriginal(), assLongMenu\assertDirExists(), ilQuestionpoolExport\buildExportFileXML(), ilCopyWorkspaceFilesToTempDirectoryJob\copyFiles(), ilCopyFilesToTempDirectoryJob\copyFiles(), ilExerciseManagementCollectFilesJob\copyFileToSubDirectory(), assImagemapQuestion\copyImage(), assOrderingQuestion\copyImages(), assMatchingQuestion\copyImages(), assMultipleChoice\copyImages(), assQuestion\copySuggestedSolutionFiles(), ilCalendarCopyFilesToTempDirectoryJob\copyWithAbsolutePath(), ilCalendarCopyFilesToTempDirectoryJob\copyWithRId(), ilIndividualAssessmentFileStorage\create(), ilFSStorageExercise\create(), ilUserCertificateZip\createArchiveDirectory(), ilTestArchiver\createArchiveForTest(), ilLoggingErrorFileStorage\createDir(), ilSystemStyleHTMLExport\createDirectories(), ilCOPageHTMLExport\createDirectories(), ilFSStorageSession\createDirectory(), ILIAS\MediaCast\BackgroundTasks\DownloadAllCollectFilesJob\createDirectory(), ilObjMediaObject\createDirectory(), ilObjContentObject\createExportDirectory(), ilExplorerBaseGUI\createHTMLExportDirs(), ilCopyWorkspaceFilesToTempDirectoryJob\createTargetDirectory(), ilCopyFilesToTempDirectoryJob\createTargetDirectory(), ilCalendarCopyFilesToTempDirectoryJob\createTargetDirectory(), ilExerciseManagementCollectFilesJob\createTargetDirectory(), ilTestExportGUI\createTestArchiveExport(), ilCopyWorkspaceFilesToTempDirectoryJob\createUniqueTempDirectory(), ilCopyFilesToTempDirectoryJob\createUniqueTempDirectory(), ilCalendarCopyFilesToTempDirectoryJob\createUniqueTempDirectory(), ilExerciseManagementCollectFilesJob\createUniqueTempDirectory(), ilFileDataForumDraftsLegacyImplementation\createZipFile(), ilFileDataForumLegacyImplementation\createZipFile(), assMultipleChoice\deleteImage(), assImagemapQuestion\duplicateImage(), assOrderingQuestion\duplicateImages(), assMatchingQuestion\duplicateImages(), assSingleChoice\duplicateImages(), assQuestion\duplicateSuggestedSolutionFiles(), assOrderingQuestionImport\ensureImagePathExists(), assOrderingQuestion\ensureImagePathExists(), ilDclContentExporter\export(), ilExport\exportEntity(), ilExportContainer\exportObject(), ilExport\exportObject(), ilTestResultsToXML\exportParticipantUploadedFiles(), ilCOPageHTMLExport\exportQuestionFiles(), ILIAS\Services\Export\HTML\Util\exportResourceFile(), ilCOPageHTMLExport\exportResourceFile(), ilCOPageHTMLExport\exportStyles(), ILIAS\User\Export\UserHtmlExport\exportUserImages(), assKprimChoiceImport\fromXML(), assImagemapQuestionImport\fromXML(), assMultipleChoiceImport\fromXML(), assSingleChoiceImport\fromXML(), ilBadgeHandler\getBadgePath(), ilFSStorageExercise\getFeedbackPath(), ilFSStorageExercise\getGlobalFeedbackPath(), ilMediaImageUtil\getImageSize(), ilObjSurvey\getImportDirectory(), ilBadgeHandler\getInstancePath(), ilFSStorageExercise\getMultiFeedbackUploadPath(), ilFSStorageExercise\getPeerReviewUploadPath(), ilMediaObjectDataSet\getXmlRecord(), ilStyleExporter\getXmlRepresentation(), ilContentPageExporter\getXmlRepresentation(), ilIndividualAssessmentExporter\getXmlRepresentation(), ilForumExporter\getXmlRepresentation(), ilSurveyExporter\getXmlRepresentation(), ilMediaObjectsExporter\getXmlRepresentation(), ilDataCollectionExporter\getXmlRepresentation(), ilBibliographicExporter\getXmlRepresentation(), ilFileExporter\getXmlRepresentation(), ilLMContentRendererGUI\handleCodeParagraph(), ilLMPresentationGUI\handleCodeParagraph(), assKprimChoice\handleFileUpload(), ilAdvancedMDRecordImportFiles\init(), ilAdvancedMDRecordExportFiles\init(), ilFileDataForumDraftsLegacyImplementation\initDirectory(), ilFSStorageCourse\initInfoDirectory(), ilFSStorageGroup\initMemberExportDirectory(), ilFSStoragePRG\initMemberExportDirectory(), ilFSStorageCourse\initMemberExportDirectory(), ilObjQuestionPool\pasteFromClipboard(), ilObjSurveyQuestionPool\pasteFromClipboard(), ilExport\processExporter(), assMatchingQuestionImport\saveImage(), assFileUpload\savePreviewData(), ilOrgUnitExporter\sendAndCreateSimpleExportFile(), assMultipleChoice\setImageFile(), assSingleChoice\setImageFile(), assMatchingQuestion\setImageFile(), assImagemapQuestion\setImageFilename(), SurveyQuestion\setMaterialsfile(), assQuestionGUI\suggestedsolution(), assMultipleChoice\syncImages(), assSingleChoice\syncImages(), assQuestion\syncSuggestedSolutionFiles(), ilObjMediaObject\uploadAdditionalFile(), ilObjCertificateSettings\uploadBackgroundImage(), ilCertificateBackgroundImageUpload\uploadBackgroundImage(), ilMobMultiSrtUpload\uploadMultipleSubtitleFile(), ilObjMediaObject\uploadMultipleSubtitleFile(), and ilObjStyleSheet\writeCSSFile().

183  : bool
184  {
185  $dirs = [$a_dir];
186  $a_dir = dirname($a_dir);
187  $last_dirname = '';
188  while ($last_dirname != $a_dir) {
189  array_unshift($dirs, $a_dir);
190  $last_dirname = $a_dir;
191  $a_dir = dirname($a_dir);
192  }
193 
194  // find the first existing dir
195  $reverse_paths = array_reverse($dirs, true);
196  $found_index = -1;
197  foreach ($reverse_paths as $key => $value) {
198  if ($found_index == -1) {
199  if (is_dir($value)) {
200  $found_index = $key;
201  }
202  }
203  }
204 
205  $old_mask = umask(0000);
206  foreach ($dirs as $dirindex => $dir) {
207  // starting with the longest existing path
208  if ($dirindex >= $found_index) {
209  if (!file_exists($dir)) {
210  if (strcmp(substr($dir, strlen($dir) - 1, 1), "/") == 0) {
211  // on some systems there is an error when there is a slash
212  // at the end of a directory in mkdir, see Mantis #2554
213  $dir = substr($dir, 0, strlen($dir) - 1);
214  }
215  if (!mkdir($dir)) {
216  error_log("Can't make directory: $dir");
217  return false;
218  }
219  } elseif (!is_dir($dir)) {
220  error_log("$dir is not a directory");
221  return false;
222  } else {
223  // get umask of the last existing parent directory
224  $umask = fileperms($dir);
225  }
226  }
227  }
228  umask($old_mask);
229 
230  return true;
231  }
string $key
Consumer key/client ID value.
Definition: System.php:193
+ Here is the caller graph for this function:

◆ moveUploadedFile()

static ilFileUtils::moveUploadedFile ( string  $a_file,
string  $a_name,
string  $a_target,
bool  $a_raise_errors = true,
string  $a_mode = "move_uploaded" 
)
static

move uploaded file

Parameters
string$a_file
string$a_name
string$a_target
bool$a_raise_errors
string$a_mode
Returns
bool
Exceptions
ilExceptionThrown if no uploaded files are found and raise error is set to true.
Deprecated:
in favour of the FileUpload service.
See also
upload()

Definition at line 389 of file class.ilFileUtils.php.

References $DIC, Vendor\Package\$e, and getValidFilename().

Referenced by ilObjMediaObject\_saveTempFileAsMediaObject(), ilObjUserFolder\_updateAccountMailAttachment(), ilPropertyFormGUI\appendOnloadCode(), ilDidacticTemplateSettingsGUI\checkInput(), ilCourseFile\create(), ilPCInteractiveImageGUI\create(), assKprimChoice\handleFileUpload(), ilObjStyleSheet\import(), ilImport\importEntity(), ilObjSurveyQuestionPoolGUI\importFileObject(), ilExcCriteriaFile\importFromPeerReviewForm(), ilObjSurvey\importObject(), ilPropertyFormGUI\moveFileUpload(), ilAdvancedMDRecordImportFiles\moveUploadedFile(), ilCertificateUtilHelper\moveUploadedFile(), ilObjSCORMLearningModuleGUI\newModuleVersionUpload(), ilExSubmission\processZipFile(), assFileUpload\savePreviewData(), ilObjMediaObjectGUI\savePropertiesObject(), assMultipleChoice\setImageFile(), assSingleChoice\setImageFile(), assMatchingQuestion\setImageFile(), assImagemapQuestion\setImageFilename(), SurveyQuestion\setMaterialsfile(), ilObjMediaObjectGUI\setObjectPerCreationForm(), assOrderingQuestion\storeImageFile(), ilFileDataForumDraftsLegacyImplementation\storeUploadedFile(), ilFileDataMail\storeUploadedFile(), assQuestionGUI\suggestedsolution(), ilPCInteractiveImageGUI\update(), ilObjMediaCastGUI\updateMediaItem(), ilObjMediaObject\uploadAdditionalFile(), ilCalendarCategoryGUI\uploadAppointments(), ilFSStorageExercise\uploadAssignmentFiles(), ilObjCertificateSettings\uploadBackgroundImage(), ilCertificateBackgroundImageUpload\uploadBackgroundImage(), ilIndividualAssessmentFileStorage\uploadFile(), ilBookingObject\uploadFile(), ilFSStorageExercise\uploadFile(), ilBadgeImageTemplate\uploadImage(), ilObjPortfolioBase\uploadImage(), ilBadge\uploadImage(), ilObjBlog\uploadImage(), ilObjPoll\uploadImage(), ilMobMultiSrtUpload\uploadMultipleSubtitleFile(), ilObjMediaObject\uploadMultipleSubtitleFile(), ilObjSAHSLearningModuleGUI\uploadObject(), ilBookingObject\uploadPostFile(), ilObjQuestionPoolGUI\uploadQplObject(), ilObjSurveyQuestionPoolGUI\uploadQuestionsObject(), and ilObjTestGUI\uploadTst().

395  : bool {
396  global $DIC;
397  $main_tpl = $DIC->ui()->mainTemplate();
398  $target_filename = basename($a_target);
399 
400  $target_filename = ilFileUtils::getValidFilename($target_filename);
401 
402  // Make sure the target is in a valid subfolder. (e.g. no uploads to ilias/setup/....)
403  [$target_filesystem, $target_dir] = self::sanitateTargetPath($a_target);
404 
405  $upload = $DIC->upload();
406 
407  // If the upload has not yet been processed make sure he gets processed now.
408  if (!$upload->hasBeenProcessed()) {
409  $upload->process();
410  }
411 
412  try {
413  if (!$upload->hasUploads()) {
414  throw new ilException(
415  $DIC->language()->txt("upload_error_file_not_found")
416  );
417  }
418  $upload_result = $upload->getResults()[$a_file] ?? null;
419  if ($upload_result instanceof UploadResult) {
420  if (!$upload_result->isOK()) {
421  throw new ilException($upload_result->getStatus()->getMessage());
422  }
423  } else {
424  return false;
425  }
426  } catch (ilException $e) {
427  if (!$a_raise_errors) {
428  $main_tpl->setOnScreenMessage('failure', $e->getMessage(), true);
429  } else {
430  throw $e;
431  }
432 
433  return false;
434  }
435 
436  $upload->moveOneFileTo(
437  $upload_result,
438  $target_dir,
439  $target_filesystem,
440  $target_filename,
441  true
442  );
443 
444  return true;
445  }
static getValidFilename(string $a_filename)
global $DIC
Definition: feed.php:28
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rCopy()

static ilFileUtils::rCopy ( string  $a_sdir,
string  $a_tdir,
bool  $preserveTimeAttributes = false 
)
static

Copies content of a directory $a_sdir recursively to a directory $a_tdir.

Parameters
string$a_sdirsource directory
string$a_tdirtarget directory
boolean$preserveTimeAttributesif true, ctime will be kept.
Returns
boolean TRUE for sucess, FALSE otherwise
Exceptions

Definition at line 127 of file class.ilFileUtils.php.

References Vendor\Package\$e.

Referenced by ilDataSet\addRecordsXml(), assSingleChoice\afterSyncWithOriginal(), assMatchingQuestion\afterSyncWithOriginal(), ILIAS\Exercise\SampleSolution\SampleSolutionManager\cloneTo(), ilObjStyleSheet\copyImagesToDir(), ilQuestionPageParser\copyMobFiles(), ilPlayerUtil\copyPlayerFilesToTargetDirectory(), ilObjStyleSheet\create(), ilObjectCustomIcon\createFromImportDir(), ilFileDataCourse\createOnlineVersion(), ilBookingObject\doClone(), ilObjCmiXapi\doCloneObject(), ilObjMediaObject\duplicate(), ilObjStyleSheet\export(), ilObjMediaObject\exportFiles(), ilObjFileBasedLMGUI\exportHTML(), ilCOPageHTMLExport\exportHTMLMOB(), ilCOPageHTMLExport\exportQuestionFiles(), ilCOPageHTMLExport\exportStyles(), ilHTMLLearningModuleDataSet\getXmlRecord(), ilPollDataSet\getXmlRecord(), ilObjStyleSheet\import(), ilPortfolioDataSet\importRecord(), ilMediaObjectDataSet\importRecord(), ilBlogDataSet\importRecord(), ilStyleDataSet\importRecord(), ilExerciseDataSet\importRecord(), ilObjFileBasedLM\populateByDirectoy(), ilObjSAHSLearningModule\populateByDirectoy(), and ilFileDataCourse\rCopy().

131  : bool {
132  $sourceFS = LegacyPathHelper::deriveFilesystemFrom($a_sdir);
133  $targetFS = LegacyPathHelper::deriveFilesystemFrom($a_tdir);
134 
135  $sourceDir = LegacyPathHelper::createRelativePath($a_sdir);
136  $targetDir = LegacyPathHelper::createRelativePath($a_tdir);
137 
138  // check if arguments are directories
139  if (!$sourceFS->hasDir($sourceDir)) {
140  return false;
141  }
142 
143  $sourceList = $sourceFS->listContents($sourceDir, true);
144 
145  foreach ($sourceList as $item) {
146  if ($item->isDir()) {
147  continue;
148  }
149  try {
150  $itemPath = $targetDir . '/' . substr(
151  $item->getPath(),
152  strlen($sourceDir)
153  );
154  $stream = $sourceFS->readStream($item->getPath());
155  $targetFS->writeStream($itemPath, $stream);
156  } catch (\ILIAS\Filesystem\Exception\FileAlreadyExistsException $e) {
157  // Do nothing with that type of exception
158  }
159  }
160 
161  return true;
162  }
Class ChatMainBarProvider .
+ Here is the caller graph for this function:

◆ recursive_dirscan()

static ilFileUtils::recursive_dirscan ( string  $dir,
array &  $arr 
)
static

Recursively scans a given directory and writes path and filename into referenced array.

Parameters
string$dirDirectory to start from
array&$arrReferenced array which is filled with Filename and path
Exceptions
ilFileUtilsException
Deprecated:
Will be removed completely with ILIAS 9

Definition at line 41 of file class.ilFileUtils.php.

References ilFileUtilsException\$BROKEN_FILE, $DIC, and $lng.

Referenced by ilObjFileBasedLMGUI\afterSave(), ilExSubmission\processUploadedZipFile(), ilExSubmission\processZipFile(), and ilFileSystemGUI\unzipFile().

41  : void
42  {
43  global $DIC;
44 
45  $lng = $DIC->language();
46 
47  $dirlist = opendir($dir);
48  while (false !== ($file = readdir($dirlist))) {
49  if (!is_file($dir . "/" . $file) && !is_dir($dir . "/" . $file)) {
50  throw new ilFileUtilsException(
51  $lng->txt("filenames_not_supported"),
53  );
54  }
55 
56  if ($file != '.' && $file != '..') {
57  $newpath = $dir . '/' . $file;
58  $level = explode('/', $newpath);
59  if (is_dir($newpath)) {
60  ilFileUtils::recursive_dirscan($newpath, $arr);
61  } else {
62  $arr["path"][] = $dir . "/";
63  $arr["file"][] = end($level);
64  }
65  }
66  }
67  closedir($dirlist);
68  }
global $DIC
Definition: feed.php:28
static recursive_dirscan(string $dir, array &$arr)
Recursively scans a given directory and writes path and filename into referenced array.
$lng
+ Here is the caller graph for this function:

◆ removeTrailingPathSeparators()

◆ rename()

static ilFileUtils::rename ( string  $a_source,
string  $a_target 
)
static

◆ renameExecutables()

static ilFileUtils::renameExecutables ( string  $a_dir)
static
Deprecated:

Definition at line 712 of file class.ilFileUtils.php.

Referenced by ilPCInteractiveImageGUI\create(), ilObjMediaPoolGUI\createMediaFromUploadDir(), ilScormAiccImporter\importXmlRepresentation(), ilObjSCORMLearningModuleGUI\newModuleVersionUpload(), ilDclMobRecordFieldModel\parseValue(), ilObjFileBasedLM\populateByDirectoy(), ilObjSAHSLearningModule\populateByDirectoy(), ilObjMediaObject\renameExecutables(), ilFileSystemGUI\renameFile(), ilCmiXapiContentUploadImporter\sanitizeObjectDirectory(), assQuestionGUI\suggestedsolution(), ilFileSystemGUI\unzipFile(), ilObjMediaCastGUI\updateMediaItem(), ilFileSystemGUI\uploadFile(), and ilObjSAHSLearningModuleGUI\uploadObject().

712  : void
713  {
714  $def_arr = explode(",", SUFFIX_REPL_DEFAULT);
715  foreach ($def_arr as $def) {
716  self::rRenameSuffix($a_dir, trim($def), "sec");
717  }
718 
719  $def_arr = explode(",", SUFFIX_REPL_ADDITIONAL);
720  foreach ($def_arr as $def) {
721  self::rRenameSuffix($a_dir, trim($def), "sec");
722  }
723  }
+ Here is the caller graph for this function:

◆ rRenameSuffix()

static ilFileUtils::rRenameSuffix ( string  $a_dir,
string  $a_old_suffix,
string  $a_new_suffix 
)
static

Renames all files with certain suffix and gives them a new suffix.

This words recursively through a directory.

Deprecated:

Definition at line 731 of file class.ilFileUtils.php.

References delDir(), and rename().

Referenced by ilObjMediaObject\renameExecutables().

731  : bool
732  {
733  if ($a_dir == "/" || $a_dir == "" || is_int(strpos($a_dir, ".."))
734  || trim($a_old_suffix) == "") {
735  return false;
736  }
737 
738  // check if argument is directory
739  if (!@is_dir($a_dir)) {
740  return false;
741  }
742 
743  // read a_dir
744  $dir = opendir($a_dir);
745 
746  while ($file = readdir($dir)) {
747  if ($file !== "." && $file !== "..") {
748  // triple dot is not allowed in filenames
749  if ($file === '...') {
750  unlink($a_dir . "/" . $file);
751  continue;
752  }
753  // directories
754  if (@is_dir($a_dir . "/" . $file)) {
755  ilFileUtils::rRenameSuffix($a_dir . "/" . $file, $a_old_suffix, $a_new_suffix);
756  }
757 
758  // files
759  if (@is_file($a_dir . "/" . $file)) {
760  // first check for files with trailing dot
761  if (strrpos($file, '.') == (strlen($file) - 1)) {
762  try {
763  rename($a_dir . '/' . $file, substr($a_dir . '/' . $file, 0, -1));
764  } catch (Throwable $t) {
765  // to avoid exploits we do delete this file and continue renaming
766  unlink($a_dir . '/' . $file);
767  continue;
768  }
769  $file = substr($file, 0, -1);
770  }
771 
772  $path_info = pathinfo($a_dir . "/" . $file);
773 
774  if (strtolower($path_info["extension"] ?? '') === strtolower($a_old_suffix)) {
775  $pos = strrpos($a_dir . "/" . $file, ".");
776  $new_name = substr($a_dir . "/" . $file, 0, $pos) . "." . $a_new_suffix;
777  // check if file exists
778  if (file_exists($new_name)) {
779  if (is_dir($new_name)) {
780  ilFileUtils::delDir($new_name);
781  } else {
782  unlink($new_name);
783  }
784  }
785  rename($a_dir . "/" . $file, $new_name);
786  }
787  }
788  }
789  }
790  return true;
791  }
static rRenameSuffix(string $a_dir, string $a_old_suffix, string $a_new_suffix)
Renames all files with certain suffix and gives them a new suffix.
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively
static rename(string $a_source, string $a_target)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sanitateTargetPath()

static ilFileUtils::sanitateTargetPath ( string  $a_target)
staticprotected

Definition at line 338 of file class.ilFileUtils.php.

References CLIENT_DATA_DIR, CLIENT_ID, CLIENT_WEB_DIR, ILIAS\FileUpload\Location\CUSTOMIZING, ILIAS_WEB_DIR, ILIAS\FileUpload\Location\STORAGE, ILIAS\FileUpload\Location\TEMPORARY, and ILIAS\FileUpload\Location\WEB.

338  : array
339  {
340  switch (true) {
341  case strpos($a_target, ILIAS_WEB_DIR . '/' . CLIENT_ID) === 0:
342  case strpos(
343  $a_target,
344  './' . ILIAS_WEB_DIR . '/' . CLIENT_ID
345  ) === 0:
346  case strpos($a_target, CLIENT_WEB_DIR) === 0:
347  $targetFilesystem = \ILIAS\FileUpload\Location::WEB;
348  break;
349  case strpos($a_target, CLIENT_DATA_DIR . "/temp") === 0:
350  $targetFilesystem = \ILIAS\FileUpload\Location::TEMPORARY;
351  break;
352  case strpos($a_target, CLIENT_DATA_DIR) === 0:
353  $targetFilesystem = \ILIAS\FileUpload\Location::STORAGE;
354  break;
355  case strpos($a_target, ILIAS_ABSOLUTE_PATH . '/Customizing') === 0:
356  $targetFilesystem = \ILIAS\FileUpload\Location::CUSTOMIZING;
357  break;
358  default:
359  throw new InvalidArgumentException(
360  "Can not move files to \"$a_target\" because path can not be mapped to web, storage or customizing location."
361  );
362  }
363 
364  $absTargetDir = dirname($a_target);
365  $targetDir = LegacyPathHelper::createRelativePath($absTargetDir);
366 
367  return [$targetFilesystem, $targetDir];
368  }
const STORAGE
The filesystem outside of the ilias web root.
Definition: Location.php:40
const CLIENT_DATA_DIR
Definition: constants.php:46
const CLIENT_ID
Definition: constants.php:41
const CUSTOMIZING
The filesystem within the web root where all the skins and plugins are saved.
Definition: Location.php:45
const CLIENT_WEB_DIR
Definition: constants.php:47
const TEMPORARY
The ILIAS temporary directory.
Definition: Location.php:50
const WEB
The filesystem within the ilias web root.
Definition: Location.php:35
const ILIAS_WEB_DIR
Definition: constants.php:45

◆ unzip()

static ilFileUtils::unzip ( string  $a_file,
bool  $overwrite = false,
bool  $a_flat = false 
)
static

unzip file

Parameters
string$a_filefull path/filename
boolean$overwritepass true to overwrite existing files

Definition at line 693 of file class.ilFileUtils.php.

References $DIC.

693  : bool
694  {
695  if(defined('DEVMODE') && DEVMODE) {
696  trigger_error('Deprecated method called: ' . __METHOD__, E_USER_DEPRECATED);
697  }
698 
699  global $DIC;
700  return $DIC->legacyArchives()->unzip(
701  $a_file,
702  null,
703  $overwrite,
704  $a_flat,
705  false
706  );
707  }
global $DIC
Definition: feed.php:28

◆ utf8_encode()

static ilFileUtils::utf8_encode ( string  $string)
static
Deprecated:
in ILIAS 9 for ILIAS 10: Use Refinery instead

Definition at line 73 of file class.ilFileUtils.php.

References $DIC.

Referenced by ilExSubmission\processUploadedZipFile(), and ilExSubmission\processZipFile().

73  : string
74  {
75  global $DIC;
76  return $DIC->refinery()->string()->encoding()->latin1ToUtf8()->transform($string);
77  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ zip()

static ilFileUtils::zip ( string  $a_dir,
string  $a_file,
bool  $compress_content = false 
)
static
Deprecated:
Please refactor your code using $DIC->archives()->zip() (recommended) or $DIC->legacyArchives()->zip() instead.

Definition at line 450 of file class.ilFileUtils.php.

References $DIC.

Referenced by ILIAS\Wiki\Export\WikiHtmlExport\buildExportFile(), ilSurveyExport\buildExportFileXML(), ilSurveyQuestionpoolExport\buildExportFileXML(), ilGlossaryExport\buildExportFileXML(), ilContObjectExport\buildExportFileXML(), ilQuestionpoolExport\buildExportFileXML(), ilTestExport\buildExportFileXML(), ilTestArchiver\compressTestArchive(), ilAssFileUploadUploadsExporter\createFileUploadCollectionZipFile(), ilSkinStyleContainer\createTempZip(), ilFileDataForumDraftsLegacyImplementation\createZipFile(), ilFileDataForumLegacyImplementation\createZipFile(), ilFileDataMail\deliverAttachmentsAsZip(), ilObjStyleSheet\export(), ilExport\exportEntity(), ilObjFileBasedLMGUI\exportHTML(), ilExportContainer\exportObject(), ilExport\exportObject(), ilScormAiccDataSet\getExtendedXmlRepresentation(), ILIAS\MediaCast\BackgroundTasks\DownloadAllZipJob\run(), ilSubmissionsZipJob\run(), ilCalendarZipJob\run(), ilOrgUnitExporter\sendAndCreateSimpleExportFile(), ilUserCertificateZip\zipCertificatesInArchiveDirectory(), ilFileDataCourse\zipFile(), ILIAS\Glossary\Export\GlossaryHtmlExport\zipPackage(), ILIAS\Notes\Export\NotesHtmlExport\zipPackage(), ILIAS\Blog\Export\BlogHtmlExport\zipPackage(), and ILIAS\LearningModule\Export\LMHtmlExport\zipPackage().

454  : bool {
455  global $DIC;
456  // ensure top directory should be the same behaviour as before, if you need it to be different, you should legacyArchives directly
457  return $DIC->legacyArchives()->zip($a_dir, $a_file, true);
458  }
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: