Ejemplo n.º 1
0
 /**
  * Stores the general settings of a user.
  */
 public function store_action()
 {
     $this->check_ticket();
     $language = Request::get('forced_language');
     if (array_key_exists($language, $GLOBALS['INSTALLED_LANGUAGES'])) {
         $this->user->preferred_language = $_SESSION['_language'] = $language;
         $this->user->store();
     }
     $this->config->store('PERSONAL_STARTPAGE', Request::int('personal_startpage'));
     $this->config->store('ACCESSKEY_ENABLE', Request::int('accesskey_enable'));
     $this->config->store('SHOWSEM_ENABLE', Request::int('showsem_enable'));
     $this->config->store('SKIPLINKS_ENABLE', Request::int('skiplinks_enable'));
     $this->config->store('TOUR_AUTOSTART_DISABLE', Request::int('tour_autostart_disable'));
     if (Request::int('personal_notifications_activated')) {
         PersonalNotifications::activate();
     } else {
         PersonalNotifications::deactivate();
     }
     if (Request::int('personal_notifications_audio_activated')) {
         PersonalNotifications::activateAudioFeedback();
     } else {
         PersonalNotifications::deactivateAudioFeedback();
     }
     $this->reportSuccess(_('Die Einstellungen wurden gespeichert.'));
     $this->redirect('settings/general');
 }
Ejemplo n.º 2
0
 static function findAll($user_id, $days = 1, $future = true)
 {
     $future = Request::int('future', $future);
     $days = Request::int('days', $days);
     $items = self::get_dates($user_id, $days, $future);
     return $items;
 }
Ejemplo n.º 3
0
 /**
  * Common code for all actions: set default layout and page title.
  *
  * @param type $action
  * @param type $args
  */
 function before_filter(&$action, &$args)
 {
     $this->validate_args($args, array('option', 'option'));
     parent::before_filter($action, $args);
     // set correct encoding if this is an ajax-call
     if (Request::isAjax()) {
         header('Content-Type: text/html; charset=Windows-1252');
     }
     $this->flash = Trails_Flash::instance();
     // set default layout
     $layout = $GLOBALS['template_factory']->open('layouts/base');
     $this->set_layout($layout);
     // Set help keyword for Stud.IP's user-documentation and page title
     PageLayout::setHelpKeyword('Basis.Forum');
     PageLayout::setTitle($_SESSION['SessSemName']['header_line'] . ' - ' . _('Forum'));
     $this->AVAILABLE_DESIGNS = array('web20', 'studip');
     if ($GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] && $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] != '/') {
         $this->picturepath = $GLOBALS['CANONICAL_RELATIVE_PATH_STUDIP'] . '/' . $this->dispatcher->trails_root . '/img';
     } else {
         $this->picturepath = '/' . $this->dispatcher->trails_root . '/img';
     }
     // we want to display the dates in german
     setlocale(LC_TIME, 'de_DE@euro', 'de_DE', 'de', 'ge');
     // the default for displaying timestamps
     $this->time_format_string = "%a %d. %B %Y, %H:%M";
     $this->time_format_string_short = "%d.%m.%Y, %H:%M";
     $this->template_factory = new Flexi_TemplateFactory(dirname(__FILE__) . '/../templates');
     //$this->check_token();
     ForumVisit::setVisit($this->getId());
     if (Request::int('page')) {
         ForumHelpers::setPage(Request::int('page'));
     }
     $this->seminar_id = $this->getId();
 }
Ejemplo n.º 4
0
 /**
  * this action is the main action of the schedule-controller, setting the environment for the timetable,
  * accepting a comma-separated list of days.
  *
  * @param  string  a list of an arbitrary mix of the numbers 0-6, separated with a comma (e.g. 1,2,3,4,5 (for Monday to Friday, the default))
  */
 function index_action($days = false)
 {
     if ($GLOBALS['perm']->have_perm('admin')) {
         $inst_mode = true;
     }
     $my_schedule_settings = $GLOBALS['user']->cfg->SCHEDULE_SETTINGS;
     // set the days to be displayed
     if ($days === false) {
         if (Request::getArray('days')) {
             $this->days = array_keys(Request::getArray('days'));
         } else {
             $this->days = array(0, 1, 2, 3, 4, 5, 6);
         }
     } else {
         $this->days = explode(',', $days);
     }
     // try to find the correct institute-id
     $institute_id = Request::option('institute_id', $SessSemName[1] ? $SessSemName[1] : Request::option('cid', false));
     if (!$institute_id) {
         $institute_id = $GLOBALS['user']->cfg->MY_INSTITUTES_DEFAULT;
     }
     if (!$institute_id || in_array(get_object_type($institute_id), words('inst fak')) === false) {
         throw new Exception(sprintf(_('Kann Einrichtungskalendar nicht anzeigen!' . 'Es wurde eine ungültige Instituts-Id übergeben (%s)!', $institute_id)));
     }
     // load semester-data and current semester
     $semdata = new SemesterData();
     $this->semesters = $semdata->getAllSemesterData();
     if (Request::option('semester_id')) {
         $this->current_semester = $semdata->getSemesterData(Request::option('semester_id'));
     } else {
         $this->current_semester = $semdata->getCurrentSemesterData();
     }
     $this->entries = (array) CalendarInstscheduleModel::getInstituteEntries($GLOBALS['user']->id, $this->current_semester, 8, 20, $institute_id, $this->days);
     Navigation::activateItem('/course/main/schedule');
     PageLayout::setHelpKeyword('Basis.TerminkalenderStundenplan');
     PageLayout::setTitle($GLOBALS['SessSemName']['header_line'] . ' - ' . _('Veranstaltungs-Stundenplan'));
     $zoom = Request::int('zoom', 0);
     $this->controller = $this;
     $this->calendar_view = new CalendarWeekView($this->entries, 'instschedule');
     $this->calendar_view->setHeight(40 + 20 * $zoom);
     $this->calendar_view->setRange($my_schedule_settings['glb_start_time'], $my_schedule_settings['glb_end_time']);
     $this->calendar_view->groupEntries();
     // if enabled, group entries with same start- and end-date
     URLHelper::addLinkParam('zoom', $zoom);
     URLHelper::addLinkParam('semester_id', $this->current_semester['semester_id']);
     $style_parameters = array('whole_height' => $this->calendar_view->getOverallHeight(), 'entry_height' => $this->calendar_view->getHeight());
     $factory = new Flexi_TemplateFactory($this->dispatcher->trails_root . '/views');
     PageLayout::addStyle($factory->render('calendar/stylesheet', $style_parameters));
     if (Request::option('printview')) {
         PageLayout::addStylesheet('print.css');
     } else {
         PageLayout::addStylesheet('print.css', array('media' => 'print'));
     }
 }
