diff options
Diffstat (limited to 'shared/classes/gentoo_profile.php')
-rw-r--r-- | shared/classes/gentoo_profile.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/shared/classes/gentoo_profile.php b/shared/classes/gentoo_profile.php index b2b970f..5657ed1 100644 --- a/shared/classes/gentoo_profile.php +++ b/shared/classes/gentoo_profile.php @@ -133,6 +133,36 @@ class sql_gentoo_profile extends sql_row_obj { } return array($n, $u, $d, $t); } + public function read_pkgsets($update=false) { + global $S; + $file=realpath(BACKEND.'/../gentoo_pkgsets.csv'); + if (!is_readable($file)) return false; + $file=fopen($file, 'r'); + while (!feof($file)) { + $add=array(); + $pkgs=explode("\t", rtrim(fgets($file))); + $name=array_shift($pkgs); + $obj=new sql_gentoo_pkgset(); + if ($update) { + $r=$S['pdo']->query('SELECT * FROM `gentoo_pkgsets` WHERE `profile`='.$this->id.' AND `name`="'.$name.'" LIMIT 1'); + if ($r->rowCount()) { + $obj->from_array($r->fetch(PDO::FETCH_ASSOC), true); + } + } + foreach ($pkgs as $pkg) { + if ($pkg=sql_gentoo_package::from_atom($pkg, $this)) + $add[]="$pkg->bcat$pkg->lcat/$pkg->name"; + } + if (count($add)) { + $obj->profile=$this->id; + $obj->name=$name; + $obj->packages=implode("\n", $add); + $obj->write(); + } elseif (isset($obj->id)) { + $obj->delete(); + } + } + } public function &get_packages() { global $S; $r=$S['pdo']->query('SELECT * FROM `gentoo_packages` WHERE `profile`='.$this->id); |