public function act_install($handler, $theme) { try { $addons = json_decode(stripslashes($_POST['payload'])); foreach ($addons as $addon) { $package = new HabariPackage($addon); $package->install(); exit; } } catch (Exception $e) { Session::error('Could not complete install: ' . $e->getMessage()); if (DEBUG) { Utils::debug($e); } } }
/** * @todo the server should return all versions and let hpm decide which version to take */ public static function update_packages($repo) { $client = new RemoteRequest($repo, 'GET'); if (Error::is_error($client->execute())) { return false; } try { $packages = $client->get_response_body(); //Utils::debug( $packages ); $packages = new SimpleXMLElement($packages); $package_list = array(); foreach ($packages->package as $package) { if (!$package['guid'] || !$package->versions) { continue; } $new_package = (array) $package->attributes(); $new_package = $new_package['@attributes']; $new_package['description'] = strval($package->description); $versions = array(); //Utils::debug($package->versions); foreach ($package->versions->version as $version) { $version = (array) $version->attributes(); $version = $version['@attributes']; if (isset($version['habari_version']) && self::is_compatible($version['habari_version'])) { $versions[$version['version']] = $version; } } //Utils::debug( $new_package, $versions ); uksort($versions, create_function('$a,$b', 'return version_compare($b,$a);')); $version = current($versions); if ($version) { $new_package = array_merge($version, $new_package); if ($old_package = HabariPackage::get($new_package['guid'])) { if (isset($new_package['version']) && version_compare($new_package['version'], $old_package->version, '>')) { if ($old_package->status == 'installed') { $new_package['status'] = 'upgrade'; } DB::update(DB::table('packages'), $new_package, array('guid' => $new_package['guid'])); $package_list[] = $old_package->id; } else { $package_list[] = $old_package->id; } } else { DB::insert(DB::table('packages'), $new_package); $package_list[] = DB::last_insert_id(); } } } Options::set('hpm__repo_version', Version::get_habariversion()); return $package_list; } catch (Exception $e) { Utils::debug($e); return false; } }