Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/css/ |
| [Home] [System Details] [Kill Me] |
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