2014-07-11 13:55:15 +02:00
< ? php
/* Copyright ( C ) 2001 - 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2003 Eric Seigne < erics @ rycks . com >
* Copyright ( C ) 2004 - 2014 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
* Copyright ( C ) 2011 Juanjo Menent < jmenent @ 2 byte . es >
2014-09-05 13:48:55 +02:00
* Copyright ( C ) 2014 Cedric GROSS < c . gross @ kreiz - it . fr >
2014-07-11 13:55:15 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
/**
* \file htdocs / comm / action / peruser . php
* \ingroup agenda
* \brief Tab of calendar events per user
*/
require '../../main.inc.php' ;
require_once DOL_DOCUMENT_ROOT . '/comm/action/class/actioncomm.class.php' ;
2014-09-05 13:48:55 +02:00
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php' ;
2017-07-29 04:07:46 +02:00
require_once DOL_DOCUMENT_ROOT . '/contact/class/contact.class.php' ;
2014-09-05 13:48:55 +02:00
require_once DOL_DOCUMENT_ROOT . '/user/class/usergroup.class.php' ;
2014-07-11 13:55:15 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/agenda.lib.php' ;
2017-07-29 04:07:46 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php' ;
2014-09-05 13:48:55 +02:00
2014-07-11 13:55:15 +02:00
if ( ! isset ( $conf -> global -> AGENDA_MAX_EVENTS_DAY_VIEW )) $conf -> global -> AGENDA_MAX_EVENTS_DAY_VIEW = 3 ;
2017-07-29 01:59:26 +02:00
$filter = GETPOST ( " filter " , 'alpha' , 3 );
2017-05-05 18:42:11 +02:00
$filtert = GETPOST ( " filtert " , " int " , 3 );
2014-07-11 13:55:15 +02:00
$usergroup = GETPOST ( " usergroup " , " int " , 3 );
2014-09-05 13:48:55 +02:00
//if (! ($usergroup > 0) && ! ($filtert > 0)) $filtert = $user->id;
//$showbirthday = empty($conf->use_javascript_ajax)?GETPOST("showbirthday","int"):1;
$showbirthday = 0 ;
2014-07-11 13:55:15 +02:00
2014-10-09 17:05:57 +02:00
// If not choice done on calendar owner, we filter on user.
2014-10-09 17:27:14 +02:00
if ( empty ( $filtert ) && empty ( $conf -> global -> AGENDA_ALL_CALENDARS ))
2014-10-09 17:05:57 +02:00
{
$filtert = $user -> id ;
}
2014-07-11 13:55:15 +02:00
$sortfield = GETPOST ( " sortfield " , 'alpha' );
$sortorder = GETPOST ( " sortorder " , 'alpha' );
$page = GETPOST ( " page " , " int " );
2017-06-06 10:53:53 +02:00
if ( empty ( $page ) || $page == - 1 ) { $page = 0 ; } // If $page is not defined, or '' or -1
2017-07-29 04:07:46 +02:00
$limit = GETPOST ( 'limit' , 'int' ) ? GETPOST ( 'limit' , 'int' ) : $conf -> liste_limit ;
2014-07-11 13:55:15 +02:00
$offset = $limit * $page ;
if ( ! $sortorder ) $sortorder = " ASC " ;
if ( ! $sortfield ) $sortfield = " a.datec " ;
// Security check
$socid = GETPOST ( " socid " , " int " );
if ( $user -> societe_id ) $socid = $user -> societe_id ;
$result = restrictedArea ( $user , 'agenda' , 0 , '' , 'myactions' );
if ( $socid < 0 ) $socid = '' ;
$canedit = 1 ;
if ( ! $user -> rights -> agenda -> myactions -> read ) accessforbidden ();
if ( ! $user -> rights -> agenda -> allactions -> read ) $canedit = 0 ;
if ( ! $user -> rights -> agenda -> allactions -> read || $filter == 'mine' ) // If no permission to see all, we show only affected to me
{
$filtert = $user -> id ;
}
2014-09-05 13:48:55 +02:00
//$action=GETPOST('action','alpha');
2014-09-05 21:12:01 +02:00
$action = 'show_peruser' ; //We use 'show_week' mode
2016-06-06 13:05:36 +02:00
$resourceid = GETPOST ( " resourceid " , " int " );
2014-07-11 13:55:15 +02:00
$year = GETPOST ( " year " , " int " ) ? GETPOST ( " year " , " int " ) : date ( " Y " );
$month = GETPOST ( " month " , " int " ) ? GETPOST ( " month " , " int " ) : date ( " m " );
$week = GETPOST ( " week " , " int " ) ? GETPOST ( " week " , " int " ) : date ( " W " );
2014-09-05 21:12:01 +02:00
$day = GETPOST ( " day " , " int " ) ? GETPOST ( " day " , " int " ) : date ( " d " );
2014-07-11 13:55:15 +02:00
$pid = GETPOST ( " projectid " , " int " , 3 );
2017-07-29 01:59:26 +02:00
$status = GETPOST ( " status " , 'alpha' );
$type = GETPOST ( " type " , 'alpha' );
$maxprint = (( GETPOST ( " maxprint " , 'int' ) != '' ) ? GETPOST ( " maxprint " , 'int' ) : $conf -> global -> AGENDA_MAX_EVENTS_DAY_VIEW );
2016-01-14 14:15:14 +01:00
// Set actioncode (this code must be same for setting actioncode into peruser, listacton and index)
2017-06-18 21:13:48 +02:00
if ( GETPOST ( 'actioncode' , 'array' ))
2016-01-14 14:15:14 +01:00
{
$actioncode = GETPOST ( 'actioncode' , 'array' , 3 );
if ( ! count ( $actioncode )) $actioncode = '0' ;
}
2017-06-18 21:13:48 +02:00
else
2016-01-14 14:15:14 +01:00
{
2017-07-29 04:07:46 +02:00
$actioncode = GETPOST ( " actioncode " , " alpha " , 3 ) ? GETPOST ( " actioncode " , " alpha " , 3 ) : ( GETPOST ( " actioncode " , " alpha " ) == '0' ? '0' : ( empty ( $conf -> global -> AGENDA_DEFAULT_FILTER_TYPE ) ? '' : $conf -> global -> AGENDA_DEFAULT_FILTER_TYPE ));
2016-01-14 14:15:14 +01:00
}
if ( $actioncode == '' && empty ( $actioncodearray )) $actioncode = ( empty ( $conf -> global -> AGENDA_DEFAULT_FILTER_TYPE ) ? '' : $conf -> global -> AGENDA_DEFAULT_FILTER_TYPE );
2017-07-29 04:07:46 +02:00
2017-07-29 01:59:26 +02:00
$dateselect = dol_mktime ( 0 , 0 , 0 , GETPOST ( 'dateselectmonth' , 'int' ), GETPOST ( 'dateselectday' , 'int' ), GETPOST ( 'dateselectyear' , 'int' ));
2014-09-06 17:55:33 +02:00
if ( $dateselect > 0 )
{
2017-07-29 01:59:26 +02:00
$day = GETPOST ( 'dateselectday' , 'int' );
$month = GETPOST ( 'dateselectmonth' , 'int' );
$year = GETPOST ( 'dateselectyear' , 'int' );
2014-09-06 17:55:33 +02:00
}
2014-09-05 13:48:55 +02:00
$tmp = empty ( $conf -> global -> MAIN_DEFAULT_WORKING_HOURS ) ? '9-18' : $conf -> global -> MAIN_DEFAULT_WORKING_HOURS ;
$tmparray = explode ( '-' , $tmp );
2017-07-29 01:59:26 +02:00
$begin_h = GETPOST ( 'begin_h' , 'int' ) != '' ? GETPOST ( 'begin_h' , 'int' ) : ( $tmparray [ 0 ] != '' ? $tmparray [ 0 ] : 9 );
$end_h = GETPOST ( 'end_h' , 'int' ) ? GETPOST ( 'end_h' , 'int' ) : ( $tmparray [ 1 ] != '' ? $tmparray [ 1 ] : 18 );
2014-09-05 13:48:55 +02:00
if ( $begin_h < 0 || $begin_h > 23 ) $begin_h = 9 ;
if ( $end_h < 1 || $end_h > 24 ) $end_h = 18 ;
if ( $end_h <= $begin_h ) $end_h = $begin_h + 1 ;
$tmp = empty ( $conf -> global -> MAIN_DEFAULT_WORKING_DAYS ) ? '1-5' : $conf -> global -> MAIN_DEFAULT_WORKING_DAYS ;
$tmparray = explode ( '-' , $tmp );
2017-07-29 01:59:26 +02:00
$begin_d = GETPOST ( 'begin_d' , 'int' ) ? GETPOST ( 'begin_d' , 'int' ) : ( $tmparray [ 0 ] != '' ? $tmparray [ 0 ] : 1 );
$end_d = GETPOST ( 'end_d' , 'int' ) ? GETPOST ( 'end_d' , 'int' ) : ( $tmparray [ 1 ] != '' ? $tmparray [ 1 ] : 5 );
2014-09-05 13:48:55 +02:00
if ( $begin_d < 1 || $begin_d > 7 ) $begin_d = 1 ;
if ( $end_d < 1 || $end_d > 7 ) $end_d = 7 ;
2014-09-29 13:21:03 +02:00
if ( $end_d < $begin_d ) $end_d = $begin_d + 1 ;
2014-09-05 13:48:55 +02:00
if ( $status == '' && ! isset ( $_GET [ 'status' ]) && ! isset ( $_POST [ 'status' ])) $status = ( empty ( $conf -> global -> AGENDA_DEFAULT_FILTER_STATUS ) ? '' : $conf -> global -> AGENDA_DEFAULT_FILTER_STATUS );
if ( empty ( $action ) && ! isset ( $_GET [ 'action' ]) && ! isset ( $_POST [ 'action' ])) $action = ( empty ( $conf -> global -> AGENDA_DEFAULT_VIEW ) ? 'show_month' : $conf -> global -> AGENDA_DEFAULT_VIEW );
2014-07-11 13:55:15 +02:00
2017-07-29 01:59:26 +02:00
if ( GETPOST ( 'viewcal' , 'alpha' ) && $action != 'show_day' && $action != 'show_week' && $action != 'show_peruser' ) {
2014-07-11 13:55:15 +02:00
$action = 'show_month' ; $day = '' ;
} // View by month
2017-07-29 01:59:26 +02:00
if ( GETPOST ( 'viewweek' , 'alpha' ) || $action == 'show_week' ) {
2014-07-11 13:55:15 +02:00
$action = 'show_week' ; $week = ( $week ? $week : date ( " W " )); $day = ( $day ? $day : date ( " d " ));
} // View by week
2017-07-29 01:59:26 +02:00
if ( GETPOST ( 'viewday' , 'alpha' ) || $action == 'show_day' ) {
2014-07-11 13:55:15 +02:00
$action = 'show_day' ; $day = ( $day ? $day : date ( " d " ));
} // View by day
2018-05-26 19:03:41 +02:00
// Load translation files required by the page
$langs -> loadLangs ( array ( 'users' , 'agenda' , 'other' , 'commercial' ));
2014-07-11 13:55:15 +02:00
2017-06-10 12:56:28 +02:00
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
2014-07-11 13:55:15 +02:00
$hookmanager -> initHooks ( array ( 'agenda' ));
/*
* Actions
*/
2014-09-05 13:48:55 +02:00
if ( $action == 'delete_action' )
{
$event = new ActionComm ( $db );
$event -> fetch ( $actionid );
$result = $event -> delete ();
}
2014-07-11 13:55:15 +02:00
/*
* View
*/
$form = new Form ( $db );
$companystatic = new Societe ( $db );
2017-07-29 01:59:26 +02:00
$help_url = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda' ;
llxHeader ( '' , $langs -> trans ( " Agenda " ), $help_url );
2014-07-11 13:55:15 +02:00
$now = dol_now ();
$nowarray = dol_getdate ( $now );
$nowyear = $nowarray [ 'year' ];
$nowmonth = $nowarray [ 'mon' ];
$nowday = $nowarray [ 'mday' ];
2014-09-05 13:48:55 +02:00
// Define list of all external calendars (global setup)
2014-07-11 13:55:15 +02:00
$listofextcals = array ();
2014-09-05 13:48:55 +02:00
$prev = dol_get_first_day_week ( $day , $month , $year );
$first_day = $prev [ 'first_day' ];
$first_month = $prev [ 'first_month' ];
$first_year = $prev [ 'first_year' ];
2014-07-11 13:55:15 +02:00
2014-09-05 13:48:55 +02:00
$week = $prev [ 'week' ];
2014-07-11 13:55:15 +02:00
2014-09-05 13:48:55 +02:00
$day = ( int ) $day ;
$next = dol_get_next_week ( $day , $week , $month , $year );
$next_year = $next [ 'year' ];
$next_month = $next [ 'month' ];
$next_day = $next [ 'day' ];
2014-07-11 13:55:15 +02:00
2014-09-05 13:48:55 +02:00
$max_day_in_month = date ( " t " , dol_mktime ( 0 , 0 , 0 , $month , 1 , $year ));
$tmpday = $first_day ;
2014-07-11 13:55:15 +02:00
//print 'xx'.$prev_year.'-'.$prev_month.'-'.$prev_day;
//print 'xx'.$next_year.'-'.$next_month.'-'.$next_day;
$title = $langs -> trans ( " DoneAndToDoActions " );
if ( $status == 'done' ) $title = $langs -> trans ( " DoneActions " );
if ( $status == 'todo' ) $title = $langs -> trans ( " ToDoActions " );
$param = '' ;
2017-11-02 14:58:33 +01:00
if ( $actioncode || isset ( $_GET [ 'actioncode' ]) || isset ( $_POST [ 'actioncode' ])) {
if ( is_array ( $actioncode )) {
2018-03-11 02:04:08 +01:00
foreach ( $actioncode as $str_action ) $param .= " &actioncode[]= " . urlencode ( $str_action );
} else $param .= " &actioncode= " . urlencode ( $actioncode );
2017-11-02 14:58:33 +01:00
}
2018-03-11 02:04:08 +01:00
if ( $resourceid > 0 ) $param .= " &resourceid= " . urlencode ( $resourceid );
if ( $status || isset ( $_GET [ 'status' ]) || isset ( $_POST [ 'status' ])) $param .= " &status= " . urlencode ( $status );
if ( $filter ) $param .= " &filter= " . urlencode ( $filter );
if ( $filtert ) $param .= " &filtert= " . urlencode ( $filtert );
if ( $usergroup ) $param .= " &usergroup= " . urlencode ( $usergroup );
if ( $socid ) $param .= " &socid= " . urlencode ( $socid );
2014-07-11 13:55:15 +02:00
if ( $showbirthday ) $param .= " &showbirthday=1 " ;
2018-03-11 02:04:08 +01:00
if ( $pid ) $param .= " &projectid= " . urlencode ( $pid );
if ( $type ) $param .= " &type= " . urlencode ( $type );
if ( $action == 'show_day' || $action == 'show_week' || $action == 'show_month' || $action != 'show_peruser' ) $param .= '&action=' . urlencode ( $action );
if ( $begin_h != '' ) $param .= '&begin_h=' . urlencode ( $begin_h );
if ( $end_h != '' ) $param .= '&end_h=' . urlencode ( $end_h );
if ( $begin_d != '' ) $param .= '&begin_d=' . urlencode ( $begin_d );
if ( $end_d != '' ) $param .= '&end_d=' . urlencode ( $end_d );
$param .= " &maxprint= " . urlencode ( $maxprint );
2014-07-11 13:55:15 +02:00
2017-11-25 00:12:45 +01:00
2014-09-05 21:12:01 +02:00
$prev = dol_get_first_day_week ( $day , $month , $year );
2015-02-03 11:25:51 +01:00
//print "day=".$day." month=".$month." year=".$year;
//var_dump($prev); exit;
2014-09-05 21:12:01 +02:00
$prev_year = $prev [ 'prev_year' ];
$prev_month = $prev [ 'prev_month' ];
$prev_day = $prev [ 'prev_day' ];
$first_day = $prev [ 'first_day' ];
$first_month = $prev [ 'first_month' ];
$first_year = $prev [ 'first_year' ];
$week = $prev [ 'week' ];
$day = ( int ) $day ;
$next = dol_get_next_week ( $first_day , $week , $first_month , $first_year );
$next_year = $next [ 'year' ];
$next_month = $next [ 'month' ];
$next_day = $next [ 'day' ];
2014-09-28 15:33:13 +02:00
// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1)
2014-09-05 21:12:01 +02:00
$firstdaytoshow = dol_mktime ( 0 , 0 , 0 , $first_month , $first_day , $first_year );
2018-03-10 16:46:57 +01:00
2018-03-11 02:04:08 +01:00
$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 ;
2018-03-10 16:46:57 +01:00
$lastdaytoshow = dol_time_plus_duree ( $firstdaytoshow , $nb_weeks_to_show , 'd' );
2015-02-03 11:25:51 +01:00
//print $firstday.'-'.$first_month.'-'.$first_year;
2014-09-28 15:33:13 +02:00
//print dol_print_date($firstdaytoshow,'dayhour');
//print dol_print_date($lastdaytoshow,'dayhour');
2014-09-05 21:12:01 +02:00
$max_day_in_month = date ( " t " , dol_mktime ( 0 , 0 , 0 , $month , 1 , $year ));
$tmpday = $first_day ;
2017-11-25 00:12:45 +01:00
$picto = 'calendarweek' ;
2014-09-05 21:12:01 +02:00
2017-03-28 18:42:23 +02:00
$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 " ;
2014-09-05 21:12:01 +02:00
$nav .= " <span id= \" month_name \" > " . dol_print_date ( dol_mktime ( 0 , 0 , 0 , $first_month , $first_day , $first_year ), " %Y " ) . " , " . $langs -> trans ( " Week " ) . " " . $week ;
$nav .= " </span> \n " ;
2017-03-28 18:42:23 +02:00
$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 " ;
2014-09-05 21:12:01 +02:00
$nav .= " (<a href= \" ?year= " . $nowyear . " &month= " . $nowmonth . " &day= " . $nowday . $param . " \" > " . $langs -> trans ( " Today " ) . " </a>) " ;
2017-11-25 00:12:45 +01:00
/* $nav .= ' <form name="dateselect" action="' . $_SERVER [ " PHP_SELF " ] . '?action=show_peruser' . $param . '">' ;
2014-11-18 14:36:16 +01:00
$nav .= '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
$nav .= '<input type="hidden" name="action" value="' . $action . '">' ;
2017-05-05 18:42:11 +02:00
$nav .= '<input type="hidden" name="filtert" value="' . $filtert . '">' ;
2014-11-18 14:36:16 +01:00
$nav .= '<input type="hidden" name="usergroup" value="' . $usergroup . '">' ;
$nav .= '<input type="hidden" name="actioncode" value="' . $actioncode . '">' ;
2016-06-06 13:05:36 +02:00
$nav .= '<input type="hidden" name="resourceid" value="' . $resourceid . '">' ;
2014-11-18 14:36:16 +01:00
$nav .= '<input type="hidden" name="status" value="' . $status . '">' ;
$nav .= '<input type="hidden" name="socid" value="' . $socid . '">' ;
$nav .= '<input type="hidden" name="projectid" value="' . $projectid . '">' ;
$nav .= '<input type="hidden" name="begin_h" value="' . $begin_h . '">' ;
$nav .= '<input type="hidden" name="end_h" value="' . $end_h . '">' ;
$nav .= '<input type="hidden" name="begin_d" value="' . $begin_d . '">' ;
$nav .= '<input type="hidden" name="end_d" value="' . $end_d . '">' ;
$nav .= '<input type="hidden" name="showbirthday" value="' . $showbirthday . '">' ;
2017-11-25 00:12:45 +01:00
*/
2016-03-25 15:53:44 +01:00
$nav .= $form -> select_date ( $dateselect , 'dateselect' , 0 , 0 , 1 , '' , 1 , 0 , 1 );
2014-09-06 17:55:33 +02:00
$nav .= ' <input type="submit" name="submitdateselect" class="button" value="' . $langs -> trans ( " Refresh " ) . '">' ;
2017-11-25 00:12:45 +01:00
//$nav.='</form>';
2014-07-11 13:55:15 +02:00
// Must be after the nav definition
2018-03-11 02:04:08 +01:00
$param .= '&year=' . urlencode ( $year ) . '&month=' . urlencode ( $month ) . ( $day ? '&day=' . urlencode ( $day ) : '' );
2014-07-11 13:55:15 +02:00
//print 'x'.$param;
2014-09-05 13:48:55 +02:00
$tabactive = '' ;
if ( $action == 'show_month' ) $tabactive = 'cardmonth' ;
2014-09-05 21:12:01 +02:00
if ( $action == 'show_week' ) $tabactive = 'cardweek' ;
2014-09-05 13:48:55 +02:00
if ( $action == 'show_day' ) $tabactive = 'cardday' ;
if ( $action == 'show_list' ) $tabactive = 'cardlist' ;
2014-09-05 21:12:01 +02:00
if ( $action == 'show_peruser' ) $tabactive = 'cardperuser' ;
2014-07-11 13:55:15 +02:00
$paramnoaction = preg_replace ( '/action=[a-z_]+/' , '' , $param );
$head = calendars_prepare_head ( $paramnoaction );
2017-11-25 00:12:45 +01:00
print '<form method="POST" id="searchFormList" class="listactionsfilter" action="' . $_SERVER [ " PHP_SELF " ] . '">' . " \n " ;
2014-07-11 13:55:15 +02:00
dol_fiche_head ( $head , $tabactive , $langs -> trans ( 'Agenda' ), 0 , 'action' );
2016-06-06 13:05:36 +02:00
print_actions_filter ( $form , $canedit , $status , $year , $month , $day , $showbirthday , 0 , $filtert , 0 , $pid , $socid , $action , $listofextcals , $actioncode , $usergroup , '' , $resourceid );
2014-07-11 13:55:15 +02:00
dol_fiche_end ();
2014-09-05 13:48:55 +02:00
$showextcals = $listofextcals ;
// Legend
if ( $conf -> use_javascript_ajax )
{
$s = '' ;
$s .= '<script type="text/javascript">' . " \n " ;
$s .= 'jQuery(document).ready(function () {' . " \n " ;
$s .= 'jQuery("#check_mytasks").click(function() { jQuery(".family_mytasks").toggle(); jQuery(".family_other").toggle(); });' . " \n " ;
$s .= 'jQuery("#check_birthday").click(function() { jQuery(".family_birthday").toggle(); });' . " \n " ;
$s .= 'jQuery(".family_birthday").toggle();' . " \n " ;
if ( $action == " show_week " || $action == " show_month " || empty ( $action ))
{
$s .= 'jQuery( "td.sortable" ).sortable({connectWith: ".sortable",placeholder: "ui-state-highlight",items: "div:not(.unsortable)", receive: function( event, ui ) {' ;
$s .= 'var frm=jQuery("#move_event");frm.attr("action",ui.item.find("a.cal_event").attr("href")).children("#newdate").val(jQuery(event.target).closest("div").attr("id"));frm.submit();}});' . " \n " ;
}
$s .= '});' . " \n " ;
$s .= '</script>' . " \n " ;
if ( ! empty ( $conf -> use_javascript_ajax ))
{
2015-05-07 11:57:23 +02:00
$s .= '<div class="nowrap clear float"><input type="checkbox" id="check_mytasks" name="check_mytasks" checked disabled> ' . $langs -> trans ( " LocalAgenda " ) . ' </div>' ;
2014-09-05 13:48:55 +02:00
if ( is_array ( $showextcals ) && count ( $showextcals ) > 0 )
{
foreach ( $showextcals as $val )
{
2015-03-05 11:46:03 +01:00
$htmlname = md5 ( $val [ 'name' ]);
2014-09-05 13:48:55 +02:00
$s .= '<script type="text/javascript">' . " \n " ;
$s .= 'jQuery(document).ready(function () {' . " \n " ;
2015-03-05 11:46:03 +01:00
$s .= ' jQuery("#check_ext' . $htmlname . '").click(function() {' ;
2014-09-05 13:48:55 +02:00
$s .= ' /* alert("' . $htmlname . '"); */' ;
2015-03-05 11:46:03 +01:00
$s .= ' jQuery(".family_ext' . $htmlname . '").toggle();' ;
2014-09-05 13:48:55 +02:00
$s .= ' });' . " \n " ;
$s .= '});' . " \n " ;
$s .= '</script>' . " \n " ;
2015-05-07 11:39:26 +02:00
$s .= '<div class="nowrap float"><input type="checkbox" id="check_ext' . $htmlname . '" name="check_ext' . $htmlname . '" checked> ' . $val [ 'name' ] . ' </div>' ;
2014-09-05 13:48:55 +02:00
}
}
2015-07-21 12:19:21 +02:00
//$s.='<div class="nowrap float"><input type="checkbox" id="check_birthday" name="check_birthday"> '.$langs->trans("AgendaShowBirthdayEvents").' </div>';
// Calendars from hooks
$parameters = array (); $object = null ;
$reshook = $hookmanager -> executeHooks ( 'addCalendarChoice' , $parameters , $object , $action );
if ( empty ( $reshook ))
{
$s .= $hookmanager -> resPrint ;
}
elseif ( $reshook > 1 )
{
$s = $hookmanager -> resPrint ;
}
2014-09-05 13:48:55 +02:00
}
}
2014-09-05 21:12:01 +02:00
$link = '' ;
2015-09-24 18:33:48 +02:00
print load_fiche_titre ( $s , $link . ' ' . $nav , '' );
2014-07-11 13:55:15 +02:00
// Get event in an array
$eventarray = array ();
2015-01-15 02:06:04 +01:00
$sql = 'SELECT' ;
if ( $usergroup > 0 ) $sql .= " DISTINCT " ;
$sql .= ' a.id, a.label,' ;
2014-07-11 13:55:15 +02:00
$sql .= ' a.datep,' ;
$sql .= ' a.datep2,' ;
$sql .= ' a.percent,' ;
2015-01-15 02:06:04 +01:00
$sql .= ' a.fk_user_author,a.fk_user_action,' ;
2014-07-11 13:55:15 +02:00
$sql .= ' a.transparency, a.priority, a.fulldayevent, a.location,' ;
2017-07-29 04:07:46 +02:00
$sql .= ' a.fk_soc, a.fk_contact, a.fk_element, a.elementtype, a.fk_project,' ;
2014-09-29 13:21:03 +02:00
$sql .= ' ca.code, ca.color' ;
2014-07-11 13:55:15 +02:00
$sql .= ' FROM ' . MAIN_DB_PREFIX . 'c_actioncomm as ca, ' . MAIN_DB_PREFIX . " actioncomm as a " ;
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " societe_commerciaux as sc ON a.fk_soc = sc.fk_soc " ;
2016-06-06 13:05:36 +02:00
// We must filter on resource table
if ( $resourceid > 0 ) $sql .= " , " . MAIN_DB_PREFIX . " element_resources as r " ;
2015-01-15 02:06:04 +01:00
// We must filter on assignement table
if ( $filtert > 0 || $usergroup > 0 ) $sql .= " , " . MAIN_DB_PREFIX . " actioncomm_resources as ar " ;
if ( $usergroup > 0 ) $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " usergroup_user as ugu ON ugu.fk_user = ar.fk_element " ;
2014-07-11 13:55:15 +02:00
$sql .= ' WHERE a.fk_action = ca.id' ;
2017-05-30 18:50:54 +02:00
$sql .= ' AND a.entity IN (' . getEntity ( 'agenda' ) . ')' ;
2016-11-08 12:58:07 +01:00
// Condition on actioncode
if ( ! empty ( $actioncode ))
{
if ( empty ( $conf -> global -> AGENDA_USE_EVENT_TYPE ))
{
if ( $actioncode == 'AC_NON_AUTO' ) $sql .= " AND ca.type != 'systemauto' " ;
elseif ( $actioncode == 'AC_ALL_AUTO' ) $sql .= " AND ca.type = 'systemauto' " ;
else
{
if ( $actioncode == 'AC_OTH' ) $sql .= " AND ca.type != 'systemauto' " ;
if ( $actioncode == 'AC_OTH_AUTO' ) $sql .= " AND ca.type = 'systemauto' " ;
}
}
else
{
if ( $actioncode == 'AC_NON_AUTO' ) $sql .= " AND ca.type != 'systemauto' " ;
elseif ( $actioncode == 'AC_ALL_AUTO' ) $sql .= " AND ca.type = 'systemauto' " ;
else
{
2017-11-02 15:51:35 +01:00
if ( is_array ( $actioncode ))
{
$sql .= " AND ca.code IN (' " . implode ( " ',' " , $actioncode ) . " ') " ;
}
else
{
$sql .= " AND ca.code IN (' " . implode ( " ',' " , explode ( ',' , $actioncode )) . " ') " ;
}
2016-11-08 12:58:07 +01:00
}
}
}
2016-06-06 13:05:36 +02:00
if ( $resourceid > 0 ) $sql .= " AND r.element_type = 'action' AND r.element_id = a.id AND r.resource_id = " . $db -> escape ( $resourceid );
2014-07-11 13:55:15 +02:00
if ( $pid ) $sql .= " AND a.fk_project= " . $db -> escape ( $pid );
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " AND (a.fk_soc IS NULL OR sc.fk_user = " . $user -> id . " ) " ;
if ( $socid > 0 ) $sql .= ' AND a.fk_soc = ' . $socid ;
2015-01-15 02:06:04 +01:00
// We must filter on assignement table
if ( $filtert > 0 || $usergroup > 0 ) $sql .= " AND ar.fk_actioncomm = a.id AND ar.element_type='user' " ;
2014-07-11 13:55:15 +02:00
if ( $action == 'show_day' )
{
$sql .= " AND ( " ;
$sql .= " (a.datep BETWEEN ' " . $db -> idate ( dol_mktime ( 0 , 0 , 0 , $month , $day , $year )) . " ' " ;
$sql .= " AND ' " . $db -> idate ( dol_mktime ( 23 , 59 , 59 , $month , $day , $year )) . " ') " ;
$sql .= " OR " ;
$sql .= " (a.datep2 BETWEEN ' " . $db -> idate ( dol_mktime ( 0 , 0 , 0 , $month , $day , $year )) . " ' " ;
$sql .= " AND ' " . $db -> idate ( dol_mktime ( 23 , 59 , 59 , $month , $day , $year )) . " ') " ;
$sql .= " OR " ;
$sql .= " (a.datep < ' " . $db -> idate ( dol_mktime ( 0 , 0 , 0 , $month , $day , $year )) . " ' " ;
$sql .= " AND a.datep2 > ' " . $db -> idate ( dol_mktime ( 23 , 59 , 59 , $month , $day , $year )) . " ') " ;
$sql .= ')' ;
}
else
{
// To limit array
$sql .= " AND ( " ;
2017-07-29 01:59:26 +02:00
$sql .= " (a.datep BETWEEN ' " . $db -> idate ( $firstdaytoshow - ( 60 * 60 * 24 * 2 )) . " ' " ; // Start 2 day before $firstdaytoshow
$sql .= " AND ' " . $db -> idate ( $lastdaytoshow + ( 60 * 60 * 24 * 2 )) . " ') " ; // End 2 day after $lastdaytoshow
2014-07-11 13:55:15 +02:00
$sql .= " OR " ;
2017-07-29 01:59:26 +02:00
$sql .= " (a.datep2 BETWEEN ' " . $db -> idate ( $firstdaytoshow - ( 60 * 60 * 24 * 2 )) . " ' " ;
$sql .= " AND ' " . $db -> idate ( $lastdaytoshow + ( 60 * 60 * 24 * 2 )) . " ') " ;
2014-07-11 13:55:15 +02:00
$sql .= " OR " ;
2017-07-29 01:59:26 +02:00
$sql .= " (a.datep < ' " . $db -> idate ( $firstdaytoshow - ( 60 * 60 * 24 * 2 )) . " ' " ;
$sql .= " AND a.datep2 > ' " . $db -> idate ( $lastdaytoshow + ( 60 * 60 * 24 * 2 )) . " ') " ;
2014-07-11 13:55:15 +02:00
$sql .= ')' ;
}
if ( $type ) $sql .= " AND ca.id = " . $type ;
if ( $status == '0' ) { $sql .= " AND a.percent = 0 " ; }
if ( $status == '-1' ) { $sql .= " AND a.percent = -1 " ; } // Not applicable
2014-09-05 13:48:55 +02:00
if ( $status == '50' ) { $sql .= " AND (a.percent > 0 AND a.percent < 100) " ; } // Running already started
2018-05-30 13:37:17 +02:00
if ( $status == 'done' || $status == '100' ) { $sql .= " AND (a.percent = 100) " ; }
if ( $status == 'todo' ) { $sql .= " AND (a.percent >= 0 AND a.percent < 100) " ; }
2015-01-15 02:06:04 +01:00
// We must filter on assignement table
if ( $filtert > 0 || $usergroup > 0 )
2014-07-11 13:55:15 +02:00
{
$sql .= " AND ( " ;
2015-01-15 02:06:04 +01:00
if ( $filtert > 0 ) $sql .= " ar.fk_element = " . $filtert ;
if ( $usergroup > 0 ) $sql .= ( $filtert > 0 ? " OR " : " " ) . " ugu.fk_usergroup = " . $usergroup ;
2014-07-11 13:55:15 +02:00
$sql .= " ) " ;
}
// Sort on date
2014-09-05 13:48:55 +02:00
$sql .= ' ORDER BY fk_user_action, datep' ; //fk_user_action
2018-03-10 16:46:57 +01:00
2014-07-11 13:55:15 +02:00
2016-04-23 16:51:22 +02:00
dol_syslog ( " comm/action/peruser.php " , LOG_DEBUG );
2014-07-11 13:55:15 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
2017-07-29 01:59:26 +02:00
2014-07-11 13:55:15 +02:00
$i = 0 ;
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
2014-10-20 12:29:35 +02:00
// Discard auto action if option is on
if ( ! empty ( $conf -> global -> AGENDA_ALWAYS_HIDE_AUTO ) && $obj -> code == 'AC_OTH_AUTO' )
{
$i ++ ;
continue ;
}
2017-07-29 01:59:26 +02:00
$datep = $db -> jdate ( $obj -> datep );
$datep2 = $db -> jdate ( $obj -> datep2 );
2014-07-11 13:55:15 +02:00
// Create a new object action
$event = new ActionComm ( $db );
$event -> id = $obj -> id ;
2017-07-29 01:59:26 +02:00
$event -> datep = $datep ; // datep and datef are GMT date
$event -> datef = $datep2 ;
2014-07-11 13:55:15 +02:00
$event -> type_code = $obj -> code ;
2014-09-29 13:21:03 +02:00
$event -> type_color = $obj -> color ;
2014-09-08 10:24:16 +02:00
$event -> label = $obj -> label ;
2014-07-11 13:55:15 +02:00
$event -> percentage = $obj -> percent ;
2014-09-26 12:27:18 +02:00
$event -> authorid = $obj -> fk_user_author ; // user id of creator
$event -> userownerid = $obj -> fk_user_action ; // user id of owner
2014-07-11 13:55:15 +02:00
$event -> priority = $obj -> priority ;
$event -> fulldayevent = $obj -> fulldayevent ;
$event -> location = $obj -> location ;
$event -> transparency = $obj -> transparency ;
2017-07-29 04:07:46 +02:00
$event -> fk_project = $obj -> fk_project ;
2014-09-23 17:54:03 +02:00
$event -> socid = $obj -> fk_soc ;
$event -> contactid = $obj -> fk_contact ;
2014-07-11 13:55:15 +02:00
2014-10-03 15:58:08 +02:00
$event -> fk_element = $obj -> fk_element ;
$event -> elementtype = $obj -> elementtype ;
2014-07-11 13:55:15 +02:00
// Defined date_start_in_calendar and date_end_in_calendar property
// They are date start and end of action but modified to not be outside calendar view.
if ( $event -> percentage <= 0 )
{
2017-07-29 01:59:26 +02:00
$event -> date_start_in_calendar = $datep ;
if ( $datep2 != '' && $datep2 >= $datep ) $event -> date_end_in_calendar = $datep2 ;
else $event -> date_end_in_calendar = $datep ;
2014-07-11 13:55:15 +02:00
}
else
2014-09-26 12:27:18 +02:00
{
2017-07-29 01:59:26 +02:00
$event -> date_start_in_calendar = $datep ;
if ( $datep2 != '' && $datep2 >= $datep ) $event -> date_end_in_calendar = $datep2 ;
else $event -> date_end_in_calendar = $datep ;
2014-07-11 13:55:15 +02:00
}
// Define ponctual property
if ( $event -> date_start_in_calendar == $event -> date_end_in_calendar )
{
$event -> ponctuel = 1 ;
}
// Check values
if ( $event -> date_end_in_calendar < $firstdaytoshow ||
2014-09-28 15:33:13 +02:00
$event -> date_start_in_calendar >= $lastdaytoshow )
2014-07-11 13:55:15 +02:00
{
// This record is out of visible range
2017-07-29 01:59:26 +02:00
unset ( $event );
2014-07-11 13:55:15 +02:00
}
else
2014-09-26 12:27:18 +02:00
{
2017-07-29 01:59:26 +02:00
//print $i.' - '.dol_print_date($this->date_start_in_calendar, 'dayhour').' - '.dol_print_date($this->date_end_in_calendar, 'dayhour').'<br>'."\n";
$event -> fetch_userassigned (); // This load $event->userassigned
if ( $event -> date_start_in_calendar < $firstdaytoshow ) $event -> date_start_in_calendar = $firstdaytoshow ;
2014-09-28 15:33:13 +02:00
if ( $event -> date_end_in_calendar >= $lastdaytoshow ) $event -> date_end_in_calendar = ( $lastdaytoshow - 1 );
2014-07-11 13:55:15 +02:00
// Add an entry in actionarray for each day
$daycursor = $event -> date_start_in_calendar ;
$annee = date ( 'Y' , $daycursor );
$mois = date ( 'm' , $daycursor );
$jour = date ( 'd' , $daycursor );
// Loop on each day covered by action to prepare an index to show on calendar
$loop = true ; $j = 0 ;
$daykey = dol_mktime ( 0 , 0 , 0 , $mois , $jour , $annee );
do
2014-09-28 15:33:13 +02:00
{
2014-07-11 13:55:15 +02:00
//if ($event->id==408) print 'daykey='.$daykey.' '.$event->datep.' '.$event->datef.'<br>';
$eventarray [ $daykey ][] = $event ;
$j ++ ;
$daykey += 60 * 60 * 24 ;
if ( $daykey > $event -> date_end_in_calendar ) $loop = false ;
}
while ( $loop );
//print 'Event '.$i.' id='.$event->id.' (start='.dol_print_date($event->datep).'-end='.dol_print_date($event->datef);
//print ' startincalendar='.dol_print_date($event->date_start_in_calendar).'-endincalendar='.dol_print_date($event->date_end_in_calendar).') was added in '.$j.' different index key of array<br>';
}
$i ++ ;
}
2017-07-29 01:59:26 +02:00
$db -> free ( $resql );
2014-07-11 13:55:15 +02:00
}
else
{
dol_print_error ( $db );
}
$maxnbofchar = 18 ;
$cachethirdparties = array ();
$cachecontacts = array ();
2017-11-25 00:12:45 +01:00
$cacheusers = array ();
2014-07-11 13:55:15 +02:00
// Define theme_datacolor array
$color_file = DOL_DOCUMENT_ROOT . " /theme/ " . $conf -> theme . " /graph-color.php " ;
if ( is_readable ( $color_file ))
{
include_once $color_file ;
}
if ( ! is_array ( $theme_datacolor )) $theme_datacolor = array ( array ( 120 , 130 , 150 ), array ( 200 , 160 , 180 ), array ( 190 , 190 , 220 ));
2014-09-05 13:48:55 +02:00
$newparam = $param ; // newparam is for birthday links
$newparam = preg_replace ( '/showbirthday=/i' , 'showbirthday_=' , $newparam ); // To avoid replacement when replace day= is done
$newparam = preg_replace ( '/action=show_month&?/i' , '' , $newparam );
$newparam = preg_replace ( '/action=show_week&?/i' , '' , $newparam );
$newparam = preg_replace ( '/day=[0-9]+&?/i' , '' , $newparam );
$newparam = preg_replace ( '/month=[0-9]+&?/i' , '' , $newparam );
$newparam = preg_replace ( '/year=[0-9]+&?/i' , '' , $newparam );
$newparam = preg_replace ( '/viewweek=[0-9]+&?/i' , '' , $newparam );
$newparam = preg_replace ( '/showbirthday_=/i' , 'showbirthday=' , $newparam ); // Restore correct parameter
$newparam .= '&viewweek=1' ;
2017-11-25 00:12:45 +01:00
echo '<input type="hidden" name="actionmove" value="mupdate">' ;
2017-06-18 21:13:48 +02:00
echo '<input type="hidden" name="backtopage" value="' . dol_escape_htmltag ( $_SERVER [ 'PHP_SELF' ]) . '?' . dol_escape_htmltag ( $_SERVER [ 'QUERY_STRING' ]) . '">' ;
2014-09-05 13:48:55 +02:00
echo '<input type="hidden" name="newdate" id="newdate">' ;
2015-02-03 11:25:51 +01:00
// Line header with list of days
//print "begin_d=".$begin_d." end_d=".$end_d;
2018-03-10 16:46:57 +01:00
$currentdaytoshow = $firstdaytoshow ;
2016-11-27 20:11:39 +01:00
echo '<div class="div-table-responsive">' ;
2014-09-05 13:48:55 +02:00
2018-03-10 16:46:57 +01:00
while ( $currentdaytoshow < $lastdaytoshow ) {
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
echo '<table width="100%" class="noborder nocellnopadd cal_month">' ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
echo '<tr class="liste_titre">' ;
echo '<td></td>' ;
$i = 0 ; // 0 = sunday,
while ( $i < 7 )
2014-09-05 21:12:01 +02:00
{
2018-03-10 16:46:57 +01:00
if (( $i + 1 ) < $begin_d || ( $i + 1 ) > $end_d )
{
$i ++ ;
continue ;
}
echo '<td align="center" colspan="' . ( $end_h - $begin_h ) . '">' ;
echo $langs -> trans ( " Day " . (( $i + ( isset ( $conf -> global -> MAIN_START_WEEK ) ? $conf -> global -> MAIN_START_WEEK : 1 )) % 7 ));
print " <br> " ;
if ( $i ) print dol_print_date ( dol_time_plus_duree ( $currentdaytoshow , $i , 'd' ), 'day' );
else print dol_print_date ( $currentdaytoshow , 'day' );
echo " </td> \n " ;
2014-09-05 21:12:01 +02:00
$i ++ ;
}
2018-03-10 16:46:57 +01:00
echo " </tr> \n " ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
echo '<tr class="liste_titre">' ;
echo '<td></td>' ;
$i = 0 ;
while ( $i < 7 )
2014-09-05 21:12:01 +02:00
{
2018-03-10 16:46:57 +01:00
if (( $i + 1 ) < $begin_d || ( $i + 1 ) > $end_d )
{
$i ++ ;
continue ;
}
for ( $h = $begin_h ; $h < $end_h ; $h ++ )
{
echo '<td align="center">' ;
print '<small style="font-family: courier">' . sprintf ( " %02d " , $h ) . '</small>' ;
print " </td> " ;
}
echo " </td> \n " ;
2014-09-05 21:12:01 +02:00
$i ++ ;
}
2018-03-10 16:46:57 +01:00
echo " </tr> \n " ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
// Define $usernames
$usernames = array (); //init
$usernamesid = array ();
/* Use this to have list of users only if users have events */
if ( ! empty ( $conf -> global -> AGENDA_SHOWOWNERONLY_ONPERUSERVIEW ))
2014-09-05 21:12:01 +02:00
{
2018-03-10 16:46:57 +01:00
foreach ( $eventarray as $daykey => $notused )
{
// Get all assigned users for each event
foreach ( $eventarray [ $daykey ] as $index => $event )
{
$event -> fetch_userassigned ();
$listofuserid = $event -> userassigned ;
foreach ( $listofuserid as $userid => $tmp )
{
if ( ! in_array ( $userid , $usernamesid )) $usernamesid [ $userid ] = $userid ;
}
}
}
2014-09-05 21:12:01 +02:00
}
2018-03-10 16:46:57 +01:00
/* Use this list to have for all users */
else
2014-10-13 17:45:52 +02:00
{
2018-03-10 16:46:57 +01:00
$sql = " SELECT u.rowid, u.lastname as lastname, u.firstname, u.statut, u.login, u.admin, u.entity " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " user as u " ;
if ( $usergroup > 0 ) $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " usergroup_user as ug ON u.rowid = ug.fk_user " ;
$sql .= " WHERE u.statut = 1 AND u.entity IN ( " . getEntity ( 'user' ) . " ) " ;
if ( $usergroup > 0 ) $sql .= " AND ug.fk_usergroup = " . $usergroup ;
//print $sql;
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
{
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
$usernamesid [ $obj -> rowid ] = $obj -> rowid ;
$i ++ ;
}
}
}
else dol_print_error ( $db );
2014-10-13 17:45:52 +02:00
}
2018-03-10 16:46:57 +01:00
//var_dump($usernamesid);
foreach ( $usernamesid as $id )
{
$tmpuser = new User ( $db );
$result = $tmpuser -> fetch ( $id );
$usernames [] = $tmpuser ;
}
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
/*
if ( $filtert > 0 )
{
$tmpuser = new User ( $db );
$tmpuser -> fetch ( $filtert );
$usernames [] = $tmpuser ;
}
else if ( $usergroup )
{
$tmpgroup = new UserGroup ( $db );
$tmpgroup -> fetch ( $usergroup );
$usernames = $tmpgroup -> listUsersForGroup ();
}
else
{
$tmpgroup = new UserGroup ( $db );
//$tmpgroup->fetch($usergroup); No fetch, we want all users for all groups
$usernames = $tmpgroup -> listUsersForGroup ();
} */
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
// Load array of colors by type
$colorsbytype = array ();
$labelbytype = array ();
$sql = " SELECT code, color, libelle FROM " . MAIN_DB_PREFIX . " c_actioncomm ORDER BY position " ;
2014-10-13 17:45:52 +02:00
$resql = $db -> query ( $sql );
2018-03-10 16:46:57 +01:00
while ( $obj = $db -> fetch_object ( $resql ))
2014-10-13 17:45:52 +02:00
{
2018-03-10 16:46:57 +01:00
$colorsbytype [ $obj -> code ] = $obj -> color ;
$labelbytype [ $obj -> code ] = $obj -> libelle ;
2014-10-13 17:45:52 +02:00
}
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
// Loop on each user to show calendar
$todayarray = dol_getdate ( $now , 'fast' );
$sav = $tmpday ;
$showheader = true ;
$var = false ;
foreach ( $usernames as $username )
2014-09-05 13:48:55 +02:00
{
2018-03-10 16:46:57 +01:00
$var = ! $var ;
echo " <tr> " ;
echo '<td class="tdoverflowmax100 cal_current_month cal_peruserviewname' . ( $var ? ' cal_impair' : '' ) . '">' ;
print $username -> getNomUrl ( - 1 , '' , 0 , 0 , 20 , 1 , '' );
print '</td>' ;
$tmpday = $sav ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
// Lopp on each day of week
$i = 0 ;
for ( $iter_day = 0 ; $iter_day < 8 ; $iter_day ++ )
2014-09-05 13:48:55 +02:00
{
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
if (( $i + 1 ) < $begin_d || ( $i + 1 ) > $end_d )
{
$i ++ ;
continue ;
}
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
// Show days of the current week
$curtime = dol_time_plus_duree ( $currentdaytoshow , $iter_day , 'd' );
$tmparray = dol_getdate ( $curtime , 'fast' );
$tmpday = $tmparray [ 'mday' ];
$tmpmonth = $tmparray [ 'mon' ];
$tmpyear = $tmparray [ 'year' ];
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
$style = 'cal_current_month' ;
if ( $iter_day == 6 ) $style .= ' cal_other_month' ;
$today = 0 ;
if ( $todayarray [ 'mday' ] == $tmpday && $todayarray [ 'mon' ] == $tmpmonth && $todayarray [ 'year' ] == $tmpyear ) $today = 1 ;
if ( $today ) $style = 'cal_today_peruser' ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
show_day_events2 ( $username , $tmpday , $tmpmonth , $tmpyear , $monthshown , $style , $eventarray , 0 , $maxnbofchar , $newparam , 1 , 300 , $showheader , $colorsbytype , $var );
2018-03-16 10:51:12 +01:00
2014-09-05 21:12:01 +02:00
$i ++ ;
2014-09-05 13:48:55 +02:00
}
2018-03-10 16:46:57 +01:00
echo " </tr> \n " ;
$showheader = false ;
2014-09-05 13:48:55 +02:00
}
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
echo " </table> \n " ;
2018-03-11 02:18:46 +01:00
echo " <br> " ;
2018-03-16 10:51:12 +01:00
2018-03-10 16:46:57 +01:00
$currentdaytoshow = dol_time_plus_duree ( $currentdaytoshow , 7 , 'd' );
2014-09-05 13:48:55 +02:00
}
2016-11-27 20:11:39 +01:00
echo '</div>' ;
2014-07-11 13:55:15 +02:00
2017-11-25 00:12:45 +01:00
if ( ! empty ( $conf -> global -> AGENDA_USE_EVENT_TYPE ) && ! empty ( $conf -> global -> AGENDA_USE_COLOR_PER_EVENT_TYPE ))
2014-10-13 17:45:52 +02:00
{
$langs -> load ( " commercial " );
print '<br>' . $langs -> trans ( " Legend " ) . ': <br>' ;
foreach ( $colorsbytype as $code => $color )
{
if ( $color )
{
print '<div style="float: left; padding: 2px; margin-right: 6px;"><div style="' . ( $color ? 'background: #' . $color . ';' : '' ) . 'width:16px; float: left; margin-right: 4px;"> </div>' ;
print $langs -> trans ( " Action " . $code ) != " Action " . $code ? $langs -> trans ( " Action " . $code ) : $labelbytype [ $code ];
//print $code;
print '</div>' ;
}
}
//$color=sprintf("%02x%02x%02x",$theme_datacolor[0][0],$theme_datacolor[0][1],$theme_datacolor[0][2]);
print '<div style="float: left; padding: 2px; margin-right: 6px;"><div class="peruser_busy" style="width:16px; float: left; margin-right: 4px;"> </div>' ;
print $langs -> trans ( " Other " );
print '</div>' ;
2014-10-18 02:31:48 +02:00
/* TODO Show this if at least one cumulated event
print '<div style="float: left; padding: 2px; margin-right: 6px;"><div style="background: #222222; width:16px; float: left; margin-right: 4px;"> </div>' ;
print $langs -> trans ( " SeveralEvents " );
print '</div>' ;
*/
2014-10-13 17:45:52 +02:00
}
2017-11-25 00:12:45 +01:00
print " \n " . '</form>' ;
print " \n " ;
2014-09-06 00:32:54 +02:00
// Add js code to manage click on a box
print ' < script type = " text/javascript " language = " javascript " >
jQuery ( document ) . ready ( function () {
jQuery ( " .onclickopenref " ) . click ( function () {
2014-09-07 19:56:17 +02:00
var ref = $ ( this ) . attr ( \ ' ref\ ' );
var res = ref . split ( " _ " );
var userid = res [ 1 ];
var year = res [ 2 ];
var month = res [ 3 ];
var day = res [ 4 ];
var hour = res [ 5 ];
var min = res [ 6 ];
var ids = res [ 7 ];
if ( ids == \ ' none\ ' ) /* No event */
{
/* alert(\'no event\'); */
2014-09-23 12:18:42 +02:00
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 ).' "
2014-09-07 19:56:17 +02:00
window . location . href = url ;
}
else if ( ids . indexOf ( " , " ) > - 1 ) /* There is several events */
{
/* alert(\'several events\'); */
2017-11-16 12:18:25 +01:00
url = " '.DOL_URL_ROOT.'/comm/action/list.php?filtert= " + userid + " &dateselectyear= " + year + " &dateselectmonth= " + month + " &dateselectday= " + day ;
2014-09-07 19:56:17 +02:00
window . location . href = url ;
}
else /* One event */
{
/* alert(\'one event\'); */
2014-09-18 21:18:25 +02:00
url = " '.DOL_URL_ROOT.'/comm/action/card.php?action=view&id= " + ids
2014-09-07 19:56:17 +02:00
window . location . href = url ;
}
2014-09-06 00:32:54 +02:00
});
});
</ script > ' ;
2014-07-11 13:55:15 +02:00
llxFooter ();
$db -> close ();
2014-09-05 13:48:55 +02:00
/**
2015-08-14 12:31:09 +02:00
* Show event line of a particular day for a user
2014-09-05 13:48:55 +02:00
*
2014-09-14 00:27:36 +02:00
* @ param string $username Login
* @ param int $day Day
* @ param int $month Month
* @ param int $year Year
* @ param int $monthshown Current month shown in calendar view
* @ param string $style Style to use for this day
2014-09-28 02:46:20 +02:00
* @ param array $eventarray Array of events
2014-09-14 00:27:36 +02:00
* @ param int $maxprint Nb of actions to show each day on month view ( 0 means no limit )
* @ param int $maxnbofchar Nb of characters to show for event line
* @ param string $newparam Parameters on current URL
* @ param int $showinfo Add extended information ( used by day view )
* @ param int $minheight Minimum height for each event . 60 px by default .
* @ param boolean $showheader Show header
2014-10-03 18:04:13 +02:00
* @ param array $colorsbytype Array with colors by type
2015-02-10 11:38:13 +01:00
* @ param bool $var true or false for alternat style on tr / td
2014-09-05 13:48:55 +02:00
* @ return void
*/
2014-11-18 14:26:06 +01:00
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 )
2014-09-05 13:48:55 +02:00
{
2014-09-05 21:12:01 +02:00
global $db ;
2014-10-03 15:58:08 +02:00
global $user , $conf , $langs , $hookmanager , $action ;
2015-01-15 02:06:04 +01:00
global $filter , $filtert , $status , $actioncode ; // Filters used into search form
2014-10-03 18:04:13 +02:00
global $theme_datacolor ; // Array with a list of different we can use (come from theme)
2017-11-25 00:12:45 +01:00
global $cachethirdparties , $cachecontacts , $cacheusers , $cacheprojects , $colorindexused ;
2014-09-05 21:12:01 +02:00
global $begin_h , $end_h ;
2014-09-05 13:48:55 +02:00
2014-09-05 21:12:01 +02:00
$cases1 = array (); // Color first half hour
$cases2 = array (); // Color second half hour
2014-09-05 13:48:55 +02:00
2017-07-29 01:59:26 +02:00
$curtime = dol_mktime ( 0 , 0 , 0 , $month , $day , $year , false , 0 );
2014-09-05 13:48:55 +02:00
2017-11-25 00:12:45 +01:00
$i = 0 ; $numother = 0 ; $numbirthday = 0 ; $numical = 0 ; $numicals = array ();
2014-09-05 21:12:01 +02:00
$ymd = sprintf ( " %04d " , $year ) . sprintf ( " %02d " , $month ) . sprintf ( " %02d " , $day );
2014-09-05 13:48:55 +02:00
2017-11-25 00:12:45 +01:00
$colorindexused [ $user -> id ] = 0 ; // Color index for current user (user->id) is always 0
$nextindextouse = count ( $colorindexused ); // At first run this is 0, so first user has 0, next 1, ...
2014-09-28 16:54:42 +02:00
//if ($username->id && $day==1) var_dump($eventarray);
2018-03-16 10:51:12 +01:00
2014-09-26 12:27:18 +02:00
// We are in a particular day for $username, now we scan all events
2014-09-05 21:12:01 +02:00
foreach ( $eventarray as $daykey => $notused )
{
$annee = date ( 'Y' , $daykey );
$mois = date ( 'm' , $daykey );
$jour = date ( 'd' , $daykey );
2014-09-28 16:31:37 +02:00
//print $annee.'-'.$mois.'-'.$jour.' '.$year.'-'.$month.'-'.$day."<br>\n";
if ( $day == $jour && $month == $mois && $year == $annee ) // Is it the day we are looking for when calling function ?
2014-09-05 21:12:01 +02:00
{
2014-09-28 16:31:37 +02:00
// Scan all event for this date
2014-09-05 21:12:01 +02:00
foreach ( $eventarray [ $daykey ] as $index => $event )
{
2015-08-14 13:01:20 +02:00
//var_dump($event);
2014-09-26 12:27:18 +02:00
$keysofuserassigned = array_keys ( $event -> userassigned );
2017-11-25 00:12:45 +01:00
$ponct = ( $event -> date_start_in_calendar == $event -> date_end_in_calendar );
2014-09-26 12:27:18 +02:00
if ( ! in_array ( $username -> id , $keysofuserassigned )) continue ; // We discard record if event is from another user than user we want to show
//if ($username->id != $event->userownerid) continue; // We discard record if event is from another user than user we want to show
2014-09-05 21:12:01 +02:00
2014-10-03 15:58:08 +02:00
$parameters = array ();
$reshook = $hookmanager -> executeHooks ( 'formatEvent' , $parameters , $event , $action ); // Note that $action and $object may have been modified by some hooks
if ( $reshook < 0 ) setEventMessages ( $hookmanager -> error , $hookmanager -> errors , 'errors' );
2014-09-05 21:12:01 +02:00
2014-09-29 13:21:03 +02:00
// Define $color (Hex string like '0088FF') and $cssclass of event
2014-09-05 21:12:01 +02:00
$color =- 1 ; $cssclass = '' ; $colorindex =- 1 ;
2014-09-26 12:27:18 +02:00
if ( in_array ( $user -> id , $keysofuserassigned ))
2014-09-05 21:12:01 +02:00
{
2017-11-25 00:12:45 +01:00
$cssclass = 'family_mytasks' ;
if ( empty ( $cacheusers [ $event -> userownerid ]))
{
$newuser = new User ( $db );
$newuser -> fetch ( $event -> userownerid );
$cacheusers [ $event -> userownerid ] = $newuser ;
}
//var_dump($cacheusers[$event->userownerid]->color);
// We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event)
if ( ! empty ( $cacheusers [ $event -> userownerid ] -> color )) $color = $cacheusers [ $event -> userownerid ] -> color ;
if ( ! empty ( $conf -> global -> AGENDA_USE_COLOR_PER_EVENT_TYPE )) $color = $event -> type_color ;
2014-09-05 21:12:01 +02:00
}
else if ( $event -> type_code == 'ICALEVENT' )
{
$numical ++ ;
2014-10-03 18:04:13 +02:00
if ( ! empty ( $event -> icalname ))
{
2014-09-05 21:12:01 +02:00
if ( ! isset ( $numicals [ dol_string_nospecial ( $event -> icalname )])) {
$numicals [ dol_string_nospecial ( $event -> icalname )] = 0 ;
}
$numicals [ dol_string_nospecial ( $event -> icalname )] ++ ;
}
2014-09-29 13:21:03 +02:00
2014-09-05 21:12:01 +02:00
$color = $event -> icalcolor ;
2015-03-05 11:35:39 +01:00
$cssclass = ( ! empty ( $event -> icalname ) ? 'family_ext' . md5 ( $event -> icalname ) : 'family_other unsortable' );
2014-09-05 21:12:01 +02:00
}
2014-09-29 13:21:03 +02:00
else if ( $event -> type_code == 'BIRTHDAY' )
{
2014-09-05 21:12:01 +02:00
$numbirthday ++ ; $colorindex = 2 ; $cssclass = 'family_birthday unsortable' ; $color = sprintf ( " %02x%02x%02x " , $theme_datacolor [ $colorindex ][ 0 ], $theme_datacolor [ $colorindex ][ 1 ], $theme_datacolor [ $colorindex ][ 2 ]);
}
2014-09-29 13:21:03 +02:00
else
{
2017-11-25 00:12:45 +01:00
$numother ++ ;
$color = ( $event -> icalcolor ? $event -> icalcolor :- 1 );
$cssclass = ( ! empty ( $event -> icalname ) ? 'family_ext' . md5 ( $event -> icalname ) : 'family_other' );
if ( empty ( $cacheusers [ $event -> userownerid ]))
{
$newuser = new User ( $db );
$newuser -> fetch ( $event -> userownerid );
$cacheusers [ $event -> userownerid ] = $newuser ;
}
//var_dump($cacheusers[$event->userownerid]->color);
// We decide to choose color of owner of event (event->userownerid is user id of owner, event->userassigned contains all users assigned to event)
if ( ! empty ( $cacheusers [ $event -> userownerid ] -> color )) $color = $cacheusers [ $event -> userownerid ] -> color ;
if ( ! empty ( $conf -> global -> AGENDA_USE_COLOR_PER_EVENT_TYPE )) $color = $event -> type_color ;
2014-09-05 21:12:01 +02:00
}
2014-10-03 18:04:13 +02:00
2017-11-25 00:12:45 +01:00
if ( $color < 0 ) // Color was not set on user card. Set color according to color index.
2014-09-05 21:12:01 +02:00
{
// Define color index if not yet defined
2014-09-26 12:27:18 +02:00
$idusertouse = ( $event -> userownerid ? $event -> userownerid : 0 );
2014-09-05 21:12:01 +02:00
if ( isset ( $colorindexused [ $idusertouse ]))
{
$colorindex = $colorindexused [ $idusertouse ]; // Color already assigned to this user
}
else
{
$colorindex = $nextindextouse ;
$colorindexused [ $idusertouse ] = $colorindex ;
if ( ! empty ( $theme_datacolor [ $nextindextouse + 1 ])) $nextindextouse ++ ; // Prepare to use next color
}
// Define color
$color = sprintf ( " %02x%02x%02x " , $theme_datacolor [ $colorindex ][ 0 ], $theme_datacolor [ $colorindex ][ 1 ], $theme_datacolor [ $colorindex ][ 2 ]);
}
//$cssclass=$cssclass.' '.$cssclass.'_day_'.$ymd;
2014-09-23 17:54:03 +02:00
// Define all rects with event (cases1 is first half hour, cases2 is second half hour)
2014-09-05 21:12:01 +02:00
for ( $h = $begin_h ; $h < $end_h ; $h ++ )
{
2014-09-28 16:54:42 +02:00
//if ($username->id == 1 && $day==1) print 'h='.$h;
2014-09-29 13:21:03 +02:00
$newcolor = '' ; //init
2014-09-05 21:12:01 +02:00
if ( empty ( $event -> fulldayevent ))
{
2014-09-18 15:36:37 +02:00
$a = dol_mktime (( int ) $h , 0 , 0 , $month , $day , $year , false , 0 );
$b = dol_mktime (( int ) $h , 30 , 0 , $month , $day , $year , false , 0 );
$c = dol_mktime (( int ) $h + 1 , 0 , 0 , $month , $day , $year , false , 0 );
2014-09-05 21:12:01 +02:00
2014-09-08 10:24:16 +02:00
$dateendtouse = $event -> date_end_in_calendar ;
if ( $dateendtouse == $event -> date_start_in_calendar ) $dateendtouse ++ ;
2014-09-29 13:21:03 +02:00
//print dol_print_date($event->date_start_in_calendar,'dayhour').'-'.dol_print_date($a,'dayhour').'-'.dol_print_date($b,'dayhour').'<br>';
2014-09-08 10:24:16 +02:00
if ( $event -> date_start_in_calendar < $b && $dateendtouse > $a )
2014-09-05 21:12:01 +02:00
{
2014-09-08 10:24:16 +02:00
$busy = $event -> transparency ;
$cases1 [ $h ][ $event -> id ][ 'busy' ] = $busy ;
2014-09-28 16:38:45 +02:00
$cases1 [ $h ][ $event -> id ][ 'string' ] = dol_print_date ( $event -> date_start_in_calendar , 'dayhour' );
if ( $event -> date_end_in_calendar && $event -> date_end_in_calendar != $event -> date_start_in_calendar )
{
$tmpa = dol_getdate ( $event -> date_start_in_calendar , true );
$tmpb = dol_getdate ( $event -> date_end_in_calendar , true );
if ( $tmpa [ 'mday' ] == $tmpb [ 'mday' ] && $tmpa [ 'mon' ] == $tmpb [ 'mon' ] && $tmpa [ 'year' ] == $tmpb [ 'year' ]) $cases1 [ $h ][ $event -> id ][ 'string' ] .= '-' . dol_print_date ( $event -> date_end_in_calendar , 'hour' );
else $cases1 [ $h ][ $event -> id ][ 'string' ] .= '-' . dol_print_date ( $event -> date_end_in_calendar , 'dayhour' );
}
2017-07-29 04:07:46 +02:00
if ( $event -> label ) $cases1 [ $h ][ $event -> id ][ 'string' ] .= ' - ' . $event -> label ;
2014-09-23 17:54:03 +02:00
$cases1 [ $h ][ $event -> id ][ 'typecode' ] = $event -> type_code ;
2017-07-29 04:07:46 +02:00
$cases1 [ $h ][ $event -> id ][ 'color' ] = $color ;
if ( $event -> fk_project > 0 )
2014-09-23 17:54:03 +02:00
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cacheprojects [ $event -> fk_project ]))
2017-07-29 04:07:46 +02:00
{
$tmpproj = new Project ( $db );
$tmpproj -> fetch ( $event -> fk_project );
2017-11-25 00:12:45 +01:00
$cacheprojects [ $event -> fk_project ] = $tmpproj ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases1 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $langs -> trans ( " Project " ) . ': ' . $cacheprojects [ $event -> fk_project ] -> ref . ' - ' . $cacheprojects [ $event -> fk_project ] -> title ;
2017-07-29 04:07:46 +02:00
}
if ( $event -> socid > 0 )
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cachethirdparties [ $event -> socid ]))
2017-07-29 04:07:46 +02:00
{
$tmpthirdparty = new Societe ( $db );
$tmpthirdparty -> fetch ( $event -> socid );
2017-11-25 00:12:45 +01:00
$cachethirdparties [ $event -> socid ] = $tmpthirdparty ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases1 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $cachethirdparties [ $event -> socid ] -> name ;
2017-07-29 04:07:46 +02:00
}
if ( $event -> contactid > 0 )
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cachecontacts [ $event -> contactid ]))
2017-07-29 04:07:46 +02:00
{
$tmpcontact = new Contact ( $db );
$tmpcontact -> fetch ( $event -> contactid );
2017-11-25 00:12:45 +01:00
$cachecontacts [ $event -> contactid ] = $tmpcontact ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases1 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $cachecontacts [ $event -> contactid ] -> getFullName ( $langs );
2014-09-23 17:54:03 +02:00
}
2014-09-05 21:12:01 +02:00
}
2014-09-08 10:24:16 +02:00
if ( $event -> date_start_in_calendar < $c && $dateendtouse > $b )
2014-09-05 21:12:01 +02:00
{
2014-09-08 10:24:16 +02:00
$busy = $event -> transparency ;
$cases2 [ $h ][ $event -> id ][ 'busy' ] = $busy ;
2014-09-28 16:38:45 +02:00
$cases2 [ $h ][ $event -> id ][ 'string' ] = dol_print_date ( $event -> date_start_in_calendar , 'dayhour' );
if ( $event -> date_end_in_calendar && $event -> date_end_in_calendar != $event -> date_start_in_calendar )
{
$tmpa = dol_getdate ( $event -> date_start_in_calendar , true );
$tmpb = dol_getdate ( $event -> date_end_in_calendar , true );
if ( $tmpa [ 'mday' ] == $tmpb [ 'mday' ] && $tmpa [ 'mon' ] == $tmpb [ 'mon' ] && $tmpa [ 'year' ] == $tmpb [ 'year' ]) $cases2 [ $h ][ $event -> id ][ 'string' ] .= '-' . dol_print_date ( $event -> date_end_in_calendar , 'hour' );
else $cases2 [ $h ][ $event -> id ][ 'string' ] .= '-' . dol_print_date ( $event -> date_end_in_calendar , 'dayhour' );
}
2017-07-29 04:07:46 +02:00
if ( $event -> label ) $cases2 [ $h ][ $event -> id ][ 'string' ] .= ' - ' . $event -> label ;
2014-09-28 16:38:45 +02:00
$cases2 [ $h ][ $event -> id ][ 'typecode' ] = $event -> type_code ;
2017-07-29 04:07:46 +02:00
$cases2 [ $h ][ $event -> id ][ 'color' ] = $color ;
if ( $event -> fk_project > 0 )
2014-09-23 17:54:03 +02:00
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cacheprojects [ $event -> fk_project ]))
2017-07-29 04:07:46 +02:00
{
$tmpproj = new Project ( $db );
$tmpproj -> fetch ( $event -> fk_project );
2017-11-25 00:12:45 +01:00
$cacheprojects [ $event -> fk_project ] = $tmpproj ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases2 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $langs -> trans ( " Project " ) . ': ' . $cacheprojects [ $event -> fk_project ] -> ref . ' - ' . $cacheprojects [ $event -> fk_project ] -> title ;
2017-07-29 04:07:46 +02:00
}
if ( $event -> socid > 0 )
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cachethirdparties [ $event -> socid ]))
2017-07-29 04:07:46 +02:00
{
$tmpthirdparty = new Societe ( $db );
$tmpthirdparty -> fetch ( $event -> socid );
2017-11-25 00:12:45 +01:00
$cachethirdparties [ $event -> socid ] = $tmpthirdparty ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases2 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $cachethirdparties [ $event -> socid ] -> name ;
2017-07-29 04:07:46 +02:00
}
if ( $event -> contactid > 0 )
{
2017-11-25 00:12:45 +01:00
if ( empty ( $cachecontacts [ $event -> contactid ]))
2017-07-29 04:07:46 +02:00
{
$tmpcontact = new Contact ( $db );
$tmpcontact -> fetch ( $event -> contactid );
2017-11-25 00:12:45 +01:00
$cachecontacts [ $event -> contactid ] = $tmpcontact ;
2017-07-29 04:07:46 +02:00
}
2017-11-25 00:12:45 +01:00
$cases2 [ $h ][ $event -> id ][ 'string' ] .= ', ' . $cachecontacts [ $event -> contactid ] -> getFullName ( $langs );
2014-09-23 17:54:03 +02:00
}
2014-09-05 21:12:01 +02:00
}
}
else
{
2014-09-08 10:24:16 +02:00
$busy = $event -> transparency ;
$cases1 [ $h ][ $event -> id ][ 'busy' ] = $busy ;
$cases2 [ $h ][ $event -> id ][ 'busy' ] = $busy ;
$cases1 [ $h ][ $event -> id ][ 'string' ] = $event -> label ;
$cases2 [ $h ][ $event -> id ][ 'string' ] = $event -> label ;
2014-09-23 17:54:03 +02:00
$cases1 [ $h ][ $event -> id ][ 'typecode' ] = $event -> type_code ;
$cases2 [ $h ][ $event -> id ][ 'typecode' ] = $event -> type_code ;
2014-10-03 18:04:13 +02:00
$cases1 [ $h ][ $event -> id ][ 'color' ] = $color ;
$cases2 [ $h ][ $event -> id ][ 'color' ] = $color ;
2014-09-05 21:12:01 +02:00
}
}
$i ++ ;
}
2014-09-05 13:48:55 +02:00
2014-09-28 16:31:37 +02:00
break ; // We found the date we were looking for. No need to search anymore.
2014-09-05 21:12:01 +02:00
}
}
2014-09-05 13:48:55 +02:00
2017-07-29 01:59:26 +02:00
// Now output $casesX
2014-09-05 21:12:01 +02:00
for ( $h = $begin_h ; $h < $end_h ; $h ++ )
{
2014-09-29 13:21:03 +02:00
$color1 = '' ; $color2 = '' ;
2014-09-05 21:12:01 +02:00
$style1 = '' ; $style2 = '' ;
$string1 = ' ' ; $string2 = ' ' ;
2014-09-06 00:32:54 +02:00
$title1 = '' ; $title2 = '' ;
2014-09-08 10:24:16 +02:00
if ( isset ( $cases1 [ $h ]) && $cases1 [ $h ] != '' )
2014-09-05 13:48:55 +02:00
{
2014-10-05 01:22:17 +02:00
//$title1.=count($cases1[$h]).' '.(count($cases1[$h])==1?$langs->trans("Event"):$langs->trans("Events"));
if ( count ( $cases1 [ $h ]) > 1 ) $title1 .= count ( $cases1 [ $h ]) . ' ' . ( count ( $cases1 [ $h ]) == 1 ? $langs -> trans ( " Event " ) : $langs -> trans ( " Events " ));
2014-09-08 10:24:16 +02:00
$string1 = ' ' ;
2014-10-14 00:27:23 +02:00
if ( empty ( $conf -> global -> AGENDA_NO_TRANSPARENT_ON_NOT_BUSY )) $style1 = 'peruser_notbusy' ;
else $style1 = 'peruser_busy' ;
2014-09-08 10:24:16 +02:00
foreach ( $cases1 [ $h ] as $id => $ev )
2014-09-05 13:48:55 +02:00
{
2014-09-08 10:24:16 +02:00
if ( $ev [ 'busy' ]) $style1 = 'peruser_busy' ;
2014-09-05 13:48:55 +02:00
}
}
2014-09-08 10:24:16 +02:00
if ( isset ( $cases2 [ $h ]) && $cases2 [ $h ] != '' )
2014-09-05 13:48:55 +02:00
{
2014-10-05 01:22:17 +02:00
//$title2.=count($cases2[$h]).' '.(count($cases2[$h])==1?$langs->trans("Event"):$langs->trans("Events"));
if ( count ( $cases2 [ $h ]) > 1 ) $title2 .= count ( $cases2 [ $h ]) . ' ' . ( count ( $cases2 [ $h ]) == 1 ? $langs -> trans ( " Event " ) : $langs -> trans ( " Events " ));
2014-09-08 10:24:16 +02:00
$string2 = ' ' ;
2014-10-14 00:27:23 +02:00
if ( empty ( $conf -> global -> AGENDA_NO_TRANSPARENT_ON_NOT_BUSY )) $style2 = 'peruser_notbusy' ;
else $style2 = 'peruser_busy' ;
2014-09-08 10:24:16 +02:00
foreach ( $cases2 [ $h ] as $id => $ev )
2014-09-05 13:48:55 +02:00
{
2014-09-08 10:24:16 +02:00
if ( $ev [ 'busy' ]) $style2 = 'peruser_busy' ;
2014-09-05 13:48:55 +02:00
}
}
2015-08-14 12:31:09 +02:00
$ids1 = '' ; $ids2 = '' ;
if ( count ( $cases1 [ $h ]) && array_keys ( $cases1 [ $h ])) $ids1 = join ( ',' , array_keys ( $cases1 [ $h ]));
if ( count ( $cases2 [ $h ]) && array_keys ( $cases2 [ $h ])) $ids2 = join ( ',' , array_keys ( $cases2 [ $h ]));
2014-09-05 13:48:55 +02:00
2015-07-21 12:30:12 +02:00
if ( $h == $begin_h ) echo '<td class="' . $style . '_peruserleft cal_peruser' . ( $var ? ' cal_impair ' . $style . '_impair' : '' ) . '">' ;
else echo '<td class="' . $style . ' cal_peruser' . ( $var ? ' cal_impair ' . $style . '_impair' : '' ) . '">' ;
2015-08-14 12:31:09 +02:00
if ( count ( $cases1 [ $h ]) == 1 ) // only 1 event
2014-09-05 21:47:16 +02:00
{
2014-09-08 10:24:16 +02:00
$output = array_slice ( $cases1 [ $h ], 0 , 1 );
2015-08-14 12:31:09 +02:00
$title1 = $langs -> trans ( " Ref " ) . ' ' . $ids1 . ( $title1 ? ' - ' . $title1 : '' );
2014-10-05 01:22:17 +02:00
if ( $output [ 0 ][ 'string' ]) $title1 .= ( $title1 ? ' - ' : '' ) . $output [ 0 ][ 'string' ];
2014-09-29 13:21:03 +02:00
if ( $output [ 0 ][ 'color' ]) $color1 = $output [ 0 ][ 'color' ];
2014-09-05 21:47:16 +02:00
}
2015-08-14 12:31:09 +02:00
else if ( count ( $cases1 [ $h ]) > 1 )
{
$title1 = $langs -> trans ( " Ref " ) . ' ' . $ids1 . ( $title1 ? ' - ' . $title1 : '' );
$color1 = '222222' ;
}
2014-09-29 13:21:03 +02:00
2015-08-14 12:31:09 +02:00
if ( count ( $cases2 [ $h ]) == 1 ) // only 1 event
2014-09-05 21:47:16 +02:00
{
2014-09-08 10:24:16 +02:00
$output = array_slice ( $cases2 [ $h ], 0 , 1 );
2015-08-14 12:31:09 +02:00
$title2 = $langs -> trans ( " Ref " ) . ' ' . $ids2 . ( $title2 ? ' - ' . $title2 : '' );
2014-10-05 01:22:17 +02:00
if ( $output [ 0 ][ 'string' ]) $title2 .= ( $title2 ? ' - ' : '' ) . $output [ 0 ][ 'string' ];
2014-09-29 13:21:03 +02:00
if ( $output [ 0 ][ 'color' ]) $color2 = $output [ 0 ][ 'color' ];
2014-09-05 21:47:16 +02:00
}
2015-08-14 12:31:09 +02:00
else if ( count ( $cases2 [ $h ]) > 1 )
{
$title2 = $langs -> trans ( " Ref " ) . ' ' . $ids2 . ( $title2 ? ' - ' . $title2 : '' );
$color2 = '222222' ;
}
2014-09-07 19:56:17 +02:00
print '<table class="nobordernopadding" width="100%">' ;
2017-11-25 00:12:45 +01:00
print '<tr><td ' ;
if ( $style1 == 'peruser_notbusy' ) print 'style="border: 1px solid #' . ( $color1 ? $color1 : " 888 " ) . ' !important" ' ;
elseif ( $color1 )
{
print ( $color1 ? 'style="background: #' . $color1 . ';"' : '' );
}
print 'class="' ;
print ( $style1 ? $style1 . ' ' : '' );
print 'onclickopenref' . ( $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 . '"' : '' ) . '>' ;
2014-09-05 21:12:01 +02:00
print $string1 ;
2017-11-25 00:12:45 +01:00
print '</td><td ' ;
if ( $style2 == 'peruser_notbusy' ) print 'style="border: 1px solid #' . ( $color2 ? $color2 : " 888 " ) . ' !important" ' ;
elseif ( $color2 )
{
print ( $color2 ? 'style="background: #' . $color2 . ';"' : '' );
}
print 'class="' ;
print ( $style2 ? $style2 . ' ' : '' );
print 'onclickopenref' . ( $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 . '"' : '' ) . '>' ;
2014-09-05 21:12:01 +02:00
print $string2 ;
print '</td></tr>' ;
print '</table>' ;
print '</td>' ;
}
2014-09-05 13:48:55 +02:00
}