34require
'../../main.inc.php';
35require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/user/class/usergroup.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/agenda.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
45if (!isset($conf->global->AGENDA_MAX_EVENTS_DAY_VIEW)) {
46 $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW = 3;
49$action =
GETPOST(
'action',
'aZ09');
51$disabledefaultvalues =
GETPOSTINT(
'disabledefaultvalues');
53$filter =
GETPOST(
"search_filter",
'alpha', 3) ?
GETPOST(
"search_filter",
'alpha', 3) :
GETPOST(
"filter",
'alpha', 3);
66$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
67$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
69if (empty($page) || $page == -1) {
73$offset = $limit * $page;
78 $sortfield =
"a.datec";
83 $socid = $user->socid;
90if (!$user->hasRight(
'agenda',
'myactions',
'read')) {
93if (!$user->hasRight(
'agenda',
'allactions',
'read')) {
96if (!$user->hasRight(
'agenda',
'allactions',
'read') || $filter ==
'mine') {
100$mode =
'show_peruser';
106$pid = GETPOSTISSET(
"search_projectid") ?
GETPOSTINT(
"search_projectid", 3) :
GETPOSTINT(
"projectid", 3);
107$status = GETPOSTISSET(
"search_status") ?
GETPOST(
"search_status",
'aZ09') :
GETPOST(
"status",
'aZ09');
108$type = GETPOSTISSET(
"search_type") ?
GETPOST(
"search_type",
'alpha') :
GETPOST(
"type",
'alpha');
109$maxprint = ((
GETPOSTINT(
"maxprint") !=
'') ?
GETPOSTINT(
"maxprint") : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW);
110$optioncss =
GETPOST(
'optioncss',
'aZ');
113if (
GETPOST(
'search_actioncode',
'array:aZ09')) {
114 $actioncode =
GETPOST(
'search_actioncode',
'array:aZ09', 3);
115 if (!count($actioncode)) {
119 $actioncode =
GETPOST(
"search_actioncode",
"alpha", 3) ?
GETPOST(
"search_actioncode",
"alpha", 3) : (
GETPOST(
"search_actioncode",
"alpha") ==
'0' ?
'0' : ((!
getDolGlobalString(
'AGENDA_DEFAULT_FILTER_TYPE') || $disabledefaultvalues) ?
'' :
getDolGlobalString(
'AGENDA_DEFAULT_FILTER_TYPE')));
123if ($dateselect > 0) {
129$tmp = !
getDolGlobalString(
'MAIN_DEFAULT_WORKING_HOURS') ?
'9-18' : $conf->global->MAIN_DEFAULT_WORKING_HOURS;
130$tmp = str_replace(
' ',
'', $tmp);
131$tmparray = explode(
'-', $tmp);
132$begin_h = GETPOSTISSET(
'begin_h') ?
GETPOSTINT(
'begin_h') : ($tmparray[0] !=
'' ? $tmparray[0] : 9);
133$end_h = GETPOSTISSET(
'end_h') ?
GETPOSTINT(
'end_h') : ($tmparray[1] !=
'' ? $tmparray[1] : 18);
134if ($begin_h < 0 || $begin_h > 23) {
137if ($end_h < 1 || $end_h > 24) {
140if ($end_h <= $begin_h) {
141 $end_h = $begin_h + 1;
144$tmp = !
getDolGlobalString(
'MAIN_DEFAULT_WORKING_DAYS') ?
'1-5' : $conf->global->MAIN_DEFAULT_WORKING_DAYS;
145$tmp = str_replace(
' ',
'', $tmp);
146$tmparray = explode(
'-', $tmp);
147$begin_d = GETPOSTISSET(
'begin_d') ?
GETPOSTINT(
'begin_d') : ($tmparray[0] !=
'' ? $tmparray[0] : 1);
148$end_d = GETPOSTISSET(
'end_d') ?
GETPOSTINT(
'end_d') : ($tmparray[1] !=
'' ? $tmparray[1] : 5);
149if ($begin_d < 1 || $begin_d > 7) {
152if ($end_d < 1 || $end_d > 7) {
155if ($end_d < $begin_d) {
156 $end_d = $begin_d + 1;
159if ($status ==
'' && !GETPOSTISSET(
'search_status')) {
160 $status = ((!
getDolGlobalString(
'AGENDA_DEFAULT_FILTER_STATUS') || $disabledefaultvalues) ?
'' : $conf->global->AGENDA_DEFAULT_FILTER_STATUS);
163if (empty($mode) && !GETPOSTISSET(
'mode')) {
167if (
GETPOST(
'viewcal',
'alpha') && $mode !=
'show_day' && $mode !=
'show_week' && $mode !=
'show_peruser') {
168 $mode =
'show_month';
171if (
GETPOST(
'viewweek',
'alpha') || $mode ==
'show_week') {
173 $week = ($week ? $week : idate(
"W"));
174 $day = ($day ? $day : idate(
"d"));
176if (
GETPOST(
'viewday',
'alpha') || $mode ==
'show_day') {
178 $day = ($day ? $day : idate(
"d"));
184$langs->loadLangs(array(
'users',
'agenda',
'other',
'commercial'));
187$hookmanager->initHooks(array(
'agenda'));
190if ($user->socid && $socid) {
194$search_status = $status;
215 'maxprint' => $maxprint,
217 'filtert' => $filtert,
218 'showbirthday' => $showbirthday,
219 'canedit' => $canedit,
220 'optioncss' => $optioncss,
221 'actioncode' => $actioncode,
223 'resourceid' => $resourceid,
224 'usergroup' => $usergroup,
226$reshook = $hookmanager->executeHooks(
'beforeAgendaPerUser', $parameters, $object, $action);
231$form =
new Form($db);
232$companystatic =
new Societe($db);
234$help_url =
'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:Modul_Terminplanung';
235llxHeader(
'', $langs->trans(
"Agenda"), $help_url);
239$nowyear = $nowarray[
'year'];
240$nowmonth = $nowarray[
'mon'];
241$nowday = $nowarray[
'mday'];
245$listofextcals = array();
248$first_day = $prev[
'first_day'];
249$first_month = $prev[
'first_month'];
250$first_year = $prev[
'first_year'];
252$week = $prev[
'week'];
256$next_year = $next[
'year'];
257$next_month = $next[
'month'];
258$next_day = $next[
'day'];
260$max_day_in_month = idate(
"t",
dol_mktime(0, 0, 0, $month, 1, $year));
266$title = $langs->trans(
"DoneAndToDoActions");
267if ($status ==
'done') {
268 $title = $langs->trans(
"DoneActions");
270if ($status ==
'todo') {
271 $title = $langs->trans(
"ToDoActions");
275if ($actioncode || GETPOSTISSET(
'search_actioncode')) {
276 if (is_array($actioncode)) {
277 foreach ($actioncode as $str_action) {
278 $param .=
"&search_actioncode[]=".urlencode($str_action);
281 $param .=
"&search_actioncode=".urlencode($actioncode);
284if ($resourceid > 0) {
285 $param .=
"&search_resourceid=".urlencode((
string) ($resourceid));
288if ($status || GETPOSTISSET(
'status') || GETPOSTISSET(
'search_status')) {
289 $param .=
"&search_status=".urlencode($status);
292 $param .=
"&search_filter=".urlencode($filter);
295 $param .=
"&search_filtert=".urlencode($filtert);
298 $param .=
"&search_usergroup=".urlencode((
string) ($usergroup));
301 $param .=
"&search_socid=".urlencode((
string) ($socid));
304 $param .=
"&search_showbirthday=1";
307 $param .=
"&search_projectid=".urlencode((
string) ($pid));
310 $param .=
"&search_type=".urlencode($type);
312if ($mode !=
'show_peruser') {
313 $param .=
'&mode='.urlencode((
string) $mode);
316 $param .=
'&begin_h='.((int) $begin_h);
319 $param .=
'&end_h='.((int) $end_h);
322 $param .=
'&begin_d='.((int) $begin_d);
325 $param .=
'&end_d='.((int) $end_d);
327if ($search_categ_cus != 0) {
328 $param .=
'&search_categ_cus='.urlencode((
string) ($search_categ_cus));
330$param .=
"&maxprint=".urlencode((
string) ($maxprint));
332$paramnoactionodate = $param;
337$prev_year = $prev[
'prev_year'];
338$prev_month = $prev[
'prev_month'];
339$prev_day = $prev[
'prev_day'];
340$first_day = $prev[
'first_day'];
341$first_month = $prev[
'first_month'];
342$first_year = $prev[
'first_year'];
344$week = $prev[
'week'];
348$next_year = $next[
'year'];
349$next_month = $next[
'month'];
350$next_day = $next[
'day'];
354$firstdaytoshow =
dol_mktime(0, 0, 0, $first_month, $first_day, $first_year,
'tzuserrel');
355$nb_weeks_to_show = (
getDolGlobalString(
'AGENDA_NB_WEEKS_IN_VIEW_PER_USER')) ? ((
int) $conf->global->AGENDA_NB_WEEKS_IN_VIEW_PER_USER * 7) : 7;
361$max_day_in_month = idate(
"t",
dol_mktime(0, 0, 0, $month, 1, $year,
'gmt'));
364$picto =
'calendarweek';
367$nav =
'<div class="navselectiondate inline-block nowraponall">';
368$nav .=
"<a href=\"?year=".$prev_year.
"&month=".$prev_month.
"&day=".$prev_day.$param.
"\"><i class=\"fa fa-chevron-left\" title=\"".
dol_escape_htmltag($langs->trans(
"Previous")).
"\"></i></a> \n";
369$nav .=
" <span id=\"month_name\">".dol_print_date(
dol_mktime(0, 0, 0, $first_month, $first_day, $first_year),
"%Y").
", ".$langs->trans(
"Week").
" ".$week;
371$nav .=
" <a href=\"?year=".$next_year.
"&month=".$next_month.
"&day=".$next_day.$param.
"\"><i class=\"fa fa-chevron-right\" title=\"".
dol_escape_htmltag($langs->trans(
"Next")).
"\"></i></a>\n";
372if (empty($conf->dol_optimize_smallscreen)) {
373 $nav .=
" <a href=\"?year=".$nowyear.
"&month=".$nowmonth.
"&day=".$nowday.$param.
'" class="datenowlink">'.$langs->trans(
"Today").
'</a> ';
376$nav .= $form->selectDate($dateselect,
'dateselect', 0, 0, 1,
'', 1, 0);
377$nav .=
' <button type="submit" class="liste_titre button_search" name="button_search_x" value="x"><span class="fa fa-search"></span></button>';
380$param .=
'&year='.urlencode((
string) ($year)).
'&month='.urlencode((
string) ($month)).($day ?
'&day='.urlencode((
string) ($day)) :
'');
384$paramnoaction = preg_replace(
'/action=[a-z_]+/',
'', $param);
388print
'<form method="POST" id="searchFormList" class="listactionsfilter" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
390$showextcals = $listofextcals;
392if ($conf->use_javascript_ajax) {
394 $s .=
'<script type="text/javascript">'.
"\n";
395 $s .=
'jQuery(document).ready(function () {'.
"\n";
396 $s .=
'jQuery("#check_mytasks").click(function() { jQuery(".family_mytasks").toggle(); jQuery(".family_other").toggle(); });'.
"\n";
397 $s .=
'jQuery("#check_birthday").click(function() { jQuery(".family_birthday").toggle(); });'.
"\n";
398 $s .=
'jQuery(".family_birthday").toggle();'.
"\n";
399 if ($mode ==
"show_week" || $mode ==
"show_month" || empty($mode)) {
400 $s .=
'jQuery( "td.sortable" ).sortable({connectWith: ".sortable",placeholder: "ui-state-highlight",items: "div:not(.unsortable)", receive: function( event, ui ) {';
403 $s .=
'</script>'.
"\n";
404 if (!empty($conf->use_javascript_ajax)) {
405 $s .=
'<div class="nowrap clear float"><input type="checkbox" id="check_mytasks" name="check_mytasks" checked disabled> '.$langs->trans(
"LocalAgenda").
' </div>';
406 if (is_array($showextcals) && count($showextcals) > 0) {
407 foreach ($showextcals as $val) {
408 $htmlname = md5($val[
'name']);
409 $s .=
'<script type="text/javascript">'.
"\n";
410 $s .=
'jQuery(document).ready(function () {'.
"\n";
411 $s .=
' jQuery("#check_ext'.$htmlname.
'").click(function() {';
412 $s .=
' /* alert("'.$htmlname.
'"); */';
413 $s .=
' jQuery(".family_ext'.$htmlname.
'").toggle();';
416 $s .=
'</script>'.
"\n";
417 $s .=
'<div class="nowrap float"><input type="checkbox" id="check_ext'.$htmlname.
'" name="check_ext'.$htmlname.
'" checked> '.$val [
'name'].
' </div>';
424 $parameters = array();
425 $reshook = $hookmanager->executeHooks(
'addCalendarChoice', $parameters, $object, $action);
426 if (empty($reshook)) {
427 $s .= $hookmanager->resPrint;
428 } elseif ($reshook > 1) {
429 $s = $hookmanager->resPrint;
434$mode =
'show_peruser';
435$massactionbutton =
'';
438$viewmode =
'<div class="navmode inline-block">';
440$viewmode .=
'<a class="btnTitle'.($mode ==
'list' ?
' btnTitleSelected' :
'').
' reposition" href="'.DOL_URL_ROOT.
'/comm/action/list.php?mode=show_list&restore_lastsearch_values=1'.$paramnoactionodate.
'">';
442$viewmode .=
img_picto($langs->trans(
"List"),
'object_calendarlist',
'class="imgforviewmode pictoactionview block"');
444$viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone inline-block width75 divoverflow">'.$langs->trans(
"ViewList").
'</span></a>';
446$viewmode .=
'<a class="btnTitle'.($mode ==
'show_month' ?
' btnTitleSelected' :
'').
' reposition" href="'.DOL_URL_ROOT.
'/comm/action/index.php?mode=show_month&year='.
dol_print_date(
$object->datep,
'%Y').
'&month='.
dol_print_date(
$object->datep,
'%m').
'&day='.
dol_print_date(
$object->datep,
'%d').$paramnoactionodate.
'">';
448$viewmode .=
img_picto($langs->trans(
"ViewCal"),
'object_calendarmonth',
'class="pictoactionview block"');
450$viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone inline-block width75 divoverflow">'.$langs->trans(
"ViewCal").
'</span></a>';
452$viewmode .=
'<a class="btnTitle'.($mode ==
'show_week' ?
' btnTitleSelected' :
'').
' reposition" href="'.DOL_URL_ROOT.
'/comm/action/index.php?mode=show_week&year='.
dol_print_date(
$object->datep,
'%Y').
'&month='.
dol_print_date(
$object->datep,
'%m').
'&day='.
dol_print_date(
$object->datep,
'%d').$paramnoactionodate.
'">';
454$viewmode .=
img_picto($langs->trans(
"ViewWeek"),
'object_calendarweek',
'class="pictoactionview block"');
456$viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone inline-block width75 divoverflow">'.$langs->trans(
"ViewWeek").
'</span></a>';
458$viewmode .=
'<a class="btnTitle'.($mode ==
'show_day' ?
' btnTitleSelected' :
'').
' reposition" href="'.DOL_URL_ROOT.
'/comm/action/index.php?mode=show_day&year='.
dol_print_date(
$object->datep,
'%Y').
'&month='.
dol_print_date(
$object->datep,
'%m').
'&day='.
dol_print_date(
$object->datep,
'%d').$paramnoactionodate.
'">';
460$viewmode .=
img_picto($langs->trans(
"ViewDay"),
'object_calendarday',
'class="pictoactionview block"');
462$viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone inline-block width75 divoverflow">'.$langs->trans(
"ViewDay").
'</span></a>';
464$viewmode .=
'<a class="btnTitle'.($mode ==
'show_peruser' ?
' btnTitleSelected' :
'').
' reposition marginrightonly" href="'.DOL_URL_ROOT.
'/comm/action/peruser.php?mode=show_peruser&year='.
dol_print_date(
$object->datep,
'%Y').
'&month='.
dol_print_date(
$object->datep,
'%m').
'&day='.
dol_print_date(
$object->datep,
'%d').$paramnoactionodate.
'">';
466$viewmode .=
img_picto($langs->trans(
"ViewPerUser"),
'object_calendarperuser',
'class="pictoactionview block"');
468$viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone inline-block width75 divoverflow" title="'.dolPrintHTML($langs->trans(
"ViewPerUser")).
'">'.$langs->trans(
"ViewPerUser").
'</span></a>';
471$parameters = array();
473$reshook = $hookmanager->executeHooks(
'addCalendarView', $parameters, $object, $action);
474if (empty($reshook)) {
475 $viewmode .= $hookmanager->resPrint;
476} elseif ($reshook > 1) {
477 $viewmode = $hookmanager->resPrint;
480$viewmode .=
'</div>';
482$viewmode .=
'<span class="marginrightonly"></span>';
487if ($user->hasRight(
'agenda',
'myactions',
'create') || $user->hasRight(
'agenda',
'allactions',
'create')) {
490 $newparam .=
'&month='.urlencode(str_pad((
string) $month, 2,
"0", STR_PAD_LEFT)).
'&year='.((int) $tmpforcreatebutton[
'year']);
491 if ($begin_h !==
'') {
492 $newparam .=
'&begin_h='.((int) $begin_h);
495 $newparam .=
'&end_h='.((int) $end_h);
497 if ($begin_d !==
'') {
498 $newparam .=
'&begin_d='.((int) $begin_d);
501 $newparam .=
'&end_d='.((int) $end_d);
504 $urltocreateaction = DOL_URL_ROOT.
'/comm/action/card.php?action=create';
505 $urltocreateaction .=
'&apyear='.$tmpforcreatebutton[
'year'].
'&apmonth='.$tmpforcreatebutton[
'mon'].
'&apday='.$tmpforcreatebutton[
'mday'].
'&aphour='.$tmpforcreatebutton[
'hours'].
'&apmin='.$tmpforcreatebutton[
'minutes'];
506 $urltocreateaction .=
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].($newparam ?
'?'.$newparam :
''));
508 $newcardbutton .=
dolGetButtonTitle($langs->trans(
"AddAction"),
'',
'fa fa-plus-circle', $urltocreateaction);
513print_barre_liste($langs->trans(
"Agenda"), $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, -1,
'object_action', 0, $nav.
'<span class="marginleftonly"></span>'.$newcardbutton,
'', $limit, 1, 0, 1, $viewmode);
519$s .=
"\n".
'<!-- Div to calendars selectors -->'.
"\n";
522$newtitle =
'<div class="nowrap clear inline-block minheight30">';
523$newtitle .=
'<input type="checkbox" id="check_mytasks" name="check_mytasks" checked disabled> '.$langs->trans(
"LocalAgenda").
' ';
524$newtitle .=
'</div>';
530$parameters = array();
531$reshook = $hookmanager->executeHooks(
'addCalendarChoice', $parameters, $object, $action);
532if (empty($reshook)) {
533 $s .= $hookmanager->resPrint;
534} elseif ($reshook > 1) {
535 $s = $hookmanager->resPrint;
538$s .=
"\n".
'<!-- End div to calendars selectors -->'.
"\n";
542print
'<div class="liste_titre liste_titre_bydiv centpercent">';
543print_actions_filter($form, $canedit, $search_status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, -1, $actioncode, $usergroup,
'', $resourceid, $search_categ_cus);
548$eventarray = array();
556$sql .=
" a.id, a.label,";
559$sql .=
" a.percent,";
560$sql .=
" a.fk_user_author,a.fk_user_action,";
561$sql .=
" a.transparency, a.priority, a.fulldayevent, a.location,";
562$sql .=
" a.fk_soc, a.fk_contact, a.fk_element, a.elementtype, a.fk_project,";
563$sql .=
" ca.code, ca.libelle as type_label, ca.color, ca.type as type_type, ca.picto as type_picto";
564$sql .=
" FROM ".MAIN_DB_PREFIX.
"c_actioncomm as ca, ".MAIN_DB_PREFIX.
"actioncomm as a";
566if ($resourceid > 0) {
567 $sql .=
", ".MAIN_DB_PREFIX.
"element_resources as r";
570if ($filtert > 0 || $usergroup > 0) {
571 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"actioncomm_resources as ar";
572 $sql .=
" ON ar.fk_actioncomm = a.id AND ar.element_type='user'";
574 $sql .=
" AND ar.fk_element = ".((int) $filtert);
576 if ($usergroup > 0) {
577 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"usergroup_user as ugu ON ugu.fk_user = ar.fk_element AND ugu.fk_usergroup = ".((int) $usergroup);
581$sql .=
" WHERE a.fk_action = ca.id";
582$sql .=
" AND a.entity IN (".getEntity(
'agenda').
")";
584if (!empty($actioncode)) {
586 if ($actioncode ==
'AC_NON_AUTO') {
587 $sql .=
" AND ca.type != 'systemauto'";
588 } elseif ($actioncode ==
'AC_ALL_AUTO') {
589 $sql .=
" AND ca.type = 'systemauto'";
591 if ($actioncode ==
'AC_OTH') {
592 $sql .=
" AND ca.type != 'systemauto'";
594 if ($actioncode ==
'AC_OTH_AUTO') {
595 $sql .=
" AND ca.type = 'systemauto'";
599 if ($actioncode ==
'AC_NON_AUTO') {
600 $sql .=
" AND ca.type != 'systemauto'";
601 } elseif ($actioncode ==
'AC_ALL_AUTO') {
602 $sql .=
" AND ca.type = 'systemauto'";
604 if (is_array($actioncode)) {
605 $sql .=
" AND ca.code IN (".$db->sanitize(
"'".implode(
"','", $actioncode).
"'", 1).
")";
607 $sql .=
" AND ca.code IN (".$db->sanitize(
"'".implode(
"','", explode(
',', $actioncode)).
"'", 1).
")";
612if ($resourceid > 0) {
613 $sql .=
" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".((int) $resourceid);
616 $sql .=
" AND a.fk_project = ".((int) $pid);
620if (!$user->hasRight(
'societe',
'client',
'voir')) {
621 $search_sale = $user->id;
624if ($search_sale && $search_sale !=
'-1') {
625 if ($search_sale == -2) {
626 $sql .=
" AND NOT EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = a.fk_soc)";
627 } elseif ($search_sale > 0) {
628 $sql .=
" AND EXISTS (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX.
"societe_commerciaux as sc WHERE sc.fk_soc = a.fk_soc AND sc.fk_user = ".((int) $search_sale).
")";
633 $sql .=
" AND a.fk_soc = ".((int) $socid);
636if ($mode ==
'show_day') {
638 $sql .=
" (a.datep BETWEEN '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
639 $sql .=
" AND '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
641 $sql .=
" (a.datep2 BETWEEN '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
642 $sql .=
" AND '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
644 $sql .=
" (a.datep < '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
645 $sql .=
" AND a.datep2 > '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
650 $sql .=
" (a.datep BETWEEN '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
651 $sql .=
" AND '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
653 $sql .=
" (a.datep2 BETWEEN '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
654 $sql .=
" AND '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
656 $sql .=
" (a.datep < '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
657 $sql .=
" AND a.datep2 > '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
661 $sql .=
" AND ca.id = ".((int) $type);
664 $sql .=
" AND a.percent = 0";
666if ($status ===
'na') {
668 $sql .=
" AND a.percent = -1";
670if ($status ==
'50') {
672 $sql .=
" AND (a.percent > 0 AND a.percent < 100)";
674if ($status ==
'done' || $status ==
'100') {
675 $sql .=
" AND (a.percent = 100)";
677if ($status ==
'todo') {
678 $sql .=
" AND (a.percent >= 0 AND a.percent < 100)";
681if ($search_categ_cus != -1) {
682 if ($search_categ_cus == -2) {
683 $sql .=
" AND NOT EXISTS (SELECT ca.fk_actioncomm FROM ".MAIN_DB_PREFIX.
"categorie_actioncomm as ca WHERE ca.fk_actioncomm = a.id)";
684 } elseif ($search_categ_cus > 0) {
685 $sql .=
" AND EXISTS (SELECT ca.fk_actioncomm FROM ".MAIN_DB_PREFIX.
"categorie_actioncomm as ca WHERE ca.fk_actioncomm = a.id AND ca.fk_categorie IN (".$db->sanitize($search_categ_cus).
"))";
689$sql .= $db->order(
"fk_user_action, datep");
692dol_syslog(
"comm/action/peruser.php", LOG_DEBUG);
693$resql = $db->query($sql);
695 $num = $db->num_rows($resql);
699 $obj = $db->fetch_object($resql);
708 $datep = $db->jdate($obj->datep);
709 $datep2 = $db->jdate($obj->datep2);
714 $event->id = $obj->id;
715 $event->datep = $datep;
716 $event->datef = $datep2;
717 $event->type_code = $obj->code;
718 $event->type_color = $obj->color;
719 $event->label = $obj->label;
720 $event->percentage = $obj->percent;
721 $event->authorid = $obj->fk_user_author;
722 $event->userownerid = $obj->fk_user_action;
723 $event->priority = $obj->priority;
724 $event->fulldayevent = $obj->fulldayevent;
725 $event->location = $obj->location;
726 $event->transparency = $obj->transparency;
728 $event->fk_project = $obj->fk_project;
730 $event->socid = $obj->fk_soc;
731 $event->contact_id = $obj->fk_contact;
733 $event->fk_element = $obj->fk_element;
734 $event->elementtype = $obj->elementtype;
738 $event->date_start_in_calendar = $datep;
739 if ($datep2 !=
'' && $datep2 >= $datep) {
740 $event->date_end_in_calendar = $datep2;
742 $event->date_end_in_calendar = $datep;
748 if ($event->date_end_in_calendar < $firstdaytoshow ||
749 $event->date_start_in_calendar >= $lastdaytoshow) {
754 $event->fetch_userassigned();
756 if ($event->date_start_in_calendar < $firstdaytoshow) {
757 $event->date_start_in_calendar = $firstdaytoshow;
759 if ($event->date_end_in_calendar >= $lastdaytoshow) {
760 $event->date_end_in_calendar = ($lastdaytoshow - 1);
764 $daycursor = $event->date_start_in_calendar;
773 $daykey =
dol_mktime(0, 0, 0, $mois, $jour, $annee,
'gmt');
777 $eventarray[$daykey][] = $event;
780 $daykey += 60 * 60 * 24;
781 if ($daykey > $event->date_end_in_calendar) {
797$cachethirdparties = array();
798$cachecontacts = array();
799$cacheusers = array();
802$color_file = DOL_DOCUMENT_ROOT.
"/theme/".$conf->theme.
"/theme_vars.inc.php";
803if (is_readable($color_file)) {
806if (!is_array($theme_datacolor)) {
807 $theme_datacolor = array(array(120, 130, 150), array(200, 160, 180), array(190, 190, 220));
812$newparam = preg_replace(
'/showbirthday=/i',
'showbirthday_=', $newparam);
813$newparam = preg_replace(
'/mode=show_month&?/i',
'', $newparam);
814$newparam = preg_replace(
'/mode=show_week&?/i',
'', $newparam);
815$newparam = preg_replace(
'/day=[0-9]+&?/i',
'', $newparam);
816$newparam = preg_replace(
'/month=[0-9]+&?/i',
'', $newparam);
817$newparam = preg_replace(
'/year=[0-9]+&?/i',
'', $newparam);
818$newparam = preg_replace(
'/viewweek=[0-9]+&?/i',
'', $newparam);
819$newparam = preg_replace(
'/showbirthday_=/i',
'showbirthday=', $newparam);
820$newparam .=
'&viewweek=1';
822echo
'<input type="hidden" name="actionmove" value="mupdate">';
823echo
'<input type="hidden" name="backtopage" value="'.dol_escape_htmltag($_SERVER[
'PHP_SELF']).
'?'.
dol_escape_htmltag($_SERVER[
'QUERY_STRING']).
'">';
824echo
'<input type="hidden" name="newdate" id="newdate">';
831$currentdaytoshow = $firstdaytoshow;
832echo
'<div class="div-table-responsive">';
835while ($currentdaytoshow < $lastdaytoshow) {
836 echo
'<table class="centpercent noborder nocellnopadd cal_month">';
838 echo
'<tr class="liste_titre">';
839 echo
'<td class="nopaddingtopimp nopaddingbottomimp nowraponsmartphone">';
841 if ($canedit && $mode ==
'show_peruser') {
843 print
'<span class="hideonsmartphone" title="'.$langs->trans(
"VisibleDaysRange").
'">';
844 print
img_picto(
'',
'clock',
'class="fawidth30 inline-block marginleftonly"');
845 print $langs->trans(
"DaysOfWeek").
'</span>';
847 print
'<div class="ui-grid-a inline-block"><div class="ui-block-a nowraponall">';
848 print
'<input type="number" class="short" name="begin_d" value="'.$begin_d.
'" min="1" max="7">';
849 if (empty($conf->dol_use_jmobile)) {
852 print
'</div><div class="ui-block-b">';
854 print
'<input type="number" class="short" name="end_d" value="'.$end_d.
'" min="1" max="7">';
855 print
'</div></div>';
861 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
865 echo
'<td align="center" colspan="'.($end_h - $begin_h).
'">';
866 echo
'<span class="bold spandayofweek">'.$langs->trans(
"Day".(($i + (isset($conf->global->MAIN_START_WEEK) ? $conf->global->MAIN_START_WEEK : 1)) % 7)).
'</span>';
878 echo
'<tr class="liste_titre">';
882 print
'<span class="hideonsmartphone" title="'.$langs->trans(
"VisibleTimeRange").
'">';
883 print
img_picto(
'',
'clock',
'class="fawidth30 inline-block marginleftonly"');
884 print $langs->trans(
"Hours").
'</span>';
886 print
'<div class="ui-grid-a inline-block"><div class="ui-block-a nowraponall">';
887 print
'<input type="number" class="short" name="begin_h" value="'.$begin_h.
'" min="0" max="23">';
888 if (empty($conf->dol_use_jmobile)) {
891 print
'</div><div class="ui-block-b">';
893 print
'<input type="number" class="short" name="end_h" value="'.$end_h.
'" min="1" max="24">';
894 if (empty($conf->dol_use_jmobile)) {
895 print
' '.$langs->trans(
"H");
897 print
'</div></div>';
902 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
906 for ($h = $begin_h; $h < $end_h; $h++) {
907 echo
'<td class="center">';
908 print
'<small style="font-family: courier">'.sprintf(
"%02d", $h).
'</small>';
918 $usernames = array();
919 $usernamesid = array();
922 foreach ($eventarray as $daykey => $notused) {
924 foreach ($eventarray[$daykey] as $index => $event) {
925 $event->fetch_userassigned();
926 $listofuserid = $event->userassigned;
927 foreach ($listofuserid as $userid => $tmp) {
928 if (!in_array($userid, $usernamesid)) {
929 $usernamesid[$userid] = $userid;
936 $sql =
"SELECT u.rowid, u.lastname as lastname, u.firstname, u.statut, u.login, u.admin, u.entity";
937 $sql .=
" FROM ".$db->prefix().
"user as u";
938 if (isModEnabled(
'multicompany') &&
getDolGlobalInt(
'MULTICOMPANY_TRANSVERSE_MODE')) {
939 $sql .=
" WHERE u.rowid IN (";
940 $sql .=
" SELECT ug.fk_user FROM ".$db->prefix().
"usergroup_user as ug";
941 $sql .=
" WHERE ug.entity IN (".getEntity(
'usergroup').
")";
942 if ($usergroup > 0) {
943 $sql .=
" AND ug.fk_usergroup = ".((int) $usergroup);
947 if ($usergroup > 0) {
948 $sql .=
" LEFT JOIN ".$db->prefix().
"usergroup_user as ug ON u.rowid = ug.fk_user";
950 $sql .=
" WHERE u.entity IN (".getEntity(
'user').
")";
951 if ($usergroup > 0) {
952 $sql .=
" AND ug.fk_usergroup = ".((int) $usergroup);
955 $sql .=
" AND u.statut = 1";
957 $sql .=
" AND u.rowid = ".((int) $filtert);
959 if ($usergroup > 0) {
960 $sql .=
" AND ug.fk_usergroup = ".((int) $usergroup);
962 if ($user->socid > 0) {
964 $sql .=
" AND u.fk_soc = ".((int) $user->socid);
968 $resql = $db->query($sql);
970 $num = $db->num_rows($resql);
974 $obj = $db->fetch_object($resql);
975 $usernamesid[$obj->rowid] = $obj->rowid;
984 foreach ($usernamesid as $id) {
985 $tmpuser =
new User($db);
986 $result = $tmpuser->fetch($id);
987 $usernames[] = $tmpuser;
991 $colorsbytype = array();
992 $labelbytype = array();
993 $sql =
"SELECT code, color, libelle as label FROM ".MAIN_DB_PREFIX.
"c_actioncomm ORDER BY position";
994 $resql = $db->query($sql);
995 while ($obj = $db->fetch_object($resql)) {
996 $colorsbytype[$obj->code] = $obj->color;
997 $labelbytype[$obj->code] = $obj->label;
1005 foreach ($usernames as $username) {
1011 echo
'<td class="tdoverflowmax100 cal_current_month cal_peruserviewname'.($var ?
' cal_impair' :
'').
'">';
1012 print
'<span class="paddingrightimp">';
1013 print $username->getNomUrl(-1,
'', 0, 0, 20, 1,
'',
'paddingleft');
1020 for ($iter_day = 0; $iter_day < 8; $iter_day++) {
1021 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
1034 $style =
'cal_current_month';
1035 if ($iter_day == 6) {
1036 $style .=
' cal_other_month';
1039 if ($todayarray[
'mday'] == $tmpday && $todayarray[
'mon'] == $tmpmonth && $todayarray[
'year'] == $tmpyear) {
1043 $style =
'cal_today_peruser';
1046 show_day_events2($username, $tmpday, $tmpmonth, $tmpyear, 0, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, $showheader, $colorsbytype, $var);
1051 $showheader =
false;
1063 $langs->load(
"commercial");
1064 print
'<br>'.$langs->trans(
"Legend").
': <br>';
1065 foreach ($colorsbytype as $code => $color) {
1067 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div style="'.($color ?
'background: #'.$color.
';' :
'').
'width:16px; float: left; margin-right: 4px;"> </div>';
1068 print $langs->trans(
"Action".$code) !=
"Action".$code ? $langs->trans(
"Action".$code) : $labelbytype[$code];
1074 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div class="peruser_busy" style="width:16px; float: left; margin-right: 4px;"> </div>';
1075 print $langs->trans(
"Other");
1084print
"\n".
'</form>';
1088print
'<script type="text/javascript">
1089jQuery(document).ready(function() {
1090 jQuery(".onclickopenref").click(function() {
1091 console.log("We click on a class onclickopenref");
1093 var ref=$(this).attr(\'ref\');
1094 var res = ref.split("_");
1095 var userid = res[1];
1102 if (ids == \'none\') /* No event */
1104 /* alert(\'no event\'); */
1105 url = "'.DOL_URL_ROOT.
'/comm/action/card.php?action=create&assignedtouser="+userid+"&datep="+year+month+day+hour+min+"00&backtopage='.urlencode($_SERVER[
"PHP_SELF"].
'?year='.$year.
'&month='.$month.
'&day='.$day.($begin_h !==
'' ?
'&begin_h='.$begin_h :
'').($end_h !==
'' ?
'&end_h='.$end_h :
'').($begin_d !==
'' ?
'&begin_d='.$begin_d :
'').($end_d !==
'' ?
'&end_d='.$end_d :
'')).
'"
1106 window.location.href = url;
1108 else if (ids.indexOf(",") > -1) /* There is several events */
1110 /* alert(\'several events\'); */
1111 url = "'.DOL_URL_ROOT.
'/comm/action/list.php?mode=show_list&search_actioncode="+jQuery("#search_actioncode").val()+"&search_status="+jQuery("#selectsearch_status").val()+"&filtert="+userid+"&dateselectyear="+year+"&dateselectmonth="+month+"&dateselectday="+day;
1112 window.location.href = url;
1114 else /* One event */
1116 /* alert(\'one event\'); */
1117 url = "'.DOL_URL_ROOT.
'/comm/action/card.php?action=view&id="+ids
1118 window.location.href = url;
1151function show_day_events2($username, $day, $month, $year, $monthshown, $style, &$eventarray, $maxprint = 0, $maxnbofchar = 16, $newparam =
'', $showinfo = 0, $minheight = 60, $showheader =
false, $colorsbytype = array(), $var =
false)
1154 global $user, $conf, $langs, $hookmanager, $action;
1155 global $filter, $filtert, $status, $actioncode;
1156 global $theme_datacolor;
1157 global $cachethirdparties, $cachecontacts, $cacheusers, $cacheprojects, $colorindexused;
1158 global $begin_h, $end_h;
1169 $numicals = array();
1172 $colorindexused[$user->id] = 0;
1173 $nextindextouse = count($colorindexused);
1180 foreach ($eventarray as $daykey => $notused) {
1187 if ($day == $jour && (
int) $month == (
int) $mois && $year == $annee) {
1191 foreach ($eventarray[$daykey] as $index => $event) {
1195 $keysofuserassigned = array_keys($event->userassigned);
1196 $ponct = ($event->date_start_in_calendar == $event->date_end_in_calendar);
1198 if (!in_array($username->id, $keysofuserassigned)) {
1203 $parameters = array();
1204 $reshook = $hookmanager->executeHooks(
'formatEvent', $parameters, $event, $action);
1213 if (in_array($user->id, $keysofuserassigned)) {
1214 $cssclass =
'family_mytasks';
1216 if (empty($cacheusers[$event->userownerid])) {
1217 $newuser =
new User($db);
1218 $newuser->fetch($event->userownerid);
1219 $cacheusers[$event->userownerid] = $newuser;
1224 if (!empty($cacheusers[$event->userownerid]->color)) {
1225 $color = $cacheusers[$event->userownerid]->color;
1229 $color = $event->type_color;
1231 } elseif ($event->type_code ==
'ICALEVENT') {
1233 if (!empty($event->icalname)) {
1240 $color = $event->icalcolor;
1241 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other unsortable');
1242 } elseif ($event->type_code ==
'BIRTHDAY') {
1245 $cssclass =
'family_birthday unsortable';
1246 $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1249 $color = ($event->icalcolor ? $event->icalcolor : -1);
1250 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other');
1252 if (empty($cacheusers[$event->userownerid])) {
1253 $newuser =
new User($db);
1254 $newuser->fetch($event->userownerid);
1255 $cacheusers[$event->userownerid] = $newuser;
1260 if (!empty($cacheusers[$event->userownerid]->color)) {
1261 $color = $cacheusers[$event->userownerid]->color;
1265 $color = $event->type_color;
1271 $idusertouse = ($event->userownerid ? $event->userownerid : 0);
1272 if (isset($colorindexused[$idusertouse])) {
1273 $colorindex = $colorindexused[$idusertouse];
1275 $colorindex = $nextindextouse;
1276 $colorindexused[$idusertouse] = $colorindex;
1277 if (!empty($theme_datacolor[$nextindextouse + 1])) {
1282 $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1286 for ($h = $begin_h; $h < $end_h; $h++) {
1289 if (empty($event->fulldayevent)) {
1290 $a =
dol_mktime((
int) $h, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1291 $b =
dol_mktime((
int) $h, 15, 0, $month, $day, $year,
'tzuserrel', 0);
1292 $b1 =
dol_mktime((
int) $h, 30, 0, $month, $day, $year,
'tzuserrel', 0);
1293 $b2 =
dol_mktime((
int) $h, 45, 0, $month, $day, $year,
'tzuserrel', 0);
1294 $c =
dol_mktime((
int) $h + 1, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1296 $dateendtouse = $event->date_end_in_calendar;
1297 if ($dateendtouse == $event->date_start_in_calendar) {
1303 if ($event->date_start_in_calendar < $b && $dateendtouse > $a) {
1304 $busy = $event->transparency;
1305 $cases1[$h][$event->id][
'busy'] = $busy;
1306 $cases1[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1307 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1308 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1309 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1310 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1311 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1313 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1316 if ($event->label) {
1317 $cases1[$h][$event->id][
'string'] .=
' - '.$event->label;
1319 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1320 $cases1[$h][$event->id][
'color'] = $color;
1321 if ($event->fk_project > 0) {
1322 if (empty($cacheprojects[$event->fk_project])) {
1324 $tmpproj->fetch($event->fk_project);
1325 $cacheprojects[$event->fk_project] = $tmpproj;
1327 $cases1[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1329 if ($event->socid > 0) {
1330 if (empty($cachethirdparties[$event->socid])) {
1331 $tmpthirdparty =
new Societe($db);
1332 $tmpthirdparty->fetch($event->socid);
1333 $cachethirdparties[$event->socid] = $tmpthirdparty;
1335 $cases1[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1337 if ($event->contact_id > 0) {
1338 if (empty($cachecontacts[$event->contact_id])) {
1339 $tmpcontact =
new Contact($db);
1340 $tmpcontact->fetch($event->contact_id);
1341 $cachecontacts[$event->contact_id] = $tmpcontact;
1343 $cases1[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1346 if ($event->date_start_in_calendar < $b1 && $dateendtouse > $b) {
1347 $busy = $event->transparency;
1348 $cases2[$h][$event->id][
'busy'] = $busy;
1349 $cases2[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1350 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1351 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1352 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1353 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1354 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1356 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1359 if ($event->label) {
1360 $cases2[$h][$event->id][
'string'] .=
' - '.$event->label;
1362 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1363 $cases2[$h][$event->id][
'color'] = $color;
1364 if ($event->fk_project > 0) {
1365 if (empty($cacheprojects[$event->fk_project])) {
1367 $tmpproj->fetch($event->fk_project);
1368 $cacheprojects[$event->fk_project] = $tmpproj;
1370 $cases2[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1372 if ($event->socid > 0) {
1373 if (empty($cachethirdparties[$event->socid])) {
1374 $tmpthirdparty =
new Societe($db);
1375 $tmpthirdparty->fetch($event->socid);
1376 $cachethirdparties[$event->socid] = $tmpthirdparty;
1378 $cases2[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1380 if ($event->contact_id > 0) {
1381 if (empty($cachecontacts[$event->contact_id])) {
1382 $tmpcontact =
new Contact($db);
1383 $tmpcontact->fetch($event->contact_id);
1384 $cachecontacts[$event->contact_id] = $tmpcontact;
1386 $cases2[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1389 if ($event->date_start_in_calendar < $b2 && $dateendtouse > $b1) {
1390 $busy = $event->transparency;
1391 $cases3[$h][$event->id][
'busy'] = $busy;
1392 $cases3[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1393 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1394 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1395 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1396 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1397 $cases3[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1399 $cases3[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1402 if ($event->label) {
1403 $cases3[$h][$event->id][
'string'] .=
' - '.$event->label;
1405 $cases3[$h][$event->id][
'typecode'] = $event->type_code;
1406 $cases3[$h][$event->id][
'color'] = $color;
1407 if ($event->fk_project > 0) {
1408 if (empty($cacheprojects[$event->fk_project])) {
1410 $tmpproj->fetch($event->fk_project);
1411 $cacheprojects[$event->fk_project] = $tmpproj;
1413 $cases3[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1415 if ($event->socid > 0) {
1416 if (empty($cachethirdparties[$event->socid])) {
1417 $tmpthirdparty =
new Societe($db);
1418 $tmpthirdparty->fetch($event->socid);
1419 $cachethirdparties[$event->socid] = $tmpthirdparty;
1421 $cases3[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1423 if ($event->contact_id > 0) {
1424 if (empty($cachecontacts[$event->contact_id])) {
1425 $tmpcontact =
new Contact($db);
1426 $tmpcontact->fetch($event->contact_id);
1427 $cachecontacts[$event->contact_id] = $tmpcontact;
1429 $cases3[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1432 if ($event->date_start_in_calendar < $c && $dateendtouse > $b2) {
1433 $busy = $event->transparency;
1434 $cases4[$h][$event->id][
'busy'] = $busy;
1435 $cases4[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1436 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1437 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1438 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1439 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1440 $cases4[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1442 $cases4[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1445 if ($event->label) {
1446 $cases4[$h][$event->id][
'string'] .=
' - '.$event->label;
1448 $cases4[$h][$event->id][
'typecode'] = $event->type_code;
1449 $cases4[$h][$event->id][
'color'] = $color;
1450 if ($event->fk_project > 0) {
1451 if (empty($cacheprojects[$event->fk_project])) {
1453 $tmpproj->fetch($event->fk_project);
1454 $cacheprojects[$event->fk_project] = $tmpproj;
1456 $cases4[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1458 if ($event->socid > 0) {
1459 if (empty($cachethirdparties[$event->socid])) {
1460 $tmpthirdparty =
new Societe($db);
1461 $tmpthirdparty->fetch($event->socid);
1462 $cachethirdparties[$event->socid] = $tmpthirdparty;
1464 $cases4[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1466 if ($event->contact_id > 0) {
1467 if (empty($cachecontacts[$event->contact_id])) {
1468 $tmpcontact =
new Contact($db);
1469 $tmpcontact->fetch($event->contact_id);
1470 $cachecontacts[$event->contact_id] = $tmpcontact;
1472 $cases4[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1476 $busy = $event->transparency;
1477 $cases1[$h][$event->id][
'busy'] = $busy;
1478 $cases2[$h][$event->id][
'busy'] = $busy;
1479 $cases3[$h][$event->id][
'busy'] = $busy;
1480 $cases4[$h][$event->id][
'busy'] = $busy;
1481 $cases1[$h][$event->id][
'string'] = $event->label;
1482 $cases2[$h][$event->id][
'string'] = $event->label;
1483 $cases3[$h][$event->id][
'string'] = $event->label;
1484 $cases4[$h][$event->id][
'string'] = $event->label;
1485 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1486 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1487 $cases3[$h][$event->id][
'typecode'] = $event->type_code;
1488 $cases4[$h][$event->id][
'typecode'] = $event->type_code;
1489 $cases1[$h][$event->id][
'color'] = $color;
1490 $cases2[$h][$event->id][
'color'] = $color;
1491 $cases3[$h][$event->id][
'color'] = $color;
1492 $cases4[$h][$event->id][
'color'] = $color;
1503 for ($h = $begin_h; $h < $end_h; $h++) {
1512 $string1 =
' ';
1513 $string2 =
' ';
1514 $string3 =
' ';
1515 $string4 =
' ';
1520 if (isset($cases1[$h]) && $cases1[$h] !=
'') {
1522 if (count($cases1[$h]) > 1) {
1523 $title1 .= count($cases1[$h]).
' '.(count($cases1[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1527 $style1 =
'peruser_notbusy';
1529 $style1 =
'peruser_busy';
1531 foreach ($cases1[$h] as $id => $ev) {
1533 $style1 =
'peruser_busy';
1537 if (isset($cases2[$h]) && $cases2[$h] !=
'') {
1539 if (count($cases2[$h]) > 1) {
1540 $title2 .= count($cases2[$h]).
' '.(count($cases2[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1544 $style2 =
'peruser_notbusy';
1546 $style2 =
'peruser_busy';
1548 foreach ($cases2[$h] as $id => $ev) {
1550 $style2 =
'peruser_busy';
1554 if (isset($cases3[$h]) && $cases3[$h] !=
'') {
1556 if (count($cases3[$h]) > 1) {
1557 $title3 .= count($cases3[$h]).
' '.(count($cases3[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1561 $style3 =
'peruser_notbusy';
1563 $style3 =
'peruser_busy';
1565 foreach ($cases3[$h] as $id => $ev) {
1567 $style3 =
'peruser_busy';
1571 if (isset($cases4[$h]) && $cases4[$h] !=
'') {
1573 if (count($cases4[$h]) > 1) {
1574 $title4 .= count($cases4[$h]).
' '.(count($cases4[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1578 $style4 =
'peruser_notbusy';
1580 $style4 =
'peruser_busy';
1582 foreach ($cases4[$h] as $id => $ev) {
1584 $style4 =
'peruser_busy';
1593 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) && array_keys($cases1[$h])) {
1594 $ids1 = implode(
', ', array_keys($cases1[$h]));
1596 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) && array_keys($cases2[$h])) {
1597 $ids2 = implode(
', ', array_keys($cases2[$h]));
1599 if (!empty($cases3[$h]) && is_array($cases3[$h]) && count($cases3[$h]) && array_keys($cases3[$h])) {
1600 $ids3 = implode(
',', array_keys($cases3[$h]));
1602 if (!empty($cases4[$h]) && is_array($cases4[$h]) && count($cases4[$h]) && array_keys($cases4[$h])) {
1603 $ids4 = implode(
',', array_keys($cases4[$h]));
1606 if ($h == $begin_h) {
1607 echo
'<td class="'.$style.
'_peruserleft cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1609 echo
'<td class="'.$style.
' cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1612 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) == 1) {
1613 $output = array_slice($cases1[$h], 0, 1);
1614 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1615 if ($output[0][
'string']) {
1616 $title1 .= ($title1 ?
' - ' :
'').$output[0][
'string'];
1618 if ($output[0][
'color']) {
1619 $color1 = $output[0][
'color'];
1621 } elseif (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) > 1) {
1622 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1627 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) == 1) {
1628 $output = array_slice($cases2[$h], 0, 1);
1629 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1630 if ($output[0][
'string']) {
1631 $title2 .= ($title2 ?
' - ' :
'').$output[0][
'string'];
1633 if ($output[0][
'color']) {
1634 $color2 = $output[0][
'color'];
1636 } elseif (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) > 1) {
1637 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1642 if (!empty($cases3[$h]) && is_array($cases3[$h]) && count($cases3[$h]) == 1) {
1643 $output = array_slice($cases3[$h], 0, 1);
1644 $title3 = $langs->trans(
"Ref").
' '.$ids3.($title3 ?
' - '.$title3 :
'');
1645 if ($output[0][
'string']) {
1646 $title3 .= ($title3 ?
' - ' :
'').$output[0][
'string'];
1648 if ($output[0][
'color']) {
1649 $color3 = $output[0][
'color'];
1651 } elseif (!empty($cases3[$h]) && is_array($cases3[$h]) && count($cases3[$h]) > 1) {
1652 $title3 = $langs->trans(
"Ref").
' '.$ids3.($title3 ?
' - '.$title3 :
'');
1657 if (!empty($cases4[$h]) && is_array($cases4[$h]) && count($cases4[$h]) == 1) {
1658 $output = array_slice($cases4[$h], 0, 1);
1659 $title4 = $langs->trans(
"Ref").
' '.$ids3.($title4 ?
' - '.$title4 :
'');
1660 if ($output[0][
'string']) {
1661 $title4 .= ($title4 ?
' - ' :
'').$output[0][
'string'];
1663 if ($output[0][
'color']) {
1664 $color4 = $output[0][
'color'];
1666 } elseif (!empty($cases4[$h]) && is_array($cases4[$h]) && count($cases4[$h]) > 1) {
1667 $title4 = $langs->trans(
"Ref").
' '.$ids4.($title4 ?
' - '.$title4 :
'');
1671 print
'<table class="nobordernopadding case centpercent">';
1674 if ($style1 ==
'peruser_notbusy') {
1675 print
'style="border: 1px solid #'.($color1 ? $color1 :
"888").
' !important" ';
1676 } elseif ($color1) {
1677 print($color1 ?
'style="background: #'.$color1.
';"' :
'');
1680 print($style1 ? $style1.
' ' :
'');
1681 print
'onclickopenref center'.($title2 ?
' classfortooltip' :
'').($title1 ?
' cursorpointer' :
'').
'" ref="ref_'.$username->id.
'_'.sprintf(
"%04d", $year).
'_'.sprintf(
"%02d", $month).
'_'.sprintf(
"%02d", $day).
'_'.sprintf(
"%02d", $h).
'_00_'.($ids1 ? $ids1 :
'none').
'"'.($title1 ?
' title="'.$title1.
'"' :
'').
'>';
1686 if ($style2 ==
'peruser_notbusy') {
1687 print
'style="border: 1px solid #'.($color2 ? $color2 :
"888").
' !important" ';
1688 } elseif ($color2) {
1689 print($color2 ?
'style="background: #'.$color2.
';"' :
'');
1692 print($style2 ? $style2.
' ' :
'');
1693 print
'onclickopenref center'.($title2 ?
' classfortooltip' :
'').($title1 ?
' cursorpointer' :
'').
'" ref="ref_'.$username->id.
'_'.sprintf(
"%04d", $year).
'_'.sprintf(
"%02d", $month).
'_'.sprintf(
"%02d", $day).
'_'.sprintf(
"%02d", $h).
'_15_'.($ids2 ? $ids2 :
'none').
'"'.($title2 ?
' title="'.$title2.
'"' :
'').
'>';
1698 if ($style3 ==
'peruser_notbusy') {
1699 print
'style="border: 1px solid #'.($color3 ? $color3 :
"888").
' !important" ';
1700 } elseif ($color3) {
1701 print($color3 ?
'style="background: #'.$color3.
';"' :
'');
1704 print($style3 ? $style3.
' ' :
'');
1705 print
'onclickopenref center'.($title2 ?
' classfortooltip' :
'').($title3 ?
' cursorpointer' :
'').
'" ref="ref_'.$username->id.
'_'.sprintf(
"%04d", $year).
'_'.sprintf(
"%02d", $month).
'_'.sprintf(
"%02d", $day).
'_'.sprintf(
"%02d", $h).
'_30_'.($ids3 ? $ids3 :
'none').
'"'.($title3 ?
' title="'.$title3.
'"' :
'').
'>';
1710 if ($style4 ==
'peruser_notbusy') {
1711 print
'style="border: 1px solid #'.($color4 ? $color4 :
"888").
' !important" ';
1712 } elseif ($color4) {
1713 print($color4 ?
'style="background: #'.$color4.
';"' :
'');
1716 print($style4 ? $style4.
' ' :
'');
1717 print
'onclickopenref center'.($title3 ?
' classfortooltip' :
'').($title4 ?
' cursorpointer' :
'').
'" ref="ref_'.$username->id.
'_'.sprintf(
"%04d", $year).
'_'.sprintf(
"%02d", $month).
'_'.sprintf(
"%02d", $day).
'_'.sprintf(
"%02d", $h).
'_45_'.($ids4 ? $ids4 :
'none').
'"'.($title4 ?
' title="'.$title4.
'"' :
'').
'>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
print_actions_filter( $form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filtered, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid=0, $excludetype='', $resourceid=0, $search_categ_cus=0)
Show filter form in agenda view.
calendars_prepare_head($param)
Define head array for tabs of agenda setup pages.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage agenda events (actions)
Class to manage projects.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
dol_get_next_week($day, $week, $month, $year)
Return next week.
dol_get_first_day_week($day, $month, $year, $gm=false)
Return first day of week for a date.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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_string_nospecial($str, $newstr='_', $badcharstoreplace='', $badcharstoremove='', $keepspaces=0)
Clean a string from all punctuation characters to use it as a ref or login.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_barre_liste($title, $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.
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.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
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...
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.