AnonSec Shell
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/c/o/o/coopiak/amisdesseniors-fr/nice/components/com_rsfeedback/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/c/o/o/coopiak/amisdesseniors-fr/nice/components/com_rsfeedback/models/feedbacks.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\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\MVC\Model\ListModel;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Factory;

class RSFeedbackModelFeedbacks extends ListModel
{
	/**
	 * Model context string.
	 *
	 * @var	string
	 */
	public $_context = 'com_rsfeedback.feedbacks';

	protected function getListQuery() {
		$db 		= Factory::getDbo();
		$query		= $db->getQuery(true);
		$user		= Factory::getUser();
		$params 	= Factory::getApplication()->getParams();
		$SortBy		= $params->get('SortBy', 'votes');
		$direction	= $params->get('OrderDirection', 'DESC');

		switch($SortBy) {
			case 'votes':
				$order = $db->qn('nr_votes')." ".$direction;
			break;
			case 'username':
				$order = $db->qn('u.username')." ".$direction;
			break;
			case 'date':
				$order = $db->qn('f.created')." ".$direction;
			break;
			case 'title' :
				$order = $db->qn('f.title')." ".$direction;
			break;
		}

		$columns[] = 'f.*';
		$columns[] = $db->qn('s.name','status_name');
		$columns[] = $db->qn('s.icon','status_icon');
		$columns[] = $db->qn('s.default','status_default');
		$columns[] = $db->qn('u.username');
		$columns[] = $db->qn('u.name','user_name');
		$columns[] = 'COALESCE(SUM('.$db->qn('uv.number_points').'),0) as nr_votes';
		$columns[] = $db->qn('c.max_votes_allowed');
		$columns[] = $db->qn('c.anonymous_voting');
		$columns[] = $db->qn('c.ordering');
		$columns[] = $db->qn('c.id').' as category_id';
		$columns[] = $db->qn('c.name').' as category_name';
		$columns = implode(',',$columns);

		$query->select($columns)
			  ->from($db->qn('#__rsfeedback_feedbacks').' f')
			  ->join('left', $db->qn('#__rsfeedback_statuses').' s ON '.$db->qn('s.id').' = '.$db->qn('f.status_id'))
			  ->join('left', $db->qn('#__rsfeedback_user_votes').' uv ON '.$db->qn('uv.feedback_id').' = '.$db->qn('f.id'))
			  ->join('left', $db->qn('#__rsfeedback_categories').' c ON '.$db->qn('c.id').' = '.$db->qn('f.cat_id'))
			  ->join('left', $db->qn('#__users').' u ON '.$db->qn('u.id').' = '.$db->qn('f.user_id'));

		// published feedbacks
		$query->where($db->qn('f.published') .' = '.$db->q('1'));
		
		// published categories
		$query->where($db->qn('c.published') .' = '.$db->q('1'));

		// display feedbacks from category 
		$ShowFromCategories	= $this->getState('filter.ShowFromCategories', array());
		$categories = implode('\',\'',$ShowFromCategories);

		if (!empty($ShowFromCategories)) 
			$query->where($db->qn('f.cat_id').' IN (\''.$categories.'\')');

		// statuses
		if ($Status = $params->get('Status', ''))
			$query->where($db->qn('s.id').' = '.$db->q($Status));

		$query->group($db->qn('f.id'));

		// group feedback by category ordering 
		$CategoryOrderBy	= $params->get('CategoryOrderBy', 'DESC');
		$GroupByCategory	= $params->get('GroupByCategory', 1);
		if ($GroupByCategory) 
			$query->order($db->qn('c.ordering').' '.$CategoryOrderBy);

		// search filter 
		if ($search = $this->getState('filter.search', '')) 
			$query->where(" (".$db->qn("f.title")." LIKE ".$db->q("%".$search."%")." OR ".$db->qn("f.text")." LIKE ".$db->q("%".$search."%").") ");

		// display feedbacks where the user voted
		if (Factory::getApplication()->input->get('action') == 'votes') {
			$userID = $user->guest ? -1 : $user->id;
			$query->where($db->qn('uv.user_id').' = '.$db->q($userID));
			
			if ($userID == -1) {
				$ip_address = Factory::getApplication()->input->server->get('REMOTE_ADDR', '','string');
				if ($ip_address == '::1') $ip_address = '127.0.0.1';
				$query->where($db->qn('uv.ip').' = '.$db->q($ip_address));
			}
		}

		$query->order($order);

		return $query;
	}

