52
0

Compare commits

...

34 Commits
5.x ... 4.x

Author SHA1 Message Date
f356fdf8a7
Release of v3.0.0 2024-08-23 19:57:59 +02:00
3766c97883
Release of v3.0.0 2024-08-21 21:45:40 +02:00
281a571db9
Release of v3.0.0 2024-08-20 22:42:39 +02:00
23677a0ba5
Release of v3.0.0 2024-08-16 19:30:00 +02:00
f637309e77
Release of v3.0.0 2024-08-15 01:45:34 +02:00
6d85f32e15
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-27 22:51:45 +02:00
5e8b549238
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-26 15:33:19 +02:00
97a7d5a74e
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-20 22:39:22 +02:00
ecd6b2c912
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-18 14:57:56 +02:00
19241a10c9
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-17 02:38:33 +02:00
3bb3de7182
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-07-08 22:54:12 +02:00
bbf7c0121e
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-06-28 03:50:30 +02:00
c5cc38bf97
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-06-21 01:37:13 +02:00
b3d0f79ed2
Update on v2.0.1 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-06-07 23:07:37 +02:00
afb293472c
Release of v2.0.1 2024-06-05 16:38:32 +02:00
3f18b51fb7
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-05-16 16:06:17 +02:00
3c06e9c23c
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-05-13 12:22:56 +02:00
91a5b0750e
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-05-10 18:12:11 +02:00
7690b3ce5e
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-05-06 07:43:47 +02:00
646de45ad3
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-05-03 07:12:58 +02:00
afea3c392a
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-30 10:42:14 +02:00
9544de58d1
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-27 15:51:57 +02:00
31f8fd1dc6
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-24 21:31:12 +02:00
d9b6155c04
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-22 01:07:22 +02:00
8e6a0f5c7e
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-16 20:03:38 +02:00
b79451d24f
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-09 13:49:29 +02:00
66a90d37c1
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-07 11:54:20 +02:00
28fd9f2237
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-04-06 23:29:23 +02:00
74a5b405e2
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-03-26 22:31:36 +02:00
ab00420440
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-03-20 14:20:20 +02:00
e309d1c7f4
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-03-15 12:12:09 +02:00
a3f989be25
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-03-12 12:50:20 +02:00
21aca2e90c
Update on v2.0.0 (changes towards the next release)
Here's an update on the current version, which includes changes towards the next release still in development.
2024-03-11 17:01:01 +02:00
9367ea8ce5
Release of v2.0.0 2024-03-11 16:14:23 +02:00
10 changed files with 145 additions and 175 deletions

View File

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="3.10" group="extension" method="upgrade">
<extension type="plugin" version="4.0" group="extension" method="upgrade">
<name>PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER</name>
<creationDate>9th March, 2024</creationDate>
<creationDate>23rd August, 2024</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>joomla@vdm.io</authorEmail>
<authorUrl>https://dev.vdm.io</authorUrl>
<copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>1.2.2</version>
<version>3.0.0</version>
<namespace path="src">VDM\Plugin\Extension\ComponentbuilderPrivacyCompiler</namespace>
<description>PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_XML_DESCRIPTION</description>
<!-- Scripts to run on installation -->
@ -15,14 +16,17 @@
<!-- Language files -->
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.plg_extension_componentbuilderprivacycompiler.ini</language>
<language tag="en-GB">en-GB/en-GB.plg_extension_componentbuilderprivacycompiler.sys.ini</language>
<language tag="en-GB">en-GB/plg_extension_componentbuilderprivacycompiler.ini</language>
<language tag="en-GB">en-GB/plg_extension_componentbuilderprivacycompiler.sys.ini</language>
<language tag="af-ZA">af-ZA/plg_extension_componentbuilderprivacycompiler.ini</language>
<language tag="af-ZA">af-ZA/plg_extension_componentbuilderprivacycompiler.sys.ini</language>
</languages>
<!-- Plugin files -->
<files>
<filename plugin="componentbuilderprivacycompiler">componentbuilderprivacycompiler.php</filename>
<folder plugin="componentbuilderprivacycompiler">services</folder>
<filename>index.html</filename>
<folder>language</folder>
<folder>services</folder>
<folder>src</folder>
</files>
</extension>

View File

@ -0,0 +1,2 @@
PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_YES="Ja"
PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NO="Nee"

View File

