Пример #1
0
 /**
  * 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;
 }