Ejemplo n.º 5
0
 /**
  * Stores the study information of a user (subject and degree-wise).
  */
 public function store_sg_action()
 {
     $this->check_ticket();
     $any_change = false;
     $fach_abschluss_delete = Request::getArray('fach_abschluss_delete');
     if (count($fach_abschluss_delete) > 0) {
         $query = "DELETE FROM user_studiengang\n                      WHERE user_id = ? AND studiengang_id = ? AND abschluss_id IN (?)";
         $statement = DBManager::get()->prepare($query);
         foreach ($fach_abschluss_delete as $studiengang_id => $abschluesse) {
             $statement->execute(array($this->user->user_id, $studiengang_id, $abschluesse));
             if ($statement->rowCount() > 0) {
                 $any_change = true;
             }
             // if we have no studies anymore we delete the visibilitysetting
             if (!$this->hasStudiengang()) {
                 Visibility::removePrivacySetting('studying');
             }
         }
     }
     if (!$any_change) {
         $query = "UPDATE IGNORE user_studiengang\n                      SET semester = ?\n                      WHERE user_id = ? AND studiengang_id = ? AND abschluss_id = ?";
         $statement = DBManager::get()->prepare($query);
         $change_fachsem = Request::getArray('change_fachsem');
         foreach ($change_fachsem as $studiengang_id => $abschluesse) {
             foreach ($abschluesse as $abschluss_id => $semester) {
                 $statement->execute(array($semester, $this->user->user_id, $studiengang_id, $abschluss_id));
                 if ($statement->rowCount() > 0) {
                     $any_change = true;
                 }
             }
         }
         $new_studiengang = Request::option('new_studiengang');
         if ($new_studiengang && $new_studiengang != 'none') {
             if (!$this->hasStudiengang()) {
                 Visibility::addPrivacySetting(_("Wo ich studiere"), 'studying', 'studdata');
             }
             $query = "INSERT IGNORE INTO user_studiengang\n                            (user_id, studiengang_id, abschluss_id, semester)\n                          VALUES (?, ?, ?, ?)";
             $statement = DBManager::get()->prepare($query);
             $statement->execute(array($this->user->user_id, $new_studiengang, Request::option('new_abschluss'), Request::int('fachsem')));
             if ($statement->rowCount() > 0) {
                 $any_change = true;
             }
         }
     }
     if ($any_change) {
         $this->reportSuccess(_('Die Zuordnung zu Studiengängen wurde geändert.'));
         setTempLanguage($this->user->user_id);
         $this->postPrivateMessage(_("Die Zuordnung zu Studiengängen wurde geändert!\n"));
         restoreLanguage();
     }
     $this->redirect('settings/studies');
 }
Ejemplo n.º 6
0
 /**
  * Initialize the subnavigation of this item. This method
  * is called once before the first item is added or removed.
  */
 public function initSubNavigation()
 {
     global $perm, $atime;
     parent::initSubNavigation();
     // schedule
     if (!$perm->have_perm('admin') && get_config('SCHEDULE_ENABLE')) {
         $navigation = new Navigation(_('Stundenplan'), 'dispatch.php/calendar/schedule');
         $this->addSubNavigation('schedule', $navigation);
     }
     // calendar
     $atime = $atime ? intval($atime) : Request::int($atime);
     if (get_config('CALENDAR_ENABLE')) {
         $navigation = new Navigation(_('Terminkalender'), 'dispatch.php/calendar/single', array('self' => 1));
         $this->addSubNavigation('calendar', $navigation);
     }
 }
 private function combineAssets($target, $sources = array(), $extension = '', $path = 'assets/')
 {
     $target = $path . $target . $extension;
     if (Request::int('reset') or !file_exists($this->getPluginPath() . '/' . $target)) {
         $combined = '';
         foreach ($sources as $source) {
             $file = $this->getPluginPath() . '/' . $path . $source . $extension;
             $asset = file_get_contents($file);
             $asset = trim($asset) . "\n";
             $asset = preg_replace('/assets\\/images\\/([^)]+)\\.png/ex', 'Assets::image_path("$1")', $asset);
             $combined .= $asset;
         }
         file_put_contents($this->getPluginPath() . '/' . $target, $combined);
     }
     return $this->getPluginURL() . '/' . $target;
 }
Ejemplo n.º 8
0
Archivo: bb.php Proyecto: ratbird/hope
 public function index_action($page = 1)
 {
     $this->entries_per_page = Request::int('entries_per_page', 20);
     $images = array();
     foreach (scandir($GLOBALS['DYNAMIC_CONTENT_PATH'] . '/user') as $file) {
         if (strpos($file, '_normal.png') !== FALSE && $file !== 'nobody_normal.png') {
             $images[] = array('time' => @filemtime($GLOBALS['DYNAMIC_CONTENT_PATH'] . '/user/' . $file), 'file' => $file, 'user_id' => substr($file, 0, strrpos($file, '_')));
         }
     }
     usort($images, function ($b, $a) {
         return $a['time'] - $b['time'];
     });
     $this->entries = sizeof($images);
     $this->page = $page;
     $this->images = array_slice($images, $this->entries_per_page * ($page - 1), $this->entries_per_page);
 }
Ejemplo n.º 9
0
 function update_action()
 {
     CSRFProtection::verifyUnsafeRequest();
     if (Request::submitted('ok')) {
         if (!($rule = $this->ws_rules[Request::int('ws_rule_id')])) {
             $rule = new WebserviceAccessRule();
             $rule->id = 0;
             array_unshift($this->ws_rules, $rule);
         }
         $rule->api_key = trim(Request::get('ws_rule_api_key'));
         $rule->method = trim(Request::get('ws_rule_method'));
         $rule->ip_range = trim(Request::get('ws_rule_ip_range'));
         $rule->type = trim(Request::get('ws_rule_type'));
         $msg = array();
         if (strlen($rule->api_key) < 5) {
             $msg['error'][] = _("Bitte geben Sie einen API-Key mit min. 5 Zeichen an.");
         }
         foreach ($rule->ip_range as $key => $ip) {
             if (!$ip) {
                 unset($rule->ip_range[$key]);
                 continue;
             }
             list($ip_address, $mask) = split('/', $ip);
             if (!ip2long($ip_address) || $mask && ($mask < 8 || $mask > 30)) {
                 $msg['error'][] = sprintf(_("Der IP Bereich %s ist ungültig."), htmlready($ip));
                 unset($rule->ip_range[$key]);
             }
         }
         if (!$rule->method) {
             $msg['info'][] = _("Eine Regel ohne angegebene Methode gilt für alle Methoden!");
         }
         if (!count($rule->ip_range)) {
             $msg['info'][] = _("Eine Regel ohne IP Bereich gilt für alle IP Adressen!");
         }
         if ($msg['error']) {
             PageLayout::postMessage(MessageBox::error(_("Die Regel wurde nicht gespeichert."), $msg['error']));
             $this->edit = $rule->id;
             $this->render_action('index');
             return;
         } else {
             if ($rule->store()) {
                 PageLayout::postMessage(MessageBox::success(_("Die Regel wurde gespeichert."), $msg['info']));
             }
         }
     }
     $this->redirect($this->url_for('admin/webservice_access'));
 }
