-<?php
-/**************************************************************************
-** (c) Copyright 2002, Andromeda Technology & Automation
-** This is free software; you can redistribute it and/or modify it under the
-** terms of the GNU General Public License, see the file COPYING.
-***************************************************************************/
-
-
-/*
-///////////////////////////////////////////////////////////////////////////
-// NAME : configuration
-// BASECLASS :
-// MEMBERS :
-// OPERATORS :
-// METHODS : read
-//
-// DESCRIPTION : Handle configurational parameters for the application.
-// Many applications need some permanently stored configurational
-// data. The information is usually stored in two places: A system-
-// wide configuration file and a configuration file per user.
-// The content of the configuration file is in XML format.
-// The configuration base class takes care of finding the configuration
-// files, e.g. in /etc/app.conf or in /usr/loca/etc/app.conf
-// The config files are parsed with the gnome XML parser and a
-// framework is provided to find configurational items.
-//
-// RELATIONS :
-// SEE ALSO :
-// LAST MODIFIED : Jul 29, 2002
-///////////////////////////////////////////////////////////////////////////
-*/
-
-
-class configuration
-{
- var $system, $user;
-
- function configuration()
- {
- $system = false;
- $user = false;
- }
-
- function xmlFindTag($node, $tag)
- {
- $element = false;
- $i = 0;
-
- while (!$element && $i < sizeof($node))
- {
- if ($node[$i]->type == XML_ELEMENT_NODE && $node[$i]->tagname == $tag)
- {
- $element = $node[$i];
- }
- $i++;
- }
-
- return $element;
- }
-
- function read($app_name)
- {
- $filename = "/etc/" . $app_name . ".conf";
- if (!is_readable($filename))
- {
- $filename = "/usr/local/etc/" . $app_name . ".conf";
- }
- if (is_readable($filename))
- {
-
- $this->system = xmldocfile($filename);
-
- if ($this->system)
- {
- $root = $this->system->root();
-
- if ($root->tagname != $app_name)
- {
- print("Configuration error: Wrong configuration file.<br>");
- $this->system = false;
- }
- }
- }
- else
- {
- print("Configuration error: Configuration file for $app_name not found.<br>");
- }
- }
-
- function find_parameter($section, $parameter)
- {
- $param_value = "";
-
- if ($this->system)
- {
- $root_node = $this->system->root();
- $section_node = $this->xmlFindTag($root_node->children(), $section);
- if ($section_node)
- {
- $param_node = $this->xmlFindTag($section_node->children(), $parameter);
- if ($param_node)
- {
- $param_node = $param_node->children();
- }
- if ($param_node && $param_node[0]->type == XML_TEXT_NODE)
- {
- $param_value = $param_node[0]->content;
- }
- }
- }
-
- return $param_value;
- }
-}
-
-?>