diff options
Diffstat (limited to 'shared/classes/gentoo_package.php')
-rw-r--r-- | shared/classes/gentoo_package.php | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/shared/classes/gentoo_package.php b/shared/classes/gentoo_package.php index e13878e..2c06a26 100644 --- a/shared/classes/gentoo_package.php +++ b/shared/classes/gentoo_package.php @@ -67,7 +67,7 @@ class sql_gentoo_package extends sql_row_obj { $heads=$this->get_profile()->get_headers(); return !count(array_intersect(explode(' ', $keywords), explode(' ', $heads['accept_keywords']))); } - public static function from_atom($atom, &$profile=null) { + public static function from_atom($atom, &$profile=null, $nomasked=true) { global $S; if (strlen($atom) == 0) return null; if (strpos($atom, '/')) { @@ -77,17 +77,24 @@ class sql_gentoo_package extends sql_row_obj { $bcat=substr($bcat, 0, strlen($bcat)-strlen($lcat)); } } else { - $bcat=$lcat=null; + $bcat=$lcat=''; $name=$atom; } $c=array(); if ($profile) $c[]='`profile`='.$profile->id; - if ($bcat) $c[]='`bcat`="'.$bcat.'"'; - if ($lcat) $c[]='`lcat`="'.$lcat.'"'; - if ($name) $c[]='`name`="'.$name.'"'; + if ($bcat) { + $c[]='`bcat`="'.$bcat.'"'; + $c[]='`lcat`="'.$lcat.'"'; + } + if ($name != '*') $c[]='`name`="'.$name.'"'; $c=implode(' AND ', $c); - $r=$S['pdo']->query('SELECT * FROM `gentoo_packages` WHERE '.$c.' LIMIT 1'); - return $r->rowCount()?new sql_gentoo_package($r->fetch(PDO::FETCH_ASSOC)):null; + $r=$S['pdo']->query('SELECT * FROM `gentoo_packages` WHERE '.$c); + while ($pkg=$r->fetch(PDO::FETCH_ASSOC)) { + $pkg=new sql_gentoo_package($pkg); + if (!$pkg->is_masked()) + return $pkg; + } + return null; } } ?> |