/** * Show administration page for user's news * * @param string $area_type area filter */ function admin_news_action($area_type = '') { // check permission if (!$GLOBALS['auth']->is_authenticated() || $GLOBALS['user']->id === 'nobody') { throw new AccessDeniedException(); } $GLOBALS['perm']->check('user'); // initialize $news_result = array(); $limit = 100; if (Request::get('news_filter') == 'set') { $this->news_searchterm = Request::option('news_filter_term'); $this->news_startdate = Request::int('news_filter_start'); $this->news_enddate = Request::int('news_filter_end'); } else { $this->news_startdate = time(); } if (is_array($this->area_structure[$area_type])) { $this->area_type = $area_type; } $this->set_layout($GLOBALS['template_factory']->open('layouts/base')); PageLayout::setTitle(_('Meine Ankündigungen')); PageLayout::setHelpKeyword('Basis.News'); Navigation::activateItem('/tools/news'); if (Request::submitted('reset_filter')) { $area_type = 'all'; $this->news_searchterm = ''; $this->news_startdate = ''; $this->news_enddate = ''; } // delete news if (Request::submitted('remove_marked_news')) { $remove_ranges = array(); foreach (Request::optionArray('mark_news') as $mark_id) { list($news_id, $range_id) = explode('_', $mark_id); $remove_ranges[$news_id][] = $range_id; } $this->flash['question_text'] = remove_news($remove_ranges); $this->flash['question_param'] = array('mark_news' => Request::optionArray('mark_news'), 'remove_marked_news' => 1); } // apply filter if (Request::submitted('apply_news_filter')) { $this->news_isvisible['basic'] = $this->news_isvisible['basic'] ? false : true; if (Request::get('news_searchterm') and strlen(trim(Request::get('news_searchterm'))) < 3) { PageLayout::postMessage(MessageBox::error(_('Der Suchbegriff muss mindestens 3 Zeichen lang sein.'))); } elseif (Request::get('news_startdate') and !$this->getTimeStamp(Request::get('news_startdate'), 'start') or Request::get('news_enddate') and !$this->getTimeStamp(Request::get('news_enddate'), 'end')) { PageLayout::postMessage(MessageBox::error(_('Ungültige Datumsangabe. Bitte geben Sie ein Datum im Format TT.MM.JJJJ ein.'))); } elseif (Request::get('news_enddate') and Request::get('news_enddate') and $this->getTimeStamp(Request::get('news_startdate'), 'start') > $this->getTimeStamp(Request::get('news_enddate'), 'end')) { PageLayout::postMessage(MessageBox::error(_('Das Startdatum muss vor dem Enddatum liegen.'))); } if (strlen(trim(Request::get('news_searchterm'))) >= 3) { $this->news_searchterm = Request::get('news_searchterm'); } $this->news_startdate = $this->getTimeStamp(Request::get('news_startdate'), 'start'); $this->news_enddate = $this->getTimeStamp(Request::get('news_enddate'), 'end'); } // fetch news list $this->news_items = StudipNews::getNewsRangesByFilter($GLOBALS["auth"]->auth["uid"], $this->area_type, $this->news_searchterm, $this->news_startdate, $this->news_enddate, true, $limit + 1); // build area and filter description if ($this->news_searchterm and $this->area_type and $this->area_type != 'all') { if ($this->news_startdate and $this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s" zum Suchbegriff "%s", die zwischen dem %s und dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], $this->news_searchterm, date('d.m.Y', $this->news_startdate), date('d.m.Y', $this->news_enddate)); } elseif ($this->news_startdate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s" zum Suchbegriff "%s", die ab dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], $this->news_searchterm, date('d.m.Y', $this->news_startdate)); } elseif ($this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s" zum Suchbegriff "%s", die vor dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], $this->news_searchterm, date('d.m.Y', $this->news_enddate)); } else { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s" zum Suchbegriff "%s".'), $this->area_structure[$this->area_type]['title'], $this->news_searchterm); } } elseif ($this->area_type and $this->area_type != 'all') { if ($this->news_startdate and $this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s", die zwischen dem %s und dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], date('d.m.Y', $this->news_startdate), date('d.m.Y', $this->news_enddate)); } elseif ($this->news_startdate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s", die ab dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], date('d.m.Y', $this->news_startdate)); } elseif ($this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s", die vor dem %s sichtbar sind.'), $this->area_structure[$this->area_type]['title'], date('d.m.Y', $this->news_enddate)); } else { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen im Bereich "%s".'), $this->area_structure[$this->area_type]['title']); } } elseif ($this->news_searchterm) { if ($this->news_startdate and $this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen zum Suchbegriff "%s", die zwischen dem %s und dem %s sichtbar sind.'), $this->news_searchterm, date('d.m.Y', $this->news_startdate), date('d.m.Y', $this->news_enddate)); } elseif ($this->news_startdate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen zum Suchbegriff "%s", die ab dem %s sichtbar sind.'), $this->news_searchterm, date('d.m.Y', $this->news_startdate)); } elseif ($this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen zum Suchbegriff "%s", die vor dem %s sichtbar sind.'), $this->news_searchterm, date('d.m.Y', $this->news_enddate)); } else { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen zum Suchbegriff "%s".'), $this->news_searchterm); } } elseif ($this->news_startdate or $this->news_enddate) { if ($this->news_startdate and $this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen, die zwischen dem %s und dem %s sichtbar sind.'), date('d.m.Y', $this->news_startdate), date('d.m.Y', $this->news_enddate)); } elseif ($this->news_startdate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen, die ab dem %s sichtbar sind.'), date('d.m.Y', $this->news_startdate)); } elseif ($this->news_enddate) { $this->filter_text = sprintf(_('Angezeigt werden Ankündigungen, die vor dem %s sichtbar sind.'), date('d.m.Y', $this->news_enddate)); } } // check for delete-buttons and news limit foreach ($this->area_structure as $type => $area_data) { if (is_array($this->news_items[$type])) { foreach ($this->news_items[$type] as $key => $news) { // has trash icon been clicked? if (Request::submitted('news_remove_' . $news['object']->news_id . '_' . $news['range_id']) and Request::isPost()) { $this->flash['question_text'] = remove_news(array($news['object']->news_id => $news['range_id'])); $this->flash['question_param'] = array('mark_news' => array($news['object']->news_id . '_' . $news['range_id']), 'remove_marked_news' => 1); } // check if result set too big $counter++; if ($counter == $limit + 1) { PageLayout::postMessage(MessageBox::info(sprintf(_('Es werden nur die ersten %s Ankündigungen angezeigt.'), $limit))); unset($this->news_items[$type][$key]); } } } } // sort grouped list by title foreach ($this->area_structure as $type => $area_data) { if (count($this->news_groups[$type])) { ksort($this->news_groups[$type]); } } $this->sidebar = Sidebar::get(); $this->sidebar->setImage('sidebar/news-sidebar.png'); if ($GLOBALS['perm']->have_perm('tutor')) { $widget = new ViewsWidget(); $widget->addLink(_('Alle Ankündigungen'), URLHelper::getURL('dispatch.php/news/admin_news/all'))->setActive(!$this->area_type); if ($GLOBALS['perm']->have_perm('root')) { $widget->addLink(_('System'), URLHelper::getURL('dispatch.php/news/admin_news/global'))->setActive($this->area_type === 'global'); } if ($GLOBALS['perm']->have_perm('dozent')) { $widget->addLink(_('Einrichtungen'), URLHelper::getURL('dispatch.php/news/admin_news/inst'))->setActive($this->area_type === 'inst'); } $widget->addLink(_('Veranstaltungen'), URLHelper::getURL('dispatch.php/news/admin_news/sem'))->setActive($this->area_type === 'sem'); $widget->addLink(_('Profil'), URLHelper::getURL('dispatch.php/news/admin_news/user'))->setActive($this->area_type === 'user'); $this->sidebar->addWidget($widget); } $widget = new ActionsWidget(); $widget->addLink(_('Ankündigung erstellen'), URLHelper::getLink('dispatch.php/news/edit_news/new'), Icon::create('news+add', 'clickable'), array('rel' => 'get_dialog', 'target' => '_blank')); $this->sidebar->addWidget($widget); }
include $_SERVER['DOCUMENT_ROOT'] . '/config.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/lib/db.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/lib/session.php'; sec_session_start(); global $table_prefix; global $dbh; switch ($_POST['option']) { case 1: add_comment($dbh, $table_prefix); break; case 2: add_news($dbh, $table_prefix); break; case 3: remove_news($dbh, $table_prefix); break; case 4: send_message($dbh, $table_prefix); break; case 5: reply_message($dbh, $table_prefix); break; case 6: get_massage($dbh, $table_prefix); break; } function add_comment($dbh1, $table_prefix) { if ($stmt = $dbh1->prepare("INSERT INTO " . $table_prefix . "_comments (project_id, user_id, comment) VALUES (?, ?, ?)")) { $stmt->bindParam(1, $_POST['project_id']);