first commit

This commit is contained in:
2026-02-08 21:16:11 +01:00
commit e17b7026fd
8881 changed files with 1160453 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
<?php
/**
* @package akeebabackup
* @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
* @license GNU General Public License version 3, or later
*/
/** @noinspection PhpUnused */
defined('_JEXEC') || die;
use Akeeba\Component\AkeebaBackup\Administrator\Model\UpgradeModel;
use Joomla\CMS\Factory;
use Joomla\CMS\Installer\Adapter\PackageAdapter;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\Database\DatabaseDriver;
use Joomla\Database\DatabaseInterface;
/**
* Akeeba Backup package extension installation script file.
*
* @see https://docs.joomla.org/Manifest_files#Script_file
* @see UpgradeModel
*/
class Pkg_AkeebabackupInstallerScript extends \Joomla\CMS\Installer\InstallerScript
{
/**
* @var DatabaseDriver|DatabaseInterface|null
* @since 9.3.0
*/
protected $dbo;
protected $minimumPhp = '7.4.0';
protected $minimumJoomla = '4.2.0';
public function preflight($type, $parent)
{
if (!parent::preflight($type, $parent))
{
return false;
}
$this->setDboFromAdapter($parent);
// Do not run on uninstall.
if ($type === 'uninstall')
{
return true;
}
define('AKEEBABACKUP_INSTALLATION_PRO', is_file($parent->getParent()->getPath('source') . '/com_akeebabackup-pro.zip'));
return true;
}
/**
* Called after any type of installation / uninstallation action.
*
* @param string $type Which action is happening (install|uninstall|discover_install|update)
* @param PackageAdapter $parent The object responsible for running this script
*
* @return bool
* @since 9.0.0
*/
public function postflight(string $type, PackageAdapter $parent): bool
{
$this->setDboFromAdapter($parent);
// Do not run on uninstall.
if ($type === 'uninstall')
{
return true;
}
$model = $this->getUpgradeModel();
if (empty($model))
{
return true;
}
return $model->postflight($type, $parent);
}
/**
* Get the UpgradeModel of the installed component
*
* @return UpgradeModel|null The upgrade Model. NULL if it cannot be loaded.
* @since 9.0.0
*/
private function getUpgradeModel(): ?UpgradeModel
{
// Make sure the latest version of the Model file will be loaded, regardless of the OPcache state.
$filePath = JPATH_ADMINISTRATOR . '/components/com_akeebabackup/src/Model/UpgradeModel.php';
if (function_exists('opcache_invalidate'))
{
opcache_invalidate($filePath = JPATH_ADMINISTRATOR . '/components/com_akeebabackup/src/Model/UpgradeModel.php');
}
// Can I please load the model?
if (!class_exists('\Akeeba\Component\AkeebaBackup\Administrator\Model\UpgradeModel'))
{
if (!file_exists($filePath) || !is_readable($filePath))
{
return null;
}
include_once $filePath;
}
if (!class_exists('\Akeeba\Component\AkeebaBackup\Administrator\Model\UpgradeModel'))
{
return null;
}
try
{
$upgradeModel = new UpgradeModel();
}
catch (Throwable $e)
{
return null;
}
if (method_exists($upgradeModel, 'setDatabase'))
{
$upgradeModel->setDatabase($this->dbo ?? Factory::getContainer()->get('DatabaseDriver'));
}
elseif (method_exists($upgradeModel, 'setDbo'))
{
$upgradeModel->setDbo($this->dbo ?? Factory::getContainer()->get('DatabaseDriver'));
}
if (method_exists($upgradeModel, 'init'))
{
$upgradeModel->init();
}
return $upgradeModel;
}
/**
* Set the database object from the installation adapter, if possible
*
* @param InstallerAdapter|mixed $adapter The installation adapter, hopefully.
*
* @since 9.3.0
* @return void
*/
private function setDboFromAdapter($adapter): void
{
$this->dbo = null;
if (class_exists(InstallerAdapter::class) && ($adapter instanceof InstallerAdapter))
{
/**
* If this is Joomla 4.2+ the adapter has a protected getDatabase() method which we can access with the
* magic property $adapter->db. On Joomla 4.1 and lower this is not available. So, we have to first figure
* out if we can actually use the magic property...
*/
try
{
$refObj = new ReflectionObject($adapter);
if ($refObj->hasMethod('getDatabase'))
{
$this->dbo = $adapter->db;
return;
}
}
catch (Throwable $e)
{
// If something breaks we will fall through
}
}
$this->dbo = Factory::getContainer()->get('DatabaseDriver');
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,179 @@
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
/**
* Script file of miniorange_user_sync_system_plugin.
*
* The name of this class is dependent on the component being installed.
* The class name should have the component's name, directly followed by
* the text InstallerScript (ex:. com_helloWorldInstallerScript).
*
* This class will be called by Joomla!'s installer, if specified in your component's
* manifest file, and is used for custom automation actions in its installation process.
*
* In order to use this automation script, you should reference it in your component's
* manifest file as follows:
* <scriptfile>script.php</scriptfile>
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
class pkg_ImportexportusersInstallerScript
{
/**
* This method is called after a component is installed.
*
* @param \stdClass $parent - Parent object calling this method.
*
* @return void
*/
public function install($parent)
{
}
/**
* This method is called after a component is uninstalled.
*
* @param \stdClass $parent - Parent object calling this method.
*
* @return void
*/
public function uninstall($parent)
{
//echo '<p>' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '</p>';
}
/**
* This method is called after a component is updated.
*
* @param \stdClass $parent - Parent object calling object.
*
* @return void
*/
public function update($parent)
{
//echo '<p>' . JText::sprintf('COM_HELLOWORLD_UPDATE_TEXT', $parent->get('manifest')->version) . '</p>';
}
/**
* Runs just before any installation action is performed on the component.
* Verifications and pre-requisites should run in this function.
*
* @param string $type - Type of PreFlight action. Possible values are:
* - * install
* - * update
* - * discover_install
* @param \stdClass $parent - Parent object calling object.
*
* @return void
*/
public function preflight($type, $parent)
{
//echo '<p>' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '</p>';
}
/**
* Runs right after any installation action is performed on the component.
*
* @param string $type - Type of PostFlight action. Possible values are:
* - * install
* - * update
* - * discover_install
* @param \stdClass $parent - Parent object calling object.
*
* @return void
*/
function postflight($type, $parent)
{
// echo '<p>' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '</p>';
if ($type == 'uninstall') {
return true;
}
$this->showInstallMessage('');
}
protected function showInstallMessage($messages = array())
{
?>
<style>
.mo-row {
width: 100%;
display: block;
margin-bottom: 2%;
}
.mo-row:after {
clear: both;
display: block;
content: "";
}
.mo_boot_btn {
display: inline-block;
font-weight: 400;
text-align: center;
vertical-align: middle;
user-select: none;
background-color: transparent;
border: 1px solid transparent;
padding: 4px 12px;
font-size: 0.85rem;
line-height: 1.5;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.mo_boot_btn-users_sync {
color: white;
background-color: #226a8b;
border-color: #226a8b;
}
.mo_boot_btn-users_sync:hover {
color: white;
background-color: #163c4e;
}
.mo_boot_btn-users_sync:focus, .mo_boot_btn-users_sync.mo_boot_focus {
box-shadow: 0 0 0 0.2rem #163c4e;
}
.mo_boot_btn-users_sync.mo_boot_disabled, .mo_boot_btn-users_sync:disabled {
color: #fff;
background-color: #163c4e;
border-color: #163c4e;
}
.mo_boot_btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.mo_boot_btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
</style>
<p>Our plugin is compatible with Joomla 3, 4 as well as 5.</p>
<h4>What this plugin does?</h4>
<p>Your Joomla users can be imported and exported from Joomla 3.x to Joomla 4.x and 5.x and vice versa. Additionally, you can import users from any other websites or CMS into your Joomla website.</p>
<div class="mo-row">
<a class="mo_boot_btn mo_boot_btn-users_sync" onClick="window.location.reload();"
href="index.php?option=com_miniorange_importexportusers&view=accountsetup&tab-panel=overview">Start Using miniOrange Import Export Users plugin</a>
<a class="mo_boot_btn mo_boot_btn-secondary" href="https://plugins.miniorange.com/import-export-users-for-joomla"
target="_blank">Read the miniOrange documents</a>
<a class="mo_boot_btn mo_boot_btn-secondary" href="https://www.miniorange.com/contact" target="_blank">Get
Support!</a>
</div>
<?php
}
}

View File

@@ -0,0 +1 @@
<!DOCTYPE html><title></title>

View File

@@ -0,0 +1,709 @@
<?php
/**
* @copyright Copyright (c) 2009-2022 Ryan Demmer. All rights reserved
* @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* JCE is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses
*/
defined('JPATH_PLATFORM') or die('RESTRICTED');
class pkg_jceInstallerScript
{
private function addIndexfiles($paths)
{
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
// get the base file
$file = JPATH_ADMINISTRATOR . '/components/com_jce/index.html';
if (is_file($file)) {
foreach ((array) $paths as $path) {
if (is_dir($path)) {
// admin component
$folders = JFolder::folders($path, '.', true, true);
foreach ($folders as $folder) {
JFile::copy($file, $folder . '/' . basename($file));
}
}
}
}
}
private function installProfiles()
{
include_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/profiles.php';
return JceProfilesHelper::installProfiles();
}
public function install($installer)
{
// enable plugins
$plugin = JTable::getInstance('extension');
$plugins = array(
'content' => 'jce',
'extension' => 'jce',
'installer' => 'jce',
'quickicon' => 'jce',
'system' => 'jce',
'fields' => 'mediajce',
);
$parent = $installer->getParent();
foreach ($plugins as $folder => $element) {
$id = $plugin->find(array('type' => 'plugin', 'folder' => $folder, 'element' => $element));
if ($id) {
$plugin->load($id);
$plugin->enabled = 1;
$plugin->store();
}
}
// install profiles
$this->installProfiles();
$language = JFactory::getLanguage();
$language->load('com_jce', JPATH_ADMINISTRATOR, null, true);
$language->load('com_jce.sys', JPATH_ADMINISTRATOR, null, true);
// set layout base path
JLayoutHelper::$defaultBasePath = JPATH_ADMINISTRATOR . '/components/com_jce/layouts';
// override existing message
$message = '';
$message .= '<div id="jce" class="mt-4 mb-4 p-4 card border-dark well" style="text-align:left;">';
$message .= ' <div class="card-header"><h1>' . JText::_('COM_JCE') . ' ' . $parent->manifest->version . '</h1></div>';
$message .= ' <div class="card-body">';
// variant messates
if ((string) $parent->manifest->variant != 'pro') {
$message .= JLayoutHelper::render('message.upgrade');
} else {
// show core to pro upgrade message
if ($parent->isUpgrade()) {
$variant = (string) $parent->get('current_variant', 'core');
if ($variant == 'core') {
$message .= JLayoutHelper::render('message.welcome');
}
}
}
$message .= JText::_('COM_JCE_XML_DESCRIPTION');
$message .= ' </div>';
$message .= '</div>';
$parent->set('message', $message);
// add index files to each folder
$this->addIndexfiles(array(
__DIR__,
JPATH_SITE . '/components/com_jce',
JPATH_PLUGINS . '/jce',
));
return true;
}
private function checkTable()
{
$db = JFactory::getDBO();
$tables = $db->getTableList();
if (!empty($tables)) {
// swap array values with keys, convert to lowercase and return array keys as values
$tables = array_keys(array_change_key_case(array_flip($tables)));
$app = JFactory::getApplication();
$match = str_replace('#__', strtolower($app->getCfg('dbprefix', '')), '#__wf_profiles');
return in_array($match, $tables);
}
// try with query
$query = $db->getQuery(true);
$query->select('COUNT(id)')->from('#__wf_profiles');
$db->setQuery($query);
return $db->execute();
}
public function uninstall()
{
$db = JFactory::getDBO();
if ($this->checkTable() === false) {
return true;
}
$query = $db->getQuery(true);
$query->select('COUNT(id)')->from('#__wf_profiles');
$db->setQuery($query);
// profiles table is empty, remove...
if ($db->loadResult() === 0) {
$db->dropTable('#__wf_profiles', true);
$db->execute();
}
}
public function update($installer)
{
return $this->install($installer);
}
protected function getCurrentVersion()
{
// get current package version
$manifest = JPATH_ADMINISTRATOR . '/manifests/packages/pkg_jce.xml';
$version = 0;
$variant = "core";
if (is_file($manifest)) {
if ($xml = @simplexml_load_file($manifest)) {
$version = (string) $xml->version;
$variant = (string) $xml->variant;
}
}
return array($version, $variant);
}
public function preflight($route, $installer)
{
// skip on uninstall etc.
if ($route == 'remove' || $route == 'uninstall') {
return true;
}
$parent = $installer->getParent();
$requirements = '<a href="https://www.joomlacontenteditor.net/support/documentation/editor/requirements" title="Editor Requirements" target="_blank" rel="noopener">https://www.joomlacontenteditor.net/support/documentation/editor/requirements</a>';
// php version check
if (version_compare(PHP_VERSION, '7.4', 'lt')) {
throw new RuntimeException('JCE requires PHP 7.4 or later - ' . $requirements);
}
$jversion = new JVersion();
// joomla version check
if (version_compare($jversion->getShortVersion(), '3.9', 'lt')) {
throw new RuntimeException('JCE requires Joomla 3.9 or later - ' . $requirements);
}
// set current package version and variant
list($version, $variant) = $this->getCurrentVersion();
// set current version
$parent->set('current_version', $version);
// set current variant
$parent->set('current_variant', $variant);
// core cannot be installed over pro
if ($variant === "pro" && (string) $parent->manifest->variant === "core") {
throw new RuntimeException('JCE Core cannot be installed over JCE Pro. Please install JCE Pro. To downgrade, please first uninstall JCE Pro.');
}
// end here if not an upgrade
if ($route != 'update') {
return true;
}
$extension = JTable::getInstance('extension');
// disable content, system and quickicon plugins. This is to prevent errors if the install fails and some core files are missing
foreach (array('content', 'system', 'quickicon') as $folder) {
$plugin = $extension->find(array(
'type' => 'plugin',
'element' => 'jce',
'folder' => $folder,
));
if ($plugin) {
$extension->publish(null, 0);
}
}
// disable legacy jcefilebrowser quickicon to remove when the install is finished
$plugin = $extension->find(array(
'type' => 'plugin',
'element' => 'jcefilebrowser',
'folder' => 'quickicon',
));
if ($plugin) {
$extension->publish(null, 0);
}
}
private function checkTableUpdate()
{
$db = JFactory::getDBO();
$state = true;
// only for mysql / mysqli
if (strpos($db->getName(), 'mysql') === false) {
return $state;
}
$query = "DESCRIBE #__wf_profiles";
$db->setQuery($query);
$items = $db->loadObjectList();
foreach($items as $item) {
if ($item->Field == 'checked_out') {
if (strpos($item->Type, 'unsigned') === false) {
$state = false;
}
if (strpos($item->Type, 'unsigned') === false) {
$state = false;
}
}
if ($item->Field == 'checked_out_time') {
$item = (array) $item;
if (strtolower($item['Null']) == 'no') {
$state = false;
}
}
}
return $state;
}
public function postflight($route, $installer)
{
$app = JFactory::getApplication();
$extension = JTable::getInstance('extension');
$parent = $installer->getParent();
$db = JFactory::getDBO();
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_jce/tables');
// remove legacy jcefilebrowser quickicon
$plugin = JPluginHelper::getPlugin('quickicon', 'jcefilebrowser');
if ($plugin) {
$inst = new JInstaller();
// try uninstall
if (!$inst->uninstall('plugin', $plugin->id)) {
if ($extension->load($plugin->id)) {
$extension->publish(null, 0);
}
}
}
if ($route == 'update') {
$version = (string) $parent->manifest->version;
$current_version = (string) $parent->get('current_version');
// process core to pro upgrade - remove branding plugin
if ((string) $parent->manifest->variant === "pro") {
// remove branding plugin
$branding = JPATH_SITE . '/components/com_jce/editor/tiny_mce/plugins/branding';
if (is_dir($branding)) {
JFolder::delete($branding);
}
// clean up updates sites
$query = $db->getQuery(true);
$query->select('update_site_id')->from('#__update_sites');
$query->where($db->qn('location') . ' = ' . $db->q('https://cdn.joomlacontenteditor.net/updates/xml/editor/pkg_jce.xml'));
$db->setQuery($query);
$id = $db->loadResult();
if ($id) {
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_installer/models');
$model = JModelLegacy::getInstance('Updatesites', 'InstallerModel');
if ($model) {
$model->delete(array($id));
}
}
}
$theme = '';
// update toolbar_theme for 2.8.0 and 2.8.1 beta
if (version_compare($current_version, '2.8.0', 'ge') && version_compare($current_version, '2.8.1', 'lt')) {
$theme = 'modern';
}
// update toolbar_theme for 2.7.x
if (version_compare($current_version, '2.8', 'lt')) {
$theme = 'default';
}
// update toolbar_theme if one has been set
if ($theme) {
$table = JTable::getInstance('Profiles', 'JceTable');
$query = $db->getQuery(true);
$query->select('*')->from('#__wf_profiles');
$db->setQuery($query);
$profiles = $db->loadObjectList();
foreach ($profiles as $profile) {
if (empty($profile->params)) {
$profile->params = '{}';
}
$data = json_decode($profile->params, true);
if (false !== $data) {
if (empty($data)) {
$data = array();
}
// no editor parameters set at all!
if (!isset($data['editor'])) {
$data['editor'] = array();
}
$param = array(
'toolbar_theme' => $theme
);
// add variant for "mobile" profile
if ($profile->name === "Mobile") {
$param['toolbar_theme'] .= '.touch';
}
if (empty($data['editor']['toolbar_theme'])) {
$data['editor']['toolbar_theme'] = $param['toolbar_theme'];
if (!$table->load($profile->id)) {
throw new Exception('Unable to update profile - ' . $profile->name);
}
$table->params = json_encode($data);
if (!$table->store()) {
throw new Exception('Unable to update profile - ' . $profile->name);
}
}
}
}
}
// enable content, system and quickicon plugins
foreach (array('content', 'system', 'quickicon') as $folder) {
$plugin = $extension->find(array(
'type' => 'plugin',
'element' => 'jce',
'folder' => $folder,
));
if ($plugin) {
$extension->publish(null, 1);
}
}
// check for "unsigend" in "checked_out" and default value in "checked_out_time" fields and update if necessary
if (false == $this->checkTableUpdate()) {
// fix checked_out table
$query = "ALTER TABLE #__wf_profiles CHANGE COLUMN " . $db->qn('checked_out') . " " . $db->qn('checked_out') . " INT UNSIGNED NULL";
$db->setQuery($query);
$db->execute();
// fix checked_out_time default value
$query = "ALTER TABLE #__wf_profiles CHANGE COLUMN " . $db->qn('checked_out_time') . " " . $db->qn('checked_out_time') . " DATETIME NULL DEFAULT NULL";
$db->setQuery($query);
$db->execute();
}
/*try {
$query = "SELECT DEFAULT (" . $db->qn('checked_out_time') . ") FROM #__wf_profiles";
$db->setQuery($query);
$db->execute();
} catch (Exception $e) {
}*/
self::cleanupInstall($installer);
}
}
protected static function cleanupInstall($installer)
{
$parent = $installer->getParent();
$current_version = $parent->get('current_version');
$admin = JPATH_ADMINISTRATOR . '/components/com_jce';
$site = JPATH_SITE . '/components/com_jce';
$folders = array();
$files = array();
$folders['2.6.38'] = array(
// admin
$admin . '/classes',
$admin . '/elements',
$admin . '/media/fonts',
$admin . '/img/menu',
$admin . '/views/preferences',
$admin . '/views/users',
// site
$site . '/editor/elements',
$site . '/editor/extensions/aggregator/vine',
$site . '/editor/extensions/popups/window',
// site - tinymce plugins
$site . '/editor/tiny_mce/plugins/advlist/classes',
$site . '/editor/tiny_mce/plugins/article/classes',
$site . '/editor/tiny_mce/plugins/browser/classes',
$site . '/editor/tiny_mce/plugins/caption/classes',
$site . '/editor/tiny_mce/plugins/charmap/classes',
$site . '/editor/tiny_mce/plugins/cleanup/classes',
$site . '/editor/tiny_mce/plugins/clipboard/classes',
$site . '/editor/tiny_mce/plugins/code/classes',
$site . '/editor/tiny_mce/plugins/colorpicker/classes',
$site . '/editor/tiny_mce/plugins/emotions/classes',
$site . '/editor/tiny_mce/plugins/filemanager/classes',
$site . '/editor/tiny_mce/plugins/fontcolor/classes',
$site . '/editor/tiny_mce/plugins/fontselect/classes',
$site . '/editor/tiny_mce/plugins/fontsizeselect/classes',
$site . '/editor/tiny_mce/plugins/format/classes',
$site . '/editor/tiny_mce/plugins/formatselect/classes',
$site . '/editor/tiny_mce/plugins/iframe/classes',
$site . '/editor/tiny_mce/plugins/imgmanager/classes',
$site . '/editor/tiny_mce/plugins/imgmanager_ext/classes',
$site . '/editor/tiny_mce/plugins/inlinepopups/classes',
$site . '/editor/tiny_mce/plugins/link/classes',
$site . '/editor/tiny_mce/plugins/media/classes',
$site . '/editor/tiny_mce/plugins/mediamanager/classes',
$site . '/editor/tiny_mce/plugins/microdata/classes',
$site . '/editor/tiny_mce/plugins/preview/classes',
$site . '/editor/tiny_mce/plugins/searchreplace/classes',
$site . '/editor/tiny_mce/plugins/source/classes',
$site . '/editor/tiny_mce/plugins/style/classes',
$site . '/editor/tiny_mce/plugins/styleselect/classes',
$site . '/editor/tiny_mce/plugins/tabfocus/classes',
$site . '/editor/tiny_mce/plugins/table/classes',
$site . '/editor/tiny_mce/plugins/templatemanager/classes',
$site . '/editor/tiny_mce/plugins/textpattern/classes',
$site . '/editor/tiny_mce/plugins/visualblocks/classes',
$site . '/editor/tiny_mce/plugins/visualchars/classes',
$site . '/editor/tiny_mce/plugins/xhtmlxtras/classes',
);
// remove flexicontent
if (!JComponentHelper::isInstalled('com_flexicontent')) {
$files['2.7'] = array(
$site . '/editor/extensions/links/flexicontentlinks.php',
$site . '/editor/extensions/links/flexicontentlinks.xml',
);
$folders['2.7'] = array(
$site . '/editor/extensions/links/flexicontentlinks'
);
}
// remove inlinepopups
$folders['2.7.13'] = array(
$site . '/editor/tiny_mce/plugins/inlinepopups',
);
// remove classpath / classbar
$folders['2.8.0'] = array(
$site . '/editor/tiny_mce/plugins/classpath',
$site . '/editor/tiny_mce/plugins/classbar',
);
// remove help files
$folders['2.8.6'] = array(
$admin . '/views/help'
);
// remove mediaplayer
$folders['2.8.11'] = array(
$site . '/editor/libraries/mediaplayer'
);
// delete img folder in Image Manager Extended
$folders['2.9.1'] = array(
$site . '/editor/tiny_mce/plugins/imgmanager_ext/img'
);
// remove fields folder
$folders['2.9.7'] = array(
JPATH_PLUGINS . '/system/jce/fields'
);
// remove media folder
$folders['2.9.17'] = array(
$admin . '/media'
);
$folders['2.9.31'] = array(
);
// remove font manifest and window
$files['2.9.18'] = array(
$site . '/editor/libraries/fonts/selection.json',
$site . '/editor/tiny_mce/plugins/browser/js/window.min.js'
);
$files['2.6.38'] = array(
$admin . '/install.php',
$admin . '/install.script.php',
// controller
$admin . '/controller/preferences.php',
$admin . '/controller/popups.php',
$admin . '/controller/updates.php',
// helpers
$admin . '/helpers/cacert.pem',
$admin . '/helpers/editor.php',
$admin . '/helpers/toolbar.php',
$admin . '/helpers/updates.php',
$admin . '/helpers/xml.php',
// includes
$admin . '/includes/loader.php',
// css
$admin . '/media/css/cpanel.css',
$admin . '/media/css/legacy.min.css',
$admin . '/media/css/module.css',
$admin . '/media/css/preferences.css',
$admin . '/media/css/updates.css',
$admin . '/media/css/users.css',
// js
$admin . '/media/js/cpanel.js',
$admin . '/media/js/jce.js',
$admin . '/media/js/preferences.js',
$admin . '/media/js/updates.js',
$admin . '/media/js/users.js',
// models
$admin . '/models/commands.json',
$admin . '/models/config.xml',
$admin . '/models/cpanel.xml',
$admin . '/models/model.php',
$admin . '/models/plugins.json',
$admin . '/models/plugins.php',
$admin . '/models/preferences.php',
$admin . '/models/preferences.xml',
$admin . '/models/pro.json',
$admin . '/models/updates.php',
$admin . '/models/users.php',
// views
$admin . '/views/cpanel/tmpl/default_pro_footer.php',
$admin . '/views/profiles/tmpl/form_editor.php',
$admin . '/views/profiles/tmpl/form_features.php',
$admin . '/views/profiles/tmpl/form_plugin.php',
$admin . '/views/profiles/tmpl/form_setup.php',
$admin . '/views/profiles/tmpl/form.php',
// site - extensions
$site . '/editor/extensions/aggregator/vine.php',
$site . '/editor/extensions/aggregator/vine.xml',
$site . '/editor/extensions/popups/window.php',
$site . '/editor/extensions/popups/window.xml',
// site - libraries
$site . '/editor/libraries/classes/token.php',
// site - fonts
$site . '/editor/libraries/fonts/fontawesome-webfont.eot',
$site . '/editor/libraries/fonts/fontawesome-webfont.woff',
// sites - img
$site . '/editor/libraries/img/cloud.png',
$site . '/editor/libraries/img/power.png',
$site . '/editor/libraries/img/spacer.gif',
// site - tinymce plugins
$site . '/editor/tiny_mce/plugins/caption/licence.txt',
$site . '/editor/tiny_mce/plugins/caption/README',
$site . '/editor/tiny_mce/plugins/iframe/licence.txt',
$site . '/editor/tiny_mce/plugins/imgmanager_ext/install.php',
$site . '/editor/tiny_mce/plugins/imgmanager_ext/licence.txt',
$site . '/editor/tiny_mce/plugins/imgmanager_ext/README',
$site . '/editor/tiny_mce/plugins/mediamanager/README',
$site . '/editor/tiny_mce/plugins/spellchecker/classes/config.php',
$site . '/editor/tiny_mce/plugins/templatemanager/licence.txt',
$site . '/editor/tiny_mce/plugins/templatemanager/README',
);
// remove help files
$files['2.8.6'] = array(
$admin . '/controller/help.php',
$admin . '/models/help.php'
);
$files['2.8.11'] = array(
$admin . '/views/cpanel/default_pro.php'
);
foreach ($folders as $version => $list) {
// version check
if (version_compare($version, $current_version, 'gt')) {
continue;
}
foreach ($list as $folder) {
if (!@is_dir($folder)) {
continue;
}
$items = JFolder::files($folder, '.', false, true, array(), array());
foreach ($items as $file) {
if (!@unlink($file)) {
try {
JFile::delete($file);
} catch (Exception $e) {}
}
}
$items = JFolder::folders($folder, '.', false, true, array(), array());
foreach ($items as $dir) {
if (!@rmdir($dir)) {
try {
JFolder::delete($dir);
} catch (Exception $e) {}
}
}
if (!@rmdir($folder)) {
try {
JFolder::delete($folder);
} catch (Exception $e) {}
}
}
}
foreach ($files as $version => $list) {
// version check
if (version_compare($version, $current_version, 'gt')) {
continue;
}
foreach ($list as $file) {
if (!@file_exists($file)) {
continue;
}
if (@unlink($file)) {
continue;
}
try {
JFile::delete($file);
} catch (Exception $e) {}
}
}
}
}

View File

@@ -0,0 +1,551 @@
<?php
/**
* JCH Optimize - Aggregate and minify external resources for optmized downloads
*
* @author Samuel Marshall <sdmarshall73@gmail.com>
* @copyright Copyright (c) 2010 Samuel Marshall
* @license GNU/GPLv3, See LICENSE file
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* If LICENSE file missing, see <http://www.gnu.org/licenses/>.
*/
// Protect from unauthorized access
use JchOptimize\ContainerFactory;
use JchOptimize\Core\Admin\Helper as AdminHelper;
use JchOptimize\Core\Admin\Tasks;
use JchOptimize\GetApplicationTrait;
use JchOptimize\Model\OrderPlugins;
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Installer\Adapter\PackageAdapter;
use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Installer\InstallerScript;
use Joomla\CMS\Log\Log;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\MVC\Factory\LegacyFactory;
use Joomla\CMS\MVC\Factory\MVCFactory;
use Joomla\Component\Plugins\Administrator\Model\PluginModel;
use Joomla\Filesystem\File;
use Joomla\Utilities\ArrayHelper;
defined('_JEXEC') or die;
class Pkg_JchoptimizeInstallerScript extends InstallerScript
{
/**
* The primary field of the paramTable
*
* @var string
*/
protected $primaryKey = 'extension_id';
/**
* The minimum PHP version required to install this extension
*
* @var string
*/
protected $minimumPhp = '7.4.0';
/**
* The minimum Joomla! version required to install this extension
*
* @var string
*/
protected $minimumJoomla = '3.10.0';
/**
* The maximum Joomla! version this extension can be installed on
*
* @var string
*/
protected $allowDowngrades = true;
/**
* A list of extensions (modules, plugins) to enable after installation. Each item has four values, in this order:
* type (plugin, module, ...), name (of the extension), client (0=site, 1=admin), group (for plugins).
*
* @var array
*/
protected $extensionsToEnable = [
'plg_system_jchoptimize',
'plg_user_jchoptimizeuserstate',
'mod_jchmodeswitcher'
];
/**
* Joomla! pre-flight event. This runs before Joomla! installs or updates the package. This is our last chance to
* tell Joomla! if it should abort the installation.
*
* In here we'll try to install FOF. We have to do that before installing the component since it's using an
* installation script extending FOF's InstallScript class. We can't use a <file> tag in the manifest to install FOF
* since the FOF installation is expected to fail if a newer version of FOF is already installed on the site.
*
* @param string $type Installation type (install, update, discover_install)
* @param PackageAdapter $parent Parent object
*
* @return boolean True to let the installation proceed, false to halt the installation
*/
public function preflight($type, $parent): bool
{
if (!parent::preflight($type, $parent)) {
return false;
}
if ($type === 'uninstall') {
return true;
}
$manifest = $parent->getManifest();
$newVariant = (string)$manifest->variant;
$files = [];
$files[] = JPATH_ADMINISTRATOR . '/manifests/packages/pkg_jchoptimize.xml';
$files[] = JPATH_ADMINISTRATOR . '/manifests/packages/pkg_jch_optimize.xml';
foreach ($files as $file) {
if (file_exists($file)) {
$xml = simplexml_load_file($file);
$oldVariant = (string)$xml->variant;
if ($oldVariant == 'PRO' && $newVariant == 'FREE') {
$msg = '<p>You are trying to install the FREE version of JCH Optimize, but you currently have the PRO version installed. You must uninstall the PRO version first before you can install the FREE version.</p>';
Log::add($msg, Log::WARNING, 'jerror');
return false;
}
break;
}
}
return true;
}
/**
* Runs after install, update or discover_update. In other words, it executes after Joomla! has finished installing
* or updating your component. This is the last chance you've got to perform any additional installations, clean-up,
* database updates and similar housekeeping functions.
*
* @param string $type install, update or discover_update
* @param PackageAdapter $parent Parent object
*/
public function postflight(string $type, PackageAdapter $parent)
{
if ($type == 'uninstall') {
return;
}
$this->removeOldJchOptimizePackage();
$installer = new Installer();
if (version_compare(JVERSION, '4.0', '<')) {
//Uninstall console plugin on joomla3
$ids = $this->getInstances(false, 'plg_console_jchoptimize');
if (!empty($ids)) {
$id = $ids[0];
$installer->uninstall('plugin', $id);
}
} else {
//Uninstall cli scripts on joomla4
$ids = $this->getInstances(false, 'file_jchoptimize');
if (!empty($ids)) {
$id = $ids[0];
$installer->uninstall('file', $id);
}
$this->enableExtension('plg_console_jchoptimize');
}
if ($type == 'update') {
/**
* Clean up the obsolete package update sites.
*
* If you specify a new update site location in the XML manifest Joomla will install it in the #__update_sites
* table but it will NOT remove the previous update site. This method removes the old update sites which are
* left behind by Joomla.
*/
$this->removeObsoleteUpdateSites();
//Delete static cache files
try {
$staticCacheFolder = JPATH_ROOT . '/media/com_jchoptimize/cache';
if (file_exists($staticCacheFolder)) {
Folder::delete($staticCacheFolder);
}
} catch (Throwable $e) {
//Don't cry
}
//File changes can occur between versions. Let us dare to reset opcache
// to avoid issues
if (function_exists('opcache_reset')) {
opcache_reset();
}
clearstatcache();
}
//Let's try to load the autoloader if not already loaded
$filePath = JPATH_ADMINISTRATOR . '/components/com_jchoptimize/autoload.php';
if (file_exists($filePath) && is_readable($filePath)) {
include($filePath);
//We may have to individually load classes added in this version; If autoloader runs already
//they wouldn't be included.
$classMap = [
GetApplicationTrait::class => JPATH_ADMINISTRATOR . '/components/com_jchoptimize/lib/src/GetApplicationTrait.php',
];
foreach ($classMap as $class => $file) {
if (!class_exists($class) && file_exists($file)) {
include_once($file);
}
}
//leverage browser caching
Tasks::leverageBrowserCaching();
if (class_exists(ContainerFactory::class)) {
//Order plugins
$container = ContainerFactory::getNewContainerInstance();
/** @see OrderPlugins::orderPlugins() */
$container->get(OrderPlugins::class)->orderPlugins();
}
}
$this->fixMetaFileSecurityIssue();
}
private function removeOldJchOptimizePackage()
{
//Get id of old package
$packageIds = $this->getInstances(false, 'pkg_jch_optimize');
if (empty($packageIds)) {
return;
}
$packageId = (int)$packageIds[0];
//Get id of new component
$componentIds = $this->getInstances(false, 'com_jchoptimize');
if (empty($componentIds)) {
return;
}
$componentId = (int)$componentIds[0];
//Get id of old plugin
$pluginIds = $this->getInstances(false, 'plg_system_jch_optimize');
if (empty($pluginIds)) {
return;
}
$pluginId = (int)$pluginIds[0];
//Get plugin parameters
$pluginParams = $this->getItemArray('params', '#__extensions', 'extension_id', $pluginId);
//Transfer settings to new component
try {
$this->setParams($pluginParams, 'edit', $componentId);
} catch (\Exception $e) {
$msg = "<p>We weren't able to transfer the settings from the plugin to the component. You may have to reconfigure JCH Optimize.</p>";
Log::add($msg, Log::WARNING, 'jerror');
}
//Uninstall old package
try {
$installer = new Installer();
$installer->uninstall('package', $packageId);
} catch (Exception $e) {
$msg = "<p>We weren't able to uninstall the previous version of JCH Optimize. You'll need to do that from the Extensions Manager.</p>";
Log::add($msg, Log::WARNING, 'jerror');
}
}
/**
* Removes the obsolete update sites for the component, since now we're dealing with a package.
*
* Controlled by componentName, packageName and obsoleteUpdateSiteLocations
*
* Depends on getExtensionId, getUpdateSitesFor
*
* @return void
*/
private function removeObsoleteUpdateSites()
{
// Get package ID
$packageIds = $this->getInstances(false);
if (empty($packageIds)) {
return;
}
$packageID = $packageIds[0];
// All update sites for the package
$deleteIDs = $this->getUpdateSitesFor($packageID);
if (empty($deleteIDs)) {
$deleteIDs = [];
}
if (count($deleteIDs) <= 1) {
return;
}
$deleteIDs = array_unique($deleteIDs);
// Remove the latest update site, the one we just installed
array_pop($deleteIDs);
$db = Factory::getDbo();
if (empty($deleteIDs) || !count($deleteIDs)) {
return;
}
// Delete the remaining update sites
$deleteIDs = array_map([$db, 'q'], $deleteIDs);
$query = $db->getQuery(true)
->delete($db->qn('#__update_sites'))
->where($db->qn('update_site_id') . ' IN(' . implode(',', $deleteIDs) . ')');
try {
$db->setQuery($query)->execute();
} catch (Exception $e) {
// Do nothing.
}
$query = $db->getQuery(true)
->delete($db->qn('#__update_sites_extensions'))
->where($db->qn('update_site_id') . ' IN(' . implode(',', $deleteIDs) . ')');
try {
$db->setQuery($query)->execute();
} catch (Exception $e) {
// Do nothing.
}
}
/**
* Returns the update site IDs for the specified Joomla Extension ID.
*
* @param int $eid Extension ID for which to retrieve update sites
*
* @return array The IDs of the update sites
*/
private function getUpdateSitesFor($eid = null)
{
$db = Factory::getDbo();
$query = $db->getQuery(true)
->select($db->qn('s.update_site_id'))
->from($db->qn('#__update_sites', 's'))
->innerJoin(
$db->qn('#__update_sites_extensions', 'e') . 'ON(' . $db->qn('e.update_site_id') .
' = ' . $db->qn('s.update_site_id') . ')'
)
->where($db->qn('e.extension_id') . ' = ' . $db->q($eid));
try {
$ret = $db->setQuery($query)->loadColumn();
} catch (Exception $e) {
return [];
}
return empty($ret) ? [] : $ret;
}
/**
* Runs on installation (but not on upgrade). This happens in install and discover_install installation routes.
*
* @param \JInstallerAdapterPackage $parent Parent object
*
* @return bool
*/
public function install($parent)
{
// Enable the extensions we need to install
$this->enableExtensions();
return true;
}
/**
* Enable modules and plugins after installing them
*/
private function enableExtensions()
{
foreach ($this->extensionsToEnable as $ext) {
$this->enableExtension($ext);
}
}
/**
* Enable an extension
*
* @param null $extension
*/
private function enableExtension($extension = null)
{
$extension = $extension ?? $this->extension;
$ids = $this->getInstances(false, $extension);
if (empty($ids)) {
return;
}
$id = (int)$ids[0];
try {
$db = Factory::getDbo();
$query = $db->getQuery(true)
->update('#__extensions')
->set($db->quoteName('enabled') . ' = ' . $db->quote(1))
->where($db->quoteName('extension_id') . ' = ' . $db->quote($id));
$db->setQuery($query)->execute();
} catch (\Exception $e) {
}
}
/**
* Gets each instance of a module in the #__modules table or extension in the #__extensions table
*
* @param boolean $isModule True if the extension is a module as this can have multiple instances
* @param string $extension Name of extension to find instance of
*
* @return array An array of ID's of the extension
*
* @since 3.6
*/
public function getInstances($isModule, $extension = null)
{
$extension = $extension ?? $this->extension;
$db = Factory::getDbo();
$query = $db->getQuery(true);
// Select the item(s) and retrieve the id
if ($isModule) {
$query->select($db->quoteName('id'));
$query->from($db->quoteName('#__modules'))
->where($db->quoteName('module') . ' = ' . $db->quote($extension));
} else {
$query->select($db->quoteName('extension_id'));
$query->from($db->quoteName('#__extensions'));
//Special handling for plugins, we extract the element and folder from the extension name
$parts = explode('_', $extension, 3);
if (count($parts) == 3 && $parts[0] == 'plg') {
$extension = $parts[2];
$folder = $parts[1];
$query->where($db->quoteName('folder') . ' = ' . $db->quote($folder));
}
$query->where($db->quoteName('element') . ' = ' . $db->quote($extension));
}
// Set the query and obtain an array of id's
return $db->setQuery($query)->loadColumn();
}
/**
* Sets parameter values in the extensions row of the extension table. Note that the
* this must be called separately for deleting and editing. Note if edit is called as a
* type then if the param doesn't exist it will be created
*
* @param array $paramArray The array of parameters to be added/edited/removed
* @param string $type The type of change to be made to the param (edit/remove)
* @param integer $id The id of the item in the relevant table
*
* @return boolean True on success
*
* @since 3.6
*/
public function setParams($paramArray = null, $type = 'edit', $id = 0)
{
if (!\is_int($id) || $id == 0) {
// Return false if there is no valid item given
return false;
}
$params = $this->getItemArray('params', $this->paramTable, $this->primaryKey, $id);
if ($paramArray) {
foreach ($paramArray as $name => $value) {
if ($type === 'edit') {
// Add or edit the new variable(s) to the existing params
if (\is_array($value)) {
// Convert an array into a json encoded string
$params[(string)$name] = array_values($value);
} else {
$params[(string)$name] = (string)$value;
}
} elseif ($type === 'remove') {
// Unset the parameter from the array
unset($params[(string)$name]);
}
}
}
// Store the combined new and existing values back as a JSON string
$paramsString = json_encode($params);
$db = Factory::getDbo();
$query = $db->getQuery(true)
->update($db->quoteName($this->paramTable))
->set($db->quoteName('params') . ' = ' . $db->quote($paramsString))
->where($db->quoteName($this->primaryKey) . ' = ' . $db->quote($id));
// Update table
$db->setQuery($query)->execute();
return true;
}
/**
* The full paths to optimized files were added to the metafile, that was available from the internet. this
* function corrects that.
*
* @return void
*/
private function fixMetaFileSecurityIssue(): void
{
$metaFile = AdminHelper::getMetaFile();
$metaFileDir = dirname($metaFile);
if (file_exists($metaFile)
&& (!file_exists($metaFileDir . '/index.html')
|| !file_exists($metaFileDir . '/.htaccess'))
) {
/** @var string[] $optimizedFiles */
$optimizedFiles = AdminHelper::getOptimizedFiles();
File::delete($metaFile);
foreach ($optimizedFiles as $files) {
AdminHelper::markOptimized($files);
}
}
}
}

View File

@@ -0,0 +1,78 @@
<?php
/**
* @package JLSitemap Package
* @version 1.12.0
* @author Joomline - joomline.ru
* @copyright Copyright (c) 2010 - 2022 Joomline. All rights reserved.
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
* @link https://joomline.ru/
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Version;
class pkg_jlsitemapInstallerScript
{
/**
* Minimum PHP version required to install the extension
*
* @var string
*
* @since 1.4.0
*/
protected $minimumPhp = '5.6';
/**
* Minimum Joomla! version required to install the extension
*
* @var string
*
* @since 1.4.0
*/
protected $minimumJoomla = '3.9.0';
/**
* Method to check compatible.
*
* @throws Exception
*
* @since 1.4.0
*/
function preflight()
{
// Check old Joomla!
if (!class_exists('Joomla\CMS\Version'))
{
JFactory::getApplication()->enqueueMessage(JText::sprintf('PKG_JLSITEMAP_ERROR_COMPATIBLE_JOOMLA',
$this->minimumJoomla), 'error');
return false;
}
$app = Factory::getApplication();
$jversion = new Version();
// Check PHP
if (!(version_compare(PHP_VERSION, $this->minimumPhp) >= 0))
{
$app->enqueueMessage(Text::sprintf('PKG_JLSITEMAP_ERROR_COMPATIBLE_PHP',
$this->minimumPhp), 'error');
return false;
}
// Check Joomla version
if (!$jversion->isCompatible($this->minimumJoomla))
{
$app->enqueueMessage(Text::sprintf('PKG_JLSITEMAP_ERROR_COMPATIBLE_JOOMLA',
$this->minimumJoomla), 'error');
return false;
}
return true;
}
}

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!--~
~ @package akeebabackup
~ @copyright Copyright (c)2006-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
~ @license GNU General Public License version 3, or later
-->
<extension type="package" method="upgrade">
<name>pkg_akeebabackup</name>
<author>Nicholas K. Dionysopoulos</author>
<creationDate>2022-11-30</creationDate>
<packagename>akeebabackup</packagename>
<version>9.4.4</version>
<url>https://www.akeeba.com</url>
<packager>Akeeba Ltd</packager>
<packagerurl>https://www.akeeba.com</packagerurl>
<copyright>Copyright (c)2006-2022 Akeeba Ltd / Nicholas K. Dionysopoulos</copyright>
<license>GNU GPL v3 or later</license>
<description>PKG_AKEEBABACKUP_XML_DESCRIPTION</description>
<files>
<file type="component" id="com_akeebabackup">com_akeebabackup-core.zip</file>
<file type="plugin" group="quickicon" id="akeebabackup">plg_quickicon_akeebabackup.zip</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/pkg_akeebabackup.sys.ini</language>
</languages>
<scriptfile>script.akeebabackup.php</scriptfile>
<updateservers>
<server type="extension" priority="1" name="Akeeba Backup Core for Joomla!">https://cdn.akeeba.com/updates/pkgakeebabackupcore.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<packagename>cachecleaner</packagename>
<name>PKG_CACHECLEANER</name>
<version>8.2.2</version>
<creationDate>October 2022</creationDate>
<author>Regular Labs (Peter van Westen)</author>
<authorEmail>info@regularlabs.com</authorEmail>
<authorUrl>https://regularlabs.com</authorUrl>
<copyright>Copyright © 2022 Regular Labs - All Rights Reserved</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<scriptfile>script.install.php</scriptfile>
<blockChildUninstall>true</blockChildUninstall>
<files folder="packages/j4">
<file type="module" position="status" client="administrator" id="mod_cachecleaner">mod_cachecleaner</file>
<file type="plugin" group="system" id="cachecleaner">plg_system_cachecleaner</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_cachecleaner.sys.ini</language>
</languages>
<updateservers>
<server type="extension" priority="1" name="Cache Cleaner">https://download.regularlabs.com/updates.xml?e=cachecleaner&amp;type=.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<name>English (en-GB) Language Pack</name>
<packagename>en-GB</packagename>
<version>4.4.14.1</version>
<creationDate>2025-09</creationDate>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<copyright>(C) 2019 Open Source Matters, Inc.</copyright>
<license>https://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<url>https://github.com/joomla/joomla-cms</url>
<packager>Joomla! Project</packager>
<packagerurl>www.joomla.org</packagerurl>
<description><![CDATA[en-GB language pack]]></description>
<blockChildUninstall>true</blockChildUninstall>
<files>
<folder type="language" client="site" id="en-GB">language/en-GB</folder>
<folder type="language" client="administrator" id="en-GB">administrator/language/en-GB</folder>
<folder type="language" client="api" id="en-GB">api/language/en-GB</folder>
</files>
<updateservers>
<server type="collection" priority="1" name="Accredited Joomla! Translations">
https://update.joomla.org/language/translationlist_4.xml
</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<name>English (en-US) Language Pack</name>
<packagename>en-US</packagename>
<version>4.3.1.1</version>
<creationDate>2023-05</creationDate>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<copyright>(C) 2019 Open Source Matters, Inc.</copyright>
<license>https://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<url>https://github.com/joomla/joomla-cms</url>
<packager>Joomla! Project</packager>
<packagerurl>www.joomla.org</packagerurl>
<description><![CDATA[en-US language pack]]></description>
<blockChildUninstall>true</blockChildUninstall>
<files>
<folder type="language" client="site" id="en-US">language/en-US</folder>
<folder type="language" client="administrator" id="en-US">administrator/language/en-US</folder>
<folder type="language" client="api" id="en-US">api/language/en-US</folder>
</files>
<updateservers>
<server type="collection" priority="1" name="Accredited Joomla! Translations">
https://update.joomla.org/language/translationlist_4.xml
</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="package" method="upgrade">
<name>Package - miniOrange Import Export Users</name>
<packagename>importexportusers</packagename>
<license>GNU/GPLv3</license>
<version>2.9</version>
<author>miniOrange Security Software Pvt. Ltd.</author>
<authorEmail>info@xecurify.com</authorEmail>
<creationDate>May 2022</creationDate>
<description>miniOrange Import Export Users Installed Successfully!</description>
<files>
<file type="plugin" id="miniorangeimportexportusers" group="system">plg_system_miniorangeimportexportusers.zip</file>
<file type="component" id="miniorange_importexportusers" >com_miniorange_importexportusers.zip</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_miniorangeimportexportusers.ini</language>
<language tag="en-GB">en-GB/en-GB.pkg_miniorangeimportexportusers.sys.ini</language>
</languages>
<scriptfile>pkg_script.php</scriptfile>
<updateservers>
<server type="extension" priority="1" name="ImportExportUsers">https://prod-marketing-site.s3.amazonaws.com/plugins/joomla/joomla_importexportusers_update.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" version="3.0" method="upgrade">
<name>J2XML 3.9</name>
<packagename>j2xml</packagename>
<description><![CDATA[J2XML 3.9 the ultimate solution to share content for Joomla! 3.x & 4.x]]></description>
<author>Helios Ciancio</author>
<authorEmail>info (at) eshiol (dot) it</authorEmail>
<authorUrl>www.eshiol.it</authorUrl>
<creationDate>06 March 2023</creationDate>
<copyright><![CDATA[(C) 2010 - 2023 Helios Ciancio. All Rights Reserved.]]></copyright>
<license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL v3</license>
<version>3.9.229-rc1</version>
<url>https://www.eshiol.it</url>
<packager>Helios Ciancio</packager>
<packagerurl>https://www.eshiol.it/</packagerurl>
<files>
<folder type="library" id="j2xml">lib_eshiol_J2xml.zip</folder>
<folder type="component" id="j2xml">com_j2xml.zip</folder>
<folder type="plugin" id="j2xml" group="system">plg_system_j2xml.zip</folder>
<folder type="library" id="phpxmlrpc">lib_eshiol_phpxmlrpc.zip</folder>
<folder type="plugin" id="basicauth" group="system">plg_system_basicauth.zip</folder>
<!--
<folder type="file" id="j2xml">cli_j2xml.zip</folder>
-->
</files>
</extension>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<extension type="package" version="3.9" method="upgrade">
<name>PKG_JCE</name>
<author>Ryan Demmer</author>
<creationDate>01-11-2022</creationDate>
<packagename>jce</packagename>
<version>2.9.32</version>
<url>https://www.joomlacontenteditor.net</url>
<packager>Widget Factory Limited</packager>
<packagerurl>https://www.joomlacontenteditor.net</packagerurl>
<description>PKG_JCE_XML_DESCRIPTION</description>
<updateservers>
<server type="extension" priority="1" name="JCE Editor Package">
<![CDATA[https://cdn.joomlacontenteditor.net/updates/xml/editor/pkg_jce.xml]]>
</server>
</updateservers>
<scriptfile>install.pkg.php</scriptfile>
<files folder="packages">
<file type="component" id="com_jce">com_jce.zip</file>
<file type="plugin" id="jce" group="editors">plg_editors_jce.zip</file>
<file type="plugin" id="jce" group="content">plg_content_jce.zip</file>
<file type="plugin" id="jce" group="extension">plg_extension_jce.zip</file>
<file type="plugin" id="mediajce" group="fields">plg_fields_mediajce.zip</file>
<file type="plugin" id="jce" group="installer">plg_installer_jce.zip</file>
<file type="plugin" id="jce" group="quickicon">plg_quickicon_jce.zip</file>
<file type="plugin" id="jce" group="system">plg_system_jce.zip</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_jce.sys.ini</language>
</languages>
<variant>core</variant>
<compatibility>
<version>3</version>
<version>4</version>
</compatibility>
</extension>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<extension type="package" version="3.10" method="upgrade">
<name>pkg_jchoptimize</name>
<author>Samuel Marshall</author>
<creationDate>2023-08-09</creationDate>
<packagename>jchoptimize</packagename>
<version>8.0.6</version>
<url>https://www.jch-optimize.net</url>
<packager>JCH Optimize</packager>
<description>JCH Optimize installation package version 8.0.6</description>
<variant>FREE</variant>
<files>
<file type="component" client="administrator" id="com_jchoptimize">com_jchoptimize-core.zip</file>
<file type="plugin" id="jchoptimize" group="system">plg_system_jchoptimize.zip</file>
<file type="plugin" id="jchoptimizepagecache" group="system">plg_system_jchoptimizepagecache.zip</file>
</files>
<scriptfile>script.jchoptimize.php</scriptfile>
<updateservers>
<server type="extension" priority="1" name="JCH Optimize Updates">https://updates.jch-optimize.net/joomla-core.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="package" method="upgrade">
<name>PKG_JLSITEMAP</name>
<packagename>jlsitemap</packagename>
<author>Joomline</author>
<creationDate>13.04.2022</creationDate>
<copyright>Copyright (c) 2010 - 2022 Joomline. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>sale@joomline.ru</authorEmail>
<authorUrl>https://joomline.ru/</authorUrl>
<version>1.12.0</version>
<description>PKG_JLSITEMAP_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_jlsitemap.sys.ini</language>
<language tag="ru-RU">ru-RU/ru-RU.pkg_jlsitemap.sys.ini</language>
</languages>
<files>
<folder type="component" id="com_jlsitemap">com_jlsitemap</folder>
<folder type="plugin" group="jlsitemap" id="contact">plg_jlsitemap_contact</folder>
<folder type="plugin" group="jlsitemap" id="content">plg_jlsitemap_content</folder>
<folder type="plugin" group="jlsitemap" id="k2">plg_jlsitemap_k2</folder>
<folder type="plugin" group="jlsitemap" id="kunena">plg_jlsitemap_kunena</folder>
<folder type="plugin" group="jlsitemap" id="tags">plg_jlsitemap_tags</folder>
<folder type="plugin" group="jlsitemap" id="virtuemart">plg_jlsitemap_virtuemart</folder>
<folder type="plugin" group="system" id="jlsitemap_cron">plg_system_jlsitemap_cron</folder>
</files>
<updateservers>
<server type="extension" priority="1" name="JL Sitemap">
https://joomline.net/update.html?extension_id=2.xml
</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<name>Pakiet języka polskiego (pl-PL)</name>
<packagename>pl-PL</packagename>
<version>4.2.8.2</version>
<creationDate>03.03.2023</creationDate>
<author>Projekt Joomla!</author>
<authorEmail>zwiastun@joomla.pl</authorEmail>
<authorUrl>https://www.joomla.pl</authorUrl>
<copyright>Copyright (C) 2005 - 2023 Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License wersja 2 lub późniejsza, zobacz LICENSE.txt</license>
<url>https://www.joomla.pl</url>
<packager>Polskie Centrum Joomla</packager>
<packagerurl>https://www.joomla.pl</packagerurl>
<description> <![CDATA[
<div class="text-center span12">
<h3>Joomla! - pakiet języka polskiego - 4.2.8</h3>
<p><span style="font-weight: normal">Polskie Centrum Joomla zapewnia społeczności kompletne tłumaczenia Joomla!<br />Ich przygotowanie kosztuje wiele czasu i pracy.</span></p>
<div class="alert alert-info">
<h3>Wspieramy Ciebie, więc wesprzyj i nas.</h3>
<p>Przekaż darowiznę na stronie <a class="btn btn-info" href="https://fundacja.joomla.pl/darowizna" target="_blank">Fundacji PCJ Otwarte Źródła</a></p>
<p>&nbsp;</p>
<h3>Dziękujemy</h3>
<p>Od 5 stycznia 2023 roku otrzymaliśmy 5 darowizn (4 od osób prywatnych i 1 od firm) darowizn na kwotę 380 PLN. Serdeczne podziękowania dla darczyńców: Łukasz G., Szuwar K., Mariusz R., Artur S., Janusz S. <strong>oraz firma:</strong> Cedrowa Grupa.</p>
</div>
</div>
]]>
</description>
<blockChildUninstall>true</blockChildUninstall>
<scriptfile>script.php</scriptfile>
<files>
<file type="language" client="site" id="pl-PL">site_pl-PL.zip</file>
<file type="language" client="administrator" id="pl-PL">admin_pl-PL.zip</file>
<file type="language" client="api" id="pl-PL">api_pl-PL.zip</file>
</files>
<updateservers>
<server type="collection" priority="1" name="Akredytowane tłumaczenia Joomla!">
https://update.joomla.org/language/translationlist_4.xml
</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.*" type="package" method="upgrade">
<name>PKG_QUANTUMMANAGER</name>
<packagename>quantummanager</packagename>
<author>Tsymbal</author>
<creationDate>16.05.2019</creationDate>
<copyright>Copyright © 2019 Delo Design &amp; NorrNext. All rights reserved.</copyright>
<license>GNU General Public License version 3 or later; see license.txt</license>
<authorEmail>cymbal@delo-design.ru</authorEmail>
<authorUrl>https://www.norrnext.com</authorUrl>
<version>2.0.2</version>
<description>PKG_QUANTUMMANAGER_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_quantummanager.ini</language>
<language tag="en-GB">en-GB/en-GB.pkg_quantummanager.sys.ini</language>
<language tag="ru-RU">ru-RU/ru-RU.pkg_quantummanager.ini</language>
<language tag="ru-RU">ru-RU/ru-RU.pkg_quantummanager.sys.ini</language>
</languages>
<files>
<file type="component" id="com_quantummanager">com_quantummanager.zip</file>
<file type="library" id="jinterventionimage">lib_jinterventionimage.zip</file>
<file type="library" id="jpel">lib_jpel.zip</file>
<file type="plugin" group="system" id="quantummanagermedia">plg_quantummanagermedia.zip</file>
<file type="plugin" group="system" id="quantumyoothemepro">plg_quantumyoothemepro.zip</file>
<file type="plugin" group="system" id="quantumspbuilder">plg_quantumspbuilder.zip</file>
<file type="plugin" group="editors-xtd" id="quantummanagerbutton">plg_quantummanagerbutton.zip</file>
<file type="plugin" group="content" id="quantummanagercontent">plg_quantummanagercontent.zip</file>
<file type="plugin" group="quickicon" id="quantummanagericon">plg_quantummanagericon.zip</file>
<file type="plugin" group="system" id="quantummanagerconfig">plg_quantummanagerconfig.zip</file>
<file type="plugin" group="system" id="quantummenus">plg_quantummenus.zip</file>
</files>
<updateservers>
<server type="extension" priority="1" name="Quantum Manager package">https://hika.su/update/free/pkg_quantummanager.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<packagename>regularlabs</packagename>
<name>PKG_REGULARLABS</name>
<version>23.9.16805</version>
<creationDate>September 2023</creationDate>
<author>Regular Labs (Peter van Westen)</author>
<authorEmail>info@regularlabs.com</authorEmail>
<authorUrl>https://regularlabs.com</authorUrl>
<copyright>Copyright © 2023 Regular Labs - All Rights Reserved</copyright>
<license>GNU General Public License version 2 or later</license>
<scriptfile>script.install.php</scriptfile>
<blockChildUninstall>true</blockChildUninstall>
<files folder="packages">
<file type="library" id="regularlabs">lib_regularlabs</file>
<file type="plugin" group="system" id="regularlabs">plg_system_regularlabs</file>
</files>
<updateservers>
<server type="extension" priority="1" name="Regular Labs Library">https://download.regularlabs.com/updates.xml?e=library&amp;type=.xml</server>
</updateservers>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_regularlabs.sys.ini</language>
</languages>
</extension>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<packagename>sourcerer</packagename>
<name>PKG_SOURCERER</name>
<version>9.4.1</version>
<creationDate>February 2023</creationDate>
<author>Regular Labs (Peter van Westen)</author>
<authorEmail>info@regularlabs.com</authorEmail>
<authorUrl>https://regularlabs.com</authorUrl>
<copyright>Copyright © 2023 Regular Labs - All Rights Reserved</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<scriptfile>script.install.php</scriptfile>
<blockChildUninstall>true</blockChildUninstall>
<files folder="packages/j4">
<file type="plugin" group="system" id="sourcerer">plg_system_sourcerer</file>
<file type="plugin" group="editors-xtd" id="sourcerer">plg_editors-xtd_sourcerer</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_sourcerer.sys.ini</language>
</languages>
<updateservers>
<server type="extension" priority="1" name="Sourcerer">https://download.regularlabs.com/updates.xml?e=sourcerer&amp;type=.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" method="upgrade">
<packagename>tabsaccordions</packagename>
<name>PKG_TABSACCORDIONS</name>
<version>2.0.0</version>
<creationDate>September 2023</creationDate>
<author>Regular Labs (Peter van Westen)</author>
<authorEmail>info@regularlabs.com</authorEmail>
<authorUrl>https://regularlabs.com</authorUrl>
<copyright>Copyright © 2023 Regular Labs - All Rights Reserved</copyright>
<license>GNU General Public License version 2 or later</license>
<scriptfile>script.install.php</scriptfile>
<blockChildUninstall>true</blockChildUninstall>
<files folder="packages/j4">
<file type="plugin" group="system" id="tabsaccordions">plg_system_tabsaccordions</file>
<file type="plugin" group="editors-xtd" id="tabsaccordions">plg_editors-xtd_tabsaccordions</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_tabsaccordions.sys.ini</language>
</languages>
<updateservers>
<server type="extension" priority="1" name="Tabs &amp; Accordions">https://download.regularlabs.com/updates.xml?e=tabsaccordions&amp;type=.xml</server>
</updateservers>
</extension>

View File

@@ -0,0 +1,433 @@
<?php
/**
* @package Joomla.Language
*
* @copyright (C) 2021 J!German <https://www.jgerman.de>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* modify dostosowanie do języka polskiego
*/
defined('_JEXEC') or die;
use Joomla\CMS\Installer\InstallerScript;
/**
* Installation class to perform additional changes during install/uninstall/update
*
* @since 4.0.0v1
*/
class Pkg_plPLInstallerScript extends InstallerScript
{
/**
* Extension script constructor.
*
* @since 4.0.0v1
*/
public function __construct()
{
// Define the minumum versions to be supported.
$this->minimumJoomla = '4.0';
$this->minimumPhp = '7.2.5';
$this->deleteFiles = [
// Backend
'/administrator/language/pl-PL/pl-PL.com_actionlogs.ini',
'/administrator/language/pl-PL/pl-PL.com_actionlogs.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_admin.ini',
'/administrator/language/pl-PL/pl-PL.com_admin.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_ajax.ini',
'/administrator/language/pl-PL/pl-PL.com_ajax.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_associations.ini',
'/administrator/language/pl-PL/pl-PL.com_associations.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_banners.ini',
'/administrator/language/pl-PL/pl-PL.com_banners.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_cache.ini',
'/administrator/language/pl-PL/pl-PL.com_cache.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_categories.ini',
'/administrator/language/pl-PL/pl-PL.com_categories.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_checkin.ini',
'/administrator/language/pl-PL/pl-PL.com_checkin.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_config.ini',
'/administrator/language/pl-PL/pl-PL.com_config.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_contact.ini',
'/administrator/language/pl-PL/pl-PL.com_contact.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_contenthistory.ini',
'/administrator/language/pl-PL/pl-PL.com_contenthistory.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_content.ini',
'/administrator/language/pl-PL/pl-PL.com_content.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_cpanel.ini',
'/administrator/language/pl-PL/pl-PL.com_cpanel.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_fields.ini',
'/administrator/language/pl-PL/pl-PL.com_fields.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_finder.ini',
'/administrator/language/pl-PL/pl-PL.com_finder.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_installer.ini',
'/administrator/language/pl-PL/pl-PL.com_installer.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_joomlaupdate.ini',
'/administrator/language/pl-PL/pl-PL.com_joomlaupdate.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_languages.ini',
'/administrator/language/pl-PL/pl-PL.com_languages.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_login.ini',
'/administrator/language/pl-PL/pl-PL.com_login.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_mailto.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_media.ini',
'/administrator/language/pl-PL/pl-PL.com_media.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_menus.ini',
'/administrator/language/pl-PL/pl-PL.com_menus.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_messages.ini',
'/administrator/language/pl-PL/pl-PL.com_messages.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_modules.ini',
'/administrator/language/pl-PL/pl-PL.com_modules.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_newsfeeds.ini',
'/administrator/language/pl-PL/pl-PL.com_newsfeeds.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_plugins.ini',
'/administrator/language/pl-PL/pl-PL.com_plugins.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_postinstall.ini',
'/administrator/language/pl-PL/pl-PL.com_postinstall.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_privacy.ini',
'/administrator/language/pl-PL/pl-PL.com_privacy.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_redirect.ini',
'/administrator/language/pl-PL/pl-PL.com_redirect.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_tags.ini',
'/administrator/language/pl-PL/pl-PL.com_tags.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_templates.ini',
'/administrator/language/pl-PL/pl-PL.com_templates.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_users.ini',
'/administrator/language/pl-PL/pl-PL.com_users.sys.ini',
'/administrator/language/pl-PL/pl-PL.com_wrapper.ini',
'/administrator/language/pl-PL/pl-PL.com_wrapper.sys.ini',
'/administrator/language/pl-PL/pl-PL.ini',
'/administrator/language/pl-PL/pl-PL.lib_joomla.ini',
'/administrator/language/pl-PL/pl-PL.localise.php',
'/administrator/language/pl-PL/pl-PL.mod_custom.ini',
'/administrator/language/pl-PL/pl-PL.mod_custom.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_feed.ini',
'/administrator/language/pl-PL/pl-PL.mod_feed.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_latestactions.ini',
'/administrator/language/pl-PL/pl-PL.mod_latestactions.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_latest.ini',
'/administrator/language/pl-PL/pl-PL.mod_latest.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_logged.ini',
'/administrator/language/pl-PL/pl-PL.mod_logged.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_login.ini',
'/administrator/language/pl-PL/pl-PL.mod_login.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_menu.ini',
'/administrator/language/pl-PL/pl-PL.mod_menu.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_multilangstatus.ini',
'/administrator/language/pl-PL/pl-PL.mod_multilangstatus.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_popular.ini',
'/administrator/language/pl-PL/pl-PL.mod_popular.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_privacy_dashboard.ini',
'/administrator/language/pl-PL/pl-PL.mod_privacy_dashboard.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_quickicon.ini',
'/administrator/language/pl-PL/pl-PL.mod_quickicon.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_sampledata.ini',
'/administrator/language/pl-PL/pl-PL.mod_sampledata.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_stats_admin.ini',
'/administrator/language/pl-PL/pl-PL.mod_stats_admin.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_status.ini',
'/administrator/language/pl-PL/pl-PL.mod_status.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_submenu.ini',
'/administrator/language/pl-PL/pl-PL.mod_submenu.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_title.ini',
'/administrator/language/pl-PL/pl-PL.mod_title.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_toolbar.ini',
'/administrator/language/pl-PL/pl-PL.mod_toolbar.sys.ini',
'/administrator/language/pl-PL/pl-PL.mod_version.ini',
'/administrator/language/pl-PL/pl-PL.mod_version.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_actionlog_joomla.ini',
'/administrator/language/pl-PL/pl-PL.plg_actionlog_joomla.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_cookie.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_cookie.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_gmail.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_gmail.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_joomla.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_joomla.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_ldap.ini',
'/administrator/language/pl-PL/pl-PL.plg_authentication_ldap.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_captcha_recaptcha.ini',
'/administrator/language/pl-PL/pl-PL.plg_captcha_recaptcha_invisible.ini',
'/administrator/language/pl-PL/pl-PL.plg_captcha_recaptcha_invisible.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_captcha_recaptcha.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_confirmconsent.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_confirmconsent.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_contact.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_contact.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_emailcloak.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_emailcloak.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_fields.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_fields.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_finder.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_finder.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_geshi.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_geshi.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_joomla.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_joomla.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_loadmodule.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_loadmodule.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_pagebreak.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_pagebreak.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_pagenavigation.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_pagenavigation.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_vote.ini',
'/administrator/language/pl-PL/pl-PL.plg_content_vote.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_codemirror.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_codemirror.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_none.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_none.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_tinymce.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors_tinymce.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_article.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_article.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_contact.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_contact.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_fields.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_fields.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_image.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_image.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_menu.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_menu.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_module.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_module.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_pagebreak.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_pagebreak.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_readmore.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_readmore.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_weblink.ini',
'/administrator/language/pl-PL/pl-PL.plg_editors-xtd_weblink.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_extension_joomla.ini',
'/administrator/language/pl-PL/pl-PL.plg_extension_joomla.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_calendar.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_calendar.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_checkboxes.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_checkboxes.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_color.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_color.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_editor.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_editor.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_image.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_imagelist.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_imagelist.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_image.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_integer.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_integer.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_list.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_list.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_media.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_media.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_radio.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_radio.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_repeatable.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_repeatable.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_sql.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_sql.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_textarea.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_textarea.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_text.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_text.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_url.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_url.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_usergrouplist.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_usergrouplist.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_user.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_user.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_categories.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_categories.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_contacts.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_contacts.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_content.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_content.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_newsfeeds.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_newsfeeds.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_tags.ini',
'/administrator/language/pl-PL/pl-PL.plg_finder_tags.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_folderinstaller.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_folderinstaller.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_packageinstaller.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_packageinstaller.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_urlinstaller.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_urlinstaller.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_webinstaller.ini',
'/administrator/language/pl-PL/pl-PL.plg_installer_webinstaller.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_actionlogs.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_actionlogs.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_consents.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_consents.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_contact.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_contact.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_content.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_content.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_message.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_message.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_user.ini',
'/administrator/language/pl-PL/pl-PL.plg_privacy_user.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_eos310.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_eos310.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_extensionupdate.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_extensionupdate.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_joomlaupdate.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_joomlaupdate.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_phpversioncheck.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_phpversioncheck.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_privacycheck.ini',
'/administrator/language/pl-PL/pl-PL.plg_quickicon_privacycheck.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_sampledata_blog.ini',
'/administrator/language/pl-PL/pl-PL.plg_sampledata_blog.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_actionlogs.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_actionlogs.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_cache.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_cache.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_debug.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_debug.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_fields.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_fields.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_highlight.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_highlight.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_languagecode.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_languagecode.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_languagefilter.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_languagefilter.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_log.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_logout.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_logout.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_logrotation.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_logrotation.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_log.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_p3p.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_p3p.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_privacyconsent.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_privacyconsent.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_redirect.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_redirect.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_remember.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_remember.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_sef.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_sef.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_sessiongc.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_sessiongc.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_stats.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_stats.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_updatenotification.ini',
'/administrator/language/pl-PL/pl-PL.plg_system_updatenotification.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_twofactorauth_totp.ini',
'/administrator/language/pl-PL/pl-PL.plg_twofactorauth_totp.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_twofactorauth_yubikey.ini',
'/administrator/language/pl-PL/pl-PL.plg_twofactorauth_yubikey.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_contactcreator.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_contactcreator.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_joomla.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_joomla.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_profile.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_profile.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_terms.ini',
'/administrator/language/pl-PL/pl-PL.plg_user_terms.sys.ini',
'/administrator/language/pl-PL/pl-PL.tpl_hathor.ini',
'/administrator/language/pl-PL/pl-PL.tpl_hathor.sys.ini',
'/administrator/language/pl-PL/pl-PL.tpl_isis.ini',
'/administrator/language/pl-PL/pl-PL.tpl_isis.sys.ini',
'/administrator/language/pl-PL/com_csp.ini',
'/administrator/language/pl-PL/com_csp.sys.ini',
'/administrator/language/pl-PL/plg_fields_subfields.ini',
'/administrator/language/pl-PL/plg_fields_subfields.sys.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_menuitem.ini',
'/administrator/language/pl-PL/pl-PL.plg_fields_menuitem.sys.ini',
// Frontend
'/language/pl-PL/pl-PL.com_ajax.ini',
'/language/pl-PL/pl-PL.com_config.ini',
'/language/pl-PL/pl-PL.com_contact.ini',
'/language/pl-PL/pl-PL.com_content.ini',
'/language/pl-PL/pl-PL.com_finder.ini',
'/language/pl-PL/pl-PL.com_mailto.ini',
'/language/pl-PL/pl-PL.com_media.ini',
'/language/pl-PL/pl-PL.com_messages.ini',
'/language/pl-PL/pl-PL.com_newsfeeds.ini',
'/language/pl-PL/pl-PL.com_privacy.ini',
'/language/pl-PL/pl-PL.com_tags.ini',
'/language/pl-PL/pl-PL.com_users.ini',
'/language/pl-PL/pl-PL.com_wrapper.ini',
'/language/pl-PL/pl-PL.files_joomla.sys.ini',
'/language/pl-PL/pl-PL.finder_cli.ini',
'/language/pl-PL/pl-PL.ini',
'/language/pl-PL/pl-PL.lib_fof.ini',
'/language/pl-PL/pl-PL.lib_fof.sys.ini',
'/language/pl-PL/pl-PL.lib_idna_convert.sys.ini',
'/language/pl-PL/pl-PL.lib_joomla.ini',
'/language/pl-PL/pl-PL.lib_joomla.sys.ini',
'/language/pl-PL/pl-PL.lib_phpass.sys.ini',
'/language/pl-PL/pl-PL.lib_phputf8.sys.ini',
'/language/pl-PL/pl-PL.lib_simplepie.sys.ini',
'/language/pl-PL/pl-PL.localise.php',
'/language/pl-PL/pl-PL.mod_articles_archive.ini',
'/language/pl-PL/pl-PL.mod_articles_archive.sys.ini',
'/language/pl-PL/pl-PL.mod_articles_categories.ini',
'/language/pl-PL/pl-PL.mod_articles_categories.sys.ini',
'/language/pl-PL/pl-PL.mod_articles_category.ini',
'/language/pl-PL/pl-PL.mod_articles_category.sys.ini',
'/language/pl-PL/pl-PL.mod_articles_latest.ini',
'/language/pl-PL/pl-PL.mod_articles_latest.sys.ini',
'/language/pl-PL/pl-PL.mod_articles_news.ini',
'/language/pl-PL/pl-PL.mod_articles_news.sys.ini',
'/language/pl-PL/pl-PL.mod_articles_popular.ini',
'/language/pl-PL/pl-PL.mod_articles_popular.sys.ini',
'/language/pl-PL/pl-PL.mod_banners.ini',
'/language/pl-PL/pl-PL.mod_banners.sys.ini',
'/language/pl-PL/pl-PL.mod_breadcrumbs.ini',
'/language/pl-PL/pl-PL.mod_breadcrumbs.sys.ini',
'/language/pl-PL/pl-PL.mod_custom.ini',
'/language/pl-PL/pl-PL.mod_custom.sys.ini',
'/language/pl-PL/pl-PL.mod_feed.ini',
'/language/pl-PL/pl-PL.mod_feed.sys.ini',
'/language/pl-PL/pl-PL.mod_finder.ini',
'/language/pl-PL/pl-PL.mod_finder.sys.ini',
'/language/pl-PL/pl-PL.mod_footer.ini',
'/language/pl-PL/pl-PL.mod_footer.sys.ini',
'/language/pl-PL/pl-PL.mod_languages.ini',
'/language/pl-PL/pl-PL.mod_languages.sys.ini',
'/language/pl-PL/pl-PL.mod_login.ini',
'/language/pl-PL/pl-PL.mod_login.sys.ini',
'/language/pl-PL/pl-PL.mod_menu.ini',
'/language/pl-PL/pl-PL.mod_menu.sys.ini',
'/language/pl-PL/pl-PL.mod_random_image.ini',
'/language/pl-PL/pl-PL.mod_random_image.sys.ini',
'/language/pl-PL/pl-PL.mod_related_items.ini',
'/language/pl-PL/pl-PL.mod_related_items.sys.ini',
'/language/pl-PL/pl-PL.mod_stats.ini',
'/language/pl-PL/pl-PL.mod_stats.sys.ini',
'/language/pl-PL/pl-PL.mod_syndicate.ini',
'/language/pl-PL/pl-PL.mod_syndicate.sys.ini',
'/language/pl-PL/pl-PL.mod_tags_popular.ini',
'/language/pl-PL/pl-PL.mod_tags_popular.sys.ini',
'/language/pl-PL/pl-PL.mod_tags_similar.ini',
'/language/pl-PL/pl-PL.mod_tags_similar.sys.ini',
'/language/pl-PL/pl-PL.mod_users_latest.ini',
'/language/pl-PL/pl-PL.mod_users_latest.sys.ini',
'/language/pl-PL/pl-PL.mod_whosonline.ini',
'/language/pl-PL/pl-PL.mod_whosonline.sys.ini',
'/language/pl-PL/pl-PL.mod_wrapper.ini',
'/language/pl-PL/pl-PL.mod_wrapper.sys.ini',
'/language/pl-PL/pl-PL.tpl_beez3.ini',
'/language/pl-PL/pl-PL.tpl_beez3.sys.ini',
'/language/pl-PL/pl-PL.tpl_protostar.ini',
'/language/pl-PL/pl-PL.tpl_protostar.sys.ini',
'/language/pl-PL/pl-PL.xml',
'/language/pl-PL/com_messages.ini',
];
}
/**
* Function to perform changes during postflight
*
* @param string $type The action being performed
* @param ComponentAdapter $parent The class calling this method
*
* @return void
*
* @since 4.0.0v1
*/
public function postflight($type, $parent)
{
$this->removeFiles();
}
}

View File

@@ -0,0 +1,291 @@
<?php
/**
* @package quantummanager
* @author Dmitry Tsymbal <cymbal@delo-design.ru>
* @copyright Copyright © 2019 Delo Design & NorrNext. All rights reserved.
* @license GNU General Public License version 3 or later; see license.txt
* @link https://www.norrnext.com
*/
defined('_JEXEC') or die;
use Joomla\Archive\Archive;
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\Path;
use Joomla\CMS\Installer\Adapter\PackageAdapter;
use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Installer\InstallerHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Version;
class pkg_QuantummanagerInstallerScript
{
/**
* Minimum PHP version required to install the extension.
*
* @var string
*
* @since 0.0.1
*/
protected $minimumPhp = '7.1';
/**
* Minimum Joomla version required to install the extension.
*
* @var string
*
* @since 0.0.1
*/
protected $minimumJoomla = '3.9.0';
/**
* Extensions for php
* @var array
*/
protected $extensions = [
'fileinfo',
'curl',
'mbstring',
];
/**
* Method to check compatible.
*
* @param string $type Type of PostFlight action.
* @param InstallerAdapter $parent Parent object calling object.
*
* @return boolean Compatible current version or not.
*
* @throws Exception
*
* @since 0.0.1
*/
public function preflight($type, $parent)
{
if ($type === 'install')
{
// Check compatible
if (!$this->checkCompatible())
{
return false;
}
//Download remotes
$this->downloadRemotes($parent);
}
}
public function postflight($type, $parent)
{
if ($type === 'update' || $type === 'install')
{
$msg = '';
$result = $this->installLibFields($parent);
if ($result !== true)
{
$msg .= Text::sprintf('PKG_QUANTUMMANAGER_LIBFIELDS_INSTALLATION_ERROR', (string) $result);
}
if ($msg)
{
Factory::getApplication()->enqueueMessage($msg, 'error');
return false;
}
if ($type === 'update')
{
$this->update150();
}
}
}
/**
* Method to check compatible.
*
* @return bool True if compatible.
*
* @throws Exception
*
* @since __DEPLOY_VERSION__
*/
protected function checkCompatible()
{
// Check old Joomla
if (!class_exists('Joomla\CMS\Version'))
{
Factory::getApplication()->enqueueMessage(Text::sprintf('PKG_QUANTUMMANAGER_ERROR_COMPATIBLE_JOOMLA',
$this->minimumJoomla), 'error');
return false;
}
$app = Factory::getApplication();
$jversion = new Version();
// Check PHP
if (!(version_compare(PHP_VERSION, $this->minimumPhp) >= 0))
{
$app->enqueueMessage(Text::sprintf('PKG_QUANTUMMANAGER_ERROR_COMPATIBLE_PHP', $this->minimumPhp),
'error');
return false;
}
// Check joomla version
if (!$jversion->isCompatible($this->minimumJoomla))
{
$app->enqueueMessage(Text::sprintf('PKG_QUANTUMMANAGER_ERROR_COMPATIBLE_JOOMLA', $this->minimumJoomla),
'error');
return false;
}
//Check extension
$extensionsNotLoaded = [];
foreach ($this->extensions as $extension)
{
if (!extension_loaded($extension))
{
$extensionsNotLoaded[] = $extension;
}
}
if (count($extensionsNotLoaded))
{
$app->enqueueMessage(Text::sprintf('PKG_QUANTUMMANAGER_ERROR_EXTENSIONS', implode(',', $extensionsNotLoaded)),
'error');
return false;
}
return true;
}
/**
* Method to download remotes.
*
* @param InstallerAdapter $parent Parent object calling object.
*
* @throws Exception
*
* @since __DEPLOY_VERSION__
*/
protected function downloadRemotes($parent)
{
$attributes = $parent->getParent()->manifest->xpath('files');
$source = $parent->getParent()->getPath('source');
if (!is_array($attributes) || empty($attributes[0]))
{
return;
}
foreach ($attributes[0] as $type => $value)
{
if (!empty($value->attributes()->download) && !empty($value[0]))
{
$src = htmlspecialchars_decode((string) $value->attributes()->download);
$dest = $source . '/' . $value[0];
@file_put_contents($dest, file_get_contents($src));
}
}
}
protected function update150()
{
$db = Factory::getDBO();
$query = $db->getQuery(true)
->select($db->quoteName(['extension_id']))
->from('#__extensions')
->where('element =' . $db->quote('quantummanagercontent'))
->where('folder =' . $db->quote('editors-xtd'));
$extension = $db->setQuery($query)->loadObject();
if (isset($extension->extension_id) && ((int) $extension->extension_id > 0))
{
$installer = Installer::getInstance();
$installer->uninstall('plugin', (int) $extension->extension_id);
}
$db = Factory::getDBO();
$query = $db->getQuery(true)
->select($db->quoteName(['extension_id']))
->from('#__extensions')
->where('element =' . $db->quote('quantummanagercommedia'))
->where('folder =' . $db->quote('system'));
$extension = $db->setQuery($query)->loadObject();
if (isset($extension->extension_id) && ((int) $extension->extension_id > 0))
{
$installer = Installer::getInstance();
$installer->uninstall('plugin', (int) $extension->extension_id);
}
}
protected function installLibFields($parent)
{
$tmp = Factory::getConfig()->get('tmp_path');
$libFieldsFile = 'https://github.com/JPathRu/lib_fields/releases/latest/download/lib_fields.zip';
$tmpFile = Path::clean($tmp . '/lib_fields.zip');
$extDir = Path::clean($tmp . '/' . uniqid('install_'));
$contents = file_get_contents($libFieldsFile);
if ($contents === false)
{
return Text::sprintf('PKG_QUANTUMMANAGER_LIBFIELDS_IE_FAILED_DOWNLOAD', $libFieldsFile);
}
$resultContents = file_put_contents($tmpFile, $contents);
if ($resultContents == false)
{
return Text::sprintf('PKG_QUANTUMMANAGER_LIBFIELDS_IE_FAILED_INSTALLATION', $tmpFile);
}
if (!file_exists($tmpFile))
{
return Text::sprintf('PKG_QUANTUMMANAGER_LIBFIELDS_IE_NOT_EXISTS', $tmpFile);
}
$archive = new Archive(['tmp_path' => $tmp]);
try
{
$archive->extract($tmpFile, $extDir);
}
catch (\Exception $e)
{
return Text::sprintf('PKG_QUANTUMMANAGER_LIBFIELDS_IE_FAILER_UNZIP', $tmpFile, $extDir, $e->getMesage());
}
$installer = new Installer();
$installer->setPath('source', $extDir);
if (!$installer->findManifest())
{
InstallerHelper::cleanupInstall($tmpFile, $extDir);
return Text::_('PKG_QUANTUMMANAGER_LIBFIELDS_IE_INCORRECT_MANIFEST');
}
if (!$installer->install($extDir))
{
InstallerHelper::cleanupInstall($tmpFile, $extDir);
return Text::_('PKG_QUANTUMMANAGER_LIBFIELDS_IE_INSTALLER_ERROR');
}
InstallerHelper::cleanupInstall($tmpFile, $extDir);
return true;
}
}

View File

@@ -0,0 +1,177 @@
<?php
/**
* @package Regular Labs Library
* @version 23.9.16805
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2023 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Installer\Manifest\PackageManifest as JPackageManifest;
use Joomla\CMS\Language\Text as JText;
if ( ! class_exists('pkg_regularlabsInstallerScript'))
{
class pkg_regularlabsInstallerScript
{
static $current_version;
static $name;
static $package_name;
static $previous_version;
public function postflight($install_type, $adapter)
{
self::publishExtensions();
self::recreateNamespaceMap();
self::displayMessages();
return true;
}
public function preflight($install_type, $adapter)
{
$manifest = $adapter->getManifest();
static::$package_name = trim($manifest->packagename);
static::$name = trim($manifest->name);
static::$current_version = trim($manifest->version);
static::$previous_version = self::getPreviousVersion();
return true;
}
private static function recreateNamespaceMap()
{
if (JVERSION < 4)
{
return;
}
// Remove the administrator/cache/autoload_psr4.php file
$filename = JPATH_ADMINISTRATOR . '/cache/autoload_psr4.php';
if (file_exists($filename))
{
self::clearFileInOPCache($filename);
clearstatcache(true, $filename);
@unlink($filename);
}
JFactory::getApplication()->createExtensionNamespaceMap();
}
private static function clearFileInOPCache($file)
{
$hasOpCache = ini_get('opcache.enable')
&& function_exists('opcache_invalidate')
&& (
! ini_get('opcache.restrict_api')
|| stripos(realpath($_SERVER['SCRIPT_FILENAME']), ini_get('opcache.restrict_api')) === 0
);
if ( ! $hasOpCache)
{
return false;
}
return opcache_invalidate($file, true);
}
private static function displayMessages()
{
$msg = self::getInstallationLanguageString();
JFactory::getApplication()->enqueueMessage(
JText::sprintf(
$msg,
'<strong>' . JText::_(static::$name . '_SHORT') . '</strong>',
'<strong>' . static::$current_version . '</strong>'
), 'success'
);
}
private static function getInstallationLanguageString()
{
if ( ! static::$previous_version)
{
return 'PKG_RL_EXTENSION_INSTALLED';
}
if (static::$previous_version == static::$current_version)
{
return 'PKG_RL_EXTENSION_REINSTALLED';
}
return 'PKG_RL_EXTENSION_UPDATED';
}
private static function getPreviousVersion()
{
$xml_file = self::getXmlFile();
if ( ! $xml_file)
{
return '';
}
$manifest = new JPackageManifest($xml_file);
return isset($manifest->version) ? trim($manifest->version) : '';
}
private static function getXmlFile()
{
$xml_file = JPATH_MANIFESTS . '/packages/pkg_' . static::$package_name . '.xml';
if (file_exists($xml_file))
{
return $xml_file;
}
$xml_file = JPATH_LIBRARIES . '/' . static::$package_name . '.xml';
if (file_exists($xml_file))
{
return $xml_file;
}
$xml_file = JPATH_ADMINISTRATOR . '/components/com_' . static::$package_name . '/' . static::$package_name . '.xml';
if (file_exists($xml_file))
{
return $xml_file;
}
return '';
}
private static function publishExtensions()
{
// ignore if this is an update of Conditions
if (static::$package_name == 'conditions' && static::$previous_version)
{
return;
}
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->update('#__extensions')
->set($db->quoteName('enabled') . ' = 1')
->where($db->quoteName('element') . ' IN ('
. $db->quote(static::$package_name)
. ', ' . $db->quote('com_' . static::$package_name)
. ')'
);
$db->setQuery($query);
$db->execute();
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff