Esempio n. 1
0
 /**
  * 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"];
 }
Esempio n. 2
0
 /**
  * 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);
 }
Esempio n. 4
0
 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();
 }
Esempio n. 5
0
 /**
  * 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;
 }
Esempio n. 6
0
 /**
  * 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();
     }
 }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
 /**
  * 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;
 }
Esempio n. 9
0
 /**
  * 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;
 }
Esempio n. 10
0
 /**
  * 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();
 }
Esempio n. 11
0
 /**
  * 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();
 }
Esempio n. 12
0
 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);
 }