예제 #1
0
파일: courses.php 프로젝트: ratbird/hope
 public function index_action()
 {
     if ($_SESSION['sem_portal']['bereich'] != "all") {
         $class = $GLOBALS['SEM_CLASS'][$_SESSION['sem_portal']['bereich']];
         $this->anzahl_seminare_class = $class->countSeminars();
         $sem_status = array_keys($class->getSemTypes());
     } else {
         $sem_status = false;
     }
     $init_data = array("level" => "f", "cmd" => "qs", "show_class" => $_SESSION['sem_portal']['bereich'], "group_by" => 0, "default_sem" => ($default_sem = SemesterData::GetSemesterIndexById($_SESSION['_default_sem'])) !== false ? $default_sem : "all", "sem_status" => $sem_status);
     if (Request::option('reset_all')) {
         $_SESSION['sem_browse_data'] = null;
     }
     $this->sem_browse_obj = new SemBrowse($init_data);
     $sem_browse_data['show_class'] = $_SESSION['sem_portal']['bereich'];
     if (!$GLOBALS['perm']->have_perm("root")) {
         $this->sem_browse_obj->target_url = "dispatch.php/course/details/";
         $this->sem_browse_obj->target_id = "sem_id";
     } else {
         $this->sem_browse_obj->target_url = "seminar_main.php";
         $this->sem_browse_obj->target_id = "auswahl";
     }
     $this->toplist_entries = $this->getToplistEntries($sem_status);
     $this->controller = $this;
 }
