%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_csvi/script.php

<?php
/**
 * @package     CSVI
 * @subpackage  Install
 *
 * @author      Roland Dalmulder <contact@csvimproved.com>
 * @copyright   Copyright (C) 2006 - 2016 RolandD Cyber Produksi. All rights reserved.
 * @license     GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 * @link        http://www.csvimproved.com
 */

use Joomla\Registry\Registry;

defined('_JEXEC') or die;

// Load FOF if not already loaded
if (!defined('FOF_INCLUDED'))
{
	$paths = array(
		(defined('JPATH_LIBRARIES') ? JPATH_LIBRARIES : JPATH_ROOT . '/libraries') . '/fof/include.php',
		__DIR__ . '/fof/include.php',
	);

	foreach ($paths as $filePath)
	{
		if (!defined('FOF_INCLUDED') && file_exists($filePath))
		{
			@include_once $filePath;
		}
	}
}

// Need to check if a Joomla version lower than 3.4 is used, if so we need to copy some FOF helpers
if (version_compare(JVERSION, '3.4', 'lt'))
{
	$source = __DIR__ . '/fof';

	if (file_exists($source))
	{
		$dest = JPATH_LIBRARIES . '/fof';
		JFolder::copy($source, $dest, '', true);
	}
}

// Pre-load the installer script class from our own copy of FOF
if (!class_exists('FOFUtilsInstallscript', false))
{
	@include_once __DIR__ . '/fof/utils/installscript/installscript.php';
}
// Pre-load the database schema installer class from our own copy of FOF
if (!class_exists('FOFDatabaseInstaller', false))
{
	@include_once __DIR__ . '/fof/database/installer.php';
}
// Pre-load the update utility class from our own copy of FOF
if (!class_exists('FOFUtilsUpdate', false))
{
	@include_once __DIR__ . '/fof/utils/update/update.php';
}
// Pre-load the cache cleaner utility class from our own copy of FOF
if (!class_exists('FOFUtilsCacheCleaner', false))
{
	@include_once __DIR__ . '/fof/utils/cache/cleaner.php';
}

/**
 * Script to run on installation of CSVI.
 *
 * @package     CSVI
 * @subpackage  Install
 * @since       6.0
 */
class Com_CsviInstallerScript extends FOFUtilsInstallscript
{
	/**
	 * The component's name
	 *
	 * @var string
	 */
	protected $componentName = 'com_csvi';

	/**
	 * The title of the component (printed on installation and uninstallation messages)
	 *
	 * @var string
	 */
	protected $componentTitle = 'CSVI Pro';

	/**
	 * The list of extra modules and plugins to install on component installation / update and remove on component
	 * uninstallation.
	 *
	 * @var   array
	 */
	protected $installation_queue = array(
		'modules' => array(
			'admin' => array(),
			'site'  => array()
		),
		'plugins' => array(
			'csviaddon' => array(
				'categories' => true,
				'content' => true,
				'csvi' => true,
				'menus' => true,
				'users' => true
			),
			'csvirules' => array(
				'fieldcombine' => true,
				'fieldcopy' => true,
				'margin' => true,
				'replace' => true
			)
		)
	);

	/**
	 * The minimum PHP version required to install this extension
	 *
	 * @var   string
	 */
	protected $minimumPHPVersion = '5.4';

	/**
	 * The minimum PHP version required to install this extension
	 *
	 * @var   string
	 */
	protected $minimumJoomlaVersion = '3.4.8';

