Ejemplo n.º 1
0
function com_install()
{
    global $cloneManifest, $mainframe, $cloneParent;
    $session =& JFactory::getSession();
    $si = new SubInstaller();
    $ret = $si->install();
    $errorArray = $si->getError();
    $session->set('jsn_install_error', $errorArray);
    $document =& $cloneManifest->document;
    $version =& $document->getElementByPath('version');
    $edition =& $document->getElementByPath('edition');
    $version = $version->data();
    $edition = str_replace(' ', '_', JString::strtolower($edition->data()));
    $packageFile = JPATH_ROOT . DS . 'tmp' . DS . 'jsn_imageshow_' . $edition . '_' . $version . '_install.zip';
    $packageExtDir = $cloneParent->getPath('source');
    $flagInstallation = false;
    $disable = '';
    $resultCheckManifestFile = checkManifestFileExist();
    if ($resultCheckManifestFile == true) {
        $objUpgradeHelper = new JSNUpgradeHelper($cloneManifest);
        $objUpgradeHelper->executeUpgrade();
        $objUpgradeDBUtil = new JSNISUpgradeDBUtil($cloneManifest);
        $objUpgradeDBUtil->executeUpgradeDB();
    }
    if (!$cloneParent->copyManifest()) {
        $cloneParent->abort(JText::_('Component') . ' ' . JText::_('Install') . ': ' . JText::_('Could not copy setup file'));
        return false;
    }
    removeFile($packageFile);
    removeFolder($packageExtDir);
    $mainframe->redirect('index.php?option=com_imageshow&controller=installer&task=installcore');
}
function com_install()
{
    $parent = JInstaller::getInstance();
    $manifest = $parent->getManifest();
    $session = JFactory::getSession();
    $objJSNSubInstaller = new JSNSubInstaller();
    $ret = $objJSNSubInstaller->install();
    $errorArray = $objJSNSubInstaller->getError();
    $session->set('jsn_install_error', $errorArray);
    $resultCheckManifestFile = checkManifestFileExist();
    if ($resultCheckManifestFile == true) {
        beforeUpgradeImageShow();
        $objUpgradeDBUtil = new JSNISUpgradeDBUtil($manifest);
        $objUpgradeDBUtil->executeUpgradeDB();
    }
}
Ejemplo n.º 3
0
    /**
     * Implement postflight hook.
     *
     * @param   string  $type    Extension type.
     * @param   object  $parent  JInstaller object.
     *
     * @return  void
     */
    public function postflight($type, $parent)
    {
        /******************************* JSN IMAGESHOW ***************************************/
        $factoryFile = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_imageshow' . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'jsn_is_factory.php';
        $upgradeDBUtilFile = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_imageshow' . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'jsn_is_upgradedbutil.php';
        $installerMessageFile = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_imageshow' . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'jsn_is_installermessage.php';
        $imageShowPostFlightFlag = false;
        if (is_file($factoryFile) && is_file($upgradeDBUtilFile) && is_file($installerMessageFile)) {
            include_once $factoryFile;
            include_once $upgradeDBUtilFile;
            include_once $installerMessageFile;
            $imageShowPostFlightFlag = true;
        }
        /******************************* JSN IMAGESHOW ***************************************/
        // Get original installer
        $installer = $parent->getParent();
        isset($this->parentInstaller) or $this->parentInstaller = $parent->getParent();
        // Update language file
        $this->updateLanguage();
        // Process dependency installation
        foreach ($this->dependencies as $extension) {
            // Remove installed extension if requested
            if (isset($extension->remove) and (int) $extension->remove > 0) {
                $this->removeExtension($extension);
                continue;
            }
            // Install only dependency that has local installation package
            if (isset($extension->source)) {
                // Install and update dependency status
                $this->installExtension($extension);
            } elseif (!isset($this->missingDependency)) {
                $this->missingDependency = true;
            }
        }
        // Create dependency declaration constant
        if (!defined('JSN_' . strtoupper($this->name) . '_DEPENDENCY')) {
            // Get Joomla config
            $config = JFactory::getConfig();
            // Unset some unnecessary properties
            foreach ($this->dependencies as &$dependency) {
                unset($dependency->source);
                unset($dependency->upToDate);
            }
            $this->dependencies = json_encode($this->dependencies);
            // Store dependency declaration
            file_exists($defines = $this->path . '/defines.php') or file_exists($defines = $this->path . "/{$this->name}.defines.php") or $defines = $this->path . "/{$this->name}.php";
            if ($config->get('ftp_enable') or is_writable($defines)) {
                $buffer = preg_replace('/(defined\\s*\\(\\s*._JEXEC.\\s*\\)[^\\n]+\\n)/', '\\1' . "\ndefine('JSN_" . strtoupper($this->name) . "_DEPENDENCY', '" . $this->dependencies . "');\n", JFile::read($defines));
                JFile::write($defines, $buffer);
            }
        }
        // Clean latest product version cache file
        $cache = JFactory::getConfig()->get('tmp_path') . '/JoomlaShineUpdates.json';
        if (file_exists($cache)) {
            jimport('joomla.filesystem.file');
            JFile::delete($cache);
        }
        // Register check update link for Joomla 3.1
        $JVersion = new JVersion();
        // Check if current joomla version is 2.5.x
        $isJoomla25 = (version_compare($JVersion->getShortVersion(), '2.5', '>=') and version_compare($JVersion->getShortVersion(), '3.0', '<'));
        //if (version_compare($JVersion->RELEASE, '3.1', '>='))
        //{
        // Get id for the extension just installed
        $ext = JTable::getInstance('Extension');
        $ext->load(array('name' => $this->name, 'element' => basename($this->path), 'type' => 'component'));
        if ($ext->extension_id) {
            // Get current check update data
            $db = JFactory::getDbo();
            $q = $db->getQuery(true);
            $q->select('update_site_id');
            $q->from('#__update_sites');
            $q->where('location LIKE ' . $q->quote('%index.php?option=' . $ext->element . '&task=checkUpdate%'));
            $db->setQuery($q);
            if ($uid = $db->loadResult()) {
                // Clean-up current check update data
                $q = $db->getQuery(true);
                $q->delete('#__update_sites');
                $q->where('update_site_id = ' . (int) $uid);
                $db->setQuery($q);
                if ($isJoomla25) {
                    $db->query();
                } else {
                    $db->execute();
                }
                $q = $db->getQuery(true);
                $q->delete('#__update_sites_extensions');
                $q->where('update_site_id = ' . (int) $uid);
                $db->setQuery($q);
                if ($isJoomla25) {
                    $db->query();
                } else {
                    $db->execute();
                }
            }
            // Register check update data
            $ln = JUri::root() . 'administrator/index.php?option=' . $ext->element . '&task=checkUpdate&file=update.xml';
            $q = $db->getQuery(true);
            $q->insert('#__update_sites');
            $q->columns('`name`, `type`, `location`, `enabled`');
            $q->values($q->quote($this->name) . ', ' . $q->quote('collection') . ', ' . $q->quote($ln) . ', 1');
            $db->setQuery($q);
            if ($isJoomla25) {
                $db->query();
            } else {
                $db->execute();
            }
            if ($uid = $db->insertid()) {
                $q = $db->getQuery(true);
                $q->insert('#__update_sites_extensions');
                $q->columns('`update_site_id`, `extension_id`');
                $q->values((int) $uid . ', ' . (int) $ext->extension_id);
                $db->setQuery($q);
                if ($isJoomla25) {
                    $db->query();
                } else {
                    $db->execute();
                }
            }
        }
        //}
        /******************************* JSN IMAGESHOW ***************************************/
        $extInfo = $this->getExtInfo();
        $session = JFactory::getSession();
        if (!is_null($extInfo)) {
            if ($session->get('preversion', null, 'jsnimageshow') != null) {
                if ($imageShowPostFlightFlag) {
                    $objUpgradeDBUtil = new JSNISUpgradeDBUtil($this->parentInstaller->getManifest());
                    $objUpgradeDBUtil->executeUpgradeDB();
                }
            }
        }
        $this->duplicateManifestFile();
        if ($imageShowPostFlightFlag) {
            $objJSNInstMessage = new JSNISInstallerMessage();
            $objJSNInstMessage->installMessage();
        }
        /******************************* JSN IMAGESHOW ***************************************/
        // Check if redirect should be disabled
        if ($this->app->input->getBool('tool_redirect', true)) {
            // Do we have any missing dependency
            if ($this->missingDependency) {
                if (strpos($_SERVER['HTTP_REFERER'], '/administrator/index.php?option=com_installer') !== false) {
                    // Set redirect to finalize dependency installation
                    $this->parentInstaller->setRedirectURL('index.php?option=com_' . $this->name . '&view=installer');
                } else {
                    // Let Ajax client redirect
                    echo '
<script type="text/javascript">
	if (window.parent)
		window.parent.location.href ="' . JUri::root() . 'administrator/index.php?option=com_' . $this->name . '&view=installer";
	else
		location.href ="' . JUri::root() . 'administrator/index.php?option=com_' . $this->name . '&view=installer";
</script>';
                    exit;
                }
            }
        }
    }