Ejemplo n.º 10
0
 /**
  *
  **/
 public function extractConsumerFromRequest($key)
 {
     $key = Request::option('consumer_key', $key);
     $consumer = self::load($key);
     if (Request::submitted('store')) {
         $consumer['requester_email'] = trim(Request::get('requester_email'));
         $consumer['requester_name'] = trim(Request::get('requester_name'));
         $consumer['callback_uri'] = Request::get('callback_uri');
         $consumer['application_uri'] = Request::get('application_uri');
         $consumer['application_title'] = Request::get('application_title');
         $consumer['application_descr'] = Request::get('application_descr');
         $consumer['application_notes'] = Request::get('application_notes');
         $consumer['application_type'] = Request::option('application_type');
         $consumer['application_commercial'] = Request::int('application_commercial');
     }
     return $consumer;
 }
Ejemplo n.º 11
0
 public function index_action($verify_action = null)
 {
     if (Request::submitted('store')) {
         $this->check_ticket();
         if (Request::get('new_smsforward_rec')) {
             $this->user->smsforward_rec = get_userid(Request::get('new_smsforward_rec'));
             $this->user->smsforward_copy = 1;
         } else {
             if (Request::int('smsforward_copy') && !$this->user->smsforward_copy) {
                 $this->user->smsforward_copy = 1;
             } else {
                 if (!Request::int('smsforward_copy') && $this->user->smsforward_copy) {
                     $this->user->smsforward_copy = 0;
                 }
             }
         }
         $this->user->email_forward = Request::int('send_as_email');
         $this->user->store();
         // write to user config table
         $this->config->store('ONLINE_NAME_FORMAT', Request::option('online_format'));
         $this->config->store('MAIL_AS_HTML', Request::int('mail_format'));
         $settings = $this->settings;
         $settings['sms_sig'] = Request::get('sms_sig');
         $settings['logout_markreaded'] = Request::int('logout_markreaded');
         $settings['save_snd'] = Request::int('save_snd', 2);
         $settings['request_mail_forward'] = Request::int('request_mail_forward', 0);
         $this->config->store('MESSAGING_SETTINGS', $settings);
         $this->reportSuccess(_('Ihre Einstellungen wurden erfolgreich gespeichert.'));
         $this->redirect('settings/messaging');
     }
     if (!$this->user->smsforward_rec && Request::submitted('gosearch')) {
         $vis_query = get_vis_query('auth_user_md5');
         $query = "SELECT user_id, username, {$GLOBALS['_fullname_sql']['full_rev']} AS fullname, perms\n                      FROM auth_user_md5\n                      LEFT JOIN user_info USING (user_id)\n                      WHERE (username LIKE CONCAT('%', :needle, '%') OR\n                             Vorname LIKE CONCAT('%', :needle, '%') OR\n                             Nachname LIKE CONCAT('%', :needle, '%'))\n                        AND user_id != :user_id AND {$vis_query}\n                      ORDER BY Nachname ASC";
         $statement = DBManager::get()->prepare($query);
         $statement->bindValue(':needle', Request::get('search_exp'));
         $statement->bindValue(':user_id', $this->user->user_id);
         $statement->execute();
         $matches = $statement->fetchAll(PDO::FETCH_ASSOC);
     } else {
         $matches = false;
     }
     $this->matches = $matches;
     $this->verify_action = $verify_action;
 }
Ejemplo n.º 12
0
 public function approve_action($plugin_id)
 {
     $this->marketplugin = new MarketPlugin($plugin_id);
     if ($this->marketplugin['approved']) {
         throw new Exception("Plugin ist schon reviewt.");
     }
     $this->marketplugin['approved'] = (int) Request::int("approved");
     if (!$this->marketplugin['approved']) {
         $this->marketplugin['publiclyvisible'] = 0;
     }
     if ($this->marketplugin['approved'] && $this->marketplugin['publiclyvisible']) {
         $this->marketplugin['published'] = time();
     }
     $this->marketplugin->store();
     $messaging = new messaging();
     $messaging->insert_message(sprintf(_("Ihr Plugin %s wurde reviewt:"), $this->marketplugin['name']) . "\n\n" . ($this->marketplugin['approved'] ? _("Es ist in den Marktplatz aufgenommen worden!") : _("Es ist leider noch nicht in den Marktplatz aufgenommen.")) . "\n\n" . (Request::get("review") ? _("Begründung:") . "\n\n" . Request::get("review") : _("Ein ausführliches Review wurde nicht angegeben und muss bei Bedarf direkt angefragt werden.")), get_username($this->marketplugin['user_id']), '', '', '', '', '', _("Pluginreview"), true, 'normal', "pluginreview");
     PageLayout::postMessage(MessageBox::success(_("Review wurde gespeichert.")));
     $this->redirect('approving/overview');
 }
Ejemplo n.º 13
0
 /**
  * Displays the online list.
  **/
 public function index_action()
 {
     $this->contact_count = Contact::countBySQL('owner_id=?', array(User::findCurrent()->id));
     // Total number of contacts
     $this->users = $this->getOnlineUsers($this->settings['show_groups']);
     $this->showOnlyBuddies = $this->settings['show_only_buddys'];
     $this->showGroups = $this->settings['show_groups'];
     $this->limit = Config::getInstance()->ENTRIES_PER_PAGE;
     $max_page = ceil(count($this->users['users']) / $this->limit);
     $this->page = min(Request::int('page', 1), $max_page);
     // Setup sidebar
     $sidebar = Sidebar::get();
     $sidebar->setImage('sidebar/person-sidebar.png');
     // Add buddy configuration option to sidebar only if the user actually
     // has buddies
     if ($this->contact_count > 0) {
         $actions = new OptionsWidget();
         $actions->addCheckbox(_('Nur Kontakte in der Übersicht der aktiven Benutzer anzeigen'), $this->settings['show_only_buddys'], $this->url_for('online/config/show_buddies/' . get_ticket()));
         $actions->addCheckbox(_('Kontaktgruppen bei der Darstellung berücksichtigen'), $this->settings['show_groups'], $this->url_for('online/config/show_groups/' . get_ticket()));
         $sidebar->addWidget($actions);
     }
 }
