| Current Path : /home/h/e/l/helpink/www/plugins/system/tmp_jnetwork/ |
| Current File : /home/h/e/l/helpink/www/plugins/system/tmp_jnetwork/installer.script.php |
<?php
defined ('_JEXEC') or die();
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Installer\Installer;
class plgSystemTmp_jNexusInstallerScript
{
public function postflight($type, $parent)
{
$src = $parent->getParent()->getPath('source');
$manifest = $parent->getParent()->manifest;
$plugins = $manifest->xpath('plugins/plugin');
foreach ($plugins as $key => $plugin)
{
$name = (string)$plugin->attributes()->plugin;
$group = (string)$plugin->attributes()->group;
$installer = new Installer;
$path = $src.'/plugins/'.$group;
if (Folder::exists($src.'/plugins/'.$group.'/'.$name))
{
$path = $src.'/plugins/'.$group.'/'.$name;
}
$plugin_info = $this->getPluginInfoByName($name, $group);
if($plugin_info)
{
$manifest_cache = json_decode($plugin_info->manifest_cache ?? "");
$cache_version = $manifest_cache->version;
$plg_manifest = $installer->parseXMLInstallFile($path.'/'.$name.'.xml');
$version = $plg_manifest['version'];
if (version_compare($version, $cache_version, '<'))
{
continue;
}
// Check if directory "/overrides/com_finder/tmpl" exists then deletes it
if ($version >= '2.0.12')
{
$plg_path = JPATH_PLUGINS;
$dir = $plg_path.'/'.$group.'/'.$name.'/overrides/com_finder/tmpl';
if (Folder::exists($dir))
{
Folder::delete($dir);
}
}
}
$result = $installer->install($path);
if ($result)
{
$this->activeInstalledPlugin($name, $group);
}
}
$extension_path = $src.'/extensions/com_sppagebuilder';
if (Folder::exists( $extension_path ))
{
$installer = new Installer;
$result = $installer->install($extension_path);
}
$extension_path = $src.'/extensions/mod_showplus';
if (Folder::exists( $extension_path ))
{
$installer = new Installer;
$result = $installer->install($extension_path);
}
$extension_path = $src.'/extensions/mod_jbusiness_user';
if (Folder::exists( $extension_path ))
{
$installer = new Installer;
$result = $installer->install($extension_path);
}
$template_path = $src.'/j-nexus';
if (Folder::exists( $template_path ))
{
$installer = new Installer;
$result = $installer->install($template_path);
}
$templates = $manifest->xpath('template');
foreach($templates as $key => $template)
{
$tmpl_name = (string) $template->attributes()->name;
$tmpl_info = $this->getTemplateInfoByName($tmpl_name);
$params = json_decode($tmpl_info->params ?? "");
$params_array = (array) $params;
if(empty($params_array))
{
$options_default = file_get_contents($template_path .'/options.json');
$db = Factory::getDBO();
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('params') . ' = ' . $db->quote($options_default)
);
$conditions = array(
$db->quoteName('client_id') . ' = 0',
$db->quoteName('template') . ' = ' . $db->quote($tmpl_name)
);
$query->update($db->quoteName('#__template_styles'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
}
$conf = Factory::getConfig();
$conf->set('debug', false);
$parent->getParent()->abort();
}
private function getTemplateInfoByName($name)
{
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__template_styles'));
$query->where($db->quoteName('client_id') . ' = 0');
$query->where($db->quoteName('template') . ' = ' . $db->quote( $name ));
$db->setQuery($query);
return $db->loadObject();
}
private function activeInstalledPlugin($name, $group)
{
$db = Factory::getDBO();
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('enabled') . ' = 1'
);
$conditions = array(
$db->quoteName('type') . ' = ' . $db->quote('plugin'),
$db->quoteName('element') . ' = ' . $db->quote($name),
$db->quoteName('folder') . ' = ' . $db->quote($group)
);
$query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);
$db->setQuery($query);
$db->execute();
}
private function getPluginInfoByName($name, $group)
{
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__extensions'));
$query->where($db->quoteName('type') . ' = ' . $db->quote('plugin'));
$query->where($db->quoteName('element') . ' = ' . $db->quote( $name ));
$query->where($db->quoteName('folder') . ' = ' . $db->quote( $group ));
$db->setQuery($query);
return $db->loadObject();
}
public function abort($msg = null, $type = null){
if ($msg) {
Factory::getApplication()->enqueueMessage($msg, 100);
}
foreach ($this->packages as $package) {
$package['installer']->abort(null, $type);
}
}
}