예제 #1
0
파일: courses.php 프로젝트: ratbird/hope
 /**
  * Export action
  */
 public function export_csv_action()
 {
     $filter_config = $this->getFilterConfig();
     unset($filter_config['contents']);
     if (empty($filter_config)) {
         return;
     }
     $sortby = $GLOBALS['user']->cfg->getValue('MEINE_SEMINARE_SORT');
     $config_my_course_type_filter = $GLOBALS['user']->cfg->getValue('MY_COURSES_TYPE_FILTER');
     $courses = $this->getCourses(array('sortby' => $sortby, 'sortFlag' => 'asc', 'typeFilter' => $config_my_course_type_filter, 'view_filter' => $filter_config));
     $view_filters = $this->getViewFilters();
     $data = array();
     foreach ($courses as $course_id => $course) {
         $sem = new Seminar(Course::buildExisting($course));
         $row = array();
         if (in_array('number', $filter_config)) {
             $row['number'] = $course['VeranstaltungsNummer'];
         }
         if (in_array('name', $filter_config)) {
             $row['name'] = $course['Name'];
         }
         if (in_array('type', $filter_config)) {
             $row['type'] = sprintf('%s: %s', $sem->getSemClass()['name'], $sem->getSemType()['name']);
         }
         if (in_array('room_time', $filter_config)) {
             $_room = $sem->getDatesExport(array('semester_id' => $this->semester->id, 'show_room' => true));
             $row['room_time'] = $_room ?: _('nicht angegeben');
         }
         if (in_array('teachers', $filter_config)) {
             $row['teachers'] = implode(', ', array_map(function ($d) {
                 return $d['fullname'];
             }, $course['dozenten']));
         }
         if (in_array('members', $filter_config)) {
             $row['members'] = $course['teilnehmer'];
         }
         if (in_array('waiting', $filter_config)) {
             $row['waiting'] = $course['waiting'];
         }
         if (in_array('preliminary', $filter_config)) {
             $row['preliminary'] = $course['prelim'];
         }
         $data[$course_id] = $row;
     }
     $captions = array();
     foreach ($filter_config as $index) {
         $captions[$index] = $view_filters[$index];
     }
     $tmpname = md5(uniqid('Veranstaltungsexport'));
     if (array_to_csv($data, $GLOBALS['TMP_PATH'] . '/' . $tmpname, $captions)) {
         $this->redirect(GetDownloadLink($tmpname, 'Veranstaltungen_Export.csv', 4, 'force'));
         return;
     }
 }