File manager - Edit - /home/opticamezl/www/newok/installer.tar
Back
urlinstaller/urlinstaller.xml 0000644 00000001617 15166416462 0012546 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="installer"> <name>plg_installer_urlinstaller</name> <author>Joomla! Project</author> <creationDate>2016-05</creationDate> <copyright>(C) 2016 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>3.6.0</version> <description>PLG_INSTALLER_URLINSTALLER_PLUGIN_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Installer\Url</namespace> <files> <folder plugin="urlinstaller">services</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_installer_urlinstaller.ini</language> <language tag="en-GB">language/en-GB/plg_installer_urlinstaller.sys.ini</language> </languages> </extension> urlinstaller/src/Extension/UrlInstaller.php 0000644 00000002643 15166416462 0015200 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.urlinstaller * * @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Installer\Url\Extension; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * UrlFolderInstaller Plugin. * * @since 3.6.0 */ final class UrlInstaller extends CMSPlugin { /** * Application object. * * @var \Joomla\CMS\Application\CMSApplication * @since 4.0.0 * @deprecated 6.0 Is needed for template overrides, use getApplication instead */ protected $app; /** * Textfield or Form of the Plugin. * * @return array Returns an array with the tab information * * @since 3.6.0 */ public function onInstallerAddInstallationTab() { // Load language files $this->loadLanguage(); $tab = []; $tab['name'] = 'url'; $tab['label'] = $this->getApplication()->getLanguage()->_('PLG_INSTALLER_URLINSTALLER_TEXT'); // Render the input ob_start(); include PluginHelper::getLayoutPath('installer', 'urlinstaller'); $tab['content'] = ob_get_clean(); return $tab; } } urlinstaller/tmpl/default.php 0000644 00000002363 15166416462 0012414 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.urlinstaller * * @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; use Joomla\Plugin\Installer\Url\Extension\UrlInstaller; /** @var UrlInstaller $this */ $this->getApplication()->getDocument()->getWebAssetManager() ->registerAndUseScript('plg_installer_urlinstaller.urlinstaller', 'plg_installer_urlinstaller/urlinstaller.js', [], ['defer' => true], ['core']); ?> <legend><?php echo Text::_('PLG_INSTALLER_URLINSTALLER_TEXT'); ?></legend> <div class="control-group"> <label for="install_url" class="control-label"> <?php echo Text::_('PLG_INSTALLER_URLINSTALLER_TEXT'); ?> </label> <div class="controls"> <input type="text" id="install_url" name="install_url" class="form-control" placeholder="https://"> </div> </div> <div class="control-group"> <div class="controls"> <button type="button" class="btn btn-primary" id="installbutton_url" onclick="Joomla.submitbuttonurl()"> <?php echo Text::_('PLG_INSTALLER_URLINSTALLER_BUTTON'); ?> </button> </div> </div> urlinstaller/services/provider.php 0000644 00000002475 15166416462 0013475 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.urlinstaller * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Installer\Url\Extension\UrlInstaller; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container) { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new UrlInstaller( $dispatcher, (array) PluginHelper::getPlugin('installer', 'urlinstaller') ); $plugin->setApplication(Factory::getApplication()); return $plugin; } ); } }; yootheme/yootheme.xml 0000604 00000002616 15166416462 0010764 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <extension version="3.1" type="plugin" group="installer" method="upgrade"> <name>Installer - YOOtheme</name> <version>1.0.7</version> <description>PLG_INSTALLER_YOOTHEME_DESCRIPTION</description> <creationDate>Oktober 2021</creationDate> <copyright>Copyright (C) YOOtheme GmbH</copyright> <license>GNU General Public License v2 or later</license> <author>YOOtheme</author> <authorEmail>info@yootheme.com</authorEmail> <authorUrl>http://yootheme.com</authorUrl> <scriptfile>script.php</scriptfile> <files> <filename plugin="yootheme">yootheme.php</filename> <filename>script.php</filename> <filename>CHANGELOG.md</filename> <filename>README.md</filename> </files> <config> <fields name="params"> <fieldset name="basic"> <field name="apikey" type="textarea" label="PLG_INSTALLER_YOOTHEME_API_KEY" /> </fieldset> </fields> </config> <updateservers> <server type="extension" priority="1" name="YOOtheme Installer">https://yootheme.com/api/update/installer_yootheme_j33.xml</server> </updateservers> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_installer_yootheme.ini</language> <language tag="en-GB">en-GB/en-GB.plg_installer_yootheme.sys.ini</language> </languages> </extension> yootheme/yootheme.php 0000604 00000002412 15166416462 0010745 0 ustar 00 <?php use Joomla\CMS\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Language\Text; defined('_JEXEC') or die(); class plgInstallerYootheme extends CMSPlugin { public function onInstallerBeforePackageDownload(&$url, &$headers) { if (parse_url($url, PHP_URL_HOST) == 'yootheme.com' && !strpos($url, 'key=')) { if ($key = $this->params->get('apikey')) { $pos = strpos($url, '?'); if ($pos === false) { $url .= "?key=$key"; } else { $url = substr_replace($url, "?key=$key&", $pos, 1); } } else { $app = Factory::getApplication(); $language = method_exists($app, 'getLanguage') ? $app->getLanguage() : Factory::getLanguage(); // load default and current language $language->load('plg_installer_yootheme', JPATH_ADMINISTRATOR, 'en-GB', true); $language->load('plg_installer_yootheme', JPATH_ADMINISTRATOR, null, true); // warn about missing api key $app->enqueueMessage(Text::_('PLG_INSTALLER_YOOTHEME_API_KEY_WARNING'), 'notice'); } } return true; } } yootheme/README.md 0000604 00000000134 15166416462 0007661 0 ustar 00 # YOOtheme Joomla! Installer - [Homepage](http://yootheme.com) - [Changelog](CHANGELOG.md) yootheme/CHANGELOG.md 0000604 00000000557 15166416462 0010224 0 ustar 00 # Changelog ## 1.0.7 - fix Joomla 5 compatibility ## 1.0.6 ### Changed - fix links in Joomla 4 ## 1.0.5 ### Changed - support download key in Joomla 4 update manager ## 1.0.3 ### Fixed - Fix PostgreSQL compatibility ## 1.0.2 ### Fixed - Check installer script class ## 1.0.1 ### Fixed - Updated language strings ## 1.0.0 ### New - Initial release yootheme/script.php 0000604 00000001241 15166416462 0010417 0 ustar 00 <?php use Joomla\CMS\Factory; defined('_JEXEC') or die(); if (class_exists('plgInstallerYoothemeInstallerScript', false)) { return; } class plgInstallerYoothemeInstallerScript { public function install($parent) { Factory::getDBO() ->setQuery( "UPDATE #__extensions SET enabled = 1 WHERE type = 'plugin' AND folder = 'installer' AND element = 'yootheme'" ) ->execute(); } public function uninstall($parent) { } public function update($parent) { } public function preflight($type, $parent) { } public function postflight($type, $parent) { } } folderinstaller/services/provider.php 0000644 00000002514 15166416462 0014140 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.folderinstaller * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Installer\Folder\Extension\FolderInstaller; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container) { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new FolderInstaller( $dispatcher, (array) PluginHelper::getPlugin('installer', 'folderinstaller') ); $plugin->setApplication(Factory::getApplication()); return $plugin; } ); } }; folderinstaller/src/Extension/FolderInstaller.php 0000644 00000002662 15166416462 0016323 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.folderinstaller * * @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Installer\Folder\Extension; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * FolderInstaller Plugin. * * @since 3.6.0 */ final class FolderInstaller extends CMSPlugin { /** * Application object. * * @var \Joomla\CMS\Application\CMSApplication * @since 4.0.0 * @deprecated 6.0 Is needed for template overrides, use getApplication instead */ protected $app; /** * Textfield or Form of the Plugin. * * @return array Returns an array with the tab information * * @since 3.6.0 */ public function onInstallerAddInstallationTab() { // Load language files $this->loadLanguage(); $tab = []; $tab['name'] = 'folder'; $tab['label'] = $this->getApplication()->getLanguage()->_('PLG_INSTALLER_FOLDERINSTALLER_TEXT'); // Render the input ob_start(); include PluginHelper::getLayoutPath('installer', 'folderinstaller'); $tab['content'] = ob_get_clean(); return $tab; } } folderinstaller/folderinstaller.xml 0000644 00000001641 15166416462 0013665 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="installer"> <name>plg_installer_folderinstaller</name> <author>Joomla! Project</author> <creationDate>2016-05</creationDate> <copyright>(C) 2016 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>3.6.0</version> <description>PLG_INSTALLER_FOLDERINSTALLER_PLUGIN_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Installer\Folder</namespace> <files> <folder plugin="folderinstaller">services</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_installer_folderinstaller.ini</language> <language tag="en-GB">language/en-GB/plg_installer_folderinstaller.sys.ini</language> </languages> </extension> folderinstaller/tmpl/default.php 0000644 00000002740 15166416462 0013064 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.folderinstaller * * @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; /** @var PlgInstallerFolderInstaller $this */ Text::script('PLG_INSTALLER_FOLDERINSTALLER_NO_INSTALL_PATH'); $this->getApplication()->getDocument()->getWebAssetManager() ->registerAndUseScript( 'plg_installer_folderinstaller.folderinstaller', 'plg_installer_folderinstaller/folderinstaller.js', [], ['defer' => true], ['core'] ); ?> <legend><?php echo Text::_('PLG_INSTALLER_FOLDERINSTALLER_TEXT'); ?></legend> <div class="control-group"> <label for="install_directory" class="control-label"> <?php echo Text::_('PLG_INSTALLER_FOLDERINSTALLER_TEXT'); ?> </label> <div class="controls"> <input type="text" id="install_directory" name="install_directory" class="form-control" value="<?php echo $this->getApplication()->getInput()->get('install_directory', $this->getApplication()->get('tmp_path')); ?>"> </div> </div> <div class="control-group"> <div class="controls"> <button type="button" class="btn btn-primary" id="installbutton_directory" onclick="Joomla.submitbuttonfolder()"> <?php echo Text::_('PLG_INSTALLER_FOLDERINSTALLER_BUTTON'); ?> </button> </div> </div> override/override.xml 0000644 00000001571 15166416462 0010743 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="installer" method="upgrade"> <name>plg_installer_override</name> <author>Joomla! Project</author> <creationDate>2018-06</creationDate> <copyright>(C) 2018 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>4.0.0</version> <description>PLG_INSTALLER_OVERRIDE_PLUGIN_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Installer\Override</namespace> <files> <folder plugin="override">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_installer_override.ini</language> <language tag="en-GB">language/en-GB/plg_installer_override.sys.ini</language> </languages> </extension> override/services/provider.php 0000644 00000002652 15166416462 0012571 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.override * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\Database\DatabaseInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Installer\Override\Extension\Override; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container) { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new Override( $dispatcher, (array) PluginHelper::getPlugin('installer', 'override') ); $plugin->setApplication(Factory::getApplication()); $plugin->setDatabase($container->get(DatabaseInterface::class)); return $plugin; } ); } }; override/src/Extension/Override.php 0000644 00000024056 15166416462 0013440 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.override * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Installer\Override\Extension; use Joomla\CMS\Date\Date; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Override Plugin * * @since 4.0.0 */ final class Override extends CMSPlugin { use DatabaseAwareTrait; /** * Load the language file on instantiation. * * @var boolean * * @since 4.0.0 */ protected $autoloadLanguage = true; /** * Method to get com_templates model instance. * * @param string $name The model name. Optional * @param string $prefix The class prefix. Optional * * @return \Joomla\Component\Templates\Administrator\Model\TemplateModel * * @since 4.0.0 * * @throws \Exception */ public function getModel($name = 'Template', $prefix = 'Administrator') { /** @var \Joomla\Component\Templates\Administrator\Extension\TemplatesComponent $templateProvider */ $templateProvider = $this->getApplication()->bootComponent('com_templates'); /** @var \Joomla\Component\Templates\Administrator\Model\TemplateModel $model */ $model = $templateProvider->getMVCFactory()->createModel($name, $prefix); return $model; } /** * Purges session array. * * @return void * * @since 4.0.0 */ public function purge() { // Delete stored session value. $session = $this->getApplication()->getSession(); $session->remove('override.beforeEventFiles'); $session->remove('override.afterEventFiles'); } /** * Method to store files before event. * * @return void * * @since 4.0.0 */ public function storeBeforeEventFiles() { // Delete stored session value. $this->purge(); // Get list and store in session. $list = $this->getOverrideCoreList(); $this->getApplication()->getSession()->set('override.beforeEventFiles', $list); } /** * Method to store files after event. * * @return void * * @since 4.0.0 */ public function storeAfterEventFiles() { // Get list and store in session. $list = $this->getOverrideCoreList(); $this->getApplication()->getSession()->set('override.afterEventFiles', $list); } /** * Method to prepare changed or updated core file. * * @param string $action The name of the action. * * @return array A list of changed files. * * @since 4.0.0 */ public function getUpdatedFiles($action) { $session = $this->getApplication()->getSession(); $after = $session->get('override.afterEventFiles'); $before = $session->get('override.beforeEventFiles'); $result = []; if (!is_array($after) || !is_array($before)) { return $result; } $size1 = count($after); $size2 = count($before); if ($size1 === $size2) { for ($i = 0; $i < $size1; $i++) { if ($after[$i]->coreFile !== $before[$i]->coreFile) { $after[$i]->action = $action; $result[] = $after[$i]; } } } return $result; } /** * Method to get core list of override files. * * @return array The list of core files. * * @since 4.0.0 */ public function getOverrideCoreList() { try { /** @var \Joomla\Component\Templates\Administrator\Model\TemplateModel $templateModel */ $templateModel = $this->getModel(); } catch (\Exception $e) { return []; } return $templateModel->getCoreList(); } /** * Last process of this plugin. * * @param array $result Result array. * * @return void * * @since 4.0.0 */ public function finalize($result) { $num = count($result); $link = 'index.php?option=com_templates&view=templates'; if ($num != 0) { $this->getApplication()->enqueueMessage(Text::plural('PLG_INSTALLER_OVERRIDE_N_FILE_UPDATED', $num, $link), 'notice'); $this->saveOverrides($result); } // Delete stored session value. $this->purge(); } /** * Event before extension update. * * @return void * * @since 4.0.0 */ public function onExtensionBeforeUpdate() { $this->storeBeforeEventFiles(); } /** * Event after extension update. * * @return void * * @since 4.0.0 */ public function onExtensionAfterUpdate() { $this->storeAfterEventFiles(); $result = $this->getUpdatedFiles('Extension Update'); $this->finalize($result); } /** * Event before joomla update. * * @return void * * @since 4.0.0 */ public function onJoomlaBeforeUpdate() { $this->storeBeforeEventFiles(); } /** * Event after joomla update. * * @return void * * @since 4.0.0 */ public function onJoomlaAfterUpdate() { $this->storeAfterEventFiles(); $result = $this->getUpdatedFiles('Joomla Update'); $this->finalize($result); } /** * Event before install. * * @return void * * @since 4.0.0 */ public function onInstallerBeforeInstaller() { $this->storeBeforeEventFiles(); } /** * Event after install. * * @return void * * @since 4.0.0 */ public function onInstallerAfterInstaller() { $this->storeAfterEventFiles(); $result = $this->getUpdatedFiles('Extension Install'); $this->finalize($result); } /** * Check for existing id. * * @param string $id Hash id of file. * @param integer $exid Extension id of file. * * @return boolean True/False * * @since 4.0.0 */ public function load($id, $exid) { $db = $this->getDatabase(); // Create a new query object. $query = $db->getQuery(true); $query ->select($db->quoteName('hash_id')) ->from($db->quoteName('#__template_overrides')) ->where($db->quoteName('hash_id') . ' = :id') ->where($db->quoteName('extension_id') . ' = :exid') ->bind(':id', $id) ->bind(':exid', $exid, ParameterType::INTEGER); $db->setQuery($query); $results = $db->loadObjectList(); if (count($results) === 1) { return true; } return false; } /** * Save the updated files. * * @param array $pks Updated files. * * @return void * * @since 4.0.0 * @throws \Joomla\Database\Exception\ExecutionFailureException|\Joomla\Database\Exception\ConnectionFailureException */ private function saveOverrides($pks) { // Insert columns. $columns = [ 'template', 'hash_id', 'action', 'created_date', 'modified_date', 'extension_id', 'state', 'client_id', ]; $db = $this->getDatabase(); // Create an insert query. $insertQuery = $db->getQuery(true) ->insert($db->quoteName('#__template_overrides')) ->columns($db->quoteName($columns)); foreach ($pks as $pk) { $date = new Date('now'); $createdDate = $date->toSql(); if (empty($pk->coreFile)) { $modifiedDate = null; } else { $modifiedDate = $createdDate; } if ($this->load($pk->id, $pk->extension_id)) { $updateQuery = $db->getQuery(true) ->update($db->quoteName('#__template_overrides')) ->set( [ $db->quoteName('modified_date') . ' = :modifiedDate', $db->quoteName('action') . ' = :pkAction', $db->quoteName('state') . ' = 0', ] ) ->where($db->quoteName('hash_id') . ' = :pkId') ->where($db->quoteName('extension_id') . ' = :exId') ->bind(':modifiedDate', $modifiedDate) ->bind(':pkAction', $pk->action) ->bind(':pkId', $pk->id) ->bind(':exId', $pk->extension_id, ParameterType::INTEGER); // Set the query using our newly populated query object and execute it. $db->setQuery($updateQuery); $db->execute(); continue; } // Insert values, preserve order $bindArray = $insertQuery->bindArray( [ $pk->template, $pk->id, $pk->action, $createdDate, $modifiedDate, ], ParameterType::STRING ); $bindArray = array_merge( $bindArray, $insertQuery->bindArray( [ $pk->extension_id, 0, (int) $pk->client, ], ParameterType::INTEGER ) ); $insertQuery->values(implode(',', $bindArray)); } if (!empty($bindArray)) { $db->setQuery($insertQuery); $db->execute(); } } } webinstaller/tmpl/default.php 0000644 00000003347 15166416462 0012372 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.Webinstaller * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; /** @var PlgInstallerWebinstaller $this */ $dir = $this->isRTL() ? ' dir="ltr"' : ''; Text::script('JSEARCH_FILTER_CLEAR'); Text::script('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR'); ?> <div id="jed-container" class="tab-pane"> <div class="card" id="web-loader"> <div class="card-body"> <h2 class="card-title"><?php echo Text::_('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING'); ?></h2> </div> </div> <div class="hidden" id="web-loader-error"> </div> </div> <fieldset class="form-group hidden" id="uploadform-web"<?php echo $dir; ?>> <p><strong><?php echo Text::_('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM'); ?></strong></p> <dl> <dt id="uploadform-web-name-label"><?php echo Text::_('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME'); ?></dt> <dd id="uploadform-web-name"></dd> <dt><?php echo Text::_('PLG_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL'); ?></dt> <dd id="uploadform-web-url"></dd> </dl> <div class="card card-light"> <div class="card-body"> <div class="card-text"> <button type="button" class="btn btn-primary" id="uploadform-web-install"><?php echo Text::_('COM_INSTALLER_INSTALL_BUTTON'); ?></button> <button type="button" class="btn btn-secondary" id="uploadform-web-cancel"><?php echo Text::_('JCANCEL'); ?></button> </div> </div> </div> </fieldset> webinstaller/tmpl/hathor.php 0000604 00000003701 15166416462 0012221 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.webinstaller * * @copyright Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; use Joomla\CMS\Language\Text; /** @var PlgInstallerWebinstaller $this */ $installfrom = $this->getInstallFrom(); ?> <div class="clr"></div> <fieldset class="uploadform"> <legend><?php echo Text::_('COM_INSTALLER_INSTALL_FROM_WEB', true); ?></legend> <div id="jed-container"<?php echo $dir; ?>> <div id="mywebinstaller" style="display:none"> <a href="#"><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_LOAD_APPS'); ?></a> </div> <div class="well" id="web-loader" style="display:none"> <h2><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING'); ?></h2> </div> <div class="alert alert-error" id="web-loader-error" style="display:none"> <a class="close" data-dismiss="alert">×</a><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR'); ?> </div> </div> <fieldset class="uploadform" id="uploadform-web" style="display:none" dir="ltr"> <div class="control-group"> <strong><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM'); ?></strong><br /> <span id="uploadform-web-name-label"><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME'); ?>:</span> <span id="uploadform-web-name"></span><br /> <?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL'); ?>: <span id="uploadform-web-url"></span> </div> <div class="form-actions"> <input type="button" class="btn btn-primary" value="<?php echo Text::_('COM_INSTALLER_INSTALL_BUTTON'); ?>" onclick="Joomla.submitbutton<?php echo $installfrom != '' ? 4 : 5; ?>()" /> <input type="button" class="btn btn-secondary" value="<?php echo Text::_('JCANCEL'); ?>" onclick="Joomla.installfromwebcancel()" /> </div> </fieldset> </fieldset> webinstaller/webinstaller.script.php 0000604 00000011454 15166416462 0013762 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.webinstaller * * @copyright Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ defined('_JEXEC') or die; // If the minimum PHP version constant hasn't been defined (really old Joomla version), set it now if (!defined('JOOMLA_MINIMUM_PHP')) { // Minimum as of Joomla! 3.3 define('JOOMLA_MINIMUM_PHP', '5.3.10'); } // Stub the JInstallerScript class for older versions to perform the minimum required checks if (!class_exists('JInstallerScript')) { /** * Base install script for use by extensions providing helper methods for common behaviours. * * @since 3.6 */ class JInstallerScript { /** * Minimum PHP version required to install the extension * * @var string * @since 3.6 */ protected $minimumPhp; /** * Minimum Joomla! version required to install the extension * * @var string * @since 3.6 */ protected $minimumJoomla; /** * Function called before extension installation/update/removal procedure commences * * @param string $type The type of change (install, update or discover_install, not uninstall) * @param JInstallerAdapter $parent The class calling this method * * @return boolean True on success * * @since 3.6 */ public function preflight($type, $parent) { // Check for the minimum PHP version before continuing if (!empty($this->minimumPhp) && version_compare(PHP_VERSION, $this->minimumPhp, '<')) { JLog::add(JText::sprintf('JLIB_INSTALLER_MINIMUM_PHP', $this->minimumPhp), JLog::WARNING, 'jerror'); return false; } // Check for the minimum Joomla version before continuing if (!empty($this->minimumJoomla) && version_compare(JVERSION, $this->minimumJoomla, '<')) { JLog::add(JText::sprintf('JLIB_INSTALLER_MINIMUM_JOOMLA', $this->minimumJoomla), JLog::WARNING, 'jerror'); return false; } // Theoretically we should not reach this line in this stub because triggering it means we aren't matching the minimum Joomla version return true; } } } /** * Support for the "Install from Web" tab * * @since 1.0 */ class plginstallerwebinstallerInstallerScript extends JInstallerScript { /** * A list of files to be deleted * * @var array * @since 2.0 */ protected $deleteFiles = array( '/plugins/installer/webinstaller/css/client.css', '/plugins/installer/webinstaller/css/client.min.css', '/plugins/installer/webinstaller/css/index.html', '/plugins/installer/webinstaller/index.html', '/plugins/installer/webinstaller/js/client.js', '/plugins/installer/webinstaller/js/client.min.js', ); /** * A list of folders to be deleted * * @var array * @since 2.0 */ protected $deleteFolders = array( '/plugins/installer/webinstaller/css', '/plugins/installer/webinstaller/js', ); /** * Minimum PHP version required to install the extension * * @var string * @since 2.0 */ protected $minimumPhp = JOOMLA_MINIMUM_PHP; /** * Minimum Joomla! version required to install the extension * * @var string * @since 2.0 */ protected $minimumJoomla = '3.9'; /** * Function called before extension installation/update/removal procedure commences * * @param string $type The type of change (install, update or discover_install, not uninstall) * @param JInstallerAdapter $parent The class calling this method * * @return boolean True on success * * @since 3.6 */ public function preflight($type, $parent) { if (!parent::preflight($type, $parent)) { return false; } // Disallow installs on 4.0 as the plugin is part of core if (version_compare(JVERSION, '4.0', '>=')) { JLog::add(JText::_('PLG_INSTALLER_WEBINSTALLER_ERROR_PLUGIN_INCLUDED_IN_CORE'), JLog::WARNING, 'jerror'); return false; } return true; } /** * Function called after extension installation/update/removal procedure commences * * @param string $route The action being performed * @param JInstallerPlugin $adapter The class calling this method * * @return void * * @since 1.0 */ public function postflight($route, $adapter) { // When initially installing the plugin, enable it as well if ($route === 'install') { try { $db = JFactory::getDbo(); $db->setQuery( $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('enabled') . ' = 1') ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('element') . ' = ' . $db->quote('webinstaller')) )->execute(); } catch (RuntimeException $e) { // Don't let this fatal out the install process, proceed as normal from here } } } } webinstaller/webinstaller.xml 0000644 00000001614 15166416462 0012471 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="installer" method="upgrade"> <name>plg_installer_webinstaller</name> <author>Joomla! Project</author> <creationDate>2017-04</creationDate> <copyright>(C) 2018 Open Source Matters, Inc.</copyright> <license>https://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>4.0.0</version> <description>PLG_INSTALLER_WEBINSTALLER_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Installer\Web</namespace> <files> <folder plugin="webinstaller">services</folder> <folder>src</folder> <folder>tmpl</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_installer_webinstaller.ini</language> <language tag="en-GB">language/en-GB/plg_installer_webinstaller.sys.ini</language> </languages> </extension> webinstaller/services/provider.php 0000644 00000002475 15166416462 0013450 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.webinstaller * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Installer\Web\Extension\WebInstaller; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container) { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new WebInstaller( $dispatcher, (array) PluginHelper::getPlugin('installer', 'webinstaller') ); $plugin->setApplication(Factory::getApplication()); return $plugin; } ); } }; webinstaller/src/Extension/WebInstaller.php 0000644 00000012023 15166416462 0015117 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Installer.webinstaller * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Installer\Web\Extension; use Joomla\CMS\Application\CMSApplication; use Joomla\CMS\Form\Rule\UrlRule; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Updater\Update; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Version; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Support for the "Install from Web" tab * * @since 3.2 */ final class WebInstaller extends CMSPlugin { /** * The URL for the remote server. * * @var string * @since 4.0.0 */ public const REMOTE_URL = 'https://appscdn.joomla.org/webapps/'; /** * The application object. * * @var CMSApplication * @since 4.0.0 * @deprecated 6.0 Is needed for template overrides, use getApplication instead */ protected $app; /** * The URL to install from * * @var string|null * @since 4.0.0 */ private $installfrom = null; /** * Flag if the document is in a RTL direction * * @var integer|null * @since 4.0.0 */ private $rtl = null; /** * Event listener for the `onInstallerAddInstallationTab` event. * * @return array Returns an array with the tab information * * @since 4.0.0 */ public function onInstallerAddInstallationTab() { // Load language files $this->loadLanguage(); $installfrom = $this->getInstallFrom(); $doc = $this->getApplication()->getDocument(); $lang = $this->getApplication()->getLanguage(); // Push language strings to the JavaScript store Text::script('PLG_INSTALLER_WEBINSTALLER_CANNOT_INSTALL_EXTENSION_IN_PLUGIN'); Text::script('PLG_INSTALLER_WEBINSTALLER_REDIRECT_TO_EXTERNAL_SITE_TO_INSTALL'); $doc->getWebAssetManager() ->registerAndUseStyle('plg_installer_webinstaller.client', 'plg_installer_webinstaller/client.min.css') ->registerAndUseScript( 'plg_installer_webinstaller.client', 'plg_installer_webinstaller/client.min.js', [], ['type' => 'module'], ['core'] ); $devLevel = Version::PATCH_VERSION; if (!empty(Version::EXTRA_VERSION)) { $devLevel .= '-' . Version::EXTRA_VERSION; } $doc->addScriptOptions( 'plg_installer_webinstaller', [ 'base_url' => addslashes(self::REMOTE_URL), 'installat_url' => base64_encode(Uri::current() . '?option=com_installer&view=install'), 'installfrom_url' => addslashes($installfrom), 'product' => base64_encode(Version::PRODUCT), 'release' => base64_encode(Version::MAJOR_VERSION . '.' . Version::MINOR_VERSION), 'dev_level' => base64_encode($devLevel), 'installfromon' => $installfrom ? 1 : 0, 'language' => base64_encode($lang->getTag()), 'installFrom' => $installfrom != '' ? 4 : 5, ] ); $tab = [ 'name' => 'web', 'label' => $lang->_('PLG_INSTALLER_WEBINSTALLER_TAB_LABEL'), ]; // Render the input ob_start(); include PluginHelper::getLayoutPath('installer', 'webinstaller'); $tab['content'] = ob_get_clean(); $tab['content'] = '<legend>' . $tab['label'] . '</legend>' . $tab['content']; return $tab; } /** * Internal check to determine if the output is in a RTL direction * * @return integer * * @since 3.2 */ private function isRTL() { if ($this->rtl === null) { $this->rtl = strtolower($this->getApplication()->getDocument()->getDirection()) === 'rtl' ? 1 : 0; } return $this->rtl; } /** * Get the install from URL * * @return string * * @since 3.2 */ private function getInstallFrom() { if ($this->installfrom === null) { $installfrom = base64_decode($this->getApplication()->getInput()->getBase64('installfrom', '')); $field = new \SimpleXMLElement('<field></field>'); if ((new UrlRule())->test($field, $installfrom) && preg_match('/\.xml\s*$/', $installfrom)) { $update = new Update(); $update->loadFromXml($installfrom); $package_url = trim($update->get('downloadurl', false)->_data); if ($package_url) { $installfrom = $package_url; } } $this->installfrom = $installfrom; } return $this->installfrom; } } cookiespolicynotificationbar/cookiespolicynotificationbar.php 0000604 00000006471 15166416462 0021214 0 ustar 00 <?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\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Language\Text; class plgInstallerCookiespolicynotificationbar extends CMSPlugin { public function onInstallerBeforePackageDownload(&$url, &$headers) { if (parse_url($url, PHP_URL_HOST) == 'www.web357.com' || parse_url($url, PHP_URL_HOST) == 'downloads.web357.com') { $apikey_from_plugin_parameters = Web357Framework\Functions::getWeb357ApiKey(); $current_url = Uri::getInstance()->toString(); $parse = parse_url($current_url); $domain = isset($parse['host']) ? $parse['host'] : 'domain.com'; $url = str_replace('?cms=j', '&cms=j', $url); $uri = Uri::getInstance($url); $item = $uri->getVar('item'); if ($item !== 'cookiespolicynotificationbar') { return; } if (!empty($apikey_from_plugin_parameters)) { $uri->setVar('liveupdate', 'true'); $uri->setVar('domain', $domain); $uri->setVar('dlid', $apikey_from_plugin_parameters); $url = $uri->toString(); $url = str_replace('?cms=', '&cms=', $url); $url = str_replace(' ', '+', $url); } // Watchful.net support elseif (isset($parse['query']) && strpos($parse['query'], 'com_watchfulli') !== false) { $apikey = $uri->getVar('key'); // get apikey from watchful settings if (isset($apikey) && !empty($apikey)) { $apikey = str_replace(' ', '+', $apikey); $uri->setVar('liveupdate', 'com_watchfulli'); $uri->setVar('domain', $domain); $uri->setVar('dlid', $apikey); $uri->setVar('key', $apikey); $url = $uri->toString(); $url = str_replace('?cms=', '&cms=', $url); } else { Factory::getApplication()->enqueueMessage(Text::_('W357FRM_APIKEY_WARNING'), 'notice'); } } else { // load default and current language $jlang = Factory::getLanguage(); $jlang->load('plg_system_web357framework', JPATH_ADMINISTRATOR, null, true); // warn about missing api key Factory::getApplication()->enqueueMessage(Text::_('W357FRM_APIKEY_WARNING'), 'notice'); } } return true; } } cookiespolicynotificationbar/script.install.php 0000604 00000002035 15166416462 0016205 0 ustar 00 <?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 PlgInstallerCookiespolicynotificationbarInstallerScript extends PlgInstallerCookiespolicynotificationbarInstallerScriptHelper { public $name = 'Cookies Policy Notification Bar'; public $alias = 'cookiespolicynotificationbar'; public $extension_type = 'plugin'; public $plugin_folder = 'installer'; } cookiespolicynotificationbar/cookiespolicynotificationbar.xml 0000604 00000002670 15166416462 0021222 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <extension version="3.1" type="plugin" group="installer" method="upgrade"> <name>PLG_INSTALLER_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>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>