/** * Do insert record * * @param array $inputRecord * @return void */ protected function _doInsert($inputRecord) { $dataRec = new DataRecord(null, $this->getDataObj()); // $inputRecord['Id'] = null; // comment it out for name PK case foreach ($inputRecord as $k => $v) { $dataRec[$k] = $v; } // or $dataRec->$k = $v; try { $dataRec->save(); } catch (ValidationException $e) { $errElements = $this->getErrorElements($e->m_Errors); if (count($e->m_Errors) == count($errElements)) { $this->formHelper->processFormObjError($errElements); } else { $errmsg = implode("<br />", $e->m_Errors); BizSystem::clientProxy()->showErrorMessage($errmsg); } return; } catch (BDOException $e) { $this->processBDOException($e); return; } $this->m_ActiveRecord = null; $this->getActiveRecord($dataRec["Id"]); //$this->runEventLog(); return $dataRec["Id"]; }
/** * Update login time * * @return void */ protected function UpdateloginTime() { $userObj = BizSystem::getObject('system.do.UserDO'); $curRecs = $userObj->directFetch("[username]='" . $this->username . "'", 1); if (count($curRecs) == 0) { return false; } $dataRec = new DataRecord($curRecs[0], $userObj); $dataRec['lastlogin'] = date("Y-m-d H:i:s"); $ok = $dataRec->save(); return true; }
public function put($resource, $id, $request, $response) { $inputRecord = json_decode($request->getBody()); $format = strtolower($request->params('format')); try { $this->validateInputs($inputRecord); } catch (ValidationException $e) { $this->setErrorResponse(400, $e->m_Errors, $response, $format); return; } $DOName = $this->getDOName($resource); if (empty($DOName)) { $response->status(404); $response->body("Resource '{$resource}' is not found."); return; } $dataObj = BizSystem::getObject($DOName); $rec = $dataObj->fetchById($id); if (empty($rec)) { $response->status(400); $response->body("No data is found for {$resource} {$id}"); return; } $dataRec = new DataRecord($rec, $dataObj); $dataRec['password'] = hash(HASH_ALG, $inputRecord->password_new); try { $dataRec->save(); } catch (ValidationException $e) { $this->setErrorResponse(400, $e->m_Errors, $response, $format); return; } catch (BDOException $e) { $this->setErrorResponse(400, $e->m_Errors, $response, $format); return; } $this->setNoticeResponse("Data is successfully saved.", $response, $format); }
public function ShareRecord() { $prtForm = $this->m_ParentFormName; if (!$prtForm) { return; } $prtFormObj = BizSystem::GetObject($prtForm); $recId = $this->m_ParentRecordId; $dataObj = $prtFormObj->getDataObj(); $dataRec = $dataObj->fetchById($recId); $recArr = $this->readInputRecord(); $DataRec = $dataRec; $DataRecOld = $dataRec; $currentRecord = $DataRecOld->toArray(); //notice users has new shared data //test if changed a new owner if ($recArr['notify_user']) { $data = $this->fetchData(); $data['app_index'] = APP_INDEX; $data['app_url'] = APP_URL; $data['operator_name'] = BizSystem::GetProfileName(BizSystem::getUserProfile("Id")); $emailSvc = BizSystem::getService(USER_EMAIL_SERVICE); if ($DataRec['owner_id'] != $recArr['owner_id']) { $emailSvc->DataAssignedEmail($recArr['owner_id'], $data); } //test if changes for group level visiable if ($recArr['group_perm'] >= 1) { $group_id = $recArr['group_id']; $userList = $this->_getGroupUserList($group_id); foreach ($userList as $user_id) { $emailSvc->DataSharingEmail($user_id, $data); } } //test if changes for other group level visiable if ($recArr['other_perm'] >= 1) { $groupList = $this->_getGroupList(); foreach ($groupList as $group_id) { if ($recArr['group_id'] == $group_id) { continue; } $userList = $this->_getGroupUserList($group_id); foreach ($userList as $user_id) { $emailSvc->DataSharingEmail($user_id, $data); } } } } if (isset($recArr['group_perm'])) { $DataRec['group_perm'] = $recArr['group_perm']; } if (isset($recArr['other_perm'])) { $DataRec['other_perm'] = $recArr['other_perm']; } if (isset($recArr['group_id'])) { $DataRec['group_id'] = $recArr['group_id']; } if (isset($recArr['owner_id'])) { $DataRec['owner_id'] = $recArr['owner_id']; } if (isset($recArr['create_by'])) { $DataRec['create_by'] = $recArr['create_by']; $DataRec['update_by'] = $recArr['create_by']; $DataRec['update_time'] = date('Y-m-d H:i:s'); } $DataRec->save(); $inputRecord = $recArr; //$prtFormObj->getDataObj()->updateRecord($newDataRec,$dataRec); //save change log $postFields = $_POST; $elem_mapping = array(); foreach ($postFields as $elem_name => $value) { $elem = $this->m_DataPanel->get($elem_name); $fld_name = $elem->m_FieldName; if ($elem) { $elem_mapping[$fld_name] = $elem; } } $logDO = $dataObj->getRefObject($this->m_LogDO); if ($logDO) { $cond_column = $logDO->m_Association['CondColumn']; $cond_value = $logDO->m_Association['CondValue']; if ($cond_column) { $type = $cond_value; } $foreign_id = $currentRecord['Id']; $logRecord = array(); foreach ($inputRecord as $fldName => $fldVal) { $oldVal = $currentRecord[$fldName]; if ($oldVal == $fldVal) { continue; } if ($oldVal === null || $fldVal === null) { continue; } $elem = $elem_mapping[$fldName]->m_XMLMeta; if (!$elem) { $elem = $this->m_DataPanel->getByField($fldName)->m_XMLMeta; } $logRecord[$fldName] = array('old' => $oldVal, 'new' => $fldVal, 'element' => $elem); } $formMetaLite = array("name" => $this->m_Name, "package" => $this->m_Package, "message_file" => $this->m_MessageFile); // save to comment do $logRec = new DataRecord(null, $logDO); $logRec['foreign_id'] = $foreign_id; $logRec['type'] = $type; $logRec['form'] = serialize($formMetaLite); $logRec['data'] = serialize($logRecord); $logRec['comment'] = $comment; $logRec->save(); } //end save change log if ($recArr['update_ref_data']) { if ($dataObj->m_ObjReferences->count()) { $this->_casacadeUpdate($dataObj, $recArr); } } if ($this->m_ParentFormName) { $this->close(); $this->renderParent(); } $this->processPostAction(); }
/** * Update login time * * @return void */ protected function UpdateloginTime() { $userObj = BizSystem::getObject('system.do.UserDO'); try { $curRecs = $userObj->directFetch("[username]='" . $this->username . "'", 1); $dataRec = new DataRecord($curRecs[0], $userObj); $dataRec['lastlogin'] = date("Y-m-d H:i:s"); $ok = $dataRec->save(); if (!$ok) { $errorMsg = $userObj->getErrorMessage(); BizSystem::log(LOG_ERR, "DATAOBJ", "DataObj error = " . $errorMsg); BizSystem::ClientProxy()->showErrorMessage($errorMsg); return false; } } catch (BDOException $e) { $errorMsg = $e->getMessage(); BizSystem::log(LOG_ERR, "DATAOBJ", "DataObj error = " . $errorMsg); BizSystem::ClientProxy()->showErrorMessage($errorMsg); return false; } return true; }
/** * Import from CSV file * NOTE: This method must be called from a popup form where a file is uploaded. * The parent form of the popup form is the target to import. * * @param string $objName * @return void */ public function importCSV($objName) { // read in file from $_FILE foreach ($_FILES as $file) { $error = $file['error']; if ($error != 0) { $this->reportError($error); return; } $tmpFileName = $file['tmp_name']; break; } //echo "upload file name = $tmpFileName"; $filename = $file['name']; if (strpos($filename, ".csv") === false) { $errorMsg = BizSystem::getMessage("EXCELSVC_INVALID_FILE", array($filename)); BizSystem::log(LOG_ERR, "EXCEL SERVICE", "Import error = " . $errorMsg); BizSystem::clientProxy()->showClientAlert($errorMsg); return; } /* @var $formObj EasyForm */ $formObj = BizSystem::objectFactory()->getObject($objName); // get the existing EasyForm object $parentFormObj = BizSystem::objectFactory()->getObject($formObj->m_ParentFormName); $dataObj = $parentFormObj->getDataObj(); $handle = fopen($tmpFileName, "r"); $fields = fgetcsv($handle, 2000, ","); if (!$fields || count($fields) < 2) { $errorMsg = BizSystem::getMessage("EXCELSVC_INVALID_FILE", array($filename)); BizSystem::log(LOG_ERR, "EXCEL SERVICE", "Import error = " . $errorMsg); BizSystem::clientProxy()->showClientAlert($errorMsg); return; } // convert form element names to DO field names foreach ($parentFormObj->m_DataPanel as $element) { $elem_fields[$element->m_Label] = $element->m_FieldName; } // validate with dataobj fields for ($i = 0; $i < count($fields); $i++) { $fields[$i] = $elem_fields[$fields[$i]]; $field = $fields[$i]; if (!$dataObj->getField($field)) { $errorMsg = BizSystem::getMessage("EXCELSVC_INVALID_COLUMN", array($field, $dataObj->m_Name)); BizSystem::log(LOG_ERR, "EXCEL SERVICE", "Import error = " . $errorMsg); BizSystem::clientProxy()->showClientAlert($errorMsg); return; } } while (($arr = fgetcsv($handle, 2000, ",")) !== FALSE) { if (count($arr) != count($fields)) { continue; } unset($recArr); $i = 0; for ($i = 0; $i < count($arr); $i++) { $recArr[$fields[$i]] = $arr[$i]; } //print_r($recArr); echo "<hr>"; $dataRec = new DataRecord(null, $dataObj); foreach ($recArr as $k => $v) { $dataRec[$k] = $v; } $ok = $dataRec->save(); if (!$ok) { // NOTE: EasyForm::processDataObjError() not return any value (void) return $formObj->processDataObjError($ok); } } fclose($handle); // in case of popup form, close it, then rerender the parent form if ($formObj->m_ParentFormName) { $formObj->close(); $formObj->renderParent(); } }
public function put($resource, $id, $request, $response) { $format = strtolower($request->params('format')); $DOName = $this->getDOName($resource); if (empty($DOName)) { $response->status(404); $response->body("Resource '{$resource}' is not found."); return; } $dataObj = BizSystem::getObject($DOName); $rec = $dataObj->fetchById($id); if (empty($rec)) { $response->status(404); $response->body("No data is found for {$resource} {$id}"); return; } $dataRec = new DataRecord($rec, $dataObj); $inputRecord = json_decode($request->getBody()); if ($inputRecord->password != $inputRecord->password_repeat) { $errors['password_repeat'] = "Password repeat is not same as password"; $this->setErrorResponse(400, $errors, $response, $format); return; } foreach ($inputRecord as $k => $v) { // if password is ********, ignore password value if ($k == 'password' && $v == '********') { continue; } if ($k == 'password') { $v = hash(HASH_ALG, $v); } if ($k == 'password_repeat') { continue; } $dataRec[$k] = $v; // or $dataRec->$k = $v; } try { $dataRec->save(); } catch (ValidationException $e) { $response->status(400); $errmsg = implode("\n", $e->m_Errors); $response->body($errmsg); return; } catch (BDOException $e) { $response->status(400); $response->body($e->getMessage()); return; } return $this->setResponse($dataRec->toArray(), $response, $format); }
/** * Do update record * * @param array $inputRecord * @param array $currentRecord * @return void */ protected function _doUpdate($inputRecord, $currentRecord) { $dataRec = new DataRecord($currentRecord, $this->getDataObj()); foreach ($inputRecord as $k => $v) { $dataRec[$k] = $v; // or $dataRec->$k = $v; } try { $dataRec->save(); } catch (ValidationException $e) { $errElements = $this->getErrorElements($e->m_Errors); if (count($e->m_Errors) == count($errElements)) { $this->formHelper->processFormObjError($errElements); } else { $errmsg = implode("<br />", $e->m_Errors); BizSystem::clientProxy()->showErrorMessage($errmsg); } return false; } catch (BDOException $e) { $this->processBDOException($e); return false; } $this->m_ActiveRecord = null; $this->getActiveRecord($dataRec["Id"]); //$this->runEventLog(); return true; }
/** * Save wizard data of current+previous pages into database or other storage * * @return void */ public function commit() { // commit the form input. call SaveRecord() $recArr = $this->m_ActiveRecord; if ($this->m_FormType == "NEW") { $dataRec = new DataRecord(null, $this->getDataObj()); } else { //$currentRec = $this->fetchData(); // wrong way to get current data. need to query the old one $currentRec = array(); // to get record with "" values $dataRec = new DataRecord($currentRec, $this->getDataObj()); } foreach ($recArr as $k => $v) { $dataRec[$k] = $v; } // or $dataRec->$k = $v; try { $dataRec->save(); } catch (BDOException $e) { $this->processBDOException($e); return false; } return true; }
/** * Save current edited record with input * * @return void */ public function saveRecord() { // call ValidateForm() if ($this->ValidateForm() == false) { return; } $recArr = array(); if ($this->readInputRecord($recArr) == false) { return; } if ($this->m_Mode == MODE_N) { $dataRec = new DataRecord(null, $this->getDataObj()); } else { if ($this->m_Mode == MODE_E) { $dataRec = new DataRecord($this->getActiveRecord(), $this->getDataObj()); } } foreach ($recArr as $k => $v) { $dataRec[$k] = $v; } // or $dataRec->$k = $v; $ok = $dataRec->save(); if (!$ok) { return $this->processDataObjError($ok); } $this->UpdateActiveRecord($this->getDataObj()->getActiveRecord()); $this->SetDisplayMode(MODE_R); // TODO: popup message of new record successful saved $this->rerender(); }
/** * Do insert record * * @param array $inputRecord * @return void */ protected function _doInsert($inputRecord) { // check access, if deny, redirect to access deny page if ($this->m_Resource != "" && !$this->allowAccess($this->m_Resource . ".create")) { return BizSystem::clientProxy()->redirectView(ACCESS_DENIED_VIEW); } $dataRec = new DataRecord(null, $this->getDataObj()); // $inputRecord['Id'] = null; // comment it out for name PK case foreach ($inputRecord as $k => $v) { $dataRec[$k] = $v; } // or $dataRec->$k = $v; try { $dataRec->save(); } catch (ValidationException $e) { $errElements = $this->getErrorElements($e->m_Errors); if (count($e->m_Errors) == count($errElements)) { $this->processFormObjError($errElements); } else { $errmsg = implode("<br />", $e->m_Errors); BizSystem::clientProxy()->showErrorMessage($errmsg); } return; } catch (BDOException $e) { $this->processBDOException($e); return; } $this->m_ActiveRecord = null; $this->getActiveRecord($dataRec["Id"]); $this->runEventLog(); }
public function put($resource, $id, $request, $response) { $DOName = $this->getDOName($resource); if (empty($DOName)) { $response->status(404); $response->body("Resource '{$resource}' is not found."); return; } $dataObj = BizSystem::getObject($DOName); $rec = $dataObj->fetchById($id); if (empty($rec)) { $response->status(404); $response->body("No data is found for {$resource} {$id}"); return; } $dataRec = new DataRecord($rec, $dataObj); $inputRecord = json_decode($request->getBody()); foreach ($inputRecord as $k => $v) { $dataRec[$k] = $v; // or $dataRec->$k = $v; } try { $dataRec->save(); } catch (ValidationException $e) { $response->status(400); $errmsg = implode("\n", $e->m_Errors); $response->body($errmsg); return; } catch (BDOException $e) { $response->status(500); $response->body($e->getMessage()); return; } $format = strtolower($request->params('format')); return $this->setResponse($dataRec->toArray(), $response, $format); }