static function getDayDates($user_id, $weekday) { //get current semester $semdata = new \SemesterData(); $current_semester = $semdata->getCurrentSemesterData(); $current_semester_id = $current_semester['semester_id']; return \CalendarScheduleModel::getEntries($user_id, $current_semester, 00, 2000, array($weekday - 1), false); }
/** * returns schedule for a given user and semester * * @get /user/:user_id/schedule/:semester_id * @get /user/:user_id/schedule */ public function getSchedule($user_id, $semester_id = NULL) { if ($user_id !== $GLOBALS['user']->id) { $this->error(401); } $semdata = new \SemesterData(); $current_semester = isset($semester_id) ? $semdata->getSemesterData($semester_id) : $semdata->getCurrentSemesterData(); if (!$current_semester) { $this->notFound('No such semester.'); } $schedule_settings = \UserConfig::get($user_id)->SCHEDULE_SETTINGS; $days = $schedule_settings['glb_days']; $entries = \CalendarScheduleModel::getEntries($user_id, $current_semester, $schedule_settings['glb_start_time'], $schedule_settings['glb_end_time'], $days, $visible = false); $json = array(); foreach ($entries as $number_of_day => $schedule_of_day) { $entries = array(); foreach ($schedule_of_day->entries as $entry) { $entries[$entry['id']] = self::entryToJson($entry); } $json[$number_of_day + 1] = $entries; } $this->etag(md5(serialize($json))); return $json; }
static function get_next_courses($user_id) { /* $items = array(); $db = \DBManager::get(); $semester = \SemesterData::getCurrentSemesterData(); $semester_begin = $semester["beginn"]; $semester_ende = $semester["ende"]; $today =date("N"); // !!! bisher ohne cycling, kein Dozent // !! bisher die ersten 5 in der woche // was ist cycle bzw weekoffset inseminar seminar_cycle_dates $fields= "seminar_user.Seminar_id AS Seminar_id, seminar_user.user_id, seminar_user.visible, seminare.Seminar_id, seminare.start_time, seminare.Name AS name, seminar_cycle_dates.start_time AS beginn, seminar_cycle_dates.end_time AS ende, seminar_cycle_dates.start_time, seminar_cycle_dates.weekday AS weekday, seminar_cycle_dates.seminar_id, seminar_cycle_dates.description AS description "; $query = "SELECT $fields FROM seminar_user JOIN seminare ON seminar_user.Seminar_id = seminare.Seminar_id JOIN seminar_cycle_dates ON seminar_user.Seminar_id = seminar_cycle_dates.seminar_id WHERE seminar_user.user_id = '$user_id' AND seminar_user.visible = 'yes' AND seminare.start_time >= '$semester_begin' ORDER BY seminar_cycle_dates.weekday, seminar_cycle_dates.start_time "; $result = $db->query($query); $i = 0; foreach($result as $row) { $i++; $items[$i] = array( 'id' => $row['Seminar_id'], 'title' => $row['name'], 'beginn' => substr($row['beginn'], 0, 5), 'ende' => substr($row['ende'], 0, 5), 'weekday' => $row['weekday'], 'description' => $row['description'] ); } */ //get current semester $semdata = new \SemesterData(); $current_semester = $semdata->getCurrentSemesterData(); $current_semester_id = $current_semester['semester_id']; $entries = \CalendarScheduleModel::getEntries($user_id, $current_semester, 00, 2000, array(0, 1, 2, 3, 4, 5, 6), false); $output = array(); $counter = 0; $currentWeekDay = date("N") - 1; $currentTime = date("Gi"); if (!empty($entries)) { for ($i = 0; $i <= 6; $i++) { $currentWeekDay += $i; if ($currentWeekDay > 6) { $currentWeekDay = 0; } $currentDayObject = $entries[$currentWeekDay]; if (!empty($currentDayObject)) { //sortieren der einträge des tages $arrayObject = new \ArrayObject($currentDayObject->getEntries()); $arrayObject->uasort('Helper::cmpEarlier'); foreach ($arrayObject->getArrayCopy() as $entry) { if ($counter >= 3) { break; $i = 7; } if ($entry["start"] > $currentTime || $i != 0) { $output[$counter] = array("title" => $entry["title"], "description" => $entry["content"], "beginn" => $entry["start_formatted"], "ende" => $entry["end_formatted"], "weekday" => $currentWeekDay + 1, "id" => substr($entry["id"], 0, 32)); $counter++; } } } } } else { return null; } return $output; /* //var_dump($output); //nur die nächsten 3 sollen auftauchen $currentWeekDay =date("N"); $i = 0; if (!empty($items)) { $ausgabe = array(); //suchen des nächsten Cycles for ($i = 0; $i <= 6; $i++) { $currentWeekDay +=$i; if($currentWeekDay > 7) $currentWeekDay = 1; foreach($items AS $item) { //an dem gesuchten wochentag event .... if ($item['weekday'] == $currentWeekDay) { //nächstes event gefunden //Auffinden der nächsten beiden $ausgabe[1] = $item; $nextitemID = $item['weekday']; if (isset($items[ $nextitemID ])) { //zweites gefunden $ausgabe[2] = $items[ 1 ]; $nextitemID++; } else { $ausgabe[2] = $items[ 1 ]; $nextitemID = 2; } if (isset($items[ $nextitemID ])) { //zweites gefunden $ausgabe[3] = $items[ 1 ]; } else { $ausgabe[3] = $items[ 1 ]; } //fertig $i=8; break; } } } } else { return null; } return $ausgabe; */ }
/** * Create a CalendarWeekView (a schedule) for the current user and return it. * * @param string $user_id the institute to get the calendar for * @param bool $show_hidden show hidden entries * @param mixed $semester the semester to use * @param mixed $days the days to consider * * @return CalendarWeekView */ static function getUserCalendarView($user_id, $show_hidden = false, $semester = false, $days = false) { $schedule_settings = self::getScheduleSettings($user_id); if (!$semester) { $semester = self::getCurrentSemester(); } if (!$days) { $days = $schedule_settings['glb_days']; foreach ($days as $key => $day_number) { $days[$key] = ($day_number + 6) % 7; } } $entries = CalendarScheduleModel::getEntries($user_id, $semester, $schedule_settings['glb_start_time'], $schedule_settings['glb_end_time'], $days, $show_hidden); $view = new CalendarWeekView($entries, 'schedule'); $view->setHeight(40 + 20 * $schedule_settings['zoom']); $view->setRange($schedule_settings['glb_start_time'], $schedule_settings['glb_end_time']); $view->setInsertFunction("function (entry, column, hour, end_hour) {\n STUDIP.Schedule.newEntry(entry, column, hour, end_hour)\n }"); return $view; }