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; } } } }