Пример #1
0
 function process(Mobile_API_Request $request)
 {
     global $current_user;
     // Required for vtws_update API
     $current_user = $this->getActiveUser();
     $module = $request->get('module');
     //update if recordid exist
     $recordid = $request->get('record');
     $valueArray = Mobile_API_Request::getvaluemap($request);
     $values = '';
     if (!empty($valueArray) && is_string($valueArray)) {
         $values = Zend_Json::decode($valueArray);
     } else {
         $values = $valueArray;
         // Either empty or already decoded.
     }
     //catch error
     $response = new Mobile_API_Response();
     if (empty($values)) {
         $response->setError(1501, "Values cannot be empty!");
         return $response;
     }
     try {
         // Retrieve or Initialize
         if (!empty($recordid)) {
             $this->recordValues = parent::processRetrieve($request);
         } else {
             $this->recordValues = array();
         }
         // Set the modified values
         foreach ($values as $name => $value) {
             $this->recordValues[$name] = $value;
         }
         // Update or Create
         if (isset($this->recordValues['id'])) {
             $this->recordValues = vtws_update($this->recordValues, $current_user);
         } else {
             // Set right target module name for Calendar/Event record
             if ($module == 'Calendar') {
                 if (!empty($this->recordValues['eventstatus']) && $this->recordValues['activitytype'] != 'Task') {
                     $module = 'Events';
                 }
             }
             $this->recordValues = vtws_create($module, $this->recordValues, $current_user);
         }
         // Update the record id
         $request->set('record', $this->recordValues['id']);
         $request->set('id', $this->recordValues['id']);
         // Gather response with full details
         $response = parent::process($request);
     } catch (Exception $e) {
         $response->setError($e->getCode(), $e->getMessage());
     }
     return $response;
 }
 protected function processRetrieve(Mobile_API_Request $request)
 {
     $recordid = $request->get('record');
     // Create a template record for use
     if ($this->isTemplateRecordRequest($request)) {
         $current_user = $this->getActiveUser();
         $module = $this->detectModuleName($recordid);
         $describeInfo = vtws_describe($module, $current_user);
         Mobile_WS_Utils::fixDescribeFieldInfo($module, $describeInfo);
         $this->cacheDescribeInfo($describeInfo);
         $templateRecord = array();
         foreach ($describeInfo['fields'] as $describeField) {
             $templateFieldValue = '';
             if (isset($describeField['type']) && isset($describeField['type']['defaultValue'])) {
                 $templateFieldValue = $describeField['type']['defaultValue'];
             } else {
                 if (isset($describeField['default'])) {
                     $templateFieldValue = $describeField['default'];
                 }
             }
             $templateRecord[$describeField['name']] = $templateFieldValue;
         }
         if (isset($templateRecord['assigned_user_id'])) {
             $templateRecord['assigned_user_id'] = sprintf("%sx%s", Mobile_WS_Utils::getEntityModuleWSId('Users'), $current_user->id);
         }
         // Reset the record id
         $templateRecord['id'] = $recordid;
         return $templateRecord;
     }
     // Or else delgate the action to parent
     return parent::processRetrieve($request);
 }