| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/amisdesseniors-fr/nice/components/com_community/libraries/ |
Upload File : |
<?php
/**
* @copyright (C) 2013 iJoomla, Inc. - All rights reserved.
* @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html)
* @author iJoomla.com <webmaster@ijoomla.com>
* @url https://www.jomsocial.com/license-agreement
* The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0
* More info at https://www.jomsocial.com/license-agreement
*/
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Table\Table;
defined('_JEXEC') or die('Restricted access');
class CLike {
public function addLike($element, $itemId, $reactId, $userid = null) {
if ($userid) {
$my = CFactory::getUser($userid);
} else {
$my = CFactory::getUser();
}
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
$reactions = [1,2,3,4,5,6];
$like->element = $element;
$like->uid = $itemId;
$like->dislike = '';
// Check if user already like
$likesInArray = $like->like ? explode(',', trim($like->like, ',')) : array();
$reactionsInArray = $like->reaction_ids ? explode(',', trim($like->reaction_ids, ',')) : array();
// set default reaction ID
if (!$reactId) $reactId = 1;
if (!in_array($reactId, $reactions)) {
return false;
}
$likeCount = min(count($likesInArray), count($reactionsInArray));
$likesInArray = array_slice($likesInArray, 0, $likeCount);
$reactionsInArray = array_slice($reactionsInArray, 0, $likeCount);
$liked = array_combine($likesInArray, $reactionsInArray);
/* Like once time */
if(isset($liked[$my->id]) && $liked[$my->id] == $reactId) {
return false;
} else {
$liked[$my->id] = $reactId;
$likesInArray = array_keys($liked);
$reactionsInArray = array_values($liked);
$like->like = implode(',', $likesInArray);
$like->reaction_ids = implode(',', $reactionsInArray);
}
// Check if the user already dislike
$dislikesInArray = explode(',', trim($like->dislike, ','));
if (in_array($my->id, $dislikesInArray)) {
// Remove user dislike from array
$key = array_search($my->id, $dislikesInArray);
unset($dislikesInArray [$key]);
$like->dislike = implode(',', $dislikesInArray);
}
switch ($element) {
case 'comment':
//get the instance of the wall
$wall = Table::getInstance('Wall', 'CTable');
$wall->load($itemId);
if(!$wall->id){
break;
};
if($wall->type =="profile.status"){
$wall->type="profile";
}
//load the stream id from activity stream
$stream = Table::getInstance('Activity', 'CTable');
$stream->load(array('comment_id' => $wall->contentid, 'app'=>$wall->type));
if ($stream->id) {
$profile = CFactory::getUser($stream->actor);
$url = 'index.php?option=com_community&view=profile&userid=' . $profile->id . '&actid=' . $stream->id.'#activity-stream-container';
$params = new CParameter('');
$params->set('url', $url);
$params->set('comment', Text::_('COM_COMMUNITY_SINGULAR_COMMENT'));
$params->set('comment_url', $url);
$params->set('actor',$my->getDisplayName());
//add to notifications
CNotificationLibrary::add('comments_like', $my->id, $wall->post_by, Text::sprintf('COM_COMMUNITY_PROFILE_WALL_LIKE_EMAIL_SUBJECT'), '', 'comments.like', $params);
} elseif ($wall->type == 'albums' && $wall->contentid) {
//this will link to the user albums instead
$album = Table::getInstance('Album', 'CTable');
$album->load($wall->contentid);
$url = $album->getURI();
$params = new CParameter('');
$params->set('url', $url);
$params->set('album', Text::_('COM_COMMUNITY_SINGULAR_ALBUM'));
$params->set('album_url', $url);
$params->set('actor',$my->getDisplayName());
//add to notifications
CNotificationLibrary::add('comments_like', $my->id, $wall->post_by, Text::sprintf('COM_COMMUNITY_ALBUM_WALL_LIKE_EMAIL_SUBJECT'), '', 'comments.like', $params);
} elseif ($wall->type == 'videos' && $wall->contentid) {
$video = Table::getInstance('Video', 'CTable');
$video->load($wall->contentid);
if ($video->id) {
if ($video->groupid) {
$url = 'index.php?option=com_community&view=videos&task=video&groupid=' . $video->groupid . '&videoid=' . $video->id;
} else {
$url = 'index.php?option=com_community&view=videos&task=video&videoid=' . $video->id;
}
$params = new CParameter('');
$params->set('url', $url);
$params->set('video', Text::_('COM_COMMUNITY_SINGULAR_VIDEO'));
$params->set('video_url', $url);
$params->set('actor',$my->getDisplayName());
//add to notifications
CNotificationLibrary::add('comments_like', $my->id, $wall->post_by, Text::sprintf('COM_COMMUNITY_VIDEO_WALL_LIKE_EMAIL_SUBJECT'), '', 'comments.like', $params);
}
} else {
//this can be a comment on third party wall since it doesnt have the stream id attached
$wallType = $wall->type;
$db = Factory::getDbo();
$query = "SELECT * FROM " . $db->quoteName('#__community_thirdparty_wall_options') . " WHERE "
. $db->quoteName('name') . '=' . $db->quote($wall->type);
$db->setQuery($query);
$wallOptions = $db->loadObject();
//if found, this is a third party ones
if ($wallOptions) {
//check if there is any links in object name url
$wallParams = new CParameter($wallOptions->params);
if ($wallParams->get('object_title')) $objectTitle = '<a href="'.$wallParams->get('object_url').'">'.$wallParams->get('object_title').'</a>';
else $objectTitle = '<a href="'.$wallParams->get('object_url').'">'.$wallOptions->object_name.'</a>';
$params = new CParameter('');
$params->set('url', $wallParams->get('object_url'));
$params->set('comment', Text::_('COM_COMMUNITY_SINGULAR_COMMENT'));
$params->set('comment_url', $wallParams->get('object_url'));
$params->set('actor', $my->getDisplayName());
$params->set('object_title', $objectTitle);
$params->set('title', strip_tags($objectTitle));
//add to notifications
CNotificationLibrary::add($wallOptions->notification_cmd.'_like', $my->id, $wall->post_by, Text::sprintf('COM_COMMUNITY_THIRDPARTY_WALL_LIKE_EMAIL_SUBJECT'), Text::sprintf('COM_COMMUNITY_THIRDPARTY_WALL_LIKE_EMAIL_BODY'), 'comments.like.thirdparty', $params);
}
}
break;
case 'photo':
$photo = Table::getInstance('Photo', 'CTable');
$photo->load($itemId);
if ($photo->id) {
$url = $photo->getRawPhotoURI();
$params = new CParameter('');
$params->set('url', $url);
$params->set('photo', Text::_('COM_COMMUNITY_SINGULAR_PHOTO'));
$params->set('photo_url', $url);
CNotificationLibrary::add('photos_like', $my->id, $photo->creator, Text::sprintf('COM_COMMUNITY_PHOTO_LIKE_EMAIL_SUBJECT'), '', 'photos.like', $params);
/* Adding user points */
CUserPoints::assignPoint('photo.like');
//@since 4.1 when a profile is liked, dump the data into photo stats
$statsModel = CFactory::getModel('stats');
$statsModel->addPhotoStats($photo->id, 'like');
}
break;
case 'album':
$album = Table::getInstance('Album', 'CTable');
$album->load($itemId);
if ($album->id) {
if ($album->groupid) {
$url = 'index.php?option=com_community&view=photos&task=album&albumid=' . $album->id . '&groupid=' . $album->groupid;
} else {
$url = 'index.php?option=com_community&view=photos&task=album&albumid=' . $album->id;
}
$params = new CParameter('');
$params->set('url', $url);
$params->set('album', $album->name);
$params->set('album_url', $url);
CNotificationLibrary::add('photos_like', $my->id, $album->creator, Text::sprintf('COM_COMMUNITY_ALBUM_LIKE_EMAIL_SUBJECT'), '', 'album.like', $params);
/* Adding user points */
CUserPoints::assignPoint('album.like');
}
break;
case 'videos':
$video = Table::getInstance('Video', 'CTable');
$video->load($itemId);
if ($video->id) {
if ($video->groupid) {
$url = 'index.php?option=com_community&view=videos&task=video&groupid=' . $video->groupid . '&videoid=' . $video->id;
} else {
$url = 'index.php?option=com_community&view=videos&task=video&videoid=' . $video->id;
}
$params = new CParameter('');
$params->set('url', $url);
$params->set('video', $video->title);
$params->set('video_url', $url);
CNotificationLibrary::add('videos_like', $my->id, $video->creator, Text::sprintf('COM_COMMUNITY_VIDEO_LIKE_EMAIL_SUBJECT'), '', 'videos.like', $params);
/* Adding user points */
CUserPoints::assignPoint('videos.like');
//@since 4.1 when a profile is liked, dump the data into photo stats
$statsModel = CFactory::getModel('stats');
$statsModel->addVideoStats($video->id, 'like');
}
break;
case 'profile':
$profile = CFactory::getUser($itemId);
if ($profile->id) {
$url = 'index.php?option=com_community&view=profile&userid=' . $profile->id;
$params = new CParameter('');
$params->set('url', $url);
$params->set('profile', strtolower(Text::_('COM_COMMUNITY_NOTIFICATIONGROUP_PROFILE')) );
$params->set('profile_url', $url);
CNotificationLibrary::add('profile_like', $my->id, $profile->id, Text::sprintf('COM_COMMUNITY_PROFILE_LIKE_EMAIL_SUBJECT'), '', 'profile.like', $params);
/* Adding user points */
CUserPoints::assignPoint('profile.like');
//@since 4.1 when a profile is liked, dump the data into profile stats
$statsModel = CFactory::getModel('stats');
$statsModel->addProfileStats($profile->id, 'like');
}
break;
case 'pages.wall':
case 'groups.wall':
case 'profile.status':
$stream = Table::getInstance('Activity', 'CTable');
$stream->load($itemId);
if ($stream->id) {
$profile = CFactory::getUser($stream->actor);
$url = 'index.php?option=com_community&view=profile&userid=' . $profile->id . '&actid=' . $stream->id;
$params = new CParameter('');
$params->set('url', $url);
$params->set('stream', Text::_('COM_COMMUNITY_SINGULAR_STREAM'));
$params->set('stream_url', $url);
CNotificationLibrary::add('profile_stream_like', $my->id, $profile->id, Text::sprintf('COM_COMMUNITY_PROFILE_STREAM_LIKE_EMAIL_SUBJECT'), '', 'profile.stream.like', $params);
/* Adding user points */
CUserPoints::assignPoint('profile.stream.like');
}
break;
case 'cover.upload':
$photo = Table::getInstance('Photo', 'CTable');
$photo->load(CPhotosHelper::getPhotoOfStream($itemId));
if ($photo->id) {
$url = $photo->getRawPhotoURI();
$params = new CParameter('');
$params->set('url', $url);
$params->set('photo', Text::_('COM_COMMUNITY_SINGULAR_PHOTO'));
$params->set('photo_url', $url);
CNotificationLibrary::add('photos_like', $my->id, $photo->creator, Text::sprintf('COM_COMMUNITY_COVER_LIKE_EMAIL_SUBJECT'), '', 'photos.like', $params);
/* Adding user points */
CUserPoints::assignPoint('photos.like');
}
break;
case 'profile.avatar.upload':
$stream = Table::getInstance('Activity', 'CTable');
$stream->load($itemId);
if ($stream->id) {
$profile = CFactory::getUser($stream->actor);
$url = 'index.php?option=com_community&view=profile&userid=' . $profile->id . '&actid=' . $stream->id;
$params = new CParameter('');
$params->set('url', $url);
$params->set('stream', Text::_('COM_COMMUNITY_SINGULAR_STREAM'));
$params->set('stream_url', $url);
CNotificationLibrary::add('profile_stream_like', $my->id, $profile->id, Text::sprintf('COM_COMMUNITY_PROFILE_AVATAR_LIKE_EMAIL_SUBJECT'), '', 'profile.stream.like', $params);
/* Adding user points */
CUserPoints::assignPoint('profile.stream.like');
}
break;
case 'groups':
/* Adding user points */
CUserPoints::assignPoint('groups.like');
break;
case 'pages':
/* Adding user points */
$page = Table::getInstance('Page', 'CTable');
$page->load($itemId);
if ($page->id) {
$url = $page->getRawPageURI();
$params = new CParameter('');
$params->set('url', $url);
$params->set('page', $page->name);
$params->set('page_url', $url);
CNotificationLibrary::add('pages_like', $my->id, $page->ownerid, Text::sprintf('COM_COMMUNITY_PAGE_LIKE_EMAIL_SUBJECT'), '', 'pages.like', $params);
/* Adding user points */
CUserPoints::assignPoint('pages.like');
}
break;
case 'discussion':
/* Adding user points */
CUserPoints::assignPoint('groups.discussion.like');
break;
case 'events':
/* Adding user points */
CUserPoints::assignPoint('events.like');
break;
case 'album.self.share':
$stream = Table::getInstance('Activity', 'CTable');
$stream->load($itemId);
$profile = CFactory::getUser($stream->actor);
//get total photo(s) uploaded and determine the string
$actParam = new CParameter($stream->params);
if($actParam->get('batchcount') > 1){
$content = Text::sprintf('COM_COMMUNITY_ACTIVITY_ALBUM_PICTURES_LIKE_SUBJECT');
}else{
$content = Text::sprintf('COM_COMMUNITY_ACTIVITY_ALBUM_PICTURE_LIKE_SUBJECT');
}
$url = 'index.php?option=com_community&view=profile&userid=' . $profile->id . '&actid=' . $stream->id;
$params = new CParameter('');
$params->set('url', $url);
$params->set('stream', Text::_('COM_COMMUNITY_SINGULAR_STREAM'));
$params->set('stream_url', $url);
CNotificationLibrary::add('profile_stream_like', $my->id, $profile->id, $content, '', 'profile.stream.like', $params);
default:
CUserPoints::assignPoint($element . '.like');
}
// Log user engagement
CEngagement::log($element . '.like', $my->id);
$like->store();
return true;
}
public function addDislike($element, $itemId) {
$my = CFactory::getUser();
$dislike = Table::getInstance('Like', 'CTable');
$dislike->loadInfo($element, $itemId);
$dislike->element = $element;
$dislike->uid = $itemId;
$dislikesInArray = explode(',', $dislike->dislike);
array_push($dislikesInArray, $my->id);
$dislikesInArray = array_unique($dislikesInArray);
$dislike->dislike = ltrim(implode(',', $dislikesInArray), ',');
// Check if the user already like
$likesInArray = explode(',', $dislike->like);
if (in_array($my->id, $likesInArray)) {
// Remove user like from array
$key = array_search($my->id, $likesInArray);
unset($likesInArray[$key]);
$dislike->like = implode(',', $likesInArray);
}
$dislike->store();
}
public function unlike($element, $itemId, $userid = null) {
if ($userid) {
$my = CFactory::getUser($userid);
} else {
$my = CFactory::getUser();
}
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
if (!$like->id) {
return false;
}
$reactionsInArray = explode(',', $like->reaction_ids);
// Check if the user already like
$likesInArray = explode(',', $like->like);
if (in_array($my->id, $likesInArray)) {
// Remove user like from array
$key = array_search($my->id, $likesInArray);
unset($likesInArray[$key]);
unset($reactionsInArray[$key]);
$like->like = implode(',', $likesInArray);
$like->reaction_ids = implode(',', $reactionsInArray);
} else {
return false;
}
// Check if the user already dislike
$dislikesInArray = explode(',', $like->dislike);
if (in_array($my->id, $dislikesInArray)) {
// Remove user dislike from array
$key = array_search($my->id, $dislikesInArray);
unset($dislikesInArray[$key]);
$like->dislike = implode(',', $dislikesInArray);
}
//for user points
switch($element){
case 'photo':
/* Decrease user points */
CUserPoints::assignPoint('photo.unlike');
break;
case 'album':
/* Decrease user points */
CUserPoints::assignPoint('album.unlike');
break;
case 'videos':
/* Decrease user points */
CUserPoints::assignPoint('videos.unlike');
break;
case 'profile':
/* Decrease user points */
CUserPoints::assignPoint('profile.unlike');
break;
case 'profile.status':
/* Decrease user points */
CUserPoints::assignPoint('profile.stream.unlike');
break;
case 'groups':
/* Decrease user points */
CUserPoints::assignPoint('groups.unlike');
break;
case 'events':
/* Decrease user points */
CUserPoints::assignPoint('events.unlike');
break;
case 'photo':
break;
}
$like->store();
return true;
}
// Check if the user like this
// Returns:
// -1 - Unlike
// 1 - Like
// 0 - Dislike
public function userLiked($element, $itemId, $userId) {
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
// Check if user already like
$liked = $like->like ?: '';
$likesInArray = explode(',', trim($liked, ','));
if (in_array($userId, $likesInArray)) {
// Return 1, the user is liked
return COMMUNITY_LIKE;
}
// Check if user already dislike
$disliked = $like->dislike ?: '';
$dislikesInArray = explode(',', trim($disliked, ','));
if (in_array($userId, $dislikesInArray)) {
// Return 0, the user is disliked
return COMMUNITY_DISLIKE;
}
// Return -1 as neutral
return COMMUNITY_UNLIKE;
}
/**
* Can current $my user 'like' an item ?
* - rule: friend can like friend's item (photos/vidoes/event)
* @return bool
*/
public function canLike() {
$my = CFactory::getInstance();
return ( $my->id != 0 );
}
public function getReactedId($element, $itemId, $userId) {
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
if ($userId && $like->like && $like->reaction_ids) {
$users = explode(',', $like->like);
$values = explode(',', $like->reaction_ids);
$index = array_search($userId, $users);
if ($index !== false && isset($values[$index])) {
return $values[$index];
} else {
return 0;
}
} else {
return 0;
}
}
/**
* Return number of likes
*/
public function getLikeCount($element, $itemId) {
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
$count = 0;
if (!empty($like->like)) {
$likesInArray = explode(',', trim($like->like, ','));
$count = count($likesInArray);
}
return $count;
}
/**
* Return an array of user who likes the element
* @return CUser objects
*/
public function getWhoLikes($element, $itemId) {
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
$users = array();
$likesInArray = array();
if (!empty($like->like)) {
$likesInArray = explode(',', trim($like->like, ','));
}
foreach ($likesInArray as $row) {
$user = CFactory::getUser($row);
$users[] = $user;
}
return $users;
}
/**
*
* @return bool True if element can be liked
*/
public function enabled($element) {
$config = CFactory::getConfig();
if ($element == 'pages') return true;
// Element can also contain sub-element. eg:// photos.album
// for enable/disable configuration, we only check the first component
$elements = explode('.', $element);
return ( $config->get('likes_' . $elements[0]) );
}
/**
*
* @return string
*/
public function getHTML($element, $itemId, $userId) {
if ($userId == 0) {
return false;
}
// @rule: Only display likes html codes when likes is allowed.
$config = CFactory::getConfig();
if (!$this->enabled($element)) {
return;
}
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
$userLiked = COMMUNITY_UNLIKE;
$likesInArray = array();
$dislikesInArray = array();
$likes = 0;
$dislikes = 0;
if (!empty($like->like)) {
$likesInArray = explode(',', trim($like->like, ','));
$likes = count($likesInArray);
}
if (!empty($like->dislike)) {
$dislikesInArray = explode(',', trim($like->dislike, ','));
$dislikes = count($dislikesInArray);
}
$userLiked = $this->userLiked($element, $itemId, $userId);
$tmpl = new CTemplate();
// For rendering, we need to replace . with _ since it is not
// a valid id
$element = str_replace('.', '_', $element);
$tmpl->set('likeId', 'like' . '-' . $element . '-' . $itemId);
$tmpl->set('likes', $likes);
$tmpl->set('dislikes', $dislikes);
$tmpl->set('userLiked', $userLiked);
if (!COwnerHelper::isRegisteredUser()) {
return $this->getHtmlPublic($element, $itemId);
} else {
return $tmpl->fetch('like.html');
}
}
/**
* Display like/dislike for public
* @return string
*/
public function getHtmlPublic($element, $itemId) {
$config = CFactory::getConfig();
if (!$config->get('likes_' . $element)) {
return;
}
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
$likesInArray = array();
$dislikesInArray = array();
$likes = 0;
$dislikes = 0;
if (!empty($like->like)) {
$likesInArray = explode(',', trim($like->like, ','));
$likes = count($likesInArray);
}
if (!empty($like->dislike)) {
$dislikesInArray = explode(',', trim($like->dislike, ','));
$dislikes = count($dislikesInArray);
}
$tmpl = new CTemplate();
$tmpl->set('likes', $likes);
$tmpl->set('dislikes', $dislikes);
if ($config->get('show_like_public')) {
return $tmpl->fetch('like.public');
}
}
public function showWhoReacts($element, $itemId) {
$like = Table::getInstance('Like', 'CTable');
$like->loadInfo($element, $itemId);
if (!$like->like || !$like->reaction_ids) {
return '';
}
$enabledUsers = $this->getEnabledUsers( $like->like );
$keys = explode(',', $like->reaction_ids);
$values = explode(',', $like->like);
$reactions = $this->getReactions($like, $enabledUsers);
if ($element === 'comment') {
$text = $this->getLikeCount($element, $itemId);
} else {
$text = $this->getStreamReactionText( $enabledUsers );
}
$tmpl = new CTemplate();
$tmpl->set('uid', $itemId)
->set('element', $element)
->set('reactions', $reactions)
->set('reactionText', $text);
return $tmpl->fetch('stream/reaction-result');
}
public function getReactions($data, $enabledUsers) {
$keys = explode(',', $data->reaction_ids);
$values = explode(',', $data->like);
$reactions = array();
foreach ($keys as $k => $key) {
$existed = array_filter( $reactions, function($item) use ($key) {
return $item->reaction_id == $key;
});
if (count($existed)) {
$tmp = array_slice($existed, 0, 1);
$obj = $tmp[0];
} else {
$obj = new stdClass;
$obj->reaction_id = $key;
$obj->userids = array();
}
if (isset($values[$k]) && in_array($values[$k], $enabledUsers)) {
$obj->userids[] = $values[$k];
if (!count($existed)) {
$reactions[] = $obj;
}
}
}
// add count
$reactions = array_map( function($item) {
$item->count = count( $item->userids );
return $item;
}, $reactions);
// order reactions, most reacted go first
uasort($reactions, function( $a, $b ) {
if ($a->count === $b->count) {
return $a->reaction_id < $b->reaction_id ? -1 : 1;
} else {
return $a->count > $b->count ? -1 : 1;
}
});
return $reactions;
}
protected function getEnabledUsers($userids) {
$db = Factory::getDbo();
$sql = "SELECT `id` FROM `#__users`
WHERE `id` IN ( $userids )
AND block = 0";
$ids = $db->setQuery($sql)->loadColumn();
return $ids;
}
protected function getStreamReactionText($reactedUsers = array()) {
$my = CFactory::getUser();
$displayUsers = array();
if (in_array($my->id, $reactedUsers)) {
$displayUsers[] = Text::_('COM_COMMUNITY_CHAT_YOU');
}
foreach ($reactedUsers as $userid) {
if (count($displayUsers) < 2 && $my->id != $userid) {
$user = CFactory::getUser($userid);
$displayUsers[] = $user->getName();
}
}
$othersCount = count($reactedUsers) - count($displayUsers);
$text = '';
$and = Text::_('COM_COMMUNITY_AND');
if (count($displayUsers) === 1) {
$text = $displayUsers[0];
}
if (count($displayUsers) === 2 && $othersCount < 1) {
$text = implode(" $and ", $displayUsers);
} else {
$text = implode(', ', $displayUsers);
}
if ($othersCount > 0) {
if (count($displayUsers)) {
$other = ' ' . Text::sprintf('COM_COMMUNITY_REACTION_OTHER', $othersCount);
$others = ' ' . Text::sprintf('COM_COMMUNITY_REACTION_OTHERS', $othersCount);
$text .= $othersCount > 1 ? $others : $other;
} else {
$text .= $othersCount;
}
}
return $text;
}
}