Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Zibepla {
- # Datenbank Objekt
- var $db;
- # Settings Objekt
- var $sets;
- # Language Objekt
- var $lang;
- # Editor Objekt
- var $editor;
- # Editiermode
- var $edit = FALSE;
- # Objekt ID
- var $obj_id = 0;
- # Jahr
- var $year = 0;
- # Belegungsdaten
- var $dates = array();
- # Belegungsstatus
- var $status = array();
- # Ab- und Anreisetage
- var $depjou_deys = array();
- # Neue Belegungsdaten
- var $new_dates = array();
- # Neue Belegungsstatus
- var $new_status = array();
- # Beginndatum (Buchungsform)
- var $begin_date = '';
- # Enddatum (Buchungsform)
- var $end_date = '';
- # Letzte Änderung
- var $last_edit = 0;
- # Array mit Bearbeiter Namen
- var $editors = array();
- var $passwords = array();
- # Die Belegungsplan-Tabelle
- var $table = '';
- # Punkt
- var $html_point = '<font face="symbol">·</font>';
- # Linie
- var $html_line = '<div style="margin:1px; padding-top:0px; padding-bottom:1px; border-bottom:solid 1px #999999"></div>';
- # Tabellen Linie
- var $tab_line = 'onMouseOver="this.bgColor=getOverColor(this);" onMouseOut="this.bgColor=getOutColor(this);" onMouseDown="this.bgColor=getDownColor(this);"';
- # Status des Buchungsformulars (edit/new)
- var $form_status = '';
- # Wird bei Simulation auf true gesetzt
- var $simulation = FALSE;
- # HTML Tooltips
- var $tooltips = array();
- # Bestimmt ob Bearbeiter auf fremde objekte sehen dürfen
- var $view_other_objects = FALSE;
- # Konstruktor
- function Zibepla (&$sets, &$lang, &$db, &$editor, $object_id = 0, $status = ''){
- $qid = 'Zibepla::Zibepla';
- $this->sets = &$sets;
- $this->lang = &$lang;
- $this->editor = &$editor;
- $this->db = &$db;
- # Plan ID
- if ($object_id != 0) { $this->obj_id = $object_id; }
- elseif (is_numeric ($_POST['object_id'])) { $this->obj_id = $_POST['object_id']; }
- elseif (is_numeric ($_GET['id'])) { $this->obj_id = $_SESSION['obj_id'] = $_GET['id']; }
- else{
- if (is_numeric ($_SESSION['obj_id']))
- $this->obj_id = $_SESSION['obj_id'];
- else $this->obj_id = $this->sets->Get('standard_object_id');
- }
- # Year
- if (is_numeric ($_GET['year'])){
- $this->year = $_SESSION['year'] = $_GET['year'];
- }
- else{
- if (is_numeric ($_SESSION['year']))
- $this->year = $_SESSION['year'];
- else $this->year = date ('Y');
- }
- # Letzte Änderungsdatum
- $this->LastEdit();
- # Editiermodus
- if ($this->editor->IsAdmin() || $this->editor->GetId() > 0){
- if ($status != '')
- $this->edit = $status;
- else $this->edit = $_POST['datatype'];
- }
- # Bearbeiter laden
- $sql = "SELECT * FROM " . TBL_EDITORS . " ORDER BY editor_id ASC";
- $this->db->query($sql, $qid);
- while ($this->db->next_record($qid)){
- $this->editors[$this->db->f('editor_id', $qid)] = $this->db->f('login', $qid);
- $this->passwords[$this->db->f('login', $qid)] = $this->db->f('password', $qid);
- }
- }
- # Lädt die Belegungsdaten
- function Load (){
- $qid = 'Zibepla::Load';
- # Variablen zurück setzen
- $this->dates = $this->status = array();
- $sql = "SELECT * FROM " . TBL_RESERVATIONS . " WHERE object_id = '" . $this->obj_id . "' ORDER BY departure ASC";
- $this->db->query ($sql, $qid);
- while ($this->db->next_record($qid)){
- $datefrom = format_datums($this->db->f('journey', $qid));
- $datetill = format_datums($this->db->f('departure', $qid));
- $nstatus = '';
- #echo "\n \n<!-- enddate in mas = " . $this->dates[count($this->dates)-1] . " / datefrom = " . date("Y-m-d",$datefrom) . " -->\n \n";
- if (format_datums($this->dates[count($this->dates)-1]) == $datefrom){
- if(($this->db->f('status', $qid) == 'R')&&($this->status[$this->dates[count($this->dates)-1]] == 'RE')){
- $nstatus = 'R';
- }
- elseif(($this->db->f('status', $qid) == 'R')&&($this->status[$this->dates[count($this->dates)-1]] == 'OE')){
- $nstatus = 'OR';
- }
- elseif(($this->db->f('status', $qid) == 'O')&&($this->status[$this->dates[count($this->dates)-1]] == 'RE')){
- $nstatus = 'RO';
- }
- elseif(($this->db->f('status', $qid) == 'O')&&($this->status[$this->dates[count($this->dates)-1]] == 'OE')){
- $nstatus = 'O';
- }
- elseif(($this->db->f('status', $qid) == 'R')&&($this->db->f('one_day') == 'Y')){
- $nstatus = 'ODR';
- }
- elseif(($this->db->f('status', $qid) == 'O')&&($this->db->f('one_day') == 'Y')){
- $nstatus = 'ODO';
- }
- unset($this->status[$this->dates[count($this->dates)-1]]);
- unset($this->dates[count($this->dates)-1]);
- $temp_array = $this->dates = array_values($this->dates);
- }
- $dstatus = date('I', $datefrom);
- for ($curdate = $datefrom; $curdate <= $datetill; $curdate += 86400){
- # Korrektur für die Schalttage
- if ($dstatus > date('I', $curdate)) {
- $curdate += 3600;
- $dstatus = date('I', $curdate);
- }
- elseif ($dstatus < date('I', $curdate)) {
- $curdate -= 3600;
- $dstatus = date('I', $curdate);
- }
- $this->dates[] = date("Y-m-d",$curdate);
- if ($curdate == $datefrom){
- if ($nstatus != ''){
- $this->status[date("Y-m-d",$curdate)] = $nstatus;
- } else
- if($this->db->f('status', $qid) == 'R'){
- $this->status[date("Y-m-d",$curdate)] = 'RB';
- }else $this->status[date("Y-m-d",$curdate)] = 'OB';
- } else
- if ($curdate == $datetill){
- if($this->db->f('status', $qid) == 'R'){
- $this->status[date("Y-m-d",$curdate)] = 'RE';
- }else $this->status[date("Y-m-d",$curdate)] = 'OE';
- } else $this->status[date("Y-m-d",$curdate)] = $this->db->f('status', $qid);
- // One day
- if ($this->status[date("Y-m-d",$curdate)] == 'RB' && $this->db->f('one_day',$qid) == 'Y'){
- $this->status[date("Y-m-d",$curdate)] = 'ODR';
- }
- if ($this->status[date("Y-m-d",$curdate)] == 'OB' && $this->db->f('one_day', $qid) == 'Y'){
- $this->status[date("Y-m-d",$curdate)] = 'ODO';
- }
- #if ($shortday) $curdate += 3600;
- }
- }
- # Ab- und Anreisetage
- $this->depjou_deys = array();
- $sql = "SELECT departure FROM " . TBL_RESERVATIONS . " WHERE object_id = '" . $this->GetID() . "'";
- $this->db->query ($sql, $qid);
- $departures = array();
- while ($this->db->next_record($qid))
- $departures[] = $this->db->f('departure', $qid);
- $departures_list = "('" . implode ("','", $departures) . "')";
- $sql = "SELECT journey FROM " . TBL_RESERVATIONS . " WHERE journey IN "
- . $departures_list . " AND object_id = '" . $this->GetID() . "'";
- $this->db->query ($sql, $qid);
- while ($this->db->next_record($qid))
- $this->depjou_deys[] = $this->db->f('journey', $qid);
- }
- # Letzte Änderung
- function LastEdit (){
- $qid = 'Zibepla::LastEdit';
- $sql = "SELECT last_edit FROM " . TBL_TIMES . " WHERE object_id = '" . $this->obj_id . "'";
- $this->db->query ($sql, $qid);
- if ($this->db->next_record($qid))
- $this->last_edit = $this->db->f('last_edit', $qid);
- else $this->last_edit = time();
- }
- # Erstellt die Tabelle - je nach Ansichtsweise
- function CreateLayout(){
- $qid = 'Zibepla::CreateLayout';
- # Wenn Object über GET bestimmt sind
- if ((isset ($_GET['objects']) || isset ($_SESSION['objects'])) && !isset ($_GET['group']) && $_GET['view'] != 'yearly'){
- $_SESSION['view'] = 'monthly';
- }
- # Wenn Gruppe über GET bzw. SESSION bestimmt ist/wurde
- elseif ((isset ($_GET['group']) || isset ($_SESSION['group'])) && $_GET['view'] != 'yearly'){
- # Sitzungsvariablen initialisieren
- $_SESSION['view'] = 'monthly';
- if (isset ($_GET['group'])) $_SESSION['group'] = $_GET['group'];
- # Objekte, die dieser Gruppen ID zugehören
- $sql = "SELECT object_id FROM " . TBL_OBJ_SETTINGS . " WHERE object_group = '" . $_SESSION['group'] . "'";
- $this->db->query($sql, $qid); $objects = array();
- while ($this->db->next_record($qid))
- $objects[] = $this->db->f('object_id', $qid);
- $object_names = $this->lang->ObjNames();
- $sort_funcname = ($this->sets->Get('object_order') == 'object_id') ? 'ksort' : 'asort';
- $sort_funcname ($object_names);
- $view_objects = array();
- foreach ($object_names AS $object_id => $object_name)
- if (in_array ($object_id, $objects)) $view_objects[] = $object_id;
- $_GET['objects'] = $_SESSION['objects'] = implode (',', $view_objects);
- $groups = $this->lang->ObjGroups();
- $_SESSION['group_name'] = (isset ($_GET['group_name'])) ? $_GET['group_name'] : $groups[$_SESSION['group']];
- }
- # Andere Möglichketen
- else{
- if ($_GET['view'] == 'monthly') $_SESSION['view'] = 'monthly';
- elseif ($_GET['view'] == 'yearly'){
- $_SESSION['view'] = 'yearly';
- unset ($_SESSION['objects']);
- unset ($_SESSION['group']);
- }
- }
- # Entsprechendes Layout erstellen
- if ($_SESSION['view'] == 'monthly')
- $this->CreateMonthly();
- else $this->CreateYearly();
- }
- # Erstellt die Tabelle mit Monatsübersicht
- function CreateMonthly (){
- # Session
- global $ssn, $granted_objects;
- # Leiste mit Tagen
- $days_border = $this->CreateDaysBorder();
- # Objekte
- if (isset ($_GET['objects'])) $_SESSION['objects'] = $_GET['objects'];
- $objects = explode (',', $_SESSION['objects']);
- if (COUNT($objects) < 1){
- $object_names = $this->lang->ObjNames();
- $sort_funcname = ($this->sets->Get('object_order') == 'object_id') ? 'ksort' : 'asort';
- $sort_funcname ($object_names);
- $objects = array_keys ($object_names);
- $_SESSION['objects'] = implode (',', $objects);
- }
- # Monat
- if (isset ($_GET['month'])) $_SESSION['month'] = (strlen ($_GET['month']) < 2) ? ('0' . $_GET['month']) : $_GET['month'];
- $month = (!empty ($_SESSION['month'])) ? $_SESSION['month'] : $_SESSION['month'] = date('m');
- # Plan-Body
- foreach ((array)$objects AS $obj){
- if (is_array($granted_objects) && !in_array($obj, $granted_objects) && $this->editor->GetId() > 0)
- continue;
- # Objekt id setzen
- $this->obj_id = $obj;
- # Daten laden
- $this->Load();
- # Zeilenanfang
- $body .= '<tr>';
- # Monat
- $body .= $this->CreateObjectTD ($obj);
- # Tage
- for ($day = 1; $day <= 31; $day++)
- $body .= $this->CreateDayTD ($month, $day);
- # Zeilenende
- $body .= '</tr>';
- }
- # Tabelle zusammensetzen
- $this->table = '<table class="' . $this->sets->Get('table_css_class')
- . '" width="' . $this->sets->Get('table_width')
- . '" border="' . $this->sets->Get('table_border')
- . '" cellspacing="' . $this->sets->Get('table_cellspacing')
- . '" cellpadding="' . $this->sets->Get('table_cellpadding')
- . '" align="' . $this->sets->Get('table_align')
- . '" bgcolor="#' . $this->sets->Get('table_bgcolor') . '">'
- . '<tr>' . $days_border . '</tr>'
- . $body . $days_border;
- # Editor Navigationselemente
- if (!PRINT_MODUS) $this->CreateEditElements ();
- # Formular- und Tabellenende
- $this->table .= '</table>';
- # Monatsnavigation
- $this->MonthNavigation();
- }
- # Erstellt die Tabelle mit Jahresübersicht
- function CreateYearly (){
- # Session
- global $ssn;
- # Leiste mit Tagen
- $days_border = $this->CreateDaysBorder();
- # Plan-Body
- for ($mon = 1; $mon <= 12; $mon++){
- # Zeilenanfang
- $body .= '<tr>';
- # Monat
- $body .= $this->CreateMonthTD ($mon);
- # Tage
- for ($day = 1; $day <= 31; $day++)
- $body .= $this->CreateDayTD ($mon, $day);
- # Zeilenende
- $body .= '</tr>';
- }
- # Tabelle zusammensetzen
- $this->table = '<table class="' . $this->sets->Get('table_css_class')
- . '" width="' . $this->sets->Get('table_width')
- . '" border="' . $this->sets->Get('table_border')
- . '" cellspacing="' . $this->sets->Get('table_cellspacing')
- . '" cellpadding="' . $this->sets->Get('table_cellpadding')
- . '" align="' . $this->sets->Get('table_align')
- . '" bgcolor="#' . $this->sets->Get('table_bgcolor') . '">'
- . '<tr>' . $days_border . '</tr>'
- . $body . $days_border;
- # Editor Navigationselemente
- if (!PRINT_MODUS) $this->CreateEditElements();
- # Formular- und Tabellenende
- $this->table .= '</table>';
- }
- # Initialisiert die Belegungsplan-Tabelle für Edit
- function CreateEditElements (){
- # Session
- global $ssn, $granted_objects;
- # Logout Link
- if ($this->editor->GetId() != 0 && !$this->editor->IsAdmin()){
- $logout_link = Admin::LogoutLink($this->lang->Get('logout_word'));
- $logout_td = '<td> </td><td class="formSubmit">' . $logout_link . '</td><td> </td>';
- if ((is_array ($granted_objects) && in_array ($this->GetId(), $granted_objects)) || $this->view_other_objects)
- $reservation_form_link = '<td class="formSubmit" ' . $rlink . '>' . $this->ReservationFormLink() . '</td>';
- else $reservation_form_link = '';
- }
- elseif($this->editor->IsAdmin() || $this->editor->GetId() > 0){
- $reservation_form_link = '<td class="formSubmit" ' . $rlink . '>' . $this->ReservationFormLink() . '</td>';
- $w1 = $w2 = '50%';
- }
- else {
- $w1 = '100%';
- $w2 = '';
- }
- $visor = ($this->editor->IsAdmin() || $this->editor->GetId() > 0) ? true : false;
- # Buttons
- $this->table .= '<tr><td colspan="32"><table width="100%" border="0" cellpadding="0" cellspacing="0">'
- . '<tr><td>' . (($visor) ? $this->ObjectNavigation() : $this->UserObjectNavigation()) . '</td>'
- . '<td width="100%"><table border="0" cellpadding="0" cellspacing="0"><tr><td width="' . $w1 . '"> </td>'
- . (($visor) ? '<td>{PLI}</td>' : '') . '<td>{PLA}</td>' . (($visor) ? '<td>{PAL}</td>' : '') . '<td width="' . $w2 . '"> </td></tr></table></td>'
- . $reservation_form_link
- . $logout_td
- . '</tr></table></td></tr>';
- }
- # Objektnavigation für Administrator und Bearbeiter
- function ObjectNavigation (){
- $qid = 'Zibepla::ObjectNavigation';
- global $ssn, $granted_objects;
- # Gruppen mit Bezeichnungen
- $groups = $this->lang->ObjGroups();
- asort ($groups);
- $granted_objects_list = "('" . implode ("','", (array)$granted_objects) . "')";
- $sql = "SELECT DISTINCT(object_group) FROM " . TBL_OBJ_SETTINGS;
- if (!$this->editor->IsAdmin())
- $sql .= " WHERE object_id IN " . $granted_objects_list;
- $this->db->query ($sql, $qid);
- $granted_groups = array();
- while ($this->db->next_record($qid))
- if ($this->db->f('object_group', $qid) > 0)
- $granted_groups[] = $this->db->f('object_group', $qid);
- # Gruppen options
- foreach ($groups AS $group_id => $group_name){
- if (in_array($group_id, $granted_groups) || $this->view_other_objects){
- $selected = ($_SESSION['group'] == $group_id && $_SESSION['view'] != 'yearly') ? 'selected' : '';
- $group_select .= '<option style="color:#006600" value="group_' . $group_id . '" ' . $selected . '>' . $this->lang->Get('object_group_word') . ': ' . $group_name . '</option>';
- }
- }
- # Objekte mit Bezeichnungen
- $names = $this->lang->ObjNames();
- $sort_funcname = ($this->sets->Get('object_order') == 'object_id') ? 'ksort' : 'asort';
- $sort_funcname ($names);
- # Objekte Options
- foreach ($names AS $object_id => $object_name){
- if ((is_array($granted_objects) && in_array($object_id, $granted_objects)) || $this->view_other_objects || $this->editor->IsAdmin()){
- $selected = (($_SESSION['obj_id'] == $object_id || $this->obj_id == $object_id) && $_SESSION['view'] != 'monthly') ? 'selected' : '';
- $object_select .= '<option value="' . $object_id . '" ' . $selected . '>' . $this->lang->Get('object_word') . ': ' . $object_name . '</option>';
- }
- }
- # Objekte ohne Bezeichnungen options
- $object_ids = array_keys ($names);
- $objects_list = "('" . implode ("','", (array)$object_ids) . "')";
- $sql = "SELECT DISTINCT(object_id) FROM " . TBL_RESERVATIONS . " WHERE object_id NOT in "
- . $objects_list . " ORDER BY object_id ASC";
- $this->db->query ($sql, $qid);
- while ($this->db->next_record($qid)){
- $object_id = $this->db->f('object_id', $qid);
- if ((is_array($granted_objects) && in_array($object_id, $granted_objects)) || $this->view_other_objects || $this->editor->IsAdmin()){
- $selected = ($_SESSION['obj_id'] == $object_id && $_SESSION['view'] != 'monthly') ? 'selected' : '';
- $object_select .= '<option value="' . $object_id . '">'
- . $this->lang->Get('noname_object') . ' ' . $object_id . '</option>';
- }
- }
- # Return
- $select = $group_select . $object_select;
- return $this->ObjectNavigationForm($select);
- }
- # Objektnavigation für Besucher
- function UserObjectNavigation (){
- $qid = 'Zibepla::UserObjectNavigation';
- $sql = "SELECT DISTINCT(obj.object_id), obj.object_group, ln_obj.value as obj_name, ln_group.value as obj_group_name FROM " . TBL_OBJ_SETTINGS . " AS obj "
- . "LEFT JOIN " . TBL_LANGUAGES . " AS ln_obj "
- . " ON concat('obj_name_', obj.object_id) = ln_obj.variable AND ln_obj.language = '" . $this->lang->Lang() . "' "
- . "LEFT JOIN " . TBL_LANGUAGES . " AS ln_group "
- . " ON concat('obj_group_name_', obj.object_group) = ln_group.variable AND ln_group.language = '" . $this->lang->Lang() . "' "
- . " WHERE enable_search = 'Y' GROUP BY obj.object_id"
- . " ORDER BY obj_group_name, obj_name ASC";
- $this->db->query($sql, $qid);
- $options = $cur_group = '';
- while ($this->db->next_record($qid)){
- if ($this->db->f('obj_group_name', $qid) == null){
- $object_id = $this->db->f('object_id', $qid);
- $name = ' - ' . $this->db->f('obj_name', $qid);
- $selected = ($_SESSION['obj_id'] == $object_id && $_SESSION['view'] == 'yearly') ? 'selected' : '';
- $options .= '<option ' . $selected . ' value="' . $object_id . '">' . $name . '</option>';
- }
- elseif ($cur_group != $this->db->f('object_group', $qid)){
- $group_id = $cur_group = $this->db->f('object_group', $qid);
- $name = $this->db->f('obj_group_name', $qid);
- $selected = ($_SESSION['group'] == $group_id && $_SESSION['view'] != 'yearly') ? 'selected' : '';
- $options .= '<option ' . $selected . ' value="group_' . $group_id . '">' . $name . '</option>';
- }
- if ($this->db->f('obj_group_name', $qid) != null) {
- $object_id = $this->db->f('object_id', $qid);
- $name = ' - ' . $this->db->f('obj_name', $qid);
- $selected = ($_SESSION['obj_id'] == $object_id && $_SESSION['view'] == 'yearly') ? 'selected' : '';
- $options .= '<option ' . $selected . ' value="' . $object_id . '">' . $name . '</option>';
- }
- }
- return $this->ObjectNavigationForm($options);
- }
- # Erstellt Formular für Objektnavigation
- function ObjectNavigationForm ($select){
- global $ssn;
- # Formular
- return '<table border="0" cellpadding="0" cellspacing="0"><form action="' . $ssn->Url($_SERVER['PHP_SELF'])
- . '" method="get"><tr><td nowrap>'
- . '<div class="text">' . $this->lang->Get('yearly_view_for_object')
- . ': </div></td><td><select name="id">' . $select . '</select></td>'
- . '<td> </td><td><input type="submit" class="formSubmit" name="submit_view" value="'
- . $this->lang->Get('execute_word') . '"><input type="hidden" name="view" value="yearly">'
- . '</td></tr></form></table>';
- }
- # Erstellt Leiste mit Tagen von Links nach Rechts
- function CreateDaysBorder (){
- for ($day = 1; $day <= 31; $day++) {
- $wn_day = (strlen($day) == 1) ? '0' . $day : $day;
- $days_color = $this->sets->Get('days_text_color', FALSE);
- # Gestylter Text
- $day_text = (!empty ($days_color))
- ? '<span class="text" style="color:#' . $days_color . '">' . $wn_day . '</span>'
- : '<span class="text">' . $wn_day . '</span>';
- # Border
- $border .= '<td align="center" width="' . $this->sets->Get('field_width') . '" bgcolor="' . $this->sets->Get('days_bg_color') . '">' . $day_text . '</td>';
- }
- # Return
- return '<td width="' . $this->sets->Get('month_td_width') . '"> </td>' . $border;
- }
- # Erstellt ein TD HTML-Element mit dem Monat
- function CreateMonthTD ($mon){
- $wn_mon = (strlen($mon) == 1) ? '0' . $mon : $mon;
- $months_color = $this->sets->Get('months_text_color', FALSE);
- $month_text = (!empty ($months_color))
- ? '<span class="text" style="color:#' . $months_color . '"> ' . $this->lang->Get('month_' . $wn_mon) . ' </span>'
- : '<span class="text"> ' . $this->lang->Get('month_' . $wn_mon) . ' </span>';
- $td = '<td height="' . $this->sets->Get('field_height') . '" align="' . $this->sets->Get('month_align') . '" '
- . 'bgcolor="' . $this->sets->Get('months_bg_color') . '">' . $month_text . '</td>';
- # Return
- return $td;
- }
- # Erstellt ein TD HTML-Element mit dem Objekt (bei monthly view)
- function CreateObjectTD ($obj){
- $objects_color = $this->sets->Get('months_text_color', FALSE);
- $object_text = (!empty ($objects_color))
- ? '<span class="text" style="color:#' . $objects_color . '"> ' . $this->lang->Get('obj_name_' . $obj) . ' </span>'
- : '<span class="text"> ' . $this->lang->Get('obj_name_' . $obj) . ' </span>';
- $td = '<td nowrap height="' . $this->sets->Get('field_height') . '" align="' . $this->sets->Get('month_align') . '" '
- . 'bgcolor="' . $this->sets->Get('months_bg_color') . '">' . $object_text . '</td>';
- # Return
- return $td;
- }
- # Erstellt ein TD HTML-Element für ein Tag in dem Tabellenkörper
- function CreateDayTD ($mon, $day){
- $wn_day = (strlen($day) == 1) ? '0' . $day : $day;
- $wn_mon = (strlen($mon) == 1) ? '0' . $mon : $mon;
- if (checkdate($wn_mon, $wn_day, $this->year) && $this->GetYear() >= 1970 && $this->GetYear() < 2038){
- $date = $this->year . '-' . $wn_mon . '-'. $wn_day;
- # Date Status
- if(in_array ($date, $this->dates))
- $date_status = $this->status[$date];
- else $date_status = 'FR';
- }
- else {
- $date_status = 'ND';
- }
- # Ab- und Anreisetag
- if (in_array ($date, $this->depjou_deys)){
- $occupied_background = 'background="' . $this->sets->Get('occupied_depjou_image') . '"';
- $reserved_background = 'background="' . $this->sets->Get('reserved_depjou_image') . '"';
- $in = '';
- }
- else{
- $occupied_background = 'bgcolor="#' . $this->sets->Get('occupied_bg_color') . '"';
- $reserved_background = 'bgcolor="#' . $this->sets->Get('reserved_bg_color') . '"';
- }
- # TD-Element erstellen
- switch ($date_status){
- # Kein Tag, Frei
- case 'ND': $td = '<td class="t" bgcolor="#'.$this->sets->Get('noday_bg_color').'">' . $in . '</td>'; break;
- case 'FR': $td = '<td class="t" bgcolor="#'.$this->sets->Get('free_bg_color').'">' . $in . '</td>'; break;
- # Belegt, Belegungsbeginn, etc..
- case 'O': $td = '<td class="t" '.$occupied_background.'>' . $in . '</td>'; break;
- case 'OB': $td = '<td class="t" background="'.$this->sets->Get('occupied_begin_image').'">' . $in . '</td>'; break;
- case 'OE': $td = '<td class="t" background="'.$this->sets->Get('occupied_end_image').'">' . $in . '</td>'; break;
- case 'RO': $td = '<td class="t" background="'.$this->sets->Get('reserved_occupied_image').'">' . $in . '</td>'; break;
- # Reserviert, Reservierungsbeginn, etc..
- case 'R': $td = '<td class="t" '.$reserved_background.'>' . $in . '</td>'; break;
- case 'RB': $td = '<td class="t" background="'.$this->sets->Get('reserved_begin_image').'">' . $in . '</td>'; break;
- case 'RE': $td = '<td class="t" background="'.$this->sets->Get('reserved_end_image').'">' . $in . '</td>'; break;
- case 'OR': $td = '<td class="t" background="'.$this->sets->Get('occupied_reserved_image').'">' . $in . '</td>'; break;
- case 'ODR': $td = '<td class="t" background="'.$this->sets->Get('one_day_reserved_image').'">' . $in . '</td>'; break;
- case 'ODO': $td = '<td class="t" background="'.$this->sets->Get('one_day_occupied_image').'">' . $in . '</td>'; break;
- }
- # Return
- return $td;
- }
- # Erstellt das Buchungsformular
- function ReservationForm (&$tpl){
- global $granted_objects;
- $tpl->set_file ('bf', 'blocks/reservation_form_' . $this->lang->Lang() . '.html');
- $tpl->set_block ('bf', 'BF_BLOCK', 'RESERVATION_FORM');
- $tpl->parse ('RESERVATION_FORM', 'BF_BLOCK');
- $tpl->set_var ('ADL_SELECT', $this->AdultSelect());
- $tpl->set_var ('CHN_SELECT', $this->ChildernSelect());
- # Year Optionen
- for ($i = date('Y'); $i <= 2050; $i++)
- $jyea_options .= '<option ' . (($_POST['j_yea'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . $i . '</option>';
- for ($i = date('Y'); $i <= 2050; $i++)
- $dyea_options .= '<option ' . (($_POST['d_yea'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . $i . '</option>';
- # Monate Optionen
- for ($i = 1; $i <= 12; $i++)
- $jmon_options .= '<option ' . (($_POST['j_mon'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . ((strlen ($i) < 2) ? '0' . $i : $i) . '</option>';
- for ($i = 1; $i <= 12; $i++)
- $dmon_options .= '<option ' . (($_POST['d_mon'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . ((strlen ($i) < 2) ? '0' . $i : $i) . '</option>';
- # Tage Optionen
- for ($i = 1; $i <= 31; $i++)
- $jday_options .= '<option ' . (($_POST['j_day'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . ((strlen ($i) < 2) ? '0' . $i : $i) . '</option>';
- for ($i = 1; $i <= 31; $i++)
- $dday_options .= '<option ' . (($_POST['d_day'] == $i) ? 'selected' : '') . ' value="' . $i . '">' . ((strlen ($i) < 2) ? '0' . $i : $i) . '</option>';
- $one_day_checked = isset($_POST['one_day_reservation']) ? ' checked' : '';
- # Journey
- $tpl->set_var ('JY_SL', '<select onChange="ChangeDepSel (this, \'d_yea\')" id="rf_1" class="reservationFormSelectField" name="j_yea">' . $jyea_options . '</select>');
- $tpl->set_var ('JM_SL', '<select onChange="ChangeDepSel (this, \'d_mon\')" id="rf_2" class="reservationFormSelectField" name="j_mon">' . $jmon_options . '</select>');
- $tpl->set_var ('JD_SL', '<select onChange="ChangeDepSel (this, \'d_day\')" id="rf_3" class="reservationFormSelectField" name="j_day">' . $jday_options . '</select>');
- # One day
- $tpl->set_var ('ONE_DAY', '<input type="checkbox" name="one_day_reservation" onclick="disableSecondDate();"' . $one_day_checked . '>');
- # Departure
- $tpl->set_var ('DY_SL', '<select onChange="ChangeSelDependence (\'d_yea\')" id="rf_4" class="reservationFormSelectField" name="d_yea">' . $dyea_options . '</select>');
- $tpl->set_var ('DM_SL', '<select onChange="ChangeSelDependence (\'d_mon\')" id="rf_5" class="reservationFormSelectField" name="d_mon">' . $dmon_options . '</select>');
- $tpl->set_var ('DD_SL', '<select onChange="ChangeSelDependence (\'d_day\')" id="rf_6" class="reservationFormSelectField" name="d_day">' . $dday_options . '</select>');
- # Services Select
- $services = explode (';', $this->lang->Get('services'));
- $select = '<select id="rf_7" class="reservationFormSelectField" name="services">';
- $select .= '<option value=""> - - - </option>';
- foreach ($services AS $key => $service){
- $selected = ($key + 1 == $_POST['services']) ? 'selected' : '';
- $select .= '<option value="' . ($key + 1) . '" ' . $selected . '>' . $service . '</option>';
- }
- $tpl->set_var ('SERVICE_SELECT', $select . '</select>');
- $tpl->set_var ('PREPAY', stripslashes ($_POST['prepay']));
- $tpl->set_var ('LASTNAME', stripslashes ($_POST['lastname']));
- $tpl->set_var ('FIRSTNAME', stripslashes ($_POST['firstname']));
- $tpl->set_var ('COMMENT', stripslashes ($_POST['comment']));
- # Ausgewählter Datentyp (Reservierung / Buchung)
- if (isset ($_POST['datatype']))
- $tpl->set_var ($_POST['datatype'] . '_CHECKED', 'checked');
- else $tpl->set_var ('R_CHECKED', 'checked');
- # Object select
- $sort_funcname = ($this->sets->Get('object_order') == 'object_id') ? 'ksort' : 'asort';
- $sort_funcname ($objects = $this->lang->ObjNames());
- foreach ($objects AS $id => $name)
- if ($this->editor->IsAdmin() || (is_array ($granted_objects) && in_array ($id, $granted_objects)))
- $obj_options .= '<option ' . (($_POST['object_id'] == $id) ? 'selected' : '') . ' value="' . $id . '">' . $name . '</option>';
- $tpl->set_var ('OBJECT_SELECT', '<select id="rf_8" class="reservationFormSelectField" name="object_id">' . $obj_options . '</select>');
- # Beim Editieren einer Buchung
- if (is_numeric ($_GET['er'])){
- $tpl->set_var ('EDIT_ID', $_GET['er']);
- $this->form_status = ' - <u>edit</u> ';
- # Neue Buchung Button
- $tpl->set_var ('NEW', $this->NewReservationLink());
- }
- else{
- $this->form_status = ' - <u>new</u> ';
- }
- # Status des Formulars
- $tpl->set_var ('STATUS', $this->form_status);
- }
- # Erstellt Filter Panel
- function ReservationFilterPanel (&$tpl){
- $qid = 'Zibepla::ReservationFilterPanel';
- $editors = $objects = $groups = $status = $years = $months = array();
- # Arrays initialisieren
- $sql = "SELECT * FROM " . TBL_RESERVATIONS . " ORDER BY id ASC";
- $this->db->query ($sql, $qid);
- while ($this->db->next_record($qid)){
- $j_year = substr ($this->db->f('journey',$qid), 0, 4);
- $d_year = substr ($this->db->f('departure', $qid), 0, 4);
- $j_month = substr ($this->db->f('journey', $qid), 5, 2);
- $d_month = substr ($this->db->f('departure', $qid), 5, 2);
- if (!in_array ($this->db->f('editor_id', $qid), $editors)) $editors[] = $this->db->f('editor_id', $qid);
- if (!in_array ($this->db->f('object_id', $qid), $objects)) $objects[] = $this->db->f('object_id', $qid);
- if (!in_array ($this->db->f('status', $qid), $status)) $status[] = $this->db->f('status', $qid);
- if (!in_array ($j_year, $years)) $years[] = $j_year;
- if (!in_array ($d_year, $years)) $years[] = $d_year;
- if (!in_array ($j_month, $months)) $months[] = $j_month;
- if (!in_array ($d_month, $months)) $months[] = $d_month;
- }
- # Array mit Bearbeiter sortieren
- $editor_names = $this->editors; asort ($editor_names);
- foreach ($editor_names AS $editor_id => $editor_name)
- if (!in_array ($editor_id, $editors)) unset ($editor_names[$editor_id]);
- unset ($editors);
- # Array mit Objekten sortieren
- $all_objects = $this->lang->ObjNames();
- $sort_funcname = ($this->sets->Get('object_order') == 'object_id') ? 'ksort' : 'asort';
- $sort_funcname ($all_objects);
- foreach ($all_objects AS $object_id => $object_name)
- if (!in_array ($object_id, $objects)) unset ($all_objects[$object_id]);
- unset ($objects);
- # Objektgruppen Daten
- $reserved_object_list = "('" . implode ("','", array_keys ($all_objects)) . "')";
- $sql = "SELECT DISTINCT(object_group) AS object_group FROM " . TBL_OBJ_SETTINGS
- . " WHERE object_id IN " . $reserved_object_list;
- $this->db->query($sql, $qid);
- while ($this->db->next_record($qid) && $this->db->f('object_group', $qid) != 0)
- $groups[$this->db->f('object_group', $qid)] = $this->lang->Get('obj_group_name_' . $this->db->f('object_group', $qid));
- # Array mit Status, Jahren und Monaten sortieren
- asort ($status); sort ($years); sort ($months);
- # Select mit Bearbeiter
- $editor_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- $editor_select .= '<option value="0" ' . (($_SESSION['editor_filter'] == '0') ? 'selected' : '')
- . '>' . $this->sets->Get('administrator_login') . '</option>';
- foreach ($editor_names AS $editor_id => $editor_name){
- $editor_select .= '<option value="' . $editor_id . '" '
- . (($_SESSION['editor_filter'] == $editor_id) ? 'selected' : '') . '>' . $editor_name . '</option>';
- }
- $editor_select = '<select id="rf_9" class="reservationFormSelectField" name="editor_filter">' . $editor_select . '</select>';
- # Select mit Objekten
- $object_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- foreach ($all_objects AS $object_id => $object_name){
- $object_select .= '<option value="' . $object_id . '" '
- . (($_SESSION['object_filter'] == $object_id) ? 'selected' : '') . '>' . $object_name . '</option>';
- }
- $object_select = '<select id="rf_10" class="reservationFormSelectField" name="object_filter">' . $object_select . '</select>';
- # Select mit Objektgrupen
- $group_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- foreach ($groups AS $group_id => $group_name){
- $group_select .= '<option value="' . $group_id . '" '
- . (($_SESSION['group_filter'] == $group_id) ? 'selected' : '') . '>' . $group_name . '</option>';
- }
- $group_select = '<select id="rf_11" class="reservationFormSelectField" name="group_filter">' . $group_select . '</select>';
- # Select mit Status
- $status_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- foreach ($status AS $st){
- $view_status = ($st == 'O') ? $this->lang->Get('edit_occupied_word') : $this->lang->Get('edit_reserved_word');
- $status_select .= '<option value="' . $st . '" '
- . (($_SESSION['status_filter'] == $st) ? 'selected' : '') . '>' . $view_status . '</option>';
- }
- $status_select = '<select id="rf_12" class="reservationFormSelectField" name="status_filter">' . $status_select . '</select>';
- # Select mit Jahren
- $year_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- foreach ($years AS $year){
- $year_select .= '<option value="' . $year . '" '
- . (($_SESSION['year_filter'] == $year) ? 'selected' : '') . '>' . $year . '</option>';
- }
- $year_select = '<select id="rf_13" class="reservationFormSelectField" name="year_filter">' . $year_select . '</select>';
- # Select mit Monaten
- $month_select .= '<option value="">' . $this->lang->Get('all_word') . '</option>';
- foreach ($months AS $month){
- $month_select .= '<option value="' . $month . '" '
- . (($_SESSION['month_filter'] == $month) ? 'selected' : '') . '>' . $month . '</option>';
- }
- $month_select = '<select id="rf_14" class="reservationFormSelectField" name="month_filter">' . $month_select . '</select>';
- # Variablen parsen
- if (!isset ($_SESSION['filter_link'])) $_SESSION['filter_link'] = 'AND';
- $tpl->set_var ('filter_' . strtolower($_SESSION['filter_link']) . '_checked', 'checked');
- $tpl->set_var ('RESERVED_EDITOR_SELECT', $editor_select);
- $tpl->set_var ('RESERVED_OBJECT_SELECT', $object_select);
- $tpl->set_var ('RESERVED_GROUP_SELECT', $group_select);
- $tpl->set_var ('RESERVATION_TYPE_SELECT', $status_select);
- $tpl->set_var ('YEAR_SELECT', $year_select);
- $tpl->set_var ('MONTH_SELECT', $month_select);
- }
- # Erstellt Liste mit Buchungen (own - nur Buchungen, die Editor selber gemacht hat)
- function ReservationList (&$tpl, $own = FALSE){
- $qid = 'Zibepla::ReservationList';
- global $ssn, $filter_keys;
- # WHERE Bedingungen
- $conditions = array();
- if ($_SESSION['editor_filter'] != '') $conditions[] = " editor_id = '" . $_SESSION['editor_filter'] . "' ";
- if ($_SESSION['object_filter'] != '') $conditions[] = " object_id = '" . $_SESSION['object_filter'] . "' ";
- if ($_SESSION['status_filter'] != '') $conditions[] = " status = '" . $_SESSION['status_filter'] . "' ";
- if ($_SESSION['year_filter'] != ''){
- $conditions[] = " (YEAR(journey) = '" . $_SESSION['year_filter'] . "' "
- . " OR YEAR(departure) = '" . $_SESSION['year_filter'] . "') ";
- }
- if ($_SESSION['month_filter'] != '') {
- $conditions[] = " (MONTH(journey) = '" . $_SESSION['month_filter'] . "' "
- . " OR MONTH(departure) = '" . $_SESSION['month_filter'] . "') ";
- }
- if ($_SESSION['group_filter'] != ''){
- $sql = "SELECT object_id FROM " . TBL_OBJ_SETTINGS
- . " WHERE object_group = '" . $_SESSION['group_filter'] . "'";
- $this->db->query($sql, $qid); $in_group_objects = array();
- while ($this->db->next_record($qid))
- $in_group_objects[] = $this->db->f('object_id', $qid);
- $conditions[] = ' object_id IN ' . "('" . implode ("','", $in_group_objects) . "') ";
- }
- if ($own && !$this->editor->IsAdmin()) {
- $where = " WHERE (editor_id = '" . $this->editor->GetId() . "')";
- if (count($conditions) > 0)
- " AND (" . implode ($_SESSION['filter_link'], $conditions) . ")";
- }
- elseif (COUNT($conditions) > 0){
- $where = " WHERE " . implode ($_SESSION['filter_link'], $conditions);
- }
- # Sortierung und Richtung
- $order_array = array('id', 'editor_name', 'object_name', 'journey', 'departure',
- 'firstname', 'lastname', 'adult', 'childern', 'service_name');
- $_SESSION['reslist_order'] = (isset ($_GET['order']) && in_array ($_GET['order'], $order_array))
- ? $_GET['order'] : ((isset ($_SESSION['reslist_order'])) ? $_SESSION['reslist_order'] : 'id');
- $_SESSION['reslist_dir'] = (isset ($_GET['dir']) && ($_GET['dir'] == 'ASC' || $_GET['dir'] == 'DESC'))
- ? $_GET['dir'] : ((isset ($_SESSION['reslist_dir'])) ? $_SESSION['reslist_dir'] : 'ASC');
- # SQL Zeilenanzahl
- if (!PRINT_MODUS) {
- $sql = "SELECT COUNT(*) AS num_rows FROM " . TBL_RESERVATIONS . " " . $where;
- $this->db->query($sql);
- $this->db->next_record();
- $reservations = $this->db->f('num_rows');
- $page_for_sql = ($_GET['page'] < 1) ? $_GET['page'] : ($_GET['page'] - 1);
- # Seitenblätterfunktion
- $pages_navigation = $this->PagesHandler($_SERVER['PHP_SELF'], '', $this->sets->Get('reservation_list_pagerows'), $reservations, $_GET['page']);
- }
- # Ausnahme für die Sortierung
- $order = ($_SESSION['reslist_order'] != 'object_name') ? $_SESSION['reslist_order'] : 'ln.value';
- # Daten für die Liste
- $sql = "SELECT rsv.* FROM " . TBL_RESERVATIONS . " AS rsv LEFT JOIN " . TBL_LANGUAGES . " AS ln "
- . " ON concat('obj_name_', rsv.object_id) = ln.variable AND language = '" . $this->lang->Lang() . "' " . $where
- . " ORDER BY " . $order . " " . $_SESSION['reslist_dir'];
- $start = $this->sets->Get('reservation_list_pagerows') * $page_for_sql;
- if (!PRINT_MODUS)
- $sql .= ' LIMIT ' . $start . ', ' . $this->sets->Get('reservation_list_pagerows');
- $this->db->query($sql, $qid);
- if ($this->db->num_rows($qid) > 0){
- $reservation_word = '<b>' . $this->lang->Get('reservation_id_word') . '</b>';
- $editor_word = '<b>' . $this->lang->Get('editor_word') . '</b>';
- $object_word = '<b>' . $this->lang->Get('object_word') . '</b>';
- $journey_word = '<b>' . $this->lang->Get('journey_word') . '</b>';
- $departure_word = '<b>' . $this->lang->Get('departure_word') . '</b>';
- $prepay_word = '<b>' . $this->lang->Get('prepay_word') . '</b>';
- $status_abbr = '<b>' . $this->lang->Get('status_abbreviation') . '</b>';
- $firstname_word = '<b>' . $this->lang->Get('firstname_word') . '</b>';
- $lastname_word = '<b>' . $this->lang->Get('lastname_word') . '</b>';
- $adult_abbr = '<b>' . $this->lang->Get('adults_abbreviation') . '</b>';
- $kids_abbr = '<b>' . $this->lang->Get('kids_abbreviation') . '</b>';
- $service_word = '<b>' . $this->lang->Get('service_word') . '</b>';
- $comment_abbr = '<b>' . $this->lang->Get('comment_abbreviation') . '</b>';
- $action_word = '<b>' . $this->lang->Get('actions_word') . '</b>';
- $self = $ssn->Url ($_SERVER['PHP_SELF']);
- $dir = ($_SESSION['reslist_dir'] == 'ASC') ? 'DESC' : 'ASC';
- $order_img = '<img src="images/order_reservations_' . strtolower ($_SESSION['reslist_dir'])
- . '.gif" width="13" height="9" style="margin-left:3px">';
- if (!PRINT_MODUS){
- $reservation_word = '<a href="' . $self . '?order=id&dir=' . (($_SESSION['reslist_order'] == 'id') ? $dir : $_SESSION['reslist_dir']) . '">' . $reservation_word . (($_SESSION['reslist_order'] == 'id') ? $order_img : '') . '</a>';
- # $editor_word = '<a href="' . $self . '?order=editor_name&dir=' . (($_SESSION['reslist_order'] == 'editor_name') ? $dir : $_SESSION['reslist_dir']) . '">' . $editor_word . (($_SESSION['reslist_order'] == 'editor_name') ? $order_img : '') . '</a>';
- $object_word = '<a href="' . $self . '?order=object_name&dir=' . (($_SESSION['reslist_order'] == 'object_name') ? $dir : $_SESSION['reslist_dir']) . '">' . $object_word . (($_SESSION['reslist_order'] == 'object_name') ? $order_img : '') . '</a>';
- $journey_word = '<a href="' . $self . '?order=journey&dir=' . (($_SESSION['reslist_order'] == 'journey') ? $dir : $_SESSION['reslist_dir']) . '">' . $journey_word . (($_SESSION['reslist_order'] == 'journey') ? $order_img : '') . '</a>';
- $departure_word = '<a href="' . $self . '?order=departure&dir=' . (($_SESSION['reslist_order'] == 'departure') ? $dir : $_SESSION['reslist_dir']) . '">' . $departure_word . (($_SESSION['reslist_order'] == 'departure') ? $order_img : '') . '</a>';
- $firstname_word = '<a href="' . $self . '?order=firstname&dir=' . (($_SESSION['reslist_order'] == 'firstname') ? $dir : $_SESSION['reslist_dir']) . '">' . $firstname_word . (($_SESSION['reslist_order'] == 'firstname') ? $order_img : '') . '</a>';
- $lastname_word = '<a href="' . $self . '?order=lastname&dir=' . (($_SESSION['reslist_order'] == 'lastname') ? $dir : $_SESSION['reslist_dir']) . '">' . $lastname_word . (($_SESSION['reslist_order'] == 'lastname') ? $order_img : '') . '</a>';
- $adult_abbr = '<a href="' . $self . '?order=adult&dir=' . (($_SESSION['reslist_order'] == 'adult') ? $dir : $_SESSION['reslist_dir']) . '">' . $adult_abbr . (($_SESSION['reslist_order'] == 'adult') ? $order_img : '') . '</a>';
- $kids_abbr = '<a href="' . $self . '?order=childern&dir=' . (($_SESSION['reslist_order'] == 'childern') ? $dir : $_SESSION['reslist_dir']) . '">' . $kids_abbr . (($_SESSION['reslist_order'] == 'childern') ? $order_img : '') . '</a>';
- # $service_word = '<a href="' . $self . '?order=service_name&dir=' . (($_SESSION['reslist_order'] == 'service_name') ? $dir : $_SESSION['reslist_dir']) . '">' . $service_word . (($_SESSION['reslist_order'] == 'service_name') ? $order_img : '') . '</a>';
- }
- # Die Pageshandler Zeile
- if (!PRINT_MODUS && $this->sets->Get('reservation_list_pagerows') < $reservations)
- $pages_navigation = '<tr bgcolor="#FFFAF0"><td colspan="16">' . $pages_navigation . '</td></tr>';
- else $pages_navigation = '';
- # Die oberste Zeile
- $res_list = '<table style="border:solid 1px #AAAAAA; margin-top: 2px; " border="0" cellpadding="0" cellspacing="1" bgcolor="#DDDDDD" width="99%">'
- . $pages_navigation
- . '<tr bgcolor="#EEEEEE">'
- . '<td nowrap><span class="text"> ' . $reservation_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $editor_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $object_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $journey_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $departure_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $prepay_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $status_abbr . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $firstname_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $lastname_word . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $adult_abbr . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $kids_abbr . ' </span></td>'
- . '<td nowrap><span class="text"> ' . $service_word . ' </span></td>';
- if (!PRINT_MODUS){
- $res_list .= '<td nowrap><span class="text"> ' . $comment_abbr . ' </span></td>'
- . '<td colspan="3"><span class="text"> ' . $action_word . '</b></a> </span></td>';
- }
- $res_list .= '</tr>';
- # Array mit Service Bezeichnungen
- $services = explode (';', $this->lang->Get('services'));
- # Schleife durchlaufe und die Tabelle erstellen
- while ($this->db->next_record($qid)){
- $ex = explode ('-', $this->db->f('journey', $qid));
- $journey = $ex[2] . '.' . $ex[1] . '.' . $ex[0];
- $ex = explode ('-', $this->db->f('departure', $qid));
- $departure = $ex[2] . '.' . $ex[1] . '.' . $ex[0];
- $bgcolor = ($this->db->f('status', $qid) == 'R') ? 'fffaf0' : 'f5f5f5';
- # Aktionen
- $edit = '<a href="' . $ssn->Url($_SERVER['PHP_SELF'] . '?er=' . $this->db->f('id', $qid))
- . '"><img src="./images/edit.gif" width="11" height="9" alt="Edit this reservation"></a>';
- $convert = '<a href="' . $ssn->Url($_SERVER['PHP_SELF'] . '?cr=' . $this->db->f('id', $qid))
- . '"><img src="./images/convert.gif" width="9" height="11" alt="Convert this reservation"></a>';
- $delete = '<a href="' . $ssn->Url($_SERVER['PHP_SELF'] . '?dr=' . $this->db->f('id', $qid))
- . '" onclick="return confirm(\'This reservation will be deleted.\');">'
- . '<img src="./images/delete.gif" width="11" height="9" alt="Delete this reservation"></a>';
- # Zeile beim Editieren hervorheben
- $indicator = ($_GET['er'] == $this->db->f('id', $qid)) ? 'style="background-color: #FFFFCC; border-top: solid 1px #BB0000; border-bottom: solid 1px #BB0000"' : '';
- $left_indicator = ($_GET['er'] == $this->db->f('id', $qid)) ? 'style="background-color: #FFFFCC; border-left: solid 1px #BB0000; border-top: solid 1px #BB0000; border-bottom: solid 1px #BB0000"' : '';
- $right_indicator = ($_GET['er'] == $this->db->f('id', $qid)) ? 'style="background-color: #FFFFCC; border-right: solid 1px #BB0000; border-top: solid 1px #BB0000; border-bottom: solid 1px #BB0000"' : '';
- # Tooltips
- if (!PRINT_MODUS){
- $eid_tag = '<a href="#" onMouseOver="lp=20;tp=20;showWMTT(\'eid_' . $this->db->f('editor_id', $qid) . '\')"; onMouseOut="hideWMTT()">';
- $oid_tag = '<a href="#" onMouseOver="lp=20;tp=20;showWMTT(\'oid_' . $this->db->f('object_id', $qid) . '\')"; onMouseOut="hideWMTT()">';
- }
- if (!in_array ($this->db->f('editor_id', $qid), (array)$this->tooltips['eid']))
- $this->CreateTooltipEID($this->db->f('editor_id', $qid));
- if (!in_array ($this->db->f('object_id', $qid), (array)$this->tooltips['oid']))
- $this->CreateTooltipOID($this->db->f('object_id', $qid));
- # Kommentar Tooltip
- if ($this->db->f('comment', $qid) != ''){
- $tp = round (strlen ($this->db->f('comment', $qid)) / 3.7);
- if ($tp < 40) $tp = 40;
- $comment = '<a href="#" '
- . 'onMouseOver="lp=-420;tp=-' . $tp . ';showWMTT(\'com_' . $this->db->f('id', $qid) . '\')" onMouseOut="hideWMTT()" '
- . 'onClick="window.open(\'popups/comment.php?id=' . $this->db->f('id', $qid) . '\', \'Comment\', \'width=350,height=200,left=100,top=100,resizable=yes,scrollbars=yes\')"'
- . '>'
- . '<img src="images/reservation_form_comment.gif" width="11" height="9" alt="'
- . $this->lang->Get('comment_abbreviation') . '"></a>';
- $comm = stripslashes (str_replace ("\n", "<br>", $this->db->f('comment', $qid)));
- $this->CreateTooltipCOM($this->db->f('id', $qid), $comm);
- }
- else { $comment = ''; }
- # Editor Name
- $this->editors[$this->db->f('editor_id', $qid)] . " * <br>";
- $editor_name = (isset ($this->editors[$this->db->f('editor_id', $qid)])) ? $this->editors[$this->db->f('editor_id', $qid)] : $this->sets->Get('administrator_login');
- # Object Bezeichnung
- $exists = $this->lang->Exists('obj_name_' . $this->db->f('object_id', $qid));
- $object = (!$exists) ? ('ID: ' . $this->db->f('object_id', $qid)) : $this->lang->Get('obj_name_' . $this->db->f('object_id', $qid));
- # Reservierungsstatus
- $status_img = ($this->db->f('status', $qid) == 'O') ? 'reservation_form_occupied.gif' : 'reservation_form_reserved.gif';
- $status = '<img src="images/' . $status_img . '" width="11" height="9" alt=" ' . $this->db->f('status', $qid) . '">';
- # Service
- $service_out = $services[$this->db->f('service', $qid) - 1];
- # Editor und Objekt
- $editor_name = (PRINT_MODUS) ? $editor_name : ($eid_tag . $editor_name . '</a>');
- $object = (PRINT_MODUS) ? $object : ($oid_tag . $object . '</a>');
- # Buchungssliste
- $res_list .= '<tr ' . ((PRINT_MODUS) ? '' : $this->tab_line) . ' bgcolor="' . ((PRINT_MODUS) ? '#FFFFFF' : ($bgcolor)) . '">'
- . '<td nowrap ' . $left_indicator . '><span class="text"> ' . $this->db->f('id', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $editor_name . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $object . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $journey . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $departure . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $this->db->f('prepay', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $status . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $this->db->f('firstname', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $this->db->f('lastname', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $this->db->f('adult', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $this->db->f('childern', $qid) . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $service_out . ' </span></td>';
- if (!PRINT_MODUS){
- $res_list .= '<td nowrap ' . $indicator . '><span class="text"> ' . $comment . '</a> </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $edit . ' </span></td>'
- . '<td nowrap ' . $indicator . '><span class="text"> ' . $convert . ' </span></td>'
- . '<td nowrap ' . $right_indicator . '><span class="text"> ' . $delete . ' </span></td>';
- }
- $res_list .= '</tr>';
- }
- $res_list .= '</table>';
- }
- # Parse
- $tpl->set_var ('RESERVATION_LIST', $res_list);
- }
- # Löscht eine Buchung
- function DeleteGuest ($id){
- $qid = 'Zibepla::DeleteGuest';
- # Buchung aus der Buchungstabelle löschen
- $sql = "DELETE FROM " . TBL_RESERVATIONS . " WHERE id = '" . $id . "'";
- $this->db->query($sql, $qid);
- # Daten erneut laden
- $this->Load();
- }
- function EditForm ($id){
- $qid = 'Zibepla::EditForm';
- # Buchungsdaten
- $sql = "SELECT * FROM " . TBL_RESERVATIONS . " WHERE id = '" . $id . "'";
- $this->db->query ($sql, $qid);
- if ($this->db->next_record($qid)){
- $journey = $this->db->f('journey', $qid);
- $departure = $this->db->f('departure', $qid);
- $post = ($_SERVER['REQUEST_METHOD'] == 'POST') ? true : false;
- # Post Variable initialisieren
- if (!$post) $_POST['object_id'] = $this->db->f('object_id', $qid);
- if (!$post) $_POST['datatype'] = $this->db->f('status', $qid);
- if (!$post) $_POST['firstname'] = $this->db->f('firstname', $qid);
- if (!$post) $_POST['lastname'] = $this->db->f('lastname', $qid);
- if (!$post) $_POST['adult'] = $this->db->f('adult', $qid);
- if (!$post) $_POST['childern'] = $this->db->f('childern', $qid);
- if (!$post) $_POST['j_yea'] = substr ($journey, 0, 4);
- if (!$post) $_POST['j_mon'] = substr ($journey, 5, 2);
- if (!$post) $_POST['j_day'] = substr ($journey, 8, 2);
- if (!$post) $_POST['d_yea'] = substr ($departure, 0, 4);
- if (!$post) $_POST['d_mon'] = substr ($departure, 5, 2);
- if (!$post) $_POST['d_day'] = substr ($departure, 8, 2);
- if (!$post) $_POST['services'] = $this->db->f('service', $qid);
- if (!$post) $_POST['comment'] = $this->db->f('comment', $qid);
- if (!$post) $_POST['prepay'] = $this->db->f('prepay', $qid);
- # Ein Tag Buchung
- if (!$post && $journey == $departure) $_POST['one_day_reservation'] = true;
- }
- }
- # Überprüft die Daten einer Buchung
- function CheckGuest ($edit_id = false) {
- # Nachname
- if (empty ($_POST['lastname']))
- smError ($this->lang->Get('err_message_reservation_form_word__1'));
- $invalid_period = $invalid_date = $one_day = FALSE;
- # Anreisedatum
- if (!checkdate ($_POST['j_mon'], $_POST['j_day'], $_POST['j_yea'])){
- smError ($this->lang->Get('err_message_reservation_form_word__2'));
- $invalid_date = TRUE;
- }
- # Abreisedatum
- if ((!checkdate ($_POST['d_mon'], $_POST['d_day'], $_POST['d_yea'])) && !isset($_POST['one_day_reservation'])){
- smError ($this->lang->Get('err_message_reservation_form_word__3'));
- $invalid_date = TRUE;
- }
- # Ob Abreise vor Anreise liegt
- if (!$invalid_date && !isset($_POST['one_day_reservation'])) {
- $j_stamp = mktime (0, 0, 0, $_POST['j_mon'], $_POST['j_day'], $_POST['j_yea']);
- $d_stamp = mktime (0, 0, 0, $_POST['d_mon'], $_POST['d_day'], $_POST['d_yea']);
- if ($d_stamp < $j_stamp)
- smError($this->lang->Get('err_message_reservation_form_word__4'));
- }
- # Ob Anreise vor dem Abreisetag liegt
- if (!$invalid_date
- && (isset($_POST['one_day_reservation']) || $this->BeginDate() == $this->EndDate())) {
- $this->CorrectEndDate();
- $one_day = true;
- }
- # Prüfen ob Datumseingabe nicht mit bereits vorhandenen Belegungsperioden in Konflikt ist
- if (!$invalid_date){
- $sql = "SELECT object_id, journey, departure, one_day FROM " . TBL_RESERVATIONS
- . " WHERE '" . $this->BeginDate() . "' <= departure"
- . " AND '" . $this->EndDate() . "' >= journey"
- . " AND object_id = '" . $_POST['object_id'] . "'";
- if ($edit_id)
- $sql .= " AND id != '" . $_POST['edit_id'] . "'";
- $this->db->query($sql, $qid);
- while ($this->db->next_record($qid)) {
- if ($this->db->f('one_day', $qid) == 'Y' || $one_day) {
- $invalid_period = true;
- }
- elseif ($this->BeginDate() != $this->db->f('departure', $qid) && $this->EndDate() != $this->db->f('journey', $qid)){
- $invalid_period = true;
- }
- /* debug
- echo $sql . "<br>";
- echo $this->db->f('object_id', $qid) . "<br>";
- echo 'exists ' . $this->db->f('journey', $qid) . ' - ' . $this->db->f('departure', $qid) . ' # one: ' . $this->db->f('one_day', $qid) . '<br>';
- echo 'new ' . $this->BeginDate() . ' - ' . $this->EndDate() . ' # one: ' . $one_day . '<br>';
- echo 'invalid: ' . $invalid_period . '<br><br>';
- */
- }
- }
- return array ($invalid_date, $invalid_period, $one_day);
- }
- # Fügt einen Gast hin zu
- function AddGuest ($edit_user = false){
- $qid = 'Zibepla::AddGuest';
- # Gastdaten prüfen
- list ($invalid_date, $invalid_period, $one_day) = $this->CheckGuest();
- # Eingegebene An- und Abreisedatum in Daten-Array konvertieren.
- if (!$invalid_date && !$invalid_period && smErrorsEx() < 1){
- # Im Simulationsfall true zurück geben
- if ($this->simulation) return TRUE;
- $od = ($one_day) ? 'Y' : 'N';
- $sql = "INSERT INTO " . TBL_RESERVATIONS . " (object_id, editor_id, prepay, journey, departure, "
- . "one_day, status, firstname, lastname, adult, childern, service, comment) VALUES('"
- . $this->GetID() . "', '" . $this->editor->GetId() . "', '" . (addslashes($_POST['prepay'])) . "', '"
- . $this->BeginDate() . "', '" . $this->EndDate() . "', '" . $od . "', '" . $this->GetEdit() . "', '" . addslashes($_POST['firstname'])
- . "', '" . addslashes($_POST['lastname']) . "', '" . $_POST['adult'] . "', '" . $_POST['childern'] . "', '"
- . $_POST['services'] . "', '" . addslashes($_POST['comment']) . "')";
- $this->db->query($sql, $qid);
- $this->SaveLastEditTime($this->GetID());
- }
- elseif ($invalid_period){
- # Belegungsperioden sind im Konflikt
- smError ($this->lang->Get('err_message_reservation_form_word__5'));
- }
- }
- # Eine Buchung editieren
- function EditGuest() {
- $qid = 'Zibepla::EditGuest';
- global $granted_objects;
- # Object ID der editierten Buchung
- $sql = "SELECT object_id FROM " . TBL_RESERVATIONS . " WHERE id = '" . $_POST['edit_id'] . "'";
- $this->db->query($sql, $qid);
- $this->db->next_record($qid);
- $edit_object = $this->db->f('object_id', $qid);
- $_POST['object_id'] = (int)$_POST['object_id'];
- if (is_array($granted_objects) && (!in_array($edit_object, $granted_objects) || !in_array($_POST['object_id'], $granted_objects)))
- smError ($this->lang->Get('err_message_layout_word__1'));
- # Gastdaten prüfen
- list ($invalid_date, $invalid_period, $one_day) = $this->CheckGuest(true);
- # Eingegebene An- und Abreisedatum in Daten-Array konvertieren.
- if (!$invalid_date && !$invalid_period && smErrorsEx() < 1){
- $od = ($one_day) ? 'Y' : 'N';
- $sql = "UPDATE " . TBL_RESERVATIONS . " SET object_id = '" . $_POST['object_id'] . "',"
- . " editor_id = '" . $this->editor->GetId() . "', prepay = '" . (addslashes($_POST['prepay'])) . "',"
- . " journey = '" . $this->BeginDate() . "', departure = '" . $this->EndDate() . "', "
- . "one_day = '" . $od . "', status = '" . $_POST['datatype'] . "',"
- . " firstname = '" . addslashes($_POST['firstname']) . "', lastname = '" . addslashes($_POST['lastname']) . "',"
- . " adult = '" . $_POST['adult'] . "', childern = '" . $_POST['childern'] . "',"
- . " service = '" . $_POST['services'] . "', comment ='" . addslashes($_POST['comment']) . "'"
- . " WHERE id = '" . $_POST['edit_id'] . "'";
- $this->db->query($sql, $qid);
- $this->SaveLastEditTime($_POST['object_id']);
- }
- elseif ($invalid_period){
- # Belegungsperioden sind im Konflikt
- smError ($this->lang->Get('err_message_reservation_form_word__5'));
- }
- # Editiermodus fortsetzen
- if (smErrorsEx() > 0)
- $_GET['er'] = $_POST['edit_id'];
- }
- # Konvertiert eine Reservierung zu Buchung und umgekehrt
- function ConvertReservation($id){
- $qid = 'Zibepla::ConvertReservation';
- # Buchungsdaten
- $sql = "SELECT * FROM " . TBL_RESERVATIONS . " WHERE id = '" . $id . "'";
- $this->db->query ($sql, $qid);
- if ($this->db->next_record($qid)){
- # Neuer Status für die Tabelle mit Buchungen
- $status = ($this->db->f('status', $qid) == 'O') ? 'R' : 'O';
- $obj_id = $this->db->f('object_id', $qid);
- # Status in der Buchungstabelle ändern
- $sql = "UPDATE " . TBL_RESERVATIONS . " SET status = '" . $status . "' WHERE id = '" . $id . "'";
- $this->db->query($sql, $qid);
- $this->SaveLastEditTime($obj_id);
- # Daten reloaden
- $this->Load();
- }
- }
- # Ermittelt Date-Status (frei, belegt, etc..)
- function DateStatus ($prev_date, $date, $next_date){
- if ($this->GetEdit() == 'O') # $this->edit
- return $this->OccupiedStatus ($prev_date, $date, $next_date);
- else return $this->ReservedStatus ($prev_date, $date, $next_date);
- }
- # Ermittelt Datum-Status für Belegungen
- function OccupiedStatus ($prev_date, $date, $next_date){
- if ($date == $this->BeginDate() && $this->GetStatus ($date) == 'OE') { $date_status = 'O'; }
- elseif ($date == $this->BeginDate()) { $date_status = 'OB'; }
- elseif ($date == $this->EndDate() && $this->GetStatus ($date) == 'OB') { $date_status = 'O'; }
- elseif ($date == $this->EndDate()) { $date_status = 'OE'; }
- elseif (!in_array ($prev_date, $this->new_dates)) { $date_status = 'OB'; }
- elseif (!in_array ($next_date, $this->new_dates)) { $date_status = 'OE'; }
- elseif ($this->status[$date] == 'OE' && $this->status[$next_date] == 'OB') { $date_status = 'OE'; }# OE->OB (OE)
- elseif ($this->status[$prev_date] == 'OE' && $this->status[$date] == 'OB') { $date_status = 'OB'; }# OE->OB (OB)
- elseif ($prev_date == $this->EndDate() && $this->status[$date] == 'OB') { $date_status = 'OB'; }# OE->OB (OB)
- elseif ($this->status[$date] == 'OE') { $date_status = 'OE'; }
- else { $date_status = 'O'; }
- # Return
- return $date_status;
- }
- # Ermittelt Datum-Status für Reservierungen
- function ReservedStatus ($prev_date, $date, $next_date){
- if ($date == $this->BeginDate() && $this->GetStatus ($date) == 'RE') $date_status = 'R';
- elseif ($date == $this->BeginDate()) $date_status = 'RB';
- elseif ($date == $this->EndDate() && $this->GetStatus ($date) == 'RB') $date_status = 'R';
- elseif ($date == $this->EndDate()) $date_status = 'RE';
- elseif (!in_array ($prev_date, $this->new_dates)) $date_status = 'RB';
- elseif (!in_array ($next_date, $this->new_dates)) $date_status = 'RE';
- elseif ($this->status[$date] == 'RE' && $this->status[$next_date] == 'RB') $date_status = 'RE'; # RE->RB (RE)
- elseif ($this->status[$prev_date] == 'RE' && $this->status[$date] == 'RB') $date_status = 'RB'; # RE->RB (RB)
- elseif ($prev_date == $this->EndDate() && $this->status[$date] == 'RB') $date_status = 'RB'; # RE->RB (RB)
- elseif ($this->status[$date] == 'RE') $date_status = 'RE';
- else $date_status = 'R';
- # Return
- return $date_status;
- }
- # Liefert Link zu dem vorherigen Jahr
- function PrevYearLink (){
- global $ssn;
- $prev_year = $this->GetYear() - 1;
- if ($this->GetYear() > date ('Y'))
- $prev_year = '<a href="' . $ssn->Url($_SERVER['PHP_SELF']
- . '?year=' . $prev_year) . '">' . $prev_year . '</a>';
- return $prev_year;
- }
- # Liefert Link zu dem nächsten Jahr
- function NextYearLink (){
- global $ssn;
- $next_year = $this->GetYear() + 1;
- if ($this->GetYear() < 2037)
- $next_year = '<a href="' . $ssn->Url($_SERVER['PHP_SELF']
- . '?year=' . $next_year) . '">' . $next_year . '</a>';
- return $next_year;
- }
- # Reservieren Link
- function ReservedLink (){
- global $ssn;
- $link = ' <a style="text-decoration:none; color:black; font-size:12px" href="'
- . $ssn->Url($_SERVER['PHP_SELF'] . '?mode=reserved_edit') . '">'
- . $this->lang->Get('edit_reserved_word') . '</a> ';
- return $link;
- }
- # Belegungen Button
- function OccupiedLink (){
- global $ssn;
- $link = ' <a style="text-decoration:none; color:black; font-size:12px" href="'
- . $ssn->Url($_SERVER['PHP_SELF'] . '?mode=occupied_edit') . '">'
- . $this->lang->Get('edit_occupied_word') . '</a> ';
- return $link;
- }
- # Link zu dem Buchungsformular
- function ReservationFormLink(){
- global $ssn;
- $link = $ssn->Url('reservation.php');
- $link = ' <a style="text-decoration:none; color:black; font-size:12px" href="#" '
- . ' onclick="window.open(\'' . $link . '\', \'reservation\', '
- . '\'width=850,height=600,left=50,top=50,resizable=yes,scrollbars=yes\'); return false;">'
- . $this->lang->Get('reservation_form_word') . '</a> ';
- # $link = ' <a href="' . $link . '">'
- # . $this->lang->Get('reservation_form_word') . '</a> ';
- return $link;
- }
- # Belegungen Button
- function NewReservationLink (){
- global $ssn;
- $link = ' <a style="text-decoration:none; color:#0000BB; font-size:12px" href="'
- . $ssn->Url($_SERVER['PHP_SELF']) . '">'
- . '<b><u>>> new reservation <<</u></b></a> ';
- # $link = '<table border="0" cellpadding="0" cellspacing="0"><tr>'
- # . '<td nowrap style="border: solid 2px #BB0000;">' . $link . '</td></tr></table>';
- return $link;
- }
- # Speichert die Editierungsdatum
- function SaveLastEditTime ($obj_id){
- $qid = 'Zibepla::SaveLastEditTime';
- $sql = "REPLACE INTO " . TBL_TIMES . " (object_id, last_edit) VALUES(" . $obj_id . ", " . time() . ")";
- $this->db->query($sql, $qid);
- }
- # Erstellt Erwachene-SELECT für Buchungsformular
- function AdultSelect (){
- $sel = '<select id="rf_15" class="reservationFormSelectField" name="adult">';
- for ($i = 1; $i <= $this->sets->Get('adult_max_number'); $i++)
- $sel .= '<option value="' . $i . '" ' . (($i == $_POST['adult']) ? 'selected' : '') . '>' . $i . '</option>';
- return $sel . '</select>';
- }
- # Erstellt Kinder-SELECT für Buchungsformular
- function ChildernSelect (){
- $sel = '<select id="rf_16" class="reservationFormSelectField" name="childern">';
- for ($i = 0; $i <= $this->sets->Get('childern_max_number'); $i++)
- $sel .= '<option value="' . $i . '" ' . ($selected = ($i == $_POST['childern']) ? 'selected' : '') . '>' . $i . '</option>';
- return $sel . '</select>';
- }
- # Fügt ein neues Datum hinzu
- function AddNewDate ($date){
- if (!in_array ($date, $this->new_dates))
- $this->new_dates[] = $date;
- }
- # Erstellt Monatsnavigation (monthly view)
- function MonthNavigation(){
- global $tpl, $ssn;
- # Navigation erstellen
- $navigation = '<table style="margin-bottom:2px" width="99%" bgcolor="#'
- . $this->sets->Get('table_bgcolor', FALSE)
- . '" border="0" cellpadding="0" cellspacing="2"><tr>';
- for ($mon = 1; $mon <= 12; $mon++){
- if ($mon < 10) $mon = '0' . $mon;
- # Link
- $navigation .= '<td bgcolor="#' . $this->sets->Get('months_bg_color', FALSE)
- . '"><div align="center"> <a href="'
- . $ssn->Url($_SERVER['PHP_SELF'] . '?month=' . $mon) . '">'
- . (($_SESSION['month'] == $mon) ? '<b>' : '')
- . $this->lang->Get('month_' . $mon)
- . (($_SESSION['month'] == $mon) ? '</b>' : '')
- . '</a> </div></td>';
- }
- $navigation .= '</tr></table>';
- # In die Template parsen
- $tpl->set_var ('MONTH_NAVIGATION', $navigation);
- }
- # Erstellt ein Tooltip und fügt diesen in die Tooltip Array
- function CreateTooltip ($width, $head = '', $content, $type, $id = 0){
- if ($head == ''){
- $tooltip = '<div id="' . $type . '_' . $id . '" class="tooltip" style="display: none; width: '
- . $width . 'px;">'
- . '<div class="tooltipContent">' . $content . '</div></div>';
- }
- elseif ($type == 'com'){
- # Tooltip mit Head erstellen
- $tooltip = '<div id="' . $type . '_' . $id . '" class="tooltip" style="display: none; width: '
- . $width . 'px; ' . $zindex . '">'
- . '<div class="tooltipHead">' . $head . '</div>'
- . '<div class="tooltipContentCOM">' . $content . '</div></div>';
- }
- else{
- # Tooltip mit Head erstellen
- $tooltip = '<div id="' . $type . '_' . $id . '" class="tooltip" style="display: none; width: '
- . $width . 'px;">'
- . '<div class="tooltipHead">' . $head . '</div>'
- . '<div class="tooltipContent">' . $content . '</div></div>';
- }
- # Tooltip ablegen
- $this->AddTooltip ($tooltip, $type, $id);
- }
- # Erstellt ein Tooltip for einen Editor
- function CreateTooltipEID ($id, $name = ''){
- $qid = 'Zibepla::CreateTooltipEID';
- # Editor Name abfragen
- if ($name == '' && $id != 0){
- $sql = "SELECT login, password FROM " . TBL_EDITORS . " WHERE editor_id = '" . $id . "'";
- $this->db->query($sql, $qid); $this->db->next_record($qid);
- $name = $this->db->f('login', $qid);
- $password = $this->db->f('password', $qid);
- if (empty ($name)) $name = 'Editor non exists';
- }
- # Tooltip erstellen
- if ($id == 0){
- $this->CreateTooltip (150, '', $this->lang->Get('administrator_word'), 'eid', $id);
- }
- else{
- $head = $this->lang->Get('editor_id_word') . ' ' . $id;
- $content = 'Login: ' . $name . (($this->editor->IsAdmin()) ? ('<br>Password: ' . $password) : '');
- $this->CreateTooltip (150, $head, $content, 'eid', $id);
- }
- }
- # Erstellt ein Tooltip für Objekt
- function CreateTooltipOID ($id){
- $qid = 'Zibepla::CreateTooltipOID';
- # Object Name
- $object_name = $this->lang->get('obj_name_' . $id);
- if (empty ($object_name)) $object_name = $this->lang->Get('no_indicated');
- # Gruppen Bezeichnung
- $sql = "SELECT object_group FROM " . TBL_OBJ_SETTINGS . " WHERE object_id = '" . $id . "'";
- $this->db->query ($sql, $qid);
- if ($this->db->next_record($qid))
- $object_group = $this->lang->Get('obj_group_name_' . $this->db->f('object_group', $qid));
- else $object_group = $this->lang->Get('no_indicated');
- # Tooltip erstellen
- $head = $this->lang->Get('object_word') . ' ' . $object_name;
- $content = $this->lang->Get('object_id_word') . ': ' . $id
- . '<br>' . $this->lang->Get('object_group_word') . ': ' . $object_group;
- $this->CreateTooltip (250, $head, $content, 'oid', $id);
- }
- # Erstellt ein Tooltip für Kommentar
- function CreateTooltipCOM ($id, $comment){
- $this->CreateTooltip (400, $this->lang->Get('comment_word'), $comment, 'com', $id);
- }
- # Erstellt ein Tooltip - Hilfe
- function CreateTooltipHelp ($id){
- # Tooltip erstellen
- $head = '';
- $content = '';
- $this->CreateTooltip (400, $this->lang->Get('comment_word'), $comment, 'hlp', $id);
- }
- # Gibt die Tooltips zurück
- function GetTooltips (){
- foreach ($this->tooltips AS $var)
- $tooltips .= implode ('', $var);
- return $tooltips;
- }
- # Ermittelt Object ID anhand von Gast ID
- function GetGuestData($guest_id){
- $qid = 'Zibepla::GetGuestData';
- # Weil statische Funktion
- global $db;
- $sql = "SELECT * FROM " . TBL_RESERVATIONS . " WHERE id = '" . $guest_id . "'";
- $db->query($sql, $qid);
- $db->next_record($qid);
- return array (
- 'object_id' => $db->f('object_id', $qid),
- 'status' => $db->f('status', $qid),
- );
- }
- # Erstellt ein Link zur Druckversion
- function CreatePrintLink ($mode, &$ssn){
- return '<a href="#" onclick="window.open (\'' . $ssn->Url('print.php?mode=' . $mode)
- . '\', \'Print\', \'width=850,height=600,left=100,top=100,resizable=yes,scrollbars=yes,menubar=yes\')">'
- . '<img src="images/print_' . $mode . '.gif" width="30" height="14" hspace="3"></a>';
- }
- # Erstellt eine Seitenblätternavigation für Buchungsliste
- function PagesHandler ($file, $get, $rowsPerPage, $numRows, $currentPage){
- global $ssn;
- # Variablen
- $tr = '.';
- if (empty ($currentPage)) $currentPage = 1;
- # Back
- if ($rowsPerPage == 0) #
- smError('Zibepla::PagesHandler - Division by zero.');
- else $numPages = ceil($numRows / $rowsPerPage);
- if($currentPage > 1){
- $back = $currentPage - 1;
- # if ($back > 1)
- $pages = "<a class=\"PagesHandlerLink\" href=\"".$ssn->Url($file."?page=1".((!empty($get)) ? "&".$get : ""))."\"><<</a> <a class=\"PagesHandlerLink\" href=\"".$file."?page=".$back.((!empty($get)) ? "&".$get : "")."\">" . $this->lang->Get('back_word') . "</a> <font FACE=\"Symbol\">·</font> ";
- # else $pages = "<a class=\"PagesHandlerLink\" href=\"".$file.((!empty($get)) ? "?page=1&".$get : "")."\"><<</a> <a class=\"PagesHandlerLink\" href=\"".$file."?page=1".((!empty($get)) ? "?".$get : "")."\">Zurück</a> <font FACE=\"Symbol\">·</font> ";
- }
- # Pages
- $bSub = ($numPages - $currentPage < 5) ? 10 -($numPages - $currentPage) : 5;
- $eSub = (10 - $currentPage > 5) ? 10 - $currentPage : 5;
- $begin = ($currentPage - $bSub < 1) ? 1 : $currentPage - $bSub;
- $end = ($currentPage + $eSub > $numPages) ? $numPages : ($currentPage + $eSub);
- for($i = $begin; $i <= $end; $i++){
- if ($i == $end) $pages .= ($i != $currentPage) ? " <a class=\"PagesHandlerLink\" href=\"".$ssn->Url ($file."?page=".$i.((!empty($get)) ? "&".$get : ""))."\">$i</a> " : " <font FACE=\"Symbol\">·</font> [$i/$numPages]";
- elseif ($i > 1) $pages .= ($i != $currentPage) ? " <a class=\"PagesHandlerLink\" href=\"".$ssn->Url ($file."?page=".$i.((!empty($get)) ? "&".$get : ""))."\">$i</a> " : " <font FACE=\"Symbol\">·</font> [$i/$numPages] <font FACE=\"Symbol\">·</font> ";
- else $pages .= ($i != $currentPage) ? " <a class=\"PagesHandlerLink\" href=\"".$ssn->Url ($file."?page=".$i.((!empty($get)) ? "&".$get : ""))."\">$i</a> " : "[$i/$numPages] <font FACE=\"Symbol\">·</font> ";
- if ($i < $end && $i != $currentPage && $i != $currentPage - 1) $pages .= ' <font FACE=\"Symbol\">·</font> ';
- }
- # Next
- if($numPages > $currentPage) {
- $next = $currentPage + 1;
- $pages .= " <font FACE=\"Symbol\">·</font> <a class=\"PagesHandlerLink\" href=\"".$ssn->Url ($file."?page=".$next.((!empty($get)) ? "&".$get : ""))."\">" . $this->lang->Get('next_word') . "</a> <a class=\"PagesHandlerLink\" href=\"".$file."?page=".$numPages.((!empty($get)) ? "&".$get : "")."\">>></a>";
- }
- # Table
- $pages = "<div class=\"PagesHandlerField\">".$pages."</div>";
- # Return
- return $pages;
- }
- # Anfangs- und Enddatum bei der Buchung
- function BeginDate (){ return $_POST['j_yea'] . '-' . ((strlen ($_POST['j_mon']) == 1) ? '0' . $_POST['j_mon'] : $_POST['j_mon']) . '-' . ((strlen ($_POST['j_day']) == 1) ? '0' . $_POST['j_day'] : $_POST['j_day']); }
- function EndDate (){ return $_POST['d_yea'] . '-' . ((strlen ($_POST['d_mon']) == 1) ? '0' . $_POST['d_mon'] : $_POST['d_mon']) . '-' . ((strlen ($_POST['d_day']) == 1) ? '0' . $_POST['d_day'] : $_POST['d_day']); }
- function CorrectEndDate () { if (!isset($_POST['d_yea'])) { $_POST['d_yea'] = $_POST['j_yea']; $_POST['d_mon'] = $_POST['j_mon']; $_POST['d_day'] = $_POST['j_day']; }}
- # Sonstige Funktionen
- function AddTooltip ($tooltip, $form, $id) { $this->tooltips[$form][$id] = $tooltip . "\n"; } # Tooltip hinzufügen
- function GetLastEdit (){ return $this->last_edit; } # Letzte Änderung
- function GetTable (){ return $this->table; } # Die Plan-Tabelle
- function GetYear (){ return $this->year; } # Das Jahr
- function GetID (){ return $this->obj_id; } # Die ID
- function GetDates() { return $this->dates; } # Die Daten
- function GetStatus($date) { return $this->status[$date]; } # Status
- function GetEdit () { return $this->edit; } # Edit
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement