/** * Get openbiz library php file path by searching modules/package, /bin/package and /bin * * @param string $className * @return string php library file path **/ public static function getLibFileWithPath($className, $packageName = "") { return BizClassLoader::getLibFileWithPath($className, $packageName); }
/** * Construct an instance of an object * * @param string $objName object name * @param array $xmlArr xml array * @return object the instance of the object */ protected function constructObject($objName, &$xmlArr = null) { if (!$xmlArr) { $xmlFile = BizSystem::GetXmlFileWithPath($objName); if (!$xmlFile) { $dotPos = strrpos($objName, "."); $package = $dotPos > 0 ? substr($objName, 0, $dotPos) : null; $class = $dotPos > 0 ? substr($objName, $dotPos + 1) : $objName; } else { $xmlArr = BizSystem::getXmlArray($xmlFile); } } if ($xmlArr) { $keys = array_keys($xmlArr); $root = $keys[0]; // add by mr_a_ton , atrubut name must match with object name $dotPos = strrpos($objName, "."); $shortObjectName = $dotPos > 0 ? substr($objName, $dotPos + 1) : $objName; if ($xmlArr[$root]["ATTRIBUTES"]["NAME"] == "") { $xmlArr[$root]["ATTRIBUTES"]["NAME"] = $shortObjectName; } else { if ($shortObjectName != $xmlArr[$root]["ATTRIBUTES"]["NAME"]) { trigger_error("Metadata file parsing error for object {$objName}. Name attribut [" . $xmlArr[$root]["ATTRIBUTES"]["NAME"] . "] not same with object name. Please double check your metadata xml file again.", E_USER_ERROR); } } //$package = $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"]; $class = $xmlArr[$root]["ATTRIBUTES"]["CLASS"]; // if class has package name as prefix, change the package to the prefix $dotPos = strrpos($class, "."); $classPrefix = $dotPos > 0 ? substr($class, 0, $dotPos) : null; $classPackage = $classPrefix ? $classPrefix : null; if ($classPrefix) { $class = substr($class, $dotPos + 1); } // set object package $dotPos = strrpos($objName, "."); $package = $dotPos > 0 ? substr($objName, 0, $dotPos) : null; if (strpos($package, '@') === 0) { $package = substr($package, 1); } if (!$classPackage) { $classPackage = $package; } $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"] = $package; } if ($class == "BizObj") { // convert BizObj to BizDataObj, support <1.2 version $class = "BizDataObj"; } if (!class_exists($class, false)) { $classFile = BizClassLoader::getLibFileWithPath($class, $classPackage); if (!$classFile) { if ($package) { trigger_error("Cannot find the class with name as {$package}.{$class}", E_USER_ERROR); } else { trigger_error("Cannot find the class with name as {$class} of {$objName}", E_USER_ERROR); } exit; } include_once $classFile; } if (class_exists($class, false)) { //if ($objName == "collab.calendar.form.EventListForm") { print_r($xmlArr); exit; } $obj_ref = new $class($xmlArr); if ($obj_ref) { return $obj_ref; } } else { if (function_exists("ioncube_read_file")) { $data = ioncube_read_file($classFile); if (!strpos($data, "ionCube Loader")) { trigger_error("Cannot find the class with name as {$class} in {$classFile}", E_USER_ERROR); } else { } } } return null; }