You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
316 lines
9.6 KiB
316 lines
9.6 KiB
<?php
|
|
/*
|
|
* Copyright 1999 - 2004 by Gero Kohnert
|
|
*
|
|
* based on some work/ideas of Michael Somers( Twent First Century Communication <msomers at tfcci.com>)
|
|
*/
|
|
global $calpath;
|
|
$calpath = 'modules/Calendar/';
|
|
include_once $calpath .'webelements.p3';
|
|
include_once $calpath .'permission.p3';
|
|
include_once $calpath .'product.pinc';
|
|
include_once $calpath .'appointment.pinc';
|
|
include_once $calpath .'task.pinc';
|
|
include_once $calpath .'timetrack.pinc';
|
|
|
|
|
|
/* Check if user is allowed to use it */
|
|
check_user();
|
|
loadmodules('mytutos','show');
|
|
loadlayout();
|
|
|
|
/* Web stack start */
|
|
web_StackStart('mytutos.php',$calpath .'mytutos.php',$current_user->getFullName(),sprintf($lang['PersonalPageFor'],$current_user->getFullname()));
|
|
|
|
Function info_table_start() {
|
|
return " <table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"100%\">\n";
|
|
}
|
|
Function info_table_end() {
|
|
return " </table>\n";
|
|
}
|
|
/* ---------------------------------------------------------------------------
|
|
* Display calendar for one week
|
|
*/
|
|
|
|
Function calendar_info(&$adr,$t) {
|
|
global $lang, $tutos, $current_user;
|
|
|
|
$ts = mktime(12,0,0,substr($t,4,2),substr($t,6,2),substr($t,0,4));
|
|
|
|
/* Back to last Monday or Sunday before ts */
|
|
while ( Date("w",$ts) != $adr->weekstart ) {
|
|
$ts -= 86400;
|
|
}
|
|
|
|
$w0 = (( 1 + Date("w",mktime(12,0,0,1,1, Date("Y",$ts) ) )) % 7) > 3;
|
|
$wn = sprintf("%02d", Round( (Date("z",$ts)+7 ) / 7) );
|
|
$yy = Date("y",$ts);
|
|
|
|
$day = 0;
|
|
$dd = new DateTime();
|
|
|
|
$from = new DateTime();
|
|
$from->setDateTimeTS($ts - 12 * 3600);
|
|
$to = $from;
|
|
$to->addDays(7);
|
|
|
|
$adr->callist = array();
|
|
appointment::readCal($adr,$from,$to);
|
|
task::readCal($adr,$from,$to);
|
|
foreach($tutos[activemodules] as $i => $f) {
|
|
$x = new $tutos[modules][$f][name]($adr->dbconn);
|
|
$x->readCal($adr,$from,$to);
|
|
}
|
|
|
|
#echo info_table_start();
|
|
#echo " <tr>\n";
|
|
#echo " <th>". $lang['week'] ."</th>\n";
|
|
$wd = $ts;
|
|
|
|
for ( $i = $adr->weekstart;$i<=6;$i++ ) {
|
|
if ($adr->isWorkDay($i)) {
|
|
$tref = Date("Ymd",$wd);
|
|
#echo " <th>". menulink("calendar_day.php?t=". $tref,$lang["Day$i"]) ."</th>\n";
|
|
}
|
|
$wd = NextDay($wd);
|
|
}
|
|
|
|
for ( $i = 0;$i<$adr->weekstart;$i++ ) {
|
|
if ($adr->isWorkDay($i)) {
|
|
$tref = Date("Ymd",$wd);
|
|
#echo " <th>". menulink("calendar_day.php?t=". $tref,$lang["Day$i"]) ."</th>\n";
|
|
}
|
|
$wd = NextDay($wd);
|
|
}
|
|
#echo " </tr>\n";
|
|
|
|
#echo " <tr>\n";
|
|
#echo " <td class=\"week\" width=\"5%\">". menulink("calendar_week.php?t=".Date("Ymd",$ts), $wn ."/". $yy,$lang['week'] ." ". $wn ."/". $yy ) ."</td>\n";
|
|
|
|
while ( $day < 7 ) {
|
|
# $d = strftime($lang['DateFormatStr'],$ts);
|
|
$dd->setDateTimeTS($ts);
|
|
$d = $dd->getDate();
|
|
$tref = Date("Ymd",$ts);
|
|
$dinfo = GetDaysInfo($ts);
|
|
/* Select appointments for this day */
|
|
$next = NextDay($ts);
|
|
if ( ! $dd->isWorkDay($adr) ) {
|
|
$ts = $next;
|
|
$day++;
|
|
continue;
|
|
}
|
|
#echo "<td class=\"". $dinfo[color] ."\" width=\"10%\">\n";
|
|
|
|
if ( isset($dinfo[Desc]) ) {
|
|
if ( $current_user->feature_ok(usecalendar,PERM_NEW) ) {
|
|
#echo " " . makelink("app_new.php?t=". $tref,$d,$lang['NewAppointInfo'],$dinfo[popinfo]) ."\n";
|
|
} else {
|
|
#echo " " . $d ."\n";
|
|
}
|
|
#echo "<br /><span class=\"dinfo\">". $dinfo[Desc] ."</span>\n";
|
|
} else {
|
|
if ( $current_user->feature_ok(usecalendar,PERM_NEW) ) {
|
|
#echo " " . makelink("app_new.php?t=". $tref,$d,$lang['NewAppointInfo']) ."\n";
|
|
} else {
|
|
#echo " " . $d ."\n";
|
|
}
|
|
}
|
|
|
|
$hastable = 0;
|
|
foreach ($adr->callist as $idx => $x) {
|
|
/* the correct day */
|
|
if ( ! $adr->callist[$idx]->inside($dd) ) {
|
|
continue;
|
|
}
|
|
# Check if appointment is displayed
|
|
if ( $adr->callist[$idx]->gettype() == "appointment" ) {
|
|
$found = 0;
|
|
@reset($adr->callist[$idx]->participant);
|
|
while ( ($found == 0) && (list ($i,$f) = @each ($adr->callist[$idx]->participant)) ) {
|
|
if ( $f->id == $adr->id ) {
|
|
$found = 1;
|
|
} else if ( array_key_exists($f->id,$adr->teamlist) ) {
|
|
$found = 1;
|
|
}
|
|
}
|
|
if ( $found == 0 ) {
|
|
continue;
|
|
}
|
|
}
|
|
// Do not show finished tasks
|
|
if ( ($adr->callist[$idx]->gettype() == "task") && ($adr->callist[$idx]->state == 2) ) {
|
|
continue;
|
|
}
|
|
if ( $hastable == 0 ) {
|
|
#echo " <table class=\"formatted\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">\n";
|
|
$hastable = 1;
|
|
} else {
|
|
#echo " <tr><td class=\"". $dinfo[color] ."\" colspan=\"3\"><img src=\"". $tutos['base'] ."/html/black.png\" width=\"100%\" height=\"1\" alt=\"--------\"></td></tr>\n";
|
|
}
|
|
// Show appointments or task
|
|
$adr->callist[$idx]->formatted();
|
|
}
|
|
|
|
if ( $hastable == 1 ) {
|
|
#echo " </table>\n";
|
|
}
|
|
|
|
#echo "</td>\n";
|
|
$day++;
|
|
$ts = $next;
|
|
}
|
|
#echo " </tr>\n";
|
|
#echo info_table_end();
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* display an overview of everything that's interessting for an user
|
|
*/
|
|
class mytutos extends layout {
|
|
/**
|
|
* the data display part
|
|
*/
|
|
Function info() {
|
|
global $lang , $tutos;
|
|
|
|
#echo $this->DataTableStart();
|
|
#echo "<tr>\n";
|
|
# Header
|
|
#echo "<th colspan=\"4\">". sprintf($lang['PersonalPageFor'],menulink($this->adr->getUrl(),$this->adr->getFullName(),$this->adr->getFullName())) ."</th>\n";
|
|
#echo "</tr>\n";
|
|
|
|
# Display all the info blocks
|
|
# Weeks calendar
|
|
$ts = mktime(0,0,0,substr($this->t,4,2),substr($this->t,6,2),substr($this->t,0,4));
|
|
$last_week = Date("Ymd",$ts - 7 * 86400);
|
|
$next_week = Date("Ymd",$ts + 7 * 86400);
|
|
if ( $this->user->feature_ok(usecalendar,PERM_SEE) ) {
|
|
#echo "<tr>\n";
|
|
#echo " <th colspan=\"4\">\n ". menulink("mytutos.php?t=".$last_week,$this->theme->getImage(left,'list'),$lang['lastweek']) . " ". $this->theme->getImage(appointment::getHtmlIcon(),'list') ." ". $lang['Calendar'] ." " . menulink("mytutos.php?t=".$next_week,$this->theme->getImage(right,'list') ,$lang['nextweek']) ."\n</th>\n";
|
|
#echo "</tr>\n";
|
|
#echo "<tr>\n";
|
|
#echo " <td colspan=\"4\" valign=\"top\">\n";
|
|
calendar_info($this->adr,$this->t);
|
|
#echo " </td>\n";
|
|
#echo "</tr>\n";
|
|
}
|
|
|
|
$cnt = 0;
|
|
|
|
# Projects
|
|
$r = product::mytutos($this->adr);
|
|
if ($r != "") {
|
|
if ( ($cnt % 2) == 0 ) {
|
|
#echo "<tr>\n";
|
|
}
|
|
#echo " <td width=\"50%\" colspan=\"2\" valign=\"top\">\n". $r ."</td>\n";
|
|
if ( ($cnt % 2) != 0 ) {
|
|
#echo "</tr>\n";
|
|
}
|
|
$cnt++;
|
|
}
|
|
|
|
foreach($tutos[activemodules] as $i => $f) {
|
|
$x = new $tutos[modules][$f][name]($this->dbconn);
|
|
$r = $x->mytutos($this->adr);
|
|
if ($r == "") {
|
|
continue;
|
|
}
|
|
if ( ($cnt % 2) == 0 ) {
|
|
#echo "<tr>\n";
|
|
}
|
|
#echo " <td width=\"50%\" colspan=\"2\" valign=\"top\">\n". $r ."</td>\n";
|
|
if ( ($cnt % 2) != 0 ) {
|
|
#echo "</tr>\n";
|
|
}
|
|
$cnt++;
|
|
}
|
|
if ( ($cnt % 2) != 0 ) {
|
|
#echo "</tr>\n";
|
|
}
|
|
|
|
#echo $this->DataTableEnd();
|
|
}
|
|
/**
|
|
* naviagtion
|
|
*/
|
|
Function navigate() {
|
|
global $tutos, $lang ;
|
|
|
|
#echo "<tr><td>\n";
|
|
if ( $this->adr->mod_ok() ) {
|
|
#echo menulink("user_new.php?id=".$this->adr->id ,$lang['PersonalSettings'],sprintf($lang['PersonalSettingsI'],$this->adr->getFullName())) . "<br />\n";
|
|
}
|
|
|
|
if ( $this->user->feature_ok(usetaskmanagement,PERM_SEE) && $this->user->feature_ok(usecalendar,PERM_SEE) ) {
|
|
#echo menulink("res_cal.php?id=".$this->adr->id,$lang['ResCal'],$lang['ResCal']) ."<br />\n";
|
|
}
|
|
|
|
if ( $this->user->feature_ok(usetimetrack,PERM_SEE) ) {
|
|
#echo menulink("timetrack_overview.php?worker=".$this->adr->id,$lang['TimetrackBooked'],sprintf($lang['TimetrackBookedI'],$this->adr->getFullName())) ."<br />\n";
|
|
}
|
|
|
|
#echo "</td></tr>\n";
|
|
}
|
|
/**
|
|
* prepare
|
|
*/
|
|
Function prepare() {
|
|
global $lang ;
|
|
|
|
$this->name = $lang['PersonalPage'];
|
|
$this->t = Date("Ymd");
|
|
$this->adr = new tutos_user($this->dbconn);
|
|
|
|
if ( isset($_GET['t']) ) {
|
|
$this->t = $_GET['t'];
|
|
}
|
|
if ( isset($_GET['adr']) ) {
|
|
$this->adr = $this->adr->read($_GET['adr'],$this->adr);
|
|
$this->adr->layout = $this->user->layout;
|
|
}
|
|
if ( $this->adr->id == -1 ) {
|
|
$this->adr = &$this->user;
|
|
}
|
|
if (! $this->adr->see_ok() ) {
|
|
$this->adr = &$this->user;
|
|
}
|
|
|
|
$x = task::getaddlink($this->user,$this->adr);
|
|
$this->addMenu($x);
|
|
$x = timetrack::getaddlink($this->user,$this->adr);
|
|
$this->addMenu($x);
|
|
$x = timetrack::getSelectLink($this->user,$lang['TimetrackSearch']);
|
|
$this->addMenu($x);
|
|
|
|
if ( $this->user->feature_ok(usetaskmanagement,PERM_SEE) ) {
|
|
$x = array( url => "task_overview.php?id=".$this->adr->id,
|
|
image => $this->theme->getImage(task::getHtmlIcon(),'menu'),
|
|
text => $lang['TaskOverview'],
|
|
info =>sprintf($lang['TaskOverviewInfo'],$this->adr->getFullName()),
|
|
category => array("overview","task")
|
|
);
|
|
$this->addMenu($x);
|
|
}
|
|
|
|
if ( $this->user->feature_ok(usehistory,PERM_SEE) ) {
|
|
$x = array( url => "history_show.php?adr_id=".$this->adr->id,
|
|
text => $lang['HistoryLink'],
|
|
info =>sprintf($lang['HistoryLinkI'],$this->adr->getFullName()),
|
|
category => array("overview","history")
|
|
);
|
|
$this->addMenu($x);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
$l = new mytutos($current_user);
|
|
#$l->display();
|
|
$dbconn->Close();
|
|
?>
|
|
|