PostController::notifyNewDiscussion PHP Method

notifyNewDiscussion() public method

public notifyNewDiscussion ( $DiscussionID )
    public function notifyNewDiscussion($DiscussionID)
    {
        if (!c('Vanilla.QueueNotifications')) {
            throw forbiddenException('NotifyNewDiscussion');
        }
        if (!$this->Request->isPostBack()) {
            throw forbiddenException('GET');
        }
        // Grab the discussion.
        $Discussion = $this->DiscussionModel->getID($DiscussionID);
        if (!$Discussion) {
            throw notFoundException('Discussion');
        }
        if (val('Notified', $Discussion) != ActivityModel::SENT_PENDING) {
            die('Not pending');
        }
        // Mark the notification as in progress.
        $this->DiscussionModel->setField($DiscussionID, 'Notified', ActivityModel::SENT_INPROGRESS);
        $discussionType = val('Type', $Discussion);
        if ($discussionType) {
            $Code = "HeadlineFormat.Discussion.{$discussionType}";
        } else {
            $Code = 'HeadlineFormat.Discussion';
        }
        $HeadlineFormat = t($Code, '{ActivityUserID,user} started a new discussion: <a href="{Url,html}">{Data.Name,text}</a>');
        $Category = CategoryModel::categories(val('CategoryID', $Discussion));
        $Activity = array('ActivityType' => 'Discussion', 'ActivityUserID' => $Discussion->InsertUserID, 'HeadlineFormat' => $HeadlineFormat, 'RecordType' => 'Discussion', 'RecordID' => $DiscussionID, 'Route' => DiscussionUrl($Discussion), 'Data' => array('Name' => $Discussion->Name, 'Category' => val('Name', $Category)));
        $ActivityModel = new ActivityModel();
        $this->DiscussionModel->NotifyNewDiscussion($Discussion, $ActivityModel, $Activity);
        $ActivityModel->SaveQueue();
        $this->DiscussionModel->setField($DiscussionID, 'Notified', ActivityModel::SENT_OK);
        die('OK');
    }