20 use Luracast\Restler\RestException;
21 use Luracast\Restler\Format\UploadFormat;
23 require_once DOL_DOCUMENT_ROOT.
'/main.inc.php';
24 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
38 public static $DOCUMENT_FIELDS = array(
68 public function index($modulepart, $original_file =
'')
72 if (empty($modulepart)) {
73 throw new RestException(400,
'bad value for parameter modulepart');
75 if (empty($original_file)) {
76 throw new RestException(400,
'bad value for parameter original_file');
80 $entity = $conf->entity;
91 $relativefile = $original_file;
94 $accessallowed = $check_access[
'accessallowed'];
95 $sqlprotectagainstexternals = $check_access[
'sqlprotectagainstexternals'];
96 $original_file = $check_access[
'original_file'];
98 if (preg_match(
'/\.\./', $original_file) || preg_match(
'/[<>|]/', $original_file)) {
99 throw new RestException(401);
101 if (!$accessallowed) {
102 throw new RestException(401);
105 $filename = basename($original_file);
106 $original_file_osencoded =
dol_osencode($original_file);
108 if (!file_exists($original_file_osencoded)) {
109 dol_syslog(
"Try to download not found file ".$original_file_osencoded, LOG_WARNING);
110 throw new RestException(404,
'File not found');
113 $file_content = file_get_contents($original_file_osencoded);
114 return array(
'filename'=>$filename,
'content-type' =>
dol_mimetype($filename),
'filesize'=>filesize($original_file),
'content'=>base64_encode($file_content),
'encoding'=>
'base64');
137 public function builddoc($modulepart, $original_file =
'', $doctemplate =
'', $langcode =
'')
139 global $conf, $langs;
141 if (empty($modulepart)) {
142 throw new RestException(400,
'bad value for parameter modulepart');
144 if (empty($original_file)) {
145 throw new RestException(400,
'bad value for parameter original_file');
148 $outputlangs = $langs;
149 if ($langcode && $langs->defaultlang != $langcode) {
151 $outputlangs->setDefaultLang($langcode);
155 $entity = $conf->entity;
166 $relativefile = $original_file;
169 $accessallowed = $check_access[
'accessallowed'];
170 $sqlprotectagainstexternals = $check_access[
'sqlprotectagainstexternals'];
171 $original_file = $check_access[
'original_file'];
173 if (preg_match(
'/\.\./', $original_file) || preg_match(
'/[<>|]/', $original_file)) {
174 throw new RestException(401);
176 if (!$accessallowed) {
177 throw new RestException(401);
181 $hidedetails = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 0 : 1;
182 $hidedesc = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 0 : 1;
183 $hideref = empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 0 : 1;
187 if ($modulepart ==
'facture' || $modulepart ==
'invoice') {
188 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
190 $result = $this->invoice->fetch(0, preg_replace(
'/\.[^\.]+$/',
'', basename($original_file)));
192 throw new RestException(404,
'Invoice not found');
195 $templateused = $doctemplate ? $doctemplate : $this->invoice->model_pdf;
196 $result = $this->invoice->generateDocument($templateused, $outputlangs, $hidedetails, $hidedesc, $hideref);
198 throw new RestException(500,
'Error generating document');
200 } elseif ($modulepart ==
'commande' || $modulepart ==
'order') {
201 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
203 $result = $this->order->fetch(0, preg_replace(
'/\.[^\.]+$/',
'', basename($original_file)));
205 throw new RestException(404,
'Order not found');
207 $templateused = $doctemplate ? $doctemplate : $this->order->model_pdf;
208 $result = $this->order->generateDocument($templateused, $outputlangs, $hidedetails, $hidedesc, $hideref);
210 throw new RestException(500,
'Error generating document');
212 } elseif ($modulepart ==
'propal' || $modulepart ==
'proposal') {
213 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
214 $this->propal =
new Propal($this->
db);
215 $result = $this->propal->fetch(0, preg_replace(
'/\.[^\.]+$/',
'', basename($original_file)));
217 throw new RestException(404,
'Proposal not found');
219 $templateused = $doctemplate ? $doctemplate : $this->propal->model_pdf;
220 $result = $this->propal->generateDocument($templateused, $outputlangs, $hidedetails, $hidedesc, $hideref);
222 throw new RestException(500,
'Error generating document');
225 throw new RestException(403,
'Generation not available for this modulepart');
228 $filename = basename($original_file);
229 $original_file_osencoded =
dol_osencode($original_file);
231 if (!file_exists($original_file_osencoded)) {
232 throw new RestException(404,
'File not found');
235 $file_content = file_get_contents($original_file_osencoded);
236 return array(
'filename'=>$filename,
'content-type' =>
dol_mimetype($filename),
'filesize'=>filesize($original_file),
'content'=>base64_encode($file_content),
'langcode'=>$outputlangs->defaultlang,
'template'=>$templateused,
'encoding'=>
'base64');
260 if (empty($modulepart)) {
261 throw new RestException(400,
'bad value for parameter modulepart');
264 if (empty($id) && empty($ref)) {
265 throw new RestException(400,
'bad value for parameter id or ref');
268 $id = (empty($id) ? 0 : $id);
272 if ($modulepart ==
'societe' || $modulepart ==
'thirdparty') {
273 require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
275 if (!DolibarrApiAccess::$user->hasRight(
'societe',
'lire')) {
276 throw new RestException(401);
280 $result = $object->fetch($id, $ref);
282 throw new RestException(404,
'Thirdparty not found');
285 $upload_dir = $conf->societe->multidir_output[$object->entity].
"/".$object->id;
286 } elseif ($modulepart ==
'user') {
287 require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
290 if (!DolibarrApiAccess::$user->rights->user->user->lire && DolibarrApiAccess::$user->id != $id) {
291 throw new RestException(401);
294 $object =
new User($this->
db);
295 $result = $object->fetch($id, $ref);
297 throw new RestException(404,
'User not found');
300 $upload_dir = $conf->user->dir_output.
'/'.
get_exdir(0, 0, 0, 0, $object,
'user').
'/'.$object->id;
301 } elseif ($modulepart ==
'adherent' || $modulepart ==
'member') {
302 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
304 if (!DolibarrApiAccess::$user->rights->adherent->lire) {
305 throw new RestException(401);
309 $result = $object->fetch($id, $ref);
311 throw new RestException(404,
'Member not found');
314 $upload_dir = $conf->adherent->dir_output.
"/".
get_exdir(0, 0, 0, 1, $object,
'member');
315 } elseif ($modulepart ==
'propal' || $modulepart ==
'proposal') {
316 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
318 if (!DolibarrApiAccess::$user->rights->propal->lire) {
319 throw new RestException(401);
323 $result = $object->fetch($id, $ref);
325 throw new RestException(404,
'Proposal not found');
328 $upload_dir = $conf->propal->multidir_output[$object->entity].
"/".
get_exdir(0, 0, 0, 1, $object,
'propal');
329 } elseif ($modulepart ==
'supplier_proposal') {
330 require_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
332 if (!DolibarrApiAccess::$user->rights->supplier_proposal->read) {
333 throw new RestException(401);
337 $result = $object->fetch($id, $ref);
339 throw new RestException(404,
'Supplier proposal not found');
342 $upload_dir = $conf->propal->multidir_output[$object->entity].
"/".
get_exdir(0, 0, 0, 1, $object,
'propal');
343 } elseif ($modulepart ==
'commande' || $modulepart ==
'order') {
344 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
346 if (!DolibarrApiAccess::$user->rights->commande->lire) {
347 throw new RestException(401);
351 $result = $object->fetch($id, $ref);
353 throw new RestException(404,
'Order not found');
356 $upload_dir = $conf->commande->dir_output.
"/".
get_exdir(0, 0, 0, 1, $object,
'commande');
357 } elseif ($modulepart ==
'commande_fournisseur' || $modulepart ==
'supplier_order') {
358 $modulepart =
'supplier_order';
360 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
362 if (empty(DolibarrApiAccess::$user->rights->fournisseur->commande->lire) && empty(DolibarrApiAccess::$user->rights->supplier_order->lire)) {
363 throw new RestException(401);
367 $result = $object->fetch($id, $ref);
369 throw new RestException(404,
'Purchase order not found');
372 $upload_dir = $conf->fournisseur->dir_output.
"/facture/".
get_exdir($object->id, 2, 0, 0, $object,
'invoice_supplier').dol_sanitizeFileName($object->ref);
373 } elseif ($modulepart ==
'shipment' || $modulepart ==
'expedition') {
374 require_once DOL_DOCUMENT_ROOT.
'/expedition/class/expedition.class.php';
376 if (!DolibarrApiAccess::$user->rights->expedition->lire) {
377 throw new RestException(401);
381 $result = $object->fetch($id, $ref);
383 throw new RestException(404,
'Shipment not found');
386 $upload_dir = $conf->expedition->dir_output.
"/sending/".
get_exdir(0, 0, 0, 1, $object,
'shipment');
387 } elseif ($modulepart ==
'facture' || $modulepart ==
'invoice') {
388 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
390 if (!DolibarrApiAccess::$user->rights->facture->lire) {
391 throw new RestException(401);
395 $result = $object->fetch($id, $ref);
397 throw new RestException(404,
'Invoice not found');
400 $upload_dir = $conf->facture->dir_output.
"/".
get_exdir(0, 0, 0, 1, $object,
'invoice');
401 } elseif ($modulepart ==
'facture_fournisseur' || $modulepart ==
'supplier_invoice') {
402 $modulepart =
'supplier_invoice';
404 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
406 if (empty(DolibarrApiAccess::$user->rights->fournisseur->facture->lire) && empty(DolibarrApiAccess::$user->rights->supplier_invoice->lire)) {
407 throw new RestException(401);
411 $result = $object->fetch($id, $ref);
413 throw new RestException(404,
'Invoice not found');
416 $upload_dir = $conf->fournisseur->dir_output.
"/facture/".
get_exdir($object->id, 2, 0, 0, $object,
'invoice_supplier').dol_sanitizeFileName($object->ref);
417 } elseif ($modulepart ==
'produit' || $modulepart ==
'product') {
418 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
420 if (!DolibarrApiAccess::$user->rights->produit->lire) {
421 throw new RestException(401);
425 $result = $object->fetch($id, $ref);
427 throw new RestException(404,
'Product not found');
428 } elseif ($result < 0) {
429 throw new RestException(500,
'Error while fetching object: '.$object->error);
432 $upload_dir = $conf->product->multidir_output[$object->entity].
'/'.
get_exdir(0, 0, 0, 1, $object,
'product');
433 } elseif ($modulepart ==
'agenda' || $modulepart ==
'action' || $modulepart ==
'event') {
434 require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
436 if (!DolibarrApiAccess::$user->rights->agenda->myactions->read && !DolibarrApiAccess::$user->rights->agenda->allactions->read) {
437 throw new RestException(401);
441 $result = $object->fetch($id, $ref);
443 throw new RestException(404,
'Event not found');
447 } elseif ($modulepart ==
'expensereport') {
448 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
450 if (!DolibarrApiAccess::$user->rights->expensereport->read && !DolibarrApiAccess::$user->rights->expensereport->read) {
451 throw new RestException(401);
455 $result = $object->fetch($id, $ref);
457 throw new RestException(404,
'Expense report not found');
461 } elseif ($modulepart ==
'knowledgemanagement') {
462 require_once DOL_DOCUMENT_ROOT.
'/knowledgemanagement/class/knowledgerecord.class.php';
464 if (!DolibarrApiAccess::$user->rights->knowledgemanagement->knowledgerecord->read && !DolibarrApiAccess::$user->rights->knowledgemanagement->knowledgerecord->read) {
465 throw new RestException(401);
469 $result = $object->fetch($id, $ref);
471 throw new RestException(404,
'KM article not found');
474 $upload_dir = $conf->knowledgemanagement->dir_output.
'/knowledgerecord/'.
dol_sanitizeFileName($object->ref);
475 } elseif ($modulepart ==
'categorie' || $modulepart ==
'category') {
476 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
478 if (!DolibarrApiAccess::$user->rights->categorie->lire) {
479 throw new RestException(401);
483 $result = $object->fetch($id, $ref);
485 throw new RestException(404,
'Category not found');
488 $upload_dir = $conf->categorie->multidir_output[$object->entity].
'/'.
get_exdir($object->id, 2, 0, 0, $object,
'category').$object->id.
"/photos/".
dol_sanitizeFileName($object->ref);
489 } elseif ($modulepart ==
'ecm') {
490 throw new RestException(500,
'Modulepart Ecm not implemented yet.');
505 } elseif ($modulepart ==
'projet' || $modulepart ==
'project') {
506 $modulepart =
'project';
507 require_once DOL_DOCUMENT_ROOT .
'/projet/class/project.class.php';
510 $result = $object->fetch($id, $ref);
512 throw new RestException(404,
'Project not found');
515 $upload_dir = $conf->projet->dir_output .
"/" .
get_exdir(0, 0, 0, 1, $object,
'project');
517 throw new RestException(500,
'Modulepart '.$modulepart.
' not implemented yet.');
520 $objectType = $modulepart;
521 if (! empty($object->id) && ! empty($object->table_element)) {
522 $objectType = $object->table_element;
525 $filearray =
dol_dir_list($upload_dir, $type, $recursive,
'',
'(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) ==
'desc' ?SORT_DESC:SORT_ASC), 1);
526 if (empty($filearray)) {
527 throw new RestException(404,
'Search for modulepart '.$modulepart.
' with Id '.$object->id.(!empty($object->ref) ?
' or Ref '.$object->ref :
'').
' does not return any document.');
529 if (($object->id) > 0 && !empty($modulepart)) {
530 require_once DOL_DOCUMENT_ROOT.
'/ecm/class/ecmfiles.class.php';
532 $result = $ecmfile->fetchAll(
'',
'', 0, 0, array(
't.src_object_type' => $objectType,
't.src_object_id' => $object->id));
534 throw new RestException(503,
'Error when retrieve ecm list : '.$this->
db->lasterror());
535 } elseif (is_array($ecmfile->lines) && count($ecmfile->lines) > 0) {
536 $count = count($filearray);
537 for ($i = 0 ; $i < $count ; $i++) {
538 if ($filearray[$i][
'name'] == $ecmfile->lines[$i]->filename) $filearray[$i] = array_merge($filearray[$i], (array) $ecmfile->lines[0]);
586 public function post($filename, $modulepart, $ref =
'', $subdir =
'', $filecontent =
'', $fileencoding =
'', $overwriteifexists = 0, $createdirifnotexists = 1)
594 if (empty($modulepart)) {
595 throw new RestException(400,
'Modulepart not provided.');
598 if (!DolibarrApiAccess::$user->rights->ecm->upload) {
599 throw new RestException(401);
602 $newfilecontent =
'';
603 if (empty($fileencoding)) {
604 $newfilecontent = $filecontent;
606 if ($fileencoding ==
'base64') {
607 $newfilecontent = base64_decode($filecontent);
614 $entity = DolibarrApiAccess::$user->entity;
615 if (empty($entity)) {
622 if ($modulepart ==
'facture' || $modulepart ==
'invoice') {
623 $modulepart =
'facture';
625 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
627 } elseif ($modulepart ==
'facture_fournisseur' || $modulepart ==
'supplier_invoice') {
628 $modulepart =
'supplier_invoice';
630 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
632 } elseif ($modulepart ==
'commande' || $modulepart ==
'order') {
633 $modulepart =
'commande';
635 require_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
637 } elseif ($modulepart ==
'commande_fournisseur' || $modulepart ==
'supplier_order') {
638 $modulepart =
'supplier_order';
640 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
642 } elseif ($modulepart ==
'projet' || $modulepart ==
'project') {
643 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
645 } elseif ($modulepart ==
'task' || $modulepart ==
'project_task') {
646 $modulepart =
'project_task';
648 require_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
649 $object =
new Task($this->
db);
651 $task_result = $object->fetch(
'', $ref);
654 if ($task_result > 0) {
655 $project_result = $object->fetch_projet();
657 if ($project_result >= 0) {
661 throw new RestException(500,
'Error while fetching Task '.$ref);
663 } elseif ($modulepart ==
'product' || $modulepart ==
'produit' || $modulepart ==
'service' || $modulepart ==
'produit|service') {
664 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
666 } elseif ($modulepart ==
'expensereport') {
667 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
669 } elseif ($modulepart ==
'fichinter') {
670 require_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
672 } elseif ($modulepart ==
'adherent' || $modulepart ==
'member') {
673 $modulepart =
'adherent';
674 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
676 } elseif ($modulepart ==
'proposal' || $modulepart ==
'propal' || $modulepart ==
'propale') {
677 $modulepart =
'propale';
678 require_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
682 throw new RestException(500,
'Modulepart '.$modulepart.
' not implemented yet.');
685 if (is_object($object)) {
686 $result = $object->fetch(
'', $ref);
689 throw new RestException(404,
"Object with ref '".$ref.
"' was not found.");
690 } elseif ($result < 0) {
691 throw new RestException(500,
'Error while fetching object: '.$object->error);
695 if (!($object->id > 0)) {
696 throw new RestException(404,
'The object '.$modulepart.
" with ref '".$ref.
"' was not found.");
701 if ($modulepart ==
'supplier_invoice') {
702 $tmpreldir =
get_exdir($object->id, 2, 0, 0, $object,
'invoice_supplier');
705 $relativefile = $tmpreldir.dol_sanitizeFileName($object->ref);
708 $upload_dir = $tmp[
'original_file'];
710 if (empty($upload_dir) || $upload_dir ==
'/') {
711 throw new RestException(500,
'This value of modulepart ('.$modulepart.
') does not support yet usage of ref. Check modulepart parameter or try to use subdir parameter instead of ref.');
714 if ($modulepart ==
'invoice') {
715 $modulepart =
'facture';
717 if ($modulepart ==
'member') {
718 $modulepart =
'adherent';
721 $relativefile = $subdir;
723 $upload_dir = $tmp[
'original_file'];
725 if (empty($upload_dir) || $upload_dir ==
'/') {
726 if (!empty($tmp[
'error'])) {
727 throw new RestException(401,
'Error returned by dol_check_secure_access_document: '.$tmp[
'error']);
729 throw new RestException(500,
'This value of modulepart ('.$modulepart.
') is not allowed with this value of subdir ('.$relativefile.
')');
737 if (!empty($createdirifnotexists)) {
739 throw new RestException(500,
'Error while trying to create directory '.$upload_dir);
743 $destfile = $upload_dir.
'/'.$original_file;
744 $destfiletmp = DOL_DATA_ROOT.
'/admin/temp/'.$original_file;
749 throw new RestException(401,
'Directory not exists : '.dirname($destfile));
752 if (!$overwriteifexists &&
dol_is_file($destfile)) {
753 throw new RestException(500,
"File with name '".$original_file.
"' already exists.");
756 $fhandle = @fopen($destfiletmp,
'w');
758 $nbofbyteswrote = fwrite($fhandle, $newfilecontent);
760 @chmod($destfiletmp, octdec($conf->global->MAIN_UMASK));
762 throw new RestException(500,
"Failed to open file '".$destfiletmp.
"' for write");
765 $result =
dol_move($destfiletmp, $destfile, 0, $overwriteifexists, 1, 1);
767 throw new RestException(500,
"Failed to move file into '".$destfile.
"'");
786 public function delete($modulepart, $original_file)
788 global $conf, $langs;
790 if (empty($modulepart)) {
791 throw new RestException(400,
'bad value for parameter modulepart');
793 if (empty($original_file)) {
794 throw new RestException(400,
'bad value for parameter original_file');
798 $entity = $conf->entity;
809 $relativefile = $original_file;
812 $accessallowed = $check_access[
'accessallowed'];
813 $sqlprotectagainstexternals = $check_access[
'sqlprotectagainstexternals'];
814 $original_file = $check_access[
'original_file'];
816 if (preg_match(
'/\.\./', $original_file) || preg_match(
'/[<>|]/', $original_file)) {
817 throw new RestException(401);
819 if (!$accessallowed) {
820 throw new RestException(401);
823 $filename = basename($original_file);
824 $original_file_osencoded =
dol_osencode($original_file);
826 if (!file_exists($original_file_osencoded)) {
827 dol_syslog(
"Try to download not found file ".$original_file_osencoded, LOG_WARNING);
828 throw new RestException(404,
'File not found');
831 if (@unlink($original_file_osencoded)) {
835 'message' =>
'Document deleted'
840 throw new RestException(401);
855 foreach (Documents::$DOCUMENT_FIELDS as $field) {
856 if (!isset($data[$field])) {
857 throw new RestException(400,
"$field field missing");
859 $result[$field] = $data[$field];
Class to manage agenda events (actions)
Class to manage members of a foundation.
Class to manage categories.
Class to manage predefined suppliers products.
Class to manage customers orders.
API class for receive files.
post($filename, $modulepart, $ref='', $subdir='', $filecontent='', $fileencoding='', $overwriteifexists=0, $createdirifnotexists=1)
Return a document.
__construct()
Constructor.
index($modulepart, $original_file='')
Download a document.
getDocumentsListByElement($modulepart, $id=0, $ref='', $sortfield='', $sortorder='')
Return the list of documents of a dedicated element (from its ID or Ref)
builddoc($modulepart, $original_file='', $doctemplate='', $langcode='')
Build a document.
_validate_file($data)
Validate fields before create or update object.
Class to manage ECM files.
Class to manage shipments.
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage interventions.
Class for KnowledgeRecord.
Class to manage products or services.
Class to manage projects.
Class to manage proposals.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage translations.
Class to manage Dolibarr users.
dol_basename($pathfile)
Make a basename working with all page code (default PHP basenamed fails with cyrillic).
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_check_secure_access_document($modulepart, $original_file, $entity, $fuser='', $refname='', $mode='read')
Security check when accessing to a document (used by document.php, viewimage.php and webservices to g...
dol_is_file($pathoffile)
Return if path is a file.
dol_dir_list($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_is_dir($folder)
Test if filename is a directory.
dol_move($srcfile, $destfile, $newmask=0, $overwriteifexists=1, $testvirus=0, $indexdatabase=1)
Move a file into another name.
dol_mimetype($file, $default='application/octet-stream', $mode=0)
Return MIME type of a file from its name with extension.
dol_osencode($str)
Return a string encoded into OS filesystem encoding.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_sanitizePathName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a path name.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
$conf db
API class for accounts.