Пример #1
0
 /**
  * Render the chart output
  *
  * @param string $objName object name which is the bizform name
  * @return void
  */
 public function render($objName)
 {
     // get the value of the control that issues the call
     $chartName = Openbiz::$app->getClientProxy()->getFormInputs("__this");
     // get the current UI bizobj
     $formObj = Openbiz::getObject($objName);
     // get the existing bizform object
     $bizDataObj = $formObj->getDataObj();
     // get chart config xml file
     $chartXmlFile = ObjectFactoryHelper::getXmlFileWithPath($objName . "_chart");
     $xmlArr = ObjectFactoryHelper::getXmlArray($chartXmlFile);
     ob_clean();
     // get the chart section from config xml file
     foreach ($xmlArr["BIZFORM_CHART"]["CHARTLIST"]["CHART"] as $chart) {
         if (count($xmlArr["BIZFORM_CHART"]["CHARTLIST"]["CHART"]) == 1) {
             $chart = $xmlArr["BIZFORM_CHART"]["CHARTLIST"]["CHART"];
         }
         // try to match the chartName, if no chartName given, always draw the first chart defined in xml file
         if ($chartName && $chart["ATTRIBUTES"]["NAME"] == $chartName || !$chartName) {
             if ($chart["ATTRIBUTES"]["GRAPHTYPE"] == 'XY') {
                 $this->xyGraphRender($bizDataObj, $chart);
                 break;
             }
             if ($chart["ATTRIBUTES"]["GRAPHTYPE"] == 'Pie') {
                 $this->pieGraphRender($bizDataObj, $chart);
                 break;
             }
         }
     }
 }
Пример #2
0
function xml2ArrayFile($dir, $file)
{
    $fileWithPath = $dir . DIRECTORY_SEPARATOR . $file;
    echo $fileWithPath . "\n";
    $xmlArr = ObjectFactoryHelper::getXmlArray($fileWithPath);
    $baseFile = substr($file, 0, strlen($file) - 4);
    $phpFile = $baseFile . '.conf.php';
    $phpFileWithPath = $dir . DIRECTORY_SEPARATOR . $phpFile;
    $text = "<?php \n";
    $text .= 'return ';
    $text .= var_export($xmlArr, true);
    $text .= ';';
    //file_puts_contents('/home/k6/public_html/synfac/myfile.php', $text);
    $fh = fopen($phpFileWithPath, "w") or die("Could not open log file.");
    fwrite($fh, $text) or die("Could not write file!");
    fclose($fh);
}
Пример #3
0
 public function switchMode()
 {
     $file = Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR . "service" . DIRECTORY_SEPARATOR . "cacheService.xml";
     if (!is_file($file)) {
         return;
     }
     $configArr = ObjectFactoryHelper::getXmlArray($file);
     $this->modeStatus = $configArr["PLUGINSERVICE"]["CACHESETTING"]["ATTRIBUTES"]["MODE"];
     if ($this->modeStatus == 'Enabled') {
         $newMode = 'Disabled';
     } else {
         $newMode = 'Enabled';
     }
     $configData = file_get_contents($file);
     $configData = preg_replace("/CacheSetting\\sMode\\=\"(.*?)\"/si", "CacheSetting Mode=\"{$newMode}\"", $configData);
     file_put_contents($file, $configData);
     $this->updateForm();
 }
 public function getFromList(&$list)
 {
     $file = Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR . "service" . DIRECTORY_SEPARATOR . $this->configFile;
     if (!is_file($file)) {
         return;
     }
     $configArr = ObjectFactoryHelper::getXmlArray($file);
     $nodesArr = $configArr["PLUGINSERVICE"]["ACCOUNTS"][strtoupper($this->configNode)];
     $list = array();
     $i = 0;
     $name = $configArr["PLUGINSERVICE"]["ACCOUNTS"][strtoupper($this->configNode)]["ATTRIBUTES"]["NAME"];
     if (!$name) {
         for ($i = 0; $i < count($nodesArr); $i++) {
             $list[$i]["txt"] = $nodesArr[$i]["ATTRIBUTES"]["NAME"] . " ( " . $nodesArr[$i]["ATTRIBUTES"]["FROMEMAIL"] . " )";
             $list[$i]["val"] = $nodesArr[$i]["ATTRIBUTES"]["NAME"];
         }
     } else {
         $list[0]["txt"] = $name . " ( " . $configArr["PLUGINSERVICE"]["ACCOUNTS"][strtoupper($this->configNode)]["ATTRIBUTES"]["FROMEMAIL"] . " )";
         $list[0]["val"] = $name;
     }
     return $list;
 }
