File manager - Edit - /home/ferretapmx/public_html/user.zip
Back
PK ��\�!N N user.xmlnu �[��� <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="privacy" method="upgrade"> <name>plg_privacy_user</name> <author>Joomla! Project</author> <creationDate>2018-05</creationDate> <copyright>(C) 2018 Open Source Matters, Inc.</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> <namespace path="src">Joomla\Plugin\Privacy\User</namespace> <files> <folder plugin="user">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_privacy_user.ini</language> <language tag="en-GB">language/en-GB/plg_privacy_user.sys.ini</language> </languages> </extension> PK ��\c�M"� � src/Extension/UserPlugin.phpnu �[��� <?php /** * @package Joomla.Plugin * @subpackage Privacy.user * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Privacy\User\Extension; use Joomla\CMS\Event\Privacy\CanRemoveDataEvent; use Joomla\CMS\Event\Privacy\ExportRequestEvent; use Joomla\CMS\Event\Privacy\RemoveDataEvent; use Joomla\CMS\Language\Text; use Joomla\CMS\Table\User as TableUser; use Joomla\CMS\User\User; use Joomla\CMS\User\UserHelper; use Joomla\Component\Privacy\Administrator\Plugin\PrivacyPlugin; use Joomla\Component\Privacy\Administrator\Removal\Status; use Joomla\Database\ParameterType; use Joomla\Event\SubscriberInterface; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Privacy plugin managing Joomla user data * * @since 3.9.0 */ final class UserPlugin extends PrivacyPlugin implements SubscriberInterface { /** * Returns an array of events this subscriber will listen to. * * @return array * * @since 5.0.0 */ public static function getSubscribedEvents(): array { return [ 'onPrivacyCanRemoveData' => 'onPrivacyCanRemoveData', 'onPrivacyRemoveData' => 'onPrivacyRemoveData', 'onPrivacyExportRequest' => 'onPrivacyExportRequest', ]; } /** * 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 CanRemoveDataEvent $event The request event * * @return void * * @since 3.9.0 */ public function onPrivacyCanRemoveData(CanRemoveDataEvent $event) { $user = $event->getUser(); $status = new Status(); if (!$user) { $event->addResult($status); return; } if ($user->authorise('core.admin')) { $status->canRemove = false; $status->reason = Text::_('PLG_PRIVACY_USER_ERROR_CANNOT_REMOVE_SUPER_USER'); } $event->addResult($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 ExportRequestEvent $event The request event * * @return void * * @since 3.9.0 */ public function onPrivacyExportRequest(ExportRequestEvent $event) { $user = $event->getUser(); if (!$user) { return; } /** @var TableUser $userTable */ $userTable = User::getTable(); $userTable->load($user->id); $domains = []; $domains[] = $this->createUserDomain($userTable); $domains[] = $this->createNotesDomain($userTable); $domains[] = $this->createProfileDomain($userTable); $domains[] = $this->createCustomFieldsDomain('com_users.user', [$userTable]); $event->addResult($domains); } /** * Removes the data associated with a remove information request * * This event will pseudoanonymise the user account * * @param RemoveDataEvent $event The remove data event * * @return void * * @since 3.9.0 */ public function onPrivacyRemoveData(RemoveDataEvent $event) { $user = $event->getUser(); // This plugin only processes data for registered user accounts if (!$user) { return; } $pseudoanonymisedData = [ '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 UserHelper::destroyUserSessions($user->id); } /** * Create the domain for the user notes data * * @param TableUser $user The TableUser object to process * * @return \Joomla\Component\Privacy\Administrator\Export\Domain * * @since 3.9.0 */ private function createNotesDomain(TableUser $user) { $domain = $this->createDomain('user_notes', 'joomla_user_notes_data'); $db = $this->getDatabase(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__user_notes')) ->where($db->quoteName('user_id') . ' = :userid') ->bind(':userid', $user->id, ParameterType::INTEGER); $items = $db->setQuery($query)->loadAssocList(); // Remove user ID columns foreach (['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 TableUser $user The TableUser object to process * * @return \Joomla\Component\Privacy\Administrator\Export\Domain * * @since 3.9.0 */ private function createProfileDomain(TableUser $user) { $domain = $this->createDomain('user_profile', 'joomla_user_profile_data'); $db = $this->getDatabase(); $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__user_profiles')) ->where($db->quoteName('user_id') . ' = :userid') ->order($db->quoteName('ordering') . ' ASC') ->bind(':userid', $user->id, ParameterType::INTEGER); $items = $db->setQuery($query)->loadAssocList(); foreach ($items as $item) { $domain->addItem($this->createItemFromArray($item)); } return $domain; } /** * Create the domain for the user record * * @param TableUser $user The TableUser object to process * * @return \Joomla\Component\Privacy\Administrator\Export\Domain * * @since 3.9.0 */ private function createUserDomain(TableUser $user) { $domain = $this->createDomain('users', 'joomla_users_data'); $domain->addItem($this->createItemForUserTable($user)); return $domain; } /** * Create an item object for a TableUser object * * @param TableUser $user The TableUser object to convert * * @return \Joomla\Component\Privacy\Administrator\Export\Item * * @since 3.9.0 */ private function createItemForUserTable(TableUser $user) { $data = []; $exclude = ['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 ��\�Sʉ� � src/Extension/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�Sʉ� � src/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�� services/provider.phpnu �[��� <?php /** * @package Joomla.Plugin * @subpackage Privacy.user * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ \defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Database\DatabaseInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Plugin\Privacy\User\Extension\UserPlugin; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container): void { $container->set( PluginInterface::class, function (Container $container) { $plugin = new UserPlugin( (array) PluginHelper::getPlugin('privacy', 'user') ); $plugin->setApplication(Factory::getApplication()); $plugin->setDatabase($container->get(DatabaseInterface::class)); return $plugin; } ); } }; PK ��\�Sʉ� � services/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�Sʉ� � .htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�!N N user.xmlnu �[��� PK ��\c�M"� � � src/Extension/UserPlugin.phpnu �[��� PK ��\�Sʉ� � � src/Extension/.htaccessnu �7��m PK ��\�Sʉ� � �! src/.htaccessnu �7��m PK ��\�� # services/provider.phpnu �[��� PK ��\�Sʉ� � m( services/.htaccessnu �7��m PK ��\�Sʉ� � �) .htaccessnu �7��m PK 8 �*
| ver. 1.4 |
Github
|
.
| PHP 8.2.32 | Generation time: 0.06 |
proxy
|
phpinfo
|
Settings