@ -0,0 +1,2 @@
PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_YES="Ja"
PLG_CONTENT_COMPONENTBUILDERLANGUAGETABS_NO="Nee"

View File

@ -1,4 +1,4 @@
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER="Extension - Componentbuilder Privacy Compiler"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_DESCRIPTION="This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin."
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_XML_DESCRIPTION="<h1>Extension - Componentbuilder Privacy Compiler (v.1.2.2)</h1> <div style='clear: both;'></div><p>This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 17th August, 2019</small></p>"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_XML_DESCRIPTION="<h1>Extension - Componentbuilder Privacy Compiler (v.3.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_YOU_DO_NOT_HAVE_A_GLOBAL_PRIVACY_PLUGIN_SETUP_SO_THE_INTEGRATION_WITH_JOOMLA_PRIVACY_SUITE_COULD_NOT_BE_BUILD="You do not have a global privacy plugin setup, so the integration with Joomla privacy suite could not be build."

View File

@ -1,4 +1,4 @@
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER="Extension - Componentbuilder Privacy Compiler"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_DESCRIPTION="This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin."
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_XML_DESCRIPTION="<h1>Extension - Componentbuilder Privacy Compiler (v.1.2.2)</h1> <div style='clear: both;'></div><p>This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 17th August, 2019</small></p>"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_XML_DESCRIPTION="<h1>Extension - Componentbuilder Privacy Compiler (v.3.0.0)</h1> <div style='clear: both;'></div><p>This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.Also be sure to link your admin views to the privacy suite of Joomla via our other Content - Componentbuilder Privacy Tabs plugin.</p><p>Created by <a href='https://dev.vdm.io' target='_blank'>Llewellyn van der Merwe</a><br /><small>Development started 10th March, 2024</small></p>"
PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_YOU_DO_NOT_HAVE_A_GLOBAL_PRIVACY_PLUGIN_SETUP_SO_THE_INTEGRATION_WITH_JOOMLA_PRIVACY_SUITE_COULD_NOT_BE_BUILD="You do not have a global privacy plugin setup, so the integration with Joomla privacy suite could not be build."

View File

@ -20,124 +20,8 @@ use Joomla\CMS\Filesystem\Folder;
/**
* Extension - Componentbuilder Privacy Compiler script file.
*
* @package PlgExtensionComponentbuilderPrivacyCompiler
* @package ComponentbuilderPrivacyCompiler
*/
class plgExtensionComponentbuilderPrivacyCompilerInstallerScript
{
/**
* Called before any type of action
*
* @param string $route Which action is happening (install|uninstall|discover_install|update)
* @param Joomla\CMS\Installer\InstallerAdapter $adapter The object responsible for running this script
*
* @return boolean True on success
*/
public function preflight($route, $adapter)
{
// get application
$app = Factory::getApplication();
// the default for both install and update
$jversion = new JVersion();
if (!$jversion->isCompatible('3.8.0'))
{
$app->enqueueMessage('Please upgrade to at least Joomla! 3.8.0 before continuing!', 'error');
return false;
}
if ('install' === $route)
{
// needs fix
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php';
if (!JFile::exists($pathToCore))
{
$app->enqueueMessage('Joomla Component Builder must first be installed from <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.', 'error');
return false;
}
// load the helper class
JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php');
// block install
$blockInstall = true;
// check the version of JCB
$manifest = ComponentbuilderHelper::manifest();
if (isset($manifest->version) && strpos($manifest->version, '.') !== false)
{
// get the version
$jcbVersion = explode('.', $manifest->version);
// check that we have JCB 3.0.0 or higher installed
if (count($jcbVersion) == 3 && $jcbVersion[0] >= 3 &&
(
($jcbVersion[0] == 3 && $jcbVersion[1] == 0 && $jcbVersion[2] >= 0) ||
($jcbVersion[0] == 3 && $jcbVersion[1] > 0) ||
$jcbVersion[0] > 3)
)
{
$blockInstall = false;
}
}
// allow install if all conditions are met
if ($blockInstall)
{
$app->enqueueMessage('Please upgrade to JCB v3.0.0 or higher before installing this plugin.', 'error');
return false;
}
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php';
if (!JFile::exists($pathToCore))
{
$app->enqueueMessage('Joomla Component Builder must first be installed from <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.', 'error');
return false;
}
// load the helper class
JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php');
// block install
$blockInstall = true;
// check the version of JCB
$manifest = ComponentbuilderHelper::manifest();
if (isset($manifest->version) && strpos($manifest->version, '.') !== false)
{
// get the version
$jcbVersion = explode('.', $manifest->version);
// check that we have JCB 2.10.13 or higher installed
if (count($jcbVersion) == 3 && (($jcbVersion[0] == 2 && $jcbVersion[1] >= 10 && (($jcbVersion[1] == 10 && $jcbVersion[2] >= 13) || ($jcbVersion[1] > 10))) || $jcbVersion[0] >= 3))
{
$blockInstall = false;
}
}
// allow install if all conditions are met
if ($blockInstall)
{
$app->enqueueMessage('Please upgrade to JCB 2.10.13 or higher before installing this plugin.', 'error');
return false;
}
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php';
if (!JFile::exists($pathToCore))
{
$app->enqueueMessage('Joomla Component Builder must first be installed from <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.', 'error');
return false;
}
// check that componentbuilder is installed
$pathToCore = JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php';
if (!JFile::exists($pathToCore))
{
$app->enqueueMessage('Joomla Component Builder must first be installed from <a href="https://www.joomlacomponentbuilder.com/ " target="_blank">Joomla Component Builder</a>.', 'error');
return false;
}
}
return true;
}
}

