public function getGroupedDates($singledate = null, $metadate = null) { $i = 0; $first_event = FALSE; $semesterData = new SemesterData(); $all_semester = $semesterData->getAllSemesterData(); if (Config::get()->RESOURCES_HIDE_PAST_SINGLE_DATES) { // filtering foreach ($all_semester as $semester) { if ($semester['ende'] > time()) { $new_as[] = $semester; } } $all_semester = $new_as; } if (!$singledate) { foreach ($all_semester as $semester) { foreach ($this->metadate->cycles as $metadate_id => $cycle) { if ($metadate && $metadate_id != $metadate) continue; $group = $cycle->getSingleDates(); $metadate_has_termine = 0; $single = true; foreach ($group as $termin) { if (!$termin->isExTermin() && $termin->getStartTime() >= $semester['beginn'] && $termin->getStartTime() <= $semester['ende'] && (!Config::get()->RESOURCES_HIDE_PAST_SINGLE_DATES || $termin->getStartTime() >= time()) && $termin->isPresence()) { if (empty($first_event)) { $first_event = $termin->getStartTime(); } $groups[$i]["termin_ids"][$termin->getSingleDateId()] = TRUE; $metadate_has_termine = 1; if (empty($info[$i]['raum'])) { $info[$i]['raum'] = $termin->resource_id; } else if ($info[$i]['raum'] != $termin->resource_id) { $single = false; } } } if ($metadate_has_termine) { $info[$i]['name'] = $cycle->toString('long').' ('.$semester['name'].')'; $info[$i]['weekend'] = ($cycle->getDay() == 6 || $cycle->getDay() == 0); $this->applyTimeFilter($semester['beginn'], $semester['ende']); $raum = $this->getDatesTemplate('dates/seminar_predominant_html', array('cycle_id' => $metadate_id)); if ($raum) { $info[$i]['name'] .= '<br> '.$raum; $room_stat = $this->getStatOfNotBookedRooms($cycle->getMetadateId()); $info[$i]['name'] .= sprintf(_(" (%s von %s belegt)"), $room_stat['all'] - $room_stat['open'] , $room_stat['all']); $groups[$i]['complete'] = ($room_stat['all'] - $room_stat['open'] >= sizeof($groups[$i]['termin_ids'])) ? true : false; } if (!$single) unset($info[$i]['raum']); $i++; } } } if (!$metadate) { $irreg = $this->getSingleDates(); if (Config::get()->RESOURCES_HIDE_PAST_SINGLE_DATES) { $anzahl = 0; foreach ($irreg as $termin_id => $termin) { if ($termin->getStartTime() > time() - 3600) { $anzahl++; } } } else { $anzahl = sizeof($irreg); } if ($anzahl > Config::get()->RESOURCES_ALLOW_SINGLE_DATE_GROUPING) { $single = true; $first = true; foreach ($irreg as $termin_id => $termin) { if ($termin->isPresence()) { if (!Config::get()->RESOURCES_HIDE_PAST_SINGLE_DATES || $termin->getStartTime() > time() - 3600) { if (empty($first_event)) { $first_event = $termin->getStartTime(); } $groups[$i]["termin_ids"][$termin->getSingleDateId()] = TRUE; if (!$first) $info[$i]['name'] .= '<br> '; $info[$i]['name'] .= $termin->toString(); $resObj = ResourceObject::Factory($termin->resource_id); if ($link = $resObj->getFormattedLink($termin->getStartTime())) { $info[$i]['name'] .= '<br> '.$link; if (empty($info[$i]['raum'])) { $info[$i]['raum'] = $termin->resource_id; } else if ($info[$i]['raum'] != $termin->resource_id) { $single = false; } } if (date('w', $termin->getStartTime()) == 6 || date('w', $termin->getStartTime()) == 0) { $info[$i]['weekend'] = true; } $first = false; } } } if (!$single) unset($info[$i]['raum']); } else { foreach ($irreg as $termin_id => $termin) { if ($termin->isPresence()) { if (!Config::get()->RESOURCES_HIDE_PAST_SINGLE_DATES || $termin->getStartTime() > time() - 3600) { if (empty($first_event)) { $first_event = $termin->getStartTime(); } $groups[$i]["termin_ids"][$termin->getSingleDateId()] = TRUE; $info[$i]['name'] = $termin->toString(); $resObj = ResourceObject::Factory($termin->resource_id); if ($link = $resObj->getFormattedLink($termin->getStartTime())) { $info[$i]['name'] .= '<br> '.$link; $info[$i]['raum'] = $termin->resource_id; } $info[$i]['weekend'] = (date('w', $termin->getStartTime()) == 6 || date('w', $termin->getStartTime()) == 0); $i++; } } } } } } else { // we have a single date $termin = new SingleDate($singledate); $groups[0]['termin_ids'][$termin->getSingleDateID()] = TRUE; $info[0]['name'] = $termin->toString(); $info[0]['raum'] = $termin->resource_id; $info[0]['weekend'] = (date('w', $termin->getStartTime()) == 6 || date('w', $termin->getStartTime()) == 0); $first_event = $termin->getStartTime(); } return array('first_event' => $first_event, 'groups' => $groups, 'info' => $info); }