30require
'../main.inc.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/ecm.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/treeview.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/ecm/class/ecmdirectory.class.php';
45$langs->loadLangs(array(
"ecm",
"companies",
"other",
"users",
"orders",
"propal",
"bills",
"contracts"));
49$action =
GETPOST(
'action',
'aZ09');
51$module =
GETPOST(
'module',
'aZ09arobase');
55$section_dir =
GETPOST(
'section_dir',
'alpha');
57$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
58$search_doc_date_start =
'';
59$search_doc_date_end =
'';
60if (GETPOSTISSET(
'search_doc_date_start') || GETPOSTISSET(
'search_doc_date_startday') || GETPOSTISSET(
'search_doc_date_startmonth') || GETPOSTISSET(
'search_doc_date_startyear')) {
61 $search_doc_date_start =
GETPOSTDATE(
'search_doc_date_start');
63if (GETPOSTISSET(
'search_doc_date_end') || GETPOSTISSET(
'search_doc_date_endday') || GETPOSTISSET(
'search_doc_date_endmonth') || GETPOSTISSET(
'search_doc_date_endyear')) {
64 $search_doc_date_end =
GETPOSTDATE(
'search_doc_date_end',
'end');
68$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
69$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
71if (empty($page) || $page == -1) {
74$offset = $limit * $page;
81 $sortfield =
"fullname";
83if ($module ==
'invoice_supplier' && $sortfield ==
"fullname") {
84 $sortfield =
"level1name";
89 $result = $ecmdir->fetch($section);
104 $socid = $user->socid;
108$hookmanager->initHooks(array(
'ecmautocard',
'globalcard'));
118if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
119 $search_doc_ref =
'';
120 $search_doc_date_start =
'';
121 $search_doc_date_end =
'';
125if ($action ==
'add' && $user->hasRight(
'ecm',
'setup')) {
126 $ecmdir->ref =
'NOTUSEDYET';
127 $ecmdir->label =
GETPOST(
"label");
128 $ecmdir->description =
GETPOST(
"desc");
130 $id = $ecmdir->create($user);
132 header(
"Location: ".$_SERVER[
"PHP_SELF"]);
143if ($action ==
'confirm_deletefile' && $user->hasRight(
'ecm',
'upload')) {
144 if (
GETPOST(
'confirm') ==
'yes') {
145 $langs->load(
"other");
147 $result = $ecmdir->fetch($section);
148 if (!($result > 0)) {
152 $relativepath = $ecmdir->getRelativePath();
156 $upload_dir =
$conf->ecm->dir_output.($relativepath ?
'/'.$relativepath :
'');
157 $file = $upload_dir.
"/".
GETPOST(
'urlfile');
166 $result = $ecmdir->changeNbOfFiles(
'-');
170 $action =
'file_manager';
174if ($action ==
'confirm_deletesection' &&
GETPOST(
'confirm') ==
'yes' && $user->hasRight(
'ecm',
'setup')) {
175 $result = $ecmdir->delete($user);
176 setEventMessages($langs->trans(
"ECMSectionWasRemoved", $ecmdir->label),
null,
'mesgs');
184if ($action ==
'refreshmanual' && $user->hasRight(
'ecm',
'read')) {
190 $diroutputslash = str_replace(
'\\',
'/',
$conf->ecm->dir_output);
191 $diroutputslash .=
'/';
194 $disktree =
dol_dir_list(
$conf->ecm->dir_output,
'directories', 1,
'',
'^temp$',
'', 0, 0);
197 $treesqldir = $ecmdirstatic->get_full_arbo(0);
204 foreach ($disktree as $dirdesc) {
205 $dirisindatabase = 0;
206 foreach ($treesqldir as $dirsqldesc) {
207 if (
$conf->ecm->dir_output.
'/'.$dirsqldesc[
'fullrelativename'] == $dirdesc[
'fullname']) {
208 $dirisindatabase = 1;
213 if (!$dirisindatabase) {
214 $txt =
"Directory found on disk ".$dirdesc[
'fullname'].
", not found into database so we add it";
220 $relativepathmissing = str_replace($diroutputslash,
'', $dirdesc[
'fullname']);
221 $relativepathtosearchparent = $relativepathmissing;
223 if (preg_match(
'/\//', $relativepathtosearchparent)) {
225 $relativepathtosearchparent = preg_replace(
'/\/[^\/]*$/',
'', $relativepathtosearchparent);
226 $txt =
"Is relative parent path ".$relativepathtosearchparent.
" for ".$relativepathmissing.
" found in sql tree ?";
229 $parentdirisindatabase = 0;
230 foreach ($treesqldir as $dirsqldesc) {
231 if ($dirsqldesc[
'fullrelativename'] == $relativepathtosearchparent) {
232 $parentdirisindatabase = $dirsqldesc[
'id'];
236 if ($parentdirisindatabase > 0) {
237 dol_syslog(
"Yes with id ".$parentdirisindatabase);
239 $fk_parent = $parentdirisindatabase;
250 if ($fk_parent >= 0) {
251 $ecmdirtmp->ref =
'NOTUSEDYET';
253 $ecmdirtmp->description =
'';
254 $ecmdirtmp->fk_parent = $fk_parent;
256 $txt =
"We create directory ".$ecmdirtmp->label.
" with parent ".$fk_parent;
259 $id = $ecmdirtmp->create($user);
261 $newsqldir = array(
'id' =>
$id,
262 'id_mere' => $ecmdirtmp->fk_parent,
263 'label' => $ecmdirtmp->label,
264 'description' => $ecmdirtmp->description,
265 'fullrelativename' => $relativepathmissing);
266 $treesqldir[] = $newsqldir;
270 dol_syslog(
"Failed to create directory ".$ecmdirtmp->label, LOG_ERR);
273 $txt =
"Parent of ".$dirdesc[
'fullname'].
" not found";
281 foreach ($treesqldir as $dirdesc) {
282 $dirtotest =
$conf->ecm->dir_output.
'/'.$dirdesc[
'fullrelativename'];
284 $ecmdirtmp->id = $dirdesc[
'id'];
285 $ecmdirtmp->delete($user,
'databaseonly');
290 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"ecm_directories set cachenbofdoc = -1 WHERE cachenbofdoc < 0";
296 if ($adirwascreated) {
302if ($action ==
'download_selected' && $module ==
'invoice_supplier' && !$user->hasRight(
'fournisseur',
'facture',
'lire')) {
305if ($action ==
'download_selected' && $module ==
'invoice_supplier' && $user->hasRight(
'fournisseur',
'facture',
'lire')) {
306 $langs->loadLangs(array(
"errors",
"accountancy"));
308 $selectedfiles =
GETPOST(
'selectedfiles',
'array');
309 $selectedfiles = is_array($selectedfiles) ? $selectedfiles : array();
310 $maxformassaction =
getDolGlobalInt(
'MAIN_LIMIT_FOR_MASS_ACTIONS', 1000);
312 if (count($selectedfiles) < 1) {
314 } elseif (count($selectedfiles) > $maxformassaction) {
315 setEventMessages($langs->trans(
"TooManyRecordForMassAction", $maxformassaction),
null,
'errors');
316 } elseif (!class_exists(
'ZipArchive')) {
317 setEventMessages(
'ZipArchive PHP extension is not available',
null,
'errors');
319 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
321 $upload_dir = !empty(
$conf->fournisseur->facture->multidir_output[
$conf->entity]) ?
$conf->fournisseur->facture->multidir_output[
$conf->entity] :
$conf->fournisseur->facture->dir_output;
322 $basepath = realpath($upload_dir);
323 $basepathwithslash = ($basepath ? rtrim($basepath, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR :
'');
324 $filestoarchive = array();
325 $invoicecache = array();
327 foreach ($selectedfiles as $selectedfile) {
328 if (!is_scalar($selectedfile)) {
332 $relativefile = str_replace(
'\\',
'/', (
string) $selectedfile);
333 $relativefile = preg_replace(
'/\/+/',
'/', $relativefile);
334 $relativefile = ltrim($relativefile,
'/');
336 if ($relativefile ==
''
337 || preg_match(
'/(^|\/)\.\.(\/|$)/', $relativefile)
338 || preg_match(
'/[<>|\x00-\x1F]/', $relativefile)
339 || preg_match(
'/(^|\/)(temp|thumbs|CVS|payments)(\/|$)/i', $relativefile)
340 || preg_match(
'/(\.meta|_preview.*\.png)$/i', $relativefile)
346 preg_match(
'/([^\/]+)\/[^\/]+$/', $relativefile, $reg);
347 $ref = (isset($reg[1]) ? $reg[1] :
'');
352 if (is_numeric($ref)) {
357 $cachekey =
$id.
'_'.$ref;
358 if (!array_key_exists($cachekey, $invoicecache)) {
359 $invoicecache[$cachekey] =
false;
363 $result = $objecttmp->fetch(
$id);
365 if (!($result = $objecttmp->fetch(0, $ref))) {
366 $result = $objecttmp->fetchOneLike($ref);
369 if ($result > 0 && (
int) $objecttmp->entity === (
int)
$conf->entity) {
370 $invoicecache[$cachekey] =
true;
373 if (empty($invoicecache[$cachekey])) {
377 $fullpath = realpath($upload_dir.
'/'.$relativefile);
378 if (empty($basepath) || empty($fullpath) || strpos($fullpath, $basepathwithslash) !== 0 || !is_file($fullpath)) {
382 $filestoarchive[$relativefile] = $fullpath;
385 if (count($filestoarchive) < 1) {
388 $tmpdir = DOL_DATA_ROOT.
'/ecm/temp';
391 if (!is_writable($tmpdir)) {
392 setEventMessages($langs->trans(
"ErrorFailedToWriteInDir", $tmpdir),
null,
'errors');
394 $zipfilename =
'supplier_invoice_documents_'.dol_print_date(
dol_now(),
'dayhourlog').
'.zip';
395 $zipfullpath = $tmpdir.
'/'.$zipfilename;
397 $zip =
new ZipArchive();
398 $result = $zip->open($zipfullpath, ZipArchive::CREATE | ZipArchive::OVERWRITE);
399 if ($result !==
true) {
400 setEventMessages($langs->trans(
"ErrorFailedToBuildArchive", $zipfullpath),
null,
'errors');
403 foreach ($filestoarchive as $relativefile => $fullpath) {
404 $result = $zip->addFile($fullpath, $relativefile);
407 setEventMessages($langs->trans(
"ErrorArchiveAddFile", $relativefile),
null,
'errors');
411 $closeok = $zip->close();
413 if ($errorarchive || !$closeok || !is_file($zipfullpath)) {
414 if (!$errorarchive) {
415 setEventMessages($langs->trans(
"ErrorFailedToBuildArchive", $zipfullpath),
null,
'errors');
420 header(
'Content-Disposition: attachment; filename="'.$zipfilename.
'"');
421 header(
'Content-Length: '.filesize($zipfullpath));
422 readfile($zipfullpath);
443$maxheightwin = (isset($_SESSION[
"dol_screenheight"]) && $_SESSION[
"dol_screenheight"] > 466) ? ($_SESSION[
"dol_screenheight"] - 136) : 660;
450 $morejs[] =
"public/includes/jquery/plugins/jqueryFileTree/jqueryFileTree.js";
453llxHeader($moreheadcss.$moreheadjs, $langs->trans(
"ECMArea"),
'',
'', 0, 0, $morejs,
'',
'',
'mod-ecm page-index_auto');
458$sectionauto = array();
461 $langs->load(
"products");
463 $sectionauto[] = array(
'position' => 10,
'level' => 1,
'module' =>
'product',
'test' => $user->hasRight(
'produit',
'lire'),
'label' => $langs->trans(
"ProductsAndServices"),
'desc' => $langs->trans(
"ECMDocsByProducts"));
467 $sectionauto[] = array(
'position' => 20,
'level' => 1,
'module' =>
'company',
'test' => $user->hasRight(
'societe',
'lire'),
'label' => $langs->trans(
"ThirdParties"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"ThirdParties")));
471 $sectionauto[] = array(
'position' => 30,
'level' => 1,
'module' =>
'propal',
'test' => $user->hasRight(
'propale',
'lire'),
'label' => $langs->trans(
"Proposals"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Proposals")));
475 $sectionauto[] = array(
'position' => 40,
'level' => 1,
'module' =>
'contract',
'test' => $user->hasRight(
'contrat',
'lire'),
'label' => $langs->trans(
"Contracts"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Contracts")));
479 $sectionauto[] = array(
'position' => 50,
'level' => 1,
'module' =>
'order',
'test' => $user->hasRight(
'commande',
'lire'),
'label' => $langs->trans(
"CustomersOrders"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Orders")));
483 $sectionauto[] = array(
'position' => 60,
'level' => 1,
'module' =>
'invoice',
'test' => $user->hasRight(
'facture',
'lire'),
'label' => $langs->trans(
"CustomersInvoices"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Invoices")));
486 $langs->load(
"supplier_proposal");
488 $sectionauto[] = array(
'position' => 70,
'level' => 1,
'module' =>
'supplier_proposal',
'test' => $user->hasRight(
'supplier_proposal',
'lire'),
'label' => $langs->trans(
"SupplierProposals"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"SupplierProposals")));
492 $sectionauto[] = array(
'position' => 80,
'level' => 1,
'module' =>
'order_supplier',
'test' => $user->hasRight(
'fournisseur',
'commande',
'lire'),
'label' => $langs->trans(
"SuppliersOrders"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"SuppliersOrders")));
496 $sectionauto[] = array(
'position' => 90,
'level' => 1,
'module' =>
'invoice_supplier',
'test' => $user->hasRight(
'fournisseur',
'facture',
'lire'),
'label' => $langs->trans(
"SuppliersInvoices"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"SupplierInvoices")));
499 $langs->load(
"compta");
501 $sectionauto[] = array(
'position' => 100,
'level' => 1,
'module' =>
'tax',
'test' => $user->hasRight(
'tax',
'charges',
'lire'),
'label' => $langs->trans(
"SocialContributions"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"SocialContributions")));
503 $sectionauto[] = array(
'position' => 110,
'level' => 1,
'module' =>
'tax-vat',
'test' => $user->hasRight(
'tax',
'charges',
'lire'),
'label' => $langs->trans(
"VAT"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"VAT")));
506 $langs->load(
"compta");
508 $sectionauto[] = array(
'position' => 120,
'level' => 1,
'module' =>
'salaries',
'test' => $user->hasRight(
'salaries',
'read'),
'label' => $langs->trans(
"Salaries"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Salaries")));
512 $sectionauto[] = array(
'position' => 130,
'level' => 1,
'module' =>
'project',
'test' => 1,
'label' => $langs->trans(
"Projects"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Projects")));
514 $sectionauto[] = array(
'position' => 140,
'level' => 1,
'module' =>
'project_task',
'test' => 1,
'label' => $langs->trans(
"Tasks"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Tasks")));
517 $langs->load(
"interventions");
519 $sectionauto[] = array(
'position' => 150,
'level' => 1,
'module' =>
'fichinter',
'test' => $user->hasRight(
'ficheinter',
'lire'),
'label' => $langs->trans(
"Interventions"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Interventions")));
522 $langs->load(
"trips");
524 $sectionauto[] = array(
'position' => 160,
'level' => 1,
'module' =>
'expensereport',
'test' => $user->hasRight(
'expensereport',
'lire'),
'label' => $langs->trans(
"ExpenseReports"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"ExpenseReports")));
527 $langs->load(
"holiday");
529 $sectionauto[] = array(
'position' => 170,
'level' => 1,
'module' =>
'holiday',
'test' => $user->hasRight(
'holiday',
'read'),
'label' => $langs->trans(
"Holidays"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Holidays")));
532 $langs->load(
"banks");
534 $sectionauto[] = array(
'position' => 180,
'level' => 1,
'module' =>
'banque',
'test' => $user->hasRight(
'banque',
'lire'),
'label' => $langs->trans(
"BankAccount"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"BankAccount")));
539 $sectionauto[] = array(
'position' => 190,
'level' => 1,
'module' =>
'chequereceipt',
'test' => $user->hasRight(
'banque',
'lire'),
'label' => $langs->trans(
"CheckReceipt"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"CheckReceipt")));
544 $sectionauto[] = array(
'position' => 200,
'level' => 1,
'module' =>
'mrp-mo',
'test' => $user->hasRight(
'mrp',
'read'),
'label' => $langs->trans(
"MOs"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"ManufacturingOrders")));
547 $langs->load(
"recruitment");
549 $sectionauto[] = array(
'position' => 210,
'level' => 1,
'module' =>
'recruitment-recruitmentcandidature',
'test' => $user->hasRight(
'recruitment',
'read'),
'label' => $langs->trans(
"Candidatures"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"JobApplications")));
552 $sectionauto[] = array(
'position' => 220,
'level' => 1,
'module' =>
'user',
'test' => 1,
'label' => $langs->trans(
"Users"),
'desc' => $langs->trans(
"ECMDocsBy", $langs->transnoentitiesnoconv(
"Users")));
554 $parameters = array();
555 $reshook = $hookmanager->executeHooks(
'addSectionECMAuto', $parameters);
556 if ($reshook > 0 && is_array($hookmanager->resArray) && count($hookmanager->resArray) > 0) {
557 $res = $hookmanager->resArray[0];
558 if (is_array($hookmanager->resArray[0])) {
559 $sectionauto = array_merge($sectionauto, $hookmanager->resArray);
560 $rowspan += count($hookmanager->resArray);
562 $sectionauto[] = $hookmanager->resArray;
574if ($action ==
'deletefile' && empty(
$conf->use_javascript_ajax)) {
575 print $form->formconfirm(
dolBuildUrl($_SERVER[
"PHP_SELF"], array(
'section' => $section,
'urlfile' =>
GETPOST(
"urlfile"))), $langs->trans(
'DeleteFile'), $langs->trans(
'ConfirmDeleteFile'),
'confirm_deletefile',
'',
'', 1);
580<!-- Begin div
id=
"containerlayout" -->
581<div
id=
"containerlayout">
582<div
id=
"ecm-layout-north" class=
"toolbar largebutton">
586print
'<div class="inline-block toolbarbutton centpercent">';
592 $paramsrefresh = array(
'action' =>
'refreshmanual');
594 $paramsrefresh[
'module'] = $module;
597 $paramsrefresh[
'section'] = $section;
599 $url =
dolBuildUrl($_SERVER[
"PHP_SELF"], $paramsrefresh);
601print
'<a href="'.$url.
'" class="inline-block valignmiddle toolbarbutton paddingtop" title="'.
dol_escape_htmltag($langs->trans(
'Refresh')).
'">';
602print
img_picto(
'',
'refresh',
'id="refreshbutton"', 0, 0, 0,
'',
'size15x marginrightonly');
610<div
id=
"ecm-layout-west" class=
"inline-block">
616if ($action ==
'delete_section') {
617 print $form->formconfirm(
dolBuildUrl($_SERVER[
"PHP_SELF"], array(
'section' => $section)), $langs->trans(
'DeleteSection'), $langs->trans(
'ConfirmDeleteSection', $ecmdir->label),
'confirm_deletesection',
'',
'', 1);
622if (empty($action) || $action ==
'file_manager' || preg_match(
'/refresh/i', $action) || $action ==
'deletefile') {
623 print
'<table class="liste centpercent noborder">'.
"\n";
625 print
'<!-- Title for auto directories -->'.
"\n";
626 print
'<tr class="liste_titre">'.
"\n";
627 print
'<th class="liste_titre" align="left" colspan="6">';
628 print
' '.$langs->trans(
"ECMSections");
631 $showonrightsize =
'';
634 if (count($sectionauto)) {
635 $htmltooltip = $langs->trans(
"ECMAreaDesc2");
636 $htmltooltip .=
'<br>'.$langs->trans(
"ECMAreaDesc2b");
638 $sectionauto =
dol_sort_array($sectionauto,
'label',
'ASC', 1, 0);
641 print
'<td colspan="6">';
642 print
'<div id="filetreeauto" class="ecmfiletree"><ul class="ecmjqft">';
644 $arrayofmodulesforexternalusers = explode(
',',
getDolGlobalString(
'MAIN_MODULES_FOR_EXTERNAL'));
648 foreach ($sectionauto as $key => $val) {
649 if (empty($val[
'test'])) {
654 if ($user->socid > 0) {
657 if (! in_array($val[
'module'], $arrayofmodulesforexternalusers)) {
663 print
'<li class="directory collapsed">';
664 print
'<a class="fmdirlia jqft ecmjqft" href="'.dolBuildUrl($_SERVER[
"PHP_SELF"], array(
'module' => $val[
'module'])).
'">';
668 print
'<div class="ecmjqft">';
670 $htmltooltip =
'<b>'.$langs->trans(
"ECMSection").
'</b>: '.$val[
'label'].
'<br>';
671 $htmltooltip .=
'<b>'.$langs->trans(
"Type").
'</b>: '.$langs->trans(
"ECMSectionAuto").
'<br>';
672 $htmltooltip .=
'<b>'.$langs->trans(
"ECMCreationUser").
'</b>: '.$langs->trans(
"ECMTypeAuto").
'<br>';
673 $htmltooltip .=
'<b>'.$langs->trans(
"Description").
'</b>: '.$val[
'desc'];
674 print $form->textwithpicto(
'', $htmltooltip, 1,
'info');
682 print
'</ul></div></td></tr>';
692<div
id=
"ecm-layout-center" class=
"inline-block">
693<div
class=
"pane-in ecm-in-layout-center">
694<div
id=
"ecmfileview" class=
"ecmfileview">
699$url = DOL_URL_ROOT.
'/ecm/index_auto.php';
700include_once DOL_DOCUMENT_ROOT.
'/core/ajax/ajaxdirpreview.php';
709</div> <!-- End div
id=
"containerlayout" -->
714 include DOL_DOCUMENT_ROOT.
'/ecm/tpl/enablefiletreeajax.tpl.php';
$id
Support class for third parties, contacts, members, users or resources.
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage ECM directories.
Class to manage suppliers invoices.
Class to manage Dolibarr users.
ecm_prepare_dasboard_head()
Prepare array with list of different ecm main dashboard.
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_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_is_dir($folder)
Test if filename is a directory.
dol_now($mode='gmt')
Return date for now.
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
dolBuildUrl($url, $params=[], $addtoken=false, $anchor='')
Return path of url.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_mkdir($dir, $dataroot='', $newmask='')
Creation of a directory (this can create recursive subdir)
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dolPrintLabel($s, $escapeonlyhtmltags=0)
Return a string label (so on 1 line only and that should not contains any HTML) ready to be output on...
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
if(!defined( 'NOREQUIREMENU')) if(!empty(GETPOST('seteventmessages', 'alpha'))) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.