00001 <?php
00025 abstract class MetaObject
00026 {
00027
00033 public $m_Name;
00034
00040 public $m_Class;
00041
00047 public $m_Package;
00048
00054 public $m_Description;
00055
00056 public $m_Access;
00057
00058 function __construct(&$xmlArr)
00059 {
00060
00061 }
00062
00063
00070 protected function readMetadata(&$xmlArr)
00071 {
00072 $rootKeys = array_keys($xmlArr);
00073 $rootKey = $rootKeys[0];
00074 if ($rootKey != "ATTRIBUTES") {
00075 $this->m_Name = isset($xmlArr[$rootKey]["ATTRIBUTES"]["NAME"]) ? $xmlArr[$rootKey]["ATTRIBUTES"]["NAME"] : null;
00076 $this->m_Description = isset($xmlArr[$rootKey]["ATTRIBUTES"]["DESCRIPTION"]) ? $xmlArr[$rootKey]["ATTRIBUTES"]["DESCRIPTION"] : null;
00077 $this->m_Package = isset($xmlArr[$rootKey]["ATTRIBUTES"]["PACKAGE"]) ? $xmlArr[$rootKey]["ATTRIBUTES"]["PACKAGE"] : null;
00078 $this->m_Class = isset($xmlArr[$rootKey]["ATTRIBUTES"]["CLASS"]) ? $xmlArr[$rootKey]["ATTRIBUTES"]["CLASS"] : null;
00079 $this->m_Access = isset($xmlArr[$rootKey]["ATTRIBUTES"]["ACCESS"]) ? $xmlArr[$rootKey]["ATTRIBUTES"]["ACCESS"] : null;
00080 }
00081 else {
00082 $this->m_Name = isset($xmlArr["ATTRIBUTES"]["NAME"]) ? $xmlArr["ATTRIBUTES"]["NAME"] : null;
00083 $this->m_Description = isset($xmlArr["ATTRIBUTES"]["DESCRIPTION"]) ? $xmlArr["ATTRIBUTES"]["DESCRIPTION"] : null;
00084 $this->m_Package = isset($xmlArr["ATTRIBUTES"]["PACKAGE"]) ? $xmlArr["ATTRIBUTES"]["PACKAGE"] : null;
00085 $this->m_Class = isset($xmlArr["ATTRIBUTES"]["CLASS"]) ? $xmlArr["ATTRIBUTES"]["CLASS"] : null;
00086 $this->m_Access = isset($xmlArr["ATTRIBUTES"]["ACCESS"]) ? $xmlArr["ATTRIBUTES"]["ACCESS"] : null;
00087 }
00088 }
00089
00090 public function getModuleName($name)
00091 {
00092 return substr($name,0,intval(strpos($name,'.')));
00093 }
00094
00102 protected function readMetaCollection(&$xmlArr, &$metaList)
00103 {
00104 if (!$xmlArr)
00105 {
00106 $metaList = null;
00107 return;
00108 }
00109 if (isset($xmlArr["ATTRIBUTES"])) $metaList[] = $xmlArr;
00110 else $metaList = $xmlArr;
00111 }
00112
00119 protected function prefixPackage($name)
00120 {
00121 if ($name && !strpos($name, ".") && ($this->m_Package))
00122 $name = $this->m_Package.".".$name;
00123
00124 return $name;
00125 }
00126
00133 public function getProperty($propertyName)
00134 {
00135
00136 if (isset($this->$propertyName)) return $this->$propertyName;
00137 return null;
00138 }
00139
00147 public function allowAccess($access=null)
00148 {
00149 if(CLI){
00150 return ALLOW;
00151 }
00152 if (!$access) $access = $this->m_Access;
00153 if ($access)
00154 {
00155 return BizSystem::allowUserAccess($access);
00156 }
00157 return ALLOW;
00158 }
00159
00160 protected function getElementObject(&$xmlArr, $defaultClassName, $parentObj=null)
00161 {
00162
00163 $className = isset($xmlArr["ATTRIBUTES"]['CLASS']) ? $xmlArr["ATTRIBUTES"]['CLASS'] : $defaultClassName;
00164
00165 if ((bool) strpos($className, "."))
00166 {
00167 $a_package_name = explode(".", $className);
00168 $className = array_pop($a_package_name);
00169 $clsLoaded = BizSystem::loadClass($className, implode(".", $a_package_name));
00170 if (!$clsLoaded) trigger_error("Cannot find the load class $className", E_USER_ERROR);
00171 }
00172
00173 $obj = new $className($xmlArr, $parentObj);
00174 return $obj;
00175 }
00176 }
00177
00187 class MetaIterator implements Iterator
00188 {
00193 protected $m_prtObj = null;
00194
00199 protected $m_var = array();
00200
00209 public function __construct(&$xmlArr, $childClassName, $parentObj=null)
00210 {
00211
00212 $this->m_prtObj = $parentObj;
00213 if (!$xmlArr) return;
00214
00215 if (isset($xmlArr["ATTRIBUTES"]))
00216 {
00217 $className = isset($xmlArr["ATTRIBUTES"]['CLASS']) ? $xmlArr["ATTRIBUTES"]['CLASS'] : $childClassName;
00218 if ((bool) strpos($className, "."))
00219 {
00220 $a_package_name = explode(".", $className);
00221 $className = array_pop($a_package_name);
00222
00223 $clsLoaded = BizSystem::loadClass($className, implode(".", $a_package_name));
00224 }
00225
00226 $obj = new $className($xmlArr, $parentObj);
00227 $this->m_var[$obj->m_Name] = $obj;
00228 }
00229 else
00230 {
00231 foreach ($xmlArr as $child)
00232 {
00233 $className = isset($child["ATTRIBUTES"]['CLASS']) ? $child["ATTRIBUTES"]['CLASS'] : $childClassName;
00234
00242 if($className)
00243 {
00244 if ((bool) strpos($className, "."))
00245 {
00246 $a_package_name = explode(".", $className);
00247 $className = array_pop($a_package_name);
00248
00249 $clsLoaded = BizSystem::loadClass($className, implode(".", $a_package_name));
00250 }elseif($parentObj->m_Package){
00251
00252
00253
00254 $clsLoaded = BizSystem::loadClass($className, $parentObj->m_Package);
00255 }
00256
00257 $obj = new $className($child, $parentObj);
00258 $this->m_var[$obj->m_Name] = $obj;
00259 }
00260 }
00261 }
00262 }
00263
00270 public function merge(&$anotherMIObj)
00271 {
00272 foreach($anotherMIObj as $key=>$value)
00273 {
00274 if (!key_exists($key,$this->m_var)) $this->m_var[$key] = $value;
00275 }
00276 }
00277
00284 public function get($key)
00285 {
00286 return isset($this->m_var[$key]) ? $this->m_var[$key] : null;
00287 }
00288
00295 public function set($key, $val)
00296 {
00297 $this->m_var[$key] = $val;
00298 }
00299
00300 public function count()
00301 {
00302 return count($this->m_var);
00303 }
00304
00310 public function rewind()
00311 {
00312 reset($this->m_var);
00313 }
00314
00320 public function current()
00321 {
00322 return current($this->m_var);
00323 }
00324
00329 public function key()
00330 {
00331 return key($this->m_var);
00332 }
00333
00338 public function next()
00339 {
00340 return next($this->m_var);
00341 }
00342
00347 public function valid()
00348 {
00349 return $this->current() !== false;
00350 }
00351 }
00352
00361 class Parameter
00362 {
00363 public $m_Name, $m_Value, $m_Required, $m_InOut;
00364
00365
00366 public function __construct(&$xmlArr)
00367 {
00368 $this->m_Name = isset($xmlArr["ATTRIBUTES"]["NAME"]) ? $xmlArr["ATTRIBUTES"]["NAME"] : null;
00369 $this->m_Value = isset($xmlArr["ATTRIBUTES"]["VALUE"]) ? $xmlArr["ATTRIBUTES"]["VALUE"] : null;
00370 $this->m_Required = isset($xmlArr["ATTRIBUTES"]["REQUIRED"]) ? $xmlArr["ATTRIBUTES"]["REQUIRED"] : null;
00371 $this->m_InOut = isset($xmlArr["ATTRIBUTES"]["INOUT"]) ? $xmlArr["ATTRIBUTES"]["INOUT"] : null;
00372 }
00373
00380 public function getProperty($propertyName)
00381 {
00382 if ($propertyName == "Value") return $this->m_Value;
00383 return null;
00384 }
00385 }
00386
00395 interface iSessionObject
00396 {
00397 public function setSessionVars($sessCtxt);
00398 public function getSessionVars($sessCtxt);
00399 }
00400
00409 interface iUIControl
00410 {
00411 public function render();
00412 }
00413
00422 class BDOException extends Exception
00423 {
00424
00425 }
00426
00435 class BFMException extends Exception
00436 {
00437
00438 }
00439
00448 class BSVCException extends Exception
00449 {
00450
00451 }
00452
00461 class ValidationException extends Exception
00462 {
00463 public $m_Errors;
00464 public function __construct($errors)
00465 {
00466 $this->m_Errors = $errors;
00467 $message = "";
00468 foreach ($errors as $key=>$err) {
00469 $message .= "$key = $err, ";
00470 }
00471 $this->message = $message;
00472 }
00473 }
00474
00475 ?>