	/**
	 * Method to install the component
	 *
	 * @param   string  $type    Installation type (install, update, discover_install)
	 * @param   object  $parent  The parent calling class
	 *
	 * @return  boolean  True to let the installation proceed, false to halt the installation
	 *
	 * @since   6.0
	 *
	 * @throws  \RuntimeException
	 */
	public function preflight($type, $parent)
	{
		// Call the parent for the version checks
		if (!parent::preflight($type, $parent))
		{
			return false;
		}

		if (!defined('CSVIPATH_DEBUG'))
		{
			define('CSVIPATH_DEBUG', JPath::clean(JFactory::getConfig()->get('log_path'), '/'));
		}

		/** @var JDatabaseDriver $db */
		$db = JFactory::getDbo();
		$tables = $db->getTableList();
		$table = $db->getPrefix() . 'csvi_settings';

		if (in_array($table, $tables))
		{
			$query = $db->getQuery(true)
				->select($db->quoteName('params'))
				->from($db->quoteName($table))
				->where($db->quoteName('csvi_setting_id') . ' = 1');
			$db->setQuery($query);
			$csvisettings = $db->loadResult();

			// Make sure the user has any saved settings
			if ($csvisettings)
			{
				$csviregistry = json_decode($csvisettings, true);

				$query->clear()
					->select($db->quoteName('params'))
					->from($db->quoteName('#__extensions'))
					->where($db->quoteName('element') . ' = ' . $db->quote('com_csvi'))
					->where($db->quoteName('type') . ' = ' . $db->quote('component'));
				$db->setQuery($query);
				$extsettings = $db->loadResult();

				if (!$extsettings)
				{
					$extsettings = array();
				}

				$extregistry = json_decode($extsettings, true);

				$newparams = array_merge($csviregistry, $extregistry);
				$newparams = new Registry($newparams);

				$query->clear()
					->update($db->quoteName('#__extensions'))
					->set($db->quoteName('params') . ' = ' . $db->quote($newparams))
					->where($db->quoteName('element') . ' = ' . $db->quote('com_csvi'))
					->where($db->quoteName('type') . ' = ' . $db->quote('component'));
				$db->setQuery($query)->execute();
			}

			// Make sure the column has been renamed
			$columns = $db->getTableColumns($table);

			if (array_key_exists('id', $columns))
			{
				// User removed CSVI before installing, need to run the update scripts
				$files = JFolder::files(
					__DIR__ . '/admin/sql/updates/mysql',
					'\.sql$',
					1,
					true,
					array('.svn', 'CVS', '.DS_Store', '__MACOSX'),
					array('^\..*', '.*~'),
					true
				);

				foreach ($files as $filename)
				{
					$queries = $db->splitSql(file_get_contents($filename));

					foreach ($queries as $query)
					{
						$query = trim($query);

						if ($query)
						{
							try
							{
								$db->setQuery($query)->execute();
							}
							catch (Exception $e)
							{
								JFactory::getApplication()->enqueueMessage($e->getMessage());
							}
						}
					}
				}
			}
		}
	}

	/**
	 * Method to run after an install/update/uninstall method
	 *
	 * @param   string  $type    The type of installation being done
	 * @param   object  $parent  The parent calling class
	 *
	 * @return void
	 *
	 * @since   6.0
	 *
	 * @throws  RuntimeException
	 */
	public function postflight($type, $parent)
	{
		parent::postflight($type, $parent);

		// Rename any files if needed
		$this->removeFiles();

		FOFPlatform::getInstance()->clearCache();

		// All Joomla loaded, set our exception handler
		require_once JPATH_BASE . '/components/com_csvi/rantai/error/exception.php';

		// Load the default classes
		require_once JPATH_ADMINISTRATOR . '/components/com_csvi/controllers/default.php';
		require_once JPATH_ADMINISTRATOR . '/components/com_csvi/models/default.php';

		// Setup the autoloader
		JLoader::registerPrefix('Csvi', JPATH_ADMINISTRATOR . '/components/com_csvi');

		// Load language files
		$jlang = JFactory::getLanguage();
		$jlang->load('com_csvi', JPATH_ADMINISTRATOR . '/components/com_csvi/', 'en-GB', true);
		$jlang->load('com_csvi', JPATH_ADMINISTRATOR . '/components/com_csvi/', $jlang->getDefault(), true);
		$jlang->load('com_csvi', JPATH_ADMINISTRATOR . '/components/com_csvi/', null, true);

		// Convert any pre version 6 templates if needed
		$this->convertTemplates();

		// Load the tasks
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_csvi/models');
		$tasksModel = JModelLegacy::getInstance('Task', 'CsviModel', array('ignore_request' => true));

		if ($tasksModel->reload())
		{
			// Load the model
			$model = JModelLegacy::getInstance('Maintenances', 'CsviModel', array('ignore_request' => true));

			$key = 0;
			$continue = true;

			// Update the available fields
			while ($continue)
			{
				$result = $model->runOperation('com_csvi', 'updateavailablefields', $key);

				$this->results['messages'][] = $result['info'];
				$key = $result['key'];
				$continue = $result['continue'];
			}
		}

		// Clean the update sites if needed
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->quoteName('update_site_id'))
			->from($db->quoteName('#__update_sites'))
			->where($db->quoteName('name') . ' = ' . $db->quote('CSVI Pro'))
			->where($db->quoteName('type') . ' = ' . $db->quote('extension'));
		$db->setQuery($query);
		$entry = $db->loadResult();

