recordValues; } function process(Mobile_API_Request $request) { global $current_user; // Required for vtws_update API $current_user = $this->getActiveUser(); $module = $request->get('module'); $recordid = $request->get('record'); $valuesJSONString = $request->get('values'); $values = ""; if(!empty($valuesJSONString) && is_string($valuesJSONString)) { $values = Zend_Json::decode($valuesJSONString); } else { $values = $valuesJSONString; // Either empty or already decoded. } $response = new Mobile_API_Response(); if (empty($values)) { $response->setError(1501, "Values cannot be empty!"); return $response; } try { // Retrieve or Initalize if (!empty($recordid) && !$this->isTemplateRecordRequest($request)) { $this->recordValues = vtws_retrieve($recordid, $current_user); } 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']); // Gather response with full details $response = parent::process($request); } catch(Exception $e) { $response->setError($e->getCode(), $e->getMessage()); } return $response; } }