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