コード例 #1
0
ファイル: news.php プロジェクト: ratbird/hope
 /**
  * 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);
 }
コード例 #2
0
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']);