29require 
'../main.inc.php';
 
   30require_once DOL_DOCUMENT_ROOT.
'/core/class/html.form.class.php';
 
   31require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
 
   32require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
 
   33require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
 
   34require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
 
   35require_once DOL_DOCUMENT_ROOT.
'/user/class/usergroup.class.php';
 
   36require_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
 
   37require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
 
   38require_once DOL_DOCUMENT_ROOT.
'/core/lib/usergroups.lib.php';
 
   41$langs->loadLangs(array(
'users', 
'other', 
'holiday', 
'hrm'));
 
   44if ($user->socid > 0) {
 
   48$action     = 
GETPOST(
'action', 
'aZ09'); 
 
   49$massaction = 
GETPOST(
'massaction', 
'alpha'); 
 
   50$show_files = 
GETPOST(
'show_files', 
'int'); 
 
   51$confirm    = 
GETPOST(
'confirm', 
'alpha'); 
 
   52$cancel     = 
GETPOST(
'cancel', 
'alpha'); 
 
   53$toselect   = 
GETPOST(
'toselect', 
'array'); 
 
   54$contextpage = 
GETPOST(
'contextpage', 
'aZ') ? 
GETPOST(
'contextpage', 
'aZ') : 
'holidaylist'; 
 
   55$mode        = 
GETPOST(
'mode', 
'alpha'); 
 
   57$backtopage = 
GETPOST(
'backtopage', 
'alpha'); 
 
   58$optioncss = 
GETPOST(
'optioncss', 
'aZ'); 
 
   62$childids = $user->getAllChildIds(1);
 
   65$diroutputmassaction = $conf->holiday->dir_output.
'/temp/massgeneration/'.$user->id;
 
   69$limit = 
GETPOST(
'limit', 
'int') ? 
GETPOST(
'limit', 
'int') : $conf->liste_limit;
 
   70$sortfield = 
GETPOST(
'sortfield', 
'aZ09comma');
 
   71$sortorder = 
GETPOST(
'sortorder', 
'aZ09comma');
 
   72$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) : 
