query($sql); } // fn removePerm /* ---------------------------------------------------------- object tree */ /* --------------------------------------------------------- users/groups */ /* ------------------------------------------------------------- sessions */ /** * Get login from session id (token) * * @param string $sessid * @return string|PEAR_Error */ public static function GetSessLogin($sessid) { global $CC_CONFIG, $CC_DBC; $sql = "SELECT login FROM ".$CC_CONFIG['sessTable']." WHERE sessid='$sessid'"; $r = $CC_DBC->getOne($sql); if (PEAR::isError($r)) { return $r; } if (is_null($r)){ return PEAR::raiseError("Alib::GetSessLogin:". " invalid session id ($sessid)", ALIBERR_NOTEXISTS, PEAR_ERROR_RETURN); } return $r; } // fn GetSessLogin /** * Get user id from session id. * * @param string $p_sessid * @return int|PEAR_Error */ public static function GetSessUserId($p_sessid) { global $CC_CONFIG, $CC_DBC; $sql = "SELECT userid FROM ".$CC_CONFIG['sessTable']." WHERE sessid='$p_sessid'"; $r = $CC_DBC->getOne($sql); if (PEAR::isError($r)) { return $r; } if (is_null($r)) { return PEAR::raiseError("Alib::getSessUserId:". " invalid session id ($p_sessid)", ALIBERR_NOTEXISTS, PEAR_ERROR_RETURN); } return $r; } // fn getSessUserId /* --------------------------------------------------------- info methods */ /** * Get all permissions on object. * * @param int $id * @return array|null|PEAR_Error */ public static function GetObjPerms($id) { global $CC_CONFIG, $CC_DBC; $sql = "SELECT s.login, p.* FROM ".$CC_CONFIG['permTable']." p, ".$CC_CONFIG['subjTable']." s" ." WHERE s.id=p.subj AND p.obj=$id"; return $CC_DBC->getAll($sql); } // fn GetObjPerms /** * Get all permissions of subject. * * @param int $sid * @return array */ public static function GetSubjPerms($sid) { global $CC_CONFIG, $CC_DBC; $sql = "SELECT *" ." FROM ".$CC_CONFIG['permTable'] ." WHERE p.subj=$sid"; $a1 = $CC_DBC->getAll($sql); return $a1; } // fn GetSubjPerms /* ------------------------ info methods related to application structure */ /* (this part should be added/rewritten to allow defining/modifying/using * application structure) * (only very simple structure definition - in $CC_CONFIG - supported now) */ /* ====================================================== private methods */ /** * Create new session id. Return the new session ID. * * @return string */ private static function _createSessid() { global $CC_CONFIG, $CC_DBC; for ($c = 1; $c > 0; ){ $sessid = md5(uniqid(rand())); $sql = "SELECT count(*) FROM ".$CC_CONFIG['sessTable'] ." WHERE sessid='$sessid'"; $c = $CC_DBC->getOne($sql); if (PEAR::isError($c)) { return $c; } } return $sessid; } // fn _createSessid } // class Alib