/** * Get all Discussion Groups and set relevent links for each * * @return DataList */ public function getMenu() { // Get the current associated discussion holder $discussion_holder = DiscussionHolder::get()->filter("SideBar.ID", $this->ParentID)->first(); $menu = new ArrayList(); $menu->add(new ArrayData(array("ID" => 0, "Title" => _t('Discussions.All', "All"), "Link" => $discussion_holder->Link()))); $menu->add(new ArrayData(array("ID" => 10, "Title" => _t('Discussions.Liked', "Liked"), "Link" => $discussion_holder->Link("liked")))); $menu->add(new ArrayData(array("ID" => 20, "Title" => _t('Discussions.Started', "I started"), "Link" => $discussion_holder->Link("my")))); $this->extend("updateMenu", $menu); return $menu->sort("ID", "ASC"); }
public function requireDefaultRecords() { parent::requireDefaultRecords(); // Setup Discussion Page $page = DiscussionHolder::get()->first(); if (!$page) { $page = new DiscussionHolder(); $page->Title = "Discussions"; $page->URLSegment = "discussions"; $page->Sort = 3; $page->write(); $page->publish('Stage', 'Live'); DB::alteration_message('Discussions Holder Created', 'created'); } }
/** * Add default records to database. * * This function is called whenever the database is built, after the * database tables have all been created. */ public function requireDefaultRecords() { parent::requireDefaultRecords(); // Add default poster group if it doesn't exist $poster = Group::get()->filter("Code", 'discussions-posters')->first(); if (!$poster) { $poster = new Group(); $poster->Code = 'discussions-posters'; $poster->Title = _t('Discussions.DefaultGroupTitlePosters', 'Discussion Posters'); $poster->Sort = 1; $poster->write(); Permission::grant($poster->ID, 'DISCUSSIONS_REPLY'); DB::alteration_message('Discussion Poster Group Created', 'created'); } // Add default modrator group if none exists $moderator = Permission::get_groups_by_permission('DISCUSSIONS_MODERATION')->first(); if (!$moderator) { $moderator = new Group(); $moderator->Code = 'discussions-moderators'; $moderator->Title = _t('Discussions.DefaultGroupTitleModerators', 'Discussion Moderators'); $moderator->Sort = 0; $moderator->write(); Permission::grant($moderator->ID, 'DISCUSSIONS_MODERATION'); DB::alteration_message('Discussion Moderator Group Created', 'created'); } // Now add these groups to a discussion holder (if one exists) foreach (DiscussionHolder::get() as $page) { if (!$page->PosterGroups()->count()) { $page->PosterGroups()->add($poster); $page->write(); DB::alteration_message('Added Poster Group to Discussions Holder', 'created'); } if (!$page->ModeratorGroups()->count()) { $page->ModeratorGroups()->add($moderator); $page->write(); DB::alteration_message('Added Moderator Group to Discussions Holder', 'created'); } } }
/** * Process the submitted form data and save to database * * @return Redirect */ public function post(array $data, Form $form) { $discussion = null; $page = DiscussionHolder::get()->byID($this->controller->ID); $member = Member::currentUser(); if ($this->controller->canStartDiscussions($member)) { // Check if we are editing or creating if (isset($data['ID']) && $data['ID']) { $discussion = Discussion::get()->byID($data['ID']); } if (!$discussion || $discussion == null) { $discussion = Discussion::create(); } $form->saveInto($discussion); $discussion->AuthorID = $member->ID; $discussion->ParentID = $page->ID; $form->saveInto($discussion); $discussion->write(); $discussion_url = Controller::join_links($this->controller->Link("view"), $discussion->ID); return $this->controller->redirect($discussion_url); } else { return $this->controller->httpError(404); } }
/** * Get all Discussion Groups and set relevent links for each * * @return DataList */ public function getCategories() { // Get the current associated discussion holder $discussion_holder = DiscussionHolder::get()->filter("SideBar.ID", $this->ParentID)->first(); return $discussion_holder->Categories(); }