Example #1
0
 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;
             }
         }
     }
 }