/** * Read Metadata from xml array * * @param array $xmlArr * @return void */ protected function readMetadata(&$xmlArr) { parent::readMetaData($xmlArr); $this->objectName = $this->prefixPackage($this->objectName); $this->title = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["TITLE"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["TITLE"] : null; $this->keywords = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["KEYWORDS"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["KEYWORDS"] : null; $this->templateEngine = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["TEMPLATEENGINE"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["TEMPLATEENGINE"] : null; $this->templateFile = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["TEMPLATEFILE"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["TEMPLATEFILE"] : null; //echo __METHOD__. '-' . __LINE__ . ' templateFile : ' . $this->templateFile . '<br />'; $this->viewSet = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["VIEWSET"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["VIEWSET"] : null; $this->tab = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["TAB"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["TAB"] : null; $this->formRefs = new MetaIterator($xmlArr["WEBPAGE"]["FORMREFERENCES"]["REFERENCE"], "Openbizx\\Easy\\FormReference", $this); if ($xmlArr["WEBPAGE"]["FORMREFERENCELIBS"]) { $this->formRefLibs = new MetaIterator($xmlArr["WEBPAGE"]["FORMREFERENCELIBS"]["REFERENCE"], "Openbizx\\Easy\\FormReference", $this); } if ($xmlArr["WEBPAGE"]["WIDGETS"]) { $this->widgets = new MetaIterator($xmlArr["WEBPAGE"]["WIDGETS"]["REFERENCE"], "Openbizx\\Easy\\FormReference", $this); } $this->messageFile = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["MESSAGEFILE"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["MESSAGEFILE"] : null; $this->objectMessages = MessageHelper::loadMessage($this->messageFile, $this->package); $this->cacheLifeTime = isset($xmlArr["WEBPAGE"]["ATTRIBUTES"]["CACHELIFETIME"]) ? $xmlArr["WEBPAGE"]["ATTRIBUTES"]["CACHELIFETIME"] : "0"; $this->readTile($xmlArr); // TODO: is this needed as title supports expression? $this->translate(); // translate for multi-language support if (empty($this->title)) { $this->title = $this->objectDescription; } }
/** * Read Metadata from xml array * * @param array $xmlArr * @return void */ protected function readMetadata(&$xmlArr) { parent::readMetaData($xmlArr); $this->inheritFrom = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["INHERITFROM"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["INHERITFROM"] : null; $this->searchRule = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["SEARCHRULE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["SEARCHRULE"] : null; $this->baseSearchRule = $this->searchRule; $this->sortRule = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["SORTRULE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["SORTRULE"] : null; $this->baseSortRule = $this->sortRule; $this->otherSQLRule = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["OTHERSQLRULE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["OTHERSQLRULE"] : null; $this->baseOtherSQLRule = $this->otherSQLRule; $this->accessRule = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["ACCESSRULE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["ACCESSRULE"] : null; $this->updateCondition = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["UPDATECONDITION"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["UPDATECONDITION"] : null; $this->deleteCondition = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DELETECONDITION"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DELETECONDITION"] : null; $this->databaseAliasName = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DBNAME"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DBNAME"] : null; if ($this->databaseAliasName == null) { $this->databaseAliasName = "Default"; } $this->mainTableName = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["TABLE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["TABLE"] : null; $this->idGeneration = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["IDGENERATION"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["IDGENERATION"] : null; $this->stateless = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["STATELESS"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["STATELESS"] : null; // read in uniqueness attribute $this->uniqueness = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["UNIQUENESS"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["UNIQUENESS"] : null; $this->cacheLifeTime = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["CACHELIFETIME"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["CACHELIFETIME"] : "0"; $this->objectName = $this->prefixPackage($this->objectName); if ($this->inheritFrom == '@sourceMeta') { $this->inheritFrom = '@' . $this->objectName; } else { $this->inheritFrom = $this->prefixPackage($this->inheritFrom); } // build BizRecord $this->bizRecord = new BizRecord($xmlArr["BIZDATAOBJ"]["BIZFIELDLIST"]["BIZFIELD"], "Openbizx\\Data\\BizField", $this); // build TableJoins $this->tableJoins = new MetaIterator($xmlArr["BIZDATAOBJ"]["TABLEJOINS"]["JOIN"], "Openbizx\\Data\\Tools\\TableJoin", $this); // build ObjReferences $this->objReferences = new MetaIterator($xmlArr["BIZDATAOBJ"]["OBJREFERENCES"]["OBJECT"], "Openbizx\\Data\\Tools\\ObjReference", $this); // read in parameters $this->parameters = new MetaIterator($xmlArr["BIZDATAOBJ"]["PARAMETERS"]["PARAMETER"], "Parameter"); $this->messageFile = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["MESSAGEFILE"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["MESSAGEFILE"] : null; $this->objectMessages = MessageHelper::loadMessage($this->messageFile, $this->package); $this->eventManagerName = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["EVENTMANAGER"]) ? $xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["EVENTMANAGER"] : null; $this->dataPermControl = isset($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DATAPERMCONTROL"]) ? strtoupper($xmlArr["BIZDATAOBJ"]["ATTRIBUTES"]["DATAPERMCONTROL"]) : 'N'; }
private function executeRpcMethod($objName, $methodName, $params) { $obj = Openbizx::getObject($objName); if ($obj) { if (method_exists($obj, $methodName)) { if (!$this->validateRequest($obj, $methodName)) { $errmsg = MessageHelper::getMessage("SYS_ERROR_REQUEST_REJECT", array($obj->objectName, $methodName)); trigger_error($errmsg, E_USER_ERROR); } switch (count($params)) { case 0: $rt_val = $obj->{$methodName}(); break; case 1: $rt_val = $obj->{$methodName}($params[0]); break; case 2: $rt_val = $obj->{$methodName}($params[0], $params[1]); break; case 3: $rt_val = $obj->{$methodName}($params[0], $params[1], $params[2]); break; default: $rt_val = call_user_func_array(array($obj, $methodName), $params); } } else { $errmsg = MessageHelper::getMessage("SYS_ERROR_METHODNOTFOUND", array($objName, $methodName)); trigger_error($errmsg, E_USER_ERROR); } } else { $errmsg = MessageHelper::getMessage("SYS_ERROR_CLASSNOTFOUND", array($objName)); trigger_error($errmsg, E_USER_ERROR); } $invocationType = $this->request->getInvocationType(); if ($invocationType == "Invoke") { // no RPC invoke, page reloaded -> rerender view if ($this->getClientProxy()->hasOutput()) { $this->getClientProxy()->printOutput(); } } else { if ($invocationType == "RPCInvoke") { // RPC invoke if ($this->getClientProxy()->hasOutput()) { if ($_REQUEST['jsrs'] == 1) { echo "<html><body><form name=\"jsrs_Form\"><textarea name=\"jsrs_Payload\" id=\"jsrs_Payload\">"; } $this->getClientProxy()->printOutput(); if ($_REQUEST['jsrs'] == 1) { echo "</textarea></form></body></html>"; } } else { return $rt_val; } } } }
/** * Inherit from parent object. Name, Package, Class cannot be inherited * * @return void */ protected function inheritParentObj() { if (!$this->inheritFrom) { return; } $parentObj = Openbizx::getObject($this->inheritFrom); $this->title = $this->title ? $this->title : $parentObj->title; $this->icon = $this->icon ? $this->icon : $parentObj->icon; $this->objectDescription = $this->objectDescription ? $this->objectDescription : $parentObj->objectDescription; $this->jsClass = $this->jsClass ? $this->jsClass : $parentObj->jsClass; $this->height = $this->height ? $this->height : $parentObj->height; $this->width = $this->width ? $this->width : $parentObj->width; $this->defaultForm = $this->defaultForm ? $this->defaultForm : $parentObj->defaultForm; $this->templateEngine = $this->templateEngine ? $this->templateEngine : $parentObj->templateEngine; $this->templateFile = $this->templateFile ? $this->templateFile : $parentObj->templateFile; $this->formType = $this->formType ? $this->formType : $parentObj->formType; $this->range = $this->range ? $this->range : $parentObj->range; $this->fixSearchRule = $this->fixSearchRule ? $this->fixSearchRule : $parentObj->fixSearchRule; $this->defaultFixSearchRule = $this->defaultFixSearchRule ? $this->defaultFixSearchRule : $parentObj->defaultFixSearchRule; $this->dataObjName = $this->dataObjName ? $this->dataObjName : $parentObj->dataObjName; $this->directMethodList = $this->directMethodList ? $this->directMethodList : $parentObj->directMethodList; $this->eventName = $this->eventName ? $this->eventName : $parentObj->eventName; $this->messageFile = $this->messageFile ? $this->messageFile : $parentObj->messageFile; $this->objectMessages = MessageHelper::loadMessage($this->messageFile, $this->package); $this->cacheLifeTime = $this->cacheLifeTime ? $this->cacheLifeTime : $parentObj->cacheLifeTime; $this->currentPage = $this->currentPage ? $this->currentPage : $parentObj->currentPage; $this->startItem = $this->startItem ? $this->startItem : $parentObj->startItem; $this->dataPanel->merge($parentObj->dataPanel); $this->actionPanel->merge($parentObj->actionPanel); $this->navPanel->merge($parentObj->navPanel); $this->searchPanel->merge($parentObj->searchPanel); if ($this->dataPanel->current()) { foreach ($this->dataPanel as $elem) { $elem->adjustFormName($this->objectName); } } if ($this->actionPanel->current()) { foreach ($this->actionPanel as $elem) { $elem->adjustFormName($this->objectName); } } if ($this->navPanel->current()) { foreach ($this->navPanel as $elem) { $elem->adjustFormName($this->objectName); } } if ($this->searchPanel->current()) { foreach ($this->searchPanel as $elem) { $elem->adjustFormName($this->objectName); } } $this->panels = array($this->dataPanel, $this->actionPanel, $this->navPanel, $this->searchPanel); }
/** * Get error message * * @param string $validator * @param string $fieldName * @return string */ public function getErrorMessage($validator = null, $fieldName = null) { if ($this->errorMessage != "") { if ($fieldName != "") { $this->errorMessage = str_replace($this->fieldNameMask, $fieldName, $this->errorMessage); } return $this->errorMessage; } else { $validator = str_replace('{@validate:', '', $validator); $pos1 = strpos($validator, '('); $type = substr($validator, 0, $pos1); switch ($type) { case "date": return MessageHelper::getMessage("VALIDATESVC_DATE_INVALID", array($fieldName)); break; case "email": return MessageHelper::getMessage("VALIDATESVC_EMAIL_INVALID", array($fieldName)); break; case "phone": return MessageHelper::getMessage("VALIDATESVC_PHONE_INVALID", array($fieldName)); break; case "zip": return MessageHelper::getMessage("VALIDATESVC_ZIP_INVALID", array($fieldName)); break; case "social": return MessageHelper::getMessage("VALIDATESVC_SOCIAL_INVALID", array($fieldName)); break; case "credit": return MessageHelper::getMessage("VALIDATESVC_CREDIT_INVALID", array($fieldName)); break; case "street": return MessageHelper::getMessage("VALIDATESVC_STREET_INVALID", array($fieldName)); break; case "strongPassword": return MessageHelper::getMessage("VALIDATESVC_PASSWORD_NOT_STRONG", array($fieldName)); break; } return MessageHelper::getMessage("VALIDATESVC_INVALID", array($fieldName)); } }
/** * Get openbiz template file path by searching modules/package, /templates * * @param string $className * @return string php library file path * */ public static function getTplFileWithPath($templateFile, $packageName) { //for not changing a lot things, the best injection point is added theme support here. $theme = Openbizx::$app->getCurrentTheme(); $themePath = $theme; // Openbizx::$app->getConfiguration()->GetThemePath($theme); if ($themePath) { $templateRoot = OPENBIZ_THEME_PATH . "/" . $themePath . "/template"; } else { $templateRoot = SMARTY_TPL_PATH; } $names = explode(".", $packageName); if (count($names) > 0) { $moduleName = $names[0]; } $packagePath = str_replace('.', '/', $packageName); // check the leading char '@' $checkExtModule = true; if (strpos($packagePath, '@') === 0) { $packagePath = substr($packagePath, 1); $checkExtModule = false; } $searchTpls = array(Openbizx::$app->getModulePath() . "/{$packagePath}/template/{$templateFile}", dirname(Openbizx::$app->getModulePath() . "/{$packagePath}") . "/template/{$templateFile}", Openbizx::$app->getModulePath() . "/{$moduleName}/template/{$templateFile}", $templateRoot . "/{$templateFile}"); if ($checkExtModule && defined('MODULE_EX_PATH')) { array_unshift($searchTpls, MODULE_EX_PATH . "/{$packagePath}/template/{$templateFile}"); } // device if (defined('OPENBIZ_CLIENT_DEVICE')) { array_unshift($searchTpls, Openbizx::$app->getModulePath() . "/{$moduleName}/template/" . OPENBIZ_CLIENT_DEVICE . "/{$templateFile}"); } foreach ($searchTpls as $tplFile) { if (file_exists($tplFile)) { return $tplFile; } } $errmsg = MessageHelper::getMessage("UNABLE_TO_LOCATE_TEMPLATE_FILE", array($templateFile)); trigger_error($errmsg, E_USER_ERROR); return null; }