/** * Main method. * * @since 0.1 */ public function execute() { $params = $this->extractRequestParams(); foreach ($params['state'] as &$state) { $state = DistributionRelease::mapState($state); } if (array_key_exists('mediawiki', $params)) { $this->checkForCoreUpdates($params['mediawiki'], $params['state']); } if (array_key_exists('extensions', $params)) { $this->checkForAllExtensionUpdates($params['extensions'], $params['state']); } }
/** * Main method. * * @since 0.1 */ public function execute() { global $wgDistributionDownloads; // Get the requests parameters. $params = $this->extractRequestParams(); $this->addTables('distribution_units'); $this->addTables('distribution_unit_versions', 'unit_versions'); $this->addJoinConds(array('distribution_units' => array('INNER JOIN', 'unit_id=unit_versions.version_unit_id'))); $this->addFields(array('unit_id', 'unit_name', 'unit_url', 'version_nr', 'version_status', 'version_release_date', 'version_directory', 'version_entrypoint', 'version_desc', 'version_authors')); foreach ($params['state'] as &$state) { $state = DistributionRelease::mapState($state); } $this->addWhereFld('version_status', $params['state']); switch ($params['filter']) { case 'term': // TODO $this->addWhere("unit_name LIKE '%{$params['value']}%' OR current_desc LIKE '%{$params['value']}%'"); break; case 'author': // TODO $this->addWhereFld('current_authors', $params['value']); break; case 'tag': // TODO break; } $this->addOption('LIMIT', $params['limit'] + 1); $this->addOption('ORDER BY', 'unit_id'); // Handle the continue parameter when it's provided. if (!is_null($params['continue'])) { // TODO } $count = 0; $extensions = $this->select(__METHOD__); while ($extension = $extensions->fetchObject()) { if (++$count > $params['limit']) { // We've reached the one extra which shows that // there are additional pages to be had. Stop here... // TODO //$this->setContinueEnumParameter( 'continue', '' ); break; } // This is based on // http://search.cpan.org/~dagolden/CPAN-Meta-2.101670/lib/CPAN/Meta/Spec.pm $result = array('name' => $extension->unit_name, 'url' => $extension->unit_url, 'download' => $wgDistributionDownloads . '/' . $extension->unit_name, 'description' => $extension->version_desc, 'version' => $extension->version_nr, 'authors' => $extension->version_authors); $this->getResult()->addValue(array('query', $this->getModuleName()), null, $result); } $this->getResult()->setIndexedTagName_internal(array('query', $this->getModuleName()), 'extension'); }
/** * Saves the metadata of a single extension version into the db. * * @since 0.1 * * @param $metaData Array */ public static function saveExtensionMetadata(array $metaData) { // Get the database connections. $dbr = wfGetDB(DB_SLAVE); // Query for existing units with the same name. $unit = $dbr->selectRow('distribution_units', array('unit_id'), array('unit_name' => $metaData['name'])); // Map the unit values to the db schema. $unitValues = array('unit_name' => $metaData['name'], 'unit_url' => $metaData['url'], 'current_version_nr' => $metaData['version'], 'current_desc' => $metaData['description'], 'current_authors' => $metaData['authors']); // Map the version values to the db schema. $versionValues = array('version_status' => DistributionRelease::mapState(DistributionRelease::getDefaultState()), 'version_desc' => $metaData['description'], 'version_authors' => $metaData['authors'], 'version_directory' => $metaData['directory'], 'version_entrypoint' => $metaData['entrypoint'], 'version_release_date' => $metaData['date']); // Insert or update the unit. if ($unit == false) { self::insertUnit($unitValues, $versionValues); } else { self::updateUnit($unit, $unitValues, $versionValues, $dbr); } }