Ejemplo n.º 1
0
 public function setValue($p_value)
 {
     if (!MetaDate::IsValid($p_value)) {
         throw new InvalidValueException($p_value, MetaDate::GetTypeName());
     }
     $this->m_value = trim($p_value);
     list($this->m_year, $this->m_month, $this->m_monthDay) = preg_split('/-/', $this->m_value);
     $timestamp = strtotime($this->m_value);
     $date_time = getdate($timestamp);
     $this->m_weekDay = $date_time['wday'];
 }
 function getDates($seminar_id, $start_time = 0, $end_time = 0)
 {
     $dow_array = array(_("So"), _("Mo"), _("Di"), _("Mi"), _("Do"), _("Fr"), _("Sa"));
     $cycles_array = array(_("wöchentlich"), _("zweiwöchentlich"), _("dreiwöchentlich"));
     $cont = array();
     // irregular dates
     $meta = new MetaDate($seminar_id);
     if ($meta->getTurnus() == 1) {
         $cont['REGULAR_DATES']['TURNUS'] = true;
     }
     if ($meta->getStartWoche()) {
         $cont['REGULAR_DATES']['START_WEEK'] = $meta->getStartWoche();
     }
     //$cont['REGULAR_TYPE'] = $GLOBALS['TERMIN_TYP'][$meta->getArt()]['name'];
     $i = 0;
     $cycle_data = $meta->getCycleData();
     foreach ($cycle_data as $metadate_id => $cycle) {
         $cont['REGULAR_DATES']['REGULAR_DATE'][$i] = array('DAY_OF_WEEK' => $dow_array[$cycle['day']], 'START_TIME' => sprintf('%02d:%02d', $cycle['start_hour'], $cycle['start_minute']), 'END_TIME' => sprintf('%02d:%02d', $cycle['end_hour'], $cycle['end_minute']), 'START_WEEK' => $cycle['week_offset'] + 1, 'CYCLE' => $cycles_array[(int) $cycle['cycle']], 'REGULAR_DESCRIPTION' => ExternModule::ExtHtmlReady(trim($cycle['desc'])), 'REGULAR_DELIMITER' => true);
         $k = 0;
         if (Config::get()->RESOURCES_ENABLE) {
             if (($resource_ids = CycleDataDB::getPredominantRoomDB($metadate_id, $start_time, $end_time)) !== false) {
                 foreach ($resource_ids as $resource_id => $foo) {
                     $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['ROOMS'][$k]['ROOM'] = ExternModule::ExtHtmlReady(trim(ResourceObject::Factory($resource_id)->getName()));
                     $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['ROOMS'][$k]['ROOMS_DELIMITER'] = true;
                     $k++;
                 }
                 unset($cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['ROOMS'][$k - 1]['ROOMS_DELIMITER']);
             }
         }
         if (!$k) {
             if (($free_rooms = CycleDataDB::getFreeTextPredominantRoomDB($metadate_id, $start_time, $end_time)) !== false) {
                 foreach ($free_rooms as $free_room => $foo) {
                     $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['FREE_ROOMS'][$k]['FREE_ROOM'] = ExternModule::ExtHtmlReady(trim($free_room));
                     $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['FREE_ROOMS'][$k]['FREE_ROOMS_DELIMITER'] = true;
                     $k++;
                 }
                 unset($cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['FREE_ROOMS'][$k - 1]['FREE_ROOMS_DELIMITER']);
             } else {
                 $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['NO_ROOM'] = true;
             }
         }
         //      if (!$k) {
         //      $cont['REGULAR_DATES']['REGULAR_DATE'][$i]['REGULAR_ROOMS']['NO_FREE_ROOM'] = true;
         //}
         $i++;
     }
     // remove last delimiter
     if ($i) {
         unset($cont['REGULAR_DATES']['REGULAR_DATE'][$i - 1]['REGULAR_DELIMITER']);
     }
     // regular dates
     if ($start_time && $end_time) {
         $dates = SeminarDB::getSingleDates($seminar_id, $start_time, $end_time);
     } else {
         $dates = array();
     }
     $i = 0;
     $selected_types = $this->config->getValue('Main', 'selectedeventtypes');
     foreach ($dates as $date) {
         if (in_array('all', $selected_types) || in_array('meeting', $selected_types) && $GLOBALS['TERMIN_TYP'][$date['date_typ']]['sitzung'] || in_array('other', $selected_types) && !$GLOBALS['TERMIN_TYP'][$date['date_typ']]['sitzung'] || in_array($date['date_typ'], $selected_types)) {
             $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i] = array('DAY_OF_WEEK' => $dow_array[date('w', $date['date'])], 'START_TIME' => date('H:i', $date['date']), 'END_TIME' => date('H:i', $date['end_time']), 'DATE' => date('d.m.y', $date['date']), 'IRREGULAR_DESCRIPTION' => ExternModule::ExtHtmlReady(trim($date['description'])), 'IRREGULAR_DELIMITER' => true);
             if ($GLOBALS['TERMIN_TYP'][$date['date_typ']]['sitzung']) {
                 $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i]['IRREGULAR_TYPE_MEETING'] = $GLOBALS['TERMIN_TYP'][$date['date_typ']]['name'];
             } else {
                 $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i]['IRREGULAR_TYPE_OTHER'] = $GLOBALS['TERMIN_TYP'][$date['date_typ']]['name'];
             }
             if (Config::get()->RESOURCES_ENABLE && $date['resource_id']) {
                 $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i]['IRREGULAR_ROOM'] = ExternModule::ExtHtmlReady(trim(ResourceObject::Factory($date['resource_id'])->getName()));
             } else {
                 if (trim($date['raum'])) {
                     $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i]['IRREGULAR_ROOM'] = ExternModule::ExtHtmlReady(trim($date['raum']));
                 } else {
                     $cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i]['IRREGULAR_NO_ROOM'] = true;
                 }
             }
         }
         $i++;
     }
     // remove last delimiter
     if ($i) {
         unset($cont['IRREGULAR_DATES']['IRREGULAR_DATE'][$i - 1]['IRREGULAR_DELIMITER']);
     }
     return $cont;
 }
Ejemplo n.º 3
0
 public static function IsValid($p_value)
 {
     $p_value = trim($p_value);
     // now() is an value which have to be computed
     if (strtolower($p_value) == 'now()') {
         return true;
     }
     $datetimeParts = preg_split('/[\\s]+/', $p_value);
     $date = $datetimeParts[0];
     $time = isset($datetimeParts[1]) ? $datetimeParts[1] : '00:00:00';
     if (!MetaDate::IsValid($date)) {
         return false;
     }
     if (!MetaTime::IsValid($time)) {
         return false;
     }
     return true;
 }