GETPOST(
"page", 
'int');
 
   73if (empty($page) || $page == -1) {
 
   76$offset = $limit * $page;
 
   83  $sortfield = 
"cp.ref";
 
   86$sall                = trim((
GETPOST(
'search_all', 
'alphanohtml') != 
'') ? 
GETPOST(
'search_all', 
'alphanohtml') : 
GETPOST(
'sall', 
'alphanohtml'));
 
   87$search_ref          = 
GETPOST(
'search_ref', 
'alphanohtml');
 
   88$search_day_create   = 
GETPOST(
'search_day_create', 
'int');
 
   89$search_month_create = 
GETPOST(
'search_month_create', 
'int');
 
   90$search_year_create  = 
GETPOST(
'search_year_create', 
'int');
 
   91$search_day_start    = 
GETPOST(
'search_day_start', 
'int');
 
   92$search_month_start  = 
GETPOST(
'search_month_start', 
'int');
 
   93$search_year_start   = 
GETPOST(
'search_year_start', 
'int');
 
   94$search_day_end      = 
GETPOST(
'search_day_end', 
'int');
 
   95$search_month_end    = 
GETPOST(
'search_month_end', 
'int');
 
   96$search_year_end     = 
GETPOST(
'search_year_end', 
'int');
 
   97$search_employee     = 
GETPOST(
'search_employee', 
'int');
 
   98$search_valideur     = 
GETPOST(
'search_valideur', 
'int');
 
   99$search_status       = GETPOSTISSET(
'search_status') ? 
GETPOST(
'search_status', 
'int') : 
GETPOST(
'search_statut', 
'int');
 
  100$search_type         = 
GETPOST(
'search_type', 
'int');
 
  105$hookmanager->initHooks(array(
'holidaylist')); 
 
  108$extrafields->fetch_name_optionals_label($object->table_element);
 
  110$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, 
'', 
'search_');
 
  113$fieldstosearchall = array(
 
  115  'cp.description'=>
'Description',
 
  116  'uu.lastname'=>
'EmployeeLastname',
 
  117  'uu.firstname'=>
'EmployeeFirstname',
 
  122  'cp.ref'=>array(
'label'=>$langs->trans(
"Ref"), 
'checked'=>1),
 
  123  'cp.fk_user'=>array(
'label'=>$langs->trans(
"Employee"), 
'checked'=>1, 
'position'=>20),
 
  124  'cp.fk_validator'=>array(
'label'=>$langs->trans(
"ValidatorCP"), 
'checked'=>1, 
'position'=>30),
 
  125  'cp.fk_type'=>array(
'label'=>$langs->trans(
"Type"), 
'checked'=>1, 
'position'=>35),
 
  126  'duration'=>array(
'label'=>$langs->trans(
"NbUseDaysCPShort"), 
'checked'=>1, 
'position'=>38),
 
  127  'cp.date_debut'=>array(
'label'=>$langs->trans(
"DateStart"), 
'checked'=>1, 
'position'=>40),
 
  128  'cp.date_fin'=>array(
'label'=>$langs->trans(
"DateEnd"), 
'checked'=>1, 
'position'=>42),
 
  129  'cp.date_valid'=>array(
'label'=>$langs->trans(
"DateValidation"), 
'checked'=>1, 
'position'=>60),
 
  130  'cp.date_approval'=>array(
'label'=>$langs->trans(
"DateApprove"), 
'checked'=>1, 
'position'=>70),
 
  131  'cp.date_create'=>array(
'label'=>$langs->trans(
"DateCreation"), 
'checked'=>0, 
'position'=>500),
 
  132  'cp.tms'=>array(
'label'=>$langs->trans(
"DateModificationShort"), 
'checked'=>0, 
'position'=>501),
 
  133  'cp.statut'=>array(
'label'=>$langs->trans(
"Status"), 
'checked'=>1, 
'position'=>1000),
 
  136include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
 
  141if ($user->socid > 0) { 
 
  146$permissiontoread = $user->hasRight(
'holiday', 
'read');
 
  147$permissiontodelete = $user->hasRight(
'holiday', 
'delete');
 
  148$permissiontoapprove = $user->hasRight(
'holiday', 
'approve');
 
  150if (!ismodEnabled(
'holiday')) {
 
  158  if ($id == $user->id) {
 
  161  if ($user->hasRight(
'holiday', 
'readall')) {
 
  164  if ($user->hasRight(
'holiday', 
'read') && in_array($id, $childids)) {
 
  178if (
GETPOST(
'cancel', 
'alpha')) {
 
  182if (!
GETPOST(
'confirmmassaction', 
'alpha') && $massaction != 
'presend' && $massaction != 
'confirm_presend') {
 
  186$parameters = array(
'socid'=>$socid);
 
  187$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action); 
 
  192if (empty($reshook)) {
 
  194  include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
 
  197  if (
GETPOST(
'button_removefilter_x', 
'alpha') || 
GETPOST(
'button_removefilter.x', 
'alpha') || 
GETPOST(
'button_removefilter', 
'alpha')) { 
 
  199    $search_month_create = 
"";
 
  200    $search_year_create = 
"";
 
  201    $search_month_start = 
"";
 
  202    $search_year_start = 
"";
 
  203    $search_month_end = 
"";
 
  204    $search_year_end = 
"";
 
  205    $search_employee = 
"";
 
  206    $search_valideur = 
"";
 
  210    $search_array_options = array();
 
  212  if (
GETPOST(
'button_removefilter_x', 
'alpha') || 
GETPOST(
'button_removefilter.x', 
'alpha') || 
GETPOST(
'button_removefilter', 
'alpha')
 
  213    || 
GETPOST(
'button_search_x', 
'alpha') || 
GETPOST(
'button_search.x', 
'alpha') || 
GETPOST(
'button_search', 
'alpha')) {
 
  218  $objectclass = 
'Holiday';
 
  219  $objectlabel = 
'Holiday';
 
  220  $uploaddir = $conf->holiday->dir_output;
 
  221  include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
 
  231$form = 
new Form($db);
 
  235$fuser = 
new User($db);
 
  236$holidaystatic = 
new Holiday($db);
 
  239$result = $object->updateBalance();
 
  241$title = $langs->trans(
'CPTitreMenu');
 
  254  $fuser->fetch($id, 
'', 
'', 1);
 
  256  $user_id = $fuser->id;
 
  258  $search_employee = $user_id;
 
  268$sql .= 
" cp.fk_user,";
 
  269$sql .= 
" cp.fk_type,";
 
  270$sql .= 
" cp.date_create,";
 
  271$sql .= 
" cp.tms as date_update,";
 
  272$sql .= 
" cp.description,";
 
  273$sql .= 
" cp.date_debut,";
 
  274$sql .= 
" cp.date_fin,";
 
  275$sql .= 
" cp.halfday,";
 
  276$sql .= 
" cp.statut as status,";
 
  277$sql .= 
" cp.fk_validator,";
 
  278$sql .= 
" cp.date_valid,";
 
  279$sql .= 
" cp.fk_user_valid,";
 
  280$sql .= 
" cp.date_approval,";
 
  281$sql .= 
" cp.fk_user_approve,";
 
  282$sql .= 
" cp.date_refuse,";
 
  283$sql .= 
" cp.fk_user_refuse,";
 
  284$sql .= 
" cp.date_cancel,";
 
  285$sql .= 
" cp.fk_user_cancel,";
 
  286$sql .= 
" cp.detail_refuse,";
 
  288$sql .= 
" uu.lastname as user_lastname,";
 
  289$sql .= 
" uu.firstname as user_firstname,";
 
  290$sql .= 
" uu.admin as user_admin,";
 
  291$sql .= 
" uu.email as user_email,";
 
  292$sql .= 
" uu.login as user_login,";
 
  293$sql .= 
" uu.statut as user_status,";
 
  294$sql .= 
" uu.photo as user_photo,";
 
  296$sql .= 
" ua.lastname as validator_lastname,";
 
  297$sql .= 
" ua.firstname as validator_firstname,";
 
  298$sql .= 
" ua.admin as validator_admin,";
 
  299$sql .= 
" ua.email as validator_email,";
 
  300$sql .= 
" ua.login as validator_login,";
 
  301$sql .= 
" ua.statut as validator_status,";
 
  302$sql .= 
" ua.photo as validator_photo";
 
  304if (!empty($extrafields->attributes[$object->table_element][
'label'])) {
 
  305  foreach ($extrafields->attributes[$object->table_element][
'label'] as $key => $val) {
 
  306    $sql .= ($extrafields->attributes[$object->table_element][
'type'][$key] != 
'separate' ? 
", ef.".$key.
" as options_".$key : 
'');
 
  310$parameters = array();
 
  311$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters); 
 
  312$sql .= $hookmanager->resPrint;
 
  313$sql = preg_replace(
'/,\s*$/', 
'', $sql);
 
  317$sql .= 
" FROM ".MAIN_DB_PREFIX.
"holiday as cp";
 
  318if (isset($extrafields->attributes[$object->table_element][
'label']) && is_array($extrafields->attributes[$object->table_element][
'label']) && count($extrafields->attributes[$object->table_element][
'label'])) {
 
  319  $sql .= 
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (cp.rowid = ef.fk_object)";
 
  321$sql .= 
", ".MAIN_DB_PREFIX.
"user as uu, ".MAIN_DB_PREFIX.
"user as ua";
 
  322$sql .= 
" WHERE cp.entity IN (".getEntity(
'holiday').
")";
 
  323$sql .= 
" AND cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid "; 
 
  329if (!empty($search_ref)) {
 
  333$sql .= 
dolSqlDateFilter(
"cp.date_debut", $search_day_start, $search_month_start, $search_year_start);
 
  335$sql .= 
dolSqlDateFilter(
"cp.date_fin", $search_day_end, $search_month_end, $search_year_end);
 
  337$sql .= 
dolSqlDateFilter(
"cp.date_create", $search_day_create, $search_month_create, $search_year_create);
 
  339if (!empty($search_employee) && $search_employee != -1) {
 
  340  $sql .= 
" AND cp.fk_user = '".$db->escape($search_employee).
"'\n";
 
  343if (!empty($search_valideur) && $search_valideur != -1) {
 
  344  $sql .= 
" AND cp.fk_validator = '".$db->escape($search_valideur).
"'\n";
 
  347if (!empty($search_type) && $search_type != -1) {
 
  348  $sql .= 
' AND cp.fk_type IN ('.$db->sanitize($db->escape($search_type)).
')';
 
  351if (!empty($search_status) && $search_status != -1) {
 
  352  $sql .= 
" AND cp.statut = '".$db->escape($search_status).
"'\n";
 
  355if (!$user->hasRight(
'holiday', 
'readall')) {
 
  356  $sql .= 
' AND cp.fk_user IN ('.$db->sanitize(join(
',', $childids)).
')';
 
  359  $sql .= 
" AND cp.fk_user IN (".$db->sanitize($id).
")";
 
  363include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
 
  365$parameters = array();
 
  366$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action); 
 
  367$sql .= $hookmanager->resPrint;
 
  370$nbtotalofrecords = 
'';
 
  373  $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields, 
'/').
'/', 
'SELECT COUNT(*) as nbtotalofrecords', $sql);
 
  374  $sqlforcount = preg_replace(
'/GROUP BY .*$/', 
'', $sqlforcount);
 
  375  $resql = $db->query($sqlforcount);
 
  377    $objforcount = $db->fetch_object($resql);
 
  378    $nbtotalofrecords = $objforcount->nbtotalofrecords;
 
  383  if (($page * $limit) > $nbtotalofrecords) { 
 
  391$sql .= $db->order($sortfield, $sortorder);
 
  393  $sql .= $db->plimit($limit + 1, $offset);
 
  397$resql = $db->query($sql);
 
  403$num = $db->num_rows($resql);
 
  405$arrayofselected = is_array($toselect) ? $toselect : array();
 
  409  $param .= 
'&mode='.urlencode($mode);
 
  411if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
 
  412  $param .= 
'&contextpage='.urlencode($contextpage);
 
  414if ($limit > 0 && $limit != $conf->liste_limit) {
 
  415  $param .= 
'&limit='.((int) $limit);
 
  417if ($optioncss != 
'') {
 
  418  $param .= 
'&optioncss='.urlencode($optioncss);
 
  421  $param .= 
'&search_ref='.urlencode($search_ref);
 
  423if ($search_day_create) {
 
  424  $param .= 
'&search_day_create='.urlencode($search_day_create);
 
  426if ($search_month_create) {
 
  427  $param .= 
'&search_month_create='.urlencode($search_month_create);
 
  429if ($search_year_create) {
 
  430  $param .= 
'&search_year_create='.urlencode($search_year_create);
 
  432if ($search_day_start) {
 
  433  $param .= 
'&search_day_start='.urlencode($search_day_start);
 
  435if ($search_month_start) {
 
  436  $param .= 
'&search_month_start='.urlencode($search_month_start);
 
  438if ($search_year_start) {
 
  439  $param .= 
'&search_year_start='.urlencode($search_year_start);
 
  441if ($search_day_end) {
 
  442  $param .= 
'&search_day_end='.urlencode($search_day_end);
 
  444if ($search_month_end) {
 
  445  $param .= 
'&search_month_end='.urlencode($search_month_end);
 
  447if ($search_year_end) {
 
  448  $param .= 
'&search_year_end='.urlencode($search_year_end);
 
  450if ($search_employee > 0) {
 
  451  $param .= 
'&search_employee='.urlencode($search_employee);
 
  453if ($search_valideur > 0) {
 
  454  $param .= 
'&search_valideur='.urlencode($search_valideur);
 
  456if ($search_type > 0) {
 
  457  $param .= 
'&search_type='.urlencode($search_type);
 
  459if ($search_status > 0) {
 
  460  $param .= 
'&search_status='.urlencode($search_status);
 
  463include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
 
  466$arrayofmassactions = array(
 
  471if (!empty($permissiontodelete)) {
 
  472  $arrayofmassactions[
'predelete'] = 
img_picto(
'', 
'delete', 
'class="pictofixedwidth"').$langs->trans(
"Delete");
 
  474if (!empty($permissiontoapprove)) {
 
  475  $arrayofmassactions[
'preapproveleave'] = 
img_picto(
'', 
'check', 
'class="pictofixedwidth"').$langs->trans(
"Approve");
 
  477if (
GETPOST(
'nomassaction', 
'int') || in_array($massaction, array(
'presend', 
'predelete'))) {
 
  478  $arrayofmassactions = array();
 
  480$massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
 
  482print 
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
 
  483if ($optioncss != 
'') {
 
  484  print 
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
 
  486print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
  487print 
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
 
  488print 
'<input type="hidden" name="action" value="'.($action == 
'edit' ? 
'update' : 
'list').
'">';
 
  489print 
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
 
  490print 
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
 
  491print 
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
 
  492print 
'<input type="hidden" name="page" value="'.$page.
'">';
 
  493print 
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
 
  494print 
'<input type="hidden" name="page_y" value="">';
 
  495print 
'<input type="hidden" name="mode" value="'.$mode.
'">';
 
  497  print 
'<input type="hidden" name="id" value="'.$id.
'">';
 
  501  $title = $langs->trans(
"User");
 
  502  $linkback = 
'<a href="'.DOL_URL_ROOT.
'/user/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
 
  507  dol_banner_tab($fuser, 
'id', $linkback, $user->hasRight(
'user', 
'user', 
'lire') || $user->admin);
 
  510    print 
'<div class="underbanner clearboth"></div>';
 
  521  print 
'<div class="tabsAction">';
 
  524  if ($user->hasRight(
'holiday', 
'writeall')) {
 
  527  if ($user->hasRight(
'holiday', 
'write') && in_array($user_id, $childids)) {
 
  532    print 
'<a href="'.DOL_URL_ROOT.
'/holiday/card.php?action=create&fuserid='.$user_id.
'" class="butAction">'.$langs->trans(
"AddCP").
'</a>';
 
  537  $title = $langs->trans(
"ListeCP");
 
  541  $newcardbutton .= 
dolGetButtonTitle($langs->trans(
'ViewList'), 
'', 
'fa fa-bars imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=common'.preg_replace(
'/(&|\?)*mode=[^&]+/', 
'', $param), 
'', ((empty($mode) || $mode == 
'common') ? 2 : 1), array(
'morecss'=>
'reposition'));
 
  542  $newcardbutton .= 
dolGetButtonTitle($langs->trans(
'ViewKanban'), 
'', 
'fa fa-th-list imgforviewmode', $_SERVER[
"PHP_SELF"].
'?mode=kanban'.preg_replace(
'/(&|\?)*mode=[^&]+/', 
'', $param), 
'', ($mode == 
'kanban' ? 2 : 1), array(
'morecss'=>
'reposition'));
 
  544  $newcardbutton .= 
dolGetButtonTitle($langs->trans(
'MenuAddCP'), 
'', 
'fa fa-plus-circle', DOL_URL_ROOT.
'/holiday/card.php?action=create', 
'', $user->hasRight(
'holiday', 
'write'));
 
  546  print_barre_liste($title, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 
'title_hrm', 0, $newcardbutton, 
'', $limit, 0, 0, 1);
 
  549$topicmail = 
"Information";
 
  550$modelmail = 
"leaverequest";
 
  552$trackid = 
'leav'.$object->id;
 
  553include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
 
  557  foreach ($fieldstosearchall as $key => $val) {
 
  558    $fieldstosearchall[$key] = $langs->trans($val);
 
  559    $setupstring .= $key.
"=".$val.
";";
 
  561  print 
'<!-- Search done like if HOLIDAY_QUICKSEARCH_ON_FIELDS = '.$setupstring.
' -->'.
"\n";
 
  562  print 
'<div class="divsearchfieldfilter">'.$langs->trans(
"FilterOnInto", $sall).join(
', ', $fieldstosearchall).
'</div>';
 
  567$parameters = array();
 
  568$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action); 
 
  569if (empty($reshook)) {
 
  570  $moreforfilter .= $hookmanager->resPrint;
 
  572  $moreforfilter = $hookmanager->resPrint;
 
  575if (!empty($moreforfilter)) {
 
  576  print 
'<div class="liste_titre liste_titre_bydiv centpercent">';
 
  577  print $moreforfilter;
 
  578  $parameters = array(
'type'=>$type);
 
  579  $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action); 
 
  580  print $hookmanager->resPrint;
 
  584$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
 
  585$selectedfields = ($mode != 
'kanban' ? $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage, 
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN', 
'')) : 
''); 
 
  586$selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons(
'checkforselect', 1) : 
'');
 
  589if (!$user->hasRight(
'holiday', 
'readall')) {
 
  590  $include = 
'hierarchyme'; 
 
  593print 
'<div class="div-table-responsive">'; 
 
  594print 
'<table class="tagtable nobottomiftotal liste'.($moreforfilter ? 
" listwithfilterbefore" : 
"").
'">'.
"\n";
 
  598print 
'<tr class="liste_titre_filter">';
 
  601  print 
'<td class="liste_titre center maxwidthsearch">';
 
  602  $searchpicto = $form->showFilterButtons(
'left');
 
  606if (!empty($arrayfields[
'cp.ref'][
'checked'])) {
 
  607  print 
'<td class="liste_titre">';
 
  608  print 
'<input class="flat maxwidth50" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
 
  612if (!empty($arrayfields[
'cp.fk_user'][
'checked'])) {
 
  615    $morefilter = 
'AND employee = 1';
 
  621  if ($id && !GETPOSTISSET(
'search_employee')) {
 
  622    $search_employee = $id;
 
  626  print 
'<td class="liste_titre maxwidthonsmartphone left">';
 
  627  print $form->select_dolusers($search_employee, 
"search_employee", 1, 
"", $disabled, $include, 
'', 0, 0, 0, $morefilter, 0, 
'', 
'maxwidth125');
 
  632if (!empty($arrayfields[
'cp.fk_validator'][
'checked'])) {
 
  633  if ($user->hasRight(
'holiday', 
'readall')) {
 
  634    print 
'<td class="liste_titre maxwidthonsmartphone left">';
 
  636    $excludefilter = $user->admin ? 
'' : 
'u.rowid <> '.$user->id;
 
  637    $valideurobjects = $validator->listUsersForGroup($excludefilter, 1);
 
  638    $valideurarray = array();
 
  639    foreach ($valideurobjects as $val) {
 
  640      $valideurarray[$val] = $val;
 
  642    print $form->select_dolusers($search_valideur, 
"search_valideur", 1, 
"", 0, $valideurarray, 
'', 0, 0, 0, $morefilter, 0, 
'', 
'maxwidth125');
 
  645    print 
'<td class="liste_titre"> </td>';
 
  650if (!empty($arrayfields[
'cp.fk_type'][
'checked'])) {
 
  651  print 
'<td class="liste_titre">';
 
  652  if (empty($mysoc->country_id)) {
 
  653    setEventMessages(
null, array($langs->trans(
"ErrorSetACountryFirst"), $langs->trans(
"CompanyFoundation")), 
'errors');
 
  655    $typeleaves = $holidaystatic->getTypes(1, -1);
 
  656    $arraytypeleaves = array();
 
  657    foreach ($typeleaves as $key => $val) {
 
  658      $labeltoshow = ($langs->trans($val[
'code']) != $val[
'code'] ? $langs->trans($val[
'code']) : $val[
'label']);
 
  660      $arraytypeleaves[$val[
'rowid']] = $labeltoshow;
 
  662    print $form->selectarray(
'search_type', $arraytypeleaves, $search_type, 1, 0, 0, 
'', 0, 0, 0, 
'', 
'maxwidth100', 1);
 
  668if (!empty($arrayfields[
'duration'][
'checked'])) {
 
  669  print 
'<td class="liste_titre"> </td>';
 
  673if (!empty($arrayfields[
'cp.date_debut'][
'checked'])) {
 
  674  print 
'<td class="liste_titre center nowraponall">';
 
  675  print 
'<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month_start" value="'.dol_escape_htmltag($search_month_start).
'">';
 
  676  print $formother->selectyear($search_year_start, 
'search_year_start', 1, $min_year, $max_year);
 
  681if (!empty($arrayfields[
'cp.date_fin'][
'checked'])) {
 
  682  print 
'<td class="liste_titre center nowraponall">';
 
  683  print 
'<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month_end" value="'.dol_escape_htmltag($search_month_end).
'">';
 
  684  print $formother->selectyear($search_year_end, 
'search_year_end', 1, $min_year, $max_year);
 
  689if (!empty($arrayfields[
'cp.date_valid'][
'checked'])) {
 
  690  print 
'<td class="liste_titre center nowraponall">';
 
  695if (!empty($arrayfields[
'cp.date_approval'][
'checked'])) {
 
  696  print 
'<td class="liste_titre center nowraponall">';
 
  701include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
 
  704$parameters = array(
'arrayfields'=>$arrayfields);
 
  705$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action); 
 
  706print $hookmanager->resPrint;
 
  709if (!empty($arrayfields[
'cp.date_create'][
'checked'])) {
 
  710  print 
'<td class="liste_titre center width200">';
 
  711  print 
'<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month_create" value="'.dol_escape_htmltag($search_month_create).
'">';
 
  712  print $formother->selectyear($search_year_create, 
'search_year_create', 1, $min_year, 0);
 
  717if (!empty($arrayfields[
'cp.tms'][
'checked'])) {
 
  718  print 
'<td class="liste_titre center width200">';
 
  719  print 
'<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month_update" value="'.dol_escape_htmltag($search_month_update).
'">';
 
  720  print $formother->selectyear($search_year_update, 
'search_year_update', 1, $min_year, 0);
 
  725if (!empty($arrayfields[
'cp.statut'][
'checked'])) {
 
  726  print 
'<td class="liste_titre center parentonrightofpage">';
 
  727  print $object->selectStatutCP($search_status, 
'search_status', 
'search_status width100 onrightofpage');
 
  733  print 
'<td class="liste_titre center maxwidthsearch">';
 
  734  $searchpicto = $form->showFilterButtons();
 
  741$totalarray = array();
 
  742$totalarray[
'nbfield'] = 0;
 
  746print 
'<tr class="liste_titre">';
 
  748  print 
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"], 
'', 
'', 
'', 
'', $sortfield, $sortorder, 
'center maxwidthsearch ').
"\n";
 
  749  $totalarray[
'nbfield']++;
 
  751if (!empty($arrayfields[
'cp.ref'][
'checked'])) {
 
  752  print_liste_field_titre($arrayfields[
'cp.ref'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.ref", 
"", $param, 
'', $sortfield, $sortorder);
 
  753  $totalarray[
'nbfield']++;
 
  755if (!empty($arrayfields[
'cp.fk_user'][
'checked'])) {
 
  756  print_liste_field_titre($arrayfields[
'cp.fk_user'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.fk_user", 
"", $param, 
'', $sortfield, $sortorder);
 
  757  $totalarray[
'nbfield']++;
 
  759if (!empty($arrayfields[
'cp.fk_validator'][
'checked'])) {
 
  760  print_liste_field_titre($arrayfields[
'cp.fk_validator'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.fk_validator", 
"", $param, 
'', $sortfield, $sortorder);
 
  761  $totalarray[
'nbfield']++;
 
  763if (!empty($arrayfields[
'cp.fk_type'][
'checked'])) {
 
  764  print_liste_field_titre($arrayfields[
'cp.fk_type'][
'label'], $_SERVER[
"PHP_SELF"], 
'', 
'', $param, 
'', $sortfield, $sortorder);
 
  765  $totalarray[
'nbfield']++;
 
  767if (!empty($arrayfields[
'duration'][
'checked'])) {
 
  768  print_liste_field_titre($arrayfields[
'duration'][
'label'], $_SERVER[
"PHP_SELF"], 
'', 
'', $param, 
'', $sortfield, $sortorder, 
'right maxwidth100');
 
  769  $totalarray[
'nbfield']++;
 
  771if (!empty($arrayfields[
'cp.date_debut'][
'checked'])) {
 
  772  print_liste_field_titre($arrayfields[
'cp.date_debut'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.date_debut", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  773  $totalarray[
'nbfield']++;
 
  775if (!empty($arrayfields[
'cp.date_fin'][
'checked'])) {
 
  776  print_liste_field_titre($arrayfields[
'cp.date_fin'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.date_fin", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  777  $totalarray[
'nbfield']++;
 
  779if (!empty($arrayfields[
'cp.date_valid'][
'checked'])) {
 
  780  print_liste_field_titre($arrayfields[
'cp.date_valid'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.date_valid", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  781  $totalarray[
'nbfield']++;
 
  783if (!empty($arrayfields[
'cp.date_approval'][
'checked'])) {
 
  784  print_liste_field_titre($arrayfields[
'cp.date_approval'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.date_approval", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  785  $totalarray[
'nbfield']++;
 
  788include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
 
  790$parameters = array(
'arrayfields'=>$arrayfields, 
'param'=>$param, 
'sortfield'=>$sortfield, 
'sortorder'=>$sortorder, 
'totalarray'=>&$totalarray);
 
  791$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action); 
 
  792print $hookmanager->resPrint;
 
  793if (!empty($arrayfields[
'cp.date_create'][
'checked'])) {
 
  794  print_liste_field_titre($arrayfields[
'cp.date_create'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.date_create", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  795  $totalarray[
'nbfield']++;
 
  797if (!empty($arrayfields[
'cp.tms'][
'checked'])) {
 
  798  print_liste_field_titre($arrayfields[
'cp.tms'][
'label'], $_SERVER[
"PHP_SELF"], 
"cp.tms", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  799  $totalarray[
'nbfield']++;
 
  801if (!empty($arrayfields[
'cp.statut'][
'checked'])) {
 
  802  print_liste_field_titre(
"Status", $_SERVER[
"PHP_SELF"], 
"cp.statut", 
"", $param, 
'', $sortfield, $sortorder, 
'center ');
 
  803  $totalarray[
'nbfield']++;
 
  807  print 
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"], 
'', 
'', 
'', 
'', $sortfield, $sortorder, 
'center maxwidthsearch ').
"\n";
 
  808  $totalarray[
'nbfield']++;
 
  812$listhalfday = array(
'morning'=>$langs->trans(
"Morning"), 
"afternoon"=>$langs->trans(
"Afternoon"));
 
  819if ($id && !$user->hasRight(
'holiday', 
'readall') && !in_array($id, $childids)) {
 
  820  $langs->load(
"errors");
 
  821  print 
'<tr class="oddeven opacitymediuem"><td colspan="10">'.$langs->trans(
"NotEnoughPermissions").
'</td></tr>';
 
  823} elseif ($num > 0 && !empty($mysoc->country_id)) {
 
  825  $userstatic = 
new User($db);
 
  826  $approbatorstatic = 
new User($db);
 
  828  $typeleaves = $object->getTypes(1, -1);
 
  831  $savnbfield = $totalarray[
'nbfield'];
 
  832  $totalarray = array();
 
  833  $totalarray[
'nbfield'] = 0;
 
  835  $imaxinloop = ($limit ? min($num, $limit) : $num);
 
  836  while ($i < $imaxinloop) {
 
  837    $obj = $db->fetch_object($resql);
 
  843    $holidaystatic->id = $obj->rowid;
 
  844    $holidaystatic->ref = ($obj->ref ? $obj->ref : $obj->rowid);
 
  845    $holidaystatic->statut = $obj->status;
 
  846    $holidaystatic->date_debut = $db->jdate($obj->date_debut);
 
  847    $holidaystatic->date_fin = $db->jdate($obj->date_fin);
 
  850    $userstatic->id = $obj->fk_user;
 
  851    $userstatic->lastname = $obj->user_lastname;
 
  852    $userstatic->firstname = $obj->user_firstname;
 
  853    $userstatic->admin = $obj->user_admin;
 
  854    $userstatic->email = $obj->user_email;
 
  855    $userstatic->login = $obj->user_login;
 
  856    $userstatic->statut = $obj->user_status;
 
  857    $userstatic->photo = $obj->user_photo;
 
  860    $approbatorstatic->id = $obj->fk_validator;
 
  861    $approbatorstatic->lastname = $obj->validator_lastname;
 
  862    $approbatorstatic->firstname = $obj->validator_firstname;
 
  863    $approbatorstatic->admin = $obj->validator_admin;
 
  864    $approbatorstatic->email = $obj->validator_email;
 
  865    $approbatorstatic->login = $obj->validator_login;
 
  866    $approbatorstatic->statut = $obj->validator_status;
 
  867    $approbatorstatic->photo = $obj->validator_photo;
 
  869    $date = $obj->date_create;
 
  870    $date_modif = $obj->date_update;
 
  872    $starthalfday = ($obj->halfday == -1 || $obj->halfday == 2) ? 
'afternoon' : 
'morning';
 
  873    $endhalfday = ($obj->halfday == 1 || $obj->halfday == 2) ? 
'morning' : 
'afternoon';
 
  875    $nbopenedday = 
num_open_day($db->jdate($obj->date_debut, 1), $db->jdate($obj->date_fin, 1), 0, 1, $obj->halfday); 
 
  876    $totalduration += $nbopenedday;
 
  878    if ($mode == 
'kanban') {
 
  880        print 
'<tr class="trkanban"><td colspan="'.$savnbfield.
'">';
 
  881        print 
'<div class="box-flex-container kanban">';
 
  884      $holidaystatic->fk_type = empty($typeleaves[$obj->fk_type][
'rowid']) ? 0 : $typeleaves[$obj->fk_type][
'rowid'];
 
  887      if ($massactionbutton || $massaction) {
 
  889        if (in_array($object->id, $arrayofselected)) {
 
  892        if (empty($typeleaves[$obj->fk_type])) {
 
  893          $labeltypeleavetoshow = $langs->trans(
"TypeWasDisabledOrRemoved", $obj->fk_type);
 
  895          $labeltypeleavetoshow = ($langs->trans($typeleaves[$obj->fk_type][
'code']) != $typeleaves[$obj->fk_type][
'code'] ? $langs->trans($typeleaves[$obj->fk_type][
'code']) : $typeleaves[$obj->fk_type][
'label']);
 
  898        $arraydata = array(
'user'=>$userstatic, 
'labeltype'=>$labeltypeleavetoshow, 
'selected'=>$selected, 
'nbopenedday'=>$nbopenedday);
 
  900      print $holidaystatic->getKanbanView(
'', $arraydata);
 
  901      if ($i == ($imaxinloop - 1)) {
 
  908      print 
'<tr data-rowid="'.$object->id.
'" class="oddeven">';
 
  911        print 
'<td class="nowrap center">';
 
  912        if ($massactionbutton || $massaction) {   
 
  914          if (in_array($obj->rowid, $arrayofselected)) {
 
  917          print 
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ? 
' checked="checked"' : 
'').
'>';
 
  921          $totalarray[
'nbfield']++;
 
  924      if (!empty($arrayfields[
'cp.ref'][
'checked'])) {
 
  925        print 
'<td class="nowraponall">';
 
  926        print $holidaystatic->getNomUrl(1, 1);
 
  929          $totalarray[
'nbfield']++;
 
  932      if (!empty($arrayfields[
'cp.fk_user'][
'checked'])) {
 
  933        print 
'<td class="tdoverflowmax125">'.$userstatic->getNomUrl(-1, 
'leave').
'</td>';
 
  935          $totalarray[
'nbfield']++;
 
  938      if (!empty($arrayfields[
'cp.fk_validator'][
'checked'])) {
 
  939        print 
'<td class="tdoverflowmax125">'.$approbatorstatic->getNomUrl(-1).
'</td>';
 
  941          $totalarray[
'nbfield']++;
 
  944      if (!empty($arrayfields[
'cp.fk_type'][
'checked'])) {
 
  945        if (empty($typeleaves[$obj->fk_type])) {
 
  946          $labeltypeleavetoshow = $langs->trans(
"TypeWasDisabledOrRemoved", $obj->fk_type);
 
  948          $labeltypeleavetoshow = ($langs->trans($typeleaves[$obj->fk_type][
'code']) != $typeleaves[$obj->fk_type][
'code'] ? $langs->trans($typeleaves[$obj->fk_type][
'code']) : $typeleaves[$obj->fk_type][
'label']);
 
  951        print 
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($labeltypeleavetoshow).
'">';
 
  952        print $labeltypeleavetoshow;
 
  955          $totalarray[
'nbfield']++;
 
  958      if (!empty($arrayfields[
'duration'][
'checked'])) {
 
  959        print 
'<td class="right">';
 
  964          $totalarray[
'nbfield']++;
 
  967      if (!empty($arrayfields[
'cp.date_debut'][
'checked'])) {
 
  968        print 
'<td class="center">';
 
  970        print 
' <span class="opacitymedium nowraponall">('.$langs->trans($listhalfday[$starthalfday]).
')</span>';
 
  973          $totalarray[
'nbfield']++;
 
  976      if (!empty($arrayfields[
'cp.date_fin'][
'checked'])) {
 
  977        print 
'<td class="center">';
 
  979        print 
' <span class="opacitymedium nowraponall">('.$langs->trans($listhalfday[$endhalfday]).
')</span>';
 
  982          $totalarray[
'nbfield']++;
 
  986      if (!empty($arrayfields[
'cp.date_valid'][
'checked'])) {   
 
  987        print 
'<td class="center" title="'.dol_print_date($db->jdate($obj->date_valid), 
'dayhour').
'">';
 
  991          $totalarray[
'nbfield']++;
 
  995      if (!empty($arrayfields[
'cp.date_approval'][
'checked'])) {
 
  996        print 
'<td class="center" title="'.dol_print_date($db->jdate($obj->date_approval), 
'dayhour').
'">';
 
 1000          $totalarray[
'nbfield']++;
 
 1005      include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
 
 1007      $parameters = array(
'arrayfields'=>$arrayfields, 
'object'=>$object, 
'obj'=>$obj, 
'i'=>$i, 
'totalarray'=>&$totalarray);
 
 1008      $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action); 
 
 1009      print $hookmanager->resPrint;
 
 1012      if (!empty($arrayfields[
'cp.date_create'][
'checked'])) {
 
 1013        print 
'<td style="text-align: center;">'.dol_print_date($date, 
'dayhour').
'</td>';
 
 1015          $totalarray[
'nbfield']++;
 
 1018      if (!empty($arrayfields[
'cp.tms'][
'checked'])) {
 
 1019        print 
'<td style="text-align: center;">'.dol_print_date($date_modif, 
'dayhour').
'</td>';
 
 1021          $totalarray[
'nbfield']++;
 
 1025      if (!empty($arrayfields[
'cp.statut'][
'checked'])) {
 
 1026        print 
'<td class="center nowrap">'.$holidaystatic->getLibStatut(5).
'</td>';
 
 1028          $totalarray[
'nbfield']++;
 
 1034        print 
'<td class="nowrap center">';
 
 1035        if ($massactionbutton || $massaction) {   
 
 1037          if (in_array($obj->rowid, $arrayofselected)) {
 
 1040          print 
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ? 
' checked="checked"' : 
'').
'>';
 
 1044          $totalarray[
'nbfield']++;
 
 1054  if ($mode != 
'kanban' && !empty($arrayfields[
'duration'][
'checked'])) {
 
 1055    print 
'<tr class="total">';
 
 1059    foreach ($arrayfields as $key => $val) {
 
 1060      if (!empty($val[
'checked'])) {
 
 1061        if ($key == 
'duration') {
 
 1062          print 
'<td class="right">'.$totalduration.
' '.$langs->trans(
'DurationDays').
'</td>';
 
 1079  foreach ($arrayfields as $key => $val) {
 
 1080    if (!empty($val[
'checked'])) {
 
 1084  print 
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
 
 1089$parameters = array(
'arrayfields'=>$arrayfields, 
'sql'=>$sql);
 
 1090$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action); 
 
 1091print $hookmanager->resPrint;
 
 1093print 
'</table>'.
"\n";
 
 1096print 
'</form>'.
"\n";
 
 1121  $typeleaves = $holiday->getTypes(1, 1);
 
 1122  foreach ($typeleaves as $key => $val) {
 
 1123    $nb_type = $holiday->getCPforUser($user_id, $val[
'rowid']);
 
 1124    $nb_holiday += $nb_type;
 
 1125    $out .= 
' - '.$val[
'label'].
': <strong>'.($nb_type ? 
price2num($nb_type) : 0).
'</strong><br>';
 
 1127  $out = $langs->trans(
'SoldeCPUser', round($nb_holiday, 5)).
'<br>'.$out;
 
 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class of the module paid holiday.
 
Class to manage user groups.
 
Class to manage Dolibarr users.
 
dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand=0, $gm=false)
Generate a SQL string to make a filter into a range (for second of date until last second of date).
 
num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='')
Function to return number of working days (and text of units) between two dates (working days)
 
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
 
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
 
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
 
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
 
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
 
dol_get_fiche_end($notab=0)
Return tab footer of a card.
 
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
 
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
 
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)
 
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
 
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
 
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
 
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
 
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
 
showMyBalance($holiday, $user_id)
Show balance of user.
 
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.
 
user_prepare_head(User $object)
Prepare array with list of tabs.