Пример #5
0
 /**
  * Run DataObject trigger
  *
  * @param string $triggerType type of the trigger
  */
 private function _runDOTrigger($triggerType)
 {
     // locate the trigger metadata file BOName_Trigger.xml
     $triggerServiceName = $this->objectName . "_Trigger";
     $xmlFile = ObjectFactoryHelper::getXmlFileWithPath($triggerServiceName);
     if (!$xmlFile) {
         return;
     }
     $triggerService = Openbiz::getObject($triggerServiceName);
     if ($triggerService == null) {
         return;
     }
     // invoke trigger service ExecuteTrigger($triggerType, $currentRecord)
     $triggerService->execute($this, $triggerType);
 }
Пример #6
0
 private function checkDupNodeName($nodeName)
 {
     $file = Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR . "service" . DIRECTORY_SEPARATOR . $this->configFile;
     if (!is_file($file)) {
         return;
     }
     $configArr = ObjectFactoryHelper::getXmlArray($file);
     $recordName = $configArr["PLUGINSERVICE"]["SECURITY"][strtoupper($this->configNode)]["RULE"]["ATTRIBUTES"]["NAME"];
     if (!$recordName) {
         $nodesArr = $configArr["PLUGINSERVICE"]["SECURITY"][strtoupper($this->configNode)]["RULE"];
         $result = array();
         for ($i = 0; $i < count($nodesArr); $i++) {
             if (is_array($nodesArr[$i]["ATTRIBUTES"])) {
                 if ($nodesArr[$i]["ATTRIBUTES"]["NAME"] == $nodeName) {
                     return true;
                 }
             }
         }
     } else {
         if ($recordName == $nodeName) {
             return true;
         }
     }
     return false;
 }
Пример #7
0
 /**
  * Get user preference
  *
  * @param string $attribute key that representing attribute
  * @return mixed
  */
 public function getUserPreference($attribute = null)
 {
     if (!ObjectFactoryHelper::getXmlFileWithPath(OPENBIZ_PREFERENCE_SERVICE)) {
         return null;
     }
     $preferenceService = Openbiz::getService(OPENBIZ_PREFERENCE_SERVICE);
     if (method_exists($preferenceService, 'getPreference')) {
         return $preferenceService->getPreference($attribute);
     } else {
         $preference = $this->getSessionContext()->getVar("_USER_PREFERENCE");
         return isset($preference[$attribute]) ? $preference[$attribute] : "";
     }
 }
Пример #8
0
 private function getStringsFromXml($module)
 {
     $strings = array();
     $dir = Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR . $module;
     $filelist = $this->getFileList($dir, ".xml");
     libxml_use_internal_errors(true);
     foreach ($filelist as $file) {
         $fileArr = explode(DIRECTORY_SEPARATOR, str_replace(Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR, "", $file));
         $prefix = "";
         for ($i = 1; $i < count($fileArr) - 1; $i++) {
             $prefix .= strtoupper($fileArr[$i]) . "_";
         }
         $shortFileName = str_replace($dir . DIRECTORY_SEPARATOR, "", $file);
         if (CLI) {
             echo "   Analyst XML File : " . str_replace(Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR, "", $file) . " " . PHP_EOL;
         }
         $xml = simplexml_load_file($file);
         if ($xml) {
             if ($shortFileName == "mod.xml") {
                 $this->analyzeModXML($xml, $module);
             } else {
                 $xmlArr = ObjectFactoryHelper::getXmlArray($file);
                 $tmp = $this->analystXML($xmlArr);
                 $tmpNew = array();
                 if (is_array($tmp)) {
                     foreach ($tmp as $key => $value) {
                         $tmpNew[$prefix . $key] = $value;
                     }
                 }
                 $strings = array_merge($strings, $tmpNew);
             }
         }
     }
     return $this->mergeStrings($strings);
 }
