download_path); } function procAutoinstallAdminUpdateinfo() { $oModel = &getModel('autoinstall'); $item = $oModel->getLatestPackage(); if($item) { $params["updatedate"] = $item->updatedate; } $params["act"] = "getResourceapiUpdate"; $body = XmlGenerater::generate($params); $buff = FileHandler::getRemoteResource($this->uri, $body, 3, "POST", "application/xml"); $xml = new XmlParser(); $xmlDoc = $xml->parse($buff); $this->updateCategory($xmlDoc); $this->updatePackages($xmlDoc); $this->checkInstalled(); $this->setMessage("success_updated"); } function checkInstalled() { executeQuery("autoinstall.deleteInstalledPackage"); $oModel =& getModel('autoinstall'); $packages = $oModel->getPackages(); foreach($packages as $package) { $real_path = FileHandler::getRealPath($package->path); if(!file_exists($real_path)) { continue; } if($package->path == ".") { $type = "core"; $version = __ZBXE_VERSION__; } else { $path_array = explode("/", $package->path); $target_name = array_pop($path_array); $type = substr(array_pop($path_array), 0, -1); switch($type) { case "module": case "addon": case "layout": case "widget": $config_file = "/conf/info.xml"; break; case "component": $config_file = "/info.xml"; break; case "skin": case "widgetstyle": $config_file = "/skin.xml"; break; default: continue; } $xml = new XmlParser(); $xmlDoc = $xml->loadXmlFile($real_path.$config_file); if(!$xmlDoc) continue; $version = $xmlDoc->{$type}->version->body; } $args = null; $args->package_srl = $package->package_srl; $args->version = $package->version; $args->current_version = $version; if(version_compare($args->version, $args->current_version, ">")) { $args->need_update="Y"; } else { $args->need_update="N"; } $output = executeQuery("autoinstall.insertInstalledPackage", $args); } } function procAutoinstallAdminPackageinstall() { set_time_limit(0); $package_srls = Context::get('package_srl'); $oModel =& getModel('autoinstall'); $packages = explode(',', $package_srls); $ftp_info = Context::getFTPInfo(); if(!$_SESSION['ftp_password']) { $ftp_password = Context::get('ftp_password'); } else { $ftp_password = $_SESSION['ftp_password']; } foreach($packages as $package_srl) { $package = $oModel->getPackage($package_srl); if($ftp_info->sftp && $ftp_info->sftp == 'Y') { $oModuleInstaller = new SFTPModuleInstaller($package); $oModuleInstaller->setPassword($ftp_password); } else { $oModuleInstaller = new FTPModuleInstaller($package); $oModuleInstaller->setPassword($ftp_password); } $output = $oModuleInstaller->install(); if(!$output->toBool()) return $output; } $this->setMessage('success_installed'); } function updatePackages(&$xmlDoc) { $oModel =& getModel('autoinstall'); if(!$xmlDoc->response->packages->item) return; if(!is_array($xmlDoc->response->packages->item)) { $xmlDoc->response->packages->item = array($xmlDoc->response->packages->item); } $targets = array('package_srl', 'updatedate', 'latest_item_srl', 'path', 'version', 'category_srl'); foreach($xmlDoc->response->packages->item as $item) { $args = null; foreach($targets as $target) { $args->{$target} = $item->{$target}->body; } if($oModel->getPackage($args->package_srl)) { executeQuery("autoinstall.updatePackage", $args); } else { executeQuery("autoinstall.insertPackage", $args); } } } function updateCategory(&$xmlDoc) { executeQuery("autoinstall.deleteCategory", $args); $oModel =& getModel('autoinstall'); if(!is_array($xmlDoc->response->categorylist->item)) { $xmlDoc->response->categorylist->item = array($xmlDoc->response->categorylist->item); } foreach($xmlDoc->response->categorylist->item as $item) { $args = null; $args->category_srl = $item->category_srl->body; $args->parent_srl = $item->parent_srl->body; $args->title = $item->title->body; executeQuery("autoinstall.insertCategory", $args); } } } ?>