dolibarr 21.0.0-alpha
files.lib.php File Reference

Library for file managing functions. More...

Go to the source code of this file.

Functions

 dol_basename ($pathfile)
 Make a basename working with all page code (default PHP basenamed fails with cyrillic).
 
 dol_dir_list ($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
 Scan a directory and return a list of files/directories.
 
 dol_dir_list_in_database ($path, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0)
 Scan a directory and return a list of files/directories.
 
 completeFileArrayWithDatabaseInfo (&$filearray, $relativedir)
 Complete $filearray with data from database.
 
 dol_compare_file ($a, $b)
 Fast compare of 2 files identified by their properties ->name, ->date and ->size.
 
 dol_is_dir ($folder)
 Test if filename is a directory.
 
 dol_is_dir_empty ($dir)
 Return if path is empty.
 
 dol_is_file ($pathoffile)
 Return if path is a file.
 
 dol_is_link ($pathoffile)
 Return if path is a symbolic link.
 
 dol_is_writable ($folderorfile)
 Test if directory or filename is writable.
 
 dol_is_url ($uri)
 Return if path is an URI (the name of the method is misleading).
 
 dol_dir_is_emtpy ($folder)
 Test if a folder is empty.
 
 dol_count_nb_of_line ($file)
 Count number of lines in a file.
 
 dol_filesize ($pathoffile)
 Return size of a file.
 
 dol_filemtime ($pathoffile)
 Return time of a file.
 
 dol_fileperm ($pathoffile)
 Return permissions of a file.
 
 dolReplaceInFile ($srcfile, $arrayreplacement, $destfile='', $newmask='0', $indexdatabase=0, $arrayreplacementisregex=0)
 Make replacement of strings into a file.
 
 dol_copy ($srcfile, $destfile, $newmask='0', $overwriteifexists=1, $testvirus=0, $indexdatabase=0)
 Copy a file to another file.
 
 dolCopyDir ($srcfile, $destfile, $newmask, $overwriteifexists, $arrayreplacement=null, $excludesubdir=0, $excludefileext=null, $excludearchivefiles=0)
 Copy a dir to another dir.
 
 dol_move ($srcfile, $destfile, $newmask='0', $overwriteifexists=1, $testvirus=0, $indexdatabase=1, $moreinfo=array())
 Move a file into another name.
 
 dol_move_dir ($srcdir, $destdir, $overwriteifexists=1, $indexdatabase=1, $renamedircontent=1)
 Move a directory into another name.
 
 dol_unescapefile ($filename)
 Unescape a file submitted by upload.
 
 dolCheckVirus ($src_file, $dest_file='')
 Check virus into a file.
 
 dolCheckOnFileName ($src_file, $dest_file='')
 Check virus into a file.
 
 dol_move_uploaded_file ($src_file, $dest_file, $allowoverwrite, $disablevirusscan=0, $uploaderrorcode=0, $nohook=0, $varfiles='addedfile', $upload_dir='')
 Check validity of a file upload from an GUI page, and move it to its final destination.
 
 dol_delete_file ($file, $disableglob=0, $nophperrors=0, $nohook=0, $object=null, $allowdotdot=false, $indexdatabase=1, $nolog=0)
 Remove a file or several files with a mask.
 
 dol_delete_dir ($dir, $nophperrors=0)
 Remove a directory (not recursive, so content must be empty).
 
 dol_delete_dir_recursive ($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0, $indexdatabase=1, $nolog=0)
 Remove a directory $dir and its subdirectories (or only files and subdirectories)
 
 dol_delete_preview ($object)
 Delete all preview files linked to object instance.
 
 dol_meta_create ($object)
 Create a meta file with document file into same directory.
 
 dol_init_file_process ($pathtoscan='', $trackid='')
 Scan a directory and init $_SESSION to manage uploaded files with list of all found files.
 
 dol_add_file_process ($upload_dir, $allowoverwrite=0, $updatesessionordb=0, $varfiles='addedfile', $savingdocmask='', $link=null, $trackid='', $generatethumbs=1, $object=null)
 Get and save an upload file (for example after submitting a new file a mail form).
 
 dol_remove_file_process ($filenb, $donotupdatesession=0, $donotdeletefile=1, $trackid='')
 Remove an uploaded file (for example after submitting a new file a mail form).
 
 addFileIntoDatabaseIndex ($dir, $file, $fullpathorig='', $mode='uploaded', $setsharekey=0, $object=null)
 Add a file into database index.
 
 deleteFilesIntoDatabaseIndex ($dir, $file, $mode='uploaded')
 Delete files into database index using search criteria.
 
 dol_convert_file ($fileinput, $ext='png', $fileoutput='', $page='')
 Convert an image file or a PDF into another image format.
 
 dol_uncompress ($inputfile, $outputdir)
 Uncompress a file.
 
 dol_most_recent_file ($dir, $regexfilter='', $excludefilter=array('(\.meta|_preview.*\.png) $', '^\.'), $nohook=0, $mode=0)
 Return file(s) into a directory (by default most recent)
 
 dol_check_secure_access_document ($modulepart, $original_file, $entity, $fuser=null, $refname='', $mode='read')
 Security check when accessing to a document (used by document.php, viewimage.php and webservices to get documents).
 
 dol_filecache ($directory, $filename, $object)
 Store object in file.
 
 dol_cache_refresh ($directory, $filename, $cachetime)
 Test if Refresh needed.
 
 dol_readcachefile ($directory, $filename)
 Read object from cachefile.
 
 dirbasename ($pathfile)
 Return the relative dirname (relative to DOL_DATA_ROOT) of a full path string.
 
 getFilesUpdated (&$file_list, SimpleXMLElement $dir, $path='', $pathref='', &$checksumconcat=array())
 Function to get list of updated or modified files.
 
 dragAndDropFileUpload ($htmlname)
 Function to manage the drag and drop of a file.
 
 archiveOrBackupFile ($srcfile, $max_versions=5, $archivedir='', $suffix="v", $moveorcopy='move')
 Manage backup versions for a given file, ensuring only a maximum number of versions are kept.
 

Detailed Description

Library for file managing functions.

Definition in file files.lib.php.

Function Documentation

◆ addFileIntoDatabaseIndex()

addFileIntoDatabaseIndex ( $dir,
$file,
$fullpathorig = '',
$mode = 'uploaded',
$setsharekey = 0,
$object = null )

Add a file into database index.

Called by dol_add_file_process when uploading a file and on other cases. See also commonGenerateDocument that also add/update database index when a file is generated.

Parameters
string$dirDirectory name (full real path without ending /)
string$fileFile name (May end with '.noexe')
string$fullpathorigFull path of origin for file (can be '')
string$modeHow file was created ('uploaded', 'generated', ...)
int$setsharekeySet also the share key
Object$objectObject used to set 'src_object_*' fields
Returns
int Return integer <0 if KO, 0 if nothing done, >0 if OK

Definition at line 2132 of file files.lib.php.

References $object, dol_osencode(), dol_string_nospecial(), dol_syslog(), getDolGlobalString(), and getRandomPassword().

Referenced by dol_add_file_process(), and EmailCollector\saveAttachment().

◆ archiveOrBackupFile()

archiveOrBackupFile ( $srcfile,
$max_versions = 5,
$archivedir = '',
$suffix = "v",
$moveorcopy = 'move' )

Manage backup versions for a given file, ensuring only a maximum number of versions are kept.

Parameters
string$srcfileFull path of the source filename for the backups. Example /mydir/mydocuments/mymodule/filename.ext
int$max_versionsThe maximum number of backup versions to keep.
string$archivedirTarget directory of backups (without ending /). Keep empty to save into the same directory than source file.
string$suffix'v' (versioned files) or 'd' (archived files after deletion)
string$moveorcopy'move' or 'copy'
Returns
bool Returns true if successful, false otherwise.

Definition at line 3772 of file files.lib.php.

References dol_copy(), dol_delete_file(), dol_move(), and dol_now().

Referenced by dolSavePageContent(), and CMailFile\dump_mail().

◆ completeFileArrayWithDatabaseInfo()

completeFileArrayWithDatabaseInfo ( & $filearray,
$relativedir )

Complete $filearray with data from database.

This will call doldir_list_indatabase to complete filearray.

Parameters
array<array{name:string,path:string,level1name:string,relativename:string,fullname:string,date:string,size:int,perm:int,type:string}>$filearray Array of array('name'=>'xxx','fullname'=>'/abc/xxx','date'=>'yyy','size'=>99,'type'=>'dir|file',...) Array of files obtained using dol_dir_list
string$relativedirRelative dir from DOL_DATA_ROOT
Returns
void

Definition at line 341 of file files.lib.php.

References $object, dol_dir_list_in_database(), dol_osencode(), dol_syslog(), getDolGlobalInt(), and setEventMessages().

Referenced by FormFile\list_of_autoecmfiles(), FormFile\list_of_documents(), CommonObject\show_photos(), and FormFile\showdocuments().

◆ deleteFilesIntoDatabaseIndex()

deleteFilesIntoDatabaseIndex ( $dir,
$file,
$mode = 'uploaded' )

Delete files into database index using search criteria.

Parameters
string$dirDirectory name (full real path without ending /)
string$fileFile name
string$modeHow file was created ('uploaded', 'generated', ...)
Returns
int Return integer <0 if KO, 0 if nothing done, >0 if OK

Definition at line 2238 of file files.lib.php.

References dol_syslog().

◆ dirbasename()

dirbasename ( $pathfile)

Return the relative dirname (relative to DOL_DATA_ROOT) of a full path string.

Parameters
string$pathfileFull path of a file
Returns
string Path of file relative to DOL_DATA_ROOT

Definition at line 3595 of file files.lib.php.

Referenced by Ticket\copyFilesForTicket().

◆ dol_add_file_process()

dol_add_file_process ( $upload_dir,
$allowoverwrite = 0,
$updatesessionordb = 0,
$varfiles = 'addedfile',
$savingdocmask = '',
$link = null,
$trackid = '',
$generatethumbs = 1,
$object = null )

Get and save an upload file (for example after submitting a new file a mail form).

Database index of file is also updated if donotupdatesession is set. All information used are in db, conf, langs, user and _FILES. Note: This function can be used only into a HTML page context.

Parameters
string$upload_dirDirectory where to store uploaded file (note: used to forge $destpath = $upload_dir + filename)
int<0,1>$allowoverwrite 1=Allow overwrite existing file
int<-1,1>$updatesessionordb 1=Do no edit _SESSION variable but update database index. 0=Update _SESSION and not database index. -1=Do not update SESSION neither db.
string$varfiles_FILES var name
string$savingdocmaskMask to use to define output filename. For example 'XXXXX-__YYYYMMDD__-__file__'
?string$linkLink to add (to add a link instead of a file)
string$trackidTrack id (used to prefix name of session vars to avoid conflict)
int<0,1>$generatethumbs 1=Generate also thumbs for uploaded image files
?Object$objectObject used to set 'src_object_*' fields
Returns
int Return integer <=0 if KO, >0 if OK
See also
dol_remove_file_process()

Definition at line 1893 of file files.lib.php.

References $object, addFileIntoDatabaseIndex(), dol_mkdir(), dol_move_uploaded_file(), dol_sanitizeFileName(), dol_string_nohtmltag(), dol_syslog(), getDefaultImageSizes(), getDolGlobalInt(), getDolGlobalString(), GETPOST(), GETPOSTINT(), image_format_supported(), setEventMessages(), and vignette().

◆ dol_basename()

dol_basename ( $pathfile)

Make a basename working with all page code (default PHP basenamed fails with cyrillic).

We suppose dir separator for input is '/'.

Parameters
string$pathfileString to find basename.
Returns
string Basename of input

Definition at line 38 of file files.lib.php.

Referenced by Documents\post().

◆ dol_cache_refresh()

dol_cache_refresh ( $directory,
$filename,
$cachetime )

Test if Refresh needed.

Parameters
string$directoryDirectory of cache
string$filenameName of filecache
int$cachetimeCachetime delay
Returns
boolean 0 no refresh 1 if refresh needed

Definition at line 3567 of file files.lib.php.

References dol_filemtime(), and dol_now().

Referenced by ModeleBoxes\showBox().

◆ dol_check_secure_access_document()

dol_check_secure_access_document ( $modulepart,
$original_file,
$entity,
$fuser = null,
$refname = '',
$mode = 'read' )

Security check when accessing to a document (used by document.php, viewimage.php and webservices to get documents).

TODO Replace code that set $accessallowed by a call to restrictedArea()

Parameters
string$modulepartModule of document ('module', 'module_user_temp', 'module_user' or 'module_temp'). Example: 'medias', 'invoice', 'logs', 'tax-vat', ...
string$original_fileRelative path with filename, relative to modulepart.
int$entityRestrict onto entity (0=no restriction)
User | null$fuserUser object (forced)
string$refnameRef of object to check permission for external users (autodetect if not provided by taking the dirname of $original_file) or for hierarchy
string$modeCheck permission for 'read' or 'write'
Returns
mixed Array with access information : 'accessallowed' & 'sqlprotectagainstexternals' & 'original_file' (as a full path name)
See also
restrictedArea()

Definition at line 2759 of file files.lib.php.

References $object, checkUserAccessToObject(), dol_hash(), dol_syslog(), getDolUserInt(), and GETPOST().

Referenced by Documents\builddoc(), Documents\delete(), getDocument(), Documents\index(), and Documents\post().

◆ dol_compare_file()

dol_compare_file ( $a,
$b )

Fast compare of 2 files identified by their properties ->name, ->date and ->size.

Parameters
object$aFile 1
object$bFile 2
Returns
int 1, 0, 1

Definition at line 446 of file files.lib.php.

◆ dol_convert_file()

dol_convert_file ( $fileinput,
$ext = 'png',
$fileoutput = '',
$page = '' )

Convert an image file or a PDF into another image format.

This need Imagick php extension. You can use dol_imageResizeOrCrop() for a function that need GD.

Parameters
string$fileinputInput file name
string$extFormat of target file (It is also extension added to file if fileoutput is not provided).
string$fileoutputOutput filename
string$pagePage number if we convert a PDF into png
Returns
int Return integer <0 if KO, 0=Nothing done, >0 if OK
See also
dol_imageResizeOrCrop()

Definition at line 2297 of file files.lib.php.

References dol_is_file(), and dol_syslog().

◆ dol_copy()

dol_copy ( $srcfile,
$destfile,
$newmask = '0',
$overwriteifexists = 1,
$testvirus = 0,
$indexdatabase = 0 )

Copy a file to another file.

Parameters
string$srcfileSource file (can't be a directory)
string$destfileDestination file (can't be a directory)
string$newmaskMask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666'
int$overwriteifexistsOverwrite file if exists (1 by default)
int$testvirusDo an antivirus test. Move is canceled if a virus is found.
int$indexdatabaseIndex new file into database.
Returns
int Return integer <0 if error, 0 if nothing done (dest file already exists and overwriteifexists=0), >0 if OK
See also
dol_delete_file(), dolCopyDir()

Definition at line 767 of file files.lib.php.

References dol_is_file(), dol_osencode(), dol_syslog(), dolCheckVirus(), dolChmod(), getDolGlobalString(), and setEventMessages().

Referenced by archiveOrBackupFile(), Project\createFromClone(), Task\createFromClone(), dolCopyDir(), Website\exportWebSite(), Utils\generateDoc(), modBom\init(), modCommande\init(), modContrat\init(), modEventOrganization\init(), modExpedition\init(), modFacture\init(), modFournisseur\init(), modKnowledgeManagement\init(), modMrp\init(), modMyModule\init(), modPartnership\init(), modProjet\init(), modPropale\init(), modReception\init(), modRecruitment\init(), modSociete\init(), modStock\init(), modSupplierProposal\init(), modTicket\init(), modWebsite\init(), modWorkstation\init(), DolibarrModules\insert_module_parts(), migrate_user_photospath(), migrate_user_photospath2(), rebuildObjectClass(), rebuildObjectSql(), and InterfaceActionsAuto\runTrigger().

◆ dol_count_nb_of_line()

dol_count_nb_of_line ( $file)

Count number of lines in a file.

Parameters
string$fileFilename
Returns
int Return integer <0 if KO, Number of lines in files if OK
See also
dol_nboflines()

Definition at line 602 of file files.lib.php.

References dol_osencode().

Referenced by ImportCsv\import_get_nb_of_lines().

◆ dol_delete_dir()

dol_delete_dir ( $dir,
$nophperrors = 0 )

Remove a directory (not recursive, so content must be empty).

If directory is not empty, return false

Parameters
string$dirDirectory to delete
int$nophperrorsDisable all PHP output errors
Returns
boolean True if success, false if error
See also
dol_delete_file() dolCopyDir()

Definition at line 1612 of file files.lib.php.

References dol_osencode(), and dol_syslog().

Referenced by Delivery\delete(), EcmDirectory\delete(), and dol_delete_dir_recursive().

◆ dol_delete_dir_recursive()

dol_delete_dir_recursive ( $dir,
$count = 0,
$nophperrors = 0,
$onlysub = 0,
& $countdeleted = 0,
$indexdatabase = 1,
$nolog = 0 )

Remove a directory $dir and its subdirectories (or only files and subdirectories)

Parameters
string$dirDir to delete
int$countCounter to count nb of elements found to delete
int$nophperrorsDisable all PHP output errors
int$onlysubDelete only files and subdir, not main directory
int$countdeletedCounter to count nb of elements found really deleted
int$indexdatabaseTry to remove also index entries.
int$nologDisable log files (too verbose when making recursive directories)
Returns
int Number of files and directory we try to remove. NB really removed is returned into var by reference $countdeleted.

Definition at line 1637 of file files.lib.php.

References dol_delete_dir(), dol_delete_dir_recursive(), dol_delete_file(), dol_is_dir(), dol_osencode(), dol_syslog(), and utf8_check().

Referenced by Expedition\cancel(), FormMail\clear_attached_files(), FormTicket\clear_attached_files(), Website\createFromClone(), Commande\delete(), CommandeFournisseur\delete(), Contrat\delete(), Dolresource\delete(), Don\delete(), EcmDirectory\delete(), Expedition\delete(), ExpenseReport\delete(), Facture\delete(), FactureFournisseur\delete(), Fichinter\delete(), Product\delete(), Project\delete(), Propal\delete(), Reception\delete(), Societe\delete(), SupplierProposal\delete(), Task\delete(), Ticket\delete(), Website\delete(), dol_delete_dir_recursive(), Website\exportWebSite(), migrate_delete_old_dir(), Website\purge(), and Utils\purgeFiles().

◆ dol_delete_file()

dol_delete_file ( $file,
$disableglob = 0,
$nophperrors = 0,
$nohook = 0,
$object = null,
$allowdotdot = false,
$indexdatabase = 1,
$nolog = 0 )

Remove a file or several files with a mask.

This delete file physically but also database indexes.

Parameters
string$fileFile to delete or mask of files to delete
int$disableglobDisable usage of glob like * so function is an exact delete function that will return error if no file found
int$nophperrorsDisable all PHP output errors
int$nohookDisable all hooks
object | null$objectCurrent object in use
boolean$allowdotdotAllow to delete file path with .. inside. Never use this, it is reserved for migration purpose.
int$indexdatabaseTry to remove also index entries.
int$nologDisable log file
Returns
boolean True if no error (file is deleted or if glob is used and there's nothing to delete), False if error
See also
dol_delete_dir()

Definition at line 1488 of file files.lib.php.

References $object, dol_osencode(), dol_syslog(), dolChmod(), and setEventMessages().

Referenced by archiveOrBackupFile(), ActionComm\build_exportfile(), Expedition\cancel(), Utils\compressSyslogs(), Website\createFromClone(), Commande\delete(), CommandeFournisseur\delete(), Delivery\delete(), Expedition\delete(), ExpenseReport\delete(), Facture\delete(), FactureFournisseur\delete(), Fichinter\delete(), Propal\delete(), Reception\delete(), SupplierProposal\delete(), WebsitePage\delete(), Categorie\delete_photo(), Product\delete_photo(), CommonObject\delThumbs(), dol_delete_dir_recursive(), dol_delete_preview(), dol_move(), dol_remove_file_process(), dol_uncompress(), dolReplaceInFile(), dolSaveIndexPage(), dolSaveMasterFile(), dolSavePageContent(), Utils\dumpDatabase(), Website\exportWebSite(), DolibarrModules\insert_module_parts(), migrate_delete_old_files(), Website\overwriteTemplate(), Documents\post(), and Utils\purgeFiles().

◆ dol_delete_preview()

dol_delete_preview ( $object)

Delete all preview files linked to object instance.

Note that preview image of PDF files is generated when required, by dol_banner_tab() for example.

Parameters
object$objectObject to clean
Returns
int 0 if error, 1 if OK
See also
dol_convert_file()

Definition at line 1689 of file files.lib.php.

References $object, dol_delete_file(), and dol_sanitizeFileName().

Referenced by CommonObject\commonGenerateDocument(), Commande\delete(), ExpenseReport\delete(), Facture\delete(), Fichinter\delete(), Propal\delete(), SupplierProposal\delete(), fichinter_create(), and Don\generateDocument().

◆ dol_dir_is_emtpy()

dol_dir_is_emtpy ( $folder)

Test if a folder is empty.

Parameters
string$folderName of folder
Returns
boolean True if dir is empty or non-existing, False if it contains files

Definition at line 569 of file files.lib.php.

References dol_osencode().

◆ dol_dir_list()

dol_dir_list ( $utf8_path,
$types = "all",
$recursive = 0,
$filter = "",
$excludefilter = null,
$sortcriteria = "name",
$sortorder = SORT_ASC,
$mode = 0,
$nohook = 0,
$relativename = "",
$donotfollowsymlinks = 0,
$nbsecondsold = 0 )

Scan a directory and return a list of files/directories.

Content for string is UTF8 and dir separator is "/".

Parameters
string$utf8_pathStarting path from which to search. This is a full path.
string$typesCan be "directories", "files", or "all"
int$recursiveDetermines whether subdirectories are searched
string$filterRegex filter to restrict list. This regex value must be escaped for '/' by doing preg_quote($var,'/'), since this char is used for preg_match function, but must not contains the start and end '/'. Filter is checked into basename only.
string | string[]$excludefilterArray of Regex for exclude filter (example: array('(.meta|_preview.*.png)$','^.')). Exclude is checked both into fullpath and into basename (So '^xxx' may exclude 'xxx/dirscanned/...' and dirscanned/xxx').
string$sortcriteriaSort criteria ('','fullname','relativename','name','date','size')
int$sortorderSort order (SORT_ASC, SORT_DESC)
int$mode0=Return array minimum keys loaded (faster), 1=Force all keys like date and size to be loaded (slower), 2=Force load of date only, 3=Force load of size only, 4=Force load of perm
int$nohookDisable all hooks
string$relativenameFor recursive purpose only. Must be "" at first call.
int$donotfollowsymlinksDo not follow symbolic links
int$nbsecondsoldOnly files older than $nbsecondsold
Returns
array<array{name:string,path:string,level1name:string,relativename:string,fullname:string,date:string,size:int,perm:int,type:string}> Array of array('name'=>'xxx','fullname'=>'/abc/xxx','date'=>'yyy','size'=>99,'type'=>'dir|file',...)>
See also
dol_dir_list_in_database()

Definition at line 63 of file files.lib.php.

References $object, dol_dir_list(), dol_filemtime(), dol_fileperm(), dol_filesize(), dol_now(), dol_osencode(), dol_sort_array(), dol_syslog(), and utf8_check().

Referenced by account_statement_prepare_head(), actions_prepare_head(), Partnership\approve(), assetPrepareHead(), availabilitiesPrepareHead(), bank_prepare_head(), bomPrepareHead(), calendarPrepareHead(), commande_prepare_head(), CommonObject\commonGenerateDocument(), Website\compareFichierModifie(), Utils\compressSyslogs(), conferenceorboothPrepareHead(), contact_prepare_head(), contract_prepare_head(), Project\createFromClone(), Task\createFromClone(), delivery_prepare_head(), dol_dir_list(), dol_init_file_process(), dol_most_recent_file(), dol_move_dir(), dolGetListOfObjectClasses(), donation_prepare_head(), Utils\dumpDatabase(), evaluationPrepareHead(), expensereport_prepare_head(), AccountancyExport\exportFEC(), AccountancyExport\exportFEC2(), AccountancyExport\exportQuadratus(), facture_prepare_head(), facturefourn_prepare_head(), fichinter_prepare_head(), Utils\generateDoc(), Setup\getCheckIntegrity(), FormWebsite\getContentPageTemplate(), FormFile\getDocumentsLink(), FormWebPortal\getDocumentsLink(), Documents\getDocumentsListByElement(), getListOfModels(), Asset\getNomUrl(), AssetModel\getNomUrl(), Availabilities\getNomUrl(), Calendar\getNomUrl(), ConferenceOrBooth\getNomUrl(), ConferenceOrBoothAttendee\getNomUrl(), Evaluation\getNomUrl(), EvaluationLine\getNomUrl(), IntracommReport\getNomUrl(), Job\getNomUrl(), KnowledgeRecord\getNomUrl(), MyObject\getNomUrl(), Partnership\getNomUrl(), PartnershipType\getNomUrl(), Position\getNomUrl(), ProductAttribute\getNomUrl(), ProductFournisseurPrice\getNomUrl(), RecruitmentCandidature\getNomUrl(), RecruitmentJobPosition\getNomUrl(), Skill\getNomUrl(), Skilldet\getNomUrl(), SkillRank\getNomUrl(), StockTransfer\getNomUrl(), StockTransferLine\getNomUrl(), Target\getNomUrl(), TimeSpent\getNomUrl(), WebPortalPartnership\getNomUrl(), Workstation\getNomUrl(), holiday_prepare_head(), doc_generic_asset_odt\info(), doc_generic_bom_odt\info(), doc_generic_contract_odt\info(), doc_generic_invoice_odt\info(), doc_generic_member_odt\info(), doc_generic_mo_odt\info(), doc_generic_myobject_odt\info(), doc_generic_odt\info(), doc_generic_order_odt\info(), doc_generic_product_odt\info(), doc_generic_project_odt\info(), doc_generic_proposal_odt\info(), doc_generic_reception_odt\info(), doc_generic_recruitmentjobposition_odt\info(), doc_generic_shipment_odt\info(), doc_generic_stock_odt\info(), doc_generic_supplier_invoice_odt\info(), doc_generic_supplier_order_odt\info(), doc_generic_supplier_proposal_odt\info(), doc_generic_task_odt\info(), doc_generic_ticket_odt\info(), doc_generic_user_odt\info(), doc_generic_usergroup_odt\info(), modWebsite\init(), DolibarrModules\insert_module_parts(), intracommreportPrepareHead(), jobPrepareHead(), knowledgerecordPrepareHead(), PrintingDriver\listDrivers(), loan_prepare_head(), member_prepare_head(), Societe\mergeCompany(), moPrepareHead(), myobjectPrepareHead(), ordersupplier_prepare_head(), partnershipPrepareHead(), positionCardPrepareHead(), product_prepare_head(), productlot_prepare_head(), project_prepare_head(), propal_prepare_head(), Utils\purgeFiles(), reception_prepare_head(), recruitmentCandidaturePrepareHead(), recruitmentjobpositionPrepareHead(), EcmDirectory\refreshcachenboffile(), resource_prepare_head(), FormEcm\selectAllSections(), FormWebsite\selectSampleOfContainer(), Fichinter\setValid(), ExpenseReport\setValidate(), shipping_prepare_head(), CommonObject\show_photos(), FormFile\showdocuments(), skilldetPrepareHead(), skillPrepareHead(), skillrankPrepareHead(), societe_prepare_head(), stocktransferPrepareHead(), supplier_proposal_prepare_head(), task_prepare_head(), tax_prepare_head(), ticket_prepare_head(), user_prepare_head(), Commande\valid(), CommandeFournisseur\valid(), Delivery\valid(), Expedition\valid(), Propal\valid(), Reception\valid(), SupplierProposal\valid(), Availabilities\validate(), BOM\validate(), Calendar\validate(), ConferenceOrBoothAttendee\validate(), Contrat\validate(), Evaluation\validate(), EvaluationLine\validate(), Facture\validate(), FactureFournisseur\validate(), Holiday\validate(), Job\validate(), KnowledgeRecord\validate(), Mo\validate(), MyObject\validate(), Partnership\validate(), Position\validate(), ProductFournisseurPrice\validate(), RecruitmentCandidature\validate(), RecruitmentJobPosition\validate(), Skill\validate(), Skilldet\validate(), SkillRank\validate(), StockTransfer\validate(), StockTransferLine\validate(), Target\validate(), TimeSpent\validate(), various_payment_prepare_head(), vat_prepare_head(), workstationPrepareHead(), doc_generic_project_odt\write_file(), and doc_generic_task_odt\write_file().

◆ dol_dir_list_in_database()

dol_dir_list_in_database ( $path,
$filter = "",
$excludefilter = null,
$sortcriteria = "name",
$sortorder = SORT_ASC,
$mode = 0 )

Scan a directory and return a list of files/directories.

Content for string is UTF8 and dir separator is "/".

Parameters
string$pathStarting path from which to search. Example: 'produit/MYPROD'
string$filterRegex filter to restrict list. This regex value must be escaped for '/', since this char is used for preg_match function
string[] | null$excludefilterArray of Regex for exclude filter (example: array('(.meta|_preview.*.png)$','^.'))
string$sortcriteriaSort criteria ("","fullname","name","date","size")
int$sortorderSort order (SORT_ASC, SORT_DESC)
int$mode0=Return array minimum keys loaded (faster), 1=Force all keys like description
Returns
array<array{rowid:string,label:string,name:string,path:string,level1name:string,fullname:string,fullpath_orig:string,date_c:string,date_m:string,type:string,keywords:string,cover:string,position:int,acl:string,share:string,description:string}> Array of array('name'=>'xxx','fullname'=>'/abc/xxx','date'=>'yyy','size'=>99,'type'=>'dir|file',...)
See also
dol_dir_list()

Definition at line 262 of file files.lib.php.

References dol_print_error().

Referenced by completeFileArrayWithDatabaseInfo().

◆ dol_filecache()

dol_filecache ( $directory,
$filename,
$object )

Store object in file.

Parameters
string$directoryDirectory of cache
string$filenameName of filecache
mixed$objectObject to store in cachefile
Returns
void

Definition at line 3544 of file files.lib.php.

References $object, dol_is_dir(), dol_mkdir(), dol_syslog(), and dolChmod().

Referenced by ModeleBoxes\showBox().

◆ dol_filemtime()

◆ dol_fileperm()

dol_fileperm ( $pathoffile)

Return permissions of a file.

Parameters
string$pathoffilePath of file
Returns
integer File permissions

Definition at line 659 of file files.lib.php.

References dol_osencode().

Referenced by dol_dir_list().

◆ dol_filesize()

dol_filesize ( $pathoffile)

◆ dol_init_file_process()

dol_init_file_process ( $pathtoscan = '',
$trackid = '' )

Scan a directory and init $_SESSION to manage uploaded files with list of all found files.

Note: Only email module seems to use this. Other feature initialize the $_SESSION doing $formmail->clear_attached_files(); $formmail->add_attached_files()

Parameters
string$pathtoscanPath to scan
string$trackidTrack id (used to prefix name of session vars to avoid conflict)
Returns
void

Definition at line 1855 of file files.lib.php.

References dol_dir_list(), and dol_mimetype().

◆ dol_is_dir()

◆ dol_is_dir_empty()

dol_is_dir_empty ( $dir)

Return if path is empty.

Parameters
string$dirPath of Directory
Returns
boolean True or false

Definition at line 505 of file files.lib.php.

◆ dol_is_file()

◆ dol_is_link()

dol_is_link ( $pathoffile)

Return if path is a symbolic link.

Parameters
string$pathoffilePath of file
Returns
boolean True or false

Definition at line 531 of file files.lib.php.

References dol_osencode().

◆ dol_is_url()

dol_is_url ( $uri)

Return if path is an URI (the name of the method is misleading).

URLs are addresses for websites, URI refer to online resources.

Parameters
string$uriURI to test
Returns
boolean True if the path looks like a URI, else false.

Definition at line 557 of file files.lib.php.

Referenced by RssParser\parser().

◆ dol_is_writable()

dol_is_writable ( $folderorfile)

Test if directory or filename is writable.

Parameters
string$folderorfileName of folder or filename
Returns
boolean True if it's writable, False if not found

Definition at line 543 of file files.lib.php.

References dol_osencode().

◆ dol_meta_create()

dol_meta_create ( $object)

Create a meta file with document file into same directory.

This make "grep" search possible. This feature to generate the meta file is enabled only if option MAIN_DOC_CREATE_METAFILE is set.

Parameters
CommonObject$objectObject
Returns
int 0 if do nothing, >0 if we update meta file too, <0 if KO

Definition at line 1767 of file files.lib.php.

References $object, dol_mkdir(), dol_print_date(), dol_sanitizeFileName(), dol_syslog(), dolChmod(), and getDolGlobalString().

Referenced by CommonObject\commonGenerateDocument().

◆ dol_most_recent_file()

dol_most_recent_file ( $dir,
$regexfilter = '',
$excludefilter = array('(\.meta|_preview.*\.png)$', '^\.'),
$nohook = 0,
$mode = 0 )

Return file(s) into a directory (by default most recent)

Parameters
string$dirDirectory to scan
string$regexfilterRegex filter to restrict list. This regex value must be escaped for '/', since this char is used for preg_match function
string[]$excludefilterArray of Regex for exclude filter (example: array('(.meta|_preview.*.png)$','^.')). This regex value must be escaped for '/', since this char is used for preg_match function
int<0,1>$nohook Disable all hooks
int<0,3>$mode 0=Return array minimum keys loaded (faster), 1=Force all keys like date and size to be loaded (slower), 2=Force load of date only, 3=Force load of size only
Returns
null|array{name:string,path:string,level1name:string,relativename:string,fullname:string,date:string,size:int,perm:int,type:string} null if none or Array with properties (full path, date, ...) of the most recent file

Definition at line 2740 of file files.lib.php.

References dol_dir_list().

Referenced by Utils\sendBackup().

◆ dol_move()

dol_move ( $srcfile,
$destfile,
$newmask = '0',
$overwriteifexists = 1,
$testvirus = 0,
$indexdatabase = 1,
$moreinfo = array() )

Move a file into another name.

Note:

  • This function differs from dol_move_uploaded_file, because it can be called in any context.
  • Database indexes for files are updated.
  • Test on virus is done only if param testvirus is provided and an antivirus was set.
Parameters
string$srcfileSource file (can't be a directory. use native php @rename() to move a directory)
string$destfileDestination file (can't be a directory. use native php @rename() to move a directory)
string$newmaskMask in octal string for new file ('0' by default means $conf->global->MAIN_UMASK)
int<0,1>$overwriteifexists Overwrite file if exists (1 by default)
int<0,1>$testvirus Do an antivirus test. Move is canceled if a virus is found.
int<0,1>$indexdatabase Index new file into database.
array<string,mixed>$moreinfo Array with more information to set in index table
Returns
boolean True if OK, false if KO
See also
dol_move_uploaded_file()

Definition at line 1012 of file files.lib.php.

References dol_delete_file(), dol_is_file(), dol_osencode(), dol_syslog(), dolCheckOnFileName(), dolCheckVirus(), dolChmod(), getDolGlobalString(), and setEventMessages().

Referenced by archiveOrBackupFile(), ActionComm\build_exportfile(), Utils\compressSyslogs(), Ticket\copyFilesForTicket(), dol_move_dir(), dolReplaceInFile(), Utils\dumpDatabase(), Societe\mergeCompany(), migrate_product_photospath(), migrate_user_filespath(), Website\overwriteTemplate(), Documents\post(), and CMailFile\save_dump_mail_in_err().

◆ dol_move_dir()

dol_move_dir ( $srcdir,
$destdir,
$overwriteifexists = 1,
$indexdatabase = 1,
$renamedircontent = 1 )

Move a directory into another name.

Parameters
string$srcdirSource directory
string$destdirDestination directory
int$overwriteifexistsOverwrite directory if it already exists (1 by default)
int$indexdatabaseIndex new name of files into database.
int$renamedircontentAlso rename contents inside srcdir after the move to match new destination name.
Returns
boolean True if OK, false if KO

Definition at line 1194 of file files.lib.php.

References dol_dir_list(), dol_is_dir(), dol_move(), dol_move_dir(), dol_osencode(), and dol_syslog().

Referenced by dol_move_dir(), and Task\update().

◆ dol_move_uploaded_file()

dol_move_uploaded_file ( $src_file,
$dest_file,
$allowoverwrite,
$disablevirusscan = 0,
$uploaderrorcode = 0,
$nohook = 0,
$varfiles = 'addedfile',
$upload_dir = '' )

Check validity of a file upload from an GUI page, and move it to its final destination.

If there is errors (virus found, antivir in error, bad filename), file is not moved. Note:

  • This function can be used only into a HTML page context. Use dol_move if you are outside.
  • Test on antivirus is always done (if antivirus set).
  • Database of files is NOT updated (this is done by dol_add_file_process() that calls this function).
  • Extension .noexe may be added if file is executable and MAIN_DOCUMENT_IS_OUTSIDE_WEBROOT_SO_NOEXE_NOT_REQUIRED is not set.
Parameters
string$src_fileSource full path filename ($_FILES['field']['tmp_name'])
string$dest_fileTarget full path filename ($_FILES['field']['name'])
int$allowoverwrite1=Overwrite target file if it already exists
int$disablevirusscan1=Disable virus scan
integer$uploaderrorcodeValue of PHP upload error code ($_FILES['field']['error'])
int$nohookDisable all hooks
string$varfiles_FILES var name
string$upload_dirFor information. Already included into $dest_file.
Returns
int|string 1 if OK, 2 if OK and .noexe appended, <0 or string if KO
See also
dol_move()

Definition at line 1350 of file files.lib.php.

References $object, dol_osencode(), dol_syslog(), dolCheckVirus(), dolChmod(), getDolGlobalInt(), getDolGlobalString(), and isAFileWithExecutableContent().

Referenced by Categorie\add_photo(), Product\add_photo(), mailing_xinputfile\add_to_target(), dol_add_file_process(), and FileUpload\handleFileUpload().

◆ dol_readcachefile()

dol_readcachefile ( $directory,
$filename )

Read object from cachefile.

Parameters
string$directoryDirectory of cache
string$filenameName of filecache
Returns
mixed Unserialise from file

Definition at line 3582 of file files.lib.php.

References $object.

Referenced by ModeleBoxes\showBox().

◆ dol_remove_file_process()

dol_remove_file_process ( $filenb,
$donotupdatesession = 0,
$donotdeletefile = 1,
$trackid = '' )

Remove an uploaded file (for example after submitting a new file a mail form).

All information used are in db, conf, langs, user and _FILES.

Parameters
int$filenbFile nb to delete
int$donotupdatesession-1 or 1 = Do not update _SESSION variable
int$donotdeletefile1=Do not delete physically file
string$trackidTrack id (used to prefix name of session vars to avoid conflict)
Returns
void
See also
dol_add_file_process()

Definition at line 2074 of file files.lib.php.

References dol_delete_file(), and setEventMessages().

◆ dol_uncompress()

dol_uncompress ( $inputfile,
$outputdir )

Uncompress a file.

Parameters
string$inputfileFile to uncompress
string$outputdirTarget dir name
Returns
array{error?:string} array('error'=>'Error code') or array() if no error
See also
dol_compress_file(), dol_compress_dir()

Definition at line 2485 of file files.lib.php.

References dol_delete_file(), dol_mkdir(), dol_sanitizeFileName(), dol_sanitizePathName(), dol_syslog(), and getDolGlobalString().

Referenced by Website\overwriteTemplate().

◆ dol_unescapefile()

dol_unescapefile ( $filename)

Unescape a file submitted by upload.

PHP escape char " (%22) or char ' (%27) into $FILES.

Parameters
string$filenameFilename
Returns
string Filename sanitized

Definition at line 1265 of file files.lib.php.

◆ dolCheckOnFileName()

dolCheckOnFileName ( $src_file,
$dest_file = '' )

Check virus into a file.

Parameters
string$src_fileSource file to check
string$dest_fileDestination file name (to know the expected type)
Returns
string[] Array of errors, or empty array if not virus found

Definition at line 1311 of file files.lib.php.

References dol_syslog(), and getDolGlobalString().

Referenced by dol_move(), and dolCheckVirus().

◆ dolCheckVirus()

dolCheckVirus ( $src_file,
$dest_file = '' )

Check virus into a file.

Parameters
string$src_fileSource file to check
string$dest_fileDestination file name (to know the expected type)
Returns
string[] Array of errors, or empty array if not virus found

Definition at line 1281 of file files.lib.php.

References dolCheckOnFileName(), and getDolGlobalString().

Referenced by dol_copy(), dol_move(), dol_move_uploaded_file(), and Documents\post().

◆ dolCopyDir()

dolCopyDir ( $srcfile,
$destfile,
$newmask,
$overwriteifexists,
$arrayreplacement = null,
$excludesubdir = 0,
$excludefileext = null,
$excludearchivefiles = 0 )

Copy a dir to another dir.

This include recursive subdirectories.

Parameters
string$srcfileSource file (a directory)
string$destfileDestination file (a directory)
string$newmaskMask for new file ('0' by default means getDolGlobalString('MAIN_UMASK')). Example: '0666'
int$overwriteifexistsOverwrite file if exists (1 by default)
array<string,string>$arrayreplacement Array to use to replace filenames with another one during the copy (works only on file names, not on directory names).
int$excludesubdir0=Do not exclude subdirectories, 1=Exclude subdirectories, 2=Exclude subdirectories if name is not a 2 chars (used for country codes subdirectories).
string[]$excludefileextExclude some file extensions
int$excludearchivefilesExclude archive files that begin with v+timestamp or d+timestamp (0 by default)
Returns
int Return integer <0 if error, 0 if nothing done (all files already exists and overwriteifexists=0), >0 if OK
See also
dol_copy()

Definition at line 896 of file files.lib.php.

References dol_copy(), dol_is_dir(), dol_mkdir(), dol_osencode(), dol_syslog(), dolCopyDir(), and getDolGlobalString().

Referenced by Website\createFromClone(), dolCopyDir(), Website\exportWebSite(), and modWebsite\init().

◆ dolReplaceInFile()

dolReplaceInFile ( $srcfile,
$arrayreplacement,
$destfile = '',
$newmask = '0',
$indexdatabase = 0,
$arrayreplacementisregex = 0 )

Make replacement of strings into a file.

Parameters
string$srcfileSource file (can't be a directory)
array<string,string>$arrayreplacement Array with strings to replace. Example: array('valuebefore'=>'valueafter', ...)
string$destfileDestination file (can't be a directory). If empty, will be same than source file.
string$newmaskMask for new file. '0' by default means getDolGlobalString('MAIN_UMASK'). Example: '0666'.
int$indexdatabase1=index new file into database.
int$arrayreplacementisregex1=Array of replacement is already an array with key that is a regex. Warning: the key must be escaped with preg_quote for '/'
Returns
int Return integer <0 if error, 0 if nothing done (dest file already exists), >0 if OK
See also
dol_copy(), dolCopyDir()

Definition at line 677 of file files.lib.php.

References dol_delete_file(), dol_is_file(), dol_move(), dol_osencode(), dol_syslog(), dolChmod(), getDolGlobalString(), and make_substitutions().

Referenced by addObjectsToApiFile(), deletePerms(), Website\exportWebSite(), Utils\generateDoc(), removeObjectFromApiFile(), Website\replaceLineUsingNum(), reWriteAllMenus(), reWriteAllPermissions(), updateDictionaryInFile(), writeApiUrlsInDoc(), writePermsInAsciiDoc(), and writePropsInAsciiDoc().

◆ dragAndDropFileUpload()

dragAndDropFileUpload ( $htmlname)

Function to manage the drag and drop of a file.

We use global variable $object

Parameters
string$htmlnameThe id of the component where we need to drag and drop
Returns
string Js script to display

Definition at line 3654 of file files.lib.php.

References $object, currentToken(), dol_escape_js(), and img_picto().

◆ getFilesUpdated()

getFilesUpdated ( & $file_list,
SimpleXMLElement $dir,
$path = '',
$pathref = '',
& $checksumconcat = array() )

Function to get list of updated or modified files.

$file_list is used as global variable

Parameters
array{insignature:string[],missing?:array<array{filename:string,expectedmd5:string,expectedsize:string}>,updated:array<array{filename:string,expectedmd5:string,expectedsize:string,md5:string}>}$file_list Array for response
SimpleXMLElement$dirSimpleXMLElement of files to test
string$pathPath of files relative to $pathref. We start with ''. Used by recursive calls.
string$pathrefPath ref (DOL_DOCUMENT_ROOT)
string[]$checksumconcatArray of checksum
Returns
array{insignature:string[],missing?:array<array{filename:string,expectedmd5:string,expectedsize:string}>,updated:array<array{filename:string,expectedmd5:string,expectedsize:string,md5:string}>} $file_list Array of filenames

Definition at line 3612 of file files.lib.php.

References getFilesUpdated().

Referenced by Setup\getCheckIntegrity(), and getFilesUpdated().