Ejemplo n.º 14
0
 /**
  *
  **/
 public function edit_action($key = null)
 {
     $this->consumer = $this->store->extractConsumerFromRequest($key);
     if (Request::submitted('store')) {
         $errors = $this->store->validate($this->consumer);
         if (!empty($errors)) {
             $message = MessageBox::error(_('Folgende Fehler sind aufgetreten:'), $errors);
             PageLayout::postMessage($message);
             return;
         }
         $consumer = $this->store->store($this->consumer, Request::int('enabled', 0));
         if ($key) {
             $message = MessageBox::success(_('Die Applikation wurde erfolgreich gespeichert.'));
         } else {
             $details = $this->render_keys($key, $consumer);
             $message = MessageBox::success(_('Die Applikation wurde erfolgreich erstellt, die Schlüssel finden Sie in den Details dieser Meldung.'), $details, true);
         }
         PageLayout::postMessage($message);
         $this->redirect('admin/index#' . $consumer['consumer_key']);
         return;
     }
     $this->set_layout($GLOBALS['template_factory']->open('layouts/base_without_infobox'));
     $this->id = $id;
 }
Ejemplo n.º 15
0
?>
" href="<?php 
echo URLHelper::getLink("?", array('offset' => Request::int("offset") - $messageBufferCount > 0 ? Request::int("offset") - $messageBufferCount : null));
?>
"><?php 
echo Icon::create('arr_1left', 'clickable')->asImg(["class" => "text-bottom"]);
?>
</a>
                        <? endif ?>
                        <? if ($more) : ?>
                            <div style="float:right">
                                <a title="<?php 
echo _("weiter");
?>
" href="<?php 
echo URLHelper::getLink("?", array('offset' => Request::int("offset") + $messageBufferCount));
?>
"><?php 
echo Icon::create('arr_1right', 'clickable')->asImg(["class" => "text-bottom"]);
?>
</a>
                            </div>
                        <? endif ?>
                    </td>
                </tr>
                </noscript>
                <? endif ?>
            <? else : ?>
            <tr>
                <td colspan="7" style="text-align: center"><?php 
