public static function create_version_types() { foreach (array('stable', 'beta', 'alpha', 'devel') as $version) { VersionType::create(array('name' => $version)); } }
public function devel_release() { $type = VersionType::find_by_name('devel'); $this->static_version_file($type); //This file does not exist when no release has been made yet. }
public static function from_upload(array $data, $key_mode = false) { $create = array(); $file = $data['file']; $user = $data['user']; if ($key_mode) { $keys = collect(function ($key) { return $key->key; }, Pki::find('all', array('select' => '`key`', 'conditions' => array('user_id' => $user->id)))); $sig = $data['sig']; if (!static::verify($file, $sig, $keys)) { throw new NimbleException('Invalid package signature'); } } $package_data = new PackageExtractor($file); if ($user->pear_farm_url() !== $package_data->data['channel']) { throw new Exception('Package channel ' . $package_data->data['channel'] . ' does not match ' . $user->pear_farm_url()); } $name = $package_data->data['name']; $version = $package_data->data['version']['release']; $stability = $package_data->data['stability']['release']; if (!Package::exists(array('name' => $name, 'user_id' => $user->id))) { $package = new Package(array('name' => $name, 'user_id' => $user->id, 'category_id' => Category::find_by_name('Default')->id)); } else { $package = Package::find('first', array('conditions' => array('name' => $name, 'user_id' => $user->id))); } if (!$package->new_record && Version::exists(array('version' => $version, 'package_id' => $package->id))) { throw new NimbleException("There is already a {$version}. You cannot replace existing packages. Please bump the version number and try again." . " You can delete a version from the web interface if needed."); } $package->move_uploaded_file($file, $version); $type = VersionType::find_by_name($stability); $package->versions = array(array('raw_xml' => $package_data->get_package_xml(), 'version' => $version, 'meta' => serialize($package_data->data), 'version_type_id' => $type->id, 'summary' => $package_data->data['summary'], 'description' => $package_data->data['description'], 'min_php' => $package_data->data['dependencies']['required']['php']['min'])); $package->save(); return $package; }