| Server IP : 54.36.91.62 / Your IP : 216.73.217.111 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/dansnotreville-fr/plugins/system/rsfeedback/ |
Upload File : |
<?php
/**
* @package RSFeedback!
* @copyright (C) 2010-2018 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Factory;
class plgSystemRsfeedback extends CMSPlugin
{
public function __construct( &$subject, $config ) {
if (!Factory::getApplication()->isClient('admin'))
require_once JPATH_SITE.'/components/com_rsfeedback/helpers/rsfeedback.php';
parent::__construct( $subject, $config );
}
public function onAfterRoute() {
$app = Factory::getApplication();
$option = $app->input->get('option', '', 'cmd');
if (!$app->isClient('admin') && $option == 'com_rsfeedback')
$this->processRules();
}
/*----------------------------------AUTO MODERATION------------------------------------*/
protected function processRules() {
$db = Factory::getDbo();
$query = $db->getQuery(true);
// Get moderation rules
$query->select($db->qn('m.flag_id').', '.$db->qn('m.limit').', '.$db->qn('m.action').', '.$db->qn('m.target'))
->from($db->qn('#__rsfeedback_auto_moderation').' m ')
->join('left', '#__rsfeedback_flags f ON '.$db->qn('f.id').' = '.$db->qn('m.flag_id'))
->where($db->qn('m.published').' = '.$db->q(1))
->where($db->qn('f.published').' = '.$db->q(1));
$db->setQuery($query);
if ($rules = $db->loadObjectList()) {
foreach ($rules as $rule) {
// Delete feedbacks
if ($rule->action == '3') {
$this->deleteFeedback($rule->flag_id,$rule->limit);
}
// Get all feedbacks that have the specified flag
$query->clear();
$query->select('DISTINCT '.$db->qn('fl.feedback_id').', '.$db->qn('f.cat_id'))
->from($db->qn('#__rsfeedback_user_flags', 'fl'))
->join('left', $db->qn('#__rsfeedback_feedbacks','f').' ON '.$db->qn('f.id').' = '.$db->qn('fl.feedback_id'))
->where($db->qn('flag_id').' = '.$db->q($rule->flag_id));
$db->setQuery($query);
if ($feedbacks = $db->loadObjectList()) {
foreach ($feedbacks as $feedback) {
// Get the number of times the flag appears
$query->clear();
$query->select('COUNT('.$db->qn('flag_id').')')
->from($db->qn('#__rsfeedback_user_flags'))
->where($db->qn('feedback_id'). ' = '.$db->q($feedback->feedback_id))
->where($db->qn('flag_id').' = '.$db->q($rule->flag_id))
->group($db->qn('flag_id'));
$db->setQuery($query);
$feedbackFlagLimit = $db->loadResult();
if($feedbackFlagLimit >= $rule->limit) {
// Unpublish feedback
if ($rule->action == 2) {
$query->clear();
$query->update($db->qn('#__rsfeedback_feedbacks'))
->set($db->qn('published').' = '.$db->q('0'))
->where($db->qn('id').' = '.$db->q($feedback->feedback_id));
$db->setQuery($query);
$db->execute();
}
// Archive feedback
if ($rule->action == 1) {
$query->clear();
$query->update($db->qn('#__rsfeedback_feedbacks'))
->set($db->qn('published').' = '.$db->q('2'))
->where($db->qn('id').' = '.$db->q($feedback->feedback_id));
$db->setQuery($query);
$db->execute();
}
// Move feedback
if ($rule->action == 4) {
$this->moveFeedback($feedback->feedback_id,$rule->target);
}
// Auto-move feedback
if ($rule->action == 5) {
// Get the most wanted destination category number of "wrong category" user flag
$query->clear();
$query->select($db->qn('fl.comment').', '.$db->qn('c.id', 'cat_id').', COUNT('.$db->qn('fl.id').') as flags_count')
->from($db->qn('#__rsfeedback_user_flags','fl'))
->join('left', $db->qn('#__rsfeedback_categories','c').' ON '.$db->qn('fl.comment').' = '.$db->qn('c.name'))
->where($db->qn('fl.feedback_id').' = '.$db->q($feedback->feedback_id))
->where($db->qn('fl.flag_id').' = '.$db->q('4'))
->group($db->qn('fl.comment'))
->order('COUNT('.$db->qn('fl.id').') DESC');
$db->setQuery($query, 0,1);
$destination_category = $db->loadObject();
if ($feedback->cat_id != $destination_category->cat_id) // Check if feedback_id si not already in this category
if ( $destination_category->flags_count >= $rule->limit) // Check the rule limit
if ($destination_category->cat_id) // Update the feedbacks cat_id to the specified category
$this->moveFeedback($feedback->feedback_id, $destination_category->cat_id);
}
}
}
}
}
}
}
// Delete feedback
protected function deleteFeedback($flag,$limit) {
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('feedback_id'))
->from($db->qn('#__rsfeedback_user_flags'))
->where($db->qn('flag_id').' = '.$db->q($flag))
->having('COUNT('.$db->qn('flag_id').') >= '.$db->q($limit));
$db->setQuery($query);
if ($feedbacks = $db->loadObjectList()) {
foreach ($feedbacks as $feedback) {
$query->clear()->delete($db->qn('#__rsfeedback_user_flags'))->where($db->qn('feedback_id').' = '.$db->q($feedback->feedback_id));
$db->setQuery($query);
$db->execute();
$query->clear()->delete($db->qn('#__rsfeedback_user_votes'))->where($db->qn('feedback_id').' = '.$db->q($feedback->feedback_id));
$db->setQuery($query);
$db->execute();
$query->clear()->delete($db->qn('#__rsfeedback_feedbacks'))->where($db->qn('id').' = '.$db->q($feedback->feedback_id));
$db->setQuery($query);
$db->execute();
}
}
}
// Move feedback
protected function moveFeedback($feedback_id,$cat_id) {
$db = Factory::getDbo();
$query = $db->getQuery(true);
if (!empty($cat_id)) {
$query->clear()
->update($db->qn('#__rsfeedback_feedbacks'))
->set($db->qn('cat_id').' = '.$db->q($cat_id))
->where($db->qn('id').' = '.$db->q($feedback_id));
$db->setQuery($query);
$db->execute();
}
}
public function onContentPrepareForm($form, $data) {
$context = $form->getName();
if ($context !== 'com_users.user') {
return;
}
if (isset($data->id) && $data->id > 0) {
$lang = Factory::getLanguage();
$lang->load('com_rsfeedback', JPATH_ADMINISTRATOR, 'en-GB', true);
$lang->load('com_rsfeedback', JPATH_ADMINISTRATOR, $lang->getDefault(), true);
$lang->load('com_rsfeedback', JPATH_ADMINISTRATOR, null, true);
$this->loadLanguage();
Form::addFormPath(__DIR__);
$form->loadFile('rsfeedback_anonymise', false);
}
}
}