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(); } }
/** * 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; } } } }