/** * 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; } } } }
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); }
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; }
/** * 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); }
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; }
/** * 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] : ""; } }
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); }
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; }
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); }
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; }
/** * 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; }
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) {