function edit_action($area_id) { ForumPerm::check('edit_area', $this->getId(), $area_id); if (Request::isAjax()) { ForumEntry::update($area_id, studip_utf8decode(Request::get('name')), studip_utf8decode(Request::get('content'))); $this->render_json(array('content' => ForumEntry::killFormat(ForumEntry::killEdit(studip_utf8decode(Request::get('content')))))); } else { ForumEntry::update($area_id, Request::get('name'), Request::get('content')); $this->flash['messages'] = array('success' => _('Die Änderungen am Bereich wurden gespeichert.')); $this->redirect(PluginEngine::getLink('coreforum/index/index')); } }
public function convertEntry($raw) { $entry = array(); foreach (words("topic_id mkdate chdate anonymous depth") as $key) { $entry[$key] = $raw[$key]; } $entry['subject'] = $raw['name']; $entry['user'] = $this->urlf('/user/%s', array($raw['user_id'])); $entry['course'] = $this->urlf('/course/%s', array($raw['seminar_id'])); $entry['content_html'] = \ForumEntry::getContentAsHtml($raw['content']); $entry['content'] = \ForumEntry::killEdit($raw['content']); return $entry; }
<br> <? if (trim($constraint['content'])) : ?> <div class="posting"> <div class="postbody"> <div class="content"><?php echo formatReady(ForumEntry::killEdit($constraint['content'])); ?> </div> </div> </div> <? endif ?> <? if (!empty($list)) foreach ($list as $category_id => $entries) : ?> <table class="default forum" data-category-id="<?php echo $category_id; ?> "> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th colspan="2"><?php echo _('Thema'); ?>
?> > <a href="<?php echo PluginEngine::getLink('coreforum/index/index/' . $jump_to_topic_id . '#' . $jump_to_topic_id); ?> "> <span class="areaname"><?php echo htmlReady($entry['name_raw']); ?> </span> </a> <div class="areacontent" data-content="<?php echo htmlReady($entry['content_raw']); ?> "> <? $description = ForumEntry::killFormat(ForumEntry::killEdit($entry['content_raw'])) ?> <?php echo htmlReady(substr($description, 0, 150)); echo strlen($description) > 150 ? '…' : ''; ?> </div> </span> <? if (ForumPerm::has('edit_area', $seminar_id) && Request::get('edit_area') == $entry['topic_id']) : ?> <span style="text-align: center;"> <div style="width: 90%"> <?php echo $this->render_partial('area/_edit_area_form', compact('entry')); ?> </div>
/** * get a list of postings of a special type * * @param string $type one of 'area', 'list', 'postings', 'latest', 'favorites', 'dump', 'flat' * @param string $parent_id the are to fetch from * @return array array('list' => ..., 'count' => ...); */ static function getList($type, $parent_id) { $start = (ForumHelpers::getPage() - 1) * ForumEntry::POSTINGS_PER_PAGE; switch ($type) { case 'area': $list = ForumEntry::getEntries($parent_id, ForumEntry::WITHOUT_CHILDS, '', 'DESC', 0, 1000); $postings = $list['list']; $postings = ForumEntry::getLastPostings($postings); return array('list' => $postings, 'count' => $list['count']); break; case 'list': $constraint = ForumEntry::getConstraints($parent_id); // purpose of the following query is to retrieve the threads // for an area ordered by the mkdate of their latest posting $stmt = DBManager::get()->prepare("SELECT SQL_CALC_FOUND_ROWS\n fe.*, IF(ou.topic_id IS NOT NULL, 'fav', NULL) as fav\n FROM forum_entries AS fe\n LEFT JOIN forum_favorites as ou ON (ou.topic_id = fe.topic_id AND ou.user_id = :user_id)\n WHERE fe.seminar_id = :seminar_id AND fe.lft > :left\n AND fe.rgt < :right AND fe.depth = 2\n ORDER BY sticky DESC, latest_chdate DESC\n LIMIT {$start}, " . ForumEntry::POSTINGS_PER_PAGE); $stmt->bindParam(':seminar_id', $constraint['seminar_id']); $stmt->bindParam(':left', $constraint['lft'], PDO::PARAM_INT); $stmt->bindParam(':right', $constraint['rgt'], PDO::PARAM_INT); $stmt->bindParam(':user_id', $GLOBALS['user']->id); $stmt->execute(); $postings = $stmt->fetchAll(PDO::FETCH_ASSOC); $count = DBManager::get()->query("SELECT FOUND_ROWS()")->fetchColumn(); $postings = ForumEntry::parseEntries($postings); $postings = ForumEntry::getLastPostings($postings); return array('list' => $postings, 'count' => $count); break; case 'postings': return ForumEntry::getEntries($parent_id, ForumEntry::WITH_CHILDS, '', 'ASC', $start); break; case 'newest': $constraint = ForumEntry::getConstraints($parent_id); // get postings $stmt = DBManager::get()->prepare("SELECT forum_entries.*, IF(ou.topic_id IS NOT NULL, 'fav', NULL) as fav\n FROM forum_entries\n LEFT JOIN forum_favorites as ou ON (ou.topic_id = forum_entries.topic_id AND ou.user_id = :user_id)\n WHERE seminar_id = :seminar_id AND lft > :left\n AND rgt < :right AND (mkdate >= :mkdate OR chdate >= :mkdate)\n ORDER BY mkdate ASC\n LIMIT {$start}, " . ForumEntry::POSTINGS_PER_PAGE); $stmt->bindParam(':seminar_id', $constraint['seminar_id']); $stmt->bindParam(':left', $constraint['lft']); $stmt->bindParam(':right', $constraint['rgt']); $stmt->bindParam(':mkdate', ForumVisit::getLastVisit($constraint['seminar_id'])); $stmt->bindParam(':user_id', $GLOBALS['user']->id); $stmt->execute(); $postings = $stmt->fetchAll(PDO::FETCH_ASSOC); $postings = ForumEntry::parseEntries($postings); // var_dump($postings); // count found postings $stmt_count = DBManager::get()->prepare("SELECT COUNT(*)\n FROM forum_entries\n WHERE seminar_id = :seminar_id AND lft > :left\n AND rgt < :right AND mkdate >= :mkdate\n ORDER BY mkdate ASC"); $stmt_count->bindParam(':seminar_id', $constraint['seminar_id']); $stmt_count->bindParam(':left', $constraint['lft']); $stmt_count->bindParam(':right', $constraint['rgt']); $stmt_count->bindParam(':mkdate', ForumVisit::getLastVisit($constraint['seminar_id'])); $stmt_count->execute(); // return results return array('list' => $postings, 'count' => $stmt_count->fetchColumn()); break; case 'latest': return ForumEntry::getEntries($parent_id, ForumEntry::WITH_CHILDS, '', 'DESC', $start); break; case 'favorites': $add = "AND ou.topic_id IS NOT NULL"; return ForumEntry::getEntries($parent_id, ForumEntry::WITH_CHILDS, $add, 'DESC', $start); break; case 'dump': return ForumEntry::getEntries($parent_id, ForumEntry::WITH_CHILDS, '', 'ASC', 0, false); break; case 'flat': $constraint = ForumEntry::getConstraints($parent_id); $stmt = DBManager::get()->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM forum_entries\n WHERE lft > ? AND rgt < ? AND seminar_id = ? AND depth = ?\n ORDER BY name ASC"); $stmt->execute(array($constraint['lft'], $constraint['rgt'], $constraint['seminar_id'], $constraint['depth'] + 1)); $count = DBManager::get()->query("SELECT FOUND_ROWS()")->fetchColumn(); $posting_list = array(); // speed up things a bit by leaving out the formatReady fields foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $data) { $posting_list[$data['topic_id']] = array('author' => $data['author'], 'topic_id' => $data['topic_id'], 'name_raw' => $data['name'], 'content_raw' => ForumEntry::killEdit($data['content']), 'content_short' => $desc_short, 'chdate' => $data['chdate'], 'mkdate' => $data['mkdate'], 'user_id' => $data['user_id'], 'raw_title' => $data['name'], 'raw_description' => ForumEntry::killEdit($data['content']), 'fav' => $data['fav'] == 'fav', 'depth' => $data['depth'], 'seminar_id' => $data['seminar_id']); } return array('list' => $posting_list, 'count' => $count); break; case 'depth_to_large': $constraint = ForumEntry::getConstraints($parent_id); $stmt = DBManager::get()->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM forum_entries\n WHERE lft > ? AND rgt < ? AND seminar_id = ? AND depth > 3\n ORDER BY name ASC"); $stmt->execute(array($constraint['lft'], $constraint['rgt'], $constraint['seminar_id'])); $count = DBManager::get()->query("SELECT FOUND_ROWS()")->fetchColumn(); return array('list' => $stmt->fetchAll(PDO::FETCH_ASSOC), 'count' => $count); break; } }