Source for file XML.php
Documentation is available at XML.php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
* A framework for authentication and authorization in PHP applications
* LiveUser is an authentication/permission framework designed
* to be flexible and easily extendable.
* Since it is impossible to have a
* "one size fits all" it takes a container
* approach which should enable it to
* be versatile enough to meet most needs.
* LICENSE: This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* @category authentication
* @author Markus Wolff <wolff@21st.de>
* @author Helgi Þormar Þorbjörnsson <dufuz@php.net>
* @author Lukas Smith <smith@pooteeweet.org>
* @author Arnaud Limbourg <arnaud@php.net>
* @author Pierre-Alain Joye <pajoye@php.net>
* @author Bjoern Kraus <krausbn@php.net>
* @copyright 2002-2006 Markus Wolff
* @license http://www.gnu.org/licenses/lgpl.txt
* @version CVS: $Id: XML.php,v 1.26 2006/03/14 13:10:04 lsmith Exp $
* @link http://pear.php.net/LiveUser
* Require parent class definition.
require_once 'LiveUser/Perm/Storage.php';
require_once 'XML/Tree.php';
* XML container for permission handling
* This is a XML backend driver for the LiveUser class.
* - File "Liveuser.php" (contains the parent class "LiveUser")
* @category authentication
* @author Lukas Smith <smith@pooteeweet.org>
* @author Bjoern Kraus <krausbn@php.net>
* @copyright 2002-2006 Markus Wolff
* @license http://www.gnu.org/licenses/lgpl.txt
* @version Release: @package_version@
* @link http://pear.php.net/LiveUser
* XML file in which the auth data is stored.
* XML::Tree object of the user logged in.
* Initialize the storage container
* @param array Array with the storage configuration
* @return bool true on success, false on failure.
function init(&$storageConf)
parent ::init($storageConf);
"Perm initialisation failed. Can't find xml file.");
$this->file = getenv('DOCUMENT_ROOT') . $this->file;
$tree = & new XML_Tree ($this->file);
$err = & $tree->getTreeFromFile ();
if (PEAR ::isError ($err)) {
"Perm initialisation failed. Can't get tree from file");
if (!is_a($this->tree, 'xml_tree')) {
array ('container' => 'storage layer configuration missing'));
* map an auth user to a perm user
* @param int $auth_user_id
* @param string $containerName
* @return array requested data or false on failure
function mapUser($auth_user_id, $containerName)
if (isset ($this->tree->root ->children ) && is_array($this->tree->root ->children )) {
foreach ($this->tree->root ->children as $node) {
if ($node->name == 'users') {
foreach ($node->children as $user) {
if ($user->name == 'user'
&& $auth_user_id == $user->attributes ['authUserId']
&& $containerName == $user->attributes ['authContainerName']
$result['perm_user_id'] = $user->attributes ['userId'];
$result['perm_type'] = $user->attributes ['type'];
$this->userObj = & $this->tree->root ->getElement (array ($nodeIndex, $userIndex));
* Reads all rights of current user into a
* two-dimensional associative array, having the
* area names as the key of the 1st dimension.
* Group rights and invididual rights are being merged
* @param int perm user id
* @return array requested data or false on failure
foreach ($this->userObj->children as $node) {
if ($node->name == 'rights') {
$tmp = explode(',', $node->content );
foreach ($tmp as $value) {
// level syntax: 10(2) => right id 10 at level 2
if (preg_match('/(\d+)\((\d+)\)/', $value, $match)) {
$result[$value] = $level;
* properly disconnect from resources
* @return bool true on success and false on failure
Documentation generated on Mon, 28 Jan 2008 03:30:34 -0500 by phpDocumentor 1.4.0. PEAR Logo Copyright © PHP Group 2004.
|