Example #1
0
 /** @noinspection PhpUnusedPrivateMethodInspection
  * @param Request $request
  *
  * @return bool|mixed
  * @throws PermissionRequiredException
  * @throws exceptions\LoginRequiredException
  */
 private function addCitation(Request $request)
 {
     if (!$this->auth->checkPermission(Auth::EDIT_PUBLICATION)) {
         throw new PermissionRequiredException(Auth::EDIT_PUBLICATION);
     }
     // Here I did not used a CitationModel validator, since this would
     // require publication_id to be present
     $id = Validator::sanitizeNumber($request->get('id'));
     if (!$id) {
         throw new UnexpectedValueException();
     }
     $validator = new Validator($this->db);
     $validator->addRule('citation_id', 'number', true, 'Citation is required but invalid');
     if ($validator->validate($request->post())) {
         $data = $validator->getSanitizedResult();
         try {
             $this->model->addCitation($id, $data['citation_id']);
             return true;
         } catch (DBDuplicateEntryException $e) {
             $this->errors[] = 'This citation is already assigned to this publication';
             return false;
         }
     } else {
         $this->errors = array_merge($this->errors, $validator->getErrors());
         return false;
     }
 }