m_Name = isset($xmlArr[$root_key]["ATTRIBUTES"]["NAME"]) ? $xmlArr[$root_key]["ATTRIBUTES"]["NAME"] : null; $this->m_Description = isset($xmlArr[$root_key]["ATTRIBUTES"]["DESCRIPTION"]) ? $xmlArr[$root_key]["ATTRIBUTES"]["DESCRIPTION"] : null; $this->m_Package = isset($xmlArr[$root_key]["ATTRIBUTES"]["PACKAGE"]) ? $xmlArr[$root_key]["ATTRIBUTES"]["PACKAGE"] : null; $this->m_Class = isset($xmlArr[$root_key]["ATTRIBUTES"]["CLASS"]) ? $xmlArr[$root_key]["ATTRIBUTES"]["CLASS"] : null; } protected function ReadMetaCollection(&$xmlArr, &$metaList) { if (!$xmlArr) { $metaList = null; return; } if (isset($xmlArr["ATTRIBUTES"])) $metaList[] = $xmlArr; else $metaList = $xmlArr; } protected function PrefixPackage($name) { if ($name && !strpos($name, ".") && ($this->m_Package)) // no package prefix as package.object, add it $name = $this->m_Package.".".$name; return $name; } public function GetProperty($propertyName) { if ($propertyName == "Name") return $this->m_Name; if ($propertyName == "Class") return $this->m_Class; if ($propertyName == "Package") return $this->m_Package; if ($propertyName == "Description") return $this->m_Description; return null; } } /** * MetaIterator class - MetaIterator is the base class of all derived metadata-driven classes who support iteration * * @package BizSystem */ class MetaIterator implements Iterator { protected $m_prtObj = null; protected $m_var = array(); public function __construct(&$xmlArr, $childClassName, $prtObj=null) { //if (is_array($array)) $this->var = $array; $this->m_prtObj = $prtObj; if (!$xmlArr) return; if (isset($xmlArr["ATTRIBUTES"])) { $className = isset($xmlArr["ATTRIBUTES"]['CLASS']) ? $xmlArr["ATTRIBUTES"]['CLASS'] : $childClassName; $obj = new $className($xmlArr, $prtObj); $this->m_var[$obj->m_Name] = $obj; } else { foreach ($xmlArr as $child) { $className = isset($child["ATTRIBUTES"]['CLASS']) ? $child["ATTRIBUTES"]['CLASS'] : $childClassName; //$this->m_var[$child["ATTRIBUTES"]['NAME']] = new $className($child, $prtObj); /** * If a '.' is found within className we need to require such class * and then get the className after the last dot * ex. shared.dataobjs.FieldName, in this case FieldName is the class, shared/dataobjs the path */ if ((bool) strpos($className, ".")) { require_once(BizSystem::GetLibFileWithPath($className)); $className = array_pop(explode(".", $className)); } else { // No '.' found, no special require needed } $obj = new $className($child, $prtObj); $this->m_var[$obj->m_Name] = $obj; } } } public function merge(&$anotherMIObj) { foreach($anotherMIObj as $key=>$value) { if (!key_exists($key,$this->m_var)) $this->m_var[$key] = $value; } } public function get($key) { return isset($this->m_var[$key]) ? $this->m_var[$key] : null; } public function set($key, $val) { $this->m_var[$key] = $val; } public function rewind() { reset($this->m_var); } public function current() { return current($this->m_var); } public function key() { return key($this->m_var); } public function next() { return next($this->m_var); } public function valid() { return $this->current() !== false; } } class Parameter { public $m_Name, $m_Value, $m_Required, $m_InOut; public function __construct(&$xmlArr) { $this->m_Name = isset($xmlArr["ATTRIBUTES"]["NAME"]) ? $xmlArr["ATTRIBUTES"]["NAME"] : null; $this->m_Value = isset($xmlArr["ATTRIBUTES"]["VALUE"]) ? $xmlArr["ATTRIBUTES"]["VALUE"] : null; $this->m_Required = isset($xmlArr["ATTRIBUTES"]["REQUIRED"]) ? $xmlArr["ATTRIBUTES"]["REQUIRED"] : null; $this->m_InOut = isset($xmlArr["ATTRIBUTES"]["INOUT"]) ? $xmlArr["ATTRIBUTES"]["INOUT"] : null; } public function GetProperty($propertyName) { if ($propertyName == "Value") return $this->m_Value; return null; } } /** * iSessionObject interface - stateful metadata-driven classed need to implement SetSessionVars and GetSessionVars * * @package BizSystem */ interface iSessionObject { public function SetSessionVars($sessCtxt); public function GetSessionVars($sessCtxt); } /** * iUIControl interface - all UI classes need to implement Render method * * @package BizSystem */ interface iUIControl { public function Render(); } class BDOException extends Exception {} class BFMException extends Exception {} class BSVException extends Exception {} /* global variables */ include_once("BizSystem.php"); $g_BizSystem = new BizSystem(); /** * __auload - search for the php file required to load the class * * @package BizSystem */ function __autoload($class_name) { $filepath = BizSystem::GetLibFileWithPath($class_name); if ($filepath) { include_once($filepath); return; } } function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } // error handling error_reporting(E_ALL ^ (E_NOTICE | E_STRICT)); // if use user defined error handling function, all errors are reported to the function set_error_handler("userErrorHandler"); /** * userErrorHandler - user error handler function * * @package BizSystem */ function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { BizSystem::ErrorHandler($errno, $errmsg, $filename, $linenum, $vars); } ?>