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.
'"' :
'').
'>';