private function _install($pluginName, $action) { $result = array('error' => true); if (isset($_POST['mode']) && 'remote' == $_POST['mode']) { $pluginsTempFolder = IA_TMP . 'plugins' . IA_DS; is_dir($pluginsTempFolder) || mkdir($pluginsTempFolder); $filePath = $pluginsTempFolder . $pluginName; $fileName = $filePath . '.zip'; // save remote plugin file iaUtil::downloadRemoteContent(iaUtil::REMOTE_TOOLS_URL . 'install/' . $pluginName . IA_URL_DELIMITER . IA_VERSION, $fileName); if (file_exists($fileName)) { if (is_writable($this->_folder)) { // delete previous folder if (is_dir($this->_folder . $pluginName)) { unlink($this->_folder . $pluginName); } include_once IA_INCLUDES . 'utils' . IA_DS . 'pclzip.lib.php'; $pclZip = new PclZip($fileName); $pclZip->extract(PCLZIP_OPT_PATH, IA_PLUGINS . $pluginName); $this->_iaCore->iaCache->remove('subrion_plugins.inc'); } else { $result['message'] = iaLanguage::get('upload_plugin_error'); } } } $iaExtra = $this->getHelper(); $installationFile = $this->_folder . $pluginName . IA_DS . iaExtra::INSTALL_FILE_NAME; if (!file_exists($installationFile)) { $result['message'] = iaLanguage::get('file_doesnt_exist'); } else { $iaExtra->setXml(file_get_contents($installationFile)); $result['error'] = false; } $iaExtra->parse(); $installationPossible = false; $version = explode('-', $iaExtra->itemData['compatibility']); if (!isset($version[1])) { if (version_compare($version[0], IA_VERSION, '<=')) { $installationPossible = true; } } else { if (version_compare($version[0], IA_VERSION, '<=') && version_compare($version[1], IA_VERSION, '>=')) { $installationPossible = true; } } if (!$installationPossible) { $result['message'] = iaLanguage::get('incompatible'); $result['error'] = true; } if (!$result['error']) { $iaExtra->doAction(iaExtra::ACTION_INSTALL); if ($iaExtra->error) { $result['message'] = $iaExtra->getMessage(); $result['error'] = true; } else { $iaLog = $this->_iaCore->factory('log'); if ($iaExtra->isUpgrade) { $result['message'] = iaLanguage::get('plugin_updated'); $iaLog->write(iaLog::ACTION_UPGRADE, array('type' => iaExtra::TYPE_PLUGIN, 'name' => $iaExtra->itemData['info']['title'], 'to' => $iaExtra->itemData['info']['version'])); } else { $result['groups'] = $iaExtra->getMenuGroups(); $result['message'] = iaExtra::ACTION_INSTALL == $action ? iaLanguage::getf('plugin_installed', array('name' => $iaExtra->itemData['info']['title'])) : iaLanguage::getf('plugin_reinstalled', array('name' => $iaExtra->itemData['info']['title'])); $iaLog->write(iaLog::ACTION_INSTALL, array('type' => iaExtra::TYPE_PLUGIN, 'name' => $iaExtra->itemData['info']['title'])); } empty($iaExtra->itemData['notes']) || ($result['message'][] = $iaExtra->itemData['notes']); $this->_iaCore->getConfig(true); } } $result['result'] = !$result['error']; unset($result['error']); return $result; }
public static function forceUpgrade($version) { iaCore::instance()->factory('util'); $patchUrl = iaUtil::REMOTE_TOOLS_URL . 'get/patch/%s/%s/'; $patchUrl = sprintf($patchUrl, IA_VERSION, $version); $filePath = IA_TMP . 'patch.iap'; iaUtil::downloadRemoteContent($patchUrl, $filePath); if ($contents = file_get_contents($filePath)) { require_once IA_HOME . 'install/classes/ia.patch.parser.php'; require_once IA_HOME . 'install/classes/ia.patch.applier.php'; try { $iaPatchParser = new iaPatchParser($contents); $patch = $iaPatchParser->patch; $iaPatchApplier = new iaPatchApplier(IA_HOME, array('host' => INTELLI_DBHOST . ':' . INTELLI_DBPORT, 'database' => INTELLI_DBNAME, 'user' => INTELLI_DBUSER, 'password' => INTELLI_DBPASS, 'prefix' => INTELLI_DBPREFIX), true); $iaPatchApplier->process($patch, $version); $logFile = 'upgrade-log-' . $patch['info']['version_to'] . '_' . date('d-m-y-Hi') . '.txt'; if ($fh = fopen(IA_UPLOADS . $logFile, 'wt')) { fwrite($fh, $iaPatchApplier->getLog()); fclose($fh); } $logParams = array('type' => 'app-forced', 'from' => IA_VERSION, 'to' => $version, 'file' => $logFile); $iaLog = iaCore::instance()->factory('log'); $iaLog->write(iaLog::ACTION_UPGRADE, $logParams); return true; } catch (Exception $e) { return $e->getMessage(); } } return false; }
private function _downloadTemplate() { $templateName = $_POST['download']; $templatesTempFolder = IA_TMP . 'templates' . IA_DS; if (!is_dir($templatesTempFolder)) { mkdir($templatesTempFolder); } $filePath = $templatesTempFolder . $templateName; $fileName = $filePath . '.zip'; // save remote template file iaUtil::downloadRemoteContent(iaUtil::REMOTE_TOOLS_URL . 'install/' . $templateName . IA_URL_DELIMITER . IA_VERSION, $fileName); if (file_exists($fileName)) { if (is_writable(IA_FRONT_TEMPLATES)) { // delete previous folder if (is_dir(IA_FRONT_TEMPLATES . $templateName)) { unlink(IA_FRONT_TEMPLATES . $templateName); } include_once IA_INCLUDES . 'utils' . IA_DS . 'pclzip.lib.php'; $pclZip = new PclZip($fileName); $pclZip->extract(PCLZIP_OPT_PATH, IA_FRONT_TEMPLATES . $templateName); $this->addMessage(iaLanguage::getf('template_downloaded', array('name' => $templateName)), false); return true; } else { $this->_error = true; $this->addMessage('upload_template_error'); } } return false; }