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); } |