echo _("Keine Nachrichten");
Ejemplo n.º 16
0
            $query = "SELECT seminar_inst.seminar_id\n                  FROM seminar_inst\n                  LEFT JOIN seminare AS s ON (seminar_inst.seminar_id = s.Seminar_id)\n                  INNER JOIN semester_data sd\n                     ON ((s.start_time <= sd.beginn AND sd.beginn <= (s.start_time + s.duration_time )\n                         OR (s.start_time <= sd.beginn AND s.duration_time = -1))\n                      AND semester_id = ?)\n                  WHERE seminar_inst.Institut_id = ?";
            array_unshift($parameters, $show_semester);
        } else {
            $query = "SELECT seminar_inst.seminar_id\n                  FROM seminar_inst\n                  LEFT JOIN seminare AS s ON (seminar_inst.seminar_id = s.Seminar_id)\n                  WHERE seminar_inst.Institut_id = ?";
        }
        if (!$GLOBALS['perm']->have_perm(get_config('SEM_VISIBILITY_PERM'))) {
            $query .= " AND s.visible = 1";
        }
        $statement = DBManager::get()->prepare($query);
        $statement->execute($parameters);
        $seminar_ids = $statement->fetchAll(PDO::FETCH_COLUMN);
        $sem_browse_obj->sem_browse_data['search_result'] = array_flip($seminar_ids);
        $sem_browse_obj->show_result = true;
        break;
}
if (Request::int('send_excel')) {
    $tmpfile = basename($sem_browse_obj->create_result_xls($excel_text));
    if ($tmpfile) {
        header('Location: ' . getDownloadLink($tmpfile, _("Veranstaltungsübersicht.xls"), 4));
        page_close();
        die;
    }
}
PageLayout::setHelpKeyword("Basis.Informationsseite");
PageLayout::setTitle(($level == "s" ? $SessSemName["header_line"] . " - " : "") . $head_text);
if ($level == "s" && $SessSemName[1] && $SessSemName["class"] == "inst") {
    Navigation::activateItem('/course/main/courses');
}
$sidebar = Sidebar::get();
$sidebar->setImage('sidebar/seminar-sidebar.png');
$semester = new SelectWidget(_("Semester:"), URLHelper::getURL(), 'select_sem');
Ejemplo n.º 17
0
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
require '../lib/bootstrap.php';
page_open(array("sess" => "Seminar_Session", "auth" => "Seminar_Default_Auth", "perm" => "Seminar_Perm", "user" => "Seminar_User"));
$auth->login_if(Request::get('again') && $auth->auth["uid"] == "nobody");
include 'lib/seminar_open.php';
// initialise Stud.IP-Session
// -- here you have to put initialisations for the current page
require_once 'lib/wiki.inc.php';
$view = Request::get('view');
$keyword = Request::get('keyword');
$version = Request::int('version');
$cmd = Request::option('cmd');
if ($view == "wikiprint") {
    printWikiPage($keyword, $version);
    page_close();
    die;
} elseif ($view == "wikiprintall") {
    printAllWikiPages($SessSemName[1], $SessSemName['header_line']);
    page_close();
    die;
} elseif ($view == "export_pdf") {
    include_once 'lib/classes/exportdocument/ExportPDF.class.php';
    exportWikiPagePDF($keyword, $version);
} elseif ($view == "exportall_pdf") {
    include_once 'lib/classes/exportdocument/ExportPDF.class.php';
    exportAllWikiPagesPDF("all", Request::option('sortby'));
Ejemplo n.º 18
0
/**
* Exports lecture-data.
*
* This function gets the data of the lectures at an institute and writes it into $data_object.
* It calls output_data afterwards.
*
* @access   public
* @param        string  $inst_id    Stud.IP-inst_id for export
* @param        string  $ex_sem_id  allows to choose if only a specific lecture is to be exported
*/
function export_sem($inst_id, $ex_sem_id = 'all')
{
    global $range_id, $xml_file, $o_mode, $xml_names_lecture, $xml_groupnames_lecture, $object_counter, $SEM_TYPE, $SEM_CLASS, $filter, $ex_sem, $ex_sem_class, $ex_person_details, $persons;
    $ex_only_homeinst = Request::int('ex_only_homeinst', 0);
    // Prepare user count statement
    $query = "SELECT COUNT(user_id)\n              FROM seminar_user\n              WHERE seminar_id = ? AND status = 'autor'";
    $count_statement = DBManager::get()->prepare($query);
    // Prepare inner statement
    $query = "SELECT seminar_user.position,\n                     auth_user_md5.user_id, auth_user_md5.username, auth_user_md5.Vorname, auth_user_md5.Nachname,\n                     user_info.title_front, user_info.title_rear\n              FROM seminar_user\n              LEFT JOIN user_info USING (user_id)\n              LEFT JOIN auth_user_md5 USING (user_id)\n              WHERE seminar_user.status = 'dozent' AND seminar_user.Seminar_id = ?\n              ORDER BY seminar_user.position";
    $inner_statement = DBManager::get()->prepare($query);
    // Prepare (build) and execute outmost query
    switch ($filter) {
        case "seminar":
            $order = " seminare.Name";
            break;
        case "status":
            $order = "seminare.status, seminare.Name";
            $group = "FIRSTGROUP";
            $group_tab_zelle = "status";
            $do_group = true;
            break;
        default:
            $order = "seminare.status, seminare.Name";
            $group = "FIRSTGROUP";
            $group_tab_zelle = "status";
            $do_group = true;
    }
    $parameters = array();
    if (isset($ex_sem) && ($semester = Semester::find($ex_sem))) {
        $addquery = " AND seminare.start_time <= :begin AND (:begin <= (seminare.start_time + seminare.duration_time) OR seminare.duration_time = -1) ";
        $parameters[':begin'] = $semester->beginn;
    }
    if ($ex_sem_id != 'all') {
        if ($ex_sem_id == 'root') {
            $addquery .= " AND EXISTS (SELECT * FROM seminar_sem_tree WHERE seminar_sem_tree.seminar_id = seminare.Seminar_id) ";
        } else {
            if (!is_array($ex_sem_id)) {
                $ex_sem_id = array($ex_sem_id);
            }
            $ex_sem_id = array_flip($ex_sem_id);
        }
    }
    if (!$GLOBALS['perm']->have_perm('root') && !$GLOBALS['perm']->have_studip_perm('admin', $inst_id)) {
        $addquery .= " AND visible = 1 ";
    }
    if (count($ex_sem_class) > 0) {
        $allowed_sem_types = array();
        foreach (array_keys($ex_sem_class) as $semclassid) {
            $allowed_sem_types += array_keys(SeminarCategories::get($semclassid)->getTypes());
        }
        $addquery .= " AND seminare.status IN (:status) ";
        $parameters[':status'] = $allowed_sem_types;
    } else {
        $addquery .= " AND seminare.status NOT IN (:status) ";
        $parameters[':status'] = studygroup_sem_types() ?: '';
    }
    if ($ex_only_homeinst) {
        $query = "SELECT seminare.*,Seminar_id as seminar_id, Institute.Name AS heimateinrichtung\n                  FROM seminare\n                  LEFT JOIN Institute USING (Institut_id)\n                  WHERE Institut_id = :institute_id {$addquery}\n                  ORDER BY " . $order;
        $parameters[':institute_id'] = $inst_id;
    } else {
        $query = "SELECT seminare.*,Seminar_id as seminar_id, Institute.Name AS heimateinrichtung\n                  FROM seminar_inst\n                  LEFT JOIN seminare USING (Seminar_id)\n                  LEFT JOIN Institute ON seminare.Institut_id = Institute.Institut_id\n                  WHERE seminar_inst.Institut_id = :institute_id {$addquery}\n                  ORDER BY " . $order;
        $parameters[':institute_id'] = $inst_id;
    }
    $statement = DBManager::get()->prepare($query);
    $statement->execute($parameters);
    $data = $statement->fetchAll(PDO::FETCH_ASSOC);
    $data_object .= xml_open_tag($xml_groupnames_lecture['group']);
    foreach ($data as $row) {
        if (is_array($ex_sem_id) && !isset($ex_sem_id[$row['seminar_id']])) {
            continue;
        }
        $group_string = '';
        if ($do_group && $group != $row[$group_tab_zelle]) {
            if ($group != 'FIRSTGROUP') {
                $group_string .= xml_close_tag($xml_groupnames_lecture['subgroup1']);
            }
            if ($group_tab_zelle == 'status') {
                $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup1'], $SEM_TYPE[$row[$group_tab_zelle]]['name']);
            } else {
                $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup1'], $row[$group_tab_zelle]);
            }
            $group = $row[$group_tab_zelle];
            if ($do_subgroup && $subgroup == $row[$subgroup_tab_zelle]) {
                $subgroup = "NEXTGROUP";
            }
        }
        if ($do_subgroup && $subgroup != $row[$subgroup_tab_zelle]) {
            if ($subgroup != 'FIRSTGROUP') {
                $group_string = xml_close_tag($xml_groupnames_lecture['subgroup2']) . $group_string;
            }
            $group_string .= xml_open_tag($xml_groupnames_lecture['subgroup2'], $row[$subgroup_tab_zelle]);
            $subgroup = $row[$subgroup_tab_zelle];
        }
        $data_object .= $group_string;
        $object_counter += 1;
        $data_object .= xml_open_tag($xml_groupnames_lecture['object'], $row['seminar_id']);
        $sem_obj = new Seminar($row['seminar_id']);
        while (list($key, $val) = each($xml_names_lecture)) {
            if ($val == '') {
                $val = $key;
            }
            if ($key == 'status') {
                $data_object .= xml_tag($val, $SEM_TYPE[$row[$key]]['name']);
            } elseif ($key == 'ort') {
                $data_object .= xml_tag($val, $sem_obj->getDatesTemplate('dates/seminar_export_location'));
            } elseif ($key == 'bereich' && $SEM_CLASS[$SEM_TYPE[$row['status']]['class']]['bereiche']) {
                $data_object .= xml_open_tag($xml_groupnames_lecture['childgroup3']);
                $pathes = get_sem_tree_path($row['seminar_id']);
                if (is_array($pathes)) {
                    foreach ($pathes as $path_name) {
                        $data_object .= xml_tag($val, $path_name);
                    }
                } else {
                    $data_object .= xml_tag($val, 'n.a.');
                }
                $data_object .= xml_close_tag($xml_groupnames_lecture['childgroup3']);
            } elseif ($key == 'admission_turnout') {
                $data_object .= xml_open_tag($val, $row['admission_type'] ? _('max.') : _('erw.'));
                $data_object .= $row[$key];
                $data_object .= xml_close_tag($val);
            } elseif ($key == 'teilnehmer_anzahl_aktuell') {
                $count_statement->execute(array($row['seminar_id']));
                $count = $count_statement->fetchColumn();
                $count_statement->closeCursor();
                $data_object .= xml_tag($val, $count);
            } elseif ($key == 'metadata_dates') {
                $data_object .= xml_open_tag($xml_groupnames_lecture['childgroup1']);
                $vorb = vorbesprechung($row['seminar_id'], 'export');
                if ($vorb != false) {
                    $data_object .= xml_tag($val[0], $vorb);
                }
                if (($first_date = SeminarDB::getFirstDate($row['seminar_id'])) && count($first_date)) {
                    $really_first_date = new SingleDate($first_date[0]);
                    $data_object .= xml_tag($val[1], $really_first_date->getDatesExport());
                }
                $data_object .= xml_tag($val[2], $sem_obj->getDatesExport());
                $data_object .= xml_close_tag($xml_groupnames_lecture["childgroup1"]);
            } elseif ($key == 'Institut_id') {
                $data_object .= xml_tag($val, $row['heimateinrichtung'], array('key' => $row[$key]));
            } elseif ($row[$key] != '') {
                $data_object .= xml_tag($val, $row[$key]);
            }
        }
        $data_object .= "<" . $xml_groupnames_lecture['childgroup2'] . ">\n";
        $inner_statement->execute(array($row['seminar_id']));
        while ($inner = $inner_statement->fetch(PDO::FETCH_ASSOC)) {
            if ($ex_person_details) {
                $persons[$inner['user_id']] = true;
            }
            $content_string = $inner['Vorname'] . ' ' . $inner['Nachname'];
            if ($inner['title_front'] != '') {
                $content_string = $inner['title_front'] . ' ' . $content_string;
            }
            if ($inner['title_rear'] != '') {
                $content_string .= ', ' . $inner['title_rear'];
            }
            $data_object .= xml_tag($xml_groupnames_lecture['childobject2'], $content_string, array('key' => $inner['username']));
        }
        $data_object .= xml_close_tag($xml_groupnames_lecture['childgroup2']);
        // freie Datenfelder ausgeben
        $data_object .= export_datafields($row['seminar_id'], $xml_groupnames_lecture['childgroup4'], $xml_groupnames_lecture['childobject4'], 'sem', $row['status']);
        $data_object .= xml_close_tag($xml_groupnames_lecture['object']);
        reset($xml_names_lecture);
        output_data($data_object, $o_mode);
        $data_object = '';
    }
    if ($do_subgroup && $subgroup != 'FIRSTGROUP') {
        $data_object .= xml_close_tag($xml_groupnames_lecture['subgroup2']);
    }
    if ($do_group && $group != 'FIRSTGROUP') {
        $data_object .= xml_close_tag($xml_groupnames_lecture['subgroup1']);
    }
    $data_object .= xml_close_tag($xml_groupnames_lecture['group']);
    output_data($data_object, $o_mode);
}
Ejemplo n.º 19
0
 /**
  * Stores a user's details.
  */
 public function store_action()
 {
     $this->check_ticket();
     $changed = false;
     if (Config::get()->ENABLE_SKYPE_INFO) {
         $new_skype_name = Request::get('skype_name');
         if ($new_skype_name != $this->config->SKYPE_NAME) {
             $this->config->store('SKYPE_NAME', $new_skype_name);
             Visibility::updatePrivacySettingWithTest(Request::get('skype_name'), _("Skype Name"), "skype_name", 'privatedata', 1, $this->user->user_id);
             $changed = true;
         }
         if (Request::int('skype_online_status') != $this->config->SKYPE_ONLINE_STATUS) {
             $this->config->store('SKYPE_ONLINE_STATUS', Request::int('skype_online_status'));
             Visibility::updatePrivacySettingWithTest(Request::int('skype_online_status'), _("Skype Online Status"), "skype_online_status", 'skype_name', 1, $this->user->user_id);
             $changed = true;
         }
     }
     $mapping = array('telefon' => 'privatnr', 'cell' => 'privatcell', 'anschrift' => 'privadr', 'home' => 'Home', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi');
     // Visibilitymapping Remove in Stud.IP 3.0 with a migration
     $vis_mapping = array('telefon' => 'private_phone', 'cell' => 'private_cell', 'anschrift' => 'privadr', 'home' => 'homepage', 'motto' => 'motto', 'hobby' => 'hobby', 'lebenslauf' => 'lebenslauf', 'schwerp' => 'schwerp', 'publi' => 'publi');
     $settingsname = array('telefon' => _('Private Telefonnummer'), 'cell' => _('Private Handynummer'), 'anschrift' => _('Private Adresse'), 'home' => _('Homepage-Adresse'), 'motto' => _('Motto'), 'hobby' => _('Hobbies'), 'lebenslauf' => _('Lebenslauf'), 'schwerp' => _('Arbeitsschwerpunkte'), 'publi' => _('Publikationen'));
     foreach ($mapping as $key => $column) {
         $value = Request::get($key);
         if (in_array($key, array('hobby', 'lebenslauf', 'schwerp', 'publi'))) {
             // purify HTML input for these fields if wysiwyg is used
             $value = Studip\Markup::purifyHtml($value);
         }
         if ($this->user->{$column} != $value && $this->shallChange('user_info.' . $column, $column, $value)) {
             $this->user->{$column} = $value;
             Visibility::updatePrivacySettingWithTest($value, $settingsname[$key], $vis_mapping[$key], 'privatedata', 1, $this->user->user_id);
             $changed = true;
         }
     }
     $datafields_changed = false;
     $errors = array();
     $datafields = DataFieldEntry::getDataFieldEntries($this->user->user_id, 'user');
     $data = Request::getArray('datafields');
     foreach ($datafields as $id => $entry) {
         if (isset($data[$id]) && $data[$id] != $entry->getValue()) {
             // i really dont know if this is correct but it works
             Visibility::updatePrivacySettingWithTest($data[$id], $entry->getName(), $entry->getID(), 'additionaldata', 1, $this->user->user_id);
             $entry->setValueFromSubmit($data[$id]);
             if ($entry->isValid()) {
                 if ($entry->store()) {
                     $datafields_changed = true;
                 }
             } else {
                 $errors[] = sprintf(_('Fehlerhafter Eintrag im Feld <em>%s</em>: %s (Eintrag wurde nicht gespeichert)'), $entry->getName(), $entry->getDisplayValue());
             }
         }
     }
     if (count($errors) > 0) {
         $this->reportErrorWithDetails(_('Bitte überprüfen Sie Ihre Eingaben.'), $errors);
     } else {
         if ($this->user->store() || $changed || $datafields_changed) {
             $this->reportSuccess(_('Daten im Lebenslauf u.a. wurden geändert.'));
             setTempLanguage($this->user->user_id);
             $this->postPrivateMessage(_('Daten im Lebenslauf u.a. wurden geändert.'));
             restoreLanguage();
         }
     }
     $this->redirect('settings/details');
 }
Ejemplo n.º 20
0
 /**
  * Deletes the given user list.
  * 
  * @param String $userlistId the user list to delete
  */
 public function delete_action($userlistId)
 {
     $this->userlist = new AdmissionUserList($userlistId);
     if (Request::int('really')) {
         $this->userlist->delete();
         $this->redirect($this->url_for('admission/userlist'));
     }
     if (Request::int('cancel')) {
         $this->redirect($this->url_for('admission/userlist'));
     }
 }
Ejemplo n.º 21
0
 /**
  * save changes to a log action
  */
 function save_action($action_id)
 {
     $description = Request::get('description');
     $info_template = Request::get('info_template');
     $active = Request::get('active') ? 1 : 0;
     $expires = (int) Request::int('expires') * 86400;
     try {
         $this->event_log->update_log_action($action_id, $description, $info_template, $active, $expires);
     } catch (InvalidArgumentException $ex) {
         $this->error_msg = $ex->getMessage();
     }
     $this->log_actions = $this->event_log->get_log_actions();
     $this->render_action('admin');
 }
Ejemplo n.º 22
0
 /**
  * Interface to edit a group or create a new one.
  *
  * @param string group id
  */
 public function editGroup_action($group_id = null)
 {
     $this->check('edit');
     if (Request::isPost()) {
         $group = new Statusgruppen($group_id);
         if ($group->isNew()) {
             $group->range_id = $_SESSION['SessionSeminar'];
         }
         $group->name = Request::get('name');
         $group->name_w = Request::get('name_w');
         $group->name_m = Request::get('name_m');
         $group->size = Request::int('size');
         $group->range_id = Request::option('range_id', $group->range_id);
         $group->position = Request::int('position', $group->position);
         $group->selfassign = Request::int('selfassign', 0);
         $group->store();
         $group->setDatafields(Request::getArray('datafields'));
         $message = $group->isNew() ? _('Die Gruppe wurde angelegt.') : _('Die Gruppe wurde gespeichert');
         PageLayout::postMessage(MessageBox::success($message));
         $this->redirect('admin/statusgroups');
         return;
     }
     $this->group = new Statusgruppen($group_id);
     $this->loadGroups();
 }
Ejemplo n.º 23
0
 /**
  * Saves data for a new or existing step.
  * @param string $id ID of the step to save; if empty, create new step.
  */
 public function save_action($id = '')
 {
     CSRFProtection::verifyUnsafeRequest();
     if (Request::submitted('submit')) {
         if ($id) {
             $step = CourseWizardStepRegistry::find($id);
             $step->name = Request::get('name');
             $step->classname = Request::get('classname');
             $step->number = Request::int('number');
             $step->enabled = Request::option('enabled') ? 1 : 0;
             if ($step->store()) {
                 PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.')));
             } else {
                 PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.')));
             }
         } else {
             $classname = Request::get('classname');
             // Check if given class name can be found in system.
             if (!class_exists($classname)) {
                 PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" wurde nicht gefunden.'), htmlReady($classname))));
                 // Class found, now check if it implements the interface definition for wizard steps.
             } else {
                 if (!in_array('CourseWizardStep', class_implements($classname) ?: array())) {
                     PageLayout::postMessage(MessageBox::error(sprintf(_('Die angegebene PHP-Klasse "%s" implementiert nicht das Interface CourseWizardStep.'), htmlReady($classname))));
                     // All ok, create new database entry.
                 } else {
                     $step = new CourseWizardStepRegistry();
                     $step->name = Request::get('name');
                     $step->classname = $classname;
                     $step->number = Request::int('number');
                     $step->enabled = Request::option('enabled') ? 1 : 0;
                     if ($step->store()) {
                         PageLayout::postMessage(MessageBox::success(_('Die Daten wurden gespeichert.')));
                     } else {
                         PageLayout::postMessage(MessageBox::error(_('Die Daten konnten nicht gespeichert werden.')));
                     }
                 }
             }
         }
     }
     $this->redirect($this->url_for('admin/coursewizardsteps'));
 }
Ejemplo n.º 24
0
        <label>
            <?php 
echo _('Bezeichnung');
?>

            <select name="type" id="type" <?php 
echo LockRules::Check($institute->id, 'type') ? 'readonly disabled' : '';
?>
 >
            <? foreach ($GLOBALS['INST_TYPE'] as $i => $inst_type): ?>
                <option value="<?php 
echo $i;
?>
" <?php 
echo Request::int('type', $institute->type) == $i ? 'selected' : '';
?>
>
                    <?php 
echo htmlReady($inst_type['name']);
?>
                </option>
            <? endforeach; ?>
           </select>
        </label>

        <label>
            <?php 
echo _('Straße');
?>
            <input type="text" size="80" <?php 
Ejemplo n.º 25
0
        $_SESSION['resources_data']["schedule_mode"] = "graphical";
        $_SESSION['resources_data']["show_repeat_mode"] = 'all';
        $_SESSION['resources_data']['group_schedule_dow'] = 1;
    }
    $_SESSION['_default_sem'] = $_SESSION['resources_data']['sem_schedule_semester_id'];
}

