summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'shared/classes/gentoo_package.php')
-rw-r--r--shared/classes/gentoo_package.php21
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;
}
}
?>