Started to convert code to PHP5 using public/private/protected/static and __construct() method, got rid of =& when constructing objects. Improved documentation in many places.

This commit is contained in:
paul 2006-11-14 18:51:43 +00:00
parent bed878246d
commit d7062149ea
10 changed files with 282 additions and 241 deletions

View File

@ -10,19 +10,33 @@ define('ALIBERR_NOTEXISTS', 31);
*
* Authentication/authorization class
*
* @author $Author$
* @author Tomas Hlava <th@red2head.com>
* @author Paul Baranowski <paul@paulbaranowski.org>
* @version $Revision$
* @package Campcaster
* @subpackage Alib
* @see Subjects
* @see GreenBox
* @copyright 2006 MDLF, Inc.
* @license http://www.gnu.org/licenses/gpl.txt
* @link http://www.campware.org
*/
class Alib extends Subjects{
var $permTable;
var $sessTable;
var $login=NULL;
var $userid=NULL;
var $sessid=NULL;
class Alib extends Subjects {
/**
* The name of a database table.
*
* @var string
*/
public $permTable;
/**
* The name of a database table.
*
* @var string
*/
public $sessTable;
//var $login = NULL;
//var $userid = NULL;
public $sessid = NULL;
/**
* Constructor
@ -30,9 +44,9 @@ class Alib extends Subjects{
* @param DB $dbc
* @param array $config
*/
function Alib(&$dbc, $config)
public function __construct(&$dbc, $config)
{
parent::Subjects($dbc, $config);
parent::__construct($dbc, $config);
$this->permTable = $config['tblNamePrefix'].'perms';
$this->sessTable = $config['tblNamePrefix'].'sess';
} // constructor
@ -47,10 +61,9 @@ class Alib extends Subjects{
*
* @param string $login
* @param string $pass
* @return mixed
* boolean/sessionId/err
* @return boolean|sessionId|PEAR_Error
*/
function login($login, $pass)
public function login($login, $pass)
{
if (FALSE === $this->authenticate($login, $pass)) {
$this->setTimeStamp($login, TRUE);
@ -67,9 +80,9 @@ class Alib extends Subjects{
if (PEAR::isError($r)) {
return $r;
}
$this->login = $login;
$this->userid = $userid;
$this->sessid = $sessid;
//$this->login = $login;
//$this->userid = $userid;
//$this->sessid = $sessid;
$this->setTimeStamp($login, FALSE);
return $sessid;
} // fn login
@ -79,12 +92,12 @@ class Alib extends Subjects{
* Logout and destroy session
*
* @param string $sessid
* @return true/err
* @return true|PEAR_Error
*/
function logout($sessid)
public function logout($sessid)
{
$ct = $this->checkAuthToken($sessid);
if($ct === FALSE) {
if ($ct === FALSE) {
return PEAR::raiseError('Alib::logout: not logged ($ct)',
ALIBERR_NOTLOGGED, PEAR_ERROR_RETURN);
} elseif (PEAR::isError($ct)) {
@ -96,9 +109,9 @@ class Alib extends Subjects{
if (PEAR::isError($r)) {
return $r;
}
$this->login = NULL;
$this->userid = NULL;
$this->sessid = NULL;
//$this->login = NULL;
//$this->userid = NULL;
//$this->sessid = NULL;
return TRUE;
}
} // fn logout
@ -108,9 +121,9 @@ class Alib extends Subjects{
* Return true if the token is valid
*
* @param string $sessid
* @return boolean/err
* @return boolean|PEAR_Error
*/
function checkAuthToken($sessid)
private function checkAuthToken($sessid)
{
$sql = "SELECT count(*) as cnt FROM {$this->sessTable}
WHERE sessid='$sessid'";
@ -123,17 +136,20 @@ class Alib extends Subjects{
* Set valid token in alib object
*
* @param string $sessid
* @return boolean/err
* @return TRUE|PEAR_Error
*/
function setAuthToken($sessid)
{
$r = checkAuthToken($sessid);
if(PEAR::isError($r)) return $r;
if(!$r)
return PEAR::raiseError("ALib::setAuthToken: invalid token ($sessid)");
$this->sessid = $sessid;
return TRUE;
} // fn setAuthToken
// public function setAuthToken($sessid)
// {
// $r = $this->checkAuthToken($sessid);
// if (PEAR::isError($r)) {
// return $r;
// }
// if (!$r) {
// return PEAR::raiseError("ALib::setAuthToken: invalid token ($sessid)");
// }
// //$this->sessid = $sessid;
// return TRUE;
// } // fn setAuthToken
/* -------------------------------------------------------- authorization */
@ -150,7 +166,7 @@ class Alib extends Subjects{
* @return int
* local permission id
*/
function addPerm($sid, $action, $oid, $type='A')
public function addPerm($sid, $action, $oid, $type='A')
{
$permid = $this->dbc->nextId("{$this->permTable}_id_seq");
$sql = "INSERT INTO {$this->permTable} (permid, subj, action, obj, type)
@ -167,14 +183,14 @@ class Alib extends Subjects{
* Remove permission record
*
* @param int $permid
* (optional) local permission id
* local permission id
* @param int $subj
* (optional) local user/group id
* local user/group id
* @param int $obj
* (optional) local object id
* @return boolean/error
* local object id
* @return boolean|PEAR_Error
*/
function removePerm($permid=NULL, $subj=NULL, $obj=NULL)
public function removePerm($permid=NULL, $subj=NULL, $obj=NULL)
{
$ca = array();
if ($permid) {
@ -203,7 +219,7 @@ class Alib extends Subjects{
* @return int
* local object id
*/
function _getPermOid($permid)
protected function _getPermOid($permid)
{
$sql = "SELECT obj FROM {$this->permTable} WHERE permid=$permid";
$res = $this->dbc->getOne($sql);
@ -234,7 +250,7 @@ class Alib extends Subjects{
* @return mixed
* boolean/err
*/
function checkPerm($sid, $action, $oid=NULL)
public function checkPerm($sid, $action, $oid=NULL)
{
if (!is_numeric($sid)) {
return FALSE;
@ -322,10 +338,9 @@ class Alib extends Subjects{
* Remove all permissions on object and then remove object itself
*
* @param int $id
* @return mixed
* void/error
* @return void|PEAR_Error
*/
function removeObj($id)
public function removeObj($id)
{
$r = $this->removePerm(NULL, NULL, $id);
if (PEAR::isError($r)) {
@ -340,10 +355,9 @@ class Alib extends Subjects{
* Remove all permissions of subject and then remove subject itself
*
* @param string $login
* @return mixed
* void/error
* @return void|PEAR_Error
*/
function removeSubj($login)
public function removeSubj($login)
{
$uid = $this->getSubjId($login);
if (PEAR::isError($uid)) {
@ -366,9 +380,9 @@ class Alib extends Subjects{
* Get login from session id (token)
*
* @param string $sessid
* @return string/error
* @return string|PEAR_Error
*/
function getSessLogin($sessid)
public function getSessLogin($sessid)
{
$sql = "SELECT login FROM {$this->sessTable} WHERE sessid='$sessid'";
$r = $this->dbc->getOne($sql);
@ -388,9 +402,9 @@ class Alib extends Subjects{
* Get user id from session id.
*
* @param string $sessid
* @return int/error
* @return int|PEAR_Error
*/
function getSessUserId($sessid)
public function getSessUserId($sessid)
{
$sql = "SELECT userid FROM {$this->sessTable} WHERE sessid='$sessid'";
$r = $this->dbc->getOne($sql);
@ -411,9 +425,9 @@ class Alib extends Subjects{
* Get all permissions on object.
*
* @param int $id
* @return array/null/err
* @return array|null|PEAR_Error
*/
function getObjPerms($id)
public function getObjPerms($id)
{
$sql = "SELECT s.login, p.* FROM {$this->permTable} p, {$this->subjTable} s
WHERE s.id=p.subj AND p.obj=$id";
@ -427,7 +441,7 @@ class Alib extends Subjects{
* @param int $sid
* @return array
*/
function getSubjPerms($sid)
public function getSubjPerms($sid)
{
$sql = "
SELECT t.name, t.type as otype , p.*
@ -460,7 +474,7 @@ class Alib extends Subjects{
*
* @return array
*/
function getAllActions()
public function getAllActions()
{
return $this->config['allActions'];
} // fn getAllActions
@ -472,7 +486,7 @@ class Alib extends Subjects{
* @param string $type
* @return array
*/
function getAllowedActions($type)
public function getAllowedActions($type)
{
return $this->config['allowedActions'][$type];
} // fn getAllowedActions
@ -485,7 +499,7 @@ class Alib extends Subjects{
*
* @return string
*/
function _createSessid()
private function _createSessid()
{
for ($c=1; $c>0;){
$sessid = md5(uniqid(rand()));
@ -511,7 +525,7 @@ class Alib extends Subjects{
* actual indentation
* @return string
*/
function dumpPerms($indstr=' ', $ind='')
public function dumpPerms($indstr=' ', $ind='')
{
$arr = $this->dbc->getAll("
SELECT s.login, p.action, p.type
@ -536,7 +550,7 @@ class Alib extends Subjects{
*
* @return void
*/
function deleteData()
public function deleteData()
{
$this->dbc->query("DELETE FROM {$this->permTable}");
$this->dbc->query("DELETE FROM {$this->sessTable}");
@ -549,7 +563,7 @@ class Alib extends Subjects{
*
* @return array
*/
function testData()
public function testData()
{
parent::testData();
$t =& $this->tdata['tree'];
@ -585,9 +599,9 @@ class Alib extends Subjects{
/**
* Make basic test
*
* @return boolean/error
* @return boolean|PEAR_Error
*/
function test()
public function test()
{
if (PEAR::isError($p = parent::test())) {
return $p;
@ -646,7 +660,7 @@ class Alib extends Subjects{
*
* @return void
*/
function install()
public function install()
{
parent::install();
$this->dbc->query("CREATE TABLE {$this->permTable} (
@ -680,11 +694,11 @@ class Alib extends Subjects{
/**
* Drop tables etc.
* Drop tables etc.
*
* @return void
* @return void
*/
function uninstall()
public function uninstall()
{
$this->dbc->query("DROP TABLE {$this->permTable}");
$this->dbc->dropSequence("{$this->permTable}_id_seq");

View File

@ -6,27 +6,39 @@ require_once "m2tree.php";
*
* A class for 'object classes' handling - i.e. groups of object in tree
*
* @author $Author$
* @author Tomas Hlava <th@red2head.com>
* @author Paul Baranowski <paul@paulbaranowski.org>
* @version $Revision$
* @package Campcaster
* @subpackage Alib
* @see Mtree
* @see Subj
* @copyright 2006 MDLF, Inc.
* @license http://www.gnu.org/licenses/gpl.txt
* @link http://www.campware.org
*/
class ObjClasses extends M2tree{
var $classTable;
var $cmembTable;
class ObjClasses extends M2tree {
/**
* The name of the database table ("PREFIXclasses")
*
* @var string
*/
public $classTable;
/**
* Constructor
* The name of a database table ("PREFIXcmemb")
*
* @param dbc object
* @param config array
* @return this
* @var string
*/
function ObjClasses(&$dbc, $config)
public $cmembTable;
/**
* @param object $dbc
* @param array $config
* @return this
*/
public function __construct(&$dbc, $config)
{
parent::M2Tree($dbc, $config);
parent::__construct($dbc, $config);
$this->classTable = $config['tblNamePrefix'].'classes';
$this->cmembTable = $config['tblNamePrefix'].'cmemb';
}
@ -35,12 +47,12 @@ class ObjClasses extends M2tree{
/* ======================================================= public methods */
/**
* Add new class of objects
* Add new class of objects
*
* @param cname string
* @return id/error
* @param string $cname
* @return id/error
*/
function addClass($cname)
public function addClass($cname)
{
$id = $this->dbc->nextId("{$this->treeTable}_id_seq");
if (PEAR::isError($id)) {
@ -58,12 +70,12 @@ class ObjClasses extends M2tree{
/**
* Remove class by name
* Remove class by name
*
* @param cname string
* @return boolean/err
* @param string $cname
* @return boolean/err
*/
function removeClass($cname)
public function removeClass($cname)
{
$cid = $this->getClassId($cname);
if (PEAR::isError($cid)) {
@ -74,12 +86,12 @@ class ObjClasses extends M2tree{
/**
* Remove class by id
* Remove class by id
*
* @param cid int
* @return boolean/err
* @param int $cid
* @return boolean/err
*/
function removeClassById($cid)
public function removeClassById($cid)
{
$r = $this->dbc->query("DELETE FROM {$this->cmembTable}
WHERE cid=$cid");
@ -96,13 +108,13 @@ class ObjClasses extends M2tree{
/**
* Add object to class
* Add object to class
*
* @param cid int
* @param oid int
* @return boolean/err
* @param int $cid
* @param int $oid
* @return boolean/err
*/
function addObj2Class($cid, $oid)
public function addObj2Class($cid, $oid)
{
$r = $this->dbc->query("INSERT INTO {$this->cmembTable} (cid, objid)
VALUES ($cid, $oid)");
@ -114,13 +126,13 @@ class ObjClasses extends M2tree{
/**
* Remove object from class
* Remove object from class
*
* @param oid int
* @param cid int, optional, default: remove obj from all classes
* @return boolean/err
* @param int $oid
* @param int $cid, optional, default: remove obj from all classes
* @return boolean/err
*/
function removeObjFromClass($oid, $cid=NULL)
public function removeObjFromClass($oid, $cid=NULL)
{
$r = $this->dbc->query("DELETE FROM {$this->cmembTable}
WHERE objid=$oid".(is_null($cid)? '':" AND cid=$cid"));
@ -134,12 +146,12 @@ class ObjClasses extends M2tree{
/* ---------------------------------------------------------- object tree */
/**
* Remove object from all classes and remove object itself
* Remove object from all classes and remove object itself
*
* @param id int
* @return boolean/err
* @param int $id
* @return boolean/err
*/
function removeObj($id)
public function removeObj($id)
{
$r = $this->removeObjFromClass($id);
if (PEAR::isError($r)) {
@ -152,12 +164,12 @@ class ObjClasses extends M2tree{
/* --------------------------------------------------------- info methods */
/**
* Get class id from name
* Get class id from name
*
* @param cname string
* @return int/err
* @param string $cname
* @return int/err
*/
function getClassId($cname)
public function getClassId($cname)
{
$cname = pg_escape_string($cname);
return $this->dbc->getOne($query = "SELECT id FROM {$this->classTable}
@ -166,12 +178,12 @@ class ObjClasses extends M2tree{
/**
* Get class name from id
* Get class name from id
*
* @param id int
* @return string/err
* @param int $id
* @return string/err
*/
function getClassName($id)
public function getClassName($id)
{
return $this->dbc->getOne(
$query = "SELECT cname FROM {$this->classTable} WHERE id=$id");
@ -179,12 +191,12 @@ class ObjClasses extends M2tree{
/**
* Return true is object is class
* Return true is object is class
*
* @param id int
* @return boolean/err
* @param int $id
* @return boolean/err
*/
function isClass($id)
public function isClass($id)
{
$r = $this->dbc->getOne("SELECT count(*) FROM {$this->classTable}
WHERE id=$id");
@ -196,23 +208,23 @@ class ObjClasses extends M2tree{
/**
* Return all classes
* Return all classes
*
* @return array/err
* @return array/err
*/
function getClasses()
public function getClasses()
{
return $this->dbc->getAll("SELECT * FROM {$this->classTable}");
}
/**
* Return all objects in class
* Return all objects in class
*
* @param id int
* @return array/err
* @param int $id
* @return array/err
*/
function listClass($id)
public function listClass($id)
{
return $this->dbc->getAll("
SELECT t.* FROM {$this->cmembTable} cm, {$this->treeTable} t
@ -223,13 +235,15 @@ class ObjClasses extends M2tree{
/* =============================================== test and debug methods */
/**
* Dump all classes fot debug
* Dump all classes for debug
*
* @param indstr string // indentation string
* @param ind string // aktual indentation
* @return string
* @param string $indstr
* indentation string
* @param string $ind
* actual indentation
* @return string
*/
function dumpClasses($indstr=' ', $ind='')
public function dumpClasses($indstr=' ', $ind='')
{
$r = $ind.join(', ', array_map(
create_function('$v', 'return "{$v[\'cname\']} ({$v[\'cnt\']})";'),
@ -244,10 +258,10 @@ class ObjClasses extends M2tree{
/**
* Delete all classes and membeship records
*
* Delete all classes and membeship records
* @return void
*/
function deleteData()
public function deleteData()
{
$this->dbc->query("DELETE FROM {$this->cmembTable}");
$this->dbc->query("DELETE FROM {$this->classTable}");
@ -256,10 +270,10 @@ class ObjClasses extends M2tree{
/**
* Insert test data
* Insert test data
*
*/
function testData()
public function testData()
{
parent::testData();
$o['cl_sa'] = $this->addClass('Sections a');
@ -273,10 +287,10 @@ class ObjClasses extends M2tree{
/**
* Make basic test
* Make basic test
*
*/
function test()
public function test()
{
if (PEAR::isError($p = parent::test())) {
return $p;
@ -303,10 +317,10 @@ class ObjClasses extends M2tree{
/**
* Create tables + initialize
* Create tables + initialize
*
*/
function install()
public function install()
{
parent::install();
$this->dbc->query("CREATE TABLE {$this->classTable} (
@ -328,10 +342,10 @@ class ObjClasses extends M2tree{
/**
* Drop tables etc.
* Drop tables etc.
*
*/
function uninstall()
public function uninstall()
{
$this->dbc->query("DROP TABLE {$this->classTable}");
$this->dbc->query("DROP TABLE {$this->cmembTable}");

View File

@ -1,20 +1,19 @@
<?php
/**
* @author $Author$
* @version $Revision$
*/
require_once "alib_h.php";
require_once "alibExTestAuth.php";
require_once("alib_h.php");
require_once("alibExTestAuth.php");
if(isset($_GET['id']) && is_numeric($_GET['id'])){
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
$id = $_GET['id'];
}else{
} else {
$id = $alib->getRootNode();
}
// prefill data structure for template
if(!$alib->isClass($id)){
if (!$alib->isClass($id)) {
$d = array(
'path' => $alib->getPath($id, 'id,name'),
'perms' => $alib->getObjPerms($id),
@ -23,7 +22,7 @@ if(!$alib->isClass($id)){
'id' => $id,
'loggedAs' => $login
);
}else{
} else {
$d = array(
'path' => '',
'name' => $alib->getClassName($id),
@ -36,7 +35,7 @@ if(!$alib->isClass($id)){
}
$d['msg'] = $_SESSION['alertMsg']; unset($_SESSION['alertMsg']);
require_once "alib_f.php";
require_once("alib_f.php");
// template follows:
?>
<html><head>

View File

@ -27,5 +27,5 @@ function errCallback($err)
$dbc = DB::connect($config['dsn'], TRUE);
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$alib =& new Alib($dbc, $config);
$alib = new Alib($dbc, $config);
?>

View File

@ -29,7 +29,7 @@ $dbc->setErrorHandling(PEAR_ERROR_RETURN);
#$$dbc->setErrorHandling(PEAR_ERROR_DIE, "%s<hr>\n");
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$alib =& new Alib($dbc, $config);
$alib = new Alib($dbc, $config);
echo "\n\n======\n".
"This is Alib standalone installation script, it is NOT needed to run ".

View File

@ -28,7 +28,7 @@ if(PEAR::isError($dbc)){
#PEAR::setErrorHandling(PEAR_ERROR_PRINT, "%s<hr>\n");
$dbc->setErrorHandling(PEAR_ERROR_RETURN);
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$alib =& new Alib($dbc, $config);
$alib = new Alib($dbc, $config);
# $dbc->setErrorHandling(PEAR_ERROR_RETURN);
echo "Trying to uninstall all ...\n";

View File

@ -22,10 +22,14 @@ define('ALIBERR_MTREE', 10);
* );
* </code></pre>
*
* @author $Author$
* @author Tomas Hlava <th@red2head.com>
* @author Paul Baranowski <paul@paulbaranowski.org>
* @version $Revision$
* @package Campcaster
* @subpackage Alib
* @copyright 2006 MDLF, Inc.
* @license http://www.gnu.org/licenses/gpl.txt
* @link http://www.campware.org
* @see ObjClasses
*
* Original author Tom Hlava
@ -34,27 +38,27 @@ class M2tree {
/**
* Database object container
*/
var $dbc;
public $dbc;
/**
* Configuration tree
*/
var $config;
public $config;
/**
* Tree table name
*/
var $treeTable;
protected $treeTable;
/**
* Structure table name
*/
var $structTable;
protected $structTable;
/**
* Root node name
*/
var $rootNodeName;
private $rootNodeName;
/**
* Constructor
@ -62,9 +66,9 @@ class M2tree {
* @param DB $dbc
* @param array $config
*/
function M2tree(&$dbc, $config)
public function __construct(&$dbc, $config)
{
$this->dbc =& $dbc;
$this->dbc = $dbc;
$this->config = $config;
$this->treeTable = $config['tblNamePrefix'].'tree';
$this->structTable = $config['tblNamePrefix'].'struct';
@ -86,7 +90,7 @@ class M2tree {
* @return mixed
* int/err - new id of inserted object or PEAR::error
*/
function addObj($name, $type, $parid = NULL)
public function addObj($name, $type, $parid = NULL)
{
if ( ($name == '') || ($type == '') ) {
return $this->dbc->raiseError("M2tree::addObj: Wrong name or type", ALIBERR_MTREE);
@ -154,7 +158,7 @@ class M2tree {
* @return mixed
* boolean/err - TRUE or PEAR::error
*/
function removeObj($oid)
public function removeObj($oid)
{
if ($oid == $this->getRootNode()) {
return $this->dbc->raiseError(
@ -202,7 +206,7 @@ class M2tree {
* @return mixed
* int/err - new id of inserted object or PEAR::error
*/
function copyObj($oid, $newParid, $after=NULL)
protected function copyObj($oid, $newParid, $after=NULL)
{
if (TRUE === ($r = $this->isChildOf($newParid, $oid, TRUE))) {
return $this->dbc->raiseError(
@ -264,7 +268,7 @@ class M2tree {
* dummy argument for back-compatibility
* @return boolean/err
*/
function moveObj($oid, $newParid, $after=NULL)
public function moveObj($oid, $newParid, $after=NULL)
{
if (TRUE === (
$r = $this->isChildOf($newParid, $oid, TRUE)
@ -325,7 +329,7 @@ class M2tree {
* new name
* @return TRUE/PEAR_Error
*/
function renameObj($oid, $newName)
public function renameObj($oid, $newName)
{
// get parent id:
$parid = $this->getParent($oid);
@ -365,7 +369,7 @@ class M2tree {
* @return mixed
* int/null/err - child id (if found) or null or PEAR::error
*/
function getObjId($name, $parId = null)
public function getObjId($name, $parId = null)
{
if ( ($name == '') && is_null($parId)) {
$name = $this->rootNodeName;
@ -394,7 +398,7 @@ class M2tree {
* @return mixed
* string/err
*/
function getObjName($oid, $fld='name')
public function getObjName($oid, $fld='name')
{
$r = $this->dbc->getOne("
SELECT $fld FROM {$this->treeTable}
@ -410,7 +414,7 @@ class M2tree {
* @param int $oid
* @return string/err
*/
function getObjType($oid)
public function getObjType($oid)
{
return $this->getObjName($oid, 'type');
} // fn getObjType
@ -422,7 +426,7 @@ class M2tree {
* @param int $oid
* @return int/err
*/
function getParent($oid)
public function getParent($oid)
{
$r = $this->dbc->getOne("
SELECT parid FROM {$this->structTable}
@ -441,7 +445,7 @@ class M2tree {
* flag for include specified object to the path
* @return array/err
*/
function getPath($oid, $flds='id', $withSelf=TRUE)
public function getPath($oid, $flds='id', $withSelf=TRUE)
{
$path = $this->dbc->getAll("
SELECT $flds
@ -477,7 +481,7 @@ class M2tree {
* fieldname for order by clause
* @return array/err
*/
function getDir($oid, $flds='id', $order='name')
public function getDir($oid, $flds='id', $order='name')
{
$r = $this->dbc->getAll("
SELECT $flds
@ -502,7 +506,7 @@ class M2tree {
* (if NULL - use root of whole tree)
* @return hash-array with field name/value pairs
*/
function getObjLevel($oid, $flds='level', $rootId=NULL)
public function getObjLevel($oid, $flds='level', $rootId=NULL)
{
if (is_null($rootId)) {
$rootId = $this->getRootNode();
@ -533,7 +537,7 @@ class M2tree {
* @return mixed
* array/err
*/
function getSubTree($oid=NULL, $withRoot=FALSE, $rootId=NULL)
public function getSubTree($oid=NULL, $withRoot=FALSE, $rootId=NULL)
{
if (is_null($oid)) $oid = $this->getRootNode();
if (is_null($rootId)) $rootId = $oid;
@ -575,7 +579,7 @@ class M2tree {
* test indirect or only direct relation
* @return boolean
*/
function isChildOf($oid, $parid, $indirect=FALSE)
public function isChildOf($oid, $parid, $indirect=FALSE)
{
if (!$indirect) {
$paridD = $this->getParent($oid);
@ -603,7 +607,7 @@ class M2tree {
*
* @return int/err
*/
function getRootNode()
public function getRootNode()
{
return $this->getObjId($this->rootNodeName);
} // fn getRootNode
@ -614,7 +618,7 @@ class M2tree {
*
* @return array/err
*/
function getAllObjects()
public function getAllObjects()
{
return $this->dbc->getAll(
"SELECT * FROM {$this->treeTable}"
@ -634,7 +638,7 @@ class M2tree {
* @param string $type
* @return array
*/
function getAllowedChildTypes($type)
public function getAllowedChildTypes($type)
{
return $this->config['objtypes'][$type];
} // fn getAllowedChildTypes
@ -650,7 +654,7 @@ class M2tree {
* object id
* @return boolean
*/
function _cutSubtree($oid)
private function _cutSubtree($oid)
{
$lvl = $this->getObjLevel($oid);
if ($this->dbc->isError($lvl)) {
@ -684,7 +688,7 @@ class M2tree {
* destination object id
* @return boolean
*/
function _pasteSubtree($oid, $newParid)
private function _pasteSubtree($oid, $newParid)
{
$dataArr = array();
// build data ($dataArr) for INSERT:
@ -720,7 +724,7 @@ class M2tree {
* error object or error message
* @return err
*/
function _dbRollback($r)
private function _dbRollback($r)
{
$this->dbc->query("ROLLBACK");
if ($this->dbc->isError($r)) {
@ -747,7 +751,7 @@ class M2tree {
* actual indentation
* @return string
*/
function dumpTree($oid=NULL, $indstr=' ', $ind='',
public function dumpTree($oid=NULL, $indstr=' ', $ind='',
$format='{name}({id})', $withRoot=TRUE)
{
$r='';
@ -768,7 +772,7 @@ class M2tree {
* Create tables + initialize root node
* @return err/void
*/
function install()
public function install()
{
$r = $this->dbc->query("BEGIN");
if (PEAR::isError($r)) {
@ -871,7 +875,7 @@ class M2tree {
* Drop all tables and sequences.
* @return void
*/
function uninstall()
public function uninstall()
{
$this->dbc->query("DROP TABLE {$this->structTable}");
$this->dbc->dropSequence("{$this->structTable}_id_seq");
@ -884,7 +888,7 @@ class M2tree {
* Uninstall and install.
* @return void
*/
function reinstall()
public function reinstall()
{
$this->uninstall();
$this->install();
@ -895,7 +899,7 @@ class M2tree {
* Clean up tree - delete all except the root node.
* @return err/void
*/
function reset()
public function reset()
{
$rid = $this->getRootNode();
if ($this->dbc->isError($rid)) {
@ -913,27 +917,27 @@ class M2tree {
/**
* Insert test data to the tree.
* Only for compatibility with previous mtree - will be removed.
* Insert test data to the tree.
* Only for compatibility with previous mtree - will be removed.
*
* @return array
* @return array
*/
function test()
public function test()
{
require_once "m2treeTest.php";
$mt = &new M2treeTest($this->dbc, $this->config);
$mt = new M2treeTest($this->dbc, $this->config);
$r = $mt->_test();
return $r;
} // fn test
/**
* Insert test data to the tree.
* Only for compatibility with previous mtree - will be removed.
* Insert test data to the tree.
* Only for compatibility with previous mtree - will be removed.
*
* @return array
* @return array
*/
function testData()
public function testData()
{
$o['root'] = $this->getRootNode();
$o['pa'] = $this->addObj('Publication A', 'Publication', $o['root']);

View File

@ -20,7 +20,7 @@ function errCallback($err)
$dbc = DB::connect($config['dsn'], TRUE);
$dbc->setFetchMode(DB_FETCHMODE_ASSOC);
$m2 = &new M2treeTest($dbc, $config);
$m2 = new M2treeTest($dbc, $config);
#$m2->uninstall();
#exit;
#$r = $m2->install(); if($dbc->isError($r)){ echo $r->getMessage()."\n".$r->getUserInfo()."\n"; exit; }

View File

@ -1,5 +1,5 @@
<?php
require_once "class.php";
require_once("class.php");
define('ALIBERR_NOTGR', 20);
define('ALIBERR_BADSMEMB', 21);
@ -10,16 +10,32 @@ define('ALIBERR_BADSMEMB', 21);
* with "linearized recursive membership" ;)
* (allow adding users to groups or groups to groups)
*
* @author $Author$
* @author Tomas Hlava <th@red2head.com>
* @author Paul Baranowski <paul@paulbaranowski.org>
* @version $Revision$
* @package Campcaster
* @subpackage Alib
* @copyright 2006 MDLF, Inc.
* @license http://www.gnu.org/licenses/gpl.txt
* @link http://www.campware.org
* @see ObjClasses
* @see Alib
*/
class Subjects extends ObjClasses {
var $subjTable;
var $smembTable;
/**
* The name of the 'Subjects' database table.
*
* @var string
*/
public $subjTable;
/**
* The name of a database table.
*
* @var string
*/
public $smembTable;
/**
* Constructor
@ -28,9 +44,9 @@ class Subjects extends ObjClasses {
* @param array $config
* @return this
*/
function Subjects(&$dbc, $config)
public function __construct(&$dbc, $config)
{
parent::ObjClasses($dbc, $config);
parent::__construct($dbc, $config);
$this->subjTable = $config['tblNamePrefix'].'subjs';
$this->smembTable = $config['tblNamePrefix'].'smemb';
} // constructor
@ -43,14 +59,12 @@ class Subjects extends ObjClasses {
*
* @param string $login
* @param string $pass
* optional
* @param string $realname
* optional
* @param boolean $passenc
* optional, password already encrypted if true
* password already encrypted if true
* @return int/err
*/
function addSubj($login, $pass=NULL, $realname='', $passenc=FALSE)
public function addSubj($login, $pass=NULL, $realname='', $passenc=FALSE)
{
if(!$login) {
return $this->dbc->raiseError(get_class($this)."::addSubj: empty login");
@ -82,7 +96,7 @@ class Subjects extends ObjClasses {
* optional, default: null
* @return boolean/err
*/
function removeSubj($login, $uid=NULL)
public function removeSubj($login, $uid=NULL)
{
if (is_null($uid)) {
$uid = $this->getSubjId($login);
@ -114,7 +128,7 @@ class Subjects extends ObjClasses {
* optional
* @return boolean/int/err
*/
function authenticate($login, $pass='')
public function authenticate($login, $pass='')
{
$cpass = md5($pass);
$sql = "SELECT id FROM {$this->subjTable}
@ -135,7 +149,7 @@ class Subjects extends ObjClasses {
* true=> set lastfail, false=> set lastlogin
* @return boolean/int/err
*/
function setTimeStamp($login, $failed=FALSE)
public function setTimeStamp($login, $failed=FALSE)
{
$fld = ($failed ? 'lastfail' : 'lastlogin');
$sql = "UPDATE {$this->subjTable} SET $fld=now()
@ -160,7 +174,7 @@ class Subjects extends ObjClasses {
* optional, password already encrypted if true
* @return boolean/err
*/
function passwd($login, $oldpass=null, $pass='', $passenc=FALSE)
public function passwd($login, $oldpass=null, $pass='', $passenc=FALSE)
{
if (!$passenc) {
$cpass = md5($pass);
@ -193,7 +207,7 @@ class Subjects extends ObjClasses {
* @param string $gname
* @return int/err
*/
function addSubj2Gr($login, $gname)
public function addSubj2Gr($login, $gname)
{
$uid = $this->getSubjId($login);
if (PEAR::isError($uid)) {
@ -238,7 +252,7 @@ class Subjects extends ObjClasses {
* @param string $gname
* @return boolean/err
*/
function removeSubjFromGr($login, $gname)
public function removeSubjFromGr($login, $gname)
{
$uid = $this->getSubjId($login);
if (PEAR::isError($uid)) {
@ -279,7 +293,7 @@ class Subjects extends ObjClasses {
* @param string $login
* @return int/err
*/
function getSubjId($login)
public function getSubjId($login)
{
$sql = "SELECT id FROM {$this->subjTable}
WHERE login='$login'";
@ -294,7 +308,7 @@ class Subjects extends ObjClasses {
* @param string $fld
* @return string/err
*/
function getSubjName($id, $fld='login')
public function getSubjName($id, $fld='login')
{
$sql = "SELECT $fld FROM {$this->subjTable}
WHERE id='$id'";
@ -305,10 +319,10 @@ class Subjects extends ObjClasses {
/**
* Get all subjects
*
* @param string $flds, optional
* @param string $flds
* @return array/err
*/
function getSubjects($flds='id, login')
public function getSubjects($flds='id, login')
{
$sql = "SELECT $flds FROM {$this->subjTable}";
return $this->dbc->getAll($sql);
@ -320,7 +334,7 @@ class Subjects extends ObjClasses {
*
* @return array/err
*/
function getSubjectsWCnt()
public function getSubjectsWCnt()
{
$sql = "
SELECT count(m.uid)as cnt, s.id, s.login, s.type
@ -339,7 +353,7 @@ class Subjects extends ObjClasses {
* @param int $gid
* @return boolean/err
*/
function isGroup($gid)
public function isGroup($gid)
{
$sql = "SELECT type FROM {$this->subjTable}
WHERE id='$gid'";
@ -357,7 +371,7 @@ class Subjects extends ObjClasses {
* @param int $gid
* @return array/err
*/
function listGroup($gid)
public function listGroup($gid)
{
$sql = "SELECT s.id, s.login, s.type
FROM {$this->smembTable} m, {$this->subjTable} s
@ -375,7 +389,7 @@ class Subjects extends ObjClasses {
* local group id
* @return boolean
*/
function isMemberOf($uid, $gid)
public function isMemberOf($uid, $gid)
{
$sql = "
SELECT count(*)as cnt
@ -398,12 +412,10 @@ class Subjects extends ObjClasses {
* @param int $uid
* @param int $gid
* @param int $level
* optional
* @param int $mid
* optional
* @return int/err
*/
function _addMemb($uid, $gid, $level=0, $mid='null')
private function _addMemb($uid, $gid, $level=0, $mid='null')
{
if($uid == $gid) {
return PEAR::raiseError("Subjects::_addMemb: uid==gid ($uid)", ALIBERR_BADSMEMB);
@ -447,9 +459,9 @@ class Subjects extends ObjClasses {
* Remove membership record
*
* @param int $mid
* @return null/err
* @return null|PEAR_Error
*/
function _removeMemb($mid)
private function _removeMemb($mid)
{
$sql = "DELETE FROM {$this->smembTable}
WHERE id='$mid'";
@ -462,10 +474,9 @@ class Subjects extends ObjClasses {
*
* @param int $gid
* @param int $uid
* optional
* @return array/err
* @return array|PEAR_Error
*/
function _listMemb($gid, $uid=NULL)
private function _listMemb($gid, $uid=NULL)
{
$sql = "
SELECT id, uid, level FROM {$this->smembTable}
@ -479,10 +490,9 @@ class Subjects extends ObjClasses {
*
* @param int $gid
* @param int $uid
* optional
* @return array/err
*/
function _listRMemb($uid, $gid=NULL)
private function _listRMemb($uid, $gid=NULL)
{
$sql = "
SELECT id, gid, level FROM {$this->smembTable}
@ -497,10 +507,10 @@ class Subjects extends ObjClasses {
* @param int $uid
* @param int $gid
* @param int $level
* @param int $rmid //
* @return int/err
* @param int $rmid
* @return int|PEAR_Error
*/
function _plainAddSubj2Gr($uid, $gid, $level=0, $rmid='null')
private function _plainAddSubj2Gr($uid, $gid, $level=0, $rmid='null')
{
$mid = $this->_addMemb($uid, $gid, $level, $rmid);
if (PEAR::isError($mid)) {
@ -526,9 +536,9 @@ class Subjects extends ObjClasses {
* Rebuild indirect membership records<br>
* it's probably more complicated to do removing without rebuild ...
*
* @return true/err
* @return true|PEAR_Error
*/
function _rebuildRels()
private function _rebuildRels()
{
$this->dbc->query("BEGIN");
$r = $this->dbc->query("LOCK TABLE {$this->smembTable}");
@ -575,7 +585,7 @@ class Subjects extends ObjClasses {
* actual indentation
* @return string
*/
function dumpSubjects($indstr=' ', $ind='')
public function dumpSubjects($indstr=' ', $ind='')
{
$r = $ind.join(', ', array_map(
create_function('$v', 'return "{$v[\'login\']}({$v[\'cnt\']})";'),
@ -590,7 +600,7 @@ class Subjects extends ObjClasses {
*
* @return void
*/
function deleteData()
public function deleteData()
{
$this->dbc->query("DELETE FROM {$this->subjTable}");
$this->dbc->query("DELETE FROM {$this->smembTable}");
@ -603,7 +613,7 @@ class Subjects extends ObjClasses {
*
* @return array
*/
function testData()
public function testData()
{
parent::testData();
$o['root'] = $this->addSubj('root', 'q');
@ -631,7 +641,7 @@ class Subjects extends ObjClasses {
* Make basic test
*
*/
function test()
public function test()
{
if (PEAR::isError($p = parent::test())) {
return $p;
@ -665,7 +675,7 @@ class Subjects extends ObjClasses {
* Create tables + initialize
*
*/
function install()
public function install()
{
parent::install();
$this->dbc->query("CREATE TABLE {$this->subjTable} (
@ -701,7 +711,7 @@ class Subjects extends ObjClasses {
*
* @return void
*/
function uninstall()
public function uninstall()
{
$this->dbc->query("DROP TABLE {$this->subjTable}");
$this->dbc->dropSequence("{$this->subjTable}_id_seq");

View File

@ -87,7 +87,7 @@ class XR_Alib extends Alib{
}
}
$alib = &new XR_Alib($dbc, $config);
$alib = new XR_Alib($dbc, $config);
$s=new xmlrpc_server( array(
"alib.xrTest" => array(