示例#1
0
function getMonth($tracking_start_date = '')
{
    if (empty($tracking_start_date)) {
        $tracking_start_date = strftime('%d-%m-%Y', time());
    }
    $startdate = convertdate($tracking_start_date);
    $datetemp = getdate($startdate);
    $diff = ($datetemp['mday'] - 1) * $GLOBALS['oneday'];
    $startdate = $startdate - $diff;
    $enddate = $startdate + daysInMonth($datetemp['mon'], $datetemp['year']) * $GLOBALS['oneday'];
    return array('startdate' => $startdate, 'enddate' => $enddate);
}
 /** get the content of the list view as HTML
  * this method returns the content in HTML-Code
  *
  * @return string $this->_list as HMTL
  *
  * @author CommSy Development Group
  */
 function _getWeekContentAsHTMLWithJavaScript()
 {
     $week_start = $this->_week_start;
     $today = '';
     $html = '';
     $month_array = array($this->_translator->getMessage('DATES_JANUARY_SHORT'), $this->_translator->getMessage('DATES_FEBRUARY_SHORT'), $this->_translator->getMessage('DATES_MARCH_SHORT'), $this->_translator->getMessage('DATES_APRIL_SHORT'), $this->_translator->getMessage('DATES_MAY_SHORT'), $this->_translator->getMessage('DATES_JUNE_SHORT'), $this->_translator->getMessage('DATES_JULY_SHORT'), $this->_translator->getMessage('DATES_AUGUST_SHORT'), $this->_translator->getMessage('DATES_SEPTEMBER_SHORT'), $this->_translator->getMessage('DATES_OCTOBER_SHORT'), $this->_translator->getMessage('DATES_NOVEMBER_SHORT'), $this->_translator->getMessage('DATES_DECEMBER_SHORT'));
     //get Dates in month
     $current_date = $this->_list->getFirst();
     $finish = false;
     $date_array = array();
     $date_tooltip_array = array();
     while ($current_date) {
         $start_date_month = '';
         $start_date_day = '';
         $start_date_year = '';
         $end_date_month = '';
         $end_date_day = '';
         $end_date_year = '';
         $start_date_time = '';
         $start_end_time = '';
         $start_date_array = convertDateFromInput($current_date->getStartingDay(), $this->_environment->getSelectedLanguage());
         if ($start_date_array['conforms'] == true) {
             $start_date_array = getDateFromString($start_date_array['timestamp']);
             $start_date_month = $start_date_array['month'];
             $start_date_day = $start_date_array['day'];
             $start_date_year = $start_date_array['year'];
         }
         $start_time_array = convertTimeFromInput($current_date->getStartingTime(), $this->_environment->getSelectedLanguage());
         $end_date_array = convertDateFromInput($current_date->getEndingDay(), $this->_environment->getSelectedLanguage());
         if ($end_date_array['conforms'] == true) {
             $end_date_array = getDateFromString($end_date_array['timestamp']);
             $end_date_month = $end_date_array['month'];
             $end_date_day = $end_date_array['day'];
             $end_date_year = $end_date_array['year'];
         }
         $end_time_array = convertTimeFromInput($current_date->getEndingTime(), $this->_environment->getSelectedLanguage());
         if ($start_date_day != '') {
             $date_array[$start_date_array['day'] . $start_date_array['month'] . $start_date_array['year']][] = $current_date;
             $date_tooltip_array[$current_date->getItemID()] = $this->getTooltipDate($current_date);
             $start_day = mb_substr($current_date->getStartingDay(), 8, 2);
             $start_month = $start_date_array['month'];
             $start_year = mb_substr($current_date->getStartingDay(), 0, 4);
             $first_char = mb_substr($start_day, 0, 1);
             if ($first_char == '0') {
                 $start_day = mb_substr($start_day, 1, 2);
             }
             $first_char = mb_substr($start_month, 0, 1);
             if ($first_char == '0') {
                 $start_month = mb_substr($start_month, 1, 2);
             }
             $end_day = mb_substr($current_date->getEndingDay(), 8, 2);
             $first_char = mb_substr($end_day, 0, 1);
             if ($first_char == '0') {
                 $end_day = mb_substr($end_day, 1, 2);
             }
             $end_month = mb_substr($current_date->getEndingDay(), 5, 2);
             $first_char = mb_substr($end_month, 0, 1);
             if ($first_char == '0') {
                 $end_month = mb_substr($end_month, 1, 2);
             }
             $end_year = mb_substr($current_date->getEndingDay(), 0, 4);
             $first_char = mb_substr($end_year, 0, 1);
             if ($first_char == '0') {
                 $end_year = mb_substr($end_year, 1, 2);
             }
             if (is_numeric($start_day) and is_numeric($end_day) and is_numeric($start_month) and is_numeric($end_month) and is_numeric($start_year) and is_numeric($end_year)) {
                 if ($start_day != $end_day and !empty($end_day) and $start_month != $end_month and !empty($end_month) or $start_day == $end_day and !empty($end_day) and $start_month != $end_month and !empty($end_month) or $start_day != $end_day and !empty($end_day) and $start_month == $end_month and !empty($end_month) or $start_year < $end_year and !empty($end_year)) {
                     while ($start_day != $end_day and $start_month != $end_month or $start_day == $end_day and $start_month != $end_month or $start_day != $end_day and $start_month == $end_month or $start_year < $end_year) {
                         $temp_date = clone $current_date;
                         if ($current_date->getStartingTime()) {
                             $temp_date->setStartingTime('00:00:00');
                         }
                         $temp_starting_day = $temp_date->getStartingDay();
                         $days = daysInMonth($start_month, $start_year);
                         $start_day++;
                         if ($start_day > $days) {
                             $start_day = 1;
                             $start_month++;
                             if ($start_month > 12) {
                                 $start_month = 1;
                                 $start_year++;
                             }
                         }
                         $temp_start_day = $start_day;
                         if (mb_strlen($temp_start_day) == 1) {
                             $temp_start_day = '0' . $temp_start_day;
                         }
                         $temp_start_month = $start_month;
                         if (mb_strlen($temp_start_month) == 1) {
                             $temp_start_month = '0' . $temp_start_month;
                         }
                         $temp_starting_day = $start_year . '-' . $temp_start_month . '-' . $temp_start_day;
                         $temp_date->setShownStartingDay($current_date->getStartingDay());
                         $temp_date->setShownStartingTime($current_date->getStartingTime());
                         $temp_date->setStartingDay($temp_starting_day);
                         $date_array[$temp_start_day . $temp_start_month . $start_year][] = $temp_date;
                         unset($temp_date);
                     }
                 }
             }
         }
         $current_date = $this->_list->getNext();
     }
     //Create the html part of the calendar
     //title row with weekdays
     $html .= '<div id="calender_frame" style="width:100%; background-color:#ffffff; border:1px solid black; padding:0px;">' . LF;
     $html .= '<div id="calender_dates" style="width:100%; clear:both;">' . LF;
     $html .= '<div class="calendar_time_head" id="calendar_time"><div class="data_date">&nbsp;</div></div>' . LF;
     $display_date_array = array();
     for ($i = 1; $i < 8; $i++) {
         $startday = date("d", $week_start);
         $startmonth = date("m", $week_start);
         $startyear = date("Y", $week_start);
         if ($startday . $startmonth . $startyear == date("dmY")) {
             $today = $startday . $startmonth . $startyear;
         }
         $startarraymonth = $startmonth;
         $startmonth = $month_array[$startmonth - 1];
         $first_char = mb_substr($startday, 0, 1);
         if ($first_char == '0') {
             $display_startday = mb_substr($startday, 1, 2);
         } else {
             $display_startday = $startday;
         }
         if (isset($date_array[$startday . $startarraymonth . $startyear])) {
             $display_date_array[$i] = $date_array[$startday . $startarraymonth . $startyear];
         }
         switch ($i) {
             case 1:
                 $text = 'COMMON_DATE_WEEKVIEW_MONDAY';
                 break;
             case 2:
                 $text = 'COMMON_DATE_WEEKVIEW_TUESDAY';
                 break;
             case 3:
                 $text = 'COMMON_DATE_WEEKVIEW_WEDNESDAY';
                 break;
             case 4:
                 $text = 'COMMON_DATE_WEEKVIEW_THURSDAY';
                 break;
             case 5:
                 $text = 'COMMON_DATE_WEEKVIEW_FRIDAY';
                 break;
             case 6:
                 $text = 'COMMON_DATE_WEEKVIEW_SATURDAY';
                 break;
             case 7:
                 $text = 'COMMON_DATE_WEEKVIEW_SUNDAY';
                 break;
         }
         $html .= '<div class="calendar_entry_head" id="calendar_head_' . ($i - 1) . '_' . date("dmY", $week_start) . '"><div class="data_date">' . LF;
         switch ($text) {
             case 'COMMON_DATE_WEEKVIEW_MONDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_MONDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_TUESDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_TUESDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_WEDNESDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_WEDNESDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_THURSDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_THURSDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_FRIDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_FRIDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_SATURDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_SATURDAY', $display_startday, $startmonth);
                 break;
             case 'COMMON_DATE_WEEKVIEW_SUNDAY':
                 $html .= $this->_translator->getMessage('COMMON_DATE_WEEKVIEW_SUNDAY', $display_startday, $startmonth);
                 break;
             default:
                 break;
         }
         $html .= '</div></div>' . LF;
         $week_start = $week_start + 3600 * 24;
     }
     #$html .= '<div style="width:12px; float:left;">&nbsp;</div>'.LF;
     $session = $this->_environment->getSession();
     $width = '100%';
     $html .= '</div>' . LF;
     $html .= '<div id="calender_days" style="width:100%; clear:both; border-top:1px solid black;">' . LF;
     $html .= '<div class="calendar_time_day" id="calendar_time"><div class="data_day">&nbsp;</div></div>' . LF;
     for ($index = 0; $index < 7; $index++) {
         $week_start = $this->_week_start + 3600 * 24 * $index;
         $startday = date("d", $week_start);
         $first_char = mb_substr($startday, 0, 1);
         if ($first_char == '0') {
             $startday = mb_substr($startday, 1, 2);
         }
         $startmonth = date("Ymd", $week_start);
         $first_char = mb_substr($startmonth, 0, 1);
         if ($first_char == '0') {
             $startmonth = mb_substr($startmonth, 1, 2);
         }
         $startyear = date("Y", $week_start);
         $params = array();
         $params['iid'] = 'NEW';
         $params['day'] = $startday;
         $parameter_array = $this->_environment->getCurrentParameterArray();
         $params['month'] = $startmonth;
         $params['year'] = $startyear;
         $params['week'] = $this->_week_start;
         $params['presentation_mode'] = '1';
         $params['time'] = 0;
         $params['modus_from'] = 'calendar';
         $anAction = '';
         if ($i == 0) {
             $image = '<img style="width:' . $width . '; height:1em;" src="images/spacer.gif" alt="" border="0"/>';
         } else {
             $image = '<img style="width:' . $width . '; height:2.2em;" src="images/spacer.gif" alt="" border="0"/>';
         }
         if ($this->_with_modifying_actions) {
             $anAction = ahref_curl($this->_environment->getCurrentContextID(), CS_DATE_TYPE, 'edit', $params, $image);
         }
         $html .= '<div class="calendar_entry_day" id="calendar_entry_' . $index . '"><div class="data_day" id="calendar_entry_date_div_' . $index . '">' . $anAction . '</div></div>' . LF;
     }
     #$html .= '<div style="width:11px; float:left;">&nbsp;</div>'.LF;
     $html .= '</div>' . LF;
     $html .= '<div id="calender_main" style="height:450px; overflow:none; clear:both;">' . LF;
     $current_element = 0;
     $html_javascript = '<script type="text/javascript"><!--' . LF;
     $html_javascript .= 'var new_dates = new Array(' . LF;
     for ($index = 0; $index < 24; $index++) {
         $html .= '<div class="calendar_time" id="calendar_time_' . $index . '"><div class="data">' . $index . '</div></div>' . LF;
         for ($index_day = 0; $index_day < 7; $index_day++) {
             $week_start = $this->_week_start + 3600 * 24 * $index_day;
             $startday = date("d", $week_start);
             $first_char = mb_substr($startday, 0, 1);
             if ($first_char == '0') {
                 $startday = mb_substr($startday, 1, 2);
             }
             $startmonth = date("Ymd", $week_start);
             $first_char = mb_substr($startmonth, 0, 1);
             if ($first_char == '0') {
                 $startmonth = mb_substr($startmonth, 1, 2);
             }
             $startyear = date("Y", $week_start);
             $params = array();
             $params['iid'] = 'NEW';
             $params['day'] = $startday;
             $parameter_array = $this->_environment->getCurrentParameterArray();
             $params['month'] = $startmonth;
             $params['year'] = $startyear;
             $params['week'] = $this->_week_start;
             $params['presentation_mode'] = '1';
             if ($i != 0) {
                 $params['time'] = $index;
             } else {
                 $params['time'] = 0;
             }
             $params['modus_from'] = 'calendar';
             $anAction = '';
             if ($i == 0) {
                 $image = '<img style="width:' . $width . '; height:1em;" src="images/spacer.gif" alt="" border="0"/>';
             } else {
                 $image = '<img style="width:' . $width . '; height:2.2em;" src="images/spacer.gif" alt="" border="0"/>';
             }
             if ($this->_with_modifying_actions) {
                 $anAction = ahref_curl($this->_environment->getCurrentContextID(), CS_DATE_TYPE, 'edit', $params, $image);
             }
             #$html .= '<div class="calendar_entry" id="calendar_entry_' . $index . '"><div class="data" id="calendar_entry_date_div_' . $index . '_' . $index_day . '">' . $anAction . '</div></div>'.LF;
             if ($index < 8 or $index > 15) {
                 $html .= '<div class="calendar_entry" id="calendar_entry_' . $index . '_' . $index_day . '"><div class="data" id="calendar_entry_date_div_' . $index . '_' . $index_day . '"></div></div>' . LF;
             } else {
                 $html .= '<div class="calendar_entry_work" id="calendar_entry_' . $index . '_' . $index_day . '"><div class="data" id="calendar_entry_date_div_' . $index . '_' . $index_day . '"></div></div>' . LF;
             }
             $html_javascript .= 'new Array(\'#calendar_entry_date_div_' . $index . '_' . $index_day . '\',\'<div name="calendar_new_date" id="calendar_entry_background_div_' . $index . '_' . $index_day . '" style="position:absolute; top: 0px; left: 0px; height: 100%; width: 100%; z-index:900;"><div style="width:100%; text-align:left;">' . $anAction . '</div></div>\')';
             if ($current_element < 24 * 7 - 1) {
                 $html_javascript .= ',' . LF;
             } else {
                 $html_javascript .= LF;
             }
             $current_element++;
         }
     }
     $html_javascript .= ');' . LF;
     $html_javascript .= '--></script>' . LF;
     $html .= $html_javascript;
     $html .= '</div>' . LF;
     $html .= '<div class="calendar_footer">&nbsp;' . $this->_translator->getMessage('DATES_WEEK_TIPP_FOR_ENTRIES') . '</div>';
     $html .= '</div>' . LF;
     $date_array_for_jQuery = array();
     $date_array_for_jQuery_temp = array();
     $date_array_for_jQuery_php = array();
     $date_index = 0;
     $tooltips = array();
     $tooltip_date = '';
     $tooltip_last_id = '';
     for ($day = 1; $day < 9; $day++) {
         $day_entries = $day - 1;
         $left_position = 0;
         if (isset($display_date_array[$day_entries])) {
             #$overlap_array = $this->overlap_display_date_array($display_date_array[$day_entries]);
             #pr($overlap_array);
             #$sort_array = array();
             foreach ($display_date_array[$day_entries] as $date) {
                 $is_date_for_whole_day = false;
                 $start_hour = mb_substr($date->getStartingTime(), 0, 2);
                 if (mb_substr($start_hour, 0, 1) == '0') {
                     $start_hour = mb_substr($start_hour, 1, 1);
                 }
                 $start_minutes = mb_substr($date->getStartingTime(), 3, 2);
                 if (mb_substr($start_minutes, 0, 1) == '0') {
                     $start_minutes = mb_substr($start_minutes, 1, 1);
                 }
                 if ($date->getStartingDay() != $date->getEndingDay() and $date->getEndingDay() != '') {
                     if ($date->getEndingTime() != '') {
                         $end_hour = 23;
                         $end_minutes = 60;
                     } else {
                         $end_hour = 0;
                         $end_minutes = 0;
                         $is_date_for_whole_day = true;
                     }
                 } else {
                     if ($date->getEndingTime() != '') {
                         $end_hour = mb_substr($date->getEndingTime(), 0, 2);
                         $end_minutes = mb_substr($date->getEndingTime(), 3, 2);
                     } elseif ($date->getStartingTime() != '' and $date->getEndingTime() == '') {
                         $end_hour = $start_hour + 1;
                         $end_minutes = $start_minutes;
                     } else {
                         $end_hour = $start_hour;
                         $end_minutes = $start_minutes;
                     }
                 }
                 if (mb_substr($end_hour, 0, 1) == '0') {
                     $end_hour = mb_substr($end_hour, 1, 1);
                 }
                 if (mb_substr($end_minutes, 0, 1) == '0') {
                     $end_minutes = mb_substr($end_minutes, 1, 1);
                 }
                 // umrechnen in Minuten, für jede viertelstunde 10 px drauf nach vier noch einen pixel drauf
                 $start_minutes = $start_hour * 60 + $start_minutes;
                 $end_minutes = $end_hour * 60 + $end_minutes;
                 $start_quaters = mb_substr($start_minutes / 15, 0, 2);
                 $start_quaters_addon = mb_substr($start_quaters / 4, 0, 2);
                 $end_quaters = mb_substr($end_minutes / 15, 0, 2);
                 $end_quaters_addon = mb_substr($end_quaters / 4, 0, 2);
                 if ($start_quaters == 0 and $end_quaters == 0) {
                     $is_date_for_whole_day = true;
                 }
                 $top = $start_quaters * 10;
                 $left = 19 + 129 * ($day_entries - 1) + $left_position;
                 $width = 129 / count($display_date_array[$day_entries]) - 4;
                 $height = ($end_quaters - $start_quaters) * 10;
                 if ($date->getColor() != '') {
                     $color = $date->getColor();
                 } else {
                     $color = '#FFFF66';
                 }
                 $color_border = '#CCCCCC';
                 $link = $this->_getDateItemLinkWithJavascript($date, $date->getTitle());
                 // split() is deprecated as of PHP 5.3.x - use explode() instead!
                 //$link_array = split('"', $link);
                 $link_array = explode('"', $link);
                 $href = $link_array[1];
                 $overlap = 1;
                 if (!$is_date_for_whole_day) {
                     $display_date = $date;
                     foreach ($display_date_array[$day_entries] as $display_date_compare) {
                         $compare_is_date_for_whole_day = false;
                         if ($display_date_compare->getStartingDay() != $display_date_compare->getEndingDay() and $display_date_compare->getEndingDay() != '') {
                             $compare_is_date_for_whole_day = true;
                         }
                         if (!$compare_is_date_for_whole_day and $display_date->getItemID() != $display_date_compare->getItemID()) {
                             if ($this->overlap($display_date, $display_date_compare)) {
                                 $overlap++;
                             }
                         }
                     }
                 }
                 $date_array_for_jQuery[] = 'new Array(' . $day_entries . ',\'' . $link . '\',' . $start_quaters . ',' . $end_quaters . ',' . count($display_date_array[$day_entries]) . ',\'' . $color . '\'' . ',\'' . $color_border . '\'' . ',\'' . $href . '\'' . ',\'sticky_' . $date_index . '\'' . ',\'' . $is_date_for_whole_day . '\')';
                 $date_array_for_jQuery_php[] = array($day_entries, $link, $start_quaters, $end_quaters, count($display_date_array[$day_entries]), $color, $color_border, $href, 'sticky_' . $date_index, $is_date_for_whole_day);
                 #$date_array_for_jQuery_temp[] = 'new Array(' . $day_entries . ',\'' . $link . '\',' . $start_quaters . ',' . $end_quaters . ',' . $overlap_array[$date->getItemID()] . ',\'' . $color . '\'' . ',\'' . $color_border . '\'' . ',\'' . $href . '\'' . ',\'sticky_' . $date_index . '\'' . ',\'' . $is_date_for_whole_day . '\')';
                 $tooltip = array();
                 $tooltip['title'] = $date->getTitle();
                 //               if($date->getItemID() != $tooltip_last_id){
                 //                  $tooltip_last_id = $date->getItemID();
                 //                  // set up style of days and times
                 //                  $parse_time_start = convertTimeFromInput($date->getStartingTime());
                 //                  $conforms = $parse_time_start['conforms'];
                 //                  if ($conforms == TRUE) {
                 //                     $start_time_print = getTimeLanguage($parse_time_start['datetime']);
                 //                  } else {
                 //                     $start_time_print = $this->_text_as_html_short($this->_compareWithSearchText($date->getStartingTime()));
                 //                  }
                 //
                 //                  $parse_time_end = convertTimeFromInput($date->getEndingTime());
                 //                  $conforms = $parse_time_end['conforms'];
                 //                  if ($conforms == TRUE) {
                 //                     $end_time_print = getTimeLanguage($parse_time_end['datetime']);
                 //                  } else {
                 //                     $end_time_print = $this->_text_as_html_short($this->_compareWithSearchText($date->getEndingTime()));
                 //                  }
                 //
                 //                  $parse_day_start = convertDateFromInput($date->getStartingDay(),$this->_environment->getSelectedLanguage());
                 //                  $conforms = $parse_day_start['conforms'];
                 //                  if ($conforms == TRUE) {
                 //                    $start_day_print = $date->getStartingDayName().', '.$this->_translator->getDateInLang($parse_day_start['datetime']);
                 //                  } else {
                 //                     $start_day_print = $this->_text_as_html_short($this->_compareWithSearchText($date->getStartingDay()));
                 //                  }
                 //
                 //                  $parse_day_end = convertDateFromInput($date->getEndingDay(),$this->_environment->getSelectedLanguage());
                 //                  $conforms = $parse_day_end['conforms'];
                 //                  if ($conforms == TRUE) {
                 //                     $end_day_print =$date->getEndingDayName().', '.$this->_translator->getDateInLang($parse_day_end['datetime']);
                 //                  } else {
                 //                     $end_day_print =$this->_text_as_html_short($this->_compareWithSearchText($date->getEndingDay()));
                 //                  }
                 //                  //formating dates and times for displaying
                 //                  $date_print ="";
                 //                  $time_print ="";
                 //
                 //                  if ($end_day_print != "") { //with ending day
                 //                     $date_print = $this->_translator->getMessage('DATES_AS_OF').' '.$start_day_print.' '.$this->_translator->getMessage('DATES_TILL').' '.$end_day_print;
                 //                     if ($parse_day_start['conforms']
                 //                         and $parse_day_end['conforms']) { //start and end are dates, not strings
                 //                       $date_print .= ' ('.getDifference($parse_day_start['timestamp'], $parse_day_end['timestamp']).' '.$this->_translator->getMessage('DATES_DAYS').')';
                 //                     }
                 //
                 //                     if ($start_time_print != "" and $end_time_print =="") { //starting time given
                 //                        $time_print = $this->_translator->getMessage('DATES_AS_OF_LOWER').' '.$start_time_print;
                 //                         if ($parse_time_start['conforms'] == true) {
                 //                           $time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                     } elseif ($start_time_print == "" and $end_time_print !="") { //endtime given
                 //                        $time_print = $this->_translator->getMessage('DATES_TILL').' '.$end_time_print;
                 //                        if ($parse_time_end['conforms'] == true) {
                 //                           $time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                     } elseif ($start_time_print != "" and $end_time_print !="") { //all times given
                 //                        if ($parse_time_end['conforms'] == true) {
                 //                           $end_time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                        if ($parse_time_start['conforms'] == true) {
                 //                           $start_time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                        $date_print = $this->_translator->getMessage('DATES_AS_OF').' '.$start_day_print.', '.$start_time_print.'<br />'.
                 //                                      $this->_translator->getMessage('DATES_TILL').' '.$end_day_print.', '.$end_time_print;
                 //                        if ($parse_day_start['conforms']
                 //                            and $parse_day_end['conforms']) {
                 //                           $date_print .= ' ('.getDifference($parse_day_start['timestamp'], $parse_day_end['timestamp']).' '.$this->_translator->getMessage('DATES_DAYS').')';
                 //                        }
                 //                     }
                 //
                 //                  } else { //without ending day
                 //                     $date_print = $this->_translator->getMessage('DATES_ON_DAY').' '.$start_day_print;
                 //                     if ($start_time_print != "" and $end_time_print =="") { //starting time given
                 //                         $time_print = $this->_translator->getMessage('DATES_AS_OF_LOWER').' '.$start_time_print;
                 //                         if ($parse_time_start['conforms'] == true) {
                 //                           $time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                     } elseif ($start_time_print == "" and $end_time_print !="") { //endtime given
                 //                        $time_print = $this->_translator->getMessage('DATES_TILL').' '.$end_time_print;
                 //                        if ($parse_time_end['conforms'] == true) {
                 //                           $time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                     } elseif ($start_time_print != "" and $end_time_print !="") { //all times given
                 //                        if ($parse_time_end['conforms'] == true) {
                 //                           $end_time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                        if ($parse_time_start['conforms'] == true) {
                 //                           $start_time_print .= ' '.$this->_translator->getMessage('DATES_OCLOCK');
                 //                        }
                 //                        $time_print = $this->_translator->getMessage('DATES_FROM_TIME_LOWER').' '.$start_time_print.' '.$this->_translator->getMessage('DATES_TILL').' '.$end_time_print;
                 //                     }
                 //                  }
                 //
                 //                  if ($parse_day_start['timestamp'] == $parse_day_end['timestamp'] and $parse_day_start['conforms'] and $parse_day_end['conforms']) {
                 //                     $date_print = $this->_translator->getMessage('DATES_ON_DAY').' '.$start_day_print;
                 //                     if ($start_time_print != "" and $end_time_print =="") { //starting time given
                 //                         $time_print = $this->_translator->getMessage('DATES_AS_OF_LOWER').' '.$start_time_print;
                 //                     } elseif ($start_time_print == "" and $end_time_print !="") { //endtime given
                 //                        $time_print = $this->_translator->getMessage('DATES_TILL').' '.$end_time_print;
                 //                     } elseif ($start_time_print != "" and $end_time_print !="") { //all times given
                 //                        $time_print = $this->_translator->getMessage('DATES_FROM_TIME_LOWER').' '.$start_time_print.' '.$this->_translator->getMessage('DATES_TILL').' '.$end_time_print;
                 //                     }
                 //                  }
                 //
                 //                  // Date and time
                 //                  $temp_array = array();
                 //                  $temp_array[] = $this->_translator->getMessage('DATES_DATETIME');
                 //                  if ($time_print != '') {
                 //                     $temp_array[] = $date_print.BRLF.$time_print;
                 //                  } else {
                 //                     $temp_array[] = $date_print;
                 //                  }
                 //                  $tooltip_date = $temp_array;
                 //               }
                 #$tooltip['date'] = $tooltip_date;
                 $tooltip['date'] = $date_tooltip_array[$date->getItemID()];
                 $tooltip['place'] = $date->getPlace();
                 $tooltip['participants'] = $date->getParticipantsItemList();
                 #$tooltip['desc'] = $date->getDescription();
                 $tooltip['color'] = $color;
                 $tooltips['sticky_' . $date_index] = $tooltip;
                 $date_index++;
                 $left_position = $left_position + $width + 4;
             }
         }
     }
     $html .= '<div id="mystickytooltip" class="stickytooltip"><div style="border:1px solid #cccccc;">';
     foreach ($tooltips as $id => $tooltip) {
         $html .= '<div id="' . $id . '" class="atip" style="padding:5px; border:2px solid ' . $tooltip['color'] . '">' . LF;
         $html .= '<table>' . LF;
         $html .= '<tr><td colspan="2"><b>' . encode(AS_HTML_SHORT, $tooltip['title']) . '</b></td></tr>' . LF;
         $html .= '<tr><td style="vertical-align:top;"><b>' . $this->_translator->getMessage('DATES_DATETIME') . ':</b></td><td>' . $tooltip['date'][1] . '</td></tr>' . LF;
         if ($tooltip['place'] != '') {
             $html .= '<tr><td style="vertical-align:top;"><b>' . $this->_translator->getMessage('DATES_PLACE') . ':</b></td><td>' . encode(AS_HTML_SHORT, $tooltip['place']) . '</td></tr>' . LF;
         }
         $html .= '<tr><td style="vertical-align:top;"><b>' . $this->_translator->getMessage('DATE_PARTICIPANTS') . ':</b></td><td>' . LF;
         if ($tooltip['participants']->isEmpty()) {
             $html .= $this->_translator->getMessage('TODO_NO_PROCESSOR');
         } else {
             $participant = $tooltip['participants']->getFirst();
             $count = $tooltip['participants']->getCount();
             $counter = 1;
             while ($participant) {
                 $html .= $participant->getFullName();
                 if ($counter < $count) {
                     $html .= ', ';
                 }
                 $participant = $tooltip['participants']->getNext();
                 $counter++;
             }
         }
         $html .= '</td></tr>' . LF;
         #$html .= '<tr><td colspan="2">' . $tooltip['desc'] . '</td></tr>'.LF;
         $html .= '</table>' . LF;
         $html .= '</div>' . LF;
     }
     $html .= '</div></div>';
     $html .= '<script type="text/javascript">' . LF;
     $html .= '<!--' . LF;
     $html .= 'var calendar_dates = new Array(';
     #pr($date_array_for_jQuery_php);
     #pr($date_array_for_jQuery_temp);
     // die maximale breite bei nebeneinander liegenden Termine
     $overlap_array = array();
     $max_overlap_array = array();
     $max_overlap_array_for_date = array();
     $date_array_for_jQuery_php_with_position = array();
     for ($int = 0; $int < 7; $int++) {
         $temp_quaters_array = array();
         for ($j = 0; $j < 96; $j++) {
             $temp_quaters_array[] = 0;
         }
         for ($i = 0; $i < sizeof($date_array_for_jQuery_php); $i++) {
             $day = $date_array_for_jQuery_php[$i][0] - 1;
             if ($day == $int) {
                 $start_quaters = $date_array_for_jQuery_php[$i][2];
                 $end_quaters = $date_array_for_jQuery_php[$i][3];
                 for ($j = $start_quaters; $j < $end_quaters; $j++) {
                     $value = $temp_quaters_array[$j];
                     $temp_quaters_array[$j] = $value + 1;
                 }
             }
         }
         $overlap_array[] = $temp_quaters_array;
         $max_overlap = 0;
         for ($i = 0; $i < sizeof($temp_quaters_array); $i++) {
             if ($max_overlap < $temp_quaters_array[$i]) {
                 $max_overlap = $temp_quaters_array[$i];
             }
         }
         $max_overlap_array[] = $max_overlap;
         for ($i = 0; $i < sizeof($date_array_for_jQuery_php); $i++) {
             $day = $date_array_for_jQuery_php[$i][0] - 1;
             if ($day == $int) {
                 $start_quaters = $date_array_for_jQuery_php[$i][2];
                 $end_quaters = $date_array_for_jQuery_php[$i][3];
                 $max_overlap_for_date = 0;
                 for ($j = $start_quaters; $j < $end_quaters; $j++) {
                     if ($temp_quaters_array[$j] > $max_overlap_for_date) {
                         $max_overlap_for_date = $temp_quaters_array[$j];
                     }
                 }
                 $max_overlap_array_for_date[] = $max_overlap_for_date;
             }
         }
     }
     #pr($max_overlap_array);
     // Arrays zum Sortieren vorbereiten
     $sort_dates_array = array();
     $sort_dates_start_array = array();
     for ($i = 0; $i < 7; $i++) {
         $temp_sort_array = array();
         for ($j = 0; $j < $max_overlap_array[$i]; $j++) {
             $temp_part_array = array();
             for ($k = 0; $k < 96; $k++) {
                 $temp_part_array[] = 0;
             }
             $temp_sort_array[] = $temp_part_array;
         }
         // Termine sortieren
         $max_overlap_index = 0;
         foreach ($date_array_for_jQuery_php as $temp_date) {
             $found_position = false;
             if ($temp_date[0] - 1 == $i) {
                 $start_quaters = $temp_date[2];
                 $end_quaters = $temp_date[3];
                 $date_set = false;
                 for ($temp_part = 0; $temp_part < sizeof($temp_sort_array); $temp_part++) {
                     #foreach($temp_sort_array as $temp_part_array){
                     if (!$date_set) {
                         $slot_free = true;
                         for ($time = $start_quaters; $time < $end_quaters; $time++) {
                             if ($temp_sort_array[$temp_part][$time] != 0) {
                                 #if($temp_part_array[$time] != 0){
                                 $slot_free = false;
                             }
                         }
                         if ($slot_free) {
                             for ($time = $start_quaters; $time < $end_quaters; $time++) {
                                 $temp_sort_array[$temp_part][$time] = 1;
                                 if (!$found_position) {
                                     $temp_date[] = sizeof($temp_sort_array);
                                     $temp_date[] = $temp_part;
                                     $temp_date[] = $time;
                                     $found_position = true;
                                 }
                                 $temp_part_array[$time] = 1;
                             }
                             $date_set = true;
                         }
                     }
                 }
                 $temp_date[] = $max_overlap_array_for_date[$max_overlap_index];
                 $date_array_for_jQuery_php_with_position[] = $temp_date;
             }
             $max_overlap_index++;
         }
         $sort_dates_array[] = $temp_sort_array;
     }
     $last = count($date_array_for_jQuery) - 1;
     #for ($index = 0; $index < count($date_array_for_jQuery); $index++) {
     #   $html .= $date_array_for_jQuery[$index];
     #   #pr($date_array_for_jQuery[$index]);
     #   if($index < $last){
     #     $html .= ',';
     #   }
     #}
     for ($index = 0; $index < count($date_array_for_jQuery_php_with_position); $index++) {
         $day_entries = $date_array_for_jQuery_php_with_position[$index][0];
         $link = $date_array_for_jQuery_php_with_position[$index][1];
         $link = str_replace("'", "\\'", $link);
         $start_quaters = $date_array_for_jQuery_php_with_position[$index][2];
         $end_quaters = $date_array_for_jQuery_php_with_position[$index][3];
         $dates_on_day = $date_array_for_jQuery_php_with_position[$index][4];
         $color = $date_array_for_jQuery_php_with_position[$index][5];
         $color_border = $date_array_for_jQuery_php_with_position[$index][6];
         $href = $date_array_for_jQuery_php_with_position[$index][7];
         $date_index = $date_array_for_jQuery_php_with_position[$index][8];
         $is_date_for_whole_day = $date_array_for_jQuery_php_with_position[$index][9];
         if (isset($date_array_for_jQuery_php_with_position[$index][10])) {
             $max_overlap = $date_array_for_jQuery_php_with_position[$index][10];
         } else {
             $max_overlap = 0;
         }
         if (isset($date_array_for_jQuery_php_with_position[$index][11])) {
             $start_column = $date_array_for_jQuery_php_with_position[$index][11];
         } else {
             $start_column = 0;
         }
         if (isset($date_array_for_jQuery_php_with_position[$index][12])) {
             $start_quarter = $date_array_for_jQuery_php_with_position[$index][12];
         } else {
             $start_quarter = 0;
         }
         if (isset($date_array_for_jQuery_php_with_position[$index][13])) {
             $max_overlap_for_date = $date_array_for_jQuery_php_with_position[$index][13];
         } else {
             $max_overlap_for_date = 0;
         }
         $html .= 'new Array(' . $day_entries . ',\'' . $link . '\',' . $start_quaters . ',' . $end_quaters . ',' . $dates_on_day . ',\'' . $color . '\'' . ',\'' . $color_border . '\'' . ',\'' . $href . '\'' . ',\'' . $date_index . '\'' . ',\'' . $is_date_for_whole_day . '\'' . ',' . $max_overlap . '' . ',' . $start_column . '' . ',' . $start_quarter . '' . ',' . $max_overlap_for_date . ')' . LF;
         #pr($date_array_for_jQuery[$index]);
         if ($index < $last) {
             $html .= ',';
         }
     }
     $html .= ');' . LF;
     $html .= 'var today = "' . $today . '";' . LF;
     $html .= '-->' . LF;
     $html .= '</script>' . LF;
     return $html;
 }
