| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.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 : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/a/w/e/awebpaca/blog/plugins/kunena/easysocial/ |
Upload File : |
<?php
/**
* @package EasySocial
* @copyright Copyright (C) 2010 - 2014 Stack Ideas Sdn Bhd. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* EasySocial is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
defined('_JEXEC') or die('Unauthorized Access');
use Joomla\String\StringHelper;
class KunenaActivityEasySocial extends KunenaActivity
{
protected $params = null;
/**
* KunenaActivityEasySocial constructor.
*
* @param $params
*/
public function __construct($params)
{
$this->params = $params;
}
/**
* @param $command
* @param $message
* @param null $target
*
* @return mixed
*/
public function assignBadge($command, $message, $target = null)
{
$user = FD::user($target);
$badge = FD::badges();
return $badge->log('com_kunena', $command, $user->id, $user->id);
}
/**
* @param $command
* @param null $target
*
* @return mixed
*/
public function assignPoints($command, $target = null)
{
$user = FD::user($target);
$points = FD::points();
return $points->assign($command, 'com_kunena', $user->id);
}
/**
* @param $message
*/
public function onAfterPost($message)
{
if (StringHelper::strlen($message->message) > $this->params->get('activity_points_limit', 0))
{
$this->assignPoints('thread.new');
}
if (StringHelper::strlen($message->message) > $this->params->get('activity_badge_limit', 0))
{
$this->assignBadge('thread.new', JText::_('PLG_KUNENA_EASYSOCIAL_BADGE_NEW_TITLE'));
}
$stream = FD::stream();
$tmpl = $stream->getTemplate();
$tmpl->setActor($message->userid, SOCIAL_TYPE_USER);
$tmpl->setContext($message->thread, 'kunena');
$tmpl->setVerb('create');
$tmpl->setAccess('core.view');
$stream->add($tmpl);
}
/**
* After a person replies a topic
*
* @since 1.3
* @access public
*
* @param $message
*
* @internal param $string
*/
public function onAfterReply($message)
{
$length = StringHelper::strlen($message->message);
// Assign points for replying a thread
if ($length > $this->params->get('activity_points_limit', 0))
{
$this->assignPoints('thread.reply');
}
// Assign badge for replying to a thread
if ($length > $this->params->get('activity_badge_limit', 0))
{
$this->assignBadge('thread.reply', JText::_('PLG_KUNENA_EASYSOCIAL_BADGE_REPLY_TITLE'));
}
$stream = FD::stream();
$tmpl = $stream->getTemplate();
$tmpl->setActor($message->userid, SOCIAL_TYPE_USER);
$tmpl->setContext($message->id, 'kunena');
$tmpl->setVerb('reply');
$tmpl->setAccess('core.view');
// Add into stream
$stream->add($tmpl);
// Get a list of subscribers
$recipients = $this->getSubscribers($message);
if (!$recipients)
{
return;
}
$permalink = JUri::getInstance()->toString(array('scheme', 'host', 'port')) . $message->getPermaUrl(null);
$options = array(
'uid' => $message->id,
'actor_id' => $message->userid,
'title' => '',
'type' => 'post',
'url' => $permalink,
'image' => ''
);
// Add notifications in EasySocial
FD::notify('post.reply', $recipients, array(), $options);
}
/**
* Get a list of subscribers for a thread
*
* @since 5.0
* @access public
*
* @param $message
*
* @return array|bool
* @internal param $string
*/
public function getSubscribers($message)
{
$config = KunenaFactory::getConfig();
if ($message->hold > 1)
{
return false;
}
elseif ($message->hold == 1)
{
$mailsubs = 0;
$mailmods = $config->mailmod >= 0;
$mailadmins = $config->mailadmin >= 0;
}
else
{
$mailsubs = (bool) $config->allowsubscriptions;
$mailmods = $config->mailmod >= 1;
$mailadmins = $config->mailadmin >= 1;
}
$once = false;
if ($mailsubs)
{
if (!$message->parent)
{
// New topic: Send email only to category subscribers
$mailsubs = $config->category_subscriptions != 'disabled' ? KunenaAccess::CATEGORY_SUBSCRIPTION : 0;
$once = $config->category_subscriptions == 'topic';
}
elseif ($config->category_subscriptions != 'post')
{
// Existing topic: Send email only to topic subscribers
$mailsubs = $config->topic_subscriptions != 'disabled' ? KunenaAccess::TOPIC_SUBSCRIPTION : 0;
$once = $config->topic_subscriptions == 'first';
}
else
{
// Existing topic: Send email to both category and topic subscribers
$mailsubs = $config->topic_subscriptions == 'disabled' ? KunenaAccess::CATEGORY_SUBSCRIPTION : KunenaAccess::CATEGORY_SUBSCRIPTION | KunenaAccess::TOPIC_SUBSCRIPTION;
// FIXME: category subcription can override topic
$once = $config->topic_subscriptions == 'first';
}
}
// Get all subscribers, moderators and admins who will get the email
$me = KunenaUserHelper::get();
$acl = KunenaAccess::getInstance();
$subscribers = $acl->getSubscribers($message->catid, $message->thread, $mailsubs, $mailmods, $mailadmins, $me->userid);
if (!$subscribers)
{
return false;
}
$result = array();
foreach ($subscribers as $subscriber)
{
if ($subscriber->id)
{
$result[] = $subscriber->id;
}
}
return $result;
}
/**
* @param int $actor
* @param int $target
* @param int $message
*/
public function onAfterThankyou($actor, $target, $message)
{
if (StringHelper::strlen($message->message) > $this->params->get('activity_points_limit', 0))
{
$this->assignPoints('thread.thanks', $target);
}
$this->assignBadge('thread.thanks', JText::_('PLG_KUNENA_EASYSOCIAL_BADGE_THANKED_TITLE'), $target);
$tmpl = FD::stream()->getTemplate();
$tmpl->setActor($actor, SOCIAL_TYPE_USER);
$tmpl->setTarget($target);
$tmpl->setContext($message->id, 'kunena');
$tmpl->setVerb('thanked');
$tmpl->setAccess('core.view');
FD::stream()->add($tmpl);
}
/**
* @param $target
*/
public function onBeforeDeleteTopic($target)
{
FD::stream()->delete($target->id, 'thread.new');
}
/**
* @param $topic
*/
public function onAfterDeleteTopic($topic)
{
FD::stream()->delete($topic->id, 'thread.new');
}
}