diff options
Diffstat (limited to 'shared/classes/gentoo_profile.php')
-rw-r--r-- | shared/classes/gentoo_profile.php | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/shared/classes/gentoo_profile.php b/shared/classes/gentoo_profile.php index b705a97..b2b970f 100644 --- a/shared/classes/gentoo_profile.php +++ b/shared/classes/gentoo_profile.php @@ -48,9 +48,12 @@ class sql_gentoo_profile extends sql_row_obj { return $this->headers_cache; } // Reads the data from the Packages file in $this->pkgdir - public function read_Packages($update_pkgs=false) { + public function read_Packages($update_pkgs=false, $verbose=false) { global $conf; - $file=fopen($conf['pkgdir_root'].'/'.$this->pkgdir.'/Packages', 'r'); + if (!is_readable($file="{$conf['pkgdir_root']}/$this->pkgdir/Packages")) { + throw_exception("Packages file doesn't exist for pkgdir $this->pkgdir"); + } + $file=fopen($file, 'r'); $this->headers=''; while (!feof($file)) { $line=rtrim(fgets($file)); @@ -83,6 +86,7 @@ class sql_gentoo_profile extends sql_row_obj { } if (isset($p[$bcat][$lcat][$name][$ver])) { debug("Duplicate package $bcat$lcat/$name-$ver"); + continue; } $p[$bcat][$lcat][$name][$ver]=''; $cur=&$p[$bcat][$lcat][$name][$ver]; @@ -91,20 +95,24 @@ class sql_gentoo_profile extends sql_row_obj { } } unset($cur); - $u=0; + $u=$d=$t=0; if ($update_pkgs) { global $S; $r=$S['pdo']->query('SELECT * FROM `gentoo_packages` WHERE `profile`='.$this->id); while ($pkg=$r->fetch(PDO::FETCH_ASSOC)) { $pkg=new sql_gentoo_package($pkg); if (isset($p[$pkg->bcat][$pkg->lcat][$pkg->name][$pkg->version])) { + $t++; if ($pkg->data != $p[$pkg->bcat][$pkg->lcat][$pkg->name][$pkg->version]) { $u++; $pkg->data=$p[$pkg->bcat][$pkg->lcat][$pkg->name][$pkg->version]; + if ($verbose) echo "U $pkg->bcat$pkg->lcat/$pkg->name/$pkg->version\n"; $pkg->write(); } unset($p[$pkg->bcat][$pkg->lcat][$pkg->name][$pkg->version]); } else { + $d++; + if ($verbose) echo "D $pkg->bcat$pkg->lcat/$pkg->name-$pkg->version\n"; $pkg->delete(); } } @@ -114,14 +122,16 @@ class sql_gentoo_profile extends sql_row_obj { foreach ($lcats as $lcat => $pkgs) { foreach ($pkgs as $pkg => $vers) { foreach ($vers as $ver => $data) { + $t++; $n++; $gp=new sql_gentoo_package(null, $this->id, $bcat, $lcat, $pkg, $ver, $data); + if ($verbose) echo "A $bcat$lcat/$pkg-$ver\n"; $gp->write(); } } } } - return array($n, $u); + return array($n, $u, $d, $t); } public function &get_packages() { global $S; |