32 require
'../../main.inc.php';
33 require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
34 require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/user/class/usergroup.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/lib/agenda.lib.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
43 if (!isset($conf->global->AGENDA_MAX_EVENTS_DAY_VIEW)) {
44 $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW = 3;
47 $action =
GETPOST(
'action',
'aZ09');
49 $disabledefaultvalues =
GETPOST(
'disabledefaultvalues',
'int');
51 $filter =
GETPOST(
"search_filter",
'alpha', 3) ?
GETPOST(
"search_filter",
'alpha', 3) :
GETPOST(
"filter",
'alpha', 3);
52 $filtert =
GETPOST(
"search_filtert",
"int", 3) ?
GETPOST(
"search_filtert",
"int", 3) :
GETPOST(
"filtert",
"int", 3);
53 $usergroup =
GETPOST(
"search_usergroup",
"int", 3) ?
GETPOST(
"search_usergroup",
"int", 3) :
GETPOST(
"usergroup",
"int", 3);
64 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
65 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
67 if (empty($page) || $page == -1) {
70 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
71 $offset = $limit * $page;
76 $sortfield =
"a.datec";
81 $socid = $user->socid;
88 if (!$user->hasRight(
'agenda',
'myactions',
'read')) {
91 if (!$user->hasRight(
'agenda',
'allactions',
'read')) {
94 if (!$user->hasRight(
'agenda',
'allactions',
'read') || $filter ==
'mine') {
98 $mode =
'show_peruser';
99 $resourceid =
GETPOST(
"search_resourceid",
"int") ?
GETPOST(
"search_resourceid",
"int") :
GETPOST(
"resourceid",
"int");
100 $year =
GETPOST(
"year",
"int") ?
GETPOST(
"year",
"int") : date(
"Y");
101 $month =
GETPOST(
"month",
"int") ?
GETPOST(
"month",
"int") : date(
"m");
102 $week =
GETPOST(
"week",
"int") ?
GETPOST(
"week",
"int") : date(
"W");
107 $maxprint = ((
GETPOST(
"maxprint",
'int') !=
'') ?
GETPOST(
"maxprint",
'int') : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW);
108 $optioncss =
GETPOST(
'optioncss',
'aZ');
110 if (
GETPOST(
'search_actioncode',
'array:aZ09')) {
111 $actioncode =
GETPOST(
'search_actioncode',
'array:aZ09', 3);
112 if (!count($actioncode)) {
116 $actioncode =
GETPOST(
"search_actioncode",
"alpha", 3) ?
GETPOST(
"search_actioncode",
"alpha", 3) : (
GETPOST(
"search_actioncode",
"alpha") ==
'0' ?
'0' : ((empty($conf->global->AGENDA_DEFAULT_FILTER_TYPE) || $disabledefaultvalues) ?
'' : $conf->global->AGENDA_DEFAULT_FILTER_TYPE));
120 if ($dateselect > 0) {
121 $day =
GETPOST(
'dateselectday',
'int');
122 $month =
GETPOST(
'dateselectmonth',
'int');
123 $year =
GETPOST(
'dateselectyear',
'int');
126 $tmp = empty($conf->global->MAIN_DEFAULT_WORKING_HOURS) ?
'9-18' : $conf->global->MAIN_DEFAULT_WORKING_HOURS;
127 $tmp = str_replace(
' ',
'', $tmp);
128 $tmparray = explode(
'-', $tmp);
129 $begin_h =
GETPOST(
'begin_h',
'int') !=
'' ?
GETPOST(
'begin_h',
'int') : ($tmparray[0] !=
'' ? $tmparray[0] : 9);
130 $end_h =
GETPOST(
'end_h',
'int') ?
GETPOST(
'end_h',
'int') : ($tmparray[1] !=
'' ? $tmparray[1] : 18);
131 if ($begin_h < 0 || $begin_h > 23) {
134 if ($end_h < 1 || $end_h > 24) {
137 if ($end_h <= $begin_h) {
138 $end_h = $begin_h + 1;
141 $tmp = empty($conf->global->MAIN_DEFAULT_WORKING_DAYS) ?
'1-5' : $conf->global->MAIN_DEFAULT_WORKING_DAYS;
142 $tmp = str_replace(
' ',
'', $tmp);
143 $tmparray = explode(
'-', $tmp);
144 $begin_d =
GETPOST(
'begin_d',
'int') ?
GETPOST(
'begin_d',
'int') : ($tmparray[0] !=
'' ? $tmparray[0] : 1);
145 $end_d =
GETPOST(
'end_d',
'int') ?
GETPOST(
'end_d',
'int') : ($tmparray[1] !=
'' ? $tmparray[1] : 5);
146 if ($begin_d < 1 || $begin_d > 7) {
149 if ($end_d < 1 || $end_d > 7) {
152 if ($end_d < $begin_d) {
153 $end_d = $begin_d + 1;
157 $status = ((empty($conf->global->AGENDA_DEFAULT_FILTER_STATUS) || $disabledefaultvalues) ?
'' : $conf->global->AGENDA_DEFAULT_FILTER_STATUS);
161 $mode = (empty($conf->global->AGENDA_DEFAULT_VIEW) ?
'show_month' : $conf->global->AGENDA_DEFAULT_VIEW);
164 if (
GETPOST(
'viewcal',
'alpha') && $mode !=
'show_day' && $mode !=
'show_week' && $mode !=
'show_peruser') {
165 $mode =
'show_month'; $day =
'';
167 if (
GETPOST(
'viewweek',
'alpha') || $mode ==
'show_week') {
168 $mode =
'show_week'; $week = ($week ? $week : date(
"W")); $day = ($day ? $day : date(
"d"));
170 if (
GETPOST(
'viewday',
'alpha') || $mode ==
'show_day') {
171 $mode =
'show_day'; $day = ($day ? $day : date(
"d"));
177 $langs->loadLangs(array(
'users',
'agenda',
'other',
'commercial'));
180 $hookmanager->initHooks(array(
'agenda'));
183 if ($user->socid && $socid) {
187 $search_status = $status;
218 'maxprint' => $maxprint,
220 'filtert' => $filtert,
221 'showbirthday' => $showbirthday,
222 'canedit' => $canedit,
223 'optioncss' => $optioncss,
224 'actioncode' => $actioncode,
226 'resourceid' => $resourceid,
227 'usergroup' => $usergroup,
229 $reshook = $hookmanager->executeHooks(
'beforeAgendaPerUser', $parameters, $object, $action);
235 $companystatic =
new Societe($db);
237 $help_url =
'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:Modul_Terminplanung';
242 $nowyear = $nowarray[
'year'];
243 $nowmonth = $nowarray[
'mon'];
244 $nowday = $nowarray[
'mday'];
248 $listofextcals = array();
251 $first_day = $prev[
'first_day'];
252 $first_month = $prev[
'first_month'];
253 $first_year = $prev[
'first_year'];
255 $week = $prev[
'week'];
259 $next_year = $next[
'year'];
260 $next_month = $next[
'month'];
261 $next_day = $next[
'day'];
263 $max_day_in_month = date(
"t",
dol_mktime(0, 0, 0, $month, 1, $year));
265 $tmpday = $first_day;
269 $title = $langs->trans(
"DoneAndToDoActions");
270 if ($status ==
'done') {
271 $title = $langs->trans(
"DoneActions");
273 if ($status ==
'todo') {
274 $title = $langs->trans(
"ToDoActions");
279 if (is_array($actioncode)) {
280 foreach ($actioncode as $str_action) {
281 $param .=
"&search_actioncode[]=".urlencode($str_action);
284 $param .=
"&search_actioncode=".urlencode($actioncode);
287 if ($resourceid > 0) {
288 $param .=
"&search_resourceid=".urlencode($resourceid);
292 $param .=
"&search_status=".urlencode($status);
295 $param .=
"&search_filter=".urlencode($filter);
298 $param .=
"&search_filtert=".urlencode($filtert);
300 if ($usergroup > 0) {
301 $param .=
"&search_usergroup=".urlencode($usergroup);
304 $param .=
"&search_socid=".urlencode($socid);
307 $param .=
"&search_showbirthday=1";
310 $param .=
"&search_projectid=".urlencode($pid);
313 $param .=
"&search_type=".urlencode($type);
315 if ($mode !=
'show_peruser') {
316 $param .=
'&mode='.urlencode($mode);
318 if ($begin_h !=
'') {
319 $param .=
'&begin_h='.urlencode($begin_h);
322 $param .=
'&end_h='.urlencode($end_h);
324 if ($begin_d !=
'') {
325 $param .=
'&begin_d='.urlencode($begin_d);
328 $param .=
'&end_d='.urlencode($end_d);
330 $param .=
"&maxprint=".urlencode($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 = (!empty($conf->global->AGENDA_NB_WEEKS_IN_VIEW_PER_USER)) ? ((
int) $conf->global->AGENDA_NB_WEEKS_IN_VIEW_PER_USER * 7) : 7;
361 $max_day_in_month = date(
"t",
dol_mktime(0, 0, 0, $month, 1, $year,
'gmt'));
363 $tmpday = $first_day;
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;
370 $nav .=
" </span>\n";
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";
372 if (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($year).
'&month='.urlencode($month).($day ?
'&day='.urlencode($day) :
'');
384 $paramnoaction = preg_replace(
'/action=[a-z_]+/',
'', $param);
388 print
'<form method="POST" id="searchFormList" class="listactionsfilter" action="'.$_SERVER[
"PHP_SELF"].
'">'.
"\n";
390 $showextcals = $listofextcals;
392 if ($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 $massactionbutton =
'';
437 $viewmode .=
'<a class="btnTitle reposition" href="'.DOL_URL_ROOT.
'/comm/action/list.php?mode=show_list&restore_lastsearch_values=1'.$paramnoactionodate.
'">';
439 $viewmode .=
img_picto($langs->trans(
"List"),
'object_calendarlist',
'class="imgforviewmode pictoactionview block"');
441 $viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone">'.$langs->trans(
"ViewList").
'</span></a>';
443 $viewmode .=
'<a class="btnTitle 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.
'">';
445 $viewmode .=
img_picto($langs->trans(
"ViewCal"),
'object_calendarmonth',
'class="pictoactionview block"');
447 $viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone">'.$langs->trans(
"ViewCal").
'</span></a>';
449 $viewmode .=
'<a class="btnTitle 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.
'">';
451 $viewmode .=
img_picto($langs->trans(
"ViewWeek"),
'object_calendarweek',
'class="pictoactionview block"');
453 $viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone">'.$langs->trans(
"ViewWeek").
'</span></a>';
455 $viewmode .=
'<a class="btnTitle 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.
'">';
457 $viewmode .=
img_picto($langs->trans(
"ViewDay"),
'object_calendarday',
'class="pictoactionview block"');
459 $viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone">'.$langs->trans(
"ViewDay").
'</span></a>';
461 $viewmode .=
'<a class="btnTitle 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.
'">';
463 $viewmode .=
img_picto($langs->trans(
"ViewPerUser"),
'object_calendarperuser',
'class="pictoactionview block"');
465 $viewmode .=
'<span class="valignmiddle text-plus-circle btnTitle-label hideonsmartphone">'.$langs->trans(
"ViewPerUser").
'</span></a>';
467 $viewmode .=
'<span class="marginrightonly"></span>';
470 $parameters = array(); $object =
null;
471 $reshook = $hookmanager->executeHooks(
'addCalendarView', $parameters, $object, $action);
472 if (empty($reshook)) {
473 $viewmode .= $hookmanager->resPrint;
474 } elseif ($reshook > 1) {
475 $viewmode = $hookmanager->resPrint;
481 if ($user->rights->agenda->myactions->create || $user->hasRight(
'agenda',
'allactions',
'create')) {
484 $newparam .=
'&month='.urlencode(str_pad($month, 2,
"0", STR_PAD_LEFT)).
'&year='.urlencode($tmpforcreatebutton[
'year']);
485 if ($begin_h !==
'') {
486 $newparam .=
'&begin_h='.urlencode($begin_h);
489 $newparam .=
'&end_h='.urlencode($end_h);
491 if ($begin_d !==
'') {
492 $newparam .=
'&begin_d='.urlencode($begin_d);
495 $newparam .=
'&end_d='.urlencode($end_d);
499 $hourminsec =
'100000';
500 $newcardbutton .=
dolGetButtonTitle($langs->trans(
"AddAction"),
'',
'fa fa-plus-circle', DOL_URL_ROOT.
'/comm/action/card.php?action=create&datep='.sprintf(
"%04d%02d%02d", $tmpforcreatebutton[
'year'], $tmpforcreatebutton[
'mon'], $tmpforcreatebutton[
'mday']).$hourminsec.
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].($newparam ?
'?'.$newparam :
'')));
505 print_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);
511 $newtitle =
'<div class="nowrap clear inline-block minheight30">';
512 $newtitle .=
'<input type="checkbox" id="check_mytasks" name="check_mytasks" checked disabled> '.$langs->trans(
"LocalAgenda").
' ';
513 $newtitle .=
'</div>';
520 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
521 print_actions_filter(
$form, $canedit, $search_status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, -1, $actioncode, $usergroup,
'', $resourceid);
526 $eventarray = array();
531 if ($usergroup > 0) {
534 $sql .=
' a.id, a.label,';
536 $sql .=
' a.datep2,';
537 $sql .=
' a.percent,';
538 $sql .=
' a.fk_user_author,a.fk_user_action,';
539 $sql .=
' a.transparency, a.priority, a.fulldayevent, a.location,';
540 $sql .=
' a.fk_soc, a.fk_contact, a.fk_element, a.elementtype, a.fk_project,';
541 $sql .=
' ca.code, ca.libelle as type_label, ca.color, ca.type as type_type, ca.picto as type_picto';
542 $sql .=
' FROM '.MAIN_DB_PREFIX.
'c_actioncomm as ca, '.MAIN_DB_PREFIX.
"actioncomm as a";
543 if (empty($user->rights->societe->client->voir) && !$socid) {
544 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe_commerciaux as sc ON a.fk_soc = sc.fk_soc";
547 if ($resourceid > 0) {
548 $sql .=
", ".MAIN_DB_PREFIX.
"element_resources as r";
551 if ($filtert > 0 || $usergroup > 0) {
552 $sql .=
", ".MAIN_DB_PREFIX.
"actioncomm_resources as ar";
554 if ($usergroup > 0) {
555 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"usergroup_user as ugu ON ugu.fk_user = ar.fk_element";
557 $sql .=
' WHERE a.fk_action = ca.id';
558 $sql .=
' AND a.entity IN ('.getEntity(
'agenda').
')';
560 if (!empty($actioncode)) {
561 if (empty($conf->global->AGENDA_USE_EVENT_TYPE)) {
562 if ($actioncode ==
'AC_NON_AUTO') {
563 $sql .=
" AND ca.type != 'systemauto'";
564 } elseif ($actioncode ==
'AC_ALL_AUTO') {
565 $sql .=
" AND ca.type = 'systemauto'";
567 if ($actioncode ==
'AC_OTH') {
568 $sql .=
" AND ca.type != 'systemauto'";
570 if ($actioncode ==
'AC_OTH_AUTO') {
571 $sql .=
" AND ca.type = 'systemauto'";
575 if ($actioncode ==
'AC_NON_AUTO') {
576 $sql .=
" AND ca.type != 'systemauto'";
577 } elseif ($actioncode ==
'AC_ALL_AUTO') {
578 $sql .=
" AND ca.type = 'systemauto'";
580 if (is_array($actioncode)) {
581 $sql .=
" AND ca.code IN (".$db->sanitize(
"'".implode(
"','", $actioncode).
"'", 1).
")";
583 $sql .=
" AND ca.code IN (".$db->sanitize(
"'".implode(
"','", explode(
',', $actioncode)).
"'", 1).
")";
588 if ($resourceid > 0) {
589 $sql .=
" AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = ".((int) $resourceid);
592 $sql .=
" AND a.fk_project = ".((int) $pid);
594 if (empty($user->rights->societe->client->voir) && !$socid) {
595 $sql .=
" AND (a.fk_soc IS NULL OR sc.fk_user = ".((int) $user->id).
")";
598 $sql .=
' AND a.fk_soc = '.((int) $socid);
601 if ($filtert > 0 || $usergroup > 0) {
602 $sql .=
" AND ar.fk_actioncomm = a.id AND ar.element_type='user'";
604 if ($mode ==
'show_day') {
606 $sql .=
" (a.datep BETWEEN '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
607 $sql .=
" AND '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
609 $sql .=
" (a.datep2 BETWEEN '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
610 $sql .=
" AND '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
612 $sql .=
" (a.datep < '".$db->idate(
dol_mktime(0, 0, 0, $month, $day, $year,
'tzuserrel')).
"'";
613 $sql .=
" AND a.datep2 > '".$db->idate(
dol_mktime(23, 59, 59, $month, $day, $year,
'tzuserrel')).
"')";
618 $sql .=
" (a.datep BETWEEN '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
619 $sql .=
" AND '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
621 $sql .=
" (a.datep2 BETWEEN '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
622 $sql .=
" AND '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
624 $sql .=
" (a.datep < '".$db->idate($firstdaytoshow - (60 * 60 * 24 * 2)).
"'";
625 $sql .=
" AND a.datep2 > '".$db->idate($lastdaytoshow + (60 * 60 * 24 * 2)).
"')";
629 $sql .=
" AND ca.id = ".((int) $type);
631 if ($status ==
'0') {
632 $sql .=
" AND a.percent = 0";
634 if ($status ===
'na') {
636 $sql .=
" AND a.percent = -1";
638 if ($status ==
'50') {
640 $sql .=
" AND (a.percent > 0 AND a.percent < 100)";
642 if ($status ==
'done' || $status ==
'100') {
643 $sql .=
" AND (a.percent = 100)";
645 if ($status ==
'todo') {
646 $sql .=
" AND (a.percent >= 0 AND a.percent < 100)";
649 if ($filtert > 0 || $usergroup > 0) {
652 $sql .=
"ar.fk_element = ".$filtert;
654 if ($usergroup > 0) {
655 $sql .= ($filtert > 0 ?
" OR " :
"").
" ugu.fk_usergroup = ".((
int) $usergroup);
660 $sql .=
' ORDER BY fk_user_action, datep';
663 dol_syslog(
"comm/action/peruser.php", LOG_DEBUG);
664 $resql = $db->query(
$sql);
666 $num = $db->num_rows($resql);
670 $obj = $db->fetch_object($resql);
674 if (!empty($conf->global->AGENDA_ALWAYS_HIDE_AUTO) && $obj->code ==
'AC_OTH_AUTO') {
679 $datep = $db->jdate($obj->datep);
680 $datep2 = $db->jdate($obj->datep2);
685 $event->id = $obj->id;
686 $event->datep = $datep;
687 $event->datef = $datep2;
688 $event->type_code = $obj->code;
689 $event->type_color = $obj->color;
690 $event->label = $obj->label;
691 $event->percentage = $obj->percent;
692 $event->authorid = $obj->fk_user_author;
693 $event->userownerid = $obj->fk_user_action;
694 $event->priority = $obj->priority;
695 $event->fulldayevent = $obj->fulldayevent;
696 $event->location = $obj->location;
697 $event->transparency = $obj->transparency;
699 $event->fk_project = $obj->fk_project;
701 $event->socid = $obj->fk_soc;
702 $event->contact_id = $obj->fk_contact;
704 $event->fk_element = $obj->fk_element;
705 $event->elementtype = $obj->elementtype;
709 if ($event->percentage <= 0) {
710 $event->date_start_in_calendar = $datep;
711 if ($datep2 !=
'' && $datep2 >= $datep) {
712 $event->date_end_in_calendar = $datep2;
714 $event->date_end_in_calendar = $datep;
717 $event->date_start_in_calendar = $datep;
718 if ($datep2 !=
'' && $datep2 >= $datep) {
719 $event->date_end_in_calendar = $datep2;
721 $event->date_end_in_calendar = $datep;
728 if ($event->date_end_in_calendar < $firstdaytoshow ||
729 $event->date_start_in_calendar >= $lastdaytoshow) {
734 $event->fetch_userassigned();
736 if ($event->date_start_in_calendar < $firstdaytoshow) {
737 $event->date_start_in_calendar = $firstdaytoshow;
739 if ($event->date_end_in_calendar >= $lastdaytoshow) {
740 $event->date_end_in_calendar = ($lastdaytoshow - 1);
744 $daycursor = $event->date_start_in_calendar;
751 $loop =
true; $j = 0;
752 $daykey =
dol_mktime(0, 0, 0, $mois, $jour, $annee,
'gmt');
756 $eventarray[$daykey][] = $event;
759 $daykey += 60 * 60 * 24;
760 if ($daykey > $event->date_end_in_calendar) {
776 $cachethirdparties = array();
777 $cachecontacts = array();
778 $cacheusers = array();
781 $color_file = DOL_DOCUMENT_ROOT.
"/theme/".$conf->theme.
"/theme_vars.inc.php";
782 if (is_readable($color_file)) {
785 if (!is_array($theme_datacolor)) {
786 $theme_datacolor = array(array(120, 130, 150), array(200, 160, 180), array(190, 190, 220));
791 $newparam = preg_replace(
'/showbirthday=/i',
'showbirthday_=', $newparam);
792 $newparam = preg_replace(
'/mode=show_month&?/i',
'', $newparam);
793 $newparam = preg_replace(
'/mode=show_week&?/i',
'', $newparam);
794 $newparam = preg_replace(
'/day=[0-9]+&?/i',
'', $newparam);
795 $newparam = preg_replace(
'/month=[0-9]+&?/i',
'', $newparam);
796 $newparam = preg_replace(
'/year=[0-9]+&?/i',
'', $newparam);
797 $newparam = preg_replace(
'/viewweek=[0-9]+&?/i',
'', $newparam);
798 $newparam = preg_replace(
'/showbirthday_=/i',
'showbirthday=', $newparam);
799 $newparam .=
'&viewweek=1';
801 echo
'<input type="hidden" name="actionmove" value="mupdate">';
802 echo
'<input type="hidden" name="backtopage" value="'.dol_escape_htmltag($_SERVER[
'PHP_SELF']).
'?'.
dol_escape_htmltag($_SERVER[
'QUERY_STRING']).
'">';
803 echo
'<input type="hidden" name="newdate" id="newdate">';
810 $currentdaytoshow = $firstdaytoshow;
811 echo
'<div class="div-table-responsive">';
814 while ($currentdaytoshow < $lastdaytoshow) {
815 echo
'<table class="centpercent noborder nocellnopadd cal_month">';
817 echo
'<tr class="liste_titre">';
818 echo
'<td class="nopaddingtopimp nopaddingbottomimp nowraponsmartphone">';
820 if ($canedit && $mode ==
'show_peruser') {
822 print
img_picto(
'',
'clock',
'class="fawidth30 inline-block paddingleft"');
823 print
'<span class="hideonsmartphone" title="'.$langs->trans(
"VisibleTimeRange").
'">'.$langs->trans(
"Hours").
'</span>';
824 print
"\n".
'<div class="ui-grid-a inline-block"><div class="ui-block-a nowraponall">';
825 print
'<input type="number" class="short" name="begin_h" value="'.$begin_h.
'" min="0" max="23">';
826 if (empty($conf->dol_use_jmobile)) {
829 print
'</div><div class="ui-block-b">';
831 print
'<input type="number" class="short" name="end_h" value="'.$end_h.
'" min="1" max="24">';
832 if (empty($conf->dol_use_jmobile)) {
833 print
' '.$langs->trans(
"H");
835 print
'</div></div>';
840 print
img_picto(
'',
'clock',
'class="fawidth30 inline-block paddingleft"');
841 print
'<span class="hideonsmartphone" title="'.$langs->trans(
"VisibleDaysRange").
'">'.$langs->trans(
"DaysOfWeek").
'</span>';
842 print
"\n".
'<div class="ui-grid-a inline-block"><div class="ui-block-a nowraponall">';
843 print
'<input type="number" class="short" name="begin_d" value="'.$begin_d.
'" min="1" max="7">';
844 if (empty($conf->dol_use_jmobile)) {
847 print
'</div><div class="ui-block-b">';
849 print
'<input type="number" class="short" name="end_d" value="'.$end_d.
'" min="1" max="7">';
850 print
'</div></div>';
856 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
860 echo
'<td align="center" colspan="'.($end_h - $begin_h).
'">';
861 echo
'<span class="bold spandayofweek">'.$langs->trans(
"Day".(($i + (isset($conf->global->MAIN_START_WEEK) ? $conf->global->MAIN_START_WEEK : 1)) % 7)).
'</span>';
873 echo
'<tr class="liste_titre">';
877 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
881 for ($h = $begin_h; $h < $end_h; $h++) {
882 echo
'<td class="center">';
883 print
'<small style="font-family: courier">'.sprintf(
"%02d", $h).
'</small>';
893 $usernames = array();
894 $usernamesid = array();
896 if (!empty($conf->global->AGENDA_SHOWOWNERONLY_ONPERUSERVIEW)) {
897 foreach ($eventarray as $daykey => $notused) {
899 foreach ($eventarray[$daykey] as $index => $event) {
900 $event->fetch_userassigned();
901 $listofuserid = $event->userassigned;
902 foreach ($listofuserid as $userid => $tmp) {
903 if (!in_array($userid, $usernamesid)) {
904 $usernamesid[$userid] = $userid;
911 $sql =
"SELECT DISTINCT u.rowid, u.lastname as lastname, u.firstname, u.statut, u.login, u.admin, u.entity";
912 $sql .=
" FROM ".MAIN_DB_PREFIX.
"user as u";
913 if (
isModEnabled(
'multicompany') && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
914 $sql .=
", ".MAIN_DB_PREFIX.
"usergroup_user as ug";
915 $sql .=
" WHERE ug.entity IN (".getEntity(
'usergroup').
")";
916 $sql .=
" AND ug.fk_user = u.rowid ";
918 if ($usergroup > 0) {
919 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"usergroup_user as ug ON u.rowid = ug.fk_user";
921 $sql .=
" WHERE u.entity IN (".getEntity(
'user').
")";
923 $sql .=
" AND u.statut = 1";
924 if ($usergroup > 0) {
925 $sql .=
" AND ug.fk_usergroup = ".((int) $usergroup);
927 if ($user->socid > 0) {
929 $sql .=
" AND u.fk_soc = ".((int) $user->socid);
933 $resql = $db->query(
$sql);
935 $num = $db->num_rows($resql);
939 $obj = $db->fetch_object($resql);
940 $usernamesid[$obj->rowid] = $obj->rowid;
949 foreach ($usernamesid as $id) {
950 $tmpuser =
new User($db);
951 $result = $tmpuser->fetch($id);
952 $usernames[] = $tmpuser;
956 $colorsbytype = array();
957 $labelbytype = array();
958 $sql =
"SELECT code, color, libelle as label FROM ".MAIN_DB_PREFIX.
"c_actioncomm ORDER BY position";
959 $resql = $db->query(
$sql);
960 while ($obj = $db->fetch_object($resql)) {
961 $colorsbytype[$obj->code] = $obj->color;
962 $labelbytype[$obj->code] = $obj->label;
970 foreach ($usernames as $username) {
975 echo
'<td class="tdoverflowmax100 cal_current_month cal_peruserviewname'.($var ?
' cal_impair' :
'').
'">';
976 print $username->getNomUrl(-1,
'', 0, 0, 20, 1,
'');
982 for ($iter_day = 0; $iter_day < 8; $iter_day++) {
983 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
996 $style =
'cal_current_month';
997 if ($iter_day == 6) {
998 $style .=
' cal_other_month';
1001 if ($todayarray[
'mday'] == $tmpday && $todayarray[
'mon'] == $tmpmonth && $todayarray[
'year'] == $tmpyear) {
1005 $style =
'cal_today_peruser';
1008 show_day_events2($username, $tmpday, $tmpmonth, $tmpyear, 0, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, $showheader, $colorsbytype, $var);
1013 $showheader =
false;
1024 if (!empty($conf->global->AGENDA_USE_EVENT_TYPE) && !empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1025 $langs->load(
"commercial");
1026 print
'<br>'.$langs->trans(
"Legend").
': <br>';
1027 foreach ($colorsbytype as $code => $color) {
1029 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div style="'.($color ?
'background: #'.$color.
';' :
'').
'width:16px; float: left; margin-right: 4px;"> </div>';
1030 print $langs->trans(
"Action".$code) !=
"Action".$code ? $langs->trans(
"Action".$code) : $labelbytype[$code];
1036 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div class="peruser_busy" style="width:16px; float: left; margin-right: 4px;"> </div>';
1037 print $langs->trans(
"Other");
1046 print
"\n".
'</form>';
1050 print
'<script type="text/javascript">
1051 jQuery(document).ready(function() {
1052 jQuery(".onclickopenref").click(function() {
1053 var ref=$(this).attr(\'ref\');
1054 var res = ref.split("_");
1055 var userid = res[1];
1062 if (ids == \'none\') /* No event */
1064 /* alert(\'no event\'); */
1065 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 :
'')).
'"
1066 window.location.href = url;
1068 else if (ids.indexOf(",") > -1) /* There is several events */
1070 /* alert(\'several events\'); */
1071 url = "'.DOL_URL_ROOT.
'/comm/action/list.php?mode=show_list&filtert="+userid+"&dateselectyear="+year+"&dateselectmonth="+month+"&dateselectday="+day;
1072 window.location.href = url;
1074 else /* One event */
1076 /* alert(\'one event\'); */
1077 url = "'.DOL_URL_ROOT.
'/comm/action/card.php?action=view&id="+ids
1078 window.location.href = url;
1111 function 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)
1114 global $user, $conf, $langs, $hookmanager, $action;
1115 global $filter, $filtert, $status, $actioncode;
1116 global $theme_datacolor;
1117 global $cachethirdparties, $cachecontacts, $cacheusers, $cacheprojects, $colorindexused;
1118 global $begin_h, $end_h;
1123 $i = 0; $numother = 0; $numbirthday = 0; $numical = 0; $numicals = array();
1126 $colorindexused[$user->id] = 0;
1127 $nextindextouse = count($colorindexused);
1134 foreach ($eventarray as $daykey => $notused) {
1141 if ($day == $jour && (
int) $month == (
int) $mois && $year == $annee) {
1145 foreach ($eventarray[$daykey] as $index => $event) {
1149 $keysofuserassigned = array_keys($event->userassigned);
1150 $ponct = ($event->date_start_in_calendar == $event->date_end_in_calendar);
1152 if (!in_array($username->id, $keysofuserassigned)) {
1157 $parameters = array();
1158 $reshook = $hookmanager->executeHooks(
'formatEvent', $parameters, $event, $action);
1164 $color = -1; $cssclass =
''; $colorindex = -1;
1165 if (in_array($user->id, $keysofuserassigned)) {
1166 $cssclass =
'family_mytasks';
1168 if (empty($cacheusers[$event->userownerid])) {
1169 $newuser =
new User($db);
1170 $newuser->fetch($event->userownerid);
1171 $cacheusers[$event->userownerid] = $newuser;
1176 if (!empty($cacheusers[$event->userownerid]->color)) {
1177 $color = $cacheusers[$event->userownerid]->color;
1180 if (!empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1181 $color = $event->type_color;
1183 } elseif ($event->type_code ==
'ICALEVENT') {
1185 if (!empty($event->icalname)) {
1192 $color = $event->icalcolor;
1193 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other unsortable');
1194 } elseif ($event->type_code ==
'BIRTHDAY') {
1195 $numbirthday++; $colorindex = 2; $cssclass =
'family_birthday unsortable'; $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1198 $color = ($event->icalcolor ? $event->icalcolor : -1);
1199 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other');
1201 if (empty($cacheusers[$event->userownerid])) {
1202 $newuser =
new User($db);
1203 $newuser->fetch($event->userownerid);
1204 $cacheusers[$event->userownerid] = $newuser;
1209 if (!empty($cacheusers[$event->userownerid]->color)) {
1210 $color = $cacheusers[$event->userownerid]->color;
1213 if (!empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1214 $color = $event->type_color;
1220 $idusertouse = ($event->userownerid ? $event->userownerid : 0);
1221 if (isset($colorindexused[$idusertouse])) {
1222 $colorindex = $colorindexused[$idusertouse];
1224 $colorindex = $nextindextouse;
1225 $colorindexused[$idusertouse] = $colorindex;
1226 if (!empty($theme_datacolor[$nextindextouse + 1])) {
1231 $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1235 for ($h = $begin_h; $h < $end_h; $h++) {
1238 if (empty($event->fulldayevent)) {
1239 $a =
dol_mktime((
int) $h, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1240 $b =
dol_mktime((
int) $h, 30, 0, $month, $day, $year,
'tzuserrel', 0);
1241 $c =
dol_mktime((
int) $h + 1, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1243 $dateendtouse = $event->date_end_in_calendar;
1244 if ($dateendtouse == $event->date_start_in_calendar) {
1250 if ($event->date_start_in_calendar < $b && $dateendtouse > $a) {
1251 $busy = $event->transparency;
1252 $cases1[$h][$event->id][
'busy'] = $busy;
1253 $cases1[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1254 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1255 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1256 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1257 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1258 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1260 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1263 if ($event->label) {
1264 $cases1[$h][$event->id][
'string'] .=
' - '.$event->label;
1266 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1267 $cases1[$h][$event->id][
'color'] = $color;
1268 if ($event->fk_project > 0) {
1269 if (empty($cacheprojects[$event->fk_project])) {
1271 $tmpproj->fetch($event->fk_project);
1272 $cacheprojects[$event->fk_project] = $tmpproj;
1274 $cases1[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1276 if ($event->socid > 0) {
1277 if (empty($cachethirdparties[$event->socid])) {
1278 $tmpthirdparty =
new Societe($db);
1279 $tmpthirdparty->fetch($event->socid);
1280 $cachethirdparties[$event->socid] = $tmpthirdparty;
1282 $cases1[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1284 if ($event->contact_id > 0) {
1285 if (empty($cachecontacts[$event->contact_id])) {
1286 $tmpcontact =
new Contact($db);
1287 $tmpcontact->fetch($event->contact_id);
1288 $cachecontacts[$event->contact_id] = $tmpcontact;
1290 $cases1[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1293 if ($event->date_start_in_calendar < $c && $dateendtouse > $b) {
1294 $busy = $event->transparency;
1295 $cases2[$h][$event->id][
'busy'] = $busy;
1296 $cases2[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1297 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1298 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1299 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1300 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1301 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1303 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1306 if ($event->label) {
1307 $cases2[$h][$event->id][
'string'] .=
' - '.$event->label;
1309 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1310 $cases2[$h][$event->id][
'color'] = $color;
1311 if ($event->fk_project > 0) {
1312 if (empty($cacheprojects[$event->fk_project])) {
1314 $tmpproj->fetch($event->fk_project);
1315 $cacheprojects[$event->fk_project] = $tmpproj;
1317 $cases2[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1319 if ($event->socid > 0) {
1320 if (empty($cachethirdparties[$event->socid])) {
1321 $tmpthirdparty =
new Societe($db);
1322 $tmpthirdparty->fetch($event->socid);
1323 $cachethirdparties[$event->socid] = $tmpthirdparty;
1325 $cases2[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1327 if ($event->contact_id > 0) {
1328 if (empty($cachecontacts[$event->contact_id])) {
1329 $tmpcontact =
new Contact($db);
1330 $tmpcontact->fetch($event->contact_id);
1331 $cachecontacts[$event->contact_id] = $tmpcontact;
1333 $cases2[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1337 $busy = $event->transparency;
1338 $cases1[$h][$event->id][
'busy'] = $busy;
1339 $cases2[$h][$event->id][
'busy'] = $busy;
1340 $cases1[$h][$event->id][
'string'] = $event->label;
1341 $cases2[$h][$event->id][
'string'] = $event->label;
1342 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1343 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1344 $cases1[$h][$event->id][
'color'] = $color;
1345 $cases2[$h][$event->id][
'color'] = $color;
1356 for ($h = $begin_h; $h < $end_h; $h++) {
1357 $color1 =
''; $color2 =
'';
1358 $style1 =
''; $style2 =
'';
1359 $string1 =
' '; $string2 =
' ';
1360 $title1 =
''; $title2 =
'';
1361 if (isset($cases1[$h]) && $cases1[$h] !=
'') {
1363 if (count($cases1[$h]) > 1) {
1364 $title1 .= count($cases1[$h]).
' '.(count($cases1[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1366 $string1 =
' ';
1367 if (empty($conf->global->AGENDA_NO_TRANSPARENT_ON_NOT_BUSY)) {
1368 $style1 =
'peruser_notbusy';
1370 $style1 =
'peruser_busy';
1372 foreach ($cases1[$h] as $id => $ev) {
1374 $style1 =
'peruser_busy';
1378 if (isset($cases2[$h]) && $cases2[$h] !=
'') {
1380 if (count($cases2[$h]) > 1) {
1381 $title2 .= count($cases2[$h]).
' '.(count($cases2[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1383 $string2 =
' ';
1384 if (empty($conf->global->AGENDA_NO_TRANSPARENT_ON_NOT_BUSY)) {
1385 $style2 =
'peruser_notbusy';
1387 $style2 =
'peruser_busy';
1389 foreach ($cases2[$h] as $id => $ev) {
1391 $style2 =
'peruser_busy';
1398 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) && array_keys($cases1[$h])) {
1399 $ids1 = join(
', ', array_keys($cases1[$h]));
1401 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) && array_keys($cases2[$h])) {
1402 $ids2 = join(
', ', array_keys($cases2[$h]));
1405 if ($h == $begin_h) {
1406 echo
'<td class="'.$style.
'_peruserleft cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1408 echo
'<td class="'.$style.
' cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1410 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) == 1) {
1411 $output = array_slice($cases1[$h], 0, 1);
1412 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1413 if ($output[0][
'string']) {
1414 $title1 .= ($title1 ?
' - ' :
'').$output[0][
'string'];
1416 if ($output[0][
'color']) {
1417 $color1 = $output[0][
'color'];
1419 } elseif (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) > 1) {
1420 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1424 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) == 1) {
1425 $output = array_slice($cases2[$h], 0, 1);
1426 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1427 if ($output[0][
'string']) {
1428 $title2 .= ($title2 ?
' - ' :
'').$output[0][
'string'];
1430 if ($output[0][
'color']) {
1431 $color2 = $output[0][
'color'];
1433 } elseif (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) > 1) {
1434 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1437 print
'<table class="nobordernopadding case centpercent">';
1439 if ($style1 ==
'peruser_notbusy') {
1440 print
'style="border: 1px solid #'.($color1 ? $color1 :
"888").
' !important" ';
1441 } elseif ($color1) {
1442 print ($color1 ?
'style="background: #'.$color1.
';"' :
'');
1445 print ($style1 ? $style1.
' ' :
'');
1446 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.
'"' :
'').
'>';
1449 if ($style2 ==
'peruser_notbusy') {
1450 print
'style="border: 1px solid #'.($color2 ? $color2 :
"888").
' !important" ';
1451 } elseif ($color2) {
1452 print ($color2 ?
'style="background: #'.$color2.
';"' :
'');
1455 print ($style2 ? $style2.
' ' :
'');
1456 print
'onclickopenref center'.($title2 ?
' classfortooltip' :
'').($title1 ?
' cursorpointer' :
'').
'" ref="ref_'.$username->id.
'_'.sprintf(
"%04d", $year).
'_'.sprintf(
"%02d", $month).
'_'.sprintf(
"%02d", $day).
'_'.sprintf(
"%02d", $h).
'_30_'.($ids2 ? $ids2 :
'none').
'"'.($title2 ?
' title="'.$title2.
'"' :
'').
'>';
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
print_actions_filter($form, $canedit, $status, $year, $month, $day, $showbirthday, $filtera, $filtert, $filterd, $pid, $socid, $action, $showextcals=array(), $actioncode='', $usergroupid='', $excludetype='', $resourceid=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.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
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 informations (by default a local PHP server timestamp) Re...
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_string_nospecial($str, $newstr='_', $badcharstoreplace='', $badcharstoremove='', $keepspaces=0)
Clean a string from all punctuation characters to use it as a ref or login.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
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.