public function check($data, $virtualobject, $relevantfields) { $errors = ""; if (!$data['fleximport_dozenten'] || !count($data['fleximport_dozenten'])) { $errors .= "Dozent kann nicht gemapped werden. "; } else { $exist = false; foreach ((array) $data['fleximport_dozenten'] as $dozent_id) { if (User::find($dozent_id)) { $exist = true; break; } } if (!$exist) { $errors .= "Angegebene Dozenten sind nicht im System vorhanden. "; } else { if ($GLOBALS['SEM_CLASS'][$GLOBALS['SEM_TYPE'][$virtualobject['status']]['class']]['only_inst_user']) { $statement = DBManager::get()->prepare("\n SELECT 1\n FROM user_inst\n WHERE user_id IN (:dozent_ids)\n AND Institut_id IN (:institut_ids)\n AND inst_perms IN ('autor','tutor','dozent')\n "); $statement->execute(array('dozent_ids' => (array) $data['fleximport_dozenten'], 'institut_ids' => $data['fleximport_related_institutes'] ?: array($virtualobject['institut_id']))); if (!$statement->fetch(PDO::FETCH_COLUMN, 0)) { $errors .= "Keiner der Dozenten ist in einer beteiligten Einrichtung angestellt. "; } } } } if (!$data['institut_id'] || !Institute::find($data['institut_id'])) { $errors .= "Keine gültige Heimateinrichtung. "; } if (!Semester::findByTimestamp($data['start_time'])) { $errors .= "Semester wurde nicht gefunden. "; } if ($data['status']) { if ($GLOBALS['SEM_CLASS'][$GLOBALS['SEM_TYPE'][$data['status']]['class']]['bereiche']) { $found = false; foreach ((array) $data['fleximport_studyarea'] as $sem_tree_id) { if (StudipStudyArea::find($sem_tree_id)) { $found = true; break; } } if (!$found) { $errors .= "Keine (korrekten) Studienbereiche definiert. "; } } } else { $errors .= "Kein Veranstaltungstyp definiert. "; } return $errors; }
public function map($format, $value) { switch ($format) { case "name": $semester = Semester::findOneByName($value); return $semester ? $semester['beginn'] : null; break; case "timestamp": if (!is_numeric($value)) { $value = strtotime($value); } $semester = Semester::findByTimestamp($value); return $semester ? $semester['beginn'] : null; break; case "current": $semester = Semester::findCurrent(); return $semester ? $semester['beginn'] : null; case "next": $semester = Semester::findCurrent(); return $semester ? $semester['beginn'] : null; } }
/** * returns latest semester id from assigned courses * if no courses are assigned current semester * * @return string id of semester */ public function getSemester() { $db = DBManager::get(); $timestamp = $db->fetchColumn("SELECT MAX(start_time + duration_time)\n FROM seminare WHERE duration_time <> -1\n AND seminar_id IN(?)", array($this->getCourses())); $semester = Semester::findByTimestamp($timestamp); if (!$semester) { $semester = Semester::findCurrent(); } return $semester->id; }
/** * Creates an array with all seminars * * @return array */ function getDozentSeminars() { $semester = $courses = array(); $semester[] = Semester::findNext(); $semester[] = Semester::findCurrent(); $semester[] = Semester::findByTimestamp(Semester::findCurrent()->beginn - 1); if (Config::get()->IMPORTANT_SEMNUMBER) { $field = 'veranstaltungsnummer'; } else { $field = 'name'; } $allcourses = new SimpleCollection(Course::findBySQL("INNER JOIN seminar_user USING(Seminar_id) WHERE user_id=? AND seminar_user.status='dozent' AND seminare.visible=1", array($this->current_user->id))); foreach (array_filter($semester) as $one) { $courses[$one->name] = $allcourses->filter(function ($c) use($one) { return $c->start_time <= $one->beginn && ($one->beginn <= $c->start_time + $c->duration_time || $c->duration_time == -1); })->orderBy($field); if (!$courses[$one->name]->count()) { unset($courses[$one->name]); } } return $courses; }
</th> <th><?php echo _('Thema'); ?> </th> <th><?php echo _('Raum'); ?> </th> </tr> </thead> <tbody> <?php // print dates foreach ($dates as $key => $date) { $dateSemester = Semester::findByTimestamp($date['date']); if ($dateSemester && $semester->getId() === $dateSemester->getId()) { if (is_null($is_next_date) && $date['end_time'] >= time() && !is_a($date, "CourseExDate")) { $is_next_date = $key; } echo $this->render_partial('course/dates/_date_row.php', array('date' => $date, 'is_next_date' => $is_next_date === $key)); } elseif (!$dateSemester && !in_array($key, $lostDateKeys)) { $lostDateKeys[] = $key; } } ?> </tbody> </table> <? endforeach; ?> <? if (count($lostDateKeys)): ?>
$_SESSION['_language'] = get_accepted_languages(); } if (!$_SESSION['_language']) { $_SESSION['_language'] = $DEFAULT_LANGUAGE; } // else use system default } // user init starts here if ($auth->is_authenticated() && is_object($user) && $user->id != "nobody") { if ($_SESSION['SessionStart'] > UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP) { // just logged in // store old CURRENT_LOGIN in LAST_LOGIN and set CURRENT_LOGIN to start of session UserConfig::get($user->id)->store('LAST_LOGIN_TIMESTAMP', UserConfig::get($user->id)->CURRENT_LOGIN_TIMESTAMP); UserConfig::get($user->id)->store('CURRENT_LOGIN_TIMESTAMP', $_SESSION['SessionStart']); //find current semester and store it in $_SESSION['_default_sem'] $current_sem = Semester::findByTimestamp(time() + get_config('SEMESTER_TIME_SWITCH') * 7 * 24 * 60 * 60); if (!$current_sem) { $current_sem = Semester::findCurrent(); } $_SESSION['_default_sem'] = $current_sem->semester_id; //redirect user to another page if he want to, redirect is deferred to allow plugins to catch the UserDidLogin notification if (UserConfig::get($user->id)->PERSONAL_STARTPAGE > 0 && $i_page == "index.php" && !$perm->have_perm("root")) { $seminar_open_redirected = TRUE; } $user_did_login = true; } } // init of output via I18N $_language_path = init_i18n($_SESSION['_language']); //force reload of config to get translated data list($save_sem_class, $save_sem_type) = array($GLOBALS['SEM_CLASS'], $GLOBALS['SEM_TYPE']);
foreach ($eval_ranges as $eval_range) { $o_type = get_object_type($eval_range, array('studip', 'user', 'sem', 'inst')); switch ($o_type) { case 'global': $name = _("Systemweite Evaluationen"); break; case 'sem': $name = _("Veranstaltung:"); $seminar = Seminar::getInstance($eval_range); $name .= ' ' . $seminar->getName(); $name .= ' (' . Semester::findByTimestamp($seminar->semester_start_time)->name; if ($seminar->semester_duration_time == -1) { $name .= ' - ' . _("unbegrenzt"); } if ($seminar->semester_duration_time > 0) { $name .= ' - ' . Semester::findByTimestamp($seminar->semester_start_time + $seminar->semester_duration_time)->name; } $name .= ')'; $dozenten = array_map(function ($v) { return $v['Nachname']; }, $seminar->getMembers('dozent')); $name .= ' (' . join(', ', $dozenten) . ')'; break; case 'user': $name = _("Profil:"); $name .= ' ' . get_fullname($eval_range); break; case 'inst': case 'fak': $name = _("Einrichtung:"); $name .= ' ' . Institute::find($eval_range)->name;
function getSemesterDataByDate($timestamp) { $ret = Semester::findByTimestamp($timestamp); return $ret ? $ret->toArray() : false; }