File manager - Edit - /home/opticamezl/www/newok/confirmconsent.zip
Back
PK /��\u99 9 confirmconsent.xmlnu �[��� <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="content" method="upgrade"> <name>plg_content_confirmconsent</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_CONTENT_CONFIRMCONSENT_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Content\ConfirmConsent</namespace> <files> <folder plugin="confirmconsent">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_content_confirmconsent.ini</language> <language tag="en-GB">language/en-GB/plg_content_confirmconsent.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic" addfieldprefix="Joomla\Component\Content\Administrator\Field"> <field name="consentbox_text" type="textarea" label="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_LABEL" description="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DESC" hint="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DEFAULT" rows="7" cols="20" filter="html" /> <field name="privacy_type" type="list" label="PLG_CONTENT_CONFIRMCONSENT_FIELD_TYPE_LABEL" default="article" validate="options" > <option value="article">PLG_CONTENT_CONFIRMCONSENT_FIELD_TYPE_ARTICLE</option> <option value="menu_item">PLG_CONTENT_CONFIRMCONSENT_FIELD_TYPE_MENU_ITEM</option> </field> <field name="privacy_article" type="modal_article" label="PLG_CONTENT_CONFIRMCONSENT_FIELD_ARTICLE_LABEL" description="PLG_CONTENT_CONFIRMCONSENT_FIELD_ARTICLE_DESC" select="true" new="true" edit="true" clear="true" filter="integer" showon="privacy_type:article" /> <field addfieldprefix="Joomla\Component\Menus\Administrator\Field" name="privacy_menu_item" type="modal_menu" label="PLG_CONTENT_CONFIRMCONSENT_FIELD_MENU_ITEM_LABEL" select="true" new="true" edit="true" clear="true" filter="integer" showon="privacy_type:menu_item" /> </fieldset> </fields> </config> </extension> PK /��\�s�)) )) src/Field/ConsentBoxField.phpnu �[��� <?php /** * @package Joomla.Plugin * @subpackage Content.confirmconsent * * @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\Content\ConfirmConsent\Field; use Joomla\CMS\Factory; use Joomla\CMS\Form\Field\CheckboxesField; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Router\Route; use Joomla\Component\Content\Site\Helper\RouteHelper; use Joomla\Database\Exception\ExecutionFailureException; use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Consentbox Field class for the Confirm Consent Plugin. * * @since 3.9.1 */ class ConsentBoxField extends CheckboxesField { /** * The form field type. * * @var string * @since 3.9.1 */ protected $type = 'ConsentBox'; /** * Flag to tell the field to always be in multiple values mode. * * @var boolean * @since 3.9.1 */ protected $forceMultiple = false; /** * The article ID. * * @var integer * @since 3.9.1 */ protected $articleid; /** * The menu item ID. * * @var integer * @since 4.0.0 */ protected $menuItemId; /** * Type of the privacy policy. * * @var string * @since 4.0.0 */ protected $privacyType; /** * Method to set certain otherwise inaccessible properties of the form field object. * * @param string $name The property name for which to set the value. * @param mixed $value The value of the property. * * @return void * * @since 3.9.1 */ public function __set($name, $value) { switch ($name) { case 'articleid': $this->articleid = (int) $value; break; default: parent::__set($name, $value); } } /** * Method to get certain otherwise inaccessible properties from the form field object. * * @param string $name The property name for which to get the value. * * @return mixed The property value or null. * * @since 3.9.1 */ public function __get($name) { if ($name == 'articleid') { return $this->$name; } return parent::__get($name); } /** * Method to attach a JForm object to the field. * * @param \SimpleXMLElement $element The SimpleXMLElement object representing the `<field>` tag for the form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as an array container for the field. * For example if the field has name="foo" and the group value is set to "bar" then the * full field name would end up being "bar[foo]". * * @return boolean True on success. * * @see \Joomla\CMS\Form\FormField::setup() * @since 3.9.1 */ public function setup(\SimpleXMLElement $element, $value, $group = null) { $return = parent::setup($element, $value, $group); if ($return) { $this->articleid = (int) $this->element['articleid']; $this->menuItemId = (int) $this->element['menu_item_id']; $this->privacyType = (string) $this->element['privacy_type']; } return $return; } /** * Method to get the field label markup. * * @return string The field label markup. * * @since 3.9.1 */ protected function getLabel() { if ($this->hidden) { return ''; } $data = $this->getLayoutData(); // Forcing the Alias field to display the tip below $position = $this->element['name'] == 'alias' ? ' data-bs-placement="bottom" ' : ''; // When we have an article let's add the modal and make the title clickable $hasLink = ($data['privacyType'] === 'article' && $data['articleid']) || ($data['privacyType'] === 'menu_item' && $data['menuItemId']); if ($hasLink) { $attribs['data-bs-toggle'] = 'modal'; $data['label'] = HTMLHelper::_( 'link', '#modal-' . $this->id, $data['label'], $attribs ); } // Here mainly for B/C with old layouts. This can be done in the layouts directly $extraData = [ 'text' => $data['label'], 'for' => $this->id, 'classes' => explode(' ', $data['labelclass']), 'position' => $position, ]; return $this->getRenderer($this->renderLabelLayout)->render(array_merge($data, $extraData)); } /** * Method to get the field input markup. * * @return string The field input markup. * * @since 4.0.0 */ protected function getInput() { $modalHtml = ''; $layoutData = $this->getLayoutData(); $hasLink = ($this->privacyType === 'article' && $this->articleid) || ($this->privacyType === 'menu_item' && $this->menuItemId); if ($hasLink) { $modalParams['title'] = $layoutData['label']; $modalParams['url'] = ($this->privacyType === 'menu_item') ? $this->getAssignedMenuItemUrl() : $this->getAssignedArticleUrl(); $modalParams['height'] = '100%'; $modalParams['width'] = '100%'; $modalParams['bodyHeight'] = 70; $modalParams['modalWidth'] = 80; $modalHtml = HTMLHelper::_('bootstrap.renderModal', 'modal-' . $this->id, $modalParams); } return $modalHtml . parent::getInput(); } /** * Method to get the data to be passed to the layout for rendering. * * @return array * * @since 3.9.1 */ protected function getLayoutData() { $data = parent::getLayoutData(); $extraData = [ 'articleid' => (int) $this->articleid, 'menuItemId' => (int) $this->menuItemId, 'privacyType' => (string) $this->privacyType, ]; return array_merge($data, $extraData); } /** * Return the url of the assigned article based on the current user language * * @return string Returns the link to the article * * @since 3.9.1 */ private function getAssignedArticleUrl() { $db = $this->getDatabase(); // Get the info from the article $query = $db->getQuery(true) ->select($db->quoteName(['id', 'catid', 'language'])) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . ' = ' . (int) $this->articleid); $db->setQuery($query); try { $article = $db->loadObject(); } catch (ExecutionFailureException $e) { // Something at the database layer went wrong return Route::_( 'index.php?option=com_content&view=article&id=' . $this->articleid . '&tmpl=component' ); } if (!\is_object($article)) { // We have not found the article object lets show a 404 to the user return Route::_( 'index.php?option=com_content&view=article&id=' . $this->articleid . '&tmpl=component' ); } if (!Associations::isEnabled()) { return Route::_( RouteHelper::getArticleRoute( $article->id, $article->catid, $article->language ) . '&tmpl=component' ); } $associatedArticles = Associations::getAssociations('com_content', '#__content', 'com_content.item', $article->id); $currentLang = Factory::getLanguage()->getTag(); if (isset($associatedArticles) && $currentLang !== $article->language && \array_key_exists($currentLang, $associatedArticles)) { return Route::_( RouteHelper::getArticleRoute( $associatedArticles[$currentLang]->id, $associatedArticles[$currentLang]->catid, $associatedArticles[$currentLang]->language ) . '&tmpl=component' ); } // Association is enabled but this article is not associated return Route::_( 'index.php?option=com_content&view=article&id=' . $article->id . '&catid=' . $article->catid . '&tmpl=component&lang=' . $article->language ); } /** * Get privacy menu item URL. If the site is a multilingual website and there is associated menu item for the * current language, the URL of the associated menu item will be returned. * * @return string * * @since 4.0.0 */ private function getAssignedMenuItemUrl() { $itemId = $this->menuItemId; $languageSuffix = ''; if ($itemId > 0 && Associations::isEnabled()) { $privacyAssociated = Associations::getAssociations('com_menus', '#__menu', 'com_menus.item', $itemId, 'id', '', ''); $currentLang = Factory::getLanguage()->getTag(); if (isset($privacyAssociated[$currentLang])) { $itemId = $privacyAssociated[$currentLang]->id; } if (Multilanguage::isEnabled()) { $db = $this->getDatabase(); $query = $db->getQuery(true) ->select($db->quoteName(['id', 'language'])) ->from($db->quoteName('#__menu')) ->where($db->quoteName('id') . ' = :id') ->bind(':id', $itemId, ParameterType::INTEGER); $db->setQuery($query); $menuItem = $db->loadObject(); $languageSuffix = '&lang=' . $menuItem->language; } } return Route::_( 'index.php?Itemid=' . (int) $itemId . '&tmpl=component' . $languageSuffix ); } } PK /��\�'�L� � src/Extension/ConfirmConsent.phpnu �[��� <?php /** * @package Joomla.Plugin * @subpackage Content.confirmconsent * * @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\Content\ConfirmConsent\Extension; use Joomla\CMS\Form\Form; use Joomla\CMS\Plugin\CMSPlugin; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * The Joomla Core confirm consent plugin * * @since 3.9.0 */ final class ConfirmConsent extends CMSPlugin { /** * Load the language file on instantiation. * * @var boolean * * @since 3.9.0 */ protected $autoloadLanguage = true; /** * The supported form contexts * * @var array * * @since 3.9.0 */ protected $supportedContext = [ 'com_contact.contact', 'com_privacy.request', ]; /** * Add additional fields to the supported forms * * @param Form $form The form to be altered. * @param mixed $data The associated data for the form. * * @return boolean * * @since 3.9.0 */ public function onContentPrepareForm(Form $form, $data) { if ($this->getApplication()->isClient('administrator') || !in_array($form->getName(), $this->supportedContext)) { return true; } // Get the consent box Text & the selected privacyarticle $consentboxText = (string) $this->params->get( 'consentbox_text', $this->getApplication()->getLanguage()->_('PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DEFAULT') ); $privacyArticle = $this->params->get('privacy_article', false); $privacyType = $this->params->get('privacy_type', 'article'); $privacyMenuItem = $this->params->get('privacy_menu_item', false); $form->load(' <form> <fieldset name="default" addfieldprefix="Joomla\\Plugin\\Content\\ConfirmConsent\\Field"> <field name="consentbox" type="ConsentBox" articleid="' . $privacyArticle . '" menu_item_id="' . $privacyMenuItem . '" privacy_type="' . $privacyType . '" label="PLG_CONTENT_CONFIRMCONSENT_CONSENTBOX_LABEL" required="true" > <option value="0">' . htmlspecialchars($consentboxText, ENT_COMPAT, 'UTF-8') . '</option> </field> </fieldset> </form>'); return true; } } PK /��\��`J J services/provider.phpnu �[��� <?php /** * @package Joomla.Plugin * @subpackage Content.confirmconsent * * @copyright (C) 2022 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\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Content\ConfirmConsent\Extension\ConfirmConsent; 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) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new ConfirmConsent( $dispatcher, (array) PluginHelper::getPlugin('content', 'confirmconsent') ); $plugin->setApplication(Factory::getApplication()); return $plugin; } ); } }; PK /��\u99 9 confirmconsent.xmlnu �[��� PK /��\�s�)) )) { src/Field/ConsentBoxField.phpnu �[��� PK /��\�'�L� � �2 src/Extension/ConfirmConsent.phpnu �[��� PK /��\��`J J = services/provider.phpnu �[��� PK d �B
| ver. 1.4 |
Github
|
.
| PHP 8.3.23 | Generation time: 0 |
proxy
|
phpinfo
|
Settings