		if (!$entry)
		{
			$query->clear()
				->insert($db->quoteName('#__update_sites'))
				->columns(
					$db->quoteName(
						array(
							'name',
							'type',
							'location',
							'enabled',
							'last_check_timestamp'
						)
					)
				)
				->values(
					$db->quote('CSVI Pro') . ', '
					. $db->quote('extension') . ', '
					. $db->quote('http://www.csvimproved.com/updates/csvipro.xml') . ', '
					. '1, '
					. '0'
				);
			$db->setQuery($query)->execute();
		}
	}

	/**
	 * Convert old templates to the new CSVI 6 format.
	 *
	 * @return  void.
	 *
	 * @since   6.0
	 *
	 * @throws  RuntimeException
	 */
	private function convertTemplates()
	{
		/** @var JDatabaseDriver $db */
		$db = JFactory::getDbo();

		// Load all the existing templates
		$query = $db->getQuery(true)
			->select(
				array(
					$db->quoteName('csvi_template_id'),
					$db->quoteName('settings'),
				)
			)
			->from($db->quoteName('#__csvi_templates'));
		$db->setQuery($query);
		$templates = $db->loadObjectList('csvi_template_id');

		foreach ($templates as $csvi_template_id => $template)
		{
			// Check if the template is in the old format
			if (0 === strpos($template->settings, '{"options'))
			{
				// Get the old data format
				$oldformat = json_decode($template->settings);

				// Store everything in the new format
				$newformat = array();

				foreach ($oldformat as $section => $settings)
				{
					$newformat = array_merge($newformat, (array) $settings);
				}

				// Perform some extra changes
				if (isset($newformat['operation']))
				{
					$newformat['operation'] = str_replace(array('import', 'export'), '', $newformat['operation']);
				}

				if (isset($newformat['exportto']))
				{
					$newformat['exportto'] = array($newformat['exportto']);
				}

				// Store the new template format
				$query->clear()
					->update($db->quoteName('#__csvi_templates'))
					->set($db->quoteName('settings') . ' = ' . $db->quote(json_encode($newformat)))
					->where($db->quoteName('csvi_template_id') . ' = ' . (int) $csvi_template_id);
				$db->setQuery($query)->execute();
			}
		}
	}

	/**
	 * Rename any files after installation if needed.
	 *
	 * @return  void.
	 *
	 * @since   6.6.0
	 */
	private function removeFiles()
	{
		$files = array(
			'administrator/components/com_csvi/models/abouts.php',
			'administrator/language/en-GB/en-GB.com_csvi.ini',
			'administrator/language/en-GB/en-GB.com_csvi.sys.ini',
		);

		foreach ($files as $file)
		{
			if (JFile::exists(JPATH_ROOT . '/' . $file))
			{
				JFile::delete(JPATH_ROOT . '/' . $file);
			}
		}

	}
}

Zerion Mini Shell 1.0