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;
     }
 }
Esempio n. 3
0
 /**
  * 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;
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 5
0
</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)): ?>
Esempio n. 6
0
        $_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']);
Esempio n. 7
0
 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;
Esempio n. 8
0
 function getSemesterDataByDate($timestamp)
 {
     $ret = Semester::findByTimestamp($timestamp);
     return $ret ? $ret->toArray() : false;
 }