57 $this->numoffiles = 0;
86 public function form_attach_new_file($url, $title =
'', $addcancel = 0, $sectionid = 0, $perm = 1, $size = 50, $object =
null, $options =
'', $useajax = 1, $savingdocmask =
'', $linkfiles = 1, $htmlname =
'formuserfile', $accept =
'', $sectiondir =
'', $usewithoutform = 0, $capture = 0, $disablemulti = 0, $nooutput = 0)
89 global $conf, $langs, $hookmanager;
90 $hookmanager->initHooks(array(
'formfile'));
94 dol_syslog(__METHOD__.
": using 2 for useajax is deprecated and should be not used", LOG_WARNING);
97 if (!empty($conf->browser->layout) && $conf->browser->layout !=
'classic') {
101 if ((
getDolGlobalString(
'MAIN_USE_JQUERY_FILEUPLOAD') && $useajax) || ($useajax == 2)) {
108 return 'Feature too bugged so removed';
119 $out =
"\n\n".
'<!-- Start form attach new file --><div class="formattachnewfile">'.
"\n";
122 $title = $langs->trans(
"AttachANewFile");
124 if ($title !=
'none') {
128 if (empty($usewithoutform)) {
130 $url .= (strpos($url,
'?') ===
false ?
'?' :
'&').
'uploadform=1';
132 $out .=
'<form name="'.$htmlname.
'" id="'.$htmlname.
'" action="'.$url.
'" enctype="multipart/form-data" method="POST">'.
"\n";
134 if (empty($usewithoutform) || $usewithoutform == 2) {
135 $out .=
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
136 $out .=
'<input type="hidden" id="'.$htmlname.
'_section_dir" name="section_dir" value="'.$sectiondir.
'">'.
"\n";
137 $out .=
'<input type="hidden" id="'.$htmlname.
'_section_id" name="section_id" value="'.$sectionid.
'">'.
"\n";
138 $out .=
'<input type="hidden" name="sortfield" value="'.GETPOST(
'sortfield',
'aZ09comma').
'">'.
"\n";
139 $out .=
'<input type="hidden" name="sortorder" value="'.GETPOST(
'sortorder',
'aZ09comma').
'">'.
"\n";
140 $out .=
'<input type="hidden" name="page_y" value="">'.
"\n";
143 $out .=
'<table class="nobordernopadding centpercent">';
146 if (!empty($options)) {
147 $out .=
'<td>'.$options.
'</td>';
150 $out .=
'<td class="valignmiddle nowrap">';
153 $max = $maxfilesizearray[
'max'];
154 $maxmin = $maxfilesizearray[
'maxmin'];
155 $maxphptoshow = $maxfilesizearray[
'maxphptoshow'];
156 $maxphptoshowparam = $maxfilesizearray[
'maxphptoshowparam'];
158 $out .=
'<input type="hidden" name="MAX_FILE_SIZE" value="'.($maxmin * 1024).
'">';
160 $out .=
'<input class="flat minwidth400 maxwidth200onsmartphone" type="file"';
161 $out .= ((
getDolGlobalString(
'MAIN_DISABLE_MULTIPLE_FILEUPLOAD') || $disablemulti) ?
' name="userfile"' :
' name="userfile[]" multiple');
163 $out .= (!empty($accept) ?
' accept="'.$accept.
'"' :
' accept=""');
164 $out .= (!empty($capture) ?
' capture="capture"' :
'');
168 $langs->load(
'link');
169 $out .=
'<span class="nowraponsmartphone"><input style="margin-right: 2px;" type="checkbox" id="overwritefile" name="overwritefile" value="1"><label for="overwritefile">'.$langs->trans(
"OverwriteIfExists").
'</label></span>';
171 $out .=
'<input type="submit" class="button small reposition" name="sendit" value="'.$langs->trans(
"Upload").
'"';
177 $out .=
'<input type="submit" class="button small button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
182 $menudolibarrsetupmax = $langs->transnoentitiesnoconv(
"Home").
' - '.$langs->transnoentitiesnoconv(
"Setup").
' - '.$langs->transnoentitiesnoconv(
"Security");
183 $langs->load(
'other');
185 $out .=
info_admin($langs->trans(
"ThisLimitIsDefinedInSetupAt", $menudolibarrsetupmax, $max, $maxphptoshowparam, $maxphptoshow), 1);
188 $out .=
' ('.$langs->trans(
"UploadDisabled").
')';
190 $out .=
"</td></tr>";
192 if ($savingdocmask) {
194 $rename = (!
getDolGlobalString(
'MAIN_DOC_UPLOAD_NOT_RENAME_BY_DEFAULT') ?
'checked' :
'');
197 if (!empty($options)) {
198 $out .=
'<td>'.$options.
'</td>';
200 $out .=
'<td valign="middle" class="nowrap">';
201 $out .=
'<input type="checkbox" '.$rename.
' class="savingdocmask" name="savingdocmask" id="savingdocmask" value="'.
dol_escape_js($savingdocmask).
'"> ';
202 $out .=
'<label class="opacitymedium small" for="savingdocmask">';
203 $out .= $langs->trans(
"SaveUploadedFileWithMask", preg_replace(
'/__file__/', $langs->transnoentitiesnoconv(
"OriginFileName"), $savingdocmask), $langs->transnoentitiesnoconv(
"OriginFileName"));
211 if (empty($usewithoutform)) {
213 if (empty($sectionid)) {
218 $out .=
"\n</div><!-- End form attach new file -->\n";
221 $out .=
"\n".
'<!-- Start form link new url --><div class="formlinknewurl">'.
"\n";
222 $langs->load(
'link');
223 $title = $langs->trans(
"LinkANewFile");
226 if (empty($usewithoutform)) {
227 $out .=
'<form name="'.$htmlname.
'_link" id="'.$htmlname.
'_link" action="'.$url.
'" method="POST">'.
"\n";
228 $out .=
'<input type="hidden" name="token" value="'.newToken().
'">'.
"\n";
229 $out .=
'<input type="hidden" id="'.$htmlname.
'_link_section_dir" name="link_section_dir" value="">'.
"\n";
230 $out .=
'<input type="hidden" id="'.$htmlname.
'_link_section_id" name="link_section_id" value="'.$sectionid.
'">'.
"\n";
231 $out .=
'<input type="hidden" name="page_y" value="">'.
"\n";
234 $out .=
'<div class="valignmiddle">';
235 $out .=
'<div class="inline-block" style="padding-right: 10px;">';
237 $out .=
'<label for="link">'.$langs->trans(
"URLToLink").
':</label> ';
239 $out .=
'<input type="text" name="link" class="flat minwidth400imp" id="link" placeholder="'.dol_escape_htmltag($langs->trans(
"URLToLink")).
'">';
241 $out .=
'<div class="inline-block" style="padding-right: 10px;">';
243 $out .=
'<label for="label">'.$langs->trans(
"Label").
':</label> ';
245 $out .=
'<input type="text" class="flat" name="label" id="label" placeholder="'.dol_escape_htmltag($langs->trans(
"Label")).
'">';
246 $out .=
'<input type="hidden" name="objecttype" value="'.$object->element.
'">';
247 $out .=
'<input type="hidden" name="objectid" value="'.$object->id.
'">';
249 $out .=
'<div class="inline-block" style="padding-right: 10px;">';
250 $out .=
'<input type="submit" class="button small reposition" name="linkit" value="'.$langs->trans(
"ToLink").
'"';
255 if (empty($usewithoutform)) {
256 $out .=
'<div class="clearboth"></div>';
257 $out .=
'</form><br>';
260 $out .=
"\n</div><!-- End form link new url -->\n";
263 $parameters = array(
'socid'=>(isset($GLOBALS[
'socid']) ? $GLOBALS[
'socid'] :
''),
'id'=>(isset($GLOBALS[
'id']) ? $GLOBALS[
'id'] :
''),
'url'=>$url,
'perm'=>$perm,
'options'=>$options);
264 $res = $hookmanager->executeHooks(
'formattachOptions', $parameters, $object);
266 $out =
'<div class="'.($usewithoutform ?
'inline-block valignmiddle' :
'attacharea attacharea'.$htmlname).
'">'.$out.
'</div>';
268 $out .= $hookmanager->resPrint;
302 public function show_documents($modulepart, $modulesubdir, $filedir, $urlsource, $genallowed, $delallowed = 0, $modelselected =
'', $allowgenifempty = 1, $forcenomultilang = 0, $iconPDF = 0, $notused = 0, $noform = 0, $param =
'', $title =
'', $buttonlabel =
'', $codelang =
'')
305 $this->numoffiles = 0;
306 print $this->
showdocuments($modulepart, $modulesubdir, $filedir, $urlsource, $genallowed, $delallowed, $modelselected, $allowgenifempty, $forcenomultilang, $iconPDF, $notused, $noform, $param, $title, $buttonlabel, $codelang);
307 return $this->numoffiles;
337 public function showdocuments($modulepart, $modulesubdir, $filedir, $urlsource, $genallowed, $delallowed = 0, $modelselected =
'', $allowgenifempty = 1, $forcenomultilang = 0, $iconPDF = 0, $notused = 0, $noform = 0, $param =
'', $title =
'', $buttonlabel =
'', $codelang =
'', $morepicto =
'', $object =
null, $hideifempty = 0, $removeaction =
'remove_file', $tooltipontemplatecombo =
'')
339 global $dolibarr_main_url_root;
342 if (!empty($iconPDF)) {
343 dol_syslog(__METHOD__.
": passing iconPDF parameter is deprecated", LOG_WARNING);
346 global $langs, $conf, $user, $hookmanager;
350 if (is_object($hookmanager)) {
352 'modulepart'=>&$modulepart,
353 'modulesubdir'=>&$modulesubdir,
354 'filedir'=>&$filedir,
355 'urlsource'=>&$urlsource,
356 'genallowed'=>&$genallowed,
357 'delallowed'=>&$delallowed,
358 'modelselected'=>&$modelselected,
359 'allowgenifempty'=>&$allowgenifempty,
360 'forcenomultilang'=>&$forcenomultilang,
364 'buttonlabel'=>&$buttonlabel,
365 'codelang'=>&$codelang,
366 'morepicto'=>&$morepicto,
367 'hideifempty'=>&$hideifempty,
368 'removeaction'=>&$removeaction
370 $reshook = $hookmanager->executeHooks(
'showDocuments', $parameters, $object);
378 return $hookmanager->resPrint;
381 if (!is_object($form)) {
382 $form =
new Form($this->db);
385 include_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
388 if (!empty($iconPDF)) {
393 if (!preg_match(
'/entity\=[0-9]+/', $param)) {
394 $param .= ($param ?
'&' :
'').
'entity='.(empty($object->entity) ? $conf->entity : $object->entity);
399 if (in_array($modulepart, array(
'contract',
'facture',
'supplier_proposal',
'propal',
'proposal',
'order',
'commande',
'expedition',
'commande_fournisseur',
'expensereport',
'delivery',
'ticket'))) {
400 $printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled)) ?
true :
false;
403 $hookmanager->initHooks(array(
'formfile'));
407 if (!empty($filedir)) {
408 $file_list =
dol_dir_list($filedir,
'files', 0,
'',
'(\.meta|_preview.*.*\.png)$',
'date', SORT_DESC);
410 if ($hideifempty && empty($file_list)) {
415 $forname =
'builddoc';
420 $out .=
"\n".
'<!-- Start show_document -->'.
"\n";
423 if (preg_match(
'/massfilesarea_/', $modulepart)) {
424 $out .=
'<div id="show_files"><br></div>'.
"\n";
425 $title = $langs->trans(
"MassFilesArea").
' <a href="" id="togglemassfilesarea" ref="shown">('.$langs->trans(
"Hide").
')</a>';
426 $title .=
'<script nonce="'.getNonce().
'">
427 jQuery(document).ready(function() {
428 jQuery(\'#togglemassfilesarea\').click(function() {
429 if (jQuery(\'#togglemassfilesarea\').attr(\'ref\') == "shown")
431 jQuery(\'#'.$modulepart.
'_table\').hide();
432 jQuery(\'#togglemassfilesarea\').attr("ref", "hidden");
433 jQuery(\'#togglemassfilesarea\').text("('.
dol_escape_js($langs->trans(
"Show")).
')");
437 jQuery(\'#'.$modulepart.
'_table\').show();
438 jQuery(\'#togglemassfilesarea\').attr("ref","shown");
439 jQuery(\'#togglemassfilesarea\').text("('.
dol_escape_js($langs->trans(
"Hide")).
')");
447 $titletoshow = $langs->trans(
"Documents");
448 if (!empty($title)) {
449 $titletoshow = ($title ==
'none' ?
'' : $title);
452 $submodulepart = $modulepart;
455 $tmp = explode(
':', $modulepart);
456 if (!empty($tmp[1])) {
457 $modulepart = $tmp[0];
458 $submodulepart = $tmp[1];
461 $addcolumforpicto = ($delallowed || $printer || $morepicto);
462 $colspan = (4 + ($addcolumforpicto ? 1 : 0));
467 $modellist = array();
469 if ($modulepart ==
'company') {
471 if (is_array($genallowed)) {
472 $modellist = $genallowed;
474 include_once DOL_DOCUMENT_ROOT.
'/core/modules/societe/modules_societe.class.php';
477 } elseif ($modulepart ==
'propal') {
478 if (is_array($genallowed)) {
479 $modellist = $genallowed;
481 include_once DOL_DOCUMENT_ROOT.
'/core/modules/propale/modules_propale.php';
484 } elseif ($modulepart ==
'supplier_proposal') {
485 if (is_array($genallowed)) {
486 $modellist = $genallowed;
488 include_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_proposal/modules_supplier_proposal.php';
491 } elseif ($modulepart ==
'commande') {
492 if (is_array($genallowed)) {
493 $modellist = $genallowed;
495 include_once DOL_DOCUMENT_ROOT.
'/core/modules/commande/modules_commande.php';
498 } elseif ($modulepart ==
'expedition') {
499 if (is_array($genallowed)) {
500 $modellist = $genallowed;
502 include_once DOL_DOCUMENT_ROOT.
'/core/modules/expedition/modules_expedition.php';
505 } elseif ($modulepart ==
'reception') {
506 if (is_array($genallowed)) {
507 $modellist = $genallowed;
509 include_once DOL_DOCUMENT_ROOT.
'/core/modules/reception/modules_reception.php';
512 } elseif ($modulepart ==
'delivery') {
513 if (is_array($genallowed)) {
514 $modellist = $genallowed;
516 include_once DOL_DOCUMENT_ROOT.
'/core/modules/delivery/modules_delivery.php';
519 } elseif ($modulepart ==
'ficheinter') {
520 if (is_array($genallowed)) {
521 $modellist = $genallowed;
523 include_once DOL_DOCUMENT_ROOT.
'/core/modules/fichinter/modules_fichinter.php';
526 } elseif ($modulepart ==
'facture') {
527 if (is_array($genallowed)) {
528 $modellist = $genallowed;
530 include_once DOL_DOCUMENT_ROOT.
'/core/modules/facture/modules_facture.php';
533 } elseif ($modulepart ==
'contract') {
535 if (is_array($genallowed)) {
536 $modellist = $genallowed;
538 include_once DOL_DOCUMENT_ROOT.
'/core/modules/contract/modules_contract.php';
541 } elseif ($modulepart ==
'project') {
542 if (is_array($genallowed)) {
543 $modellist = $genallowed;
545 include_once DOL_DOCUMENT_ROOT.
'/core/modules/project/modules_project.php';
548 } elseif ($modulepart ==
'project_task') {
549 if (is_array($genallowed)) {
550 $modellist = $genallowed;
552 include_once DOL_DOCUMENT_ROOT.
'/core/modules/project/task/modules_task.php';
555 } elseif ($modulepart ==
'product') {
556 if (is_array($genallowed)) {
557 $modellist = $genallowed;
559 include_once DOL_DOCUMENT_ROOT.
'/core/modules/product/modules_product.class.php';
562 } elseif ($modulepart ==
'product_batch') {
563 if (is_array($genallowed)) {
564 $modellist = $genallowed;
566 include_once DOL_DOCUMENT_ROOT.
'/core/modules/product_batch/modules_product_batch.class.php';
569 } elseif ($modulepart ==
'stock') {
570 if (is_array($genallowed)) {
571 $modellist = $genallowed;
573 include_once DOL_DOCUMENT_ROOT.
'/core/modules/stock/modules_stock.php';
576 } elseif ($modulepart ==
'hrm') {
577 if (is_array($genallowed)) {
578 $modellist = $genallowed;
580 include_once DOL_DOCUMENT_ROOT.
'/core/modules/hrm/modules_evaluation.php';
583 } elseif ($modulepart ==
'movement') {
584 if (is_array($genallowed)) {
585 $modellist = $genallowed;
587 include_once DOL_DOCUMENT_ROOT.
'/core/modules/stock/modules_movement.php';
590 } elseif ($modulepart ==
'export') {
591 if (is_array($genallowed)) {
592 $modellist = $genallowed;
594 include_once DOL_DOCUMENT_ROOT.
'/core/modules/export/modules_export.php';
596 $modellist = array();
598 } elseif ($modulepart ==
'commande_fournisseur' || $modulepart ==
'supplier_order') {
599 if (is_array($genallowed)) {
600 $modellist = $genallowed;
602 include_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_order/modules_commandefournisseur.php';
605 } elseif ($modulepart ==
'facture_fournisseur' || $modulepart ==
'supplier_invoice') {
607 if (is_array($genallowed)) {
608 $modellist = $genallowed;
610 include_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_invoice/modules_facturefournisseur.php';
613 } elseif ($modulepart ==
'supplier_payment') {
614 if (is_array($genallowed)) {
615 $modellist = $genallowed;
617 include_once DOL_DOCUMENT_ROOT.
'/core/modules/supplier_payment/modules_supplier_payment.php';
620 } elseif ($modulepart ==
'remisecheque') {
621 if (is_array($genallowed)) {
622 $modellist = $genallowed;
624 include_once DOL_DOCUMENT_ROOT.
'/core/modules/cheque/modules_chequereceipts.php';
627 } elseif ($modulepart ==
'donation') {
628 if (is_array($genallowed)) {
629 $modellist = $genallowed;
631 include_once DOL_DOCUMENT_ROOT.
'/core/modules/dons/modules_don.php';
634 } elseif ($modulepart ==
'member') {
635 if (is_array($genallowed)) {
636 $modellist = $genallowed;
638 include_once DOL_DOCUMENT_ROOT.
'/core/modules/member/modules_cards.php';
641 } elseif ($modulepart ==
'agenda' || $modulepart ==
'actions') {
642 if (is_array($genallowed)) {
643 $modellist = $genallowed;
645 include_once DOL_DOCUMENT_ROOT.
'/core/modules/action/modules_action.php';
648 } elseif ($modulepart ==
'expensereport') {
649 if (is_array($genallowed)) {
650 $modellist = $genallowed;
652 include_once DOL_DOCUMENT_ROOT.
'/core/modules/expensereport/modules_expensereport.php';
655 } elseif ($modulepart ==
'unpaid') {
657 } elseif ($modulepart ==
'user') {
658 if (is_array($genallowed)) {
659 $modellist = $genallowed;
661 include_once DOL_DOCUMENT_ROOT.
'/core/modules/user/modules_user.class.php';
664 } elseif ($modulepart ==
'usergroup') {
665 if (is_array($genallowed)) {
666 $modellist = $genallowed;
668 include_once DOL_DOCUMENT_ROOT.
'/core/modules/usergroup/modules_usergroup.class.php';
673 $file =
dol_buildpath(
'/core/modules/'.$modulepart.
'/modules_'.strtolower($submodulepart).
'.php', 0);
674 if (file_exists($file)) {
675 $res = include_once $file;
678 $file =
dol_buildpath(
'/'.$modulepart.
'/core/modules/'.$modulepart.
'/modules_'.strtolower($submodulepart).
'.php', 0);
679 $res = include_once $file;
682 $class =
'ModelePDF'.ucfirst($submodulepart);
684 if (class_exists($class)) {
685 $modellist = call_user_func($class.
'::liste_modeles', $this->db);
687 dol_print_error($this->db,
"Bad value for modulepart '".$modulepart.
"' in showdocuments (class ".$class.
" for Doc generation not found)");
695 if (empty($buttonlabel)) {
696 $buttonlabel = $langs->trans(
'Generate');
699 if ($conf->browser->layout ==
'phone') {
700 $urlsource .=
'#'.$forname.
'_form';
702 if (empty($noform)) {
703 $out .=
'<form action="'.$urlsource.
'" id="'.$forname.
'_form" method="post">';
705 $out .=
'<input type="hidden" name="action" value="builddoc">';
706 $out .=
'<input type="hidden" name="page_y" value="">';
707 $out .=
'<input type="hidden" name="token" value="'.newToken().
'">';
710 $out .=
'<div class="div-table-responsive-no-min">';
711 $out .=
'<table class="liste formdoc noborder centpercent">';
713 $out .=
'<tr class="liste_titre">';
714 $addcolumforpicto = ($delallowed || $printer || $morepicto);
715 $colspan = (4 + ($addcolumforpicto ? 1 : 0));
718 $out .=
'<th colspan="'.$colspan.
'" class="formdoc liste_titre maxwidthonsmartphone center">';
721 if (!empty($modellist)) {
723 $out .=
'<span class="hideonsmartphone">'.$langs->trans(
'Model').
' </span>';
724 if (is_array($modellist) && count($modellist) == 1) {
725 $arraykeys = array_keys($modellist);
726 $modelselected = $arraykeys[0];
728 $morecss =
'minwidth75 maxwidth200';
729 if ($conf->browser->layout ==
'phone') {
730 $morecss =
'maxwidth100';
732 $out .= $form->selectarray(
'model', $modellist, $modelselected, $showempty, 0, 0,
'', 0, 0, 0,
'', $morecss, 1,
'', 0, 0);
766 if ($conf->use_javascript_ajax) {
769 $out .= $form->textwithpicto(
'', $tooltipontemplatecombo, 1,
'help',
'marginrightonly', 0, 3,
'', 0);
771 $out .=
'<div class="float">'.$langs->trans(
"Files").
'</div>';
775 if (($allowgenifempty || (is_array($modellist) && count($modellist) > 0)) &&
getDolGlobalInt(
'MAIN_MULTILANGS') && !$forcenomultilang && (!empty($modellist) || $showempty)) {
776 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formadmin.class.php';
778 $defaultlang = ($codelang && $codelang !=
'auto') ? $codelang : $langs->getDefaultLang();
779 $morecss =
'maxwidth150';
780 if ($conf->browser->layout ==
'phone') {
781 $morecss =
'maxwidth100';
783 $out .= $formadmin->select_language($defaultlang,
'lang_id', 0,
null, 0, 0, 0, $morecss);
789 $genbutton =
'<input class="button buttongen reposition nomargintop nomarginbottom" id="'.$forname.
'_generatebutton" name="'.$forname.
'_generatebutton"';
790 $genbutton .=
' type="submit" value="'.$buttonlabel.
'"';
791 if (!$allowgenifempty && !is_array($modellist) && empty($modellist)) {
792 $genbutton .=
' disabled';
795 if ($allowgenifempty && !is_array($modellist) && empty($modellist) && empty($conf->dol_no_mouse_hover) && $modulepart !=
'unpaid') {
796 $langs->load(
"errors");
797 $genbutton .=
' '.img_warning($langs->transnoentitiesnoconv(
"WarningNoDocumentModelActivated"));
799 if (!$allowgenifempty && !is_array($modellist) && empty($modellist) && empty($conf->dol_no_mouse_hover) && $modulepart !=
'unpaid') {
802 if (empty($modellist) && !$showempty && $modulepart !=
'unpaid') {
808 if (!empty($hookmanager->hooks[
'formfile'])) {
809 foreach ($hookmanager->hooks[
'formfile'] as $module) {
810 if (method_exists($module,
'formBuilddocLineOptions')) {
819 $parameters = array(
'colspan'=>($colspan + $colspanmore),
'socid'=>(isset($GLOBALS[
'socid']) ? $GLOBALS[
'socid'] :
''),
'id'=>(isset($GLOBALS[
'id']) ? $GLOBALS[
'id'] :
''),
'modulepart'=>$modulepart);
820 if (is_object($hookmanager)) {
821 $reshook = $hookmanager->executeHooks(
'formBuilddocOptions', $parameters, $GLOBALS[
'object']);
822 $out .= $hookmanager->resPrint;
827 if (!empty($filedir)) {
828 $link_list = array();
829 if (is_object($object)) {
830 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
831 $link =
new Link($this->db);
832 $sortfield = $sortorder =
null;
833 $res = $link->fetchAll($link_list, $object->element, $object->id, $sortfield, $sortorder);
836 $out .=
'<!-- html.formfile::showdocuments -->'.
"\n";
839 if ((!empty($file_list) || !empty($link_list) || preg_match(
'/^massfilesarea/', $modulepart))
842 $out .=
'<div class="titre">'.$titletoshow.
'</div>'.
"\n";
843 $out .=
'<div class="div-table-responsive-no-min">';
844 $out .=
'<table class="noborder centpercent" id="'.$modulepart.
'_table">'.
"\n";
848 if (is_array($file_list)) {
852 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $filedir);
853 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
861 if (!empty($sortfield) && !empty($sortorder)) {
866 foreach ($file_list as $file) {
868 $relativepath = $file[
"name"];
870 $relativepath = $modulesubdir.
"/".$file[
"name"];
872 if ($modulepart ==
'export') {
873 $relativepath = $file[
"name"];
876 $out .=
'<tr class="oddeven">';
878 $documenturl = DOL_URL_ROOT.
'/document.php';
879 if (isset($conf->global->DOL_URL_ROOT_DOCUMENT_PHP)) {
880 $documenturl = $conf->global->DOL_URL_ROOT_DOCUMENT_PHP;
884 $imgpreview = $this->
showPreview($file, $modulepart, $relativepath, 0, $param);
886 $out .=
'<td class="minwidth200 tdoverflowmax300">';
888 $out .=
'<span class="spanoverflow widthcentpercentminusx valignmiddle">';
890 $out .=
'<span class="spanoverflow">';
892 $out .=
'<a class="documentdownload paddingright" href="'.$documenturl.
'?modulepart='.$modulepart.
'&file='.urlencode($relativepath).($param ?
'&'.$param :
'').
'"';
895 if (preg_match(
'/text/', $mime)) {
896 $out .=
' target="_blank" rel="noopener noreferrer"';
898 $out .=
' title="'.dol_escape_htmltag($file[
"name"]).
'"';
900 $out .=
img_mime($file[
"name"], $langs->trans(
"File").
': '.$file[
"name"]);
903 $out .=
'</span>'.
"\n";
908 $size = (!empty($file[
'size']) ? $file[
'size'] :
dol_filesize($filedir.
"/".$file[
"name"]));
909 $out .=
'<td class="nowraponall right" title="'.dolPrintHTML($size.
' '.$langs->trans(
"Bytes")).
'">'.
dol_print_size($size, 1, 1).
'</td>';
912 $date = (!empty($file[
'date']) ? $file[
'date'] :
dol_filemtime($filedir.
"/".$file[
"name"]));
913 $out .=
'<td class="nowrap right">'.dol_print_date($date,
'dayhour',
'tzuser').
'</td>';
916 $out .=
'<td class="nowraponall">';
917 if (!empty($file[
'share'])) {
919 $urlwithouturlroot = preg_replace(
'/'.preg_quote(DOL_URL_ROOT,
'/').
'$/i',
'', trim($dolibarr_main_url_root));
920 $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
926 if (!empty($file[
'share'])) {
927 $paramlink .= ($paramlink ?
'&' :
'').
'hashp='.$file[
'share'];
929 if ($forcedownload) {
930 $paramlink .= ($paramlink ?
'&' :
'').
'attachment=1';
933 $fulllink = $urlwithroot.
'/document.php'.($paramlink ?
'?'.$paramlink :
'');
935 $out .=
'<a href="'.$fulllink.
'" target="_blank" rel="noopener">'.
img_picto($langs->trans(
"FileSharedViaALink"),
'globe').
'</a> ';
936 $out .=
'<input type="text" class="quatrevingtpercentminusx width75 nopadding small" id="downloadlink'.$file[
'rowid'].
'" name="downloadexternallink" title="'.
dol_escape_htmltag($langs->trans(
"FileSharedViaALink")).
'" value="'.
dol_escape_htmltag($fulllink).
'">';
944 if ($delallowed || $printer || $morepicto) {
945 $out .=
'<td class="right nowraponall">';
947 $tmpurlsource = preg_replace(
'/#[a-zA-Z0-9_]*$/',
'', $urlsource);
948 $out .=
'<a class="reposition" href="'.$tmpurlsource.((strpos($tmpurlsource,
'?') ===
false) ?
'?' :
'&').
'action='.urlencode($removeaction).
'&token='.newToken().
'&file='.urlencode($relativepath);
949 $out .= ($param ?
'&'.$param :
'');
952 $out .=
'">'.img_picto($langs->trans(
"Delete"),
'delete').
'</a>';
955 $out .=
'<a class="marginleftonly reposition" href="'.$urlsource.(strpos($urlsource,
'?') ?
'&' :
'?').
'action=print_file&token='.newToken().
'&printer='.urlencode($modulepart).
'&file='.urlencode($relativepath);
956 $out .= ($param ?
'&'.$param :
'');
957 $out .=
'">'.img_picto($langs->trans(
"PrintFile", $relativepath),
'printer.png').
'</a>';
960 $morepicto = preg_replace(
'/__FILENAMEURLENCODED__/', urlencode($relativepath), $morepicto);
966 if (is_object($hookmanager)) {
967 $addcolumforpicto = ($delallowed || $printer || $morepicto);
968 $colspan = (4 + ($addcolumforpicto ? 1 : 0));
970 $parameters = array(
'colspan'=>($colspan + $colspanmore),
'socid'=>(isset($GLOBALS[
'socid']) ? $GLOBALS[
'socid'] :
''),
'id'=>(isset($GLOBALS[
'id']) ? $GLOBALS[
'id'] :
''),
'modulepart'=>$modulepart,
'relativepath'=>$relativepath);
971 $res = $hookmanager->executeHooks(
'formBuilddocLineOptions', $parameters, $file);
973 $out .= $hookmanager->resPrint;
976 $out = $hookmanager->resPrint;
984 if (is_array($link_list)) {
987 foreach ($link_list as $file) {
988 $out .=
'<tr class="oddeven">';
989 $out .=
'<td colspan="'.$colspan.
'" class="maxwidhtonsmartphone">';
990 $out .=
'<a data-ajax="false" href="'.$file->url.
'" target="_blank" rel="noopener noreferrer">';
991 $out .= $file->label;
994 $out .=
'<td class="right">';
999 if ($delallowed || $printer || $morepicto) {
1000 $out .=
'<td></td>';
1002 $out .=
'</tr>'.
"\n";
1004 $this->numoffiles++;
1007 if (count($file_list) == 0 && count($link_list) == 0 && $headershown) {
1008 $out .=
'<tr><td colspan="'.(3 + ($addcolumforpicto ? 1 : 0)).
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>'.
"\n";
1014 $out .=
"</table>\n";
1017 if (empty($noform)) {
1018 $out .=
'</form>'.
"\n";
1022 $out .=
'<!-- End show_document -->'.
"\n";
1025 jQuery(document).ready(function() {
1026 var selectedValue = $(".selectformat").val();
1028 if (selectedValue === "excel2007" || selectedValue === "tsv") {
1029 $(".forhide").prop("disabled", true).hide();
1031 $(".forhide").prop("disabled", false).show();
1052 public function getDocumentsLink($modulepart, $modulesubdir, $filedir, $filter =
'', $morecss =
'valignmiddle', $allfiles = 0)
1054 global $conf, $langs;
1056 include_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
1059 $this->infofiles = array(
'nboffiles'=>0,
'extensions'=>array(),
'files'=>array());
1064 if (isModEnabled(
'multicompany')) {
1066 preg_match(
'/\/([0-9]+)\/[^\/]+\/'.preg_quote($modulesubdir,
'/').
'$/', $filedir, $regs);
1067 $entity = ((!empty($regs[1]) && $regs[1] > 1) ? $regs[1] : 1);
1072 $filterforfilesearch =
'^'.preg_quote(basename($modulesubdir),
'/');
1074 $filterforfilesearch =
'^'.preg_quote(basename($modulesubdir),
'/').
'\.';
1076 $file_list =
dol_dir_list($filedir,
'files', 0, $filterforfilesearch,
'\.meta$|\.png$');
1080 $out .=
'<!-- html.formfile::getDocumentsLink -->'.
"\n";
1081 if (!empty($file_list)) {
1082 $out =
'<dl class="dropdown inline-block">
1083 <dt><a data-ajax="false" href="#" onClick="return false;">'.img_picto(
'',
'listlight',
'', 0, 0, 0,
'', $morecss).
'</a></dt>
1084 <dd><div class="multichoicedoc" style="position:absolute;left:100px;" ><ul class="ulselectedfields">';
1090 foreach ($file_list as $file) {
1092 if ($filter && !preg_match(
'/'.$filter.
'/i', $file[
"name"])) {
1098 $relativepath = $file[
"name"];
1099 if ($modulesubdir) {
1100 $relativepath = $modulesubdir.
"/".$file[
"name"];
1103 if ($modulepart ==
'donation') {
1104 $relativepath =
get_exdir($modulesubdir, 2, 0, 0,
null,
'donation').$file[
"name"];
1106 if ($modulepart ==
'export') {
1107 $relativepath = $file[
"name"];
1110 $this->infofiles[
'nboffiles']++;
1111 $this->infofiles[
'files'][] = $file[
'fullname'];
1112 $ext = pathinfo($file[
"name"], PATHINFO_EXTENSION);
1113 if (empty($this->infofiles[$ext])) {
1114 $this->infofiles[
'extensions'][$ext] = 1;
1116 $this->infofiles[
'extensions'][$ext]++;
1120 if (!empty($conf->use_javascript_ajax) && ($conf->browser->layout !=
'phone')) {
1122 if ($tmparray && $tmparray[
'url']) {
1123 $tmpout .=
'<li><a href="'.$tmparray[
'url'].
'"'.($tmparray[
'css'] ?
' class="'.$tmparray[
'css'].
'"' :
'').($tmparray[
'mime'] ?
' mime="'.$tmparray[
'mime'].
'"' :
'').($tmparray[
'target'] ?
' target="'.$tmparray[
'target'].
'"' :
'').
'>';
1125 $tmpout .=
'<i class="fa fa-search-plus paddingright" style="color: gray"></i>';
1126 $tmpout .= $langs->trans(
"Preview").
' '.$ext.
'</a></li>';
1131 $tmpout .=
'<li class="nowrap"><a class="pictopreview nowrap" href="'.DOL_URL_ROOT.
'/document.php?modulepart='.$modulepart.
'&entity='.$entity.
'&file='.urlencode($relativepath).
'"';
1133 if (preg_match(
'/text/', $mime)) {
1134 $tmpout .=
' target="_blank" rel="noopener noreferrer"';
1137 $tmpout .=
img_mime($relativepath, $file[
"name"]);
1138 $tmpout .= $langs->trans(
"Download").
' '.$ext;
1139 $tmpout .=
'</a></li>'.
"\n";
1142 $out .=
'</ul></div></dd>
1191 public function list_of_documents($filearray, $object, $modulepart, $param =
'', $forcedownload = 0, $relativepath =
'', $permonobject = 1, $useinecm = 0, $textifempty =
'', $maxlength = 0, $title =
'', $url =
'', $showrelpart = 0, $permtoeditline = -1, $upload_dir =
'', $sortfield =
'', $sortorder =
'ASC', $disablemove = 1, $addfilterfields = 0, $disablecrop = -1, $moreattrondiv =
'')
1194 global $user, $conf, $langs, $hookmanager, $form;
1195 global $sortfield, $sortorder, $maxheightmini;
1196 global $dolibarr_main_url_root;
1198 if ($disablecrop == -1) {
1201 if (in_array($modulepart, array(
'bank',
'bom',
'expensereport',
'facture',
'facture_fournisseur',
'holiday',
'medias',
'member',
'mrp',
'project',
'product',
'produit',
'propal',
'service',
'societe',
'tax',
'tax-vat',
'ticket',
'user'))) {
1207 if (empty($relativepath)) {
1209 if (!empty($object->element) && $object->element ==
'invoice_supplier') {
1210 $relativepath =
get_exdir($object->id, 2, 0, 0, $object,
'invoice_supplier').$relativepath;
1212 if (!empty($object->element) && $object->element ==
'project_task') {
1213 $relativepath =
'Call_not_supported_._Call_function_using_a_defined_relative_path_.';
1217 if (
getDolGlobalInt(
'PRODUCT_USE_OLD_PATH_FOR_PHOTO') && isset($filearray[0]) && $filearray[0][
'level1name'] ==
'photos') {
1218 $relativepath = preg_replace(
'/^.*\/produit\//',
'', $filearray[0][
'path']).
'/';
1224 $relativedir = preg_replace(
'/^'.preg_quote(DOL_DATA_ROOT,
'/').
'/',
'', $upload_dir);
1225 $relativedir = preg_replace(
'/^[\\/]/',
'', $relativedir);
1230 $hookmanager->initHooks(array(
'formfile'));
1231 $parameters = array(
1232 'filearray' => $filearray,
1233 'modulepart'=> $modulepart,
1235 'forcedownload' => $forcedownload,
1236 'relativepath' => $relativepath,
1237 'relativedir' => $relativedir,
1238 'permtodelete' => $permonobject,
1239 'useinecm' => $useinecm,
1240 'textifempty' => $textifempty,
1241 'maxlength' => $maxlength,
1245 $reshook = $hookmanager->executeHooks(
'showFilesList', $parameters, $object);
1247 if (!empty($reshook)) {
1250 if (!is_object($form)) {
1251 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.form.class.php';
1252 $form =
new Form($this->db);
1255 if (!preg_match(
'/&id=/', $param) && isset($object->id)) {
1256 $param .=
'&id='.$object->id;
1258 $relativepathwihtoutslashend = preg_replace(
'/\/$/',
'', $relativepath);
1259 if ($relativepathwihtoutslashend) {
1260 $param .=
'&file='.urlencode($relativepathwihtoutslashend);
1263 if ($permtoeditline < 0) {
1264 $permtoeditline = 0;
1265 if (in_array($modulepart, array(
'product',
'produit',
'service'))) {
1267 $permtoeditline = 1;
1270 $permtoeditline = 1;
1275 $permtoeditline = 0;
1280 if ((empty($useinecm) || $useinecm == 6) && $title !=
'none') {
1281 print
load_fiche_titre($title ? $title : $langs->trans(
"AttachedFiles"),
'',
'file-upload', 0,
'',
'table-list-of-attached-files');
1284 $url = $_SERVER[
"PHP_SELF"];
1287 print
'<!-- html.formfile::list_of_documents -->'.
"\n";
1288 if (
GETPOST(
'action',
'aZ09') ==
'editfile' && $permtoeditline) {
1289 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?'.$param.
'" method="POST">';
1290 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1291 print
'<input type="hidden" name="action" value="renamefile">';
1292 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
1293 print
'<input type="hidden" name="modulepart" value="'.$modulepart.
'">';
1296 print
'<div class="div-table-responsive-no-min"'.($moreattrondiv ?
' '.$moreattrondiv :
'').
'>';
1297 print
'<table id="tablelines" class="centpercent liste noborder nobottom">'.
"\n";
1299 if (!empty($addfilterfields)) {
1300 print
'<tr class="liste_titre nodrag nodrop">';
1301 print
'<td><input type="search_doc_ref" value="'.dol_escape_htmltag(
GETPOST(
'search_doc_ref',
'alpha')).
'"></td>';
1304 if (empty($useinecm) || $useinecm == 4 || $useinecm == 5 || $useinecm == 6) {
1309 if (empty($disablemove) && count($filearray) > 1) {
1320 if ($sortfield && $sortorder) {
1325 print
'<tr class="liste_titre nodrag nodrop">';
1330 if (empty($useinecm) || $useinecm == 4 || $useinecm == 5 || $useinecm == 6) {
1337 if (empty($disablemove) && count($filearray) > 1) {
1342 $nboffiles = count($filearray);
1343 if ($nboffiles > 0) {
1344 include_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
1350 foreach ($filearray as $key => $file) {
1351 if ($file[
'name'] !=
'.'
1352 && $file[
'name'] !=
'..'
1353 && !preg_match(
'/\.meta$/i', $file[
'name'])) {
1354 if (array_key_exists(
'rowid', $filearray[$key]) && $filearray[$key][
'rowid'] > 0) {
1355 $lastrowid = $filearray[$key][
'rowid'];
1357 $filepath = $relativepath.$file[
'name'];
1361 print
'<!-- Line list_of_documents '.$key.
' relativepath = '.$relativepath.
' -->'.
"\n";
1364 print
'<!-- In database: position='.(array_key_exists(
'position', $filearray[$key]) ? $filearray[$key][
'position'] : 0).
' -->'.
"\n";
1365 print
'<tr class="oddeven" id="row-'.((array_key_exists(
'rowid', $filearray[$key]) && $filearray[$key][
'rowid'] > 0) ? $filearray[$key][
'rowid'] :
'AFTER'.$lastrowid.
'POS'.($i + 1)).
'">';
1369 print
'<td class="minwith200 tdoverflowmax500">';
1373 print
'<a class="paddingright valignmiddle" href="'.DOL_URL_ROOT.
'/document.php?modulepart='.$modulepart;
1374 if ($forcedownload) {
1375 print
'&attachment=1';
1377 if (!empty($object->entity)) {
1378 print
'&entity='.$object->entity;
1380 print
'&file='.urlencode($filepath);
1382 print
img_mime($file[
'name'], $file[
'name'].
' ('.
dol_print_size($file[
'size'], 0, 0).
')',
'inline-block valignmiddle paddingright');
1383 if ($showrelpart == 1) {
1384 print $relativepath;
1387 if (
GETPOST(
'action',
'aZ09') ==
'editfile' && $file[
'name'] == basename(
GETPOST(
'urlfile',
'alpha'))) {
1389 $section_dir = dirname(
GETPOST(
'urlfile',
'alpha'));
1390 if (!preg_match(
'/\/$/', $section_dir)) {
1391 $section_dir .=
'/';
1393 print
'<input type="hidden" name="section_dir" value="'.$section_dir.
'">';
1394 print
'<input type="hidden" name="renamefilefrom" value="'.dol_escape_htmltag($file[
'name']).
'">';
1395 print
'<input type="text" name="renamefileto" class="quatrevingtpercent" value="'.dol_escape_htmltag($file[
'name']).
'">';
1398 $filenametoshow = preg_replace(
'/\.noexe$/',
'', $file[
'name']);
1404 print $this->
showPreview($file, $modulepart, $filepath, 0,
'&entity='.(empty($object->entity) ? $conf->entity : $object->entity));
1412 print
'<td class="right nowraponall">';
1413 if ($sizetoshow == $sizetoshowbytes) {
1416 print $form->textwithpicto($sizetoshow, $sizetoshowbytes, -1);
1421 print
'<td class="center nowraponall">'.dol_print_date($file[
'date'],
"dayhour",
"tzuser").
'</td>';
1424 if (empty($useinecm) || $useinecm == 4 || $useinecm == 5 || $useinecm == 6) {
1425 $fileinfo = pathinfo($file[
'name']);
1426 print
'<td class="center">';
1428 if ($useinecm == 5 || $useinecm == 6) {
1438 $urlforhref =
getAdvancedPreviewUrl($modulepart, $relativepath.$fileinfo[
'filename'].
'.'.strtolower($fileinfo[
'extension']), 1,
'&entity='.(empty($object->entity) ? $conf->entity : $object->entity));
1439 if (empty($urlforhref)) {
1440 $urlforhref = DOL_URL_ROOT.
'/viewimage.php?modulepart='.$modulepart.
'&entity='.(empty($object->entity) ? $conf->entity : $object->entity).
'&file='.urlencode($relativepath.$fileinfo[
'filename'].
'.'.strtolower($fileinfo[
'extension']));
1441 print
'<a href="'.$urlforhref.
'" class="aphoto" target="_blank" rel="noopener noreferrer">';
1443 print
'<a href="'.$urlforhref[
'url'].
'" class="'.$urlforhref[
'css'].
'" target="'.$urlforhref[
'target'].
'" mime="'.$urlforhref[
'mime'].
'">';
1445 print
'<img class="photo maxwidth200 shadow valignmiddle" height="'.(($useinecm == 4 || $useinecm == 5 || $useinecm == 6) ?
'20' : $maxheightmini).
'" src="'.DOL_URL_ROOT.
'/viewimage.php?modulepart='.$modulepart.
'&entity='.(empty($object->entity) ? $conf->entity : $object->entity).
'&file='.urlencode($relativepath.$smallfile).
'" title="">';
1454 print
'<td class="center">';
1455 if ($relativedir && $filearray[$key][
'rowid'] > 0) {
1457 print
'<label for="idshareenabled'.$key.
'">'.$langs->trans(
"FileSharedViaALink").
'</label> ';
1458 print
'<input class="inline-block" type="checkbox" id="idshareenabled'.$key.
'" name="shareenabled"'.($file[
'share'] ?
' checked="checked"' :
'').
' /> ';
1460 if ($file[
'share']) {
1462 $urlwithouturlroot = preg_replace(
'/'.preg_quote(DOL_URL_ROOT,
'/').
'$/i',
'', trim($dolibarr_main_url_root));
1463 $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
1469 if (!empty($file[
'share'])) {
1470 $paramlink .= ($paramlink ?
'&' :
'').
'hashp='.$file[
'share'];
1472 if ($forcedownload) {
1473 $paramlink .= ($paramlink ?
'&' :
'').
'attachment=1';
1476 $fulllink = $urlwithroot.
'/document.php'.($paramlink ?
'?'.$paramlink :
'');
1478 print
'<a href="'.$fulllink.
'" target="_blank" rel="noopener">'.
img_picto($langs->trans(
"FileSharedViaALink"),
'globe').
'</a> ';
1479 print
'<input type="text" class="quatrevingtpercent minwidth200imp nopadding small" id="downloadlink'.$filearray[$key][
'rowid'].
'" name="downloadexternallink" title="'.
dol_escape_htmltag($langs->trans(
"FileSharedViaALink")).
'" value="'.
dol_escape_htmltag($fulllink).
'">';
1491 print
'<td class="valignmiddle right actionbuttons nowraponall"><!-- action on files -->';
1492 if ($useinecm == 1 || $useinecm == 5) {
1494 $newparam = preg_replace(
'/&file=.*$/',
'', $param);
1495 $backtopage = DOL_URL_ROOT.
'/ecm/index.php?§ion_dir='.urlencode($relativepath).$newparam;
1496 print
'<a class="editfielda editfilelink" href="'.DOL_URL_ROOT.
'/ecm/file_card.php?urlfile='.urlencode($file[
'name']).$param.
'&backtopage='.urlencode($backtopage).
'" rel="'.urlencode($file[
'name']).
'">'.
img_edit(
'default', 0,
'class="paddingrightonly"').
'</a>';
1499 if (empty($useinecm) || $useinecm == 2 || $useinecm == 6) {
1500 $newmodulepart = $modulepart;
1501 if (in_array($modulepart, array(
'product',
'produit',
'service'))) {
1502 $newmodulepart =
'produit|service';
1505 if ($permtoeditline) {
1506 $moreparaminurl =
'';
1507 if (!empty($object->id) && $object->id > 0) {
1508 $moreparaminurl .=
'&id='.$object->id;
1509 } elseif (
GETPOST(
'website',
'alpha')) {
1510 $moreparaminurl .=
'&website='.GETPOST(
'website',
'alpha');
1513 if ($modulepart ==
'medias' && !
GETPOST(
'website')) {
1514 $moreparaminurl .=
'&backtourl='.urlencode(DOL_URL_ROOT.
'/ecm/index_medias.php?file_manager=1&modulepart='.$modulepart.
'§ion_dir='.$relativepath);
1517 if (!preg_match(
'/\.webp$/i', $file[
'name'])) {
1518 if ($modulepart ==
'medias' && !
GETPOST(
'website')) {
1519 print
'<a href="'.DOL_URL_ROOT.
'/ecm/index_medias.php?action=confirmconvertimgwebp&token='.newToken().
'§ion_dir='.urlencode($relativepath).
'&filetoregenerate='.urlencode($fileinfo[
'basename']).
'&module='.$modulepart.$param.$moreparaminurl.
'" title="'.
dol_escape_htmltag($langs->trans(
"GenerateChosenImgWebp")).
'">'.
img_picto(
'',
'images',
'class="flip marginrightonly"').
'</a>';
1520 } elseif ($modulepart ==
'medias' &&
GETPOST(
'website')) {
1521 print
'<a href="'.DOL_URL_ROOT.
'/website/index.php?action=confirmconvertimgwebp&token='.newToken().
'§ion_dir='.urlencode($relativepath).
'&filetoregenerate='.urlencode($fileinfo[
'basename']).
'&module='.$modulepart.$param.$moreparaminurl.
'" title="'.
dol_escape_htmltag($langs->trans(
"GenerateChosenImgWebp")).
'">'.
img_picto(
'',
'images',
'class="flip marginrightonly"').
'</a>';
1527 if ($permtoeditline) {
1529 $moreparaminurl =
'';
1530 if (!empty($object->id) && $object->id > 0) {
1531 $moreparaminurl .=
'&id='.$object->id;
1532 } elseif (
GETPOST(
'website',
'alpha')) {
1533 $moreparaminurl .=
'&website='.GETPOST(
'website',
'alpha');
1536 if ($modulepart ==
'medias' && !
GETPOST(
'website')) {
1537 $moreparaminurl .=
'&backtourl='.urlencode(DOL_URL_ROOT.
'/ecm/index_medias.php?file_manager=1&modulepart='.$modulepart.
'§ion_dir='.$relativepath);
1540 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/core/photos_resize.php?modulepart='.urlencode($newmodulepart).$moreparaminurl.
'&file='.urlencode($relativepath.$fileinfo[
'filename'].
'.'.strtolower($fileinfo[
'extension'])).
'" title="'.
dol_escape_htmltag($langs->trans(
"ResizeOrCrop")).
'">'.
img_picto($langs->trans(
"ResizeOrCrop"),
'resize',
'class="paddingrightonly"').
'</a>';
1544 if ($permtoeditline) {
1545 $paramsectiondir = (in_array($modulepart, array(
'medias',
'ecm')) ?
'§ion_dir='.urlencode($relativepath) :
'');
1546 print
'<a class="editfielda reposition editfilelink" href="'.(($useinecm == 1 || $useinecm == 5) ?
'#' : ($url.
'?action=editfile&token='.newToken().
'&urlfile='.urlencode($filepath).$paramsectiondir.$param)).
'" rel="'.$filepath.
'">'.
img_edit(
'default', 0,
'class="paddingrightonly"').
'</a>';
1550 if ($permonobject) {
1552 if (!empty($conf->dol_use_jmobile)) {
1555 if (empty($conf->use_javascript_ajax)) {
1561 print
'<a href="'.((($useinecm && $useinecm != 6) && $useajax) ?
'#' : ($url.
'?action=deletefile&token='.newToken().
'&urlfile='.urlencode($filepath).$param)).
'" class="reposition deletefilelink" rel="'.$filepath.
'">'.
img_delete().
'</a>';
1565 if (empty($disablemove) && count($filearray) > 1) {
1566 if ($nboffiles > 1 && $conf->browser->layout !=
'phone') {
1567 print
'<td class="linecolmove tdlineupdown center">';
1569 print
'<a class="lineupdown" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=up&rowid='.$object->id.
'">'.
img_up(
'default', 0,
'imgupforline').
'</a>';
1571 if ($i < ($nboffiles - 1)) {
1572 print
'<a class="lineupdown" href="'.$_SERVER[
"PHP_SELF"].
'?id='.$object->id.
'&action=down&rowid='.$object->id.
'">'.
img_down(
'default', 0,
'imgdownforline').
'</a>';
1576 print
'<td'.(($conf->browser->layout !=
'phone') ?
' class="linecolmove tdlineupdown center"' :
' class="linecolmove center"').
'>';
1581 print
'<td class="right">';
1582 print
'<input type="hidden" name="ecmfileid" value="'.$filearray[$key][
'rowid'].
'">';
1583 print
'<input type="submit" class="button button-save smallpaddingimp" name="renamefilesave" value="'.dol_escape_htmltag($langs->trans(
"Save")).
'">';
1584 print
'<input type="submit" class="button button-cancel smallpaddingimp" name="cancel" value="'.dol_escape_htmltag($langs->trans(
"Cancel")).
'">';
1586 if (empty($disablemove) && count($filearray) > 1) {
1587 print
'<td class="right"></td>';
1595 if ($nboffiles == 0) {
1597 if (empty($disablemove) && count($filearray) > 1) {
1600 print
'<tr class="oddeven"><td colspan="'.$colspan.
'">';
1601 if (empty($textifempty)) {
1602 print
'<span class="opacitymedium">'.$langs->trans(
"NoFileFound").
'</span>';
1604 print
'<span class="opacitymedium">'.$textifempty.
'</span>';
1612 if ($nboflines > 1 && is_object($object)) {
1613 if (!empty($conf->use_javascript_ajax) && $permtoeditline) {
1614 $table_element_line =
'ecm_files';
1615 include DOL_DOCUMENT_ROOT.
'/core/tpl/ajaxrow.tpl.php';
1621 if (
GETPOST(
'action',
'aZ09') ==
'editfile' && $permtoeditline) {
1649 public function list_of_autoecmfiles($upload_dir, $filearray, $modulepart, $param, $forcedownload = 0, $relativepath =
'', $permissiontodelete = 1, $useinecm = 0, $textifempty =
'', $maxlength = 0, $url =
'', $addfilterfields = 0)
1652 global $conf, $langs, $hookmanager, $form;
1653 global $sortfield, $sortorder;
1654 global $search_doc_ref;
1655 global $dolibarr_main_url_root;
1657 dol_syslog(get_class($this).
'::list_of_autoecmfiles upload_dir='.$upload_dir.
' modulepart='.$modulepart);
1660 if (empty($useinecm) || $useinecm == 6) {
1664 $url = $_SERVER[
"PHP_SELF"];
1667 if (!empty($addfilterfields)) {
1668 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'">';
1669 print
'<input type="hidden" name="token" value="'.newToken().
'">';
1670 print
'<input type="hidden" name="module" value="'.$modulepart.
'">';
1673 print
'<div class="div-table-responsive-no-min">';
1674 print
'<table width="100%" class="noborder">'.
"\n";
1676 if (!empty($addfilterfields)) {
1677 print
'<tr class="liste_titre nodrag nodrop">';
1678 print
'<td class="liste_titre"></td>';
1679 print
'<td class="liste_titre"><input type="text" class="maxwidth100onsmartphone" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
1680 print
'<td class="liste_titre"></td>';
1681 print
'<td class="liste_titre"></td>';
1683 print
'<td class="liste_titre right">';
1684 $searchpicto = $form->showFilterButtons();
1690 print
'<tr class="liste_titre">';
1691 $sortref =
"fullname";
1692 if ($modulepart ==
'invoice_supplier') {
1693 $sortref =
'level1name';
1703 $object_instance =
null;
1704 if ($modulepart ==
'company') {
1705 include_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
1706 $object_instance =
new Societe($this->db);
1707 } elseif ($modulepart ==
'invoice') {
1708 include_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1709 $object_instance =
new Facture($this->db);
1710 } elseif ($modulepart ==
'invoice_supplier') {
1711 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1713 } elseif ($modulepart ==
'propal') {
1714 include_once DOL_DOCUMENT_ROOT.
'/comm/propal/class/propal.class.php';
1715 $object_instance =
new Propal($this->db);
1716 } elseif ($modulepart ==
'supplier_proposal') {
1717 include_once DOL_DOCUMENT_ROOT.
'/supplier_proposal/class/supplier_proposal.class.php';
1719 } elseif ($modulepart ==
'order') {
1720 include_once DOL_DOCUMENT_ROOT.
'/commande/class/commande.class.php';
1721 $object_instance =
new Commande($this->db);
1722 } elseif ($modulepart ==
'order_supplier') {
1723 include_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.commande.class.php';
1725 } elseif ($modulepart ==
'contract') {
1726 include_once DOL_DOCUMENT_ROOT.
'/contrat/class/contrat.class.php';
1727 $object_instance =
new Contrat($this->db);
1728 } elseif ($modulepart ==
'product') {
1729 include_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
1730 $object_instance =
new Product($this->db);
1731 } elseif ($modulepart ==
'tax') {
1732 include_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
1734 } elseif ($modulepart ==
'tax-vat') {
1735 include_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
1736 $object_instance =
new Tva($this->db);
1737 } elseif ($modulepart ==
'salaries') {
1738 include_once DOL_DOCUMENT_ROOT.
'/salaries/class/salary.class.php';
1739 $object_instance =
new Salary($this->db);
1740 } elseif ($modulepart ==
'project') {
1741 include_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
1742 $object_instance =
new Project($this->db);
1743 } elseif ($modulepart ==
'project_task') {
1744 include_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
1745 $object_instance =
new Task($this->db);
1746 } elseif ($modulepart ==
'fichinter') {
1747 include_once DOL_DOCUMENT_ROOT.
'/fichinter/class/fichinter.class.php';
1748 $object_instance =
new Fichinter($this->db);
1749 } elseif ($modulepart ==
'user') {
1750 include_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
1751 $object_instance =
new User($this->db);
1752 } elseif ($modulepart ==
'expensereport') {
1753 include_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1755 } elseif ($modulepart ==
'holiday') {
1756 include_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
1757 $object_instance =
new Holiday($this->db);
1758 } elseif ($modulepart ==
'recruitment-recruitmentcandidature') {
1759 include_once DOL_DOCUMENT_ROOT.
'/recruitment/class/recruitmentcandidature.class.php';
1761 } elseif ($modulepart ==
'banque') {
1762 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1763 $object_instance =
new Account($this->db);
1764 } elseif ($modulepart ==
'chequereceipt') {
1765 include_once DOL_DOCUMENT_ROOT.
'/compta/paiement/cheque/class/remisecheque.class.php';
1767 } elseif ($modulepart ==
'mrp-mo') {
1768 include_once DOL_DOCUMENT_ROOT.
'/mrp/class/mo.class.php';
1769 $object_instance =
new Mo($this->db);
1771 $parameters = array(
'modulepart'=>$modulepart);
1772 $reshook = $hookmanager->executeHooks(
'addSectionECMAuto', $parameters);
1773 if ($reshook > 0 && is_array($hookmanager->resArray) && count($hookmanager->resArray) > 0) {
1774 if (array_key_exists(
'classpath', $hookmanager->resArray) && !empty($hookmanager->resArray[
'classpath'])) {
1776 if (array_key_exists(
'classname', $hookmanager->resArray) && !empty($hookmanager->resArray[
'classname'])) {
1777 if (class_exists($hookmanager->resArray[
'classname'])) {
1778 $tmpclassname = $hookmanager->resArray[
'classname'];
1779 $object_instance =
new $tmpclassname($this->db);
1790 $relativepathfromroot = preg_replace(
'/'.preg_quote(DOL_DATA_ROOT.
'/',
'/').
'/',
'', $upload_dir);
1791 if ($relativepathfromroot) {
1795 if ($sortfield && $sortorder) {
1796 $filearray =
dol_sort_array($filearray, $sortfield, $sortorder, 1);
1802 foreach ($filearray as $key => $file) {
1803 if (!is_dir($file[
'name'])
1804 && $file[
'name'] !=
'.'
1805 && $file[
'name'] !=
'..'
1806 && $file[
'name'] !=
'CVS'
1807 && !preg_match(
'/\.meta$/i', $file[
'name'])) {
1809 $relativefile = preg_replace(
'/'.preg_quote($upload_dir.
'/',
'/').
'/',
'', $file[
'fullname']);
1817 if ($modulepart ==
'company' || $modulepart ==
'tax' || $modulepart ==
'tax-vat' || $modulepart ==
'salaries') {
1818 preg_match(
'/(\d+)\/[^\/]+$/', $relativefile, $reg);
1819 $id = (isset($reg[1]) ? $reg[1] :
'');
1820 } elseif ($modulepart ==
'invoice_supplier') {
1821 preg_match(
'/([^\/]+)\/[^\/]+$/', $relativefile, $reg);
1822 $ref = (isset($reg[1]) ? $reg[1] :
'');
1823 if (is_numeric($ref)) {
1827 } elseif ($modulepart ==
'user') {
1829 preg_match(
'/(.*)\/[^\/]+$/', $relativefile, $reg);
1830 $id = (isset($reg[1]) ? $reg[1] :
'');
1831 } elseif ($modulepart ==
'project_task') {
1833 $reg = explode(
"/", $relativefile);
1834 $ref = (isset($reg[1]) ? $reg[1] :
'');
1835 } elseif (in_array($modulepart, array(
1838 'supplier_proposal',
1847 'recruitment-recruitmentcandidature',
1852 preg_match(
'/(.*)\/[^\/]+$/', $relativefile, $reg);
1853 $ref = (isset($reg[1]) ? $reg[1] :
'');
1855 $parameters = array(
'modulepart'=>$modulepart,
'fileinfo'=>$file);
1856 $reshook = $hookmanager->executeHooks(
'addSectionECMAuto', $parameters);
1857 if ($reshook > 0 && is_array($hookmanager->resArray) && count($hookmanager->resArray) > 0) {
1858 if (array_key_exists(
'ref', $hookmanager->resArray) && !empty($hookmanager->resArray[
'ref'])) {
1859 $ref = $hookmanager->resArray[
'ref'];
1861 if (array_key_exists(
'id', $hookmanager->resArray) && !empty($hookmanager->resArray[
'id'])) {
1862 $id = $hookmanager->resArray[
'id'];
1868 if (!$id && !$ref) {
1873 if (!empty($conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref])) {
1879 if (is_object($object_instance)) {
1880 $object_instance->id = 0;
1881 $object_instance->ref =
'';
1883 $result = $object_instance->fetch($id);
1885 if (!($result = $object_instance->fetch(
'', $ref))) {
1891 $result = $object_instance->fetchOneLike($ref);
1898 $conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref] = clone $object_instance;
1902 $conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref] =
'notfound';
1903 unset($filearray[$key]);
1907 if ($found <= 0 || !is_object($conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref])) {
1911 print
'<!-- Line list_of_autoecmfiles key='.$key.
' -->'.
"\n";
1912 print
'<tr class="oddeven">';
1914 if ($found > 0 && is_object($conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref])) {
1915 $tmpobject = $conf->cache[
'modulepartobject'][$modulepart.
'_'.$id.
'_'.$ref];
1917 print $tmpobject->getNomUrl(1,
'document');
1922 print $langs->trans(
"ObjectDeleted", ($id ? $id : $ref));
1938 print
'<a href="'.DOL_URL_ROOT.
'/document.php?modulepart='.urlencode($modulepart);
1939 if ($forcedownload) {
1940 print
'&attachment=1';
1942 print
'&file='.urlencode($relativefile).
'">';
1944 print
dol_trunc($file[
'name'], $maxlength,
'middle');
1949 print $this->
showPreview($file, $modulepart, $file[
'relativename']);
1956 print
'<td class="right nowraponall">';
1957 if ($sizetoshow == $sizetoshowbytes) {
1960 print $form->textwithpicto($sizetoshow, $sizetoshowbytes, -1);
1965 print
'<td class="center">'.dol_print_date($file[
'date'],
"dayhour").
'</td>';
1968 print
'<td class="right">';
1969 if (!empty($file[
'share'])) {
1971 $urlwithouturlroot = preg_replace(
'/'.preg_quote(DOL_URL_ROOT,
'/').
'$/i',
'', trim($dolibarr_main_url_root));
1972 $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
1978 if (!empty($file[
'share'])) {
1979 $paramlink .= ($paramlink ?
'&' :
'').
'hashp='.$file[
'share'];
1981 if ($forcedownload) {
1982 $paramlink .= ($paramlink ?
'&' :
'').
'attachment=1';
1985 $fulllink = $urlwithroot.
'/document.php'.($paramlink ?
'?'.$paramlink :
'');
1987 print
img_picto($langs->trans(
"FileSharedViaALink"),
'globe').
' ';
1988 print
'<input type="text" class="quatrevingtpercent width100 nopadding nopadding small" id="downloadlink" name="downloadexternallink" value="'.dol_escape_htmltag($fulllink).
'">';
2002 if (count($filearray) == 0) {
2003 print
'<tr class="oddeven"><td colspan="5">';
2004 if (empty($textifempty)) {
2005 print
'<span class="opacitymedium">'.$langs->trans(
"NoFileFound").
'</span>';
2007 print
'<span class="opacitymedium">'.$textifempty.
'</span>';
2014 if (!empty($addfilterfields)) {
2017 return count($filearray);
2031 public function listOfLinks($object, $permissiontodelete = 1, $action =
null, $selected =
null, $param =
'')
2033 global $user, $conf, $langs, $user;
2034 global $sortfield, $sortorder;
2036 $langs->load(
"link");
2038 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
2039 $link =
new Link($this->db);
2041 if ($sortfield ==
"name") {
2042 $sortfield =
"label";
2043 } elseif ($sortfield ==
"date") {
2044 $sortfield =
"datea";
2048 $res = $link->fetchAll($links, $object->element, $object->id, $sortfield, $sortorder);
2049 $param .= (isset($object->id) ?
'&id='.$object->id :
'');
2051 print
'<!-- listOfLinks -->'.
"\n";
2054 print
load_fiche_titre($langs->trans(
"LinkedFiles"),
'',
'link', 0,
'',
'table-list-of-links');
2056 print
'<form action="'.$_SERVER[
'PHP_SELF'].($param ?
'?'.$param :
'').
'" method="POST">';
2057 print
'<input type="hidden" name="token" value="'.newToken().
'">';
2059 print
'<table class="liste noborder nobottom centpercent">';
2060 print
'<tr class="liste_titre">';
2062 $langs->trans(
"Links"),
2063 $_SERVER[
'PHP_SELF'],
2084 $langs->trans(
"Date"),
2085 $_SERVER[
'PHP_SELF'],
2096 $_SERVER[
'PHP_SELF'],
2107 $nboflinks = count($links);
2108 if ($nboflinks > 0) {
2109 include_once DOL_DOCUMENT_ROOT.
'/core/lib/images.lib.php';
2112 foreach ($links as $link) {
2113 print
'<tr class="oddeven">';
2115 if ($action ==
'update' && $selected === $link->id) {
2117 print
'<input type="hidden" name="id" value="'.$object->id.
'">';
2118 print
'<input type="hidden" name="linkid" value="'.$link->id.
'">';
2119 print
'<input type="hidden" name="action" value="confirm_updateline">';
2120 print $langs->trans(
'Link').
': <input type="text" name="link" value="'.$link->url.
'">';
2123 print $langs->trans(
'Label').
': <input type="text" name="label" value="'.
dol_escape_htmltag($link->label).
'">';
2125 print
'<td class="center">'.dol_print_date(
dol_now(),
"dayhour",
"tzuser").
'</td>';
2126 print
'<td class="right"></td>';
2127 print
'<td class="right">';
2128 print
'<input type="submit" class="button button-save" name="save" value="'.dol_escape_htmltag($langs->trans(
"Save")).
'">';
2129 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.dol_escape_htmltag($langs->trans(
"Cancel")).
'">';
2134 print
'<a data-ajax="false" href="'.$link->url.
'" target="_blank" rel="noopener noreferrer">';
2138 print
'<td class="right"></td>';
2139 print
'<td class="center">'.dol_print_date($link->datea,
"dayhour",
"tzuser").
'</td>';
2140 print
'<td class="center"></td>';
2141 print
'<td class="right">';
2142 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=update&linkid='.$link->id.$param.
'&token='.newToken().
'" class="editfilelink editfielda reposition" >'.
img_edit().
'</a>';
2143 if ($permissiontodelete) {
2144 print
' <a class="deletefilelink reposition" href="'.$_SERVER[
'PHP_SELF'].
'?action=deletelink&token='.newToken().
'&linkid='.((int) $link->id).$param.
'">'.
img_delete().
'</a>';
2152 if ($nboflinks == 0) {
2153 print
'<tr class="oddeven"><td colspan="5">';
2154 print
'<span class="opacitymedium">'.$langs->trans(
"NoLinkFound").
'</span>';
2175 public function showPreview($file, $modulepart, $relativepath, $ruleforpicto = 0, $param =
'')
2177 global $langs, $conf;
2180 if ($conf->browser->layout !=
'phone' && !empty($conf->use_javascript_ajax)) {
2182 if (count($urladvancedpreview)) {
2183 $out .=
'<a class="pictopreview '.$urladvancedpreview[
'css'].
'" href="'.$urladvancedpreview[
'url'].
'"'.(empty($urladvancedpreview[
'mime']) ?
'' :
' mime="'.$urladvancedpreview[
'mime'].
'"').
' '.(empty($urladvancedpreview[
'target']) ?
'' :
' target="'.$urladvancedpreview[
'target'].
'"').
'>';
2185 if (empty($ruleforpicto)) {
2187 $out .=
'<span class="fa fa-search-plus pictofixedwidth" style="color: gray"></span>';
2189 $out .=
img_mime($relativepath, $langs->trans(
'Preview').
' '.$file[
'name'],
'pictofixedwidth');
2193 if ($ruleforpicto < 0) {
2194 $out .=
img_picto(
'',
'generic',
'',
false, 0, 0,
'',
'paddingright pictofixedwidth');
ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $forcefocus=0, $widthTypeOfAutocomplete='resolve', $idforemptyvalue='-1', $morecss='')
Convert a html select field into an ajax combobox.
Class to manage bank accounts.
Classe permettant la gestion des paiements des charges La tva collectee n'est calculee que sur les fa...
Class to manage predefined suppliers products.
Class to manage customers orders.
Class to manage contracts.
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage interventions.
Class of the module paid holiday.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active models generation.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($dbs, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation models.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation models.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation models.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation models.
static liste_modeles($db, $maxfilenamelength=0)
Return list of active generation modules.
static liste_modeles($dbs, $maxfilenamelength=0)
Return list of active generation modules.
Class to manage products or services.
const TYPE_PRODUCT
Regular product.
const TYPE_SERVICE
Service.
Class to manage projects.
Class to manage proposals.
Class for RecruitmentCandidature.
Class to manage cheque delivery receipts.
Class to manage salary payments.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage price ask supplier.
Put here description of your class.
Class to manage Dolibarr users.
dol_filemtime($pathoffile)
Return time of a file.
dol_filesize($pathoffile)
Return size of a file.
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.
completeFileArrayWithDatabaseInfo(&$filearray, $relativedir)
Complete $filearray with data from database.
dol_print_size($size, $shortvalue=0, $shortunit=0)
Return string with formated size.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
dol_mimetype($file, $default='application/octet-stream', $mode=0)
Return MIME type of a file from its name with extension.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_down($titlealt='default', $selected=0, $moreclass='')
Show down arrow logo.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
img_mime($file, $titlealt='', $morecss='')
Show MIME img of a file.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0)
Returns text escaped for inclusion into javascript code.
ajax_autoselect($htmlname, $addlink='', $textonlink='Link')
Make content of an input box selected when we click into input field.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
getImageFileNameForSize($file, $extName, $extImgTarget='')
Return the filename of file to get the thumbs.
getAdvancedPreviewUrl($modulepart, $relativepath, $alldata=0, $param='')
Return URL we can use for advanced preview links.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information for admin users or standard users.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
img_up($titlealt='default', $selected=0, $moreclass='')
Show top arrow logo.
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_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...
image_format_supported($file, $acceptsvg=0)
Return if a filename is file name of a supported image format.
getMaxFileSizeArray()
Return the max allowed for file upload.