Пример #9
0
 protected function getXMLFromList($selectFrom)
 {
     $pos0 = strpos($selectFrom, "(");
     $pos1 = strpos($selectFrom, ")");
     if ($pos0 > 0 && $pos1 > $pos0) {
         // select from xml file
         $xmlFile = substr($selectFrom, 0, $pos0);
         $tag = substr($selectFrom, $pos0 + 1, $pos1 - $pos0 - 1);
         $tag = strtoupper($tag);
         $xmlFile = ObjectFactoryHelper::getXmlFileWithPath($xmlFile);
         if (!$xmlFile) {
             return false;
         }
         $xmlArr =& ObjectFactoryHelper::getXmlArray($xmlFile);
         if ($xmlArr) {
             $i = 0;
             if (!key_exists($tag, $xmlArr["SELECTION"])) {
                 return false;
             }
             foreach ($xmlArr["SELECTION"][$tag] as $node) {
                 $list[$i]['val'] = $node["ATTRIBUTES"]["VALUE"];
                 $list[$i]['pic'] = $node["ATTRIBUTES"]["PICTURE"];
                 if ($node["ATTRIBUTES"]["TEXT"]) {
                     $list[$i]['txt'] = $node["ATTRIBUTES"]["TEXT"];
                 } else {
                     $list[$i]['txt'] = $list[$i]['val'];
                 }
                 $i++;
             }
             $list = $this->translateList($list, $tag);
             // supprot multi-language
         }
         return $list;
     }
     return false;
 }
Пример #10
0
 private function checkDupNodeName($nodeName)
 {
     $file = OPENBIZ_APP_PATH . DIRECTORY_SEPARATOR . $this->configFile;
     if (!is_file($file)) {
         return;
     }
     $configArr = ObjectFactoryHelper::getXmlArray($file);
     $recordName = $configArr["APPLICATION"][strtoupper($this->configNode)]["DATABASE"]["ATTRIBUTES"]["NAME"];
     if (!$recordName) {
         $nodesArr = $configArr["APPLICATION"][strtoupper($this->configNode)]["DATABASE"];
         $result = array();
         for ($i = 0; $i < count($nodesArr); $i++) {
             if (is_array($nodesArr[$i]["ATTRIBUTES"])) {
                 if ($nodesArr[$i]["ATTRIBUTES"]["NAME"] == $nodeName) {
                     return true;
                 }
             }
         }
     } else {
         if ($recordName == $nodeName) {
             return true;
         }
     }
     return false;
 }
 /**
  * Read application.xml into a internal array.
  */
 public function __construct()
 {
     $xmlFile = ObjectFactoryHelper::getXmlFileWithPath("application");
     $this->_xmlArr =& ObjectFactoryHelper::getXmlArray($xmlFile);
 }
Пример #12
0
 private function getMetadataArray($objName)
 {
     $xmlFile = ObjectFactoryHelper::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 = ObjectFactoryHelper::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 (!$classPackage) {
             $classPackage = $package;
         }
         $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"] = $package;
         return $xmlArr;
     }
     return;
 }
