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/coopiak/amisdesseniors-fr/nice/plugins/privacy/rsfeedback/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/nice/plugins/privacy/rsfeedback/rsfeedback.php
<?php
/**
 * @package	RSFeedback!
 * @copyright	(c) 2013 - 2018 RSJoomla!
 * @link		https://www.rsjoomla.com
 * @license	GNU General Public License http://www.gnu.org/licenses/gpl-3.0.en.html
 */

// No direct access.
defined('_JEXEC') or die('Restricted access');

use Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\User\User;
use Joomla\CMS\Factory;

JLoader::registerAlias('PrivacyPlugin', '\\Joomla\\Component\\Privacy\\Administrator\\Plugin\\PrivacyPlugin');
JLoader::registerAlias('PrivacyRemovalStatus', '\\Joomla\\Component\\Privacy\\Administrator\\Removal\\Status');

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');
JLoader::register('PrivacyRemovalStatus', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/removal/status.php');


/**
 * RSFeedback! Privacy Plugin.
 */
class PlgPrivacyRsfeedback extends PrivacyPlugin
{
	const EXTENSION = 'plg_privacy_rsfeedback';

	/**
	 * Can the plugin run?
	 *
	 * @access public
	 *
	 * @return bool
	 */
	public function canRun() {
		if (file_exists(JPATH_SITE . '/components/com_rsfeedback/helpers/rsfeedback.php')) {
			require_once JPATH_SITE . '/components/com_rsfeedback/helpers/rsfeedback.php';
			return true;
		}

		return false;
	}

    /**
     * Performs validation to determine if the data associated with a remove information request can be processed
     *
     * This event will not allow a super user account to be removed
     *
     * @param   PrivacyTableRequest  $request  The request record being processed
     * @param   JUser                $user     The user account associated with this request if available
     *
     * @return  PrivacyRemovalStatus
     *
     * @since   3.9.0
     */
    public function onPrivacyCanRemoveData($request, $user = null) {
        $status = new PrivacyRemovalStatus;

        if (!$user) {
            return $status;
        }

        if ($user->authorise('core.admin')) {
            $status->canRemove = false;
            $status->reason    = Text::_('PLG_PRIVACY_RSFEEDBACK_ERROR_CANNOT_REMOVE_SUPER_USER');
        }

        return $status;
    }

	/**
	 * Function that retrieves the information for the RSFeedback! Component Capabilities
	 * @return array
	 *
	 */
	public function onPrivacyCollectAdminCapabilities() {
		if (!$this->canRun()) {
			return array();
		}

		$capabilities = array(
			Text::_('PLG_PRIVACY_RSFEEDBACK_CAPABILITIES_GENERAL') => array(
			    Text::_('PLG_PRIVACY_RSFEEDBACK_CAPABILITIES_SUBSCRIBE_FEEDBACKS'),
			    Text::_('PLG_PRIVACY_RSFEEDBACK_CAPABILITIES_VOTE_FEEDBACKS'),
			    Text::_('PLG_PRIVACY_RSFEEDBACK_CAPABILITIES_COMMENT_FEEDBACKS'),
			    Text::_('PLG_PRIVACY_RSFEEDBACK_CAPABILITIES_RECAPTCHA'),
			)
		);

		return $capabilities;
	}
	/**
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest($request, $user = null) {
        $domains = array();

		if (!$this->canRun()) {
			return $domains;
		}

		if (!$user) {
            $domains[] = $this->createComments($request->email);
            $domains[] = $this->createSubscriptions($request->email);
        } else {
            $userTable = User::getTable();
            $userTable->load($user->id);

            $domains[] = $this->createFeedbacks($userTable);
            $domains[] = $this->createComments($userTable->email);
            $domains[] = $this->createSubscriptions($userTable->email);
            $domains[] = $this->createUserFlags($userTable);
            $domains[] = $this->createUserVotes($userTable);
        }

        return $domains;
	}

	/**
	 * Removes the data associated with a remove information request
	 *
	 * This event will pseudoanonymise the user account
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyRemoveData($request, $user = null) {
		if (!$this->canRun()) {
			return;
		}

        Factory::getLanguage()->load('com_rsfeedback', JPATH_ADMINISTRATOR);

		// If no user exists, look for the email
		if (!$user) {
            // Anonymize user's comments
            RSFeedbackHelper::anonymiseComments($request->email);

            // Anonymize user's subscriptions
            RSFeedbackHelper::anonymiseSubscriptions($request->email);
		} else {
            RSFeedbackHelper::anonymise($user->id, 0);
        }
	}

    /**
     * Create the domain for the comments
     *
     * @param   string  $email  The email address to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createComments($email) {
        $domain = $this->createDomain('user_rsfeedback_comments', 'rsfeedback_comments');

        $query = $this->db->getQuery(true)
            ->select('*')
            ->from($this->db->qn('#__rsfeedback_comments'))
            ->where($this->db->qn('email') . ' = '. $this->db->quote($email));

        if ($items = $this->db->setQuery($query)->loadAssocList()) {
            $items = ArrayHelper::dropColumn($items, 'id');
            foreach ($items as $item) {
                $domain->addItem($this->createItemFromArray($item));
            }
        }

        return $domain;
    }

    /**
     * Create the domain for the subscriptions
     *
     * @param   string  $email  The email address to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createSubscriptions($email) {
        $domain = $this->createDomain('user_rsfeedback_subscriptions', 'rsfeedback_subscriptions');

        $query = $this->db->getQuery(true)
            ->select('*')
            ->from($this->db->qn('#__rsfeedback_subscriptions'))
            ->where($this->db->qn('email') . ' = '. $this->db->quote($email));

        if ($items = $this->db->setQuery($query)->loadAssocList()) {
            $items = ArrayHelper::dropColumn($items, 'id');
            foreach ($items as $item) {
                $domain->addItem($this->createItemFromArray($item));
            }
        }

        return $domain;
    }

    /**
     * Create the domain for the user votes
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createUserVotes($user) {
        $domain = $this->createDomain('user_rsfeedback_votes', 'rsfeedback_votes');

        $query = $this->db->getQuery(true)
            ->select('*')
            ->from($this->db->qn('#__rsfeedback_user_votes'))
            ->where($this->db->qn('user_id') . ' = '. $this->db->quote($user->id));

        if ($items = $this->db->setQuery($query)->loadAssocList()) {
            foreach (array('user_id', 'id') as $column) {
                $items = ArrayHelper::dropColumn($items, $column);
            }

            foreach ($items as $item) {
                $domain->addItem($this->createItemFromArray($item));
            }
        }

        return $domain;
    }

    /**
     * Create the domain for the user flags
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createUserFlags($user) {
        $domain = $this->createDomain('user_rsfeedback_flags', 'rsfeedback_flags');

        $query = $this->db->getQuery(true)
            ->select($this->db->qn('f.name', 'flag_name'))
            ->select('uf.*')
            ->from($this->db->qn('#__rsfeedback_user_flags', 'uf'))
            ->join('left', $this->db->qn('#__rsfeedback_flags', 'f') . ' ON (' . $this->db->qn('uf.flag_id') . ' = ' . $this->db->qn('f.id') . ')')
            ->where($this->db->qn('uf.user_id') . ' = '. $this->db->quote($user->id));

        if ($items = $this->db->setQuery($query)->loadAssocList()) {
            foreach (array('user_id', 'id', 'flag_id') as $column) {
                $items = ArrayHelper::dropColumn($items, $column);
            }

            foreach ($items as $item) {
                $domain->addItem($this->createItemFromArray($item));
            }
        }

        return $domain;
    }

    /**
     * Create the domain for the user feedbacks
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createFeedbacks($user) {
        $domain = $this->createDomain('user_rsfeedback_feedbacks', 'rsfeedback_feedbacks');

        $query = $this->db->getQuery(true)
            ->select($this->db->qn('c.name', 'category_name'))
            ->select($this->db->qn('s.name', 'status_name'))
            ->select('f.*')
            ->from($this->db->qn('#__rsfeedback_feedbacks', 'f'))
            ->join('left', $this->db->qn('#__rsfeedback_categories', 'c') . ' ON (' . $this->db->qn('f.cat_id') . ' = ' . $this->db->qn('c.id') . ')')
            ->join('left', $this->db->qn('#__rsfeedback_statuses', 's') . ' ON (' . $this->db->qn('f.status_id') . ' = ' . $this->db->qn('s.id') . ')')
            ->where($this->db->qn('f.user_id') . ' = '. $this->db->quote($user->id));

        if ($items = $this->db->setQuery($query)->loadAssocList()) {
            foreach (array('user_id', 'status_id', 'cat_id') as $column) {
                $items = ArrayHelper::dropColumn($items, $column);
            }

            foreach ($items as $item) {
                $domain->addItem($this->createItemFromArray($item, $item['id']));
            }
        }

        return $domain;
    }
}

Anon7 - 2022
AnonSec Team