本文整理汇总了PHP中DiscussionModel::bookmark方法的典型用法代码示例。如果您正苦于以下问题:PHP DiscussionModel::bookmark方法的具体用法?PHP DiscussionModel::bookmark怎么用?PHP DiscussionModel::bookmark使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DiscussionModel
的用法示例。
在下文中一共展示了DiscussionModel::bookmark方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: bookmark
/**
* Allows user to bookmark or unbookmark a discussion.
*
* If the discussion isn't bookmarked by the user, this bookmarks it.
* If it is already bookmarked, this unbookmarks it.
*
* @since 2.0.0
* @access public
*
* @param int $DiscussionID Unique discussion ID.
*/
public function bookmark($DiscussionID = null)
{
// Make sure we are posting back.
if (!$this->Request->isAuthenticatedPostBack()) {
throw permissionException('Javascript');
}
$Session = Gdn::session();
if (!$Session->UserID) {
throw permissionException('SignedIn');
}
// Check the form to see if the data was posted.
$Form = new Gdn_Form();
$DiscussionID = $Form->getFormValue('DiscussionID', $DiscussionID);
$Bookmark = $Form->getFormValue('Bookmark', null);
$UserID = $Form->getFormValue('UserID', $Session->UserID);
// Check the permission on the user.
if ($UserID != $Session->UserID) {
$this->permission('Garden.Moderation.Manage');
}
$Discussion = $this->DiscussionModel->getID($DiscussionID);
if (!$Discussion) {
throw notFoundException('Discussion');
}
$Bookmark = $this->DiscussionModel->bookmark($DiscussionID, $UserID, $Bookmark);
// Set the new value for api calls and json targets.
$this->setData(array('UserID' => $UserID, 'DiscussionID' => $DiscussionID, 'Bookmarked' => (bool) $Bookmark));
setValue('Bookmarked', $Discussion, (int) $Bookmark);
// Update the user's bookmark count
$CountBookmarks = $this->DiscussionModel->setUserBookmarkCount($UserID);
$this->jsonTarget('.User-CountBookmarks', (string) $CountBookmarks);
// Short circuit if this is an api call.
if ($this->deliveryType() === DELIVERY_TYPE_DATA) {
$this->render('Blank', 'Utility', 'Dashboard');
return;
}
// Return the appropriate bookmark.
require_once $this->fetchViewLocation('helper_functions', 'Discussions');
$Html = bookmarkButton($Discussion);
// $this->jsonTarget(".Section-DiscussionList #Discussion_$DiscussionID .Bookmark,.Section-Discussion .PageTitle .Bookmark", $Html, 'ReplaceWith');
$this->jsonTarget("!element", $Html, 'ReplaceWith');
// Add the bookmark to the bookmarks module.
if ($Bookmark) {
// Grab the individual bookmark and send it to the client.
$Bookmarks = new BookmarkedModule($this);
if ($CountBookmarks == 1) {
// When there is only one bookmark we have to get the whole module.
$Target = '#Panel';
$Type = 'Append';
$Bookmarks->getData();
$Data = $Bookmarks->toString();
} else {
$Target = '#Bookmark_List';
$Type = 'Prepend';
$Loc = $Bookmarks->fetchViewLocation('discussion');
ob_start();
include $Loc;
$Data = ob_get_clean();
}
$this->jsonTarget($Target, $Data, $Type);
} else {
// Send command to remove bookmark html.
if ($CountBookmarks == 0) {
$this->jsonTarget('#Bookmarks', null, 'Remove');
} else {
$this->jsonTarget('#Bookmark_' . $DiscussionID, null, 'Remove');
}
}
$this->render('Blank', 'Utility', 'Dashboard');
}