AnonSec Shell
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/dansnotreville-fr/plugins/system/rsfeedback/rsfeedback.php
<?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);
        }
    }
}

Anon7 - 2022
AnonSec Team