function print_day($params) { if (!is_array($params)) { $this->index(); } print_debug('in print_day()'); $this->bo->store_to_cache(array('syear' => $params['year'], 'smonth' => $params['month'], 'sday' => $params['day'], 'eyear' => $params['year'], 'emonth' => $params['month'], 'eday' => $params['day'])); $p = CreateObject('phpgwapi.Template', $this->template_dir); $p->set_unknowns('keep'); $templates = array('day_cal' => 'day_cal.tpl'); $p->set_file($templates); $p->set_block('day_cal', 'day', 'day'); $p->set_block('day_cal', 'day_row', 'day_row'); $p->set_block('day_cal', 'day_event_on', 'day_event_on'); $p->set_block('day_cal', 'day_event_off', 'day_event_off'); $p->set_block('day_cal', 'day_event_holiday', 'day_event_holiday'); $p->set_block('day_cal', 'day_time', 'day_time'); $date_to_eval = sprintf("%04d%02d%02d", $params['year'], $params['month'], $params['day']); // $day_start = mktime(intval($this->bo->prefs['calendar']['workdaystarts']),0,0,$params['month'],$params['day'],$params['year']); // $day_end = mktime(intval($this->bo->prefs['calendar']['workdayends']),0,1,$params['month'],$params['day'],$params['year']); $day_start = mktime(intval($this->bo->prefs['calendar']['workdaystarts']), 0, 0, 0, 0, 0); $day_end = mktime(intval($this->bo->prefs['calendar']['workdayends']), 0, 1, 0, 0, 0); $daily = $this->set_week_array(phpgwapi_datetime::get_weekday_start($params['year'], $params['month'], $params['day']), $this->theme['row_on'], True); print_debug('Date to Eval', $date_to_eval); $rows = array(); $last_slot = $this->slot_num($day_end, $day_start, $day_end); if ($daily[$date_to_eval]['appts']) { $events = $this->bo->cached_events[$date_to_eval]; print_debug('Date', $date_to_eval); print_debug('Count', count($events)); $last_slot_end = -1; foreach ($events as $event) { ## by tb: we don't want a user to be able to see a event if he has no permission to read it !!! ## this shoud be in class.bocalendar->get_cached_events() !!! #echo '<br><b>check_perms: |'.$this->bo->check_perms(PHPGW_ACL_READ).'|</b><br>'; if (!$this->bo->check_perms(PHPGW_ACL_READ)) { continue; ## echo '<center>'.lang('You do not have permission to read this record!').'</center>'."\n"; ## $GLOBALS['phpgw']->common->phpgw_exit(True); } ## by tb if ($this->bo->rejected_no_show($event)) { continue; // user does not want to see rejected events } if (isset($event['recur_type']) && $event['recur_type']) { $this->bo->set_recur_date($event, $date_to_eval); } $starttime = $this->bo->maketime($event['start']); $endtime = $this->bo->maketime($event['end']); $slot = $this->slot_num($starttime, mktime(intval($this->bo->prefs['calendar']['workdaystarts']), 0, 0, $event['start']['month'], $event['start']['mday'], $event['start']['year']), mktime(intval($this->bo->prefs['calendar']['workdaystarts']), 0, 0, $event['end']['month'], $event['end']['mday'], $event['end']['year'])); $slot_end = $this->slot_num($endtime - 1); // -1 to no occupy eg. the 18.00 slot for a 17-18h date if ($slot <= $last_slot_end) { $slot = $last_slot; $slot_end = max($last_slot_end, $slot_end); } if (isset($rows[$slot])) { $rows[$slot] .= $this->link_to_entry($event, $params['month'], $params['day'], $params['year']); } else { $rows[$slot] = $this->link_to_entry($event, $params['month'], $params['day'], $params['year']); } ## by tb --> old cat-colors: has problems with overlaying events # $tmp_cats = explode(',',$event['category']); # $tmp_cat = $tmp_cats[0]; # $color[$slot] = ( $this->cat_colors[$tmp_cat]) ? $this->cat_colors[$tmp_cat] : 'noColor'; ## by tb print_debug('slot', $slot); print_debug('row', $rows[$slot]); $row_span[$slot] = 1 + $slot_end - $slot; $last_slot = $slot; $last_slot_end = $slot_end; $user_timezone = phpgwapi_datetime::user_timezone(); print_debug('Time', $GLOBALS['phpgw']->common->show_date($this->bo->maketime($event['start']) - $user_timezone) . ' - ' . $GLOBALS['phpgw']->common->show_date($this->bo->maketime($event['end']) - $user_timezone)); print_debug('Slot', $slot); } //echo "rows=<pre>"; print_r($rows); echo "<br />row_span="; print_r($row_span); echo "</pre>\n"; } $holiday_names = $daily[$date_to_eval]['holidays']; if (!$holiday_names) { $row_to_print = $this->nm_on_off(); } else { $row_to_print = '_holiday'; foreach ($holiday_names as $name) { $rows[0] = '<center>' . $name . '</center>' . $rows[0]; } } $last_slot = $this->slot_num($day_end, $day_start, $day_end); $rowspan = 0; for ($slot = 0; $slot <= $last_slot; ++$slot) { $p->set_var('extras', ''); if ($rowspan > 1) { $p->set_var('item', ''); $rowspan--; } elseif (!isset($rows[$slot])) { $p->set_var('event', ' '); $row_to_print = $this->nm_on_off(); $p->parse('item', 'day_event' . $row_to_print, False); } else { $rowspan = intval($row_span[$slot]); if ($rowspan > 1) { ## by tb --> old catcolors: has problems with overlaying event # $p->set_var('extras',' rowspan="'.$rowspan.'"'.' style="border-left:3px solid '.$color[$slot].';padding:3px;vertical-align:top;" '); $p->set_var('extras', ' rowspan="' . $rowspan . '"' . ' style="vertical-align:top;" '); ## END - by tb } else { # $p->set_var('extras',' style="border-left:3px solid '.$color[$slot].';padding:3px;vertical-align:top;" '); $p->set_var('extras', ' style="border-left:vertical-align:top;" '); } ## END - by tb $p->set_var('event', $rows[$slot]); $row_to_print = $this->nm_on_off(); $p->parse('item', 'day_event' . $row_to_print, False); } $open_link = $close_link = ''; $time = ' '; if (0 < $slot && $slot < $last_slot) { $time = $day_start + ($slot - 1) * 60 * $this->bo->prefs['calendar']['interval']; $hour = date('H', $time); $min = date('i', $time); $time = phpgwapi_datetime::formattime($hour, $min); ## by tb $open_link = $this->week_type != 'new' ? ' - ' : ''; ## by tb if ($this->bo->check_perms(PHPGW_ACL_ADD)) { $open_link .= '<a href="' . $this->page('add', array('date' => $date_to_eval, 'hour' => $hour, 'minute' => $min)) . '">'; $close_link = '</a>'; } } $var = array('open_link' => $open_link, 'time' => $time, 'close_link' => $close_link, 'tr_color' => ''); ## by tb if ($this->week_type != 'new' || $this->week_type == 'new' && $this->bo->prefs['calendar']['show_time_line'] == '1') { $this->output_template_array($p, 'item', 'day_time', $var); } $p->parse('row', 'day_row', True); } $this->time_line_saved = TRUE; ## END - by tb return $p->fp('out', 'day'); }