32require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/comm/action/class/actioncomm.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/user/class/usergroup.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/agenda.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formprojet.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
43if (!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');
66$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) :
GETPOST(
"page",
'int');
67if (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;
88if (!$user->hasRight(
'agenda',
'myactions',
'read')) {
91if (!$user->hasRight(
'agenda',
'allactions',
'read')) {
94if (!$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");
104$pid = GETPOSTISSET(
"search_projectid") ?
GETPOST(
"search_projectid",
"int", 3) :
GETPOST(
"projectid",
"int", 3);
105$status = GETPOSTISSET(
"search_status") ?
GETPOST(
"search_status",
'aZ09') :
GETPOST(
"status",
'aZ09');
106$type = GETPOSTISSET(
"search_type") ?
GETPOST(
"search_type",
'alpha') :
GETPOST(
"type",
'alpha');
107$maxprint = ((
GETPOST(
"maxprint",
'int') !=
'') ?
GETPOST(
"maxprint",
'int') : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW);
108$optioncss =
GETPOST(
'optioncss',
'aZ');
110if (
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));
120if ($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);
131if ($begin_h < 0 || $begin_h > 23) {
134if ($end_h < 1 || $end_h > 24) {
137if ($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);
146if ($begin_d < 1 || $begin_d > 7) {
149if ($end_d < 1 || $end_d > 7) {
152if ($end_d < $begin_d) {
153 $end_d = $begin_d + 1;
156if ($status ==
'' && !GETPOSTISSET(
'search_status')) {
157 $status = ((empty($conf->global->AGENDA_DEFAULT_FILTER_STATUS) || $disabledefaultvalues) ?
'' : $conf->global->AGENDA_DEFAULT_FILTER_STATUS);
160if (empty($mode) && !GETPOSTISSET(
'mode')) {
161 $mode = (empty($conf->global->AGENDA_DEFAULT_VIEW) ?
'show_month' : $conf->global->AGENDA_DEFAULT_VIEW);
164if (
GETPOST(
'viewcal',
'alpha') && $mode !=
'show_day' && $mode !=
'show_week' && $mode !=
'show_peruser') {
165 $mode =
'show_month'; $day =
'';
167if (
GETPOST(
'viewweek',
'alpha') || $mode ==
'show_week') {
168 $mode =
'show_week'; $week = ($week ? $week : date(
"W")); $day = ($day ? $day : date(
"d"));
170if (
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'));
183if ($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);
234$form =
new Form($db);
235$companystatic =
new Societe($db);
237$help_url =
'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:Modul_Terminplanung';
238llxHeader(
'', $langs->trans(
"Agenda"), $help_url);
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));
269$title = $langs->trans(
"DoneAndToDoActions");
270if ($status ==
'done') {
271 $title = $langs->trans(
"DoneActions");
273if ($status ==
'todo') {
274 $title = $langs->trans(
"ToDoActions");
278if ($actioncode || GETPOSTISSET(
'search_actioncode')) {
279 if (is_array($actioncode)) {
280 foreach ($actioncode as $str_action) {
281 $param .=
"&search_actioncode[]=".urlencode($str_action);
284 $param .=
"&search_actioncode=".urlencode($actioncode);
287if ($resourceid > 0) {
288 $param .=
"&search_resourceid=".urlencode($resourceid);
291if ($status || GETPOSTISSET(
'status') || GETPOSTISSET(
'search_status')) {
292 $param .=
"&search_status=".urlencode($status);
295 $param .=
"&search_filter=".urlencode($filter);
298 $param .=
"&search_filtert=".urlencode($filtert);
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);
315if ($mode !=
'show_peruser') {
316 $param .=
'&mode='.urlencode($mode);
319 $param .=
'&begin_h='.urlencode($begin_h);
322 $param .=
'&end_h='.urlencode($end_h);
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'));
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($year).
'&month='.urlencode($month).($day ?
'&day='.urlencode($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$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);
472if (empty($reshook)) {
473 $viewmode .= $hookmanager->resPrint;
474} elseif ($reshook > 1) {
475 $viewmode = $hookmanager->resPrint;
481if ($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 :
'')));
505print_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>';
520print
'<div class="liste_titre liste_titre_bydiv centpercent">';
521print_actions_filter($form, $canedit, $search_status, $year, $month, $day, $showbirthday, 0, $filtert, 0, $pid, $socid, $action, -1, $actioncode, $usergroup,
'', $resourceid);
526$eventarray = array();
534$sql .=
' a.id, a.label,';
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";
543if (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";
547if ($resourceid > 0) {
548 $sql .=
", ".MAIN_DB_PREFIX.
"element_resources as r";
551if ($filtert > 0 || $usergroup > 0) {
552 $sql .=
", ".MAIN_DB_PREFIX.
"actioncomm_resources as ar";
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').
')';
560if (!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).
")";
588if ($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);
594if (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);
601if ($filtert > 0 || $usergroup > 0) {
602 $sql .=
" AND ar.fk_actioncomm = a.id AND ar.element_type='user'";
604if ($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);
632 $sql .=
" AND a.percent = 0";
634if ($status ===
'na') {
636 $sql .=
" AND a.percent = -1";
638if ($status ==
'50') {
640 $sql .=
" AND (a.percent > 0 AND a.percent < 100)";
642if ($status ==
'done' || $status ==
'100') {
643 $sql .=
" AND (a.percent = 100)";
645if ($status ==
'todo') {
646 $sql .=
" AND (a.percent >= 0 AND a.percent < 100)";
649if ($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';
663dol_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";
782if (is_readable($color_file)) {
785if (!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';
801echo
'<input type="hidden" name="actionmove" value="mupdate">';
802echo
'<input type="hidden" name="backtopage" value="'.dol_escape_htmltag($_SERVER[
'PHP_SELF']).
'?'.
dol_escape_htmltag($_SERVER[
'QUERY_STRING']).
'">';
803echo
'<input type="hidden" name="newdate" id="newdate">';
810$currentdaytoshow = $firstdaytoshow;
811echo
'<div class="div-table-responsive">';
814while ($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";
925 $sql .=
" AND u.rowid = ".((int) $filtert);
927 if ($usergroup > 0) {
928 $sql .=
" AND ug.fk_usergroup = ".((int) $usergroup);
930 if ($user->socid > 0) {
932 $sql .=
" AND u.fk_soc = ".((int) $user->socid);
936 $resql = $db->query($sql);
938 $num = $db->num_rows($resql);
942 $obj = $db->fetch_object($resql);
943 $usernamesid[$obj->rowid] = $obj->rowid;
952 foreach ($usernamesid as $id) {
953 $tmpuser =
new User($db);
954 $result = $tmpuser->fetch($id);
955 $usernames[] = $tmpuser;
959 $colorsbytype = array();
960 $labelbytype = array();
961 $sql =
"SELECT code, color, libelle as label FROM ".MAIN_DB_PREFIX.
"c_actioncomm ORDER BY position";
962 $resql = $db->query($sql);
963 while ($obj = $db->fetch_object($resql)) {
964 $colorsbytype[$obj->code] = $obj->color;
965 $labelbytype[$obj->code] = $obj->label;
973 foreach ($usernames as $username) {
978 echo
'<td class="tdoverflowmax100 cal_current_month cal_peruserviewname'.($var ?
' cal_impair' :
'').
'">';
979 print $username->getNomUrl(-1,
'', 0, 0, 20, 1,
'',
'paddingleft');
985 for ($iter_day = 0; $iter_day < 8; $iter_day++) {
986 if (($i + 1) < $begin_d || ($i + 1) > $end_d) {
999 $style =
'cal_current_month';
1000 if ($iter_day == 6) {
1001 $style .=
' cal_other_month';
1004 if ($todayarray[
'mday'] == $tmpday && $todayarray[
'mon'] == $tmpmonth && $todayarray[
'year'] == $tmpyear) {
1008 $style =
'cal_today_peruser';
1011 show_day_events2($username, $tmpday, $tmpmonth, $tmpyear, 0, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, $showheader, $colorsbytype, $var);
1016 $showheader =
false;
1027if (!empty($conf->global->AGENDA_USE_EVENT_TYPE) && !empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1028 $langs->load(
"commercial");
1029 print
'<br>'.$langs->trans(
"Legend").
': <br>';
1030 foreach ($colorsbytype as $code => $color) {
1032 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div style="'.($color ?
'background: #'.$color.
';' :
'').
'width:16px; float: left; margin-right: 4px;"> </div>';
1033 print $langs->trans(
"Action".$code) !=
"Action".$code ? $langs->trans(
"Action".$code) : $labelbytype[$code];
1039 print
'<div style="float: left; padding: 2px; margin-right: 6px;"><div class="peruser_busy" style="width:16px; float: left; margin-right: 4px;"> </div>';
1040 print $langs->trans(
"Other");
1049print
"\n".
'</form>';
1053print
'<script type="text/javascript">
1054jQuery(document).ready(function() {
1055 jQuery(".onclickopenref").click(function() {
1056 var ref=$(this).attr(\'ref\');
1057 var res = ref.split("_");
1058 var userid = res[1];
1065 if (ids == \'none\') /* No event */
1067 /* alert(\'no event\'); */
1068 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 :
'')).
'"
1069 window.location.href = url;
1071 else if (ids.indexOf(",") > -1) /* There is several events */
1073 /* alert(\'several events\'); */
1074 url = "'.DOL_URL_ROOT.
'/comm/action/list.php?mode=show_list&filtert="+userid+"&dateselectyear="+year+"&dateselectmonth="+month+"&dateselectday="+day;
1075 window.location.href = url;
1077 else /* One event */
1079 /* alert(\'one event\'); */
1080 url = "'.DOL_URL_ROOT.
'/comm/action/card.php?action=view&id="+ids
1081 window.location.href = url;
1114function 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)
1117 global $user, $conf, $langs, $hookmanager, $action;
1118 global $filter, $filtert, $status, $actioncode;
1119 global $theme_datacolor;
1120 global $cachethirdparties, $cachecontacts, $cacheusers, $cacheprojects, $colorindexused;
1121 global $begin_h, $end_h;
1126 $i = 0; $numother = 0; $numbirthday = 0; $numical = 0; $numicals = array();
1129 $colorindexused[$user->id] = 0;
1130 $nextindextouse = count($colorindexused);
1137 foreach ($eventarray as $daykey => $notused) {
1144 if ($day == $jour && (
int) $month == (
int) $mois && $year == $annee) {
1148 foreach ($eventarray[$daykey] as $index => $event) {
1152 $keysofuserassigned = array_keys($event->userassigned);
1153 $ponct = ($event->date_start_in_calendar == $event->date_end_in_calendar);
1155 if (!in_array($username->id, $keysofuserassigned)) {
1160 $parameters = array();
1161 $reshook = $hookmanager->executeHooks(
'formatEvent', $parameters, $event, $action);
1167 $color = -1; $cssclass =
''; $colorindex = -1;
1168 if (in_array($user->id, $keysofuserassigned)) {
1169 $cssclass =
'family_mytasks';
1171 if (empty($cacheusers[$event->userownerid])) {
1172 $newuser =
new User($db);
1173 $newuser->fetch($event->userownerid);
1174 $cacheusers[$event->userownerid] = $newuser;
1179 if (!empty($cacheusers[$event->userownerid]->color)) {
1180 $color = $cacheusers[$event->userownerid]->color;
1183 if (!empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1184 $color = $event->type_color;
1186 } elseif ($event->type_code ==
'ICALEVENT') {
1188 if (!empty($event->icalname)) {
1195 $color = $event->icalcolor;
1196 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other unsortable');
1197 } elseif ($event->type_code ==
'BIRTHDAY') {
1198 $numbirthday++; $colorindex = 2; $cssclass =
'family_birthday unsortable'; $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1201 $color = ($event->icalcolor ? $event->icalcolor : -1);
1202 $cssclass = (!empty($event->icalname) ?
'family_ext'.md5($event->icalname) :
'family_other');
1204 if (empty($cacheusers[$event->userownerid])) {
1205 $newuser =
new User($db);
1206 $newuser->fetch($event->userownerid);
1207 $cacheusers[$event->userownerid] = $newuser;
1212 if (!empty($cacheusers[$event->userownerid]->color)) {
1213 $color = $cacheusers[$event->userownerid]->color;
1216 if (!empty($conf->global->AGENDA_USE_COLOR_PER_EVENT_TYPE)) {
1217 $color = $event->type_color;
1223 $idusertouse = ($event->userownerid ? $event->userownerid : 0);
1224 if (isset($colorindexused[$idusertouse])) {
1225 $colorindex = $colorindexused[$idusertouse];
1227 $colorindex = $nextindextouse;
1228 $colorindexused[$idusertouse] = $colorindex;
1229 if (!empty($theme_datacolor[$nextindextouse + 1])) {
1234 $color = sprintf(
"%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
1238 for ($h = $begin_h; $h < $end_h; $h++) {
1241 if (empty($event->fulldayevent)) {
1242 $a =
dol_mktime((
int) $h, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1243 $b =
dol_mktime((
int) $h, 30, 0, $month, $day, $year,
'tzuserrel', 0);
1244 $c =
dol_mktime((
int) $h + 1, 0, 0, $month, $day, $year,
'tzuserrel', 0);
1246 $dateendtouse = $event->date_end_in_calendar;
1247 if ($dateendtouse == $event->date_start_in_calendar) {
1253 if ($event->date_start_in_calendar < $b && $dateendtouse > $a) {
1254 $busy = $event->transparency;
1255 $cases1[$h][$event->id][
'busy'] = $busy;
1256 $cases1[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1257 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1258 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1259 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1260 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1261 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1263 $cases1[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1266 if ($event->label) {
1267 $cases1[$h][$event->id][
'string'] .=
' - '.$event->label;
1269 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1270 $cases1[$h][$event->id][
'color'] = $color;
1271 if ($event->fk_project > 0) {
1272 if (empty($cacheprojects[$event->fk_project])) {
1274 $tmpproj->fetch($event->fk_project);
1275 $cacheprojects[$event->fk_project] = $tmpproj;
1277 $cases1[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1279 if ($event->socid > 0) {
1280 if (empty($cachethirdparties[$event->socid])) {
1281 $tmpthirdparty =
new Societe($db);
1282 $tmpthirdparty->fetch($event->socid);
1283 $cachethirdparties[$event->socid] = $tmpthirdparty;
1285 $cases1[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1287 if ($event->contact_id > 0) {
1288 if (empty($cachecontacts[$event->contact_id])) {
1289 $tmpcontact =
new Contact($db);
1290 $tmpcontact->fetch($event->contact_id);
1291 $cachecontacts[$event->contact_id] = $tmpcontact;
1293 $cases1[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1296 if ($event->date_start_in_calendar < $c && $dateendtouse > $b) {
1297 $busy = $event->transparency;
1298 $cases2[$h][$event->id][
'busy'] = $busy;
1299 $cases2[$h][$event->id][
'string'] =
dol_print_date($event->date_start_in_calendar,
'dayhour',
'tzuserrel');
1300 if ($event->date_end_in_calendar && $event->date_end_in_calendar != $event->date_start_in_calendar) {
1301 $tmpa =
dol_getdate($event->date_start_in_calendar,
true);
1302 $tmpb =
dol_getdate($event->date_end_in_calendar,
true);
1303 if ($tmpa[
'mday'] == $tmpb[
'mday'] && $tmpa[
'mon'] == $tmpb[
'mon'] && $tmpa[
'year'] == $tmpb[
'year']) {
1304 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'hour',
'tzuserrel');
1306 $cases2[$h][$event->id][
'string'] .=
'-'.dol_print_date($event->date_end_in_calendar,
'dayhour',
'tzuserrel');
1309 if ($event->label) {
1310 $cases2[$h][$event->id][
'string'] .=
' - '.$event->label;
1312 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1313 $cases2[$h][$event->id][
'color'] = $color;
1314 if ($event->fk_project > 0) {
1315 if (empty($cacheprojects[$event->fk_project])) {
1317 $tmpproj->fetch($event->fk_project);
1318 $cacheprojects[$event->fk_project] = $tmpproj;
1320 $cases2[$h][$event->id][
'string'] .=
', '.$langs->trans(
"Project").
': '.$cacheprojects[$event->fk_project]->ref.
' - '.$cacheprojects[$event->fk_project]->title;
1322 if ($event->socid > 0) {
1323 if (empty($cachethirdparties[$event->socid])) {
1324 $tmpthirdparty =
new Societe($db);
1325 $tmpthirdparty->fetch($event->socid);
1326 $cachethirdparties[$event->socid] = $tmpthirdparty;
1328 $cases2[$h][$event->id][
'string'] .=
', '.$cachethirdparties[$event->socid]->name;
1330 if ($event->contact_id > 0) {
1331 if (empty($cachecontacts[$event->contact_id])) {
1332 $tmpcontact =
new Contact($db);
1333 $tmpcontact->fetch($event->contact_id);
1334 $cachecontacts[$event->contact_id] = $tmpcontact;
1336 $cases2[$h][$event->id][
'string'] .=
', '.$cachecontacts[$event->contact_id]->getFullName($langs);
1340 $busy = $event->transparency;
1341 $cases1[$h][$event->id][
'busy'] = $busy;
1342 $cases2[$h][$event->id][
'busy'] = $busy;
1343 $cases1[$h][$event->id][
'string'] = $event->label;
1344 $cases2[$h][$event->id][
'string'] = $event->label;
1345 $cases1[$h][$event->id][
'typecode'] = $event->type_code;
1346 $cases2[$h][$event->id][
'typecode'] = $event->type_code;
1347 $cases1[$h][$event->id][
'color'] = $color;
1348 $cases2[$h][$event->id][
'color'] = $color;
1359 for ($h = $begin_h; $h < $end_h; $h++) {
1360 $color1 =
''; $color2 =
'';
1361 $style1 =
''; $style2 =
'';
1362 $string1 =
' '; $string2 =
' ';
1363 $title1 =
''; $title2 =
'';
1364 if (isset($cases1[$h]) && $cases1[$h] !=
'') {
1366 if (count($cases1[$h]) > 1) {
1367 $title1 .= count($cases1[$h]).
' '.(count($cases1[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1369 $string1 =
' ';
1370 if (empty($conf->global->AGENDA_NO_TRANSPARENT_ON_NOT_BUSY)) {
1371 $style1 =
'peruser_notbusy';
1373 $style1 =
'peruser_busy';
1375 foreach ($cases1[$h] as $id => $ev) {
1377 $style1 =
'peruser_busy';
1381 if (isset($cases2[$h]) && $cases2[$h] !=
'') {
1383 if (count($cases2[$h]) > 1) {
1384 $title2 .= count($cases2[$h]).
' '.(count($cases2[$h]) == 1 ? $langs->trans(
"Event") : $langs->trans(
"Events"));
1386 $string2 =
' ';
1387 if (empty($conf->global->AGENDA_NO_TRANSPARENT_ON_NOT_BUSY)) {
1388 $style2 =
'peruser_notbusy';
1390 $style2 =
'peruser_busy';
1392 foreach ($cases2[$h] as $id => $ev) {
1394 $style2 =
'peruser_busy';
1401 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) && array_keys($cases1[$h])) {
1402 $ids1 = join(
', ', array_keys($cases1[$h]));
1404 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) && array_keys($cases2[$h])) {
1405 $ids2 = join(
', ', array_keys($cases2[$h]));
1408 if ($h == $begin_h) {
1409 echo
'<td class="'.$style.
'_peruserleft cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1411 echo
'<td class="'.$style.
' cal_peruser'.($var ?
' cal_impair '.$style.
'_impair' :
'').
'">';
1413 if (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) == 1) {
1414 $output = array_slice($cases1[$h], 0, 1);
1415 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1416 if ($output[0][
'string']) {
1417 $title1 .= ($title1 ?
' - ' :
'').$output[0][
'string'];
1419 if ($output[0][
'color']) {
1420 $color1 = $output[0][
'color'];
1422 } elseif (!empty($cases1[$h]) && is_array($cases1[$h]) && count($cases1[$h]) > 1) {
1423 $title1 = $langs->trans(
"Ref").
' '.$ids1.($title1 ?
' - '.$title1 :
'');
1427 if (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) == 1) {
1428 $output = array_slice($cases2[$h], 0, 1);
1429 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1430 if ($output[0][
'string']) {
1431 $title2 .= ($title2 ?
' - ' :
'').$output[0][
'string'];
1433 if ($output[0][
'color']) {
1434 $color2 = $output[0][
'color'];
1436 } elseif (!empty($cases2[$h]) && is_array($cases2[$h]) && count($cases2[$h]) > 1) {
1437 $title2 = $langs->trans(
"Ref").
' '.$ids2.($title2 ?
' - '.$title2 :
'');
1440 print
'<table class="nobordernopadding case centpercent">';
1442 if ($style1 ==
'peruser_notbusy') {
1443 print
'style="border: 1px solid #'.($color1 ? $color1 :
"888").
' !important" ';
1444 } elseif ($color1) {
1445 print ($color1 ?
'style="background: #'.$color1.
';"' :
'');
1448 print ($style1 ? $style1.
' ' :
'');
1449 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.
'"' :
'').
'>';
1452 if ($style2 ==
'peruser_notbusy') {
1453 print
'style="border: 1px solid #'.($color2 ? $color2 :
"888").
' !important" ';
1454 } elseif ($color2) {
1455 print ($color2 ?
'style="background: #'.$color2.
';"' :
'');
1458 print ($style2 ? $style2.
' ' :
'');
1459 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.
'"' :
'').
'>';
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.
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.
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.