|
From: <jhe...@us...> - 2002-11-21 15:16:23
|
Update of /cvsroot/upcase-project/UpCase/lib
In directory sc8-pr-cvs1:/tmp/cvs-serv6833
Modified Files:
uc_installer.php
Log Message:
added package instance object type, replaced getStatus by getPackage,
uninstall now works
Index: uc_installer.php
===================================================================
RCS file: /cvsroot/upcase-project/UpCase/lib/uc_installer.php,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** uc_installer.php 20 Nov 2002 16:06:18 -0000 1.6
--- uc_installer.php 21 Nov 2002 15:16:13 -0000 1.7
***************
*** 7,13 ****
--- 7,16 ----
define("MYSQL_QUERIES", "/upcase/mysql.inc");
define("PACKAGE_SETUP", "/upcase/setup.inc");
+
define("PACKAGE_FULLY_INSTALLED", 1);
define("PACKAGE_PARTIALY_INSTALLED", 0);
+ define("LOCAL_METADATA_DIR", "/packages/db");
+
class UcPackageDBInfo
{
***************
*** 19,22 ****
--- 22,51 ----
}
+ class UcPackageInstance
+ {
+ var $metaDataFile;
+
+ function UcPackageInstance($name, $version, $path, $tblPrefix)
+ {
+ $cfg = $GLOBALS["ucConfig"];
+ $this->name = $name;
+ $this->metaDataFile = $cfg->upcaseRoot . LOCAL_METADATA_DIR
+ . "/" . $name . "-" . $version . ".inc";
+ include($this->metaDataFile);
+ $this->description = $description;
+ $this->homePage = $home_page;
+ $this->version = $version;
+ $this->source = $source;
+ $this->supported = $supported;
+ $this->path = $path;
+ $this->prefix = $tblPrefix;
+ $this->tables = $tables;
+ }
+
+ function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ }
class UcInstaller
***************
*** 28,68 ****
{
$cfg = $GLOBALS["ucConfig"];
! $this->metaBackup = $cfg->upcaseRoot . "/packages/db";
$this->db = new UcSql();
$this->tmpDir = $cfg->upcaseRoot . "/packages/dl";
}
! // Return an array of
! // [pkgversion, pkgurl, tblprefix, pkgstatus]
! function getStatus($packageName, $pkgVersion = '%', $pkgPath = '%')
{
! $query = sprintf($GLOBALS["ucsql_packagestatus"], $packageName,
! $pkgVersion, $pkgPath);
$res = $this->db->Execute($query)
! or die("Unable to look up package: " . $this->db->ErrorMsg()
! . "QUERY: " . $query);
! if ($res->RowCount() == 0)
return array();
! else if ($res->RowCount() > 0)
{
! $ar = array();
! while ($o = $res->FetchNextObject(true))
! {
! $pkg = array();
! $pkg["version"] = $o->PKGVERSION;
! $pkg["url"] = $o->PKGPATH;
! $pkg["prefix"] = $o->TBLPREFIX;
! if ($o->INSTALLED == 1)
! $pkg["status"] = PACKAGE_FULLY_INSTALLED;
! else
! $pkg["status"] = PACKAGE_PARTIALY_INSTALLED;
! $ar[] = $pkg;
! }
! return $ar;
}
- else
- die("Error while counting: " . $this->db->ErrorMsg());
- }
function saveMetaData($package)
{
--- 57,87 ----
{
$cfg = $GLOBALS["ucConfig"];
! $this->metaBackup = $cfg->upcaseRoot . LOCAL_METADATA_DIR;
$this->db = new UcSql();
$this->tmpDir = $cfg->upcaseRoot . "/packages/dl";
}
! function getPackages($pkgName, $pkgVersion = '%',
! $pkgPath = '%', $tblPrefix='%',
! $pkgStatus = '%')
{
! $query = sprintf($GLOBALS["ucsql_getpackages"], $pkgName,
! $pkgVersion, $pkgPath, $tblPrefix, $pkgStatus);
$res = $this->db->Execute($query)
! or die("Unable to get packages: " . $this->db->ErrorMsg());
! if ($res->RowCount() <= 0)
return array();
! $ret = array();
! while (($o = $res->FetchNextObject(true)))
{
! $pkg = new UcPackageInstance($o->PKGNAME, $o->PKGVERSION,
! $o->PKGPATH, $o->TBLPREFIX);
! $pkg->setStatus($o->INSTALLED);
! $ret[] = $pkg;
}
+ return $ret;
+ }
+
function saveMetaData($package)
{
***************
*** 76,80 ****
function download($package)
{
- print("Downloading<br>");
$res = download($package->sourceDir . "/" . $package->source,
$this->tmpDir . "/" . $package->source);
--- 95,98 ----
***************
*** 125,128 ****
--- 143,149 ----
function setupMySQL($package, $sqlPath, $tblPrefix)
{
+ if (!file_exists($sqlPath . MYSQL_QUERIES))
+ return false;
+
$tblprefix = $tblPrefix . "_";
include($sqlPath . MYSQL_QUERIES);
***************
*** 164,171 ****
}
! function unregisterPackage($packageName, $packageVersion, $relPath, $tblPrefix)
{
$query = sprintf($GLOBALS["ucsql_packageunregister"],
! $packageName, $packageVersion, $relPath, $tblPrefix);
$this->db->Execute($query)
or die("Unable to unregister package: " . $this->db->ErrorMsg());
--- 185,196 ----
}
! function unregisterPackage($packageInstance)
!
{
$query = sprintf($GLOBALS["ucsql_packageunregister"],
! $packageInstance->name,
! $packageInstance->version,
! $packageInstance->path,
! $packageInstance->prefix);
$this->db->Execute($query)
or die("Unable to unregister package: " . $this->db->ErrorMsg());
***************
*** 193,206 ****
or die("Invalid URL");
$this->registerPackage($package, $relPath, $tblPrefix)
! or die("Unable to register package to be installed");
createDirectory($pkgPath)
or die("Unable to create directory $pkgPath");
$this->unpack($package, $pkgPath)
or die("Unable to unpack package");
! $this->setupMySQL($package, $pkgPath, $tblPrefix)
! or die("Unable to set up MySQL");
! $this->setupPackage($package, $relPath, $tblPrefix)
! or die("Unable to set up package");
$this->setInstallComplete($package, $relPath, $tblPrefix);
}
--- 218,242 ----
or die("Invalid URL");
$this->registerPackage($package, $relPath, $tblPrefix)
! or die("Unable to register package to be installed");
createDirectory($pkgPath)
or die("Unable to create directory $pkgPath");
$this->unpack($package, $pkgPath)
or die("Unable to unpack package");
! if ($package->supported == 1)
! {
! $this->setupMySQL($package, $pkgPath, $tblPrefix)
! or die("Unable to set up MySQL");
! $this->setupPackage($package, $relPath, $tblPrefix)
! or die("Unable to set up package");
! $redirect = $cfg->siteUrl . "/" . $relPath;
! }
! else
! {
! $redirect = $cfg->siteUrl . "/" . $relPath
! . "/" . $package->setupScript
! . "?prefix=" . $tblPrefix;
! }
$this->setInstallComplete($package, $relPath, $tblPrefix);
+ return $redirect;
}
***************
*** 208,224 ****
{
$cfg = $GLOBALS["ucConfig"];
! $metaData = $this->metaBackup . "/" . $packageName . "-" .
! $packageVersion . ".inc";
! $pkgAr = $this->getStatus($packageName, $packageVersion, $relUrl);
! $tblPrefix = $pkgAr[0]["prefix"];
! include($metaData);
$tablesAr = array();
! foreach ($tables as $table)
! $tablesAr[] = $tblPrefix . "_" . $table;
$tablesList = join(',', $tablesAr);
$query = "DROP TABLE " . $tablesList;
$this->db->Execute($query);
! // or die("Unable to drop package tables: " . $this->db->ErrorMsg());
! $this->unregisterPackage($packageName, $packageVersion, $relUrl, $tblPrefix);
rrmdir($cfg->siteRoot . "/" . $relUrl);
}
--- 244,256 ----
{
$cfg = $GLOBALS["ucConfig"];
! $pkgAr = $this->getPackages($packageName, $packageVersion, $relUrl);
! $package = $pkgAr[0];
$tablesAr = array();
! foreach ($package->tables as $table)
! $tablesAr[] = $package->prefix . "_" . $table;
$tablesList = join(',', $tablesAr);
$query = "DROP TABLE " . $tablesList;
$this->db->Execute($query);
! $this->unregisterPackage($package);
rrmdir($cfg->siteRoot . "/" . $relUrl);
}
|