uawdijnntqw1x1x1
IP : 216.73.216.84
Hostname : webm003.cluster107.gra.hosting.ovh.net
Kernel : Linux webm003.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
opticamezl
/
www
/
newok
/
tmp
/
..
/
libraries
/
..
/
includes
/
..
/
api
/
..
/
cookiespolicynotificationbar.tar
/
/
script.install.helper.php000060400000036625151666570110011524 0ustar00<?php /* ====================================================== # Cookies Policy Notification Bar for Joomla! - v4.4.4 (pro version) # ------------------------------------------------------- # For Joomla! CMS (v4.x) # Author: Web357 (Yiannis Christodoulou) # Copyright: (©) 2014-2024 Web357. All rights reserved. # License: GNU/GPLv3, https://www.gnu.org/licenses/gpl-3.0.html # Website: https://www.web357.com # Demo: https://demo-joomla.web357.com/cookies-policy-notification-bar # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:29:25 PM ========================================================= */ defined('_JEXEC') or die; use Joomla\CMS\Version; use Joomla\CMS\Factory; use Joomla\Filesystem\File; use Joomla\Filesystem\Folder; use Joomla\CMS\Language\Text; use Joomla\CMS\Installer\Installer; class PlgAjaxCookiespolicynotificationbarInstallerScriptHelper { public $name = ''; public $alias = ''; public $extname = ''; public $extension_type = ''; public $plugin_folder = 'system'; public $module_position = 'web357'; public $client_id = 0; public $install_type = 'install'; public $show_message = true; public $db = null; public $softbreak = null; public $mini_version = null; public function __construct(&$params) { $this->extname = $this->extname ?: $this->alias; $this->db = Factory::getDbo(); // Get Joomla's version $jversion = new Version(); $short_version = explode('.', $jversion->getShortVersion()); // 3.8.10 $this->mini_version = $short_version[0].'.'.$short_version[1]; // 3.8 } public function preflight($route, $adapter) { if (!in_array($route, array('install', 'update'))) { return true; } Factory::getLanguage()->load('plg_system_web357installer', JPATH_PLUGINS . '/system/web357installer'); if ($this->show_message && $this->isInstalled()) { $this->install_type = 'update'; } if ($this->onBeforeInstall($route) === false) { return false; } return true; } public function postflight($route, $adapter) { $this->removeGlobalLanguageFiles(); if (version_compare($this->mini_version, "4.0", "<")) { $this->removeUnusedLanguageFiles(); } Factory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder()); if (!in_array($route, array('install', 'update'))) { return true; } $this->updateHttptoHttpsInUpdateSites(); if ($this->onAfterInstall($route) === false) { return false; } if ($route == 'install') { $this->publishExtension(); } if ($this->show_message) { $this->addInstalledMessage(); } Factory::getCache()->clean('com_plugins'); Factory::getCache()->clean('_system'); return true; } public function isInstalled() { if ( ! is_file($this->getInstalledXMLFile())) { return false; } $query = $this->db->getQuery(true) ->select($this->db->quoteName('extension_id')) ->from('#__extensions') ->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type)) ->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName())); $this->db->setQuery($query, 0, 1); $result = $this->db->loadResult(); return empty($result) ? false : true; } public function getMainFolder() { switch ($this->extension_type) { case 'plugin' : return JPATH_PLUGINS . '/' . $this->plugin_folder . '/' . $this->extname; case 'component' : return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname; case 'module' : return JPATH_SITE . '/modules/mod_' . $this->extname; case 'library' : return JPATH_SITE . '/libraries/' . $this->extname; } } public function getInstalledXMLFile() { return $this->getXMLFile($this->getMainFolder()); } public function getCurrentXMLFile() { return $this->getXMLFile(__DIR__); } public function getXMLFile($folder) { switch ($this->extension_type) { case 'module' : return $folder . '/mod_' . $this->extname . '.xml'; default : return $folder . '/' . $this->extname . '.xml'; } } public function uninstallExtension($extname, $type = 'plugin', $folder = 'system', $show_message = true) { if (empty($extname)) { return; } $folders = array(); switch ($type) { case 'plugin'; $folders[] = JPATH_PLUGINS . '/' . $folder . '/' . $extname; break; case 'component': $folders[] = JPATH_ADMINISTRATOR . '/components/com_' . $extname; $folders[] = JPATH_SITE . '/components/com_' . $extname; break; case 'module': $folders[] = JPATH_ADMINISTRATOR . '/modules/mod_' . $extname; $folders[] = JPATH_SITE . '/modules/mod_' . $extname; break; } if ( ! $this->foldersExist($folders)) { return; } $query = $this->db->getQuery(true) ->select($this->db->quoteName('extension_id')) ->from('#__extensions') ->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName($type, $extname))) ->where($this->db->quoteName('type') . ' = ' . $this->db->quote($type)); if ($type == 'plugin') { $query->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($folder)); } $this->db->setQuery($query); $ids = $this->db->loadColumn(); if (empty($ids)) { foreach ($folders as $folder) { Folder::delete($folder); } return; } $ignore_ids = Factory::getApplication()->getUserState('rl_ignore_uninstall_ids', array()); if (Factory::getApplication()->input->get('option') == 'com_installer' && Factory::getApplication()->input->get('task') == 'remove') { // Don't attempt to uninstall extensions that are already selected to get uninstalled by them selves $ignore_ids = array_merge($ignore_ids, Factory::getApplication()->input->get('cid', array(), 'array')); Factory::getApplication()->input->set('cid', array_merge($ignore_ids, $ids)); } $ids = array_diff($ids, $ignore_ids); if (empty($ids)) { return; } $ignore_ids = array_merge($ignore_ids, $ids); Factory::getApplication()->setUserState('rl_ignore_uninstall_ids', $ignore_ids); foreach ($ids as $id) { $tmpInstaller = new Installer(); $tmpInstaller->uninstall($type, $id); } if ($show_message) { Factory::getApplication()->enqueueMessage( Text::sprintf( 'COM_INSTALLER_UNINSTALL_SUCCESS', Text::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($type)) ) ); } } public function foldersExist($folders = array()) { foreach ($folders as $folder) { if (is_dir($folder)) { return true; } } return false; } public function uninstallPlugin($extname, $folder = 'system', $show_message = true) { $this->uninstallExtension($extname, 'plugin', $folder, $show_message); } public function uninstallComponent($extname, $show_message = true) { $this->uninstallExtension($extname, 'component', null, $show_message); } public function uninstallModule($extname, $show_message = true) { $this->uninstallExtension($extname, 'module', null, $show_message); } public function publishExtension() { switch ($this->extension_type) { case 'plugin' : $this->publishPlugin(); case 'module' : $this->publishModule(); } } public function publishPlugin() { $query = $this->db->getQuery(true) ->update('#__extensions') ->set($this->db->quoteName('enabled') . ' = 1') ->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin')) ->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname)) ->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder)); $this->db->setQuery($query); $this->db->execute(); } public function publishModule() { // Get module id $query = $this->db->getQuery(true) ->select($this->db->quoteName('id')) ->from('#__modules') ->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname)) ->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id); $this->db->setQuery($query, 0, 1); $id = $this->db->loadResult(); if ( ! $id) { return; } // check if module is already in the modules_menu table (meaning is is already saved) $query->clear() ->select($this->db->quoteName('moduleid')) ->from('#__modules_menu') ->where($this->db->quoteName('moduleid') . ' = ' . (int) $id); $this->db->setQuery($query, 0, 1); $exists = $this->db->loadResult(); if ($exists) { return; } // Get highest ordering number in position $query->clear() ->select($this->db->quoteName('ordering')) ->from('#__modules') ->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position)) ->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id) ->order('ordering DESC'); $this->db->setQuery($query, 0, 1); $ordering = $this->db->loadResult(); $ordering++; // publish module and set ordering number $query->clear() ->update('#__modules') ->set($this->db->quoteName('published') . ' = 1') ->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering) ->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position)) ->where($this->db->quoteName('id') . ' = ' . (int) $id); $this->db->setQuery($query); $this->db->execute(); // add module to the modules_menu table $query->clear() ->insert('#__modules_menu') ->columns(array($this->db->quoteName('moduleid'), $this->db->quoteName('menuid'))) ->values((int) $id . ', 0'); $this->db->setQuery($query); $this->db->execute(); } public function addInstalledMessage() { Factory::getApplication()->enqueueMessage( Text::sprintf( Text::_($this->install_type == 'update' ? 'W357_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'W357_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'), '<strong>' . Text::_($this->name) . '</strong>', '<strong>' . $this->getVersion() . '</strong>', $this->getFullType() ) ); } public function getPrefix() { switch ($this->extension_type) { case 'plugin'; return Text::_('plg_' . strtolower($this->plugin_folder)); case 'component': return Text::_('com'); case 'module': return Text::_('mod'); case 'library': return Text::_('lib'); default: return $this->extension_type; } } public function getElementName($type = null, $extname = null) { $type = is_null($type) ? $this->extension_type : $type; $extname = is_null($extname) ? $this->extname : $extname; switch ($type) { case 'component' : return 'com_' . $extname; case 'module' : return 'mod_' . $extname; case 'plugin' : default: return $extname; } } public function getFullType() { return Text::_('W357_' . strtoupper($this->getPrefix())); } public function getVersion($file = '') { $file = $file ?: $this->getCurrentXMLFile(); if ( ! is_file($file)) { return ''; } $xml = Installer::parseXMLInstallFile($file); if ( ! $xml || ! isset($xml['version'])) { return ''; } return $xml['version']; } public function isNewer() { if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile())) { return true; } $package_version = $this->getVersion(); return version_compare($installed_version, $package_version, '<='); } public function canInstall() { // The extension is not installed yet if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile())) { return true; } // The free version is installed. So any version is ok to install if (strpos($installed_version, 'PRO') === false) { return true; } // Current package is a pro version, so all good if (strpos($this->getVersion(), 'PRO') !== false) { return true; } Factory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__); Factory::getApplication()->enqueueMessage(Text::_('W357_ERROR_PRO_TO_FREE'), 'error'); Factory::getApplication()->enqueueMessage( html_entity_decode( Text::sprintf( 'W357_ERROR_UNINSTALL_FIRST', '<a href="//www.web357.com/product/' . $this->url_alias . '" target="_blank">', '</a>', Text::_($this->name) ) ), 'error' ); return false; } public function onBeforeInstall($route) { if ( ! $this->canInstall()) { return false; } return true; } public function onAfterInstall($route) { } public function delete($files = array()) { foreach ($files as $file) { if (is_dir($file) && is_dir($file)) { Folder::delete($file); } if (is_file($file) && is_file($file)) { File::delete($file); } } } public function fixAssetsRules($rules = '{"core.admin":[],"core.manage":[]}') { // replace default rules value {} with the correct initial value $query = $this->db->getQuery(true) ->update($this->db->quoteName('#__assets')) ->set($this->db->quoteName('rules') . ' = ' . $this->db->quote($rules)) ->where($this->db->quoteName('title') . ' = ' . $this->db->quote('com_' . $this->extname)) ->where($this->db->quoteName('rules') . ' = ' . $this->db->quote('{}')); $this->db->setQuery($query); $this->db->execute(); } private function updateHttptoHttpsInUpdateSites() { $query = $this->db->getQuery(true) ->update('#__update_sites') ->set($this->db->quoteName('location') . ' = REPLACE(' . $this->db->quoteName('location') . ', ' . $this->db->quote('http://') . ', ' . $this->db->quote('https://') . ')') ->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('http://updates.web357%')); $this->db->setQuery($query); $this->db->execute(); } private function removeGlobalLanguageFiles() { if ($this->extension_type == 'library' || $this->alias === 'web357framework') { return; } $language_files = Folder::files(JPATH_ADMINISTRATOR . '/language', '\.' . $this->getPrefix() . '_' . $this->extname . '\.', true, true); // Remove override files foreach ($language_files as $i => $language_file) { if (strpos($language_file, '/overrides/') === false) { continue; } unset($language_files[$i]); } if (empty($language_files)) { return; } File::delete($language_files); } private function removeUnusedLanguageFiles() { if ($this->extension_type == 'library') { return; } $main_language_dir_path = Folder::folders(__DIR__ . '/language'); $installed_languages = array_merge( Folder::folders(JPATH_SITE . '/language'), Folder::folders(JPATH_ADMINISTRATOR . '/language') ); $languages = array(); if (is_array($main_language_dir_path) && is_array($installed_languages)) { $languages = array_diff( $main_language_dir_path, $installed_languages ); } $delete_languages = array(); if (!empty($languages)) { foreach ($languages as $language) { $delete_languages[] = $this->getMainFolder() . '/language/' . $language; } } if (empty($delete_languages)) { return; } // Remove folders $this->delete($delete_languages); } }cookiespolicynotificationbar.xml000060400000002716151666570110013250 0ustar00<?xml version="1.0" encoding="utf-8"?> <extension version="3.0" type="plugin" group="ajax" method="upgrade"> <name>PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR</name> <author>Web357 (Yiannis Christodoulou)</author> <creationDate>2025-10-27</creationDate> <copyright>Copyright: (©) 2014-2024 Web357. All rights reserved.</copyright> <license>GNU/GPLv3, https://www.gnu.org/licenses/gpl-3.0.html</license> <authorEmail>support@web357.com</authorEmail> <authorUrl>https://www.web357.com</authorUrl> <version>4.4.4</version> <variant>pro</variant> <description>A beautiful and functional EU Cookie Law Compliance Joomla! Plugin that provides a mechanism for informing your visitors about how you use cookies on your website in an elegant manner. It includes a variety of features and parameters (responsive, multilingual, block cookies, change style, etc.). This Joomla! plugin is ready for the GDPR Compliance which has been already implemented on 25 May 2018.</description> <files> <folder>language</folder> <filename plugin="cookiespolicynotificationbar">cookiespolicynotificationbar.php</filename> <filename>index.html</filename> <filename>script.install.helper.php</filename> </files> <scriptfile>script.install.php</scriptfile> <updateservers><server type="extension" priority="1" name="Cookies Policy Notification Bar (pro version)">https://updates.web357.com/cookiespolicynotificationbar/cookiespolicynotificationbar_pro.xml</server></updateservers> </extension>cookiespolicynotificationbar.php000060400000104260151666570110013234 0ustar00<?php /* ====================================================== # Cookies Policy Notification Bar for Joomla! - v4.4.4 (pro version) # ------------------------------------------------------- # For Joomla! CMS (v4.x) # Author: Web357 (Yiannis Christodoulou) # Copyright: (©) 2014-2024 Web357. All rights reserved. # License: GNU/GPLv3, https://www.gnu.org/licenses/gpl-3.0.html # Website: https://www.web357.com # Demo: https://demo-joomla.web357.com/cookies-policy-notification-bar # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:29:25 PM ========================================================= */ defined('_JEXEC') or die; use Joomla\Utilities\IpHelper; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Uri\Uri; use Joomla\Registry\Registry; use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Response\JsonResponse; use Joomla\CMS\Filter\InputFilter; class plgAjaxCookiesPolicyNotificationBar extends CMSPlugin { public function onAjaxCookiespolicynotificationbar() { $app = Factory::getApplication(); $jcookies = $app->input->cookie->getArray(); // $_COOKIE // Define vars $html = ''; $cookies_num = 0; // Load the plugin language file $lang = Factory::getLanguage(); $current_lang_tag = $lang->getTag(); $lang = Factory::getLanguage(); $extension = 'plg_system_cookiespolicynotificationbar'; $base_dir = JPATH_SITE . '/plugins/system/cookiespolicynotificationbar/'; $language_tag = (!empty($current_lang_tag)) ? $current_lang_tag : 'en-GB'; $reload = true; $lang->load($extension, $base_dir, $language_tag, $reload); // Vars $jinput = $app->input; $method = $jinput->get('method', 'displayCookiesTable', 'STRING'); $get_cookie_name = $jinput->get('cookie_name', '', 'STRING'); // Plugin params $params = $this->getParams(); $prm_cookie_name = $params->get('cookie_name', 'cookiesDirective'); $store_acceptance_logs_into_db = $params->get('store_acceptance_logs_into_db', '1'); $shortcode_tag = $params->get('shortcode_tag', 'cookiesinfo'); $allowSessionCookies = $params->get('allowSessionCookies', '1'); $hide_cookies_from_table = $params->get('hide_cookies_from_table', ''); /** * Adds a logger for the "plg_system_cookiespolicynotificationbar" plugin if JDEBUG is enabled. * The logger writes log messages to a text file named "plg_system_cookiespolicynotificationbar.log.php". * The logger is set to log all types of messages. */ if (JDEBUG) { Log::addLogger(['text_file' => 'plg_system_cookiespolicynotificationbar.log.php'], Log::ALL, ['plg_system_cookiespolicynotificationbar']); } // Hide Cookies from Table if (!empty($hide_cookies_from_table)) { $hide_cookies_from_table_arr = preg_replace('#\s+#', '', trim($hide_cookies_from_table)); $hide_cookies_from_table_arr = explode(',', $hide_cookies_from_table_arr); } else { $hide_cookies_from_table_arr = array(); } // Check if the user declined $cookiesDeclined = $app->input->cookie->get('cookiesDeclined', '', 'INT'); if ($method == 'displayCookiesTable') { // get lang tag for the variable $lang_tag = str_replace("-", "_", $language_tag); $lang_tag = !empty($lang_tag) ? $lang_tag : "en_GB"; // Control Shortcode's content $shortcode_text_before_accept_or_decline = html_entity_decode($params->get('shortcode_text_before_accept_or_decline_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_TEXT_BEFORE_ACCEPT_DECLINE_DEFAULT'))); $shortcode_text_after_accept = html_entity_decode($params->get('shortcode_text_after_accept_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_TEXT_AFTER_ACCEPT_DEFAULT'))); $shortcode_text_after_decline = html_entity_decode($params->get('shortcode_text_after_decline_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_TEXT_AFTER_DECLINE_DEFAULT'))); // Get HTML Code for each situation $buttons_before_accept_or_decline = $this->showButtons($params, $lang_tag, 'before_accept_or_decline'); $info_table_before_accept_or_decline = $this->showCookiesInfoTable($params, $lang_tag, 'before_accept_or_decline', $hide_cookies_from_table_arr); $buttons_after_accept = $this->showButtons($params, $lang_tag, 'after_accept'); $info_table_after_accept = $this->showCookiesInfoTable($params, $lang_tag, 'after_accept', $hide_cookies_from_table_arr); $buttons_after_decline = $this->showButtons($params, $lang_tag, 'after_decline'); $info_table_after_decline = $this->showCookiesInfoTable($params, $lang_tag, 'after_decline', $hide_cookies_from_table_arr); // BEFORE ACCEPT OR DECLINE preg_match('/{cpnb_buttons}/i', $shortcode_text_before_accept_or_decline, $matches_btns_a); if ($matches_btns_a) { $shortcode_text_before_accept_or_decline = str_replace($matches_btns_a[0], $buttons_before_accept_or_decline, $shortcode_text_before_accept_or_decline); } preg_match('/{cpnb_cookies_info_table}/i', $shortcode_text_before_accept_or_decline, $matches_tbl_a); if ($matches_tbl_a) { $shortcode_text_before_accept_or_decline = str_replace($matches_tbl_a[0], $info_table_before_accept_or_decline, $shortcode_text_before_accept_or_decline); } // AFTER ACCEPT preg_match('/{cpnb_buttons}/i', $shortcode_text_after_accept, $matches_btns_b); if ($matches_btns_b) { $shortcode_text_after_accept = str_replace($matches_btns_b[0], $buttons_after_accept, $shortcode_text_after_accept); } preg_match('/{cpnb_cookies_info_table}/i', $shortcode_text_after_accept, $matches_tbl_b); if ($matches_tbl_b) { $shortcode_text_after_accept = str_replace($matches_tbl_b[0], $info_table_after_accept, $shortcode_text_after_accept); } // AFTER DECLINE preg_match('/{cpnb_buttons}/i', $shortcode_text_after_decline, $matches_btns_c); if ($matches_btns_c) { $shortcode_text_after_decline = str_replace($matches_btns_c[0], $buttons_after_decline, $shortcode_text_after_decline); } preg_match('/{cpnb_cookies_info_table}/i', $shortcode_text_after_decline, $matches_tbl_c); if ($matches_tbl_c) { $shortcode_text_after_decline = str_replace($matches_tbl_c[0], $info_table_after_decline, $shortcode_text_after_decline); } foreach ($jcookies as $cookie_name => $cookie_value) { if (isset($jcookies[$cookie_name])) { // Display only Persistent cookies and avoid Session Cookies // Also do not display the cookiesDeclined cookie in the list if (!$this->isSessionCookie($cookie_value) && !in_array($cookie_name, $hide_cookies_from_table_arr)) { $cookies_num++; } } } if ($cookies_num == 0 && !$cookiesDeclined) { $html = $shortcode_text_before_accept_or_decline; } elseif ($cookies_num > 0 && !$cookiesDeclined) { $html = $shortcode_text_after_accept; } elseif ($cookies_num > 0 && $cookiesDeclined) { $html = $shortcode_text_after_decline; } // clean the cache first $this->cleanTheCache(); } if ($method == 'update_settings_ajax') { // Get the application input object $input = Factory::getApplication()->input->post; // Sanitize the inputs using Joomla's InputFilter $filter = InputFilter::getInstance(); $cookie_name = $filter->clean($input->getString('cookie_name', ''), 'STRING'); $position = $filter->clean($input->getString('position', ''), 'STRING'); // Further validate or process the sanitized data // For example, ensure the position is one of the allowed values /* if (!in_array($position, ['top', 'bottom', 'left', 'right'], true)) { throw new \Exception('Invalid position value', 400); } */ // Load the plugin params $plugin = PluginHelper::getPlugin('system', 'cookiespolicynotificationbar'); $params = json_decode($plugin->params); // Update the parameters $params->cookie_name = $cookie_name; $params->position = $position; // Save the parameters back to the database $db = Factory::getDbo(); $query = $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('params') . ' = ' . $db->quote(json_encode($params))) ->where($db->quoteName('element') . ' = ' . $db->quote('cookiespolicynotificationbar')) ->where($db->quoteName('folder') . ' = ' . $db->quote('system')); $db->setQuery($query); try { $db->execute(); // Return a JSON response indicating success echo new JsonResponse(['success' => true, 'cookie_name' => $cookie_name, 'position' => $position]); } catch (Exception $e) { // Return a JSON response indicating failure echo new JsonResponse(['success' => false, 'error' => $e->getMessage()], 500); } Factory::getApplication()->close(); } // DECLINE COOKIES if ($method == 'declineCookies') { // clean the cache first $this->cleanTheCache(); if (isset($jcookies)) { // block joomla session cookies if (!$allowSessionCookies) { header_remove('Set-Cookie'); } // Delete all cookies foreach ($jcookies as $key => $val) { if (isset($jcookies[$key])) { // Delete only the Persistent cookies and avoid Session Cookies (Avoid logged out of Joomla Administrator) if (!$allowSessionCookies || !$this->isSessionCookie($val)) { setcookie($key, '', time() - 1000, '/', $this->getFullDomain()); // example: test.google.com setcookie($key, '', time() - 1000, '/', $this->getDomainOnly()); // example: google.com $app->input->cookie->set($key, '', time() - 1000, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); } } } // Store the visitor decision into the database. if ($store_acceptance_logs_into_db) { $this->storeDecision(Text::_('PLG_SYSTEM_CPNB_DECLINED_DB_VALUE'), $jcookies['cpnb_cookiesSettings']); } $return = array(); $return["offline"] = $app->getCfg('offline'); $return["json"] = json_encode($return); echo json_encode($return); } // set cookie to remember tha the cookies Declined $expires = time() + 60 * 60 * 24 * 30; // 30 days $app->input->cookie->set('cookiesDeclined', '1', $expires, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); $cookiesDeclined = $app->input->cookie->get('cookiesDeclined', '', 'INT'); } // DELETE COOKIES if ($method == 'deleteCookies') { // clean the cache first $this->cleanTheCache(); if (isset($jcookies)) { // block joomla session cookies if (!$allowSessionCookies) { header_remove('Set-Cookie'); } // Delete all cookies foreach ($jcookies as $key => $val) { if (isset($jcookies[$key])) { // Delete only the Persistent cookies and avoid Session Cookies (Avoid logged out of Joomla Administrator) if (!$allowSessionCookies || !$this->isSessionCookie($val)) { setcookie($key, '', time() - 1000, '/', $this->getFullDomain()); // example: test.google.com setcookie($key, '', time() - 1000, '/', $this->getDomainOnly()); // example: google.com $app->input->cookie->set($key, '', time() - 1000, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); } } } // Store the visitor decision into the database. if ($store_acceptance_logs_into_db) { $this->storeDecision(Text::_('PLG_SYSTEM_CPNB_DECLINED_DB_VALUE'), $jcookies['cpnb_cookiesSettings']); } $return = array(); $return["offline"] = $app->getCfg('offline'); $return["json"] = json_encode($return); echo json_encode($return); } } // ALLOW COOKIES if ($method == 'allowCookies' && $get_cookie_name == $prm_cookie_name) { // clean the cache first $this->cleanTheCache(); // allow cookies $cookie_expiration = time() + (86400 * 30); // 30 days $app->input->cookie->set($prm_cookie_name, 1, $cookie_expiration, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); // delete the "cookiesDeclined" cookie bececause the user allows now. setcookie('cookiesDeclined', '', time() - 1000, '/', $this->getFullDomain()); // example: test.google.com setcookie('cookiesDeclined', '', time() - 1000, '/', $this->getDomainOnly()); // example: google.com $app->input->cookie->set('cookiesDeclined', '', time() - 1000, $app->get('cookie_path', '/'), $app->get('cookie_domain'), $app->isSSLConnection()); $cookiesDeclined = $app->input->cookie->get('cookiesDeclined', '', 'INT'); // Store the visitor decision into the database. if ($store_acceptance_logs_into_db) { $this->storeDecision(Text::_('PLG_SYSTEM_CPNB_ACCEPTED_DB_VALUE'), $jcookies['cpnb_cookiesSettings']); } } // Show the acceptance logs in a nice modal at backend if ($method == 'displayAcceptanceLogs') { return $this->getAcceptanceLogs(); } // Method to delete the acceptance logs at backend if ($method == 'deleteAcceptanceLogs') { return $this->deleteAcceptanceLogs(); } // Method to restore the default plugin settings if ($method == 'restoreToDefaults') { return $this->restoreToDefaults(); } // COOKIES ACCEPTED if ($method == 'cpnbCookiesAccepted') { // clean the cache first $this->cleanTheCache(); // Store the visitor decision into the database. if ($store_acceptance_logs_into_db) { $cookie_settings = isset($jcookies['cpnb_cookiesSettings']) ? $jcookies['cpnb_cookiesSettings'] : ''; $this->storeDecision(Text::_('PLG_SYSTEM_CPNB_ACCEPTED_DB_VALUE'), $cookie_settings); } } return $html; } /** * Get the plugin parameters * * @return object */ public function getParams() { // Plugin params $db = Factory::getDBO(); $db->setQuery("SELECT params FROM #__extensions WHERE element = 'cookiespolicynotificationbar' AND folder = 'system'"); $plugin = $db->loadObject(); $params = new Registry(); $params->loadString($plugin->params); return $params; } /** * Get the descriptions of cookies */ public function getCookieDescription($params, $cookie_name = '') { $cookie_description = ''; if (!empty($cookie_name)) { $cookie_descriptions_group = $params->get('cookie_descriptions_group', ''); if (!empty($cookie_descriptions_group) && is_object($cookie_descriptions_group)) { foreach ($cookie_descriptions_group as $group => $cookie_obj) { if ($cookie_obj->cookie_status && $cookie_obj->cookie_name == $cookie_name) { $cookie_description = Text::_($cookie_obj->cookie_description); } } } } return $cookie_description; } /** * Get the expiration of cookie */ public function getCookieExpiration($params, $cookie_name = '') { $cookie_expiration = ''; if (!empty($cookie_name)) { $cookie_descriptions_group = $params->get('cookie_descriptions_group', ''); if (!empty($cookie_descriptions_group) && is_object($cookie_descriptions_group)) { foreach ($cookie_descriptions_group as $group => $cookie_obj) { if ($cookie_obj->cookie_status && $cookie_obj->cookie_name == $cookie_name) { $cookie_expiration = isset($cookie_obj->cookie_expiration) ? Text::_($cookie_obj->cookie_expiration) : ''; } } } } return $cookie_expiration; } /** * Display the Info Table * * STATUS * before_accept_or_decline * after_accept * after_decline */ private function showCookiesInfoTable($params, $lang_tag, $status = '', $hide_cookies_from_table_arr = array()) { // Other texts for translations $no_cookies_here_txt = $params->get('no_cookies_here_txt_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_NO_COOKIES_HERE')); // define vars $html = ''; $html_row = ''; $cookies_num = 0; $app = Factory::getApplication(); $jcookies = $app->input->cookie->getArray(); // $_COOKIE foreach ($jcookies as $cookie_name => $cookie_value) { if (isset($jcookies[$cookie_name])) { // Display only Persistent cookies and avoid Session Cookies // Also do not display the cookiesDeclined cookie in the list if (!$this->isSessionCookie($cookie_value) && !in_array($cookie_name, $hide_cookies_from_table_arr)) { $cookie_description = $this->getCookieDescription($params, $cookie_name); $cookie_expiration = $this->getCookieExpiration($params, $cookie_name); $html_row .= '<tr>'; $html_row .= '<td class="cpnb-cookie-name-col" data-label="' . Text::_('PLG_SYSTEM_CPNB_COOKIE_NAME') . '">' . $cookie_name . '</td>'; $html_row .= '<td class="cpnb-cookie-value-col" data-label="' . Text::_('PLG_SYSTEM_CPNB_COOKIE_VALUE') . '">' . $cookie_value . '</td>'; $html_row .= '<td class="cpnb-cookie-expiration-col" data-label="' . Text::_('PLG_SYSTEM_CPNB_COOKIE_EXPIRATION') . '">' . (!empty($cookie_expiration) ? $cookie_expiration : Text::_('---')) . '</td>'; $html_row .= '<td class="cpnb-cookie-desc-col" data-label="' . Text::_('PLG_SYSTEM_CPNB_COOKIE_DESCRIPTION') . '">' . (!empty($cookie_description) ? $cookie_description : Text::_('PLG_SYSTEM_CPNB_COOKIE_EMPTY_DESCRIPTION')) . '</td>'; $cookies_num++; } } } if ($cookies_num > 0) { // Cookies are enabled - Delete $html .= '<div class="cpnb-margin cpnb-cookies-table-container">'; $html .= '<table width="100%" border="1" cellpadding="5" cellspacing="5" class="cpnb-cookies-table">'; $html .= '<thead>'; $html .= '<tr>'; $html .= '<th class="cpnb-cookie-name-heading-col" scope="col">' . Text::_('PLG_SYSTEM_CPNB_COOKIE_NAME') . '</th>'; $html .= '<th class="cpnb-cookie-value-heading-col" scope="col">' . Text::_('PLG_SYSTEM_CPNB_COOKIE_VALUE') . '</th>'; $html .= '<th class="cpnb-cookie-expiration-heading-col" scope="col">' . Text::_('PLG_SYSTEM_CPNB_COOKIE_EXPIRATION') . '</th>'; $html .= '<th class="cpnb-cookie-desc-heading-col" scope="col">' . Text::_('PLG_SYSTEM_CPNB_COOKIE_DESCRIPTION') . '</th>'; $html .= '</tr>'; $html .= '</thead>'; $html .= '<tbody>'; $html .= $html_row; $html .= '</tbody>'; $html .= '</table>'; $html .= '</div>'; } else { $html .= '<div class="cpnb-margin cpnb-no-cookies-here">'; $html .= Text::_($no_cookies_here_txt); $html .= '</div>'; } return $html; } /** * Display the buttons * * STATUS * before_accept_or_decline * after_accept * after_decline */ private function showButtons($params, $lang_tag, $status = '') { // Other texts for translations $allow_cookies_btn_text = $params->get('allow_cookies_btn_text_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_ALLOW_COOKIES')); $delete_cookies_btn_text = $params->get('delete_cookies_btn_text_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_DELETE_COOKIES')); $reload_cookies_btn_text = $params->get('reload_cookies_btn_text_' . $lang_tag, Text::_('PLG_SYSTEM_CPNB_RELOAD')); // allow btn $allow_btn = '<button class="cpnb-btn cpnb-allow-btn cpnb-margin-right">' . Text::_($allow_cookies_btn_text) . '</button>'; // delete btn $delete_btn = '<button class="cpnb-btn cpnb-delete-btn cpnb-margin-right">' . Text::_($delete_cookies_btn_text) . '</button>'; // reload btn $reload_btn = '<button class="cpnb-btn cpnb-reload-btn">' . Text::_($reload_cookies_btn_text) . '</button>'; // display switch ($status) { case "before_accept_or_decline": $html = $allow_btn; break; case "after_accept": $html = $delete_btn . ' ' . $reload_btn; break; case "after_decline": $html = $allow_btn . ' ' . $delete_btn . ' ' . $reload_btn; break; default: $html = $allow_btn . ' ' . $delete_btn . ' ' . $reload_btn; } return $html; } /** * Clean the cache */ private function cleanTheCache() { // Plugin params $params = $this->getParams(); $enable_shortcode_functionality = $params->get('enable_shortcode_functionality', '0'); $blockCookies = $params->get('blockCookies', '0'); if ($enable_shortcode_functionality || $blockCookies) { Factory::getCache()->clean('com_content'); Factory::getCache()->clean('com_k2'); Factory::getCache()->clean('com_modules'); Factory::getCache()->clean('com_plugins'); Factory::getCache()->clean('com_mijoshop'); Factory::getCache()->clean('mod_custom'); Factory::getCache()->clean('plg_jch_optimize'); Factory::getCache()->clean('_system'); Factory::getCache()->clean('page'); Log::add(Text::_('Cache cleaned after cookies accepted from plg_ajax_cookiespolicynotificationbar plugin.'), Log::INFO, 'plg_system_cookiespolicynotificationbar'); } } /** * Get Acceptance logs * * return HTML table */ private function getAcceptanceLogs() { $app = Factory::getApplication(); if ($app->isClient('administrator')) { // data from db $db = Factory::getDbo(); $query = $db->getQuery(true); $query ->select($db->quoteName('logs.id')) ->select($db->quoteName('logs.ip_address')) ->select($db->quoteName('logs.user_id')) ->select($db->quoteName('logs.status')) ->select($db->quoteName('logs.datetime')) ->select($db->quoteName('logs.cookiesinfo')) ->select($db->quoteName('users.name')) ->select($db->quoteName('users.username')) ->from($db->quoteName('#__plg_system_cookiespolicynotificationbar_logs', 'logs')) ->join('LEFT', $db->quoteName('#__users', 'users') . ' ON ' . $db->quoteName('users.id') . ' = ' . $db->quoteName('logs.user_id')) ->order('logs.datetime DESC'); $db->setQuery($query); $log_results = $db->loadObjectList(); // create the html table (css credits: http://johnsardine.com/freebies/dl-html-css/simple-little-tab/) $print_logs = ''; // reload btn $print_logs .= '<div class="text-left"><button class="btn btn-primary cpnb-reload-acceptance-logs-btn" type="button"><span class="icon-refresh"></span> Reload</button></div>'; $print_logs .= '<div class="cpnb-loading-gif text-center" style="display:none;"></div>'; // data table $print_logs .= '<table cellspacing="0" width="95%" class="w357_modal_table">'; $print_logs .= '<thead>'; $print_logs .= '<tr>'; $print_logs .= '<th>' . Text::_('#') . '</th>'; $print_logs .= '<th>' . Text::_('PLG_SYSTEM_CPNB_IP_ADDRESS') . '</th>'; $print_logs .= '<th>' . Text::_('PLG_SYSTEM_CPNB_USER') . '</th>'; $print_logs .= '<th>' . Text::_('PLG_SYSTEM_CPNB_STATUS') . '</th>'; $print_logs .= '<th>' . Text::_('PLG_SYSTEM_CPNB_COOKIES_INFO_LBL') . '</th>'; $print_logs .= '<th>' . Text::_('PLG_SYSTEM_CPNB_DATETIME') . '</th>'; $print_logs .= '<th>' . Text::_('ID') . '</th>'; $print_logs .= '</tr>'; $print_logs .= '</thead>'; $print_logs .= '<tbody>'; if (!empty($log_results)): $logs_info_message = ''; $i = 0; foreach ($log_results as $result): // cookies info in a list $cookiesinfo = json_decode($result->cookiesinfo, true); $accepted_cats = array(); $declined_cats = array(); unset($cookiesinfo['required-cookies']); if (!empty($cookiesinfo)) { foreach ($cookiesinfo as $cookie_name => $cookie_value) { if ($cookie_value) { $accepted_cats[] = $cookie_name; } else { $declined_cats[] = $cookie_name; } } } if (!empty($accepted_cats) || !empty($declined_cats)) { $cookies_info_html = '<ul>'; $cookies_info_html .= (!empty($accepted_cats)) ? '<li style="list-style:none;">Accepted: <i>' . implode(', ', $accepted_cats) . '</i></li>' : ''; $cookies_info_html .= (!empty($declined_cats)) ? '<li style="list-style:none;">Declined: <i>' . implode(', ', $declined_cats) . '</i></li>' : ''; $cookies_info_html .= '</ul>'; } else { $cookies_info_html = '---'; } // row $print_logs .= '<tr class="' . (($i % 2 == 0) ? "odd" : "even") . '">'; $print_logs .= '<td>' . (int) ($i + 1) . '</td>'; $print_logs .= '<td>' . $result->ip_address . '</td>'; $print_logs .= (!empty($result->user_id)) ? '<td>' . $result->user_id . '. ' . $result->name . ' (' . $result->username . ')</td>' : '<td>' . Text::_('PLG_SYSTEM_CPNB_GUEST') . '</td>'; $print_logs .= '<td>' . $result->status . '</td>'; $print_logs .= '<td>' . $cookies_info_html . '</td>'; $print_logs .= '<td>' . HTMLHelper::date($result->datetime, 'l d F Y, H:i') . '</td>'; $print_logs .= '<td>' . $result->id . '</td>'; $print_logs .= '</tr>'; $i++; endforeach; else: $logs_info_message = '<p class="logs_info_message">' . Text::_('PLG_SYSTEM_CPNB_NO_LOGS') . '</p>'; endif; $print_logs .= '</tbody>'; $print_logs .= '</table>'; $print_logs .= $logs_info_message; return $print_logs; } else { JError::raiseError(403, ''); return; } } /** * Delete the Acceptance Logs from database */ private function deleteAcceptanceLogs() { $app = Factory::getApplication(); if ($app->isClient('administrator')) { $db = Factory::getDbo(); $query = $db->getQuery(true); $query->delete($db->quoteName('#__plg_system_cookiespolicynotificationbar_logs')); $db->setQuery($query); $db->execute(); $html = ''; $html .= '<div class="cpnb-loading-gif text-center"></div>'; $html .= '<div class="alert alert-success alert-dismissible cpnb-acceptance-logs-deleted-msg" style="display:none;"><span class="icon-save"></span> ' . Text::_('PLG_SYSTEM_CPNB_LOGS_DELETED') . '</div>'; return $html; } else { JError::raiseError(403, ''); return; } } /** * Restore to Default settings */ private function restoreToDefaults() { $app = Factory::getApplication(); if ($app->isClient('administrator')) { $db = Factory::getDbo(); $query = $db->getQuery(true); // Fields to update. $fields = array( $db->quoteName('params') . ' = ' . $db->quote(''), ); // Conditions for which records should be updated. $conditions = array( $db->quoteName('type') . ' = ' . $db->quote('plugin'), $db->quoteName('element') . ' = ' . $db->quote('cookiespolicynotificationbar'), $db->quoteName('folder') . ' = ' . $db->quote('system'), ); $query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions); $db->setQuery($query); $db->execute(); $html = ''; $html .= '<div class="cpnb-loading-gif text-center"></div>'; $html .= '<div class="alert alert-success alert-dismissible cpnb-restore-to-defaults-msg" style="display:none;"><span class="icon-save"></span> ' . Text::_('PLG_SYSTEM_CPNB_SETTINGS_RESTORED_SUCCESSFULLY') . '</div>'; return $html; } else { JError::raiseError(403, ''); return; } } /** * Get the full domain of a URL * Example: for https://tests.google.com it prints tests.google.com */ public function getFullDomain() { $url = Uri::base(); $parse_url = parse_url($url); return $parse_url['host']; } /** * Get only the domain of a URL * Example: for https://tests.google.com it prints google.com, even if its a subdomain. */ public function getDomainOnly() { $url = Uri::base(); $pieces = parse_url($url); $domain = isset($pieces['host']) ? $pieces['host'] : $pieces['path']; if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) { return $regs['domain']; } return false; } /** * What are the different types of cookies? * A cookie can be classified by its lifespan and the domain to which it belongs. By lifespan, a cookie is either a: * - session cookie which is erased when the user closes the browser or * - persistent cookie which remains on the user's computer/device for a pre-defined period of time. * * return: true if is a session cookie. */ public static function isSessionCookie($cookie_name) { if (!empty($cookie_name)) { $db = Factory::getDbo(); $query = $db->getQuery(true); $query->select('COUNT(' . $db->quoteName('session_id') . ')'); $query->from($db->quoteName('#__session')); $query->where($db->quoteName('session_id') . ' = ' . $db->quote((string) $cookie_name)); try { $db->setQuery($query); return (int) $db->loadResult(); } catch (RuntimeException $e) { JError::raiseError(500, $e->getMessage()); return false; } } else { return false; } } /** * Store the visitor decision into the database. * status: accepted or declined */ private function storeDecision($status = 'accepted', $cookiesinfo = '') { // Plugin params $params = $this->getParams(); $store_ip_address_into_db = $params->get('store_ip_address_into_db', '1'); // Get the correct IP address of the client $ip_address = IpHelper::getIp(); if (!filter_var($ip_address, FILTER_VALIDATE_IP)) { $ip_address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'; } // Get a db connection. $db = Factory::getDbo(); // Create a new query object. $query = $db->getQuery(true); // Insert columns $columns = array('ip_address', 'status', 'datetime', 'user_id', 'cookiesinfo'); // Insert values $values = array(); $values['ip_address'] = ($store_ip_address_into_db) ? $db->quote($ip_address) : $db->quote(Text::_('PLG_SYSTEM_CPNB_IP_ADDRESS_NOT_STORED')); $values['state'] = $db->quote(Text::_($status)); $values['datetime'] = $db->quote(Factory::getDate()->toSql()); $user = (version_compare(JVERSION, "4.0", ">=")) ? Factory::getApplication()->getIdentity() : Factory::getUser(); $values['user_id'] = (int) $user->id; $values['cookiesinfo'] = $db->quote($cookiesinfo); // Prepare the insert query. $query ->insert($db->quoteName('#__plg_system_cookiespolicynotificationbar_logs')) ->columns($db->quoteName($columns)) ->values(implode(',', $values)); // Set the query using our newly populated query object and execute it. $db->setQuery($query); $db->execute(); } } language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001010151666570110021271 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="A beautiful and functional EU Cookie Law Compliance Joomla! Plugin that provides a mechanism for informing your visitors about how you use cookies on your website in an elegant manner. It includes a variety of features (responsive, multilingual, include/exclude from pages, etc.) and parameters (block cookies, change colors, custom CSS, animation duration, etc.)." language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.ini000060400000001010151666570110020454 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="A beautiful and functional EU Cookie Law Compliance Joomla! Plugin that provides a mechanism for informing your visitors about how you use cookies on your website in an elegant manner. It includes a variety of features (responsive, multilingual, include/exclude from pages, etc.) and parameters (block cookies, change colors, custom CSS, animation duration, etc.)." language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.ini000060400000001330151666570120020402 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Ein schönes und vielseitiges Plugin, das Ihnen bei der Einhaltung der EU Gesetze und Vorschriften zur Verwendung von Cookies hilft. So können Sie die Besucher Ihrer Website auf elegante Weise darüber zu informieren, wie Cookies auf Ihrer Website genutzt werden. Das Plugin bietet eine Vielzahl von Funktionen (Responsivität, Mehrsprachigkeit, gezielte Kontrolle über die Anzeige oder den Ausschluss auf bestimmten Seiten, etc.) sowie umfangreiche Einstellungsmöglichkeiten (Blockieren von Cookies, Anpassung der Farbigkeit, eigenes CSS, Dauer von Animationen, etc.)." language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001330151666570120021217 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Ein schönes und vielseitiges Plugin, das Ihnen bei der Einhaltung der EU Gesetze und Vorschriften zur Verwendung von Cookies hilft. So können Sie die Besucher Ihrer Website auf elegante Weise darüber zu informieren, wie Cookies auf Ihrer Website genutzt werden. Das Plugin bietet eine Vielzahl von Funktionen (Responsivität, Mehrsprachigkeit, gezielte Kontrolle über die Anzeige oder den Ausschluss auf bestimmten Seiten, etc.) sowie umfangreiche Einstellungsmöglichkeiten (Blockieren von Cookies, Anpassung der Farbigkeit, eigenes CSS, Dauer von Animationen, etc.)." language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.ini000060400000000776151666570120020423 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="En smuk og funktionel Cookie Advarsels-popup. Et Joomla! Plugin som giver mulighed for at informere dine brugere om hvordan du bruger cookies på dit website på en elegant måde. Inkludere mange features (responsivt, flersproget, inkluder/ekskluder fra sider, etc.) og parametre (bloker cookies, skift farver, custom CSS, animationsindstillinger, etc.)." language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000000776151666570120021240 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="En smuk og funktionel Cookie Advarsels-popup. Et Joomla! Plugin som giver mulighed for at informere dine brugere om hvordan du bruger cookies på dit website på en elegant måde. Inkludere mange features (responsivt, flersproget, inkluder/ekskluder fra sider, etc.) og parametre (bloker cookies, skift farver, custom CSS, animationsindstillinger, etc.)." language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001006151666570120021243 0ustar00; Defaults PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="A beautiful and functional EU Cookie Law Compliance Joomla! Plugin that provides a mechanism for informing your visitors about how you use cookies on your website in an elegant manner. It includes a variety of features (responsive, multilingual, include/exclude from pages, etc.) and parameters (block cookies, change colors, custom CSS, animation duration, etc.)." language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.ini000060400000001006151666570120020426 0ustar00; Defaults PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="A beautiful and functional EU Cookie Law Compliance Joomla! Plugin that provides a mechanism for informing your visitors about how you use cookies on your website in an elegant manner. It includes a variety of features (responsive, multilingual, include/exclude from pages, etc.) and parameters (block cookies, change colors, custom CSS, animation duration, etc.)." language/en-GB/index.html000060400000000043151666570120011216 0ustar00<!DOCTYPE html><title></title> language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.ini000060400000001202151666570120020474 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Un plugin Joomla! esthétique et fonctionnel, répondant à la législation européenne sur l'utilisation des cookies, et qui fournit, de manière élégante, un mécanisme afin d'informer vos visiteurs sur la façon dont vous utilisez les cookies sur votre site Web. Il inclut une variété de fonctionnalités (responsive, multilingue, inclusion/exclusion de pages, etc.) et de paramètres (bloquer les cookies, modifier les couleurs, CSS personnalisés, durée de l'animation, etc.)." language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001202151666570120021311 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Un plugin Joomla! esthétique et fonctionnel, répondant à la législation européenne sur l'utilisation des cookies, et qui fournit, de manière élégante, un mécanisme afin d'informer vos visiteurs sur la façon dont vous utilisez les cookies sur votre site Web. Il inclut une variété de fonctionnalités (responsive, multilingue, inclusion/exclusion de pages, etc.) et de paramètres (bloquer les cookies, modifier les couleurs, CSS personnalisés, durée de l'animation, etc.)." language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.ini000060400000001773151666570120020605 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Функциональный Joomla! плагин, обеспечивающий информирование посетителей сайта о законе соответствия кукисов сайта правилам ЕС. Плагин отображает информацию об использовании кукис на сайте в элегантной форме. Плагин имеет множество настроек (отзывчивый дизайн, многоязычность, управление на каких страницах отображать или скрывать информацию и т.д.) и параметров (блокировка кукис, изменение настроек цвета, подключение собственного CSS, продолжительность анимации и т.д.)" language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001773151666570120021422 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Функциональный Joomla! плагин, обеспечивающий информирование посетителей сайта о законе соответствия кукисов сайта правилам ЕС. Плагин отображает информацию об использовании кукис на сайте в элегантной форме. Плагин имеет множество настроек (отзывчивый дизайн, многоязычность, управление на каких страницах отображать или скрывать информацию и т.д.) и параметров (блокировка кукис, изменение настроек цвета, подключение собственного CSS, продолжительность анимации и т.д.)" language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001106151666570120021340 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Un elegante e funzionale Plugin per Joomla! per la legge EU sui cookies per informare i visitatori sulle modalità di conservazione ed utilizzo degli stessi nel sito e consentire il consenso all'uso oppure no. Include una varietà di caratteristiche (responsive, multilingua, includi/escludi dalle pagine, ecc) e di parametri configurabili (blocco dei cookies, cambio colori, CSS personalizzato, durata dell'animazione, ecc.)." language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.ini000060400000001106151666570120020523 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Un elegante e funzionale Plugin per Joomla! per la legge EU sui cookies per informare i visitatori sulle modalità di conservazione ed utilizzo degli stessi nel sito e consentire il consenso all'uso oppure no. Include una varietà di caratteristiche (responsive, multilingua, includi/escludi dalle pagine, ecc) e di parametri configurabili (blocco dei cookies, cambio colori, CSS personalizzato, durata dell'animazione, ecc.)." language/index.html000060400000000037151666570120010331 0ustar00<!DOCTYPE html><title></title> language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.sys.ini000060400000001010151666570120021316 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Een mooie en functionele EU CookieBeleid Joomla Plug-in die in een oplossing voorziet om bezoekers op een elegante wijze te informeren over het gebruik van cookies op uw website. Het omvat een scala aan functies (responsieve, meertalig, inclusief / uitsluiten van pagina's, enz.) En parameters (blok cookies, verander kleuren, aangepaste CSS, duur animatie, enz.)." language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.ini000060400000001010151666570120020501 0ustar00; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Een mooie en functionele EU CookieBeleid Joomla Plug-in die in een oplossing voorziet om bezoekers op een elegante wijze te informeren over het gebruik van cookies op uw website. Het omvat een scala aan functies (responsieve, meertalig, inclusief / uitsluiten van pagina's, enz.) En parameters (blok cookies, verander kleuren, aangepaste CSS, duur animatie, enz.)." index.html000060400000000043151666570120006543 0ustar00<!DOCTYPE html><title></title> script.install.php000060400000002016151666570120010232 0ustar00<?php /* ====================================================== # Cookies Policy Notification Bar for Joomla! - v4.4.4 (pro version) # ------------------------------------------------------- # For Joomla! CMS (v4.x) # Author: Web357 (Yiannis Christodoulou) # Copyright: (©) 2014-2024 Web357. All rights reserved. # License: GNU/GPLv3, https://www.gnu.org/licenses/gpl-3.0.html # Website: https://www.web357.com # Demo: https://demo-joomla.web357.com/cookies-policy-notification-bar # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:29:25 PM ========================================================= */ defined('_JEXEC') or die; require_once __DIR__ . '/script.install.helper.php'; class PlgAjaxCookiespolicynotificationbarInstallerScript extends PlgAjaxCookiespolicynotificationbarInstallerScriptHelper { public $name = 'Cookies Policy Notification Bar'; public $alias = 'cookiespolicynotificationbar'; public $extension_type = 'plugin'; public $plugin_folder = 'ajax'; }
/home/opticamezl/www/newok/tmp/../libraries/../includes/../api/../cookiespolicynotificationbar.tar