Пример #13
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)
 {
     //echo '<pre>';
     //echo __METHOD__.'-'.__LINE__ . ' : BEGIN ========================<br />';
     //echo 'par: objName : ' . $objName . '<br />';
     if (!$xmlArr) {
         $xmlFile = ObjectFactoryHelper::getXmlFileWithPath($objName);
         //echo __METHOD__.'-'.__LINE__ . ' $xmlFile : ' . $xmlFile . '<br>';
         if ($xmlFile) {
             $xmlArr = ObjectFactoryHelper::getXmlArray($xmlFile);
             //echo __METHOD__.'-'.__LINE__ . '<br />';
             //echo var_dump($xmlArr);
         } else {
             //$this->_createObjectFromClass($objName);
             /* 
              * if not have metadata, create object from class directly
              * metadata is on the class it self.                 * 
              */
             $class = str_replace('.', '\\', $objName);
             /*
             $dotPos = strrpos($objName, ".");
             if ($dotPos > 0) { // if has package/namespace
                 $objectPackage =  substr($objName, 0, $dotPos) ;
                 $class = substr($objName, $dotPos + 1);
             } else {
                 $objectPackage = null;
                 $class = $objName;
             }
             * 
             */
         }
     }
     if ($xmlArr) {
         //echo __METHOD__.'-'.__LINE__ . ' <br />';
         //if ($objName == 'system.view.UserListView')
         //  echo var_dump($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);
             }
         }
         $class = $xmlArr[$root]["ATTRIBUTES"]["CLASS"];
         //echo __METHOD__.'-'.__LINE__ . ' class : ' . $class . ' <br />';
         // if class has package name as prefix, change the package to the prefix
         $dotPos = strrpos($class, ".");
         if ($dotPos > 0) {
             $classPrefix = substr($class, 0, $dotPos);
             $classPackage = $classPrefix;
             $shortClass = substr($class, $dotPos + 1);
         } else {
             $classPrefix = null;
             $classPackage = null;
             $shortClass = $class;
         }
         //echo 'shortclass : ' . $shortClass .'<br />' ;
         // set object package
         $dotPos = strrpos($objName, ".");
         $objectPackage = $dotPos > 0 ? substr($objName, 0, $dotPos) : null;
         if (strpos($objectPackage, '@') === 0) {
             $objectPackage = substr($objectPackage, 1);
         }
         if (!$classPackage) {
             $classPackage = $objectPackage;
         }
         $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"] = $objectPackage;
     }
     //$package = $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"];
     //$class = $xmlArr[$root]["ATTRIBUTES"]["CLASS"];
     $class = $shortClass;
     // echo $class . '<br />';
     $class = $this->getClassNameFromAlias($class);
     if (strrpos($class, '\\') !== false) {
         $obj_ref = new $class($xmlArr);
         return $obj_ref;
     }
     //echo $class . '<br />';
     //echo $classPackage . '<br />';
     if (!class_exists($class, false)) {
         //echo 'class not exist<br />';
         $classFile = ClassLoader::getLibFileWithPath($class, $classPackage);
         //echo 'classFile: '.$classFile .'<br />';
         if (!$classFile) {
             if ($objectPackage) {
                 trigger_error("Cannot find the class with name as {$objectPackage}.{$class}", E_USER_ERROR);
             } else {
                 trigger_error("Cannot find the class with name as {$class} of {$objName}", E_USER_ERROR);
             }
             exit;
         }
         include_once $classFile;
     }
     //echo 'class_exists($class, false): '. (class_exists($class, false)? 'true':'false') . '<br />';
     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 {
         trigger_error("Cannot find the class with name as {$class} in {$classFile}", E_USER_ERROR);
     }
     return null;
 }
Пример #14
0
    include_once $filename;
    if (defined("CLI")) {
        echo "\t" . basename($filename) . " \n";
    }
}
//load config data
if (defined("CLI")) {
    echo "\nLoading ETL config file {$config_file} : \n";
}
$conf_path = Openbiz::$app->getModulePath() . DIRECTORY_SEPARATOR . "report" . DIRECTORY_SEPARATOR . "etl" . DIRECTORY_SEPARATOR . "conf";
$conf_file = $conf_path . DIRECTORY_SEPARATOR . $config_file;
if (!is_file($conf_file)) {
    echo "Config file not found! ";
    exit;
}
$xmlArr = ObjectFactoryHelper::getXmlArray($conf_file);
if (is_array($xmlArr["ETL"]["QUEUE"][0]["ATTRIBUTES"])) {
    $etlQueuesArr = $xmlArr["ETL"]["QUEUE"];
} else {
    $etlQueuesArr = array($xmlArr["ETL"]["QUEUE"]);
}
if (is_array($xmlArr["ETL"]["DATASOURCE"]["DATABASE"][0]["ATTRIBUTES"])) {
    $dbConnections = $xmlArr["ETL"]["DATASOURCE"]["DATABASE"];
} else {
    $dbConnections = array($xmlArr["ETL"]["DATASOURCE"]["DATABASE"]);
}
if (defined("CLI")) {
    echo "\t" . basename($config_file) . " \n";
}
//init for each queue
foreach ($etlQueuesArr as $queueXMLArr) {