Example #1
0
 /**
  * Get core path of class
  * NOTE: unused
  *
  * @param string $className class name
  * @return string full file name of class
  */
 private static function _getCoreLibFilePath($className)
 {
     return BizClassLoader::getCoreLibFilePath($className);
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * Get core path of class
  *
  * @param string $className class name
  * @return string full file name of class
  */
 public static function getCoreLibFilePath($className)
 {
     return BizClassLoader::getCoreLibFilePath($className);
 }
Example #4
0
 /**
  * Contructor of class
  *
  * @param array $xmlArr
  * @param string $childClassName
  * @param object $parentObj
  * @return void
  */
 public function __construct(&$xmlArr, $childClassName, $parentObj = null)
 {
     //if (is_array($array)) $this->var = $array;
     $this->m_prtObj = $parentObj;
     if (!$xmlArr) {
         return;
     }
     if (isset($xmlArr["ATTRIBUTES"])) {
         $className = isset($xmlArr["ATTRIBUTES"]['CLASS']) ? $xmlArr["ATTRIBUTES"]['CLASS'] : $childClassName;
         if ((bool) strpos($className, ".")) {
             $a_package_name = explode(".", $className);
             $className = array_pop($a_package_name);
             //require_once(BizSystem::getLibFileWithPath($className, implode(".", $a_package_name)));
             $clsLoaded = BizClassLoader::loadMetadataClass($className, implode(".", $a_package_name));
         }
         //if (!$clsLoaded) trigger_error("Cannot find the load class $className", E_USER_ERROR);
         $obj = new $className($xmlArr, $parentObj);
         $this->m_var[$obj->m_Name] = $obj;
     } else {
         foreach ($xmlArr as $child) {
             $className = isset($child["ATTRIBUTES"]['CLASS']) ? $child["ATTRIBUTES"]['CLASS'] : $childClassName;
             /**
              * 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
              *
              * The best solution to this is enable object factory to specify its resulting object constructor parameters
              */
             if ($className) {
                 //bug fixed by jixian for resolve load an empty classname
                 if ((bool) strpos($className, ".")) {
                     $a_package_name = explode(".", $className);
                     $className = array_pop($a_package_name);
                     //require_once(BizSystem::getLibFileWithPath($className, implode(".", $a_package_name)));
                     $clsLoaded = BizClassLoader::loadMetadataClass($className, implode(".", $a_package_name));
                 } elseif ($parentObj->m_Package) {
                     /* if(is_file(BizSystem::getLibFileWithPath($className, $parentObj->m_Package))){
                        require_once(BizSystem::getLibFileWithPath($className, $parentObj->m_Package));
                        }; */
                     $clsLoaded = BizClassLoader::loadMetadataClass($className, $parentObj->m_Package);
                 }
                 //if (!$clsLoaded) trigger_error("Cannot find the load class $className", E_USER_ERROR);
                 $obj = new $className($child, $parentObj);
                 $this->m_var[$obj->m_Name] = $obj;
             }
         }
     }
 }
Example #5
0
 public static function registerClassMap($classMap)
 {
     self::$classMap = array_merge(self::$classMap, $classMap);
 }
Example #6
0
/**
 * Search for the php file required to load the class
 *
 * @package openbiz.bin
 * @param string $className
 * @return void
 * */
function __autoload_openbiz($className)
{
    BizClassLoader::autoload($className);
}