if (Request::option('show_repeat_mode') && Request::submitted('send_schedule_repeat_mode')) {
    $_SESSION['resources_data']["show_repeat_mode"] = Request::option('show_repeat_mode');
}

if (Request::get('time_range')) {
    if (Request::get('time_range') == "FALSE")
        $_SESSION['resources_data']["schedule_time_range"] = '';
    else
        $_SESSION['resources_data']["schedule_time_range"] = Request::int('time_range');
}

/*****************************************************************************
some other stuff ;-)
/*****************************************************************************/

//display perminvalid window
if ((in_array("1", $msg->codes)) || (in_array("25", $msg->codes))) {
    $forbiddenObject = ResourceObject::Factory($_SESSION['resources_data']["actual_object"]);
    if ($forbiddenObject->isLocked()) {
        $lock_ts = getLockPeriod("edit");
        $msg->addMsg(31, array(date("d.m.Y, G:i", $lock_ts[0]), date("d.m.Y, G:i", $lock_ts[1])));
    }
    $msg->displayAllMsg("window");
    die;
Ejemplo n.º 26
0
 /**
  * Define routes on router
  *
  * @param Slim Slim instance as router
  **/
 public function routes(&$router)
 {
     // Inbox and outbox
     // List folders
     $router->get('/messages/:box', function ($box) use($router) {
         $val = Helper::getUserData();
         $settings = $val['my_messaging_settings'] ?: array();
         $folders = $settings['folder'];
         $folders['in'][0] = _('Posteingang');
         $folders['out'][0] = _('Postausgang');
         $folders = $folders[$box];
         $router->render(compact('folders'));
     })->conditions(array('box' => '(in|out)'));
     // Create new folder
     $router->post('/messages/:box', function ($box) use($router) {
         $folder = trim(\Request::get('folder', ''));
         $val = Helper::getUserData();
         if (empty($folder)) {
             $router->halt(406, 'No folder name provided');
         }
         if (false and preg_match('/[^a-z0-9]/', $folder)) {
             $router->halt(406, 'Invalid folder name provided');
         }
         if (in_array($folder, $val['my_messaging_settings']['folder'][$box]) || ($box === 'in' and $folder === _('Posteingang')) || ($box === 'out' and $folder === _('Postausgang'))) {
             $router->halt(409, 'Duplicate');
         }
         $val['my_messaging_settings']['folder'][$box][] = $folder;
         Helper::setUserData($val);
         $GLOBALS['user']->unregister('my_messaging_settings');
         $router->halt(201);
     })->conditions(array('box' => '(in|out)'));
     // Folders
     // List messages
     $router->get('/messages/:box/:folder', function ($box, $folder) use($router) {
         $val = Helper::getUserData();
         $settings = $val['my_messaging_settings'] ?: array();
         if ($folder != 0 && !isset($settings['folder'][$box][$folder])) {
             $router->halt(404, sprintf('Folder %s-%s not found', $box, $folder));
         }
         error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
         $ids = Message::folder($box == 'in' ? 'rec' : 'snd', $folder);
         $messages = Message::load($ids);
         if ($router->compact()) {
             $router->render(compact('messages'));
             return;
         }
         $users = array();
         foreach ($messages as $message) {
             if ($message['sender_id'] != '____%system%____' && !isset($users[$message['sender_id']])) {
                 $users[$message['sender_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['sender_id']));
             }
             if ($message['receiver_id'] != '____%system%____' && !isset($users[$message['receiver_id']])) {
                 $users[$message['receiver_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['receiver_id']));
             }
         }
         $router->render(compact('messages', 'users'));
     })->conditions(array('box' => '(in|out)', array('folder' => '\\d+')));
     // Direct access to messages
     // Get count of message
     $router->get('/messages', function () use($router) {
         $count = array('read' => 0 + count_messages_from_user('in', ' AND message_user.readed = 1 '), 'unread' => 0 + count_messages_from_user('in', ' AND message_user.readed = 0 '));
         $router->render($count);
     });
     // Create a message
     $router->post('/messages', function () use($router) {
         $subject = trim($_POST['subject'] ?: '');
         if (empty($subject)) {
             $router->halt(406, 'No subject provided');
         }
         $message = trim($_POST['message'] ?: '');
         if (empty($message)) {
             $router->halt(406, 'No message provided');
         }
         $usernames = array_map(function ($id) use($router) {
             $user = \User::find($id);
             if (!$user) {
                 $router->halt(404, sprintf('Receiver user id %s not found', $id));
             }
             return $user['username'];
         }, (array) ($_POST['user_id'] ?: null));
         $message_id = md5(uniqid('message', true));
         check_messaging_default();
         $messaging = new \messaging();
         $result = $messaging->insert_message($message, $usernames, $GLOBALS['user']->id, time(), $message_id, false, \Request::get('signature'), $subject, \Request::int('email', 0));
         if (!$result) {
             $this->halt(500, 'Could not create message');
         }
         $router->render($router->dispatch('get', '/messages/:message_id', $message_id), 201);
     });
     // Load a message
     $router->get('/messages/:message_id', function ($message_id) use($router) {
         $message = Message::load($message_id);
         if (!$message) {
             $router->halt(404, sprintf('Message %s not found', $message_id));
         }
         if ($router->compact()) {
             $router->render(compact('message'));
             return;
         }
         $users = array();
         if ($message['sender_id'] != '____%system%____' && !isset($users[$message['sender_id']])) {
             $users[$message['sender_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['sender_id']));
         }
         if ($message['receiver_id'] != '____%system%____' && !isset($users[$message['receiver_id']])) {
             $users[$message['receiver_id']] = reset($router->dispatch('get', '/user(/:user_id)', $message['receiver_id']));
         }
         $router->render(compact('message', 'users'));
     });
     // Destroy a message
     $router->delete('/messages/:message_id', function ($message_id) use($router) {
         $message = Message::load($message_id, array('mu.dont_delete'));
         if (!$message) {
             $router->halt(404, sprintf('Message %s not found', $message_id));
         }
         if ($message['dont_delete']) {
             $router->halt(403, 'Message shall not be deleted');
         }
         $messaging = new messaging();
         $messaging->delete_message($message_id);
         $router->halt(204);
     });
     // Read (load and update read flag) a message
     $router->put('/messages/:message_id/read', function ($message_id) use($router) {
         $message = Message::load($message_id);
         if (!$message) {
             $router->halt(404, sprintf('Message %s not found', $message_id));
         }
         $router->render($message);
         $messaging = new messaging();
         $messaging->set_read_message($message_id);
         $router->halt(204);
     });
     $router->put('/messages/read', function () use($router) {
         Message::readAll($GLOBALS['user']->id);
         $router->halt(200);
     });
     // Move message
     $router->put('/messages/:message_id/move/:folder', function ($folder, $message_id) use($router) {
         $val = Helper::getUserData();
         $settings = $val['my_messaging_settings'] ?: array();
         if ($folder != 0 && !isset($settings['folder'][$box][$folder])) {
             $router->halt(404, sprintf('Folder %s-%s not found', $box, $folder));
         }
         $message = Message::load($message_id);
         if (!$message) {
             $router->halt(404, sprintf('Message %s not found', $message_id));
         }
         Message::move($message_id, $folder);
         $router->halt(204);
     })->conditions(array('folder' => '\\d+'));
 }
Ejemplo n.º 27
0
    header("Content-Range: bytes {$start}-{$end}/{$filesize}");
    header("Content-Length: {$length}");
} elseif ($filesize) {
    header("Content-Length: {$filesize}");
}
header("Expires: Mon, 12 Dec 2001 08:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
if ($_SERVER['HTTPS'] == "on") {
    header("Pragma: public");
    header("Cache-Control: private");
} else {
    header("Pragma: no-cache");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    // HTTP/1.1
}
header("Cache-Control: post-check=0, pre-check=0", false);
header("Content-Type: {$content_type}");
header("Content-Disposition: {$content_disposition}; filename=\"{$file_name}\"");
Metrics::increment('core.file_download');
if ($type != 5) {
    @readfile_chunked($path_file, $start, $end);
    if (in_array($type, array(0, 6)) && !$start) {
        TrackAccess($file_id, 'dokument');
    }
} else {
    echo $the_data;
}
//remove temporary file after zipping
if (Request::int('zip') || $type == 4) {
    @unlink($path_file);
}
Ejemplo n.º 28
0
 public function delete_sem_type_action()
 {
     if (count($_POST)) {
         $sem_type = $GLOBALS['SEM_TYPE'][Request::int("sem_type")];
         if (!$sem_type->delete()) {
             throw new Exception("Could not delete sem_type because it' still in use.");
         }
     }
     $this->render_nothing();
 }
Ejemplo n.º 29
0
 public function testIntParam()
 {
     $this->assertNull(Request::int('null'));
     $this->assertSame(Request::int('a'), 0);
     $this->assertSame(Request::int('c'), -23);
     $this->assertSame(Request::int('d'), 12);
     $this->assertSame(Request::int('e'), 3);
     $this->assertNull(Request::int('v1'));
 }
Ejemplo n.º 30
0
        <? endif; ?>
            <input type="submit" value="<?php 
echo _('Suchen');
?>
">
        </li>
    <? endforeach; ?>
    </ul>
<? if (!empty($filters)): ?>
    <ul class="filters">
    <? foreach ($filters as $key => $label): ?>
        <label>
            <input type="checkbox" name="<?php 
echo htmlReady($key);
?>
" value="1" <? if (!$has_data || Request::int($key)) echo 'checked'; ?>>
            <?php 
echo htmlReady($label);
?>
        </label>
    <? endforeach; ?>
    </ul>
<? endif; ?>
<? if (!empty($quick_search)): ?>
<script>
(function ($) {
<? foreach ($quick_search as $needle): ?>
    STUDIP.QuickSearch.autocomplete('needle-<?php 
echo md5($url . '|' . $needle['name']);
?>
', '<?php