예제 #2
0
$group_by = Request::int('group_by', 0);
// store the seleced semester in the session
if (Request::option('select_sem')) {
    $_SESSION['_default_sem'] = Request::option('select_sem');
}
$show_semester = Request::option('select_sem', $_SESSION['_default_sem']);
$sem_browse_obj = new SemBrowse(array('group_by' => 0));
$sem_browse_obj->sem_browse_data['default_sem'] = "all";
$sem_browse_obj->sem_number = false;
$sem_browse_obj->target_url = "dispatch.php/course/details/";
//teilt der nachfolgenden Include mit, wo sie die Leute hinschicken soll
$sem_browse_obj->target_id = "sem_id";
//teilt der nachfolgenden Include mit, wie die id die übergeben wird, bezeichnet werden soll
$sem_browse_obj->sem_browse_data['level'] = $level;
if ($show_semester) {
    $sem_number = SemesterData::GetSemesterIndexById($show_semester);
    $sem_browse_obj->sem_browse_data['default_sem'] = $sem_number;
    $sem_browse_obj->sem_number[0] = $sem_number;
}
switch ($level) {
    case "sbb":
        $sem_browse_obj->sem_browse_data['start_item_id'] = $id;
        $sem_browse_obj->get_sem_range($id, false);
        $sem_browse_obj->show_result = true;
        $sem_browse_obj->sem_browse_data['sset'] = false;
        $the_tree = $sem_browse_obj->sem_tree->tree;
        $bereich_typ = _("Studienbereich");
        $head_text = _("Übersicht aller Veranstaltungen eines Studienbereichs");
        $intro_text = sprintf(_("Alle Veranstaltungen, die dem Studienbereich: <br><b>%s</b><br> zugeordnet wurden."), htmlReady($the_tree->getShortPath($id)));
        $excel_text = strip_tags(DecodeHtml($intro_text));
        break;
예제 #3
0
/**
* Exports data of the given range.
*
* This function calls the functions that export the data sepcified by the given $export_range.
* It calls the function output_data afterwards.
*
* @access   public
* @param        string  $range_id   Stud.IP-range_id for export
*/
function export_range($range_id)
{
    global $o_mode, $range_name, $ex_person_details, $persons, $ex_sem;
    // Ist die Range-ID eine Einrichtungs-ID?
    $query = "SELECT Name FROM Institute WHERE Institut_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    $name = $statement->fetchColumn();
    if ($name) {
        $range_name = $name;
        output_data(xml_header(), $o_mode);
        $output_startet = true;
        export_inst($range_id);
    }
    // Ist die Range-ID eine Fakultaets-ID? Dann auch untergeordnete Institute exportieren!
    $query = "SELECT Name, Institut_id\n              FROM Institute\n              WHERE fakultaets_id = ? AND Institut_id != fakultaets_id";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
        if ($row['Name'] != '') {
            // output_data ( xml_header(), $o_mode);
            export_inst($row['Institut_id']);
        }
    }
    // Ist die Range-ID eine Seminar-ID?
    $query = "SELECT Name, Seminar_id, Institut_id\n              FROM seminare\n              WHERE Seminar_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    $row = $statement->fetch(PDO::FETCH_ASSOC);
    if ($row && $row['Name'] != '') {
        $range_name = $row['Name'];
        if (!$output_startet) {
            output_data(xml_header(), $o_mode);
            $output_startet = true;
        }
        export_inst($row['Institut_id'], $row['Seminar_id']);
    }
    //  Ist die Range-ID ein Range-Tree-Item?
    if ($range_id != 'root') {
        $tree_object = new RangeTreeObject($range_id);
        $range_name = $tree_object->item_data["name"];
        // Tree-Item ist ein Institut:
        if ($tree_object->item_data['studip_object'] == 'inst') {
            if (!$output_startet) {
                output_data(xml_header(), $o_mode);
                $output_startet = true;
            }
            export_inst($tree_object->item_data['studip_object_id']);
        }
        // Tree-Item hat Institute als Kinder:
        $inst_array = $tree_object->GetInstKids();
        if (count($inst_array) > 0) {
            if (!$output_startet) {
                output_data(xml_header(), $o_mode);
                $output_startet = true;
            }
            while (list($key, $inst_ids) = each($inst_array)) {
                export_inst($inst_ids);
            }
        }
    }
    $query = "SELECT 1 FROM sem_tree WHERE sem_tree_id = ?";
    $statement = DBManager::get()->prepare($query);
    $statement->execute(array($range_id));
    if ($statement->fetchColumn() || $range_id == 'root') {
        if (!$output_startet) {
            output_data(xml_header(), $o_mode);
            $output_startet = true;
        }
        if (isset($ex_sem) && ($semester = Semester::find($ex_sem))) {
            $args = array('sem_number' => array(SemesterData::GetSemesterIndexById($ex_sem)));
        } else {
            $args = array();
        }
        if ($range_id != 'root') {
            $the_tree = TreeAbstract::GetInstance('StudipSemTree', $args);
            $sem_ids = array_unique($the_tree->getSemIds($range_id, true));
        }
        if (is_array($sem_ids) || $range_id == 'root') {
            if (is_array($sem_ids)) {
                $query = "SELECT DISTINCT Institut_id\n                          FROM seminare\n                          WHERE Seminar_id IN (?)";
                $statement = DBManager::get()->prepare($query);
                $statement->execute(array($sem_ids));
                $to_export = $statement->fetchAll(PDO::FETCH_COLUMN);
            } else {
                $sem_ids = 'root';
                $query = "SELECT DISTINCT Institut_id\n                          FROM seminare\n                          INNER JOIN seminar_sem_tree USING (seminar_id)";
                if ($semester) {
                    $query .= " WHERE seminare.start_time <= :begin\n                                  AND (:begin <= (seminare.start_time + seminare.duration_time) OR\n                                       seminare.duration_time = -1)";
                    $statement = DBManager::get()->prepare($query);
                    $statement->bindValue(':begin', $semester->beginn);
                    $statement->execute();
                } else {
                    $statement = DBManager::get()->query($query);
                }
                $to_export = $statement->fetchAll(PDO::FETCH_COLUMN);
            }
            foreach ($to_export as $inst) {
                export_inst($inst, $sem_ids);
            }
        }
    }
    if ($ex_person_details && is_array($persons)) {
        export_persons(array_keys($persons));
    }
    output_data(xml_footer(), $o_mode, $flush = true);
}
예제 #4
0
파일: header.php 프로젝트: ratbird/hope
    $header_template->link_params = array_fill_keys(array_keys(URLHelper::getLinkParams()), NULL);
    if (is_object($GLOBALS['user']) && $GLOBALS['user']->id != 'nobody') {
        // only mark course if user is logged in and free access enabled
        if (get_config('ENABLE_FREE_ACCESS') && Navigation::hasItem('/course') && Navigation::getItem('/course')->isActive()) {
            // indicate to the template that this course is publicly visible
            // need to handle institutes separately (always visible)
            if ($GLOBALS['SessSemName']['class'] == 'inst') {
                $header_template->public_hint = _('öffentliche Einrichtung');
            } else {
                if (Course::findCurrent()->lesezugriff == 0) {
                    $header_template->public_hint = _('öffentliche Veranstaltung');
                }
            }
        }
        if ($GLOBALS['user']->cfg->getValue('ACCESSKEY_ENABLE')) {
            $header_template->accesskey_enabled = true;
        }
        // fetch semester for quick search box in the link bar
        $semester_data = SemesterData::GetSemesterArray();
        $default_semester = $_SESSION['_default_sem'] ? SemesterData::GetSemesterIndexById($_SESSION['_default_sem']) : 'all';
        $header_template->search_semester_nr = $default_semester;
        $header_template->search_semester_name = $default_semester != 'all' ? $semester_data[$default_semester]['name'] : _("alle Semester");
    }
} else {
    $header_template = $GLOBALS['template_factory']->open('noheader');
}
echo $header_template->render();
if ($GLOBALS['SHOW_TERMS_ON_FIRST_LOGIN'] && is_object($GLOBALS['user']) && $GLOBALS['user']->id != 'nobody') {
    require_once 'lib/terms.inc.php';
    check_terms($GLOBALS['user']->id, $GLOBALS['_language_path']);
}
예제 #5
0
파일: my_realm.php 프로젝트: ratbird/hope
 public static function getPreparedCourses($sem = "all", $params = array())
 {
     $semesters = self::getSelectedSemesters($sem);
     $current_semester_nr = SemesterData::GetSemesterIndexById(@Semester::findCurrent()->id);
     $min_sem_key = min($semesters);
     $max_sem_key = max($semesters);
     $group_field = $params['group_field'];
     $courses = self::getCourses($min_sem_key, $max_sem_key, $params);
     $show_semester_name = UserConfig::get($GLOBALS['user']->id)->SHOWSEM_ENABLE;
     $sem_courses = array();
     $param_array = 'name seminar_id visible veranstaltungsnummer start_time duration_time status visible ';
     $param_array .= 'chdate admission_binding modules admission_prelim';
     if (!empty($courses)) {
         // filtering courses
         $modules = new Modules();
         $member_ships = User::findCurrent()->course_memberships->toGroupedArray('seminar_id', 'status gruppe');
         foreach ($courses as $index => $course) {
             // export object to array for simple handling
             $_course = $course->toArray($param_array);
             $_course['start_semester'] = $course->start_semester->name;
             $_course['end_semester'] = $course->end_semester->name;
             $_course['sem_class'] = $course->getSemClass();
             $_course['obj_type'] = 'sem';
             if ($group_field == 'sem_tree_id') {
                 $_course['sem_tree'] = $course->study_areas->toArray();
             }
             $user_status = @$member_ships[$course->id]['status'];
             if (!$user_status && Config::get()->DEPUTIES_ENABLE && isDeputy($GLOBALS['user']->id, $course->id)) {
                 $user_status = 'dozent';
                 $is_deputy = true;
             } else {
                 $is_deputy = false;
             }
             // get teachers only if grouping selected (for better performance)
             if ($group_field == 'dozent_id') {
                 $teachers = new SimpleCollection($course->getMembersWithStatus('dozent'));
                 $teachers->filter(function ($a) use(&$_course) {
                     return $_course['teachers'][] = $a->user->getFullName('no_title_rev');
                 });
             }
             $_course['last_visitdate'] = object_get_visit($course->id, 'sem', 'last');
             $_course['visitdate'] = object_get_visit($course->id, 'sem', '');
             $_course['user_status'] = $user_status;
             $_course['gruppe'] = !$is_deputy ? @$member_ships[$course->id]['gruppe'] : self::getDeputieGroup($course->id);
             $_course['sem_number_end'] = $course->duration_time == -1 ? $max_sem_key : SemesterData::GetSemesterIndexById($course->end_semester->id);
             $_course['sem_number'] = SemesterData::GetSemesterIndexById($course->start_semester->id);
             $_course['modules'] = $modules->getLocalModules($course->id, 'sem', $course->modules, $course->status);
             $_course['name'] = $course->name;
             $_course['temp_name'] = $course->name;
             $_course['number'] = $course->veranstaltungsnummer;
             $_course['is_deputy'] = $is_deputy;
             if ($show_semester_name && $course->duration_time != 0 && !$course->getSemClass()->offsetGet('studygroup_mode')) {
                 $_course['name'] .= ' (' . $course->getFullname('sem-duration-name') . ')';
             }
             // add the the course to the correct semester
             self::getObjectValues($_course);
             if ($course->duration_time == -1) {
                 if ($current_semester_nr >= $min_sem_key && $current_semester_nr <= $max_sem_key) {
                     $sem_courses[$current_semester_nr][$course->id] = $_course;
                 } else {
                     $sem_courses[$max_sem_key][$course->id] = $_course;
                 }
             } else {
                 for ($i = $min_sem_key; $i <= $max_sem_key; $i++) {
                     if ($i >= $_course['sem_number'] && $i <= $_course['sem_number_end']) {
                         $sem_courses[$i][$course->id] = $_course;
                     }
                 }
             }
         }
     } else {
         return null;
     }
     if (empty($sem_courses)) {
         return null;
     }
     if ($params['main_navigation']) {
         return $sem_courses;
     }
     krsort($sem_courses);
     // grouping
     if ($group_field == 'sem_number' && !$params['order_by']) {
         foreach ($sem_courses as $index => $courses) {
             uasort($courses, function ($a, $b) {
                 if (Config::get()->IMPORTANT_SEMNUMBER) {
                     return $a['gruppe'] == $b['gruppe'] ? strcmp($a['number'], $b['number']) : $a['gruppe'] - $b['gruppe'];
                 } else {
                     return $a['gruppe'] == $b['gruppe'] ? strcmp($a['temp_name'], $b['temp_name']) : $a['gruppe'] - $b['gruppe'];
                 }
             });
             $sem_courses[$index] = $courses;
         }
     }
     // Group by teacher
     if ($group_field == 'dozent_id') {
         self::groupByTeacher($sem_courses);
     }
     // Group by Sem Status
     if ($group_field == 'sem_status') {
         self::groupBySemStatus($sem_courses);
     }
     // Group by colors
     if ($group_field == 'gruppe') {
         self::groupByGruppe($sem_courses);
     }
     // Group by sem_tree
     if ($group_field == 'sem_tree_id') {
         self::groupBySemTree($sem_courses);
     }
     return !empty($sem_courses) ? $sem_courses : false;
 }
예제 #6
0
파일: configure.php 프로젝트: ratbird/hope
?>
    </label>
</div>

<label class="caption">
    <?php 
echo _('Veranstaltung suchen');
?>
:
</label>

<div style="display:inline-block">

<?php 
echo QuickSearch::get("mandatory_course_id", new SeminarSearch('number-name-lecturer'))->render();
echo SemesterData::GetSemesterSelector(array('name' => 'search_sem_sem'), SemesterData::GetSemesterIndexById($_SESSION['_default_sem']), 'key', false);
?>

</div>

<br><br>
<script>
    $('#ruleform input[name="modus"]').on('change',
        function () {
            var message = [
                "<?php 
echo jsReady($rule->default_message, 'script-double');
?>
",
                "<?php 
echo jsReady($rule->default_message1, 'script-double');