	protected function populateState($ordering = 'votes', $direction = 'DESC') {
		$app	= Factory::getApplication();
		$params = $app->getParams();

		// category filter
		$cat_id = $app->input->get('cat_id', 0, 'int');
		if ($cat_id)
			$this->setState('filter.ShowFromCategories', array($cat_id));
		else 
			$this->setState('filter.ShowFromCategories', $params->get('ShowFromCategories', array()));


		// List state information
		$limit = $params->get('DisplayNum', $app->getUserStateFromRequest('global.list.limit', 'limit', $app->get('list_limit', 10), 'uint'));
		$this->setState('list.limit', $limit);

		$lstart = $app->input->get('limitstart', 0, 'uint');
		$this->setState('list.start', $lstart);

		// Search filter 
		$search = $app->input->get('search', '', 'string');
		$this->setState('filter.search', $search);
	}

	public function getItems() {
		$items 			= parent::getItems();
		$feedback_model = BaseDatabaseModel::getInstance('Feedback', 'RSFeedbackModel');
		$tmp 	= array();

		foreach ($items as $item) {
			$item->comments  				= RSFeedbackHelper::getFeedbackCommentsCount($item->id);
			$item->feedback_flags			= $feedback_model->getFeedbackFlags($item->id);
			$item->user_votes_on_feedback  	= $feedback_model->getUserVotesOnFeedback($item->id);
			$tmp[] = $item;
		}

		return $tmp;
	}
	
	public function getStart() {
		return $this->getState('list.start');
	}

	public function getFeedbackCategory() {
		$cat_id 	= Factory::getApplication()->input->get('cat_id', '', 'int');
		$db			= Factory::getDbo();
		$query		= $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsfeedback_categories'))
			->where($db->qn('id') .' = '.$db->q($cat_id));

		$db->setQuery($query);
		return $db->loadObject();
	}

	//Move the feedback
	public function MoveFeedback() {
		$db		= Factory::getDbo();
		$query	= $db->getQuery(true);
		$app 	= Factory::getApplication();

		$id 				= $app->input->get('id', 0, 'int');
		$target 			= $app->input->get('target', 0, 'int');
		$response 			= new stdClass();
		$permissions		= RSFeedbackHelper::getPermissions();
		$response->success	= false;

		if ($target == 0) {
			$response->error = Text::_('COM_RSFEEDBACK_PLEASE_SELECT_MOVE_DESTINATION',true);
			echo json_encode($response); exit();
		}

		if ($permissions['feedback_move'] == 1) {
			$query->update('#__rsfeedback_feedbacks')
				  ->set($db->qn('cat_id').' = '.$db->q($target))
				  ->where($db->qn('id').' = '.$db->q($id));

		    $db->setQuery($query);
			if ($db->execute()) {
				$response->success = true;
				$response->message = Text::_('COM_RSFEEDBACK_FEEDBACK_MOVED_SUCCESSFULLY',true);
			} else $response->error = Text::_('COM_RSFEEDBACK_FEEDBACK_MOVE_NOTOK', true);
		} else $response->error = Text::_('COM_RSFEEDBACK_FEEDBACK_MOVE_NO_PERMISSION', true);

		echo json_encode($response); exit();
	}

