/** * List latest releases * * @static * @param string Only list release with specific state (Optional) * @return array */ function listLatestReleases($state = '') { global $dbh; $query = "SELECT " . "p.name AS package, " . "r.version AS version, " . "r.state AS state, " . "f.fullpath AS fullpath " . "FROM packages p, releases r, files f " . "WHERE p.package_type = 'pecl' AND p.approved = 1 AND p.id = r.package " . "AND f.package = p.id " . "AND f.release = r.id "; if (release::isValidState($state)) { $better = release::betterStates($state); $query .= " AND (r.state = '{$state}'"; $i = 0; if (is_array($better)) { foreach ($better as $b) { $query .= " OR r.state = '{$b}'"; } } $query .= ")"; } $query .= " ORDER BY p.name"; $sortfunc = "version_compare_firstelem"; $res = $dbh->getAssoc($query, false, null, DB_FETCHMODE_ASSOC, true); foreach ($res as $pkg => $ver) { if (sizeof($ver) > 1) { usort($ver, $sortfunc); } $res[$pkg] = array_pop($ver); $res[$pkg]['filesize'] = (int) @filesize($res[$pkg]['fullpath']); unset($res[$pkg]['fullpath']); } return $res; }