From 33764ee59797cc45d1c9f25200daf05322867b94 Mon Sep 17 00:00:00 2001 From: aB0t Date: Thu, 15 Aug 2024 01:35:23 +0200 Subject: [PATCH] Release of v3.0.0 --- componentbuilderprivacytabs.xml | 24 ++-- forms/admin_view.xml | 4 +- forms/config.xml | 4 +- ...g_content_componentbuilderprivacytabs.ini} | 2 +- ...ntent_componentbuilderprivacytabs.sys.ini} | 2 +- script.php | 120 +++++++++++++++++- {fields => services}/index.html | 0 services/provider.php | 47 +++++++ .../Extension/ComponentbuilderPrivacyTabs.php | 26 ++-- {rules => src/Extension}/index.html | 0 src/Field/index.html | 1 + src/Rule/index.html | 1 + 12 files changed, 198 insertions(+), 33 deletions(-) rename language/en-GB/{en-GB.plg_content_componentbuilderprivacytabs.ini => plg_content_componentbuilderprivacytabs.ini} (98%) rename language/en-GB/{en-GB.plg_content_componentbuilderprivacytabs.sys.ini => plg_content_componentbuilderprivacytabs.sys.ini} (98%) rename {fields => services}/index.html (100%) create mode 100644 services/provider.php rename componentbuilderprivacytabs.php => src/Extension/ComponentbuilderPrivacyTabs.php (87%) rename {rules => src/Extension}/index.html (100%) create mode 100644 src/Field/index.html create mode 100644 src/Rule/index.html diff --git a/componentbuilderprivacytabs.xml b/componentbuilderprivacytabs.xml index 5794bd6..4937205 100644 --- a/componentbuilderprivacytabs.xml +++ b/componentbuilderprivacytabs.xml @@ -1,13 +1,14 @@ PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS - 27th July, 2024 + 14th August, 2024 Llewellyn van der Merwe joomla@vdm.io https://dev.vdm.io Copyright (C) 2015 Vast Development Method. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt - 2.0.2 + 3.0.0 + VDM\Plugin\Content\ComponentbuilderPrivacyTabs PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION @@ -15,28 +16,23 @@ - en-GB/en-GB.plg_content_componentbuilderprivacytabs.ini - en-GB/en-GB.plg_content_componentbuilderprivacytabs.sys.ini + en-GB/plg_content_componentbuilderprivacytabs.ini + en-GB/plg_content_componentbuilderprivacytabs.sys.ini - componentbuilderprivacytabs.php + services index.html - language - fields forms - rules + services + src - + - -
+
diff --git a/forms/admin_view.xml b/forms/admin_view.xml index 8305c88..f668d29 100644 --- a/forms/admin_view.xml +++ b/forms/admin_view.xml @@ -4,8 +4,8 @@
diff --git a/forms/config.xml b/forms/config.xml index c523c02..e135d77 100644 --- a/forms/config.xml +++ b/forms/config.xml @@ -4,8 +4,8 @@
diff --git a/language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.ini b/language/en-GB/plg_content_componentbuilderprivacytabs.ini similarity index 98% rename from language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.ini rename to language/en-GB/plg_content_componentbuilderprivacytabs.ini index f2acb51..497c9d8 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.ini +++ b/language/en-GB/plg_content_componentbuilderprivacytabs.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration." -PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="

Content - Componentbuilder Privacy Tabs (v.2.0.2)

This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" +PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="

Content - Componentbuilder Privacy Tabs (v.3.0.0)

This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy" diff --git a/language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.sys.ini b/language/en-GB/plg_content_componentbuilderprivacytabs.sys.ini similarity index 98% rename from language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.sys.ini rename to language/en-GB/plg_content_componentbuilderprivacytabs.sys.ini index f2acb51..497c9d8 100644 --- a/language/en-GB/en-GB.plg_content_componentbuilderprivacytabs.sys.ini +++ b/language/en-GB/plg_content_componentbuilderprivacytabs.sys.ini @@ -1,6 +1,6 @@ PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS="Content - Componentbuilder Privacy Tabs" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_DESCRIPTION="This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration." -PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="

