public getAnnouncementCacheKey ( integer $CategoryID ) : string | ||
$CategoryID | integer | Category ID, |
return | string | $Key CacheKey name to be used for cache. |
/** * Allows user to announce or unannounce a discussion. * * If the discussion isn't announced, this announces it. * If it is already announced, this unannounces it. * Announced discussions stay at the top of the discussions * list regardless of how long ago the last comment was. * * @since 2.0.0 * @access public * * @param int $DiscussionID Unique discussion ID. * @param string $TransientKey Single-use hash to prove intent. */ public function announce($DiscussionID = '', $Target = '') { $Discussion = $this->DiscussionModel->getID($DiscussionID); if (!$Discussion) { throw notFoundException('Discussion'); } $this->permission('Vanilla.Discussions.Announce', true, 'Category', $Discussion->PermissionCategoryID); if ($this->Form->authenticatedPostBack()) { // Save the property. $CacheKeys = array($this->DiscussionModel->getAnnouncementCacheKey(), $this->DiscussionModel->getAnnouncementCacheKey(val('CategoryID', $Discussion))); $this->DiscussionModel->SQL->cache($CacheKeys); $this->DiscussionModel->SetProperty($DiscussionID, 'Announce', (int) $this->Form->getFormValue('Announce', 0)); if ($Target) { $this->RedirectUrl = url($Target); } } else { if (!$Discussion->Announce) { $Discussion->Announce = 2; } $this->Form->setData($Discussion); } $Discussion = (array) $Discussion; $Category = CategoryModel::categories($Discussion['CategoryID']); $this->setData('Discussion', $Discussion); $this->setData('Category', $Category); $this->title(t('Announce')); $this->render(); }