1
services/index.html Normal file
View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>

48
services/provider.php Normal file
View File

@ -0,0 +1,48 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Extension\PluginInterface;
use Joomla\Event\DispatcherInterface;
use Joomla\DI\ServiceProviderInterface;
use Joomla\DI\Container;
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use VDM\Plugin\Extension\ComponentbuilderPrivacyCompiler\Extension\ComponentbuilderPrivacyCompiler;
return new class () implements ServiceProviderInterface {
/**
* Registers the service provider with a DI container.
*
* @param Container $container The DI container.
*
* @return void
* @since 4.3.0
*/
public function register(Container $container)
{
$container->set(
PluginInterface::class,
function (Container $container) {
$plugin = new ComponentbuilderPrivacyCompiler(
$container->get(DispatcherInterface::class),
(array) PluginHelper::getPlugin('extension', 'componentbuilderprivacycompiler')
);
$plugin->setApplication(Factory::getApplication());
return $plugin;
}
);
}
};

View File

@ -8,10 +8,9 @@
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Plugin\Extension\ComponentbuilderPrivacyCompiler\Extension;
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use VDM\Component\Componentbuilder\Administrator\Helper\ComponentbuilderHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Application\CMSApplication;
@ -19,22 +18,24 @@ use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Registry\Registry;
use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\ArrayHelper;
use VDM\Joomla\Utilities\StringHelper;
JLoader::register('ComponentbuilderHelper', JPATH_ADMINISTRATOR . '/components/com_componentbuilder/helpers/componentbuilder.php');
use VDM\Joomla\Componentbuilder\Compiler\Factory as CFactory;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Placefix;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Line;
use VDM\Joomla\Componentbuilder\Compiler\Factory as CompilerFactory;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Line;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Placefix;
use Joomla\Event\SubscriberInterface;
use Joomla\CMS\Plugin\PluginHelper;
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Extension - Componentbuilder Privacy Compiler plugin.
*
* @package ComponentbuilderPrivacyCompiler
* @since 1.2.2
* @since 3.0.0
*/
class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
final class ComponentbuilderPrivacyCompiler extends CMSPlugin implements SubscriberInterface
{
/**
* Affects constructor behavior. If true, language files will be loaded automatically.
@ -99,15 +100,25 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
{
$view->addpermissions = array_values($view->addpermissions);
// add the new permissions
$view->addpermissions[] = array('action' => 'view.privacy.delete', 'implementation' => 3, 'title' => $view->name_list . ' Privacy Delete', 'description' => ' Allows the users in this group to remove their personal data in ' . $view->name_list . ' via the Joomla privacy suite.');
$view->addpermissions[] = array('action' => 'view.privacy.access', 'implementation' => 3, 'title' => $view->name_list . ' Privacy Access', 'description' => ' Allows the users in this group to access their personal data in ' . $view->name_list . ' via the Joomla privacy suite.');
$view->addpermissions[] = [
'action' => 'view.privacy.delete',
'implementation' => 3,
'title' => $view->name_list . ' Privacy Delete',
'description' => ' Allows the users in this group to remove their personal data in ' . $view->name_list . ' via the Joomla privacy suite.'
];
$view->addpermissions[] = [
'action' => 'view.privacy.access',
'implementation' => 3,
'title' => $view->name_list . ' Privacy Access',
'description' => ' Allows the users in this group to access their personal data in ' . $view->name_list . ' via the Joomla privacy suite.'
];
// convert back to json
$view->addpermissions = json_encode($view->addpermissions, JSON_FORCE_OBJECT);
}
// add placeholders to view if not already set
if (!isset($this->activeViews[$view->id]->placeholders))
{
$this->activeViews[$view->id]->placeholders = CFactory::_('Placeholder')->active;
$this->activeViews[$view->id]->placeholders = CompilerFactory::_('Placeholder')->active;
}
}
}
@ -124,7 +135,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
// check if this component needs a privacy plugin loaded
if ($this->loadPrivacy)
{
$plugin = JPluginHelper::getPlugin('content', 'componentbuilderprivacytabs');
$plugin = PluginHelper::getPlugin('content', 'componentbuilderprivacytabs');
// check if this is json
if (isset($plugin->params) && JsonHelper::check($plugin->params))
{
@ -137,11 +148,11 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
if (isset($plugin->params['plugin']) && $plugin->params['plugin'] > 0)
{
// if linked it will only load it once
CFactory::_('Joomlaplugin.Data')->set($plugin->params['plugin']);
CompilerFactory::_('Joomlaplugin.Data')->set($plugin->params['plugin']);
}
else
{
Factory::getApplication()->enqueueMessage(Text::_('PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_YOU_DO_NOT_HAVE_A_GLOBAL_PRIVACY_PLUGIN_SETUP_SO_THE_INTEGRATION_WITH_JOOMLA_PRIVACY_SUITE_COULD_NOT_BE_BUILD'), 'Error');
$this->getApplication()->enqueueMessage(Text::_('PLG_EXTENSION_COMPONENTBUILDERPRIVACYCOMPILER_YOU_DO_NOT_HAVE_A_GLOBAL_PRIVACY_PLUGIN_SETUP_SO_THE_INTEGRATION_WITH_JOOMLA_PRIVACY_SUITE_COULD_NOT_BE_BUILD'), 'Warning');
$this->loadPrivacy= false;
}
}
@ -160,8 +171,8 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
if ($this->loadPrivacy && ArrayHelper::check($this->activeViews))
{
// get compiler defaults
$strictFieldExportPermissions = CFactory::_('Config')->get('permission_strict_per_field', false);
$exportTextOnly = CFactory::_('Config')->get('export_text_only', 1);
$strictFieldExportPermissions = CompilerFactory::_('Config')->get('permission_strict_per_field', false);
$exportTextOnly = CompilerFactory::_('Config')->get('export_text_only', 1);
// load the getPrivacyExport functions
foreach ($this->activeViews as $id => &$view)
@ -169,18 +180,18 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
// set permissions based on view
if (isset($view->params['privacy']['permissions']))
{
CFactory::_('Config')->set('permission_strict_per_field', (bool) $view->params['privacy']['permissions']);
CompilerFactory::_('Config')->set('permission_strict_per_field', (bool) $view->params['privacy']['permissions']);
}
// allow text only export
CFactory::_('Config')->set('export_text_only', 1);
CompilerFactory::_('Config')->set('export_text_only', 1);
// set view list name
$viewName_list = StringHelper::safe($view->name_list);
// set view single name
$viewName_single = StringHelper::safe($view->name_single);
// load the function
CFactory::_('Compiler.Builder.Content.Multi')->add($viewName_list . '|MODELEXPORTMETHOD',
CompilerFactory::_('Compiler.Builder.Content.Multi')->add($viewName_list . '|MODELEXPORTMETHOD',
$compiler->setGetItemsModelMethod(
$viewName_single,
$viewName_list,
@ -192,7 +203,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
)
);
// get the permissions building values for later if needed
if (CFactory::_('Config')->get('permission_strict_per_field', false) &&
if (CompilerFactory::_('Config')->get('permission_strict_per_field', false) &&
isset($compiler->permissionFields[$viewName_single]) &&
ArrayHelper::check($compiler->permissionFields[$viewName_single]))
{
@ -201,8 +212,8 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
}
// set compiler defaults
CFactory::_('Config')->set('permission_strict_per_field', $strictFieldExportPermissions);
CFactory::_('Config')->set('export_text_only', $exportTextOnly);
CompilerFactory::_('Config')->set('permission_strict_per_field', $strictFieldExportPermissions);
CompilerFactory::_('Config')->set('export_text_only', $exportTextOnly);
// add helper classes
$helper_strings = ['CUSTOM_HELPER_SCRIPT', 'SITE_CUSTOM_HELPER_SCRIPT', 'BOTH_CUSTOM_HELPER_SCRIPT'];
@ -214,7 +225,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
foreach ($helper_strings as $helper)
{
if (($helper_content = CFactory::_('Compiler.Builder.Content.One')->get($helper)) !== null &&
if (($helper_content = CompilerFactory::_('Compiler.Builder.Content.One')->get($helper)) !== null &&
StringHelper::check($helper_content))
{
foreach ($privacy_events as $privacy_event => &$add)
@ -229,8 +240,8 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
}
// add the events still needed
CFactory::_('Compiler.Builder.Content.One')->add('BOTH_CUSTOM_HELPER_SCRIPT',
CFactory::_('Placeholder')->update_($this->getHelperMethod($privacy_events))
CompilerFactory::_('Compiler.Builder.Content.One')->add('BOTH_CUSTOM_HELPER_SCRIPT',
CompilerFactory::_('Placeholder')->update_($this->getHelperMethod($privacy_events))
);
}
}
@ -248,7 +259,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
{
foreach($this->languageArray as $key => $string)
{
CFactory::_('Language')->set('site', $key, $string);
CompilerFactory::_('Language')->set('site', $key, $string);
}
}
}
@ -299,7 +310,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyPlugin \$plugin The plugin being processed";
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyRemovalStatus \$status The status being set";
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyTableRequest \$request The request record being processed";
$methods .= PHP_EOL . Indent::_(1) . " * @param JUser \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " * @param Joomla__"."_effdaf6d_2275_425d_9f52_d4952e564d34___Power \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @return PrivacyRemovalStatus";
$methods .= PHP_EOL . Indent::_(1) . " */";
@ -316,27 +327,27 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " Check if user has permission to delete " . $view->name_list;
// set the if statement based on the permission builder
$methods .= PHP_EOL . Indent::_(2) . "if (!\$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.delete')
. CompilerFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.delete')
. "', 'com_" . Placefix::_("component") . "') && !\$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.privacy.delete')
. CompilerFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.privacy.delete')
. "', 'com_" . Placefix::_("component") . "'))";
$methods .= PHP_EOL . Indent::_(2) . "{";
// set language key
$lang_key = $view->placeholders[Placefix::_("LANG_PREFIX")] . '_PRIVACY_CANT_REMOVE_' . $view->placeholders[Placefix::_("VIEWS")];
// set language string
$this->languageArray[$lang_key] = "You do not have permission to remove/delete ". $view->name_list . ".";
$methods .= PHP_EOL . Indent::_(3) . "\$reasons[] = JTe" . "xt::_('" . $lang_key . "');";
$methods .= PHP_EOL . Indent::_(3) . "\$reasons[] = Joomla__" . "_ba6326ef_cb79_4348_80f4_ab086082e3c5___Power::_('" . $lang_key . "');";
$methods .= PHP_EOL . Indent::_(2) . "}";
// set language key
$lang_key = $view->placeholders[Placefix::_("LANG_PREFIX")] . '_PRIVACY_CANT_REMOVE_CONTACT_SUPPORT';
}
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " Check if any reasons were found not to allow removal";
$methods .= PHP_EOL . Indent::_(2) . "if (ArrayHelper::check(\$reasons))";
$methods .= PHP_EOL . Indent::_(2) . "if (Super__" . "_0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check(\$reasons))";
$methods .= PHP_EOL . Indent::_(2) . "{";
$methods .= PHP_EOL . Indent::_(3) . "\$status->canRemove = false;";
// set language string
$this->languageArray[$lang_key] = 'Please contact support for more details.';
$methods .= PHP_EOL . Indent::_(3) . "\$status->reason = implode(' ' . PHP_EOL, \$reasons) . ' ' . PHP_EOL . JTe" . "xt::_('" . $lang_key . "');";
$methods .= PHP_EOL . Indent::_(3) . "\$status->reason = implode(' ' . PHP_EOL, \$reasons) . ' ' . PHP_EOL . Joomla__" . "_ba6326ef_cb79_4348_80f4_ab086082e3c5___Power::_('" . $lang_key . "');";
$methods .= PHP_EOL . Indent::_(2) . "}";
$methods .= PHP_EOL . Indent::_(2) . "return \$status;";
$methods .= PHP_EOL . Indent::_(1) . "}" . PHP_EOL;
@ -358,7 +369,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyPlugin \$plugin The plugin being processed";
$methods .= PHP_EOL . Indent::_(1) . " * @param DomainArray \$domains The array of domains";
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyTableRequest \$request The request record being processed";
$methods .= PHP_EOL . Indent::_(1) . " * @param JUser \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " * @param Joomla__"."_effdaf6d_2275_425d_9f52_d4952e564d34___Power \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @return PrivacyExportDomain[]";
$methods .= PHP_EOL . Indent::_(1) . " */";
@ -374,9 +385,9 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " Check if user has permission to access " . $view->name_list;
// set the if statement based on the permission builder
$methods .= PHP_EOL . Indent::_(2) . "if (\$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getGlobal($viewName_single, 'core.access')
. CompilerFactory::_('Compiler.Creator.Permission')->getGlobal($viewName_single, 'core.access')
. "', 'com_" . Placefix::_("component") . "') || \$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getGlobal($viewName_single, 'core.privacy.access')
. CompilerFactory::_('Compiler.Creator.Permission')->getGlobal($viewName_single, 'core.privacy.access')
. "', 'com_" . Placefix::_("component") . "'))";
$methods .= PHP_EOL . Indent::_(2) . "{";
$methods .= PHP_EOL . Indent::_(3) . "//" . Line::_(__Line__, __Class__) . " Get " . $view->name_single . " domain";
@ -396,7 +407,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(1) . "/**";
$methods .= PHP_EOL . Indent::_(1) . " * Create the domain for the " . $view->name_single;
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @param JTableUser \$user The JTableUser object to process";
$methods .= PHP_EOL . Indent::_(1) . " * @param Joomla__"."_11accf54_fcb9_4ba0_a645_7c80ce14e224___Power \$user The Joomla__"."_11accf54_fcb9_4ba0_a645_7c80ce14e224___Power object to process";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @return PrivacyExportDomain";
$methods .= PHP_EOL . Indent::_(1) . " */";
@ -444,7 +455,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " Get all item details of " . $view->name_list . " that belong to this user";
$methods .= PHP_EOL . Indent::_(2) . "\$items = \$model->getPrivacyExport(\$pks, \$user);";
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " check if we have items since permissions could block the request";
$methods .= PHP_EOL . Indent::_(2) . "if (ArrayHelper::check(\$items))";
$methods .= PHP_EOL . Indent::_(2) . "if (Super__" . "_0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check(\$items))";
$methods .= PHP_EOL . Indent::_(2) . "{";
$methods .= PHP_EOL . Indent::_(3) . "//" . Line::_(__Line__, __Class__) . " Remove " . $view->name_single . " default columns";
$methods .= PHP_EOL . Indent::_(3) . "foreach (array('params', 'asset_id', 'checked_out', 'checked_out_time', 'created', 'created_by', 'modified', 'modified_by', 'published', 'ordering', 'access', 'version', 'hits') as \$column)";
@ -553,7 +564,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(1) . " * Removes the data associated with a remove information request";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @param PrivacyTableRequest \$request The request record being processed";
$methods .= PHP_EOL . Indent::_(1) . " * @param JUser \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " * @param Joomla__"."_effdaf6d_2275_425d_9f52_d4952e564d34___Power \$user The user account associated with this request if available";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @return void";
$methods .= PHP_EOL . Indent::_(1) . " */";
@ -576,9 +587,9 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " Check if user has permission to delet " . $view->name_list;
// set the if statement based on the permission builder
$methods .= PHP_EOL . Indent::_(2) . "if (\$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.delete')
. CompilerFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.delete')
. "', 'com_" . Placefix::_("component") . "') || \$user->authorise('"
. CFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.privacy.delete')
. CompilerFactory::_('Compiler.Creator.Permission')->getAction($viewName_single, 'core.privacy.delete')
. "', 'com_" . Placefix::_("component") . "'))";
$methods .= PHP_EOL . Indent::_(2) . "{";
// check if this is a plain delete, or it is a Anonymize
@ -627,7 +638,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
}
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @param JTableUser \$user The JTableUser object to process";
$methods .= PHP_EOL . Indent::_(1) . " * @param Joomla__"."_11accf54_fcb9_4ba0_a645_7c80ce14e224___Power \$user The Joomla__"."_11accf54_fcb9_4ba0_a645_7c80ce14e224___Power object to process";
$methods .= PHP_EOL . Indent::_(1) . " *";
$methods .= PHP_EOL . Indent::_(1) . " * @return void";
$methods .= PHP_EOL . Indent::_(1) . " */";
@ -681,7 +692,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(2) . "//" . Line::_(__Line__, __Class__) . " get all items for the " . $view->name_list . " table that belong to this user";
$methods .= PHP_EOL . Indent::_(2) . "\$pks = \$db->setQuery(\$query)->loadColumn();";
$methods .= PHP_EOL .PHP_EOL . Indent::_(2) . "if (ArrayHelper::check(\$pks))";
$methods .= PHP_EOL .PHP_EOL . Indent::_(2) . "if (Super__" . "_0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check(\$pks))";
$methods .= PHP_EOL . Indent::_(2) . "{";
$methods .= PHP_EOL . Indent::_(3) . "//" . Line::_(__Line__, __Class__) . " get the " . $viewName_single . " model";
$methods .= PHP_EOL . Indent::_(3) . "\$model = self::getModel('" . $viewName_single . "', JPATH_ADMINISTRATOR . '/components/com_" . Placefix::_("component") . "');";
@ -738,7 +749,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
if ($hasPermissional)
{
$methods .= PHP_EOL . PHP_EOL . Indent::_(3) . "//" . Line::_(__Line__, __Class__) . " Get global permissional control activation. (default is inactive)";
$methods .= PHP_EOL . Indent::_(3) . "\$strict_permission_per_field = \JComponentHelper::getParams('com_" . Placefix::_("component") . "')->get('strict_permission_per_field', 0);";
$methods .= PHP_EOL . Indent::_(3) . "\$strict_permission_per_field = Joomla__" . "_aeb8e463_291f_4445_9ac4_34b637c12dbd___Power::getParams('com_" . Placefix::_("component") . "')->get('strict_permission_per_field', 0);";
$methods .= PHP_EOL . Indent::_(3) . "if(\$strict_permission_per_field)";
$methods .= PHP_EOL . Indent::_(3) . "{";
$methods .= PHP_EOL . Indent::_(4) . "//" . Line::_(__Line__, __Class__) . " remove all fields that is not permitted to be changed";
@ -768,7 +779,7 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(3) . "\$table = \$model->getTable();";
$methods .= PHP_EOL . Indent::_(3) . "//" . Line::_(__Line__, __Class__) . " check that we still have pseudoanonymised data for " . $view->name_list . " set";
$methods .= PHP_EOL . Indent::_(3) . "if (!ArrayHelper::check(\$pseudoanonymisedData))";
$methods .= PHP_EOL . Indent::_(3) . "if (!Super__" . "_0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check(\$pseudoanonymisedData))";
$methods .= PHP_EOL . Indent::_(3) . "{";
$methods .= PHP_EOL . Indent::_(4) . "//" . Line::_(__Line__, __Class__) . " still archive all items";
$methods .= PHP_EOL . Indent::_(4) . "\$table->publish(\$pks, 2);";
@ -819,4 +830,21 @@ class PlgExtensionComponentbuilderPrivacyCompiler extends CMSPlugin
$methods .= PHP_EOL . Indent::_(1) . "}" . PHP_EOL;
}
}
/**
* Returns an array of events this subscriber will listen to.
*
* @return array
*
* @since 5.0.0
*/
public static function getSubscribedEvents(): array
{
return [
'jcb_ce_onBeforeModelViewData' => 'jcb_ce_onBeforeModelViewData',
'jcb_ce_onAfterGet' => 'jcb_ce_onAfterGet',
'jcb_ce_onBeforeUpdateFiles' => 'jcb_ce_onBeforeUpdateFiles',
'jcb_ce_onBeforeSetLangFileData' => 'jcb_ce_onBeforeSetLangFileData'
];
}
}

1
src/Extension/index.html Normal file
View File

@ -0,0 +1 @@
<html><body bgcolor="#FFFFFF"></body></html>