コード例 #1
0
ファイル: timev1_0.php プロジェクト: kevinwojo/hubzero-cms
 /**
  * Saves a new time records, updating it if it alread exists
  *
  * @apiMethod POST
  * @apiUri    /time/postRecord
  * @apiParameter {
  * 		"name":        "id",
  * 		"description": "Record id",
  * 		"type":        "integer",
  * 		"required":    false,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "task_id",
  * 		"description": "Task ID of record",
  * 		"type":        "integer",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "start",
  * 		"description": "Start date/time of record",
  * 		"type":        "string",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "end",
  * 		"description": "End date/time of record",
  * 		"type":        "string",
  * 		"required":    true,
  * 		"default":     null
  * }
  * @apiParameter {
  * 		"name":        "description",
  * 		"description": "Record description",
  * 		"type":        "string",
  * 		"required":    false,
  * 		"default":     null
  * }
  * @return  void
  */
 public function postRecordTask()
 {
     // Require authentication and authorization
     $this->requiresAuthentication();
     $this->authorizeOrFail();
     // Incoming posted data (grab individually for added security)
     $r = [];
     $r['task_id'] = Request::getInt('task_id');
     $r['date'] = Date::of(Request::getVar('start'))->toSql();
     $r['end'] = Date::of(Request::getVar('end'))->toSql();
     $r['description'] = Request::getVar('description');
     $r['time'] = (strtotime($r['end']) - strtotime($r['date'])) / 3600;
     $r['user_id'] = App::get('authn')['user_id'];
     // Create object and store content
     $record = Record::oneOrNew(Request::getInt('id'));
     $update = false;
     // See if we have an incoming id, indicating update
     if (!$record->isNew()) {
         // Make sure updater is the owner of the record
         if (!$record->isMine()) {
             App::abort(401, 'You are only allowed to update your own records');
         }
         $update = true;
     }
     // Do the actual save
     if (!$record->set($r)->save()) {
         App::abort(500, 'Record creation failed');
     }
     // Return response
     $response = $update ? 'Record successfully saved' : 'Record successfully created';
     $status = $update ? 200 : 201;
     $this->send($response, $status);
 }
コード例 #2
0
ファイル: records.php プロジェクト: mined-gatech/hubzero-cms
 /**
  * Save new time record and redirect to the records page
  *
  * @return void
  */
 public function saveTask()
 {
     // Create object
     $record = Record::oneOrNew(Request::getInt('id'))->set(array('task_id' => Request::getInt('task_id'), 'user_id' => Request::getInt('user_id'), 'time' => Request::getInt('htime') . '.' . Request::getInt('mtime'), 'date' => Date::of(Request::getVar('date'), Config::get('offset'))->toSql(), 'description' => Request::getVar('description')));
     // Set end based on start + time length
     $record->set('end', date('Y-m-d H:i:s', strtotime($record->date) + $record->time * 3600));
     // Only create records for yourself or your proxies
     if (!$record->isMine() && !$record->iCanProxy()) {
         // Set the redirect
         App::redirect(Route::url($this->base), Lang::txt('COM_TIME_RECORDS_WARNING_CANT_EDIT_OTHER'), 'warning');
         return;
     }
     if (!$record->save()) {
         // Something went wrong...return errors
         foreach ($record->getErrors() as $error) {
             $this->view->setError($error);
         }
         $this->view->setLayout('edit');
         $this->view->task = 'edit';
         $this->editTask($record);
         return;
     }
     // Set the redirect
     App::redirect(Route::url($this->base . $this->start($record)), Lang::txt('COM_TIME_RECORDS_SAVE_SUCCESSFUL'), 'passed');
 }