ALIB: Made it easier to debug the SQL statements, removed the install/uninstall code.

This commit is contained in:
paul 2007-01-24 15:55:23 +00:00
parent 6276fbbe22
commit 7d4a03d26d
4 changed files with 136 additions and 394 deletions

View File

@ -18,21 +18,6 @@ define('ALIBERR_NOTEXISTS', 31);
* @link http://www.campware.org * @link http://www.campware.org
*/ */
class Alib { class Alib {
//class Alib extends Subjects {
//public $sessid = NULL;
/**
* Constructor
*
* @param DB $dbc
* @param array $config
*/
// public function __construct(&$dbc, $config)
// {
// parent::__construct($dbc, $config);
// } // constructor
/* ======================================================= public methods */ /* ======================================================= public methods */
/* ----------------------------------------------- session/authentication */ /* ----------------------------------------------- session/authentication */
@ -56,8 +41,8 @@ class Alib {
return $sessid; return $sessid;
} }
$userid = Subjects::GetSubjId($login); $userid = Subjects::GetSubjId($login);
$sql = "INSERT INTO ".$CC_CONFIG['sessTable']." (sessid, userid, login, ts) $sql = "INSERT INTO ".$CC_CONFIG['sessTable']." (sessid, userid, login, ts)"
VALUES('$sessid', '$userid', '$login', now())"; ." VALUES('$sessid', '$userid', '$login', now())";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -83,8 +68,8 @@ class Alib {
} elseif (PEAR::isError($ct)) { } elseif (PEAR::isError($ct)) {
return $ct; return $ct;
} else { } else {
$sql = "DELETE FROM ".$CC_CONFIG['sessTable']." $sql = "DELETE FROM ".$CC_CONFIG['sessTable']
WHERE sessid='$sessid'"; ." WHERE sessid='$sessid'";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -103,8 +88,8 @@ class Alib {
private static function CheckAuthToken($sessid) private static function CheckAuthToken($sessid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG['sessTable']." $sql = "SELECT count(*) as cnt FROM ".$CC_CONFIG['sessTable']
WHERE sessid='$sessid'"; ." WHERE sessid='$sessid'";
$c = $CC_DBC->getOne($sql); $c = $CC_DBC->getOne($sql);
return ($c == 1 ? TRUE : (PEAR::isError($c) ? $c : FALSE )); return ($c == 1 ? TRUE : (PEAR::isError($c) ? $c : FALSE ));
} //fn checkAuthToken } //fn checkAuthToken
@ -148,8 +133,8 @@ class Alib {
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$permid = $CC_DBC->nextId($CC_CONFIG['permTable']."_id_seq"); $permid = $CC_DBC->nextId($CC_CONFIG['permTable']."_id_seq");
$sql = "INSERT INTO ".$CC_CONFIG['permTable']." (permid, subj, action, obj, type) $sql = "INSERT INTO ".$CC_CONFIG['permTable']." (permid, subj, action, obj, type)"
VALUES ($permid, $sid, '$action', $oid, '$type')"; ." VALUES ($permid, $sid, '$action', $oid, '$type')";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return($r); return($r);
@ -414,8 +399,8 @@ class Alib {
public static function GetObjPerms($id) public static function GetObjPerms($id)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT s.login, p.* FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['subjTable']." s $sql = "SELECT s.login, p.* FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['subjTable']." s"
WHERE s.id=p.subj AND p.obj=$id"; ." WHERE s.id=p.subj AND p.obj=$id";
return $CC_DBC->getAll($sql); return $CC_DBC->getAll($sql);
} // fn GetObjPerms } // fn GetObjPerms
@ -429,18 +414,16 @@ class Alib {
public static function GetSubjPerms($sid) public static function GetSubjPerms($sid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = " $sql = "SELECT t.name, t.type as otype , p.*"
SELECT t.name, t.type as otype , p.* ." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['treeTable']." t"
FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['treeTable']." t ." WHERE t.id=p.obj AND p.subj=$sid";
WHERE t.id=p.obj AND p.subj=$sid";
$a1 = $CC_DBC->getAll($sql); $a1 = $CC_DBC->getAll($sql);
if (PEAR::isError($a1)) { if (PEAR::isError($a1)) {
return $a1; return $a1;
} }
$sql2 = " $sql2 = "SELECT c.cname as name, 'C'as otype, p.*"
SELECT c.cname as name, 'C'as otype, p.* ." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['classTable']." c"
FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['classTable']." c ." WHERE c.id=p.obj AND p.subj=$sid";
WHERE c.id=p.obj AND p.subj=$sid";
$a2 = $CC_DBC->getAll($sql2); $a2 = $CC_DBC->getAll($sql2);
if (PEAR::isError($a2)) { if (PEAR::isError($a2)) {
return $a2; return $a2;
@ -492,8 +475,8 @@ class Alib {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
for ($c = 1; $c > 0; ){ for ($c = 1; $c > 0; ){
$sessid = md5(uniqid(rand())); $sessid = md5(uniqid(rand()));
$sql = "SELECT count(*) FROM ".$CC_CONFIG['sessTable']." $sql = "SELECT count(*) FROM ".$CC_CONFIG['sessTable']
WHERE sessid='$sessid'"; ." WHERE sessid='$sessid'";
$c = $CC_DBC->getOne($sql); $c = $CC_DBC->getOne($sql);
if (PEAR::isError($c)) { if (PEAR::isError($c)) {
return $c; return $c;
@ -517,12 +500,11 @@ class Alib {
public static function DumpPerms($indstr=' ', $ind='') public static function DumpPerms($indstr=' ', $ind='')
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$arr = $CC_DBC->getAll(" $sql = "SELECT s.login, p.action, p.type"
SELECT s.login, p.action, p.type ." FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['subjTable']." s"
FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['subjTable']." s ." WHERE s.id=p.subj"
WHERE s.id=p.subj ." ORDER BY p.permid";
ORDER BY p.permid $arr = $CC_DBC->getAll($sql);
");
if (PEAR::isError($arr)) { if (PEAR::isError($arr)) {
return $arr; return $arr;
} }
@ -649,58 +631,5 @@ class Alib {
} }
} // fn test } // fn test
/**
* Create tables + initialize
*
* @return void
*/
// public function install()
// {
// parent::install();
// $CC_DBC->query("CREATE TABLE {$this->permTable} (
// permid int not null PRIMARY KEY,
// subj int REFERENCES {$this->subjTable} ON DELETE CASCADE,
// action varchar(20),
// obj int,
// type char(1)
// )");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->permTable}_permid_idx
// ON {$this->permTable} (permid)");
// $CC_DBC->query("CREATE INDEX {$this->permTable}_subj_obj_idx
// ON {$this->permTable} (subj, obj)");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->permTable}_all_idx
// ON {$this->permTable} (subj, action, obj)");
// $CC_DBC->createSequence("{$this->permTable}_id_seq");
//
// $CC_DBC->query("CREATE TABLE {$this->sessTable} (
// sessid char(32) not null PRIMARY KEY,
// userid int REFERENCES {$this->subjTable} ON DELETE CASCADE,
// login varchar(255),
// ts timestamp
// )");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->sessTable}_sessid_idx
// ON {$this->sessTable} (sessid)");
// $CC_DBC->query("CREATE INDEX {$this->sessTable}_userid_idx
// ON {$this->sessTable} (userid)");
// $CC_DBC->query("CREATE INDEX {$this->sessTable}_login_idx
// ON {$this->sessTable} (login)");
// } // fn install
/**
* Drop tables etc.
*
* @return void
*/
// public function uninstall()
// {
// global $CC_CONFIG, $CC_DBC;
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['permTable']);
// $CC_DBC->dropSequence($CC_CONFIG['permTable']."_id_seq");
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['sessTable']);
// parent::uninstall();
// } // fn uninstall
} // class Alib } // class Alib
?> ?>

View File

@ -74,10 +74,8 @@ class M2tree {
} }
$escapedName = pg_escape_string($p_name); $escapedName = pg_escape_string($p_name);
$escapedType = pg_escape_string($p_type); $escapedType = pg_escape_string($p_type);
$r = $CC_DBC->query(" $r = $CC_DBC->query("INSERT INTO ".$CC_CONFIG['treeTable']." (id, name, type)"
INSERT INTO ".$CC_CONFIG['treeTable']." (id, name, type) ." VALUES ($oid, '$escapedName', '$escapedType')");
VALUES ($oid, '$escapedName', '$escapedType')
");
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return M2tree::_dbRollback($r); return M2tree::_dbRollback($r);
} }
@ -334,11 +332,10 @@ class M2tree {
$escapedName = pg_escape_string($name); $escapedName = pg_escape_string($name);
$parcond = (is_null($parId) ? "parid is null" : $parcond = (is_null($parId) ? "parid is null" :
"parid='$parId' AND level=1"); "parid='$parId' AND level=1");
$r = $CC_DBC->getOne(" $sql = "SELECT id FROM ".$CC_CONFIG['treeTable']." t"
SELECT id FROM ".$CC_CONFIG['treeTable']." t ." LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=objid"
LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=objid ." WHERE name='$escapedName' AND $parcond";
WHERE name='$escapedName' AND $parcond" $r = $CC_DBC->getOne($sql);
);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -398,8 +395,8 @@ class M2tree {
global $CC_DBC; global $CC_DBC;
$r = 0; $r = 0;
if (is_numeric($p_oid)) { if (is_numeric($p_oid)) {
$sql = "SELECT parid FROM ".$CC_CONFIG['structTable']." $sql = "SELECT parid FROM ".$CC_CONFIG['structTable']
WHERE objid=$p_oid AND level=1"; ." WHERE objid=$p_oid AND level=1";
$r = $CC_DBC->getOne($sql); $r = $CC_DBC->getOne($sql);
} }
return $r; return $r;
@ -419,21 +416,19 @@ class M2tree {
{ {
global $CC_CONFIG; global $CC_CONFIG;
global $CC_DBC; global $CC_DBC;
$path = $CC_DBC->getAll(" $sql = "SELECT $flds"
SELECT $flds ." FROM ".$CC_CONFIG['treeTable']
FROM ".$CC_CONFIG['treeTable']." ." LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=parid"
LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=parid ." WHERE objid=$oid"
WHERE objid=$oid ." ORDER BY coalesce(level, 0) DESC";
ORDER BY coalesce(level, 0) DESC $path = $CC_DBC->getAll($sql);
");
if (PEAR::isError($path)) { if (PEAR::isError($path)) {
return $path; return $path;
} }
if ($withSelf) { if ($withSelf) {
$r = $CC_DBC->getRow(" $sql = "SELECT $flds FROM ".$CC_CONFIG['treeTable']
SELECT $flds FROM ".$CC_CONFIG['treeTable']." ." WHERE id=$oid";
WHERE id=$oid $r = $CC_DBC->getRow($sql);
");
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -457,13 +452,12 @@ class M2tree {
{ {
global $CC_CONFIG; global $CC_CONFIG;
global $CC_DBC; global $CC_DBC;
$r = $CC_DBC->getAll(" $sql = "SELECT $flds"
SELECT $flds ." FROM ".$CC_CONFIG['treeTable']
FROM ".$CC_CONFIG['treeTable']." ." INNER JOIN ".$CC_CONFIG['structTable']." ON id=objid AND level=1"
INNER JOIN ".$CC_CONFIG['structTable']." ON id=objid AND level=1 ." WHERE parid=$oid"
WHERE parid=$oid ." ORDER BY $order";
ORDER BY $order $r = $CC_DBC->getAll($sql);
");
return $r; return $r;
} // fn getDir } // fn getDir
@ -487,12 +481,11 @@ class M2tree {
if (is_null($rootId)) { if (is_null($rootId)) {
$rootId = M2tree::GetRootNode(); $rootId = M2tree::GetRootNode();
} }
$re = $CC_DBC->getRow(" $sql = "SELECT $flds"
SELECT $flds ." FROM ".$CC_CONFIG['treeTable']
FROM ".$CC_CONFIG['treeTable']." ." LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=objid AND parid=$rootId"
LEFT JOIN ".$CC_CONFIG['structTable']." s ON id=objid AND parid=$rootId ." WHERE id=$oid";
WHERE id=$oid $re = $CC_DBC->getRow($sql);
");
if (PEAR::isError($re)) { if (PEAR::isError($re)) {
return $re; return $re;
} }
@ -643,16 +636,14 @@ class M2tree {
} }
$lvl = $lvl['level']; $lvl = $lvl['level'];
// release downside structure // release downside structure
$r = $CC_DBC->query(" $sql = "DELETE FROM ".$CC_CONFIG['structTable']
DELETE FROM ".$CC_CONFIG['structTable']." ." WHERE rid IN ("
WHERE rid IN ( ." SELECT s3.rid FROM ".$CC_CONFIG['structTable']." s1"
SELECT s3.rid FROM ".$CC_CONFIG['structTable']." s1 ." INNER JOIN ".$CC_CONFIG['structTable']." s2 ON s1.objid=s2.objid"
INNER JOIN ".$CC_CONFIG['structTable']." s2 ON s1.objid=s2.objid ." INNER JOIN ".$CC_CONFIG['structTable']." s3 ON s3.objid=s1.objid"
INNER JOIN ".$CC_CONFIG['structTable']." s3 ON s3.objid=s1.objid ." WHERE (s1.parid=$oid OR s1.objid=$oid)"
WHERE (s1.parid=$oid OR s1.objid=$oid) ." AND s2.parid=1 AND s3.level>(s2.level-$lvl) )";
AND s2.parid=1 AND s3.level>(s2.level-$lvl) $r = $CC_DBC->query($sql);
)
");
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -752,135 +743,6 @@ class M2tree {
} // fn dumpTree } // fn dumpTree
/**
* Create tables + initialize root node
* @return err/void
*/
// public function install()
// {
// $r = $CC_DBC->query("BEGIN");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE TABLE {$this->treeTable} (
// id int not null PRIMARY KEY,
// name varchar(255) not null default'',
// -- parid int,
// type varchar(255) not null default'',
// param varchar(255)
// )");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->createSequence("{$this->treeTable}_id_seq");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE UNIQUE INDEX {$this->treeTable}_id_idx
// ON {$this->treeTable} (id)");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->treeTable}_name_idx
// ON {$this->treeTable} (name)");
// if (PEAR::isError($r)) {
// return $r;
// }
//
// $r = $CC_DBC->query("CREATE TABLE {$this->structTable} (
// rid int not null PRIMARY KEY,
// objid int not null REFERENCES {$this->treeTable} ON DELETE CASCADE,
// parid int not null REFERENCES {$this->treeTable} ON DELETE CASCADE,
// level int
// )");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->createSequence("{$this->structTable}_id_seq");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE UNIQUE INDEX {$this->structTable}_rid_idx
// ON {$this->structTable} (rid)");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->structTable}_objid_idx
// ON {$this->structTable} (objid)");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->structTable}_parid_idx
// ON {$this->structTable} (parid)");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("CREATE INDEX {$this->structTable}_level_idx
// ON {$this->structTable} (level)");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("
// CREATE UNIQUE INDEX {$this->structTable}_objid_level_idx
// ON {$this->structTable} (objid, level)
// ");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("
// CREATE UNIQUE INDEX {$this->structTable}_objid_parid_idx
// ON {$this->structTable} (objid, parid)
// ");
// if (PEAR::isError($r)) {
// return $r;
// }
//
// $oid = $CC_DBC->nextId("{$this->treeTable}_id_seq");
// if (PEAR::isError($oid)) {
// return $oid;
// }
// $r = $CC_DBC->query("
// INSERT INTO {$this->treeTable}
// (id, name, type)
// VALUES
// ($oid, '{$this->rootNodeName}', 'RootNode')
// ");
// if (PEAR::isError($r)) {
// return $r;
// }
// $r = $CC_DBC->query("COMMIT");
// if (PEAR::isError($r)) {
// return $r;
// }
// } // fn install
/**
* Drop all tables and sequences.
* @return void
*/
// public function uninstall()
// {
// global $CC_DBC;
// global $CC_CONFIG;
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['structTable']);
// $CC_DBC->dropSequence($CC_CONFIG['structTable']."_id_seq");
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['treeTable']);
// $CC_DBC->dropSequence($CC_CONFIG['treeTable']."_id_seq");
// } // fn uninstall
/**
* Uninstall and install.
* @return void
*/
// public function reinstall()
// {
// $this->uninstall();
// $this->install();
// } // fn reinstall
/** /**
* Clean up tree - delete all except the root node. * Clean up tree - delete all except the root node.
* @return void|PEAR_Error * @return void|PEAR_Error

View File

@ -18,17 +18,6 @@ require_once("M2tree.php");
class ObjClasses { class ObjClasses {
//class ObjClasses extends M2tree { //class ObjClasses extends M2tree {
/**
* @param object $dbc
* @param array $config
* @return this
*/
// public function __construct(&$dbc, $config)
// {
// parent::__construct($dbc, $config);
// }
/* ======================================================= public methods */ /* ======================================================= public methods */
/** /**
@ -79,14 +68,16 @@ class ObjClasses {
*/ */
public static function RemoveClassById($cid) public static function RemoveClassById($cid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$r = $CC_DBC->query("DELETE FROM ".$CC_CONFIG['cmembTable']." $sql = "DELETE FROM ".$CC_CONFIG['cmembTable']
WHERE cid=$cid"); ." WHERE cid=$cid";
$r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
$r = $CC_DBC->query("DELETE FROM ".$CC_CONFIG['classTable']." $sql = "DELETE FROM ".$CC_CONFIG['classTable']
WHERE id=$cid"); ." WHERE id=$cid";
$r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -104,8 +95,9 @@ class ObjClasses {
public static function AddObjectToClass($cid, $oid) public static function AddObjectToClass($cid, $oid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$r = $CC_DBC->query("INSERT INTO ".$CC_CONFIG['cmembTable']." (cid, objid) $sql = "INSERT INTO ".$CC_CONFIG['cmembTable']." (cid, objid)"
VALUES ($cid, $oid)"); ." VALUES ($cid, $oid)";
$r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -123,8 +115,9 @@ class ObjClasses {
public static function RemoveObjectFromClass($oid, $cid=NULL) public static function RemoveObjectFromClass($oid, $cid=NULL)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$r = $CC_DBC->query("DELETE FROM ".$CC_CONFIG['cmembTable']." $sql = "DELETE FROM ".$CC_CONFIG['cmembTable']
WHERE objid=$oid".(is_null($cid)? '':" AND cid=$cid")); ." WHERE objid=$oid".(is_null($cid)? '':" AND cid=$cid");
$r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -162,8 +155,9 @@ class ObjClasses {
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$cname = pg_escape_string($cname); $cname = pg_escape_string($cname);
return $CC_DBC->getOne($query = "SELECT id FROM ".$CC_CONFIG['classTable']." $sql = "SELECT id FROM ".$CC_CONFIG['classTable']
WHERE cname='$cname'"); ." WHERE cname='$cname'";
return $CC_DBC->getOne($sql);
} }
@ -175,7 +169,7 @@ class ObjClasses {
*/ */
public static function GetClassName($id) public static function GetClassName($id)
{ {
global $CC_DBC, $CC_CONFIG; global $CC_DBC, $CC_CONFIG;
$sql = "SELECT cname FROM ".$CC_CONFIG['classTable']." WHERE id=$id"; $sql = "SELECT cname FROM ".$CC_CONFIG['classTable']." WHERE id=$id";
return $CC_DBC->getOne($sql); return $CC_DBC->getOne($sql);
} }
@ -190,8 +184,9 @@ class ObjClasses {
public static function IsClass($id) public static function IsClass($id)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$r = $CC_DBC->getOne("SELECT count(*) FROM ".$CC_CONFIG['classTable']." $sql = "SELECT count(*) FROM ".$CC_CONFIG['classTable']
WHERE id=$id"); ." WHERE id=$id";
$r = $CC_DBC->getOne($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
@ -219,10 +214,10 @@ class ObjClasses {
*/ */
public static function ListClass($id) public static function ListClass($id)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
return $CC_DBC->getAll(" $sql = "SELECT t.* FROM ".$CC_CONFIG['cmembTable']." cm, ".$CC_CONFIG['treeTable']." t"
SELECT t.* FROM ".$CC_CONFIG['cmembTable']." cm, ".$CC_CONFIG['treeTable']." t ." WHERE cm.cid=$id AND cm.objid=t.id";
WHERE cm.cid=$id AND cm.objid=t.id"); return $CC_DBC->getAll($sql);
} }
@ -240,13 +235,12 @@ class ObjClasses {
public static function DumpClasses($indstr=' ', $ind='') public static function DumpClasses($indstr=' ', $ind='')
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT cname, count(cm.objid)as cnt FROM ".$CC_CONFIG['classTable']." c"
." LEFT JOIN ".$CC_CONFIG['cmembTable']." cm ON c.id=cm.cid"
." GROUP BY cname, c.id ORDER BY c.id";
$r = $ind.join(', ', array_map( $r = $ind.join(', ', array_map(
create_function('$v', 'return "{$v[\'cname\']} ({$v[\'cnt\']})";'), create_function('$v', 'return "{$v[\'cname\']} ({$v[\'cnt\']})";'),
$CC_DBC->getAll(" $CC_DBC->getAll($sql)
SELECT cname, count(cm.objid)as cnt FROM ".$CC_CONFIG['classTable']." c
LEFT JOIN ".$CC_CONFIG['cmembTable']." cm ON c.id=cm.cid
GROUP BY cname, c.id ORDER BY c.id
")
))."\n"; ))."\n";
return $r; return $r;
} }
@ -304,7 +298,7 @@ class ObjClasses {
$test_dump .= ObjClasses::DumpClasses(); $test_dump .= ObjClasses::DumpClasses();
ObjClasses::DeleteData(); ObjClasses::DeleteData();
if ($test_dump == $test_correct) { if ($test_dump == $test_correct) {
$test_log .= "class: OK\n"; $test_log .= "class: OK\n";
return TRUE; return TRUE;
} else { } else {
return PEAR::raiseError( return PEAR::raiseError(
@ -314,42 +308,5 @@ class ObjClasses {
} }
} }
/**
* Create tables + initialize
*
*/
// public function install()
// {
// parent::install();
// $CC_DBC->query("CREATE TABLE {$this->classTable} (
// id int not null PRIMARY KEY,
// cname varchar(20)
// )");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->classTable}_id_idx
// ON {$this->classTable} (id)");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->classTable}_cname_idx
// ON {$this->classTable} (cname)");
//
// $CC_DBC->query("CREATE TABLE {$this->cmembTable} (
// objid int not null,
// cid int not null
// )");
// $CC_DBC->query("CREATE UNIQUE INDEX {$this->cmembTable}_idx
// ON {$this->cmembTable} (objid, cid)");
// }
/**
* Drop tables etc.
*
*/
// public static function Uninstall()
// {
// global $CC_CONFIG, $CC_DBC;
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['classTable']);
// $CC_DBC->query("DROP TABLE ".$CC_CONFIG['cmembTable']);
// parent::uninstall();
// }
} // class ObjClasses } // class ObjClasses
?> ?>

View File

@ -49,8 +49,8 @@ class Subjects {
if (!is_null($p_pass) && !$p_passenc) { if (!is_null($p_pass) && !$p_passenc) {
$p_pass = md5($p_pass); $p_pass = md5($p_pass);
} }
$sql = "INSERT INTO ".$CC_CONFIG['subjTable']." (id, login, pass, type, realname) $sql = "INSERT INTO ".$CC_CONFIG['subjTable']." (id, login, pass, type, realname)"
VALUES ($id, '$p_login', ". ." VALUES ($id, '$p_login', ".
(is_null($p_pass) ? "'!', 'G'" : "'$p_pass', 'U'").", (is_null($p_pass) ? "'!', 'G'" : "'$p_pass', 'U'").",
'$p_realname')"; '$p_realname')";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
@ -58,7 +58,7 @@ class Subjects {
return $r; return $r;
} }
return $id; return $id;
} // fn addSubj }
/** /**
@ -77,14 +77,14 @@ class Subjects {
if (PEAR::isError($uid)) { if (PEAR::isError($uid)) {
return $uid; return $uid;
} }
$sql = "DELETE FROM ".$CC_CONFIG['smembTable']." $sql = "DELETE FROM ".$CC_CONFIG['smembTable']
WHERE (uid='$uid' OR gid='$uid') AND mid is null"; ." WHERE (uid='$uid' OR gid='$uid') AND mid is null";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
$sql2 = "DELETE FROM ".$CC_CONFIG['subjTable']." $sql2 = "DELETE FROM ".$CC_CONFIG['subjTable']
WHERE login='$login'"; ." WHERE login='$login'";
$r = $CC_DBC->query($sql2); $r = $CC_DBC->query($sql2);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -105,8 +105,8 @@ class Subjects {
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$cpass = md5($pass); $cpass = md5($pass);
$sql = "SELECT id FROM ".$CC_CONFIG['subjTable']." $sql = "SELECT id FROM ".$CC_CONFIG['subjTable']
WHERE login='$login' AND pass='$cpass' AND type='U'"; ." WHERE login='$login' AND pass='$cpass' AND type='U'";
$id = $CC_DBC->getOne($sql); $id = $CC_DBC->getOne($sql);
if (PEAR::isError($id)) { if (PEAR::isError($id)) {
return $id; return $id;
@ -127,8 +127,8 @@ class Subjects {
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$fld = ($failed ? 'lastfail' : 'lastlogin'); $fld = ($failed ? 'lastfail' : 'lastlogin');
$sql = "UPDATE ".$CC_CONFIG['subjTable']." SET $fld=now() $sql = "UPDATE ".$CC_CONFIG['subjTable']." SET $fld=now()"
WHERE login='$login'"; ." WHERE login='$login'";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -163,8 +163,8 @@ class Subjects {
} else { } else {
$oldpCond = ''; $oldpCond = '';
} }
$sql = "UPDATE ".$CC_CONFIG['subjTable']." SET pass='$cpass' $sql = "UPDATE ".$CC_CONFIG['subjTable']." SET pass='$cpass'"
WHERE login='$login' $oldpCond AND type='U'"; ." WHERE login='$login' $oldpCond AND type='U'";
$r = $CC_DBC->query($sql); $r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -239,8 +239,8 @@ class Subjects {
if (PEAR::isError($gid)) { if (PEAR::isError($gid)) {
return $gid; return $gid;
} }
$sql = "SELECT id FROM ".$CC_CONFIG['smembTable']." $sql = "SELECT id FROM ".$CC_CONFIG['smembTable']
WHERE uid='$uid' AND gid='$gid' AND mid is null"; ." WHERE uid='$uid' AND gid='$gid' AND mid is null";
$mid = $CC_DBC->getOne($sql); $mid = $CC_DBC->getOne($sql);
if (is_null($mid)) { if (is_null($mid)) {
return FALSE; return FALSE;
@ -274,8 +274,8 @@ class Subjects {
{ {
global $CC_CONFIG; global $CC_CONFIG;
global $CC_DBC; global $CC_DBC;
$sql = "SELECT id FROM ".$CC_CONFIG['subjTable']." $sql = "SELECT id FROM ".$CC_CONFIG['subjTable']
WHERE login='$login'"; ." WHERE login='$login'";
return $CC_DBC->getOne($sql); return $CC_DBC->getOne($sql);
} // fn getSubjId } // fn getSubjId
@ -291,8 +291,8 @@ class Subjects {
{ {
global $CC_CONFIG; global $CC_CONFIG;
global $CC_DBC; global $CC_DBC;
$sql = "SELECT $fld FROM ".$CC_CONFIG['subjTable']." $sql = "SELECT $fld FROM ".$CC_CONFIG['subjTable']
WHERE id='$id'"; ." WHERE id='$id'";
return $CC_DBC->getOne($sql); return $CC_DBC->getOne($sql);
} // fn getSubjName } // fn getSubjName
@ -319,13 +319,12 @@ class Subjects {
public static function GetSubjectsWCnt() public static function GetSubjectsWCnt()
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = " $sql = "SELECT count(m.uid)as cnt, s.id, s.login, s.type"
SELECT count(m.uid)as cnt, s.id, s.login, s.type ." FROM ".$CC_CONFIG['subjTable']." s"
FROM ".$CC_CONFIG['subjTable']." s ." LEFT JOIN ".$CC_CONFIG['smembTable']." m ON m.gid=s.id"
LEFT JOIN ".$CC_CONFIG['smembTable']." m ON m.gid=s.id ." WHERE m.mid is null"
WHERE m.mid is null ." GROUP BY s.id, s.login, s.type"
GROUP BY s.id, s.login, s.type ." ORDER BY s.id";
ORDER BY s.id";
return $CC_DBC->getAll($sql); return $CC_DBC->getAll($sql);
} // fn getSubjectsWCnt } // fn getSubjectsWCnt
@ -339,8 +338,8 @@ class Subjects {
public static function IsGroup($gid) public static function IsGroup($gid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT type FROM ".$CC_CONFIG['subjTable']." $sql = "SELECT type FROM ".$CC_CONFIG['subjTable']
WHERE id='$gid'"; ." WHERE id='$gid'";
$r = $CC_DBC->getOne($sql); $r = $CC_DBC->getOne($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -358,9 +357,9 @@ class Subjects {
public static function ListGroup($gid) public static function ListGroup($gid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "SELECT s.id, s.login, s.type $sql = "SELECT s.id, s.login, s.type"
FROM ".$CC_CONFIG['smembTable']." m, ".$CC_CONFIG['subjTable']." s ." FROM ".$CC_CONFIG['smembTable']." m, ".$CC_CONFIG['subjTable']." s"
WHERE m.uid=s.id AND m.mid is null AND m.gid='$gid'"; ." WHERE m.uid=s.id AND m.mid is null AND m.gid='$gid'";
return $CC_DBC->getAll($sql); return $CC_DBC->getAll($sql);
} // fn listGroup } // fn listGroup
@ -377,11 +376,9 @@ class Subjects {
public static function IsMemberOf($uid, $gid) public static function IsMemberOf($uid, $gid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = " $sql = "SELECT count(*)as cnt"
SELECT count(*)as cnt ." FROM ".$CC_CONFIG['smembTable']
FROM ".$CC_CONFIG['smembTable']." ." WHERE uid='$uid' AND gid='$gid'";
WHERE uid='$uid' AND gid='$gid'
";
$res = $CC_DBC->getOne($sql); $res = $CC_DBC->getOne($sql);
if (PEAR::isError($res)) { if (PEAR::isError($res)) {
return $res; return $res;
@ -407,8 +404,8 @@ class Subjects {
if ($uid == $gid) { if ($uid == $gid) {
return PEAR::raiseError("Subjects::_addMemb: uid==gid ($uid)", ALIBERR_BADSMEMB); return PEAR::raiseError("Subjects::_addMemb: uid==gid ($uid)", ALIBERR_BADSMEMB);
} }
$sql = "SELECT id, level, mid FROM ".$CC_CONFIG['smembTable']." $sql = "SELECT id, level, mid FROM ".$CC_CONFIG['smembTable']
WHERE uid='$uid' AND gid='$gid' ORDER BY level ASC"; ." WHERE uid='$uid' AND gid='$gid' ORDER BY level ASC";
$a = $CC_DBC->getAll($sql); $a = $CC_DBC->getAll($sql);
if (PEAR::isError($a)) { if (PEAR::isError($a)) {
return $a; return $a;
@ -417,8 +414,8 @@ class Subjects {
$a0 = $a[0]; $a0 = $a[0];
$id = $a0['id']; $id = $a0['id'];
if ($level < intval($a0['level'])){ if ($level < intval($a0['level'])){
$sql2 = "UPDATE ".$CC_CONFIG['smembTable']." $sql2 = "UPDATE ".$CC_CONFIG['smembTable']
SET level='$level', mid=$mid WHERE id='{$a0['id']}'"; ." SET level='$level', mid=$mid WHERE id='{$a0['id']}'";
$r = $CC_DBC->query($sql2); $r = $CC_DBC->query($sql2);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -429,10 +426,8 @@ class Subjects {
if (PEAR::isError($id)) { if (PEAR::isError($id)) {
return $id; return $id;
} }
$sql3 = " $sql3 = "INSERT INTO ".$CC_CONFIG['smembTable']." (id, uid, gid, level, mid)"
INSERT INTO ".$CC_CONFIG['smembTable']." (id, uid, gid, level, mid) ." VALUES ($id, $uid, $gid, $level, $mid)";
VALUES ($id, $uid, $gid, $level, $mid)
";
$r = $CC_DBC->query($sql3); $r = $CC_DBC->query($sql3);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
@ -451,8 +446,8 @@ class Subjects {
private static function _removeMemb($mid) private static function _removeMemb($mid)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = "DELETE FROM ".$CC_CONFIG['smembTable']." $sql = "DELETE FROM ".$CC_CONFIG['smembTable']
WHERE id='$mid'"; ." WHERE id='$mid'";
return $CC_DBC->query($sql); return $CC_DBC->query($sql);
} // fn _removeMemb } // fn _removeMemb
@ -467,9 +462,8 @@ class Subjects {
private static function _listMemb($gid, $uid=NULL) private static function _listMemb($gid, $uid=NULL)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = " $sql = "SELECT id, uid, level FROM ".$CC_CONFIG['smembTable']
SELECT id, uid, level FROM ".$CC_CONFIG['smembTable']." ." WHERE gid='$gid'".(is_null($uid) ? '' : " AND uid='$uid'");
WHERE gid='$gid'".(is_null($uid) ? '' : " AND uid='$uid'");
return $CC_DBC->getAll($sql); return $CC_DBC->getAll($sql);
} // fn _listMemb } // fn _listMemb
@ -484,9 +478,8 @@ class Subjects {
private static function _listRMemb($uid, $gid=NULL) private static function _listRMemb($uid, $gid=NULL)
{ {
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$sql = " $sql = "SELECT id, gid, level FROM ".$CC_CONFIG['smembTable']
SELECT id, gid, level FROM ".$CC_CONFIG['smembTable']." ." WHERE uid='$uid'".(is_null($gid) ? '' : " AND gid='$gid'");
WHERE uid='$uid'".(is_null($gid) ? '' : " AND gid='$gid'");
return $CC_DBC->getAll($sql); return $CC_DBC->getAll($sql);
} // fn listRMemb } // fn listRMemb
@ -536,8 +529,9 @@ class Subjects {
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }
$r = $CC_DBC->query("DELETE FROM ".$CC_CONFIG['smembTable']." $sql = "DELETE FROM ".$CC_CONFIG['smembTable']
WHERE mid is not null"); ." WHERE mid is not null";
$r = $CC_DBC->query($sql);
if (PEAR::isError($r)) { if (PEAR::isError($r)) {
return $r; return $r;
} }