diff options
author | Eudyptula <eitan@mosenkis.net> | 2009-07-28 14:37:06 -0400 |
---|---|---|
committer | Eudyptula <eitan@mosenkis.net> | 2009-07-28 14:37:06 -0400 |
commit | 51a39822c8a8c0efe86d4d8939ed06a752f5e927 (patch) | |
tree | b6ed719283096f41a101f2e5f72cbca8207706a4 /shared | |
parent | Converted frontend wizard form element classes to not be specific to the fron... (diff) | |
download | ingenue-51a39822c8a8c0efe86d4d8939ed06a752f5e927.tar.gz ingenue-51a39822c8a8c0efe86d4d8939ed06a752f5e927.tar.bz2 ingenue-51a39822c8a8c0efe86d4d8939ed06a752f5e927.zip |
Made package selector, pkglist more efficient by filtering out package metadata that we don't use from the array
Diffstat (limited to 'shared')
-rw-r--r-- | shared/classes/gentoo_package.php | 17 | ||||
-rw-r--r-- | shared/classes/gentoo_profile.php | 5 |
2 files changed, 12 insertions, 10 deletions
diff --git a/shared/classes/gentoo_package.php b/shared/classes/gentoo_package.php index 41fec01..e13878e 100644 --- a/shared/classes/gentoo_package.php +++ b/shared/classes/gentoo_package.php @@ -46,25 +46,26 @@ class sql_gentoo_package extends sql_row_obj { ) ); - function &to_array($skip_masked=false) { + function &to_array($skip_masked=false, $trim=null) { $r=array(); foreach (explode("\n", $this->data) as $line) { if (!strlen($line)) continue; list($name, $val)=explode(': ', $line, 2); $name=strtolower($name); - $r[$name]=$val; - } - if (!$skip_masked) { - $r['masked']=$this->is_masked($r); + if (!$skip_masked && $name == 'keywords') + $r['masked']=$this->is_masked($val); + if (!isset($trim) || in_array($name, $trim)) + $r[$name]=$val; } return $r; } - function is_masked(&$array=null) { - if ($array === null) { + function is_masked($keywords=null) { + if ($keywords === null) { $array=$this->to_array(true); + $keywords=$array['keywords']; } $heads=$this->get_profile()->get_headers(); - return !count(array_intersect(explode(' ', $array['keywords']), explode(' ', $heads['accept_keywords']))); + return !count(array_intersect(explode(' ', $keywords), explode(' ', $heads['accept_keywords']))); } public static function from_atom($atom, &$profile=null) { global $S; diff --git a/shared/classes/gentoo_profile.php b/shared/classes/gentoo_profile.php index 51cc5a4..7184aad 100644 --- a/shared/classes/gentoo_profile.php +++ b/shared/classes/gentoo_profile.php @@ -195,13 +195,14 @@ class sql_gentoo_profile extends sql_row_obj { } return true; } - public function &get_packages($omit_masked=false) { + public function &get_packages($omit_masked=false, $trim=null) { global $S; + $skip_masked=!in_array('masked', $trim); $r=$S['pdo']->query('SELECT * FROM `gentoo_packages` WHERE `profile`='.$this->id); $p=array(); while ($pkg=$r->fetch(PDO::FETCH_ASSOC)) { $pkg=new sql_gentoo_package($pkg); - $array=$pkg->to_array(); + $array=$pkg->to_array($skip_masked, $trim); if (!($omit_masked && $array['masked'])) $p[$pkg->bcat][$pkg->lcat][$pkg->name][$pkg->version]=$array; } |