Spade

Mini Shell

Directory:~$ /proc/self/root/home/lmsyaran/public_html/css/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/home/lmsyaran/public_html/css/privacy.zip

PK�z�[WS5���actionlogs/actionlogs.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.actionlogs
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR .
'/components/com_actionlogs/helpers/actionlogs.php');
JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR .
'/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla actionlogs data
 *
 * @since  3.9.0
 */
class PlgPrivacyActionlogs extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core actionlog data
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain = $this->createDomain('user_action_logs',
'joomla_user_action_logs_data');

		$query = $this->db->getQuery(true)
			->select('a.*, u.name')
			->from('#__action_logs AS a')
			->innerJoin('#__users AS u ON a.user_id = u.id')
			->where($this->db->quoteName('a.user_id') . ' =
' . (int) $user->id);

		$this->db->setQuery($query);

		$data = $this->db->loadObjectList();

		if (!count($data))
		{
			return array();
		}

		$data    = ActionlogsHelper::getCsvData($data);
		$isFirst = true;

		foreach ($data as $item)
		{
			if ($isFirst)
			{
				$isFirst = false;

				continue;
			}

			$domain->addItem($this->createItemFromArray($item));
		}

		return array($domain);
	}
}
PK�z�[��66actionlogs/actionlogs.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_actionlogs</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_ACTIONLOGS_XML_DESCRIPTION</description>
	<files>
		<filename
plugin="actionlogs">actionlogs.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_actionlogs.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_actionlogs.sys.ini</language>
	</languages>
</extension>
PK�z�[~
����consents/consents.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.consents
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

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

/**
 * Privacy plugin managing Joomla user consent data
 *
 * @since  3.9.0
 */
class PlgPrivacyConsents extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user consent data
	 *
	 * This event will collect data for the core `#__privacy_consents` table
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain    = $this->createDomain('consents',
'joomla_consent_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__privacy_consents'))
			->where($this->db->quoteName('user_id') . ' =
' . (int) $user->id)
			->order($this->db->quoteName('created') . '
ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

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

		return array($domain);
	}
}
PK�z�[���**consents/consents.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_consents</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONSENTS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="consents">consents.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_consents.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_consents.sys.ini</language>
	</languages>
</extension>
PK�z�[!w<<<contact/contact.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.contact
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

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

/**
 * Privacy plugin managing Joomla user contact data
 *
 * @since  3.9.0
 */
class PlgPrivacyContact extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user contact data
	 *
	 * This event will collect data for the contact core tables:
	 *
	 * - Contact custom fields
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user && !$request->email)
		{
			return array();
		}

		$domains   = array();
		$domain    = $this->createDomain('user_contact',
'joomla_user_contact_data');
		$domains[] = $domain;

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__contact_details'))
			->order($this->db->quoteName('ordering') . '
ASC');

		if ($user)
		{
			$query->where($this->db->quoteName('user_id') .
' = ' . (int) $user->id);
		}
		else
		{
			$query->where($this->db->quoteName('email_to') .
' = ' . $this->db->quote($request->email));
		}

		$items = $this->db->setQuery($query)->loadObjectList();

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

		$domains[] =
$this->createCustomFieldsDomain('com_contact.contact',
$items);

		return $domains;
	}
}
PK�z�[$�d0$$contact/contact.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_contact</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONTACT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contact">contact.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_contact.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_contact.sys.ini</language>
	</languages>
</extension>
PK�z�[�y��content/content.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.content
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

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

/**
 * Privacy plugin managing Joomla user content data
 *
 * @since  3.9.0
 */
class PlgPrivacyContent extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user content data
	 *
	 * This event will collect data for the content core table
	 *
	 * - Content custom fields
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domains   = array();
		$domain    = $this->createDomain('user_content',
'joomla_user_content_data');
		$domains[] = $domain;

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__content'))
			->where($this->db->quoteName('created_by') . ' =
' . (int) $user->id)
			->order($this->db->quoteName('ordering') . '
ASC');

		$items = $this->db->setQuery($query)->loadObjectList();

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

		$domains[] =
$this->createCustomFieldsDomain('com_content.article',
$items);

		return $domains;
	}
}
PK�z�[S��<$$content/content.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_content</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONTENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="content">content.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_content.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_content.sys.ini</language>
	</languages>
</extension>
PK�z�[*(�22message/message.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.message
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

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

/**
 * Privacy plugin managing Joomla user messages
 *
 * @since  3.9.0
 */
class PlgPrivacyMessage extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user message
	 *
	 * This event will collect data for the message table
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain = $this->createDomain('user_messages',
'joomla_user_messages_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__messages'))
			->where($this->db->quoteName('user_id_from') . '
= ' . (int) $user->id)
			->orWhere($this->db->quoteName('user_id_to') . '
= ' . (int) $user->id)
			->order($this->db->quoteName('date_time') . '
ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

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

		return array($domain);
	}
}
PK�z�[9i��$$message/message.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_message</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_MESSAGE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="message">message.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_message.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_message.sys.ini</language>
	</languages>
</extension>
PK�z�[�#o,,rsmembership/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�z�[�4Zi="="rsmembership/rsmembership.phpnu�[���<?php
/**
 * @package	RSMembership!
 * @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;

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


/**
 * RSMembership! Privacy Plugin.
 */
class PlgPrivacyRsmembership extends PrivacyPlugin
{
	const EXTENSION = 'plg_privacy_rsmembership';

	/**
	 * Can the plugin run?
	 *
	 * @access public
	 *
	 * @return bool
	 */
	public function canRun()
	{
		return file_exists(JPATH_ADMINISTRATOR .
'/components/com_rsmembership/helpers/helper.php');
	}

    /**
     * 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(PrivacyTableRequest $request,
JUser $user = null)
    {
        $status = new PrivacyRemovalStatus;

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

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

        return $status;
    }

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

		$capabilities = array(
			JText::_('PLG_PRIVACY_RSMEMBERSHIP_CAPABILITIES_GENERAL')
=> array(
				JText::_('PLG_PRIVACY_RSMEMBERSHIP_CAPABILITIES_SUBSCRIPTIONS'),
				JText::_('PLG_PRIVACY_RSMEMBERSHIP_CAPABILITIES_TRANSACTIONS'),
				JText::_('PLG_PRIVACY_RSMEMBERSHIP_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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$this->canRun())
		{
			return array();
		}

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

        require_once JPATH_ADMINISTRATOR .
'/components/com_rsmembership/helpers/helper.php';

		/** @var JTableUser $userTable */
		$userTable = JUser::getTable();
		$userTable->load($user->id);

		$domains = array();
		$domains[] = $this->createSubscriberCustomFields($userTable);
		$domains[] = $this->createTransactions($userTable);
		$domains[] = $this->createSubscriptions($userTable);
		$domains[] = $this->createAccessLogs($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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$this->canRun())
		{
			return;
		}

		// This plugin only processes data for registered user accounts
		if (!$user)
		{
			return;
		}

        // Anonymise data
        require_once JPATH_ADMINISTRATOR .
'/components/com_rsmembership/helpers/helper.php';
        RSMembershipHelper::anonymise($user->id, 0);
	}

    /**
     * Create the domain for the RSMembership! subscriber custom fields
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createSubscriberCustomFields(JTableUser $user)
    {
        $domain =
$this->createDomain('user_rsmembership_subscriber_fields',
'rsmembership_subscriber_fields');

        if ($fields = RSMembershipHelper::getUserFields($user->id))
        {
            $domain->addItem($this->createItemFromArray($fields));
        }

        return $domain;
    }

	/**
	 * Create the domain for the transactions list
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createTransactions(JTableUser $user)
	{
		$domain =
$this->createDomain('user_rsmembership_transactions',
'rsmembership_transactions');

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

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

		return $domain;
	}

    /**
     * Create the domain for the access logs
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createAccessLogs(JTableUser $user)
    {
        $domain =
$this->createDomain('user_rsmembership_access_logs',
'rsmembership_access_logs');

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

        if ($items =
$this->db->setQuery($query)->loadAssocList())
        {
            // Remove user ID and ID columns
			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 subscriptions
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain
     *
     * @since   3.9.0
     */
    private function createSubscriptions(JTableUser $user)
    {
        $domain =
$this->createDomain('user_rsmembership_subscriptions',
'rsmembership_subscriptions');

        // Get the database object
        $db 	= &$this->db;
        $query	= $db->getQuery(true);

        $query
            ->select($db->qn('m.name'))
            ->select('IFNULL(' .
$db->qn('c.name') . ', ' .
$db->q(JText::_('COM_RSMEMBERSHIP_NO_CATEGORY')) . ') AS
' . $db->qn('category_name'))
            ->select($db->qn('ms.extras'))
            ->select($db->qn('ms.status'))
            ->select($db->qn('ms.notified'))
            ->select($db->qn('ms.membership_start'))
            ->select($db->qn('ms.membership_end'))
            ->select($db->qn('ms.published'))
           
->from($db->qn('#__rsmembership_membership_subscribers',
'ms'))
            ->where($db->qn('ms.user_id') . ' = '
. $db->q($user->id))
            ->join('left',
$db->qn('#__rsmembership_memberships', 'm').'
ON '.$db->qn('ms.membership_id').' =
'.$db->qn('m.id'))
           
->join('left',$db->qn('#__rsmembership_categories',
'c').' ON
'.$db->qn('m.category_id').' =
'.$db->qn('c.id'));

        if ($items = $db->setQuery($query)->loadAssocList())
        {
            foreach ($items as $item)
            {
                $item['status'] =
JText::_('COM_RSMEMBERSHIP_STATUS_' .
$item['status']);
                if ($item['extras'])
                {
                    $item['extras']	=
RSMembershipHelper::getExtrasNames($item['extras']);
                }
                $domain->addItem($this->createItemFromArray($item));
            }
        }

        return $domain;
    }
}PK�z�[:\�NNrsmembership/rsmembership.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_rsmembership</name>
	<author>RSJoomla!</author>
	<creationDate>November 2018</creationDate>
	<copyright>(C) 2013-2018 www.rsjoomla.com</copyright>
	<license>GPLv2.0</license>
	<authorEmail>support@rsjoomla.com</authorEmail>
	<authorUrl>www.rsjoomla.com</authorUrl>
	<version>1.0.0</version>
	<description>PLG_PRIVACY_RSMEMBERSHIP_XML_DESCRIPTION</description>
		
	<files>
		<filename
plugin="rsmembership">rsmembership.php</filename>
		<filename>index.html</filename>
	</files>
		
	<languages>
		<language
tag="en-GB">language/en-GB/en-GB.plg_privacy_rsmembership.ini</language>
		<language
tag="en-GB">language/en-GB/en-GB.plg_privacy_rsmembership.sys.ini</language>
	</languages>
</extension>PK�z�[�#o,,rsticketspro/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�z�[���&�,�,rsticketspro/rsticketspro.phpnu�[���<?php
/**
 * @package	RSTicketsPro!
 * @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;

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


/**
 * RSTickets! Pro Privacy Plugin.
 */
class PlgPrivacyRsticketspro extends PrivacyPlugin
{
	const EXTENSION = 'plg_privacy_rsticketspro';

	/**
	 * Can the plugin run?
	 *
	 * @access public
	 *
	 * @return bool
	 */
	public function canRun()
	{
		return file_exists(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/rsticketspro.php');
	}

    /**
     * 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(PrivacyTableRequest $request,
JUser $user = null)
    {
        $status = new PrivacyRemovalStatus;

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

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

        return $status;
    }

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

		$capabilities = array(
			JText::_('PLG_PRIVACY_RSTICKETSPRO_CAPABILITIES_GENERAL')
=> array(
				JText::_('PLG_PRIVACY_RSTICKETSPRO_CAPABILITIES_TICKETS'),
				JText::_('PLG_PRIVACY_RSTICKETSPRO_CAPABILITIES_MESSAGES'),
				JText::_('PLG_PRIVACY_RSTICKETSPRO_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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$this->canRun())
		{
			return array();
		}

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

        require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/rsticketspro.php';

		/** @var JTableUser $userTable */
		$userTable = JUser::getTable();
		$userTable->load($user->id);

		return $this->createUserTickets($userTable);
	}

	/**
	 * 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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$this->canRun())
		{
			return;
		}

		// This plugin only processes data for registered user accounts
		if (!$user)
		{
			return;
		}
		
		// Load the language for the RSTicketsPro!
		JFactory::getLanguage()->load('com_rsticketspro',
JPATH_ADMINISTRATOR);
        // Anonymise data
        require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/rsticketspro.php';
		RSTicketsProHelper::anonymise($user->id, 0);
	}


    /**
     * Create the domain for the tickets
     *
     * @param   JTableUser  $user  The JTableUser object to process
     *
     * @return  PrivacyExportDomain[]
     *
     * @since   3.9.0
     */
    private function createUserTickets(JTableUser $user)
    {
		$domains = array();

        $domain_tickets 		=
$this->createDomain('user_rsticketspro_tickets');
        $domain_files 			=
$this->createDomain('user_rsticketspro_tickets_files');
        $domain_history 		=
$this->createDomain('user_rsticketspro_tickets_history');
        $domain_messages 		=
$this->createDomain('user_rsticketspro_tickets_messages');
		$domain_notes 			=
$this->createDomain('user_rsticketspro_tickets_notes');
		$domain_custom_fields 	=
$this->createDomain('user_rsticketspro_tickets_custom_fields');

        // Get the database object
        $db 	= &$this->db;
        $query	= $db->getQuery(true);

		$query
			->select($db->qn('t.id'))
			->select($db->qn('d.name')) // dep name
			->select('IF(' . $db->qn('t.staff_id') .
' = '.$db->q(0).', ' .
$db->q(JText::_('RST_UNASSIGNED')) . ', (SELECT
'.$db->qn('#__users.name').' FROM
'.$db->qn('#__users').' WHERE
'.$db->qn('#__users.id').' =
'.$db->qn('t.staff_id').')) AS ' .
$db->qn('staff_member'))
			->select($db->qn('t.code'))
			->select($db->qn('t.subject'))
			->select($db->qn('s.name')) // status
			->select($db->qn('p.name')) // priority name
			->select($db->qn('t.date'))
			->select($db->qn('t.last_reply'))
			->select($db->qn('t.closed'))
			->select($db->qn('t.flagged'))
			->select($db->qn('t.agent'))
			->select($db->qn('t.referer'))
			->select($db->qn('t.ip'))
			->select($db->qn('t.logged'))
			->select($db->qn('t.feedback'))
			->select($db->qn('t.followup_sent'))
			->select($db->qn('t.has_files'))
			->select($db->qn('t.time_spent'))
			->from($db->qn('#__rsticketspro_tickets',
't'))
			->where($db->qn('t.customer_id') . ' = ' .
$db->q($user->id))
			->join('left',
$db->qn('#__rsticketspro_departments', 'd').'
ON '.$db->qn('t.department_id').' =
'.$db->qn('d.id'))
			->join('left',$db->qn('#__rsticketspro_statuses',
's').' ON '.$db->qn('t.status_id').'
= '.$db->qn('s.id'))
			->join('left',$db->qn('#__rsticketspro_priorities',
'p').' ON
'.$db->qn('t.priority_id').' =
'.$db->qn('p.id'));

        if ($items = $db->setQuery($query)->loadAssocList())
        {
            foreach ($items as $item)
            {
				// adding the tickets
				$domain_tickets->addItem($this->createItemFromArray($item,
$item['id']));
            }
        }

        // ticket custom fields
        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('c.ticket_id'))
            ->select($db->qn('f.name'))
            ->select($db->qn('c.value'))
           
->from($db->qn('#__rsticketspro_custom_fields_values',
'c'))
            ->join('left',
$db->qn('#__rsticketspro_custom_fields', 'f').'
ON '.$db->qn('c.custom_field_id').' =
'.$db->qn('f.id'))
            ->join('left',
$db->qn('#__rsticketspro_tickets', 't').' ON
'.$db->qn('c.ticket_id').' =
'.$db->qn('t.id'))
            ->where($db->qn('t.customer_id') . ' =
' .  $db->q($user->id));

        if ($cfields = $db->setQuery($query)->loadAssocList()) {
            foreach ($cfields as $cfield) {
               
$domain_custom_fields->addItem($this->createItemFromArray($cfield));
            }
        }

        // handle the files
        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('f.ticket_id'))
            ->select($db->qn('filename'))
            ->from($db->qn('#__rsticketspro_ticket_files',
'f'))
            ->leftJoin(
$db->qn('#__rsticketspro_ticket_messages', 'm') .
' ON (' . $db->qn('f.ticket_message_id') .' =
' . $db->qn('m.id') . ')')
            ->where($db->qn('m.user_id') . ' = '
. $db->q($user->id));

        if ($files = $db->setQuery($query)->loadAssocList()) {
            foreach ($files as $file) {
               
$domain_files->addItem($this->createItemFromArray($file));
            }
        }


        // ticket messages
        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('ticket_id'))
            ->select($db->qn('message'))
            ->select($db->qn('date'))
            ->select($db->qn('html'))
           
->from($db->qn('#__rsticketspro_ticket_messages',
'm'))
            ->where($db->qn('m.user_id') . ' = '
. $db->q($user->id));

        if ($messages = $db->setQuery($query)->loadAssocList()) {
            foreach ($messages as $message) {
               
$domain_messages->addItem($this->createItemFromArray($message));
            }
        }

        // ticket history
        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('ticket_id'))
            ->select($db->qn('ip'))
            ->select($db->qn('date'))
            ->select($db->qn('type'))
           
->from($db->qn('#__rsticketspro_ticket_history'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($user->id));

        if ($actions = $db->setQuery($query)->loadAssocList()) {
            foreach ($actions as $action) {
               
$domain_history->addItem($this->createItemFromArray($action));
            }
        }

        // ticket notes
        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('ticket_id'))
            ->select($db->qn('text'))
            ->select($db->qn('date'))
           
->from($db->qn('#__rsticketspro_ticket_notes'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($user->id));

        if ($notes = $db->setQuery($query)->loadAssocList()) {
            foreach ($notes as $note) {
               
$domain_notes->addItem($this->createItemFromArray($note));
            }
        }

		// searches
		$domain_searches =
$this->createDomain('user_rsticketspro_searches');

		$query	= $db->getQuery(true);
		$query
			->select($db->qn('name'))
			->select($db->qn('params'))
			->select($db->qn('default'))
			->select($db->qn('published'))
			->select($db->qn('ordering'))
			->from($db->qn('#__rsticketspro_searches'))
			->where($db->qn('user_id') . ' = ' .
$db->q($user->id));

		if ($searches = $db->setQuery($query)->loadAssocList()) {
			foreach ($searches as $search) {
				if (!empty($search['params'])) {
					$search['params'] =
@unserialize(base64_decode($search['params']));
				}
				$domain_searches->addItem($this->createItemFromArray($search));
			}
		}

        // Signature
        $domain_signature =
$this->createDomain('user_rsticketspro_signature');

        $query	= $db->getQuery(true);
        $query
            ->select($db->qn('signature'))
            ->from($db->qn('#__rsticketspro_staff'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($user->id));

        if ($signature = $db->setQuery($query)->loadAssoc()) {
           
$domain_signature->addItem($this->createItemFromArray($signature));
        }

		$domains[] = $domain_tickets;
        $domains[] = $domain_messages;
		$domains[] = $domain_files;
        $domains[] = $domain_custom_fields;
		$domains[] = $domain_history;
		$domains[] = $domain_notes;
		$domains[] = $domain_searches;
		$domains[] = $domain_signature;

        return $domains;
    }
}PK�z�[-��NNrsticketspro/rsticketspro.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_rsticketspro</name>
	<author>RSJoomla!</author>
	<creationDate>November 2018</creationDate>
	<copyright>(C) 2013-2018 www.rsjoomla.com</copyright>
	<license>GPLv2.0</license>
	<authorEmail>support@rsjoomla.com</authorEmail>
	<authorUrl>www.rsjoomla.com</authorUrl>
	<version>1.0.0</version>
	<description>PLG_PRIVACY_RSTICKETSPRO_XML_DESCRIPTION</description>
		
	<files>
		<filename
plugin="rsticketspro">rsticketspro.php</filename>
		<filename>index.html</filename>
	</files>
		
	<languages>
		<language
tag="en-GB">language/en-GB/en-GB.plg_privacy_rsticketspro.ini</language>
		<language
tag="en-GB">language/en-GB/en-GB.plg_privacy_rsticketspro.sys.ini</language>
	</languages>
</extension>PK�z�[�*���
user/user.phpnu�[���<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.user
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @license     GNU General Public License version 2 or later; see
LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Utilities\ArrayHelper;

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

/**
 * Privacy plugin managing Joomla user data
 *
 * @since  3.9.0
 */
class PlgPrivacyUser extends PrivacyPlugin
{
	/**
	 * 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(PrivacyTableRequest $request, JUser
$user = null)
	{
		$status = new PrivacyRemovalStatus;

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

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

		return $status;
	}

	/**
	 * Processes an export request for Joomla core user data
	 *
	 * This event will collect data for the following core tables:
	 *
	 * - #__users (excluding the password, otpKey, and otep columns)
	 * - #__user_notes
	 * - #__user_profiles
	 * - User custom fields
	 *
	 * @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(PrivacyTableRequest $request, JUser
$user = null)
	{
		if (!$user)
		{
			return array();
		}

		/** @var JTableUser $userTable */
		$userTable = JUser::getTable();
		$userTable->load($user->id);

		$domains = array();
		$domains[] = $this->createUserDomain($userTable);
		$domains[] = $this->createNotesDomain($userTable);
		$domains[] = $this->createProfileDomain($userTable);
		$domains[] =
$this->createCustomFieldsDomain('com_users.user',
array($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(PrivacyTableRequest $request, JUser
$user = null)
	{
		// This plugin only processes data for registered user accounts
		if (!$user)
		{
			return;
		}

		$pseudoanonymisedData = array(
			'name'      => 'User ID ' . $user->id,
			'username'  => bin2hex(random_bytes(12)),
			'email'     => 'UserID' . $user->id .
'removed@email.invalid',
			'block'     => true,
		);

		$user->bind($pseudoanonymisedData);

		$user->save();

		// Destroy all sessions for the user account
		$sessionIds = $this->db->setQuery(
			$this->db->getQuery(true)
				->select($this->db->quoteName('session_id'))
				->from($this->db->quoteName('#__session'))
				->where($this->db->quoteName('userid') . ' =
' . (int) $user->id)
		)->loadColumn();

		// If there aren't any active sessions then there's nothing to
do here
		if (empty($sessionIds))
		{
			return;
		}

		$storeName = JFactory::getConfig()->get('session_handler',
'none');
		$store     = JSessionStorage::getInstance($storeName);
		$quotedIds = array();

		// Destroy the sessions and quote the IDs to purge the session table
		foreach ($sessionIds as $sessionId)
		{
			$store->destroy($sessionId);
			$quotedIds[] = $this->db->quoteBinary($sessionId);
		}

		$this->db->setQuery(
			$this->db->getQuery(true)
				->delete($this->db->quoteName('#__session'))
				->where($this->db->quoteName('session_id') . '
IN (' . implode(', ', $quotedIds) . ')')
		)->execute();
	}

	/**
	 * Create the domain for the user notes data
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createNotesDomain(JTableUser $user)
	{
		$domain = $this->createDomain('user_notes',
'joomla_user_notes_data');

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

		$items = $this->db->setQuery($query)->loadAssocList();

		// Remove user ID columns
		foreach (array('user_id', 'created_user_id',
'modified_user_id') as $column)
		{
			$items = ArrayHelper::dropColumn($items, $column);
		}

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

		return $domain;
	}

	/**
	 * Create the domain for the user profile data
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createProfileDomain(JTableUser $user)
	{
		$domain = $this->createDomain('user_profile',
'joomla_user_profile_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__user_profiles'))
			->where($this->db->quoteName('user_id') . ' =
' . $this->db->quote($user->id))
			->order($this->db->quoteName('ordering') . '
ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

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

		return $domain;
	}

	/**
	 * Create the domain for the user record
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createUserDomain(JTableUser $user)
	{
		$domain = $this->createDomain('users',
'joomla_users_data');
		$domain->addItem($this->createItemForUserTable($user));

		return $domain;
	}

	/**
	 * Create an item object for a JTableUser object
	 *
	 * @param   JTableUser  $user  The JTableUser object to convert
	 *
	 * @return  PrivacyExportItem
	 *
	 * @since   3.9.0
	 */
	private function createItemForUserTable(JTableUser $user)
	{
		$data    = array();
		$exclude = array('password', 'otpKey',
'otep');

		foreach (array_keys($user->getFields()) as $fieldName)
		{
			if (!in_array($fieldName, $exclude))
			{
				$data[$fieldName] = $user->$fieldName;
			}
		}

		return $this->createItemFromArray($data, $user->id);
	}
}
PK�z�[�E
user/user.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin"
group="privacy" method="upgrade">
	<name>plg_privacy_user</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights
reserved.</copyright>
	<license>GNU General Public License version 2 or later; see
LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_USER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="user">user.php</filename>
	</files>
	<languages>
		<language
tag="en-GB">en-GB.plg_privacy_user.ini</language>
		<language
tag="en-GB">en-GB.plg_privacy_user.sys.ini</language>
	</languages>
</extension>
PK�z�[WS5���actionlogs/actionlogs.phpnu�[���PK�z�[��662actionlogs/actionlogs.xmlnu�[���PK�z�[~
�����
consents/consents.phpnu�[���PK�z�[���**�consents/consents.xmlnu�[���PK�z�[!w<<<ccontact/contact.phpnu�[���PK�z�[$�d0$$�contact/contact.xmlnu�[���PK�z�[�y��Icontent/content.phpnu�[���PK�z�[S��<$$!&content/content.xmlnu�[���PK�z�[*(�22�)message/message.phpnu�[���PK�z�[9i��$$�/message/message.xmlnu�[���PK�z�[�#o,,d3rsmembership/index.htmlnu�[���PK�z�[�4Zi="="�3rsmembership/rsmembership.phpnu�[���PK�z�[:\�NNaVrsmembership/rsmembership.xmlnu�[���PK�z�[�#o,,�Yrsticketspro/index.htmlnu�[���PK�z�[���&�,�,oZrsticketspro/rsticketspro.phpnu�[���PK�z�[-��NN��rsticketspro/rsticketspro.xmlnu�[���PK�z�[�*���
0�user/user.phpnu�[���PK�z�[�E
�user/user.xmlnu�[���PK
i