	public function UpdateFeedbackStatus($feedback_id, $status_id) {
		$db 		 = Factory::getDbo();
		$query		 = $db->getQuery(true);
		$permissions = RSFeedbackHelper::getPermissions();
		$statuses    = RSFeedbackHelper::getStatuses();
		$response	 = new stdClass();

		if ($permissions['feedback_update_status']) {
			$query->update($db->qn('#__rsfeedback_feedbacks'))
				->set($db->qn('status_id').' = '.$db->q($status_id))
				->where($db->qn('id').' = '.$db->q($feedback_id));
			$db->setQuery($query);
			$db->execute();

            $response->message = Text::_('COM_RSFEEDBACK_STATUS_UPDATE_SUCCESS',true);

			// remove user votes for this feedback
            if (isset($statuses[$status_id]->permissions->automatically_remove_votes) && $statuses[$status_id]->permissions->automatically_remove_votes == 1) {
                $query->clear()->delete()->from($db->qn('#__rsfeedback_user_votes'))->where($db->qn('feedback_id') . ' = ' .$db->q($feedback_id));
                $db->setQuery($query);
                $db->execute();

                $response->message .= "\r\n".Text::_('COM_RSFEEDBACK_STATUS_UPDATE_INFO_VOTES_AUTOMATICALLY_REMOVED', true);
            }

		} else 
			$response->message = Text::_('COM_RSFEEDBACK_STATUS_UPDATE_ERROR_PERMISSION', true);

		echo json_encode($response); exit();
	}

	/*
		function delete
		$id 				= the feedbacks id
		$moderation_delete  = in order for the auto-moderation rules to apply they need to be independent from the user/guest permissions
	*/
	public function delete($id, $moderation_delete = false) {
		$db 		 = Factory::getDbo();
		$query 		 = $db->getQuery(true);
		$permissions = RSFeedbackHelper::getPermissions();

		if ((($permissions['feedback_delete'] || $permissions['category_delete']) || $moderation_delete) && $id != 0) {
			// delete flags 
			$query->clear()->delete()->from($db->qn('#__rsfeedback_user_flags'))->where($db->qn('feedback_id').' = '.$db->q($id));
			$db->setQuery($query);
			$db->execute();

			// delete votes 
			$query->clear()->delete()->from($db->qn('#__rsfeedback_user_votes'))->where($db->qn('feedback_id').' = '.$db->q($id));
			$db->setQuery($query);
			$db->execute();

			//delete feedback
			$query->clear()->delete()->from($db->qn('#__rsfeedback_feedbacks'))->where($db->qn('id').' = '.$db->q($id));
			$db->setQuery($query);
			$db->execute();

			return true;
		} else 
			return false;
	}

    /*
     * delete all user feedback votes
     * return number of deleted votes
     * */
	public function deleteVotes()
    {
        $user   = Factory::getUser();
        $db     = Factory::getDBO();
        $query  = $db->getQuery(true);
        $config = RSFeedbackHelper::getConfig();

        $ip_address = Factory::getApplication()->input->server->get('REMOTE_ADDR', '', 'string');
        if ($ip_address == '::1') $ip_address = '127.0.0.1';

        $query->select('uv.id')->from($db->qn('#__rsfeedback_user_votes', 'uv'));

        if (!$user->guest) {
            $query->where($db->qn('uv.user_id') . ' = ' . $db->q($user->id));
        } else {
            $query->where($db->qn('uv.ip').' = '.$db->q($ip_address))->where($db->qn('uv.user_id') . ' = ' . $db->q('-1'));
        }

        if ($config->display_reset_my_votes && $config->reset_my_votes_condition == 'status_voting_disabled'){
            $statuses = RSFeedbackHelper::getStatuses();

            $status_disabled_voting = array();
            foreach ($statuses as $status) {
                if ($status->permissions->allow_voting == '0')
                    $status_disabled_voting[] = $status->id;
            }
            if (!empty($status_disabled_voting)) {
                $query
                    ->join('left', $db->qn('#__rsfeedback_feedbacks', 'f').' ON uv.feedback_id = f.id')
                    ->where('f.status_id NOT IN ('.RSFeedbackHelper::qi($status_disabled_voting).')');
            }
        }

        // only active votes
        if (isset($config->user_reset_period) && !empty($config->user_reset_period))
            $query->where($db->qn('uv.date_voted').' >= CURRENT_TIME - INTERVAL '.(int) $config->user_reset_period.' DAY');

        $db->setQuery($query);
        $user_deleted_votes = $db->loadColumn();

        if (!empty($user_deleted_votes)) {
            $query->clear()->delete()->from($db->qn('#__rsfeedback_user_votes'))->where($db->qn('id') . ' IN (' . RSFeedbackHelper::qi($user_deleted_votes).')');
            $db->setQuery($query);
            $db->execute();
        }


        return count($user_deleted_votes);

    }
}

Anon7 - 2022
AnonSec Team