Файл: library/XenForo/LikeHandler/ProfilePost.php
Строк: 92
<?php
/**
* Handler for the specific profile post-related like aspects.
*
* @package XenForo_Like
*/
class XenForo_LikeHandler_ProfilePost extends XenForo_LikeHandler_Abstract
{
/**
* Increments the like counter.
* @see XenForo_LikeHandler_Abstract::incrementLikeCounter()
*/
public function incrementLikeCounter($contentId, array $latestLikes, $adjustAmount = 1)
{
$dw = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_ProfilePost');
$dw->setExistingData($contentId);
$dw->set('likes', $dw->get('likes') + $adjustAmount);
$dw->set('like_users', $latestLikes);
$dw->save();
}
/**
* Gets content data (if viewable).
* @see XenForo_LikeHandler_Abstract::getContentData()
*/
public function getContentData(array $contentIds, array $viewingUser)
{
$profilePostModel = XenForo_Model::create('XenForo_Model_ProfilePost');
$profilePosts = $profilePostModel->getProfilePostsByIds($contentIds, array(
'join' => XenForo_Model_ProfilePost::FETCH_USER_RECEIVER
));
$userIds = array();
foreach ($profilePosts AS $profilePost)
{
$userIds[$profilePost['profile_user_id']] = true;
}
$users = $profilePostModel->getModelFromCache('XenForo_Model_User')->getUsersByIds(array_keys($userIds), array(
'join' => XenForo_Model_User::FETCH_USER_PRIVACY,
'followingUserId' => $viewingUser['user_id']
));
foreach ($profilePosts AS $key => &$profilePost)
{
if (!isset($users[$profilePost['profile_user_id']]))
{
unset($profilePosts[$key]);
}
else
{
$user = $users[$profilePost['profile_user_id']];
if (!$profilePostModel->canViewProfilePostAndContainer(
$profilePost, $user, $null, $viewingUser
))
{
unset($profilePosts[$key]);
}
else
{
$profilePost['profileUser'] = $user;
}
}
}
return $profilePosts;
}
/**
* @see XenForo_LikeHandler_Abstract::batchUpdateContentUser()
*/
public function batchUpdateContentUser($oldUserId, $newUserId, $oldUsername, $newUsername)
{
$profilePostModel = XenForo_Model::create('XenForo_Model_ProfilePost');
$profilePostModel->batchUpdateLikeUser($oldUserId, $newUserId, $oldUsername, $newUsername);
}
/**
* Gets the name of the template that will be used when listing likes of this type.
*
* @return string news_feed_item_profile_post_like
*/
public function getListTemplateName()
{
return 'news_feed_item_profile_post_like';
}
}