示例#3
0
function parse_duedate($s)
{
    $df2 = Config::get('dateformat2');
    if (max((int) strpos($df2, 'n'), (int) strpos($df2, 'm')) > max((int) strpos($df2, 'd'), (int) strpos($df2, 'j'))) {
        $formatDayFirst = true;
    } else {
        $formatDayFirst = false;
    }
    $y = $m = $d = 0;
    if (preg_match("|^(\\d+)-(\\d+)-(\\d+)\\b|", $s, $ma)) {
        $y = (int) $ma[1];
        $m = (int) $ma[2];
        $d = (int) $ma[3];
    } elseif (preg_match("|^(\\d+)\\/(\\d+)\\/(\\d+)\\b|", $s, $ma)) {
        if ($formatDayFirst) {
            $d = (int) $ma[1];
            $m = (int) $ma[2];
            $y = (int) $ma[3];
        } else {
            $m = (int) $ma[1];
            $d = (int) $ma[2];
            $y = (int) $ma[3];
        }
    } elseif (preg_match("|^(\\d+)\\.(\\d+)\\.(\\d+)\\b|", $s, $ma)) {
        $d = (int) $ma[1];
        $m = (int) $ma[2];
        $y = (int) $ma[3];
    } elseif (preg_match("|^(\\d+)\\.(\\d+)\\b|", $s, $ma)) {
        $d = (int) $ma[1];
        $m = (int) $ma[2];
        $a = explode(',', date('Y,m,d'));
        if ($m < (int) $a[1] || $m == (int) $a[1] && $d < (int) $a[2]) {
            $y = (int) $a[0] + 1;
        } else {
            $y = (int) $a[0];
        }
    } elseif (preg_match("|^(\\d+)\\/(\\d+)\\b|", $s, $ma)) {
        if ($formatDayFirst) {
            $d = (int) $ma[1];
            $m = (int) $ma[2];
        } else {
            $m = (int) $ma[1];
            $d = (int) $ma[2];
        }
        $a = explode(',', date('Y,m,d'));
        if ($m < (int) $a[1] || $m == (int) $a[1] && $d < (int) $a[2]) {
            $y = (int) $a[0] + 1;
        } else {
            $y = (int) $a[0];
        }
    } else {
        return null;
    }
    if ($y < 100) {
        $y = 2000 + $y;
    } elseif ($y < 1000 || $y > 2099) {
        $y = 2000 + (int) substr((string) $y, -2);
    }
    if ($m > 12) {
        $m = 12;
    }
    $maxdays = daysInMonth($m, $y);
    if ($m < 10) {
        $m = '0' . $m;
    }
    if ($d > $maxdays) {
        $d = $maxdays;
    } elseif ($d < 10) {
        $d = '0' . $d;
    }
    return "{$y}-{$m}-{$d}";
}
示例#4
0
		 $cal->enableDayLinks("day.php");
	$cal->enableMonthNav("month.php?u=".$uId);
	
	//$cal->enableDatePicker();		//TODO: consider this for future
	
	$day = 1;	//set timestamp to the start of the month
	$startDate = $startStamp;
	$prevMonth = mktime(0, 0, 0, $month-1, $day, $year);
	$nextMonth = mktime(0, 0, 0, $month+1, $day, $year);
			
	$totalDist = 0;
	$totalVel = 0;
	$averageVel = 0;
	$totalTime = array();

	$days = daysInMonth($month, $year);
	for ($i=0; $i<$days; $i++)
	{
		$dayStamp = mktime(0, 0, 0, $month, $day+$i, $year);
		$ss = $manager->getDaysSessions($uId, $dayStamp);
		$sessions = DcUnitConverter::convertSessions($ss, $distUnit, $timeUnit);
	
		$content = "";
		$dayDist = 0;
		$numSessions = count($sessions);
		for ($j=0; $j<$numSessions; $j++)
		{
			$session = $sessions[$j];
			$ts = strtotime($session->startTime);
			$dateFrmtd = date("g:ia", $ts);
			$sTime = $session->startTime;
 private function getMonthContent($list)
 {
     $translator = $this->_environment->getTranslationObject();
     $current_time = localtime();
     // do some time calculations
     $month = mb_substr($this->_calendar["month"], 4, 2);
     $year = $this->_calendar["year"];
     $days = daysInMonth($month, $year);
     $first_day_week_day = $this->getWeekDayOfDate(1, $month, $year);
     // create array with correct daynumber/weekday relationship
     $format_array = array();
     $current_month = array();
     $current_year = array();
     //skip fields at beginning
     $empty_fields = ($first_day_week_day + 6) % 7;
     if ($month != '01') {
         $prev_month = $month - 1;
         $prev_month_year = $year;
     } else {
         $prev_month = 12;
         $prev_month_year = $year - 1;
     }
     $prev_month_days = daysInMonth($prev_month, $prev_month_year);
     for ($i = 0; $i < $empty_fields; $i++) {
         $format_array[]['day'] = $prev_month_days - ($empty_fields - $i) + 1;
         $current_month[] = (string) $prev_month;
         $current_year[] = $prev_month_year;
     }
     // fill days
     for ($i = 1; $i <= $days; $i++) {
         $format_array[]['day'] = $i;
         $current_month[] = (string) $month;
         $current_year[] = $year;
     }
     // skip at ending
     $sum = $days + $empty_fields;
     $remaining = 42 - $sum;
     if ($month != '12') {
         $next_month = $month + 1;
         $next_month_year = $year;
     } else {
         $next_month = 1;
         $next_month_year = $year + 1;
     }
     for ($i = 0; $i < $remaining; $i++) {
         $format_array[]['day'] = $i + 1;
         $current_month[] = (string) $next_month;
         $current_year[] = $next_month_year;
     }
     // get Dates in month
     $current_date = $list->getFirst();
     $finish = false;
     $date_tooltip_array = array();
     while ($current_date) {
         $date_tooltip_array[$current_date->getItemID()] = $this->getTooltipDate($current_date);
         $start_date_month = '';
         $start_date_day = '';
         $start_date_year = '';
         $end_date_month = '';
         $end_date_day = '';
         $end_date_year = '';
         $start_date_array = convertDateFromInput($current_date->getStartingDay(), $this->_environment->getSelectedLanguage());
         if ($start_date_array['conforms'] == true) {
             $start_date_array = getDateFromString($start_date_array['timestamp']);
             $start_date_month = $start_date_array['month'];
             $start_date_day = $start_date_array['day'];
             $start_date_year = $start_date_array['year'];
         }
         $end_date_array = convertDateFromInput($current_date->getEndingDay(), $this->_environment->getSelectedLanguage());
         if ($end_date_array['conforms'] == true) {
             $end_date_array = getDateFromString($end_date_array['timestamp']);
             $end_date_month = $end_date_array['month'];
             $end_date_day = $end_date_array['day'];
             $end_date_year = $end_date_array['year'];
         }
         if ($start_date_day != '') {
             //date begins at least one month before currently displayed month, ends in currently displayed month
             // OR date begins in a year before the current and ends in
             if (($start_date_month < $month or $start_date_year < $year) and $end_date_month == $month and $end_date_year == $year) {
                 for ($i = 0; $i < $end_date_day; $i++) {
                     $format_array[$empty_fields + $i]['dates'][] = $current_date;
                 }
                 //date begins in currently displayed month, ends aftet currently displayed month
                 //OR date begins in currently displayed year and ends after currently displayed year
             } elseif ($start_date_month == $month and $start_date_year == $year and ($end_date_month > $month or $end_date_year > $year)) {
                 $rest_month = $days - $start_date_day;
                 for ($i = 0; $i <= $rest_month; $i++) {
                     $format_array[$empty_fields + $start_date_day - 1 + $i]['dates'][] = $current_date;
                 }
                 //date begins before and ends after currently displayed month
             } elseif (($start_date_month < $month or $start_date_year < $year) and ($end_date_month > $month or $end_date_year > $year)) {
                 for ($i = 0; $i < $days; $i++) {
                     $format_array[$empty_fields + $i]['dates'][] = $current_date;
                 }
             } else {
                 //Date spans in one month or is on a single day
                 $length = 0;
                 if ($end_date_day != '') {
                     $length = $end_date_day - $start_date_day;
                 }
                 for ($i = 0; $i <= $length; $i++) {
                     $format_array[$empty_fields + $start_date_day - 1 + $i]['dates'][] = $current_date;
                 }
             }
         }
         $current_date = $list->getNext();
     }
     // setup tooltip's and actions
     $anAction_array = array();
     $dateNewArray = array();
     $date_index = 0;
     $tooltips = array();
     $tooltip_last_id = '';
     $tooltip_date = '';
     for ($i = 0; $i < 42; $i++) {
         if ($format_array[$i]['day'] . $current_month[$i] . $current_year[$i] == date("dmY")) {
             $today = $format_array[$i]['day'] . $current_month[$i] . $current_year[$i];
         }
         $params = array();
         $params['iid'] = 'NEW';
         $temp_day = $format_array[$i]['day'];
         if (mb_strlen($temp_day) == 1) {
             $temp_day = '0' . $temp_day;
         }
         $params['day'] = $temp_day;
         $parameter_array = $this->_environment->getCurrentParameterArray();
         $temp_month = $current_month[$i];
         if (mb_strlen($temp_month) == 1) {
             $temp_month = '0' . $temp_month;
         }
         $params['month'] = $current_year[$i] . $temp_month . '01';
         $params['year'] = $current_year[$i];
         $params['presentation_mode'] = $this->_presentation_mode;
         $params['modus_from'] = 'calendar';
         $anAction = ahref_curl($this->_environment->getCurrentContextID(), CS_DATE_TYPE, 'edit', $params, '<img style="width:100%; height:100%" src="images/spacer.gif" alt="" border="0"/>');
         $anAction_array[] = $anAction;
         $dateNewArray[] = mktime(0, 0, 0, $current_month[$i], $format_array[$i]['day'], $current_year[$i]);
     }
     // get return data
     $return = array();
     $days = array();
     $i = 0;
     $todayCompressed = date("jnY");
     foreach ($format_array as $format) {
         $current_month_temp = $current_month[$i];
         if ($current_month_temp[0] == 0) {
             $current_month_temp = $current_month_temp[1];
         }
         $state = "active_day";
         // check if day is today
         if ($todayCompressed === $format['day'] . $current_month_temp . $current_year[$i]) {
             $state = "this_today";
         } elseif ($current_month[$i] != mb_substr($this->_calendar["month"], 4, 2)) {
             $state = "nonactive_day";
         }
         // process dates for this day
         $dates = array();
         foreach ($format["dates"] as $date) {
             // link
             $link = $this->getDateItemLinkWithJavascript($date, $date->getTitle());
             $link = str_replace("'", "\\'", $link);
             $link_array = explode('"', $link);
             $href = $link_array[1];
             // color
             if ($date->getColor() != '') {
                 $color = $date->getColor();
             } else {
                 $color = '#FFFF66';
             }
             $colorStr = "";
             switch ($color) {
                 case '#CC0000':
                     $colorStr = "red";
                     break;
                 case '#FF6600':
                     $colorStr = "orange";
                     break;
                 case '#FFCC00':
                     $colorStr = "yellow";
                     break;
                 case '#FFFF66':
                     $colorStr = "light_yellow";
                     break;
                 case '#33CC00':
                     $colorStr = "green";
                     break;
                 case '#00CCCC':
                     $colorStr = "turquoise";
                     break;
                 case '#3366FF':
                     $colorStr = "blue";
                     break;
                 case '#6633FF':
                     $colorStr = "dark_blue";
                     break;
                 case '#CC33CC':
                     $colorStr = "purple";
                     break;
                 default:
                     $colorStr = "grey";
                     break;
             }
             // room
             $room_title = "";
             $date_context_item = $date->getContextItem();
             if (isset($date_context_item)) {
                 $room_title = $date_context_item->getTitle();
             }
             // participants
             $participants = array();
             $participantsList = $date->getParticipantsItemList();
             if (!$participantsList->isEmpty()) {
                 $participant = $participantsList->getFirst();
                 while ($participant) {
                     $participants[] = array("name" => $participant->getFullName());
                     $participant = $participantsList->getNext();
                 }
             }
             $date = array("title" => $date->getTitle(), "display_title" => $date->getTitle(), "date" => $date_tooltip_array[$date->getItemID()], "place" => $date->getPlace(), "participants" => $participants, "color" => $colorStr, "context" => $room_title, "href" => $href);
             $dates[] = $date;
         }
         $days[] = array("day" => $format["day"], "link" => $anAction_array[$i], "state" => $state, "dates" => $dates, "date_new" => $dateNewArray[$i]);
         $i++;
     }
     $return['days'] = $days;
     return $return;
 }
function daysInMonthDataArray($month, $year)
{
    $array_return = array();
    for ($i = 1; $i <= daysInMonth($month, $year); $i++) {
        $j = $i <= 9 ? '0' . $i : $i;
        $array_return[$i] = $j . ' ' . getDayOfWeek($year, $month, $i);
    }
    return $array_return;
}
示例#7
0
function parse_duedate($s)
{
    global $config;
    $y = $m = $d = 0;
    if (preg_match("|^(\\d+)-(\\d+)-(\\d+)\\b|", $s, $ma)) {
        $y = (int) $ma[1];
        $m = (int) $ma[2];
        $d = (int) $ma[3];
    } elseif (preg_match("|^(\\d+)\\/(\\d+)\\/(\\d+)\\b|", $s, $ma)) {
        if ($config['duedateformat'] == 4) {
            $d = (int) $ma[1];
            $m = (int) $ma[2];
            $y = (int) $ma[3];
        } else {
            $m = (int) $ma[1];
            $d = (int) $ma[2];
            $y = (int) $ma[3];
        }
    } elseif (preg_match("|^(\\d+)\\.(\\d+)\\.(\\d+)\\b|", $s, $ma)) {
        $d = (int) $ma[1];
        $m = (int) $ma[2];
        $y = (int) $ma[3];
    } elseif (preg_match("|^(\\d+)\\.(\\d+)\\b|", $s, $ma)) {
        $d = (int) $ma[1];
        $m = (int) $ma[2];
        $a = explode(',', date('Y,m,d'));
        if ($m < (int) $a[1] || $m == (int) $a[1] && $d < (int) $a[2]) {
            $y = (int) $a[0] + 1;
        } else {
            $y = (int) $a[0];
        }
    } elseif (preg_match("|^(\\d+)\\/(\\d+)\\b|", $s, $ma)) {
        if ($config['duedateformat'] == 4) {
            $d = (int) $ma[1];
            $m = (int) $ma[2];
        } else {
            $m = (int) $ma[1];
            $d = (int) $ma[2];
        }
        $a = explode(',', date('Y,m,d'));
        if ($m < (int) $a[1] || $m == (int) $a[1] && $d < (int) $a[2]) {
            $y = (int) $a[0] + 1;
        } else {
            $y = (int) $a[0];
        }
    } else {
        return null;
    }
    if ($y < 100) {
        $y = 2000 + $y;
    } elseif ($y < 1000 || $y > 2099) {
        $y = 2000 + (int) substr((string) $y, -2);
    }
    if ($m > 12) {
        $m = 12;
    }
    $maxdays = daysInMonth($m, $y);
    if ($m < 10) {
        $m = '0' . $m;
    }
    if ($d > $maxdays) {
        $d = $maxdays;
    } elseif ($d < 10) {
        $d = '0' . $d;
    }
    return "{$y}-{$m}-{$d}";
}
示例#8
0
function generateCalendar($range, $events, $class)
{
    for ($k = -$range / 2; $k < 1 + $range / 2; $k++) {
        $date = strtotime($k . ' months');
        $strdate = explode("-", date('m-Y', $date));
        $days = daysInMonth($date);
        $decalage = date('w', strtotime($strdate[1] . "-" . $strdate[0] . "-01")) == "0" ? 6 : date('w', strtotime($strdate[1] . "-" . $strdate[0] . "-01")) - 1;
        $taille = ceil(($decalage + $days) / 7) * 7;
        $day = 1;
        ?>
    <div class="cal <?php 
        echo $class;
        ?>
" id="<?php 
        echo ltrim($strdate[0], 0);
        ?>
">
      <h2><?php 
        echo ucfirst(strftime('%B', $date));
        ?>
 <?php 
        echo $strdate[1];
        ?>
</h2>
      <button class="nav" id="next" onclick="changeCal(1)">〉</button>
      <button class="nav" id="previous" onclick="changeCal(-1)">〈</button>
      <table>
        <thead>
          <tr>
            <td><?php 
        lang('Lundi');
        ?>
</td>
            <td><?php 
        lang('Mardi');
        ?>
</td>
            <td><?php 
        lang('Mercredi');
        ?>
</td>
            <td><?php 
        lang('Jeudi');
        ?>
</td>
            <td><?php 
        lang('Vendredi');
        ?>
</td>
            <td><?php 
        lang('Samedi');
        ?>
</td>
            <td><?php 
        lang('Dimanche');
        ?>
</td>
          </tr>
        </thead>
        <tr>
      <?php 
        for ($i = 0; $i < $taille; $i++) {
            ?>
        <?php 
            if (date('Ymd') == date('Ym', $date) . sprintf('%02d', $day)) {
                $today = "today";
            } else {
                $today = "";
            }
            ?>
        <?php 
            if ($i % 7 == 0 && $i != $taille) {
                ?>
        </tr>
        <tr>
        <?php 
            }
            ?>
        <?php 
            if ($i < $decalage || $i > $days + $decalage - 1) {
                ?>
          <td class="disabled">
          </td>
        <?php 
            } else {
                ?>
          <td>
            <h2 class="<?php 
                echo $today;
                ?>
"><?php 
                echo $i < $days + $decalage + 1 ? $day : null;
                ?>
</h2>
            <div class="event-list">
              <?php 
                displayEvents($day, $strdate, $events);
                ?>
            </div>
            <?php 
                displayModals($day, $strdate, $events);
                ?>
          </td>
          <?php 
                $day++;
                ?>
        <?php 
            }
            ?>
      <?php 
        }
        ?>
        </tr>
      </table>
    </div>
    <?php 
        // echo $taille."<br>";
        // echo $decalage."<br>";
        // echo "mois: ".$strdate[0]."<br>";
        // echo "année: ".$strdate[1]."<br><br>";
    }
}
示例#9
-1
 function _performQuery($mode = 'select')
 {
     if ($mode == 'count') {
         $query = 'SELECT count(' . $this->addDatabasePrefix('dates') . '.item_id) AS count';
     } elseif ($mode == 'id_array') {
         $query = 'SELECT ' . $this->addDatabasePrefix('dates') . '.item_id';
     } elseif ($mode == 'distinct') {
         $query = 'SELECT DISTINCT ' . $this->addDatabasePrefix($this->_db_table) . '.*';
     } else {
         $query = 'SELECT ' . $this->addDatabasePrefix('dates') . '.*,
      				(
      					SELECT
      						COUNT(' . $this->addDatabasePrefix('annotations') . '.item_id)
      					FROM
      						' . $this->addDatabasePrefix('annotations') . '
      					WHERE
      						' . $this->addDatabasePrefix('annotations') . '.linked_item_id = ' . $this->addDatabasePrefix('dates') . '.item_id
      				) as count_annotations
      ';
     }
     $query .= ' FROM ' . $this->addDatabasePrefix('dates');
     if (!empty($this->_search_array) || (isset($this->_sort_order) and $this->_sort_order == 'modificator' || $this->_sort_order == 'modificator_rev')) {
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('user') . ' AS people ON (people.item_id=' . $this->addDatabasePrefix('dates') . '.creator_id)';
         // modificator_id (TBD)
         //look in filenames of linked files for the search_limit
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('item_link_file') . ' ON ' . $this->addDatabasePrefix('dates') . '.item_id = ' . $this->addDatabasePrefix('item_link_file') . '.item_iid' . ' LEFT JOIN ' . $this->addDatabasePrefix('files') . ' ON ' . $this->addDatabasePrefix('item_link_file') . '.file_id = ' . $this->addDatabasePrefix('files') . '.files_id';
         //look in filenames of linked files for the search_limit
     }
     // dates restricted by topics
     if (isset($this->_topic_limit)) {
         if ($this->_topic_limit == -1) {
             $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l21 ON';
             $query .= ' l21.deletion_date IS NULL';
             if (isset($this->_room_limit)) {
                 $query .= ' AND l21.context_id = "' . encode(AS_DB, $this->_room_limit) . '"';
             }
             $query .= ' AND (l21.first_item_type = "' . CS_TOPIC_TYPE . '" OR l21.second_item_TYPE = "' . CS_TOPIC_TYPE . '")';
             $query .= ' AND (l21.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id OR l21.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id)';
             // second part in where clause
         } else {
             $query .= ' INNER JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l21 ON';
             $query .= ' (l21.first_item_id = "' . encode(AS_DB, $this->_topic_limit) . '" OR l21.second_item_id = "' . encode(AS_DB, $this->_topic_limit) . '")';
             $query .= ' AND l21.deletion_date IS NULL AND (l21.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id OR l21.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id)';
         }
     }
     if (isset($this->_institution_limit)) {
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l121 ON ( l121.deletion_date IS NULL AND ((l121.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l121.second_item_type="' . CS_INSTITUTION_TYPE . '"))) ';
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l122 ON ( l122.deletion_date IS NULL AND ((l122.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l122.first_item_type="' . CS_INSTITUTION_TYPE . '"))) ';
     }
     if (isset($this->_user_limit)) {
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS user_limit1 ON ( user_limit1.deletion_date IS NULL AND ((user_limit1.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND user_limit1.second_item_type="' . CS_USER_TYPE . '"))) ';
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS user_limit2 ON ( user_limit2.deletion_date IS NULL AND ((user_limit2.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND user_limit2.first_item_type="' . CS_USER_TYPE . '"))) ';
     }
     if (isset($this->_assignment_limit) and isset($this->_related_user_limit)) {
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS related_user_limit1 ON ( related_user_limit1.deletion_date IS NULL AND ((related_user_limit1.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND related_user_limit1.second_item_type="' . CS_USER_TYPE . '"))) ';
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS related_user_limit2 ON ( related_user_limit2.deletion_date IS NULL AND ((related_user_limit2.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND related_user_limit2.first_item_type="' . CS_USER_TYPE . '"))) ';
     }
     if (isset($this->_tag_limit)) {
         $tag_id_array = $this->_getTagIDArrayByTagIDArray($this->_tag_limit);
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l41 ON ( l41.deletion_date IS NULL AND ((l41.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l41.second_item_type="' . CS_TAG_TYPE . '"))) ';
         $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l42 ON ( l42.deletion_date IS NULL AND ((l42.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l42.first_item_type="' . CS_TAG_TYPE . '"))) ';
     }
     // restrict dates by buzzword (la4)
     if (isset($this->_buzzword_limit)) {
         if ($this->_buzzword_limit == -1) {
             $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('links') . ' AS l6 ON l6.from_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l6.link_type="buzzword_for"';
             $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('labels') . ' AS buzzwords ON l6.to_item_id=buzzwords.item_id AND buzzwords.type="buzzword"';
         } else {
             $query .= ' INNER JOIN ' . $this->addDatabasePrefix('links') . ' AS l6 ON l6.from_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l6.link_type="buzzword_for"';
             $query .= ' INNER JOIN ' . $this->addDatabasePrefix('labels') . ' AS buzzwords ON l6.to_item_id=buzzwords.item_id AND buzzwords.type="buzzword"';
         }
     }
     // dates restricted by groups
     if (isset($this->_group_limit)) {
         if ($this->_group_limit == -1) {
             $query .= ' LEFT JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l31 ON';
             $query .= ' l31.deletion_date IS NULL';
             if (isset($this->_room_limit)) {
                 $query .= ' AND l31.context_id = "' . encode(AS_DB, $this->_room_limit) . '"';
             }
             $query .= ' AND (l31.first_item_type = "' . CS_GROUP_TYPE . '" OR l31.second_item_TYPE = "' . CS_GROUP_TYPE . '")';
             $query .= ' AND (l31.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id OR l31.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id)';
             // second part in where clause
         } else {
             $query .= ' INNER JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l31 ON';
             $query .= ' (l31.first_item_id = "' . encode(AS_DB, $this->_group_limit) . '" OR l31.second_item_id = "' . encode(AS_DB, $this->_group_limit) . '")';
             $query .= ' AND l31.deletion_date IS NULL AND (l31.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id OR l31.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id)';
         }
     }
     if (isset($this->_ref_id_limit)) {
         $query .= ' INNER JOIN ' . $this->addDatabasePrefix('link_items') . ' AS l5 ON ( (l5.first_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l5.second_item_id="' . encode(AS_DB, $this->_ref_id_limit) . '")
                  OR(l5.second_item_id=' . $this->addDatabasePrefix('dates') . '.item_id AND l5.first_item_id="' . encode(AS_DB, $this->_ref_id_limit) . '") AND l5.deleter_id IS NULL)';
     }
     // only files limit -> entries with files
     if (isset($this->_only_files_limit) and $this->_only_files_limit) {
         $query .= ' INNER JOIN ' . $this->addDatabasePrefix('item_link_file') . ' AS lf ON ' . $this->addDatabasePrefix($this->_db_table) . '.item_id = lf.item_iid';
     }
     $query .= ' WHERE 1';
     if (!$this->_show_not_activated_entries_limit) {
         $query .= ' AND (' . $this->addDatabasePrefix('dates') . '.modification_date IS NULL OR ' . $this->addDatabasePrefix('dates') . '.modification_date <= "' . getCurrentDateTimeInMySQL() . '")';
     }
     // fifth, insert limits into the select statement
     if ($this->_future_limit) {
         #$query .= ' AND (dates.datetime_end > NOW() OR dates.datetime_start > NOW())'; // this will not get all dates today
         $date = date("Y-m-d") . ' 00:00:00';
         $query .= ' AND (' . $this->addDatabasePrefix('dates') . '.datetime_end >= "' . encode(AS_DB, $date) . '" OR (' . $this->addDatabasePrefix('dates') . '.datetime_end="0000-00-00 00:00:00" AND ' . $this->addDatabasePrefix('dates') . '.datetime_start >= "' . encode(AS_DB, $date) . '") )';
     }
     if (isset($this->_room_array_limit) and !empty($this->_room_array_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.context_id IN (' . implode(", ", $this->_room_array_limit) . ')';
     } elseif (isset($this->_room_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.context_id = "' . encode(AS_DB, $this->_room_limit) . '"';
     }
     if ($this->_delete_limit == true) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.deleter_id IS NULL';
     }
     if (isset($this->_ref_user_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.creator_id = "' . encode(AS_DB, $this->_ref_user_limit) . '"';
     }
     if (isset($this->_age_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.modification_date >= DATE_SUB(CURRENT_DATE,interval ' . encode(AS_DB, $this->_age_limit) . ' day)';
     }
     if (isset($this->_color_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.color = "' . encode(AS_DB, $this->_color_limit) . '"';
     }
     if (isset($this->_recurrence_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.recurrence_id = "' . encode(AS_DB, $this->_recurrence_limit) . '"';
     }
     if (isset($this->_existence_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.creation_date >= DATE_SUB(CURRENT_DATE,interval ' . encode(AS_DB, $this->_existence_limit) . ' day)';
     }
     // dates restricted by topics, second part
     if (isset($this->_topic_limit) and $this->_topic_limit == -1) {
         $query .= ' AND l21.first_item_id IS NULL AND l21.second_item_id IS NULL';
     }
     if (isset($this->_institution_limit)) {
         if ($this->_institution_limit == -1) {
             $query .= ' AND (l121.first_item_id IS NULL AND l121.second_item_id IS NULL)';
             $query .= ' AND (l122.first_item_id IS NULL AND l122.second_item_id IS NULL)';
         } else {
             $query .= ' AND ((l121.first_item_id = "' . encode(AS_DB, $this->_institution_limit) . '" OR l121.second_item_id = "' . encode(AS_DB, $this->_institution_limit) . '")';
             $query .= ' OR (l122.second_item_id = "' . encode(AS_DB, $this->_institution_limit) . '" OR l122.first_item_id = "' . encode(AS_DB, $this->_institution_limit) . '"))';
         }
     }
     if (isset($this->_user_limit)) {
         if ($this->_user_limit == -1) {
             $query .= ' AND (user_limit1.first_item_id IS NULL AND user_limit1.second_item_id IS NULL)';
             $query .= ' AND (user_limit2.first_item_id IS NULL AND user_limit2.second_item_id IS NULL)';
         } else {
             $query .= ' AND ((user_limit1.first_item_id = "' . encode(AS_DB, $this->_user_limit) . '" OR user_limit1.second_item_id = "' . encode(AS_DB, $this->_user_limit) . '")';
             $query .= ' OR (user_limit2.first_item_id = "' . encode(AS_DB, $this->_user_limit) . '" OR user_limit2.second_item_id = "' . encode(AS_DB, $this->_user_limit) . '"))';
         }
     }
     if (isset($this->_assignment_limit) and isset($this->_related_user_limit)) {
         $query .= ' AND ( (related_user_limit1.first_item_id IN (' . implode(", ", $this->_related_user_limit) . ') OR related_user_limit1.second_item_id IN (' . implode(", ", $this->_related_user_limit) . ') )';
         $query .= ' OR  (related_user_limit2.first_item_id IN (' . implode(", ", $this->_related_user_limit) . ') OR related_user_limit2.second_item_id IN (' . implode(", ", $this->_related_user_limit) . ') ))';
     }
     // dates restricted by groups, second part
     if (isset($this->_group_limit) and $this->_group_limit == -1) {
         $query .= ' AND l31.first_item_id IS NULL AND l31.second_item_id IS NULL';
     }
     if (isset($this->_tag_limit)) {
         $tag_id_array = $this->_getTagIDArrayByTagIDArray($this->_tag_limit);
         $id_string = implode(', ', $tag_id_array);
         if (isset($tag_id_array[0]) and $tag_id_array[0] == -1) {
             $query .= ' AND (l41.first_item_id IS NULL AND l41.second_item_id IS NULL)';
             $query .= ' AND (l42.first_item_id IS NULL AND l42.second_item_id IS NULL)';
         } else {
             $query .= ' AND ( (l41.first_item_id IN (' . encode(AS_DB, $id_string) . ') OR l41.second_item_id IN (' . encode(AS_DB, $id_string) . ') )';
             $query .= ' OR (l42.first_item_id IN (' . encode(AS_DB, $id_string) . ') OR l42.second_item_id IN (' . encode(AS_DB, $id_string) . ') ))';
         }
     }
     if (isset($this->_buzzword_limit)) {
         if ($this->_buzzword_limit == -1) {
             $query .= ' AND (l6.to_item_id IS NULL OR l6.deletion_date IS NOT NULL)';
         } else {
             $query .= ' AND buzzwords.item_id="' . encode(AS_DB, $this->_buzzword_limit) . '"';
         }
     }
     if (isset($this->_day_limit)) {
         $query .= ' AND DAYOFMONTH(' . $this->addDatabasePrefix('dates') . '.start_day) = "' . encode(AS_DB, $this->_day_limit) . '"';
     }
     if (isset($this->_month_limit) and isset($this->_year_limit)) {
         $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", $this->_month_limit) . '-' . '01';
         $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", $this->_month_limit) . '-' . daysInMonth($this->_month_limit, $this->_year_limit);
         $query .= ' AND ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
     } elseif (isset($this->_month_limit2) and isset($this->_year_limit)) {
         $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", $this->_month_limit2) . '-' . '01';
         $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", $this->_month_limit2) . '-' . daysInMonth($this->_month_limit2, $this->_year_limit);
         $query .= ' AND ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . '';
         if ($this->_month_limit2 == 1) {
             $year = $this->_year_limit - 1;
             $string_start_day = $year . '-' . mb_sprintf("%02d", 12) . '-' . '01';
             $string_end_day = $year . '-' . mb_sprintf("%02d", 12) . '-' . daysInMonth(12, $year);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
             $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", 2) . '-' . '01';
             $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", 2) . '-' . daysInMonth(2, $this->_year_limit);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
         } elseif ($this->_month_limit2 == 12) {
             $year = $this->_year_limit + 1;
             $string_start_day = $year . '-' . mb_sprintf("%02d", 1) . '-' . '01';
             $string_end_day = $year . '-' . mb_sprintf("%02d", 1) . '-' . daysInMonth(1, $year);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
             $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", 11) . '-' . '01';
             $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", 11) . '-' . daysInMonth(11, $this->_year_limit);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
         } else {
             $month = $this->_month_limit2 - 1;
             $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", $month) . '-' . '01';
             $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", $month) . '-' . daysInMonth($this->_month_limit2, $this->_year_limit);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
             $month = $this->_month_limit2 + 1;
             $string_start_day = $this->_year_limit . '-' . mb_sprintf("%02d", $month) . '-' . '01';
             $string_end_day = $this->_year_limit . '-' . mb_sprintf("%02d", $month) . '-' . daysInMonth($month, $this->_year_limit);
             $query .= ' OR ( ' . ' (' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_start_day) . '" AND "' . encode(AS_DB, $string_end_day) . '" <= ' . $this->addDatabasePrefix('dates') . '.end_day AND (' . $this->addDatabasePrefix('dates') . '.end_day IS NOT NULL OR ' . $this->addDatabasePrefix('dates') . '.end_day !=""))' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.start_day AND ' . $this->addDatabasePrefix('dates') . '.start_day <="' . encode(AS_DB, $string_end_day) . '")' . ' OR ("' . encode(AS_DB, $string_start_day) . '"<= ' . $this->addDatabasePrefix('dates') . '.end_day AND ' . $this->addDatabasePrefix('dates') . '.end_day <="' . encode(AS_DB, $string_end_day) . '")' . ')';
         }
         $query .= ' )';
     }
     if (isset($this->_date_mode_limit) and $this->_date_mode_limit != 2 and empty($this->_id_array_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix('dates') . '.date_mode="' . encode(AS_DB, $this->_date_mode_limit) . '"';
     }
     if (!empty($this->_id_array_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.item_id IN (' . implode(", ", encode(AS_DB, $this->_id_array_limit)) . ')';
     }
     // restrict sql-statement by search limit, create wheres
     if (isset($this->_search_array) and !empty($this->_search_array)) {
         $query .= ' AND (';
         $field_array = array('TRIM(CONCAT(people.firstname," ",people.lastname))', $this->addDatabasePrefix('dates') . '.end_day', $this->addDatabasePrefix('dates') . '.start_day', $this->addDatabasePrefix('dates') . '.end_time', $this->addDatabasePrefix('dates') . '.start_time', $this->addDatabasePrefix('dates') . '.title', $this->addDatabasePrefix('dates') . '.description', $this->addDatabasePrefix('dates') . '.place', $this->addDatabasePrefix('files') . '.filename');
         $search_limit_query_code = $this->_generateSearchLimitCode($field_array);
         $query .= $search_limit_query_code;
         $query .= ' )';
     }
     // init and perform ft search action
     if (!empty($this->_search_array)) {
         $query .= $this->initFTSearch();
     }
     // only files limit -> entries with files
     if (isset($this->_only_files_limit) and $this->_only_files_limit) {
         $query .= ' AND lf.deleter_id IS NULL AND lf.deletion_date IS NULL';
     }
     // $this->_not_older_than_limit
     if (isset($this->_not_older_than_limit)) {
         $query .= ' AND ' . $this->addDatabasePrefix($this->_db_table) . '.datetime_start > "' . $this->_not_older_than_limit . '"';
     }
     if (isset($this->_between_limit) && !empty($this->_between_limit)) {
         $query .= "\n      \t\t\tAND\n      \t\t\t(\n      \t\t\t\t(\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_start <= '" . $this->_between_limit["start"] . "' AND\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_end >= '" . $this->_between_limit["end"] . "'\n      \t\t\t\t)\n      \t\t\t\tOR\n      \t\t\t\t(\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_start <= '" . $this->_between_limit["end"] . "' AND\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_end >= '" . $this->_between_limit["end"] . "'\n      \t\t\t\t)\n      \t\t\t\tOR\n      \t\t\t\t(\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_start >= '" . $this->_between_limit["start"] . "' AND\n      \t\t\t\t\t" . $this->addDatabasePrefix($this->_db_table) . ".datetime_end <= '" . $this->_between_limit["end"] . "'\n      \t\t\t\t)\n      \t\t\t)\n      \t\t";
     }
     if (isset($this->_sort_order)) {
         if ($this->_sort_order == 'place') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.place ASC';
         } elseif ($this->_sort_order == 'place_rev') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.place DESC';
         } elseif ($this->_sort_order == 'time') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.datetime_start ASC';
         } elseif ($this->_sort_order == 'time_rev') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.datetime_start DESC';
         } elseif ($this->_sort_order == 'title') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.title ASC';
         } elseif ($this->_sort_order == 'title_rev') {
             $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.title DESC';
         }
     } elseif ($this->_future_limit) {
         $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.datetime_start ASC';
     } else {
         $query .= ' ORDER BY ' . $this->addDatabasePrefix('dates') . '.datetime_start DESC';
     }
     if ($mode == 'select') {
         if (isset($this->_interval_limit) and isset($this->_from_limit)) {
             $query .= ' LIMIT ' . encode(AS_DB, $this->_from_limit) . ', ' . encode(AS_DB, $this->_interval_limit);
         }
     }
     // perform query
     $result = $this->_db_connector->performQuery($query);
     if (!isset($result)) {
         include_once 'functions/error_functions.php';
         trigger_error('Problems selecting dates.', E_USER_WARNING);
     } else {
         return $result;
     }
 }