Content - Componentbuilder Privacy Tabs (v.2.0.2)

This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" +PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_XML_DESCRIPTION="

Content - Componentbuilder Privacy Tabs (v.3.0.0)

This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.

Created by Llewellyn van der Merwe
Development started 10th March, 2024

" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_GLOBAL_PRIVACY="Global Privacy" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PLUGIN="Plugin" PLG_CONTENT_COMPONENTBUILDERPRIVACYTABS_PRIVACY="Privacy" diff --git a/script.php b/script.php index 9c7cc77..899d24a 100644 --- a/script.php +++ b/script.php @@ -13,15 +13,129 @@ defined('_JEXEC') or die('Restricted access'); use Joomla\CMS\Factory; +use Joomla\CMS\Version; +use Joomla\CMS\Installer\InstallerAdapter; use Joomla\CMS\Language\Text; -use Joomla\CMS\Filesystem\File; -use Joomla\CMS\Filesystem\Folder; +use Joomla\Filesystem\File; +use Joomla\Filesystem\Folder; /** * Content - Componentbuilder Privacy Tabs script file. * - * @package PlgContentComponentbuilderPrivacyTabs + * @package ComponentbuilderPrivacyTabs */ class plgContentComponentbuilderPrivacyTabsInstallerScript { + /** + * The CMS Application. + * + * @since 4.4.2 + */ + protected $app; + + /** + * A list of files to be deleted + * + * @var array + * @since 3.6 + */ + protected array $deleteFiles = []; + + /** + * A list of folders to be deleted + * + * @var array + * @since 3.6 + */ + protected array $deleteFolders = []; + + /** + * Constructor + * + * @param InstallerAdapter $adapter The object responsible for running this script + */ + public function __construct($adapter) + { + // get application + $this->app = Factory::getApplication(); + + if (is_file(JPATH_ROOT . '/plugins/content/componentbuilderprivacytabs/componentbuilderprivacytabs.php')) + { + $this->deleteFiles[] = '/plugins/content/componentbuilderprivacytabs/componentbuilderprivacytabs.php'; + } + } + + /** + * Called before any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install|update) + * @param InstallerAdapter $adapter The object responsible for running this script + * + * @return boolean True on success + */ + public function preflight($route, $adapter) + { + // set application to local method var, just use $this->app in future [we will drop $app in J6] + $app = $this->app; + + // the default for both install and update + $jversion = new Version(); + if (!$jversion->isCompatible('5.0.0')) + { + $app->enqueueMessage('Please upgrade to at least Joomla! 5.0.0 before continuing!', 'error'); + return false; + } + + // remove old files and folders + $this->removeFiles(); + + return true; + } + + /** + * Called before any type of action + * + * @param string $route Which action is happening (install|uninstall|discover_install|update) + * @param InstallerAdapter $adapter The object responsible for running this script + * + * @return boolean True on success + */ + public function postflight($route, $adapter) + { + // set application to local method var, just use $this->app in future [we will drop $app in J6] + $app = $this->app; + + return true; + } + + /** + * Remove the files and folders in the given array from + * + * @return void + * @since 5.0.2 + */ + protected function removeFiles() + { + if (!empty($this->deleteFiles)) + { + foreach ($this->deleteFiles as $file) + { + if (is_file(JPATH_ROOT . $file) && !File::delete(JPATH_ROOT . $file)) + { + echo Text::sprintf('JLIB_INSTALLER_ERROR_FILE_FOLDER', $file) . '
'; + } + } + } + + if (!empty($this->deleteFolders)) + { + foreach ($this->deleteFolders as $folder) + { + if (is_dir(JPATH_ROOT . $folder) && !Folder::delete(JPATH_ROOT . $folder)) + { + echo Text::sprintf('JLIB_INSTALLER_ERROR_FILE_FOLDER', $folder) . '
'; + } + } + } + } } diff --git a/fields/index.html b/services/index.html similarity index 100% rename from fields/index.html rename to services/index.html diff --git a/services/provider.php b/services/provider.php new file mode 100644 index 0000000..4a3156c --- /dev/null +++ b/services/provider.php @@ -0,0 +1,47 @@ + + * @git 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\Plugin\Content\ComponentbuilderPrivacyTabs\Extension\ComponentbuilderPrivacyTabs; + +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 ComponentbuilderPrivacyTabs( + $container->get(DispatcherInterface::class), + (array) PluginHelper::getPlugin('content', 'componentbuilderprivacytabs') + ); + $plugin->setApplication(Factory::getApplication()); + + return $plugin; + } + ); + } +}; diff --git a/componentbuilderprivacytabs.php b/src/Extension/ComponentbuilderPrivacyTabs.php similarity index 87% rename from componentbuilderprivacytabs.php rename to src/Extension/ComponentbuilderPrivacyTabs.php index ac7581e..352e8b1 100644 --- a/componentbuilderprivacytabs.php +++ b/src/Extension/ComponentbuilderPrivacyTabs.php @@ -8,9 +8,7 @@ * @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'); +namespace VDM\Plugin\Content\ComponentbuilderPrivacyTabs\Extension; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Application\CMSApplication; @@ -20,13 +18,21 @@ use Joomla\CMS\Form\Form; use Joomla\CMS\Factory; use VDM\Joomla\Utilities\JsonHelper; use VDM\Joomla\Utilities\ArrayHelper; +use Joomla\CMS\Table\Extension; +use Joomla\CMS\Cache\Controller\CallbackController; +use Joomla\CMS\Cache\Cache; +use Joomla\CMS\Cache\Exception\CacheExceptionInterface; + +// No direct access to this file +defined('_JEXEC') or die('Restricted access'); + /** * Content - Componentbuilder Privacy Tabs plugin. * * @package ComponentbuilderPrivacyTabs - * @since 2.0.2 + * @since 3.0.0 */ -class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin +final class ComponentbuilderPrivacyTabs extends CMSPlugin { /** * Affects constructor behavior. If true, language files will be loaded automatically. @@ -54,7 +60,7 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin if (strpos($context, 'com_componentbuilder.admin_view') === 0) { // Add the forms path - Form::addFormPath(__DIR__ . '/forms'); + Form::addFormPath(__DIR__ . '/../../forms'); // add the admin view params for privacy integration $form->loadFile('admin_view'); // if the global plugin is not set, allow it to be set from the admin view @@ -105,7 +111,7 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin // first set new params $this->params->set('plugin', (int) $item->params['plugin']); // update the global plugin settings - $extensionTable = new \JtableExtension(Factory::getDbo()); + $extensionTable = new Extension(Factory::getDbo()); $extensionTable->load(array('element' => 'componentbuilderprivacytabs')); // Save the change $extensionTable->set('params', $this->params->toString()); @@ -149,11 +155,11 @@ class PlgContentComponentbuilderPrivacyTabs extends CMSPlugin try { - /** @var \JCacheControllerCallback $cache */ - $cache = \JCache::getInstance('callback', $options); + /** @var CallbackController $cache */ + $cache = Cache::getInstance('callback', $options); $cache->clean(); } - catch (\JCacheException $exception) + catch (CacheExceptionInterface $exception) { $options['result'] = false; } diff --git a/rules/index.html b/src/Extension/index.html similarity index 100% rename from rules/index.html rename to src/Extension/index.html diff --git a/src/Field/index.html b/src/Field/index.html new file mode 100644 index 0000000..fa6d84e --- /dev/null +++ b/src/Field/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Rule/index.html b/src/Rule/index.html new file mode 100644 index 0000000..fa6d84e --- /dev/null +++ b/src/Rule/index.html @@ -0,0 +1 @@ + \ No newline at end of file