| Current Path : /home/smartconb/www/armencom33/plugins/privacy/jmailalerts/ |
| Current File : /home/smartconb/www/armencom33/plugins/privacy/jmailalerts/jmailalerts.php |
<?php
/**
* @package JMailAlerts
* @subpackage Actionlog.jmailAlerts
*
* @author Techjoomla <extensions@techjoomla.com>
* @copyright Copyright (C) 2009 - 2018 Techjoomla. All rights reserved.
* @license GNU General Public License version 2 or later
*/
// No direct access.
defined('_JEXEC') or die();
jimport('joomla.application.component.model');
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 JMailAlerts user data
*
* @since 3.2.11
*/
class PlgPrivacyJmailalerts extends PrivacyPlugin
{
/**
* Load the language file on instantiation.
*
* @var boolean
*
* @since 3.2.11
*/
protected $autoloadLanguage = true;
/**
* Database object
*
* @var JDatabaseDriver
* @since 2.6.1
*/
protected $db;
/**
* Reports the privacy related capabilities for this plugin to site administrators.
*
* @return array
*
* @since 2.6.1
*/
public function onPrivacyCollectAdminCapabilities()
{
$this->loadLanguage();
return array(
JText::_('PLG_PRIVACY_JMAILALERTS') => array(
JText::_('PLG_PRIVACY_JMAILALERTS_PRIVACY_CAPABILITY_USER_DETAIL')
)
);
}
/**
* Processes an export request for Jmailalerts user data
*
* This event will collect data for the following tables:
*
* - #__jma_subscribers
*
* @param PrivacyTableRequest $request The request record being processed
* @param JUser $user The user account associated with this request if available
*
* @return PrivacyExportDomain[]
*
* @since 2.6.1
*/
public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
{
if (!$user)
{
return array();
}
/** @var JTableUser $userTable */
$userTable = JUser::getTable();
$userTable->load($user->id);
$domains = array();
// Create the domain for the JMailAlerts User Subscription data
$domains[] = $this->createJmailalertsSubscriptionDomain($userTable);
return $domains;
}
/**
* Create the domain for the JMailAlerts User Subscription data
*
* @param JTableUser $user The JTableUser object to process
*
* @return PrivacyExportDomain
*
* @since 2.6.1
*/
private function createJmailalertsSubscriptionDomain(JTableUser $user)
{
$domain = $this->createDomain('Jmailalerts subscription', 'Jmailalerts subscription data');
$query = $this->db->getQuery(true)
->select('id, ordering, state, user_id, alert_id, name, email_id, frequency, date, plugins_subscribed_to')
->from($this->db->quoteName('#__jma_subscribers'))
->where(
$this->db->quoteName('user_id') . ' = ' . $this->db->quote($user->id) .
' OR ' . $this->db->quoteName('email_id') . ' = ' . $this->db->quote($user->email)
);
$userSubscriptionData = $this->db->setQuery($query)->loadAssocList();
if (!empty($userSubscriptionData))
{
foreach ($userSubscriptionData as $subscriptionData)
{
$domain->addItem($this->createItemFromArray($subscriptionData, $subscriptionData['id']));
}
}
return $domain;
}
/**
* 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 2.6.1
*/
public function onPrivacyCanRemoveData(PrivacyTableRequest $request, JUser $user = null)
{
$status = new PrivacyRemovalStatus;
if (!$user)
{
return $status;
}
return $status;
}
/**
* 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 2.6.1
*/
public function onPrivacyRemoveData(PrivacyTableRequest $request, JUser $user = null)
{
// This plugin only processes data for registered user accounts
if (!$user)
{
return;
}
// If there was an error loading the user do nothing here
if ($user->guest)
{
return;
}
$db = $this->db;
// 1. Delete Jmailalerts user subscription data :
$query1 = $db->getQuery(true)
->delete($db->quoteName('#__jma_subscribers'))
->where('user_id = ' . $user->id . ' OR ' . 'email_id = ' . $db->quote($user->email));
$db->setQuery($query1);
$db->execute();
}
}