/**
  * @TODO this is SO ugly!
  */
 public function jsSpeakersAddAction()
 {
     $request = $this->getRequest();
     if (!$request->isPost()) {
         die;
     }
     $post = $request->getPost();
     $submission_id = $post['submission_id'];
     $user_id = $post['user_id'];
     // Creates the link and set as 'pending'
     $submissionUser = new SubmissionUser();
     $submissionUser->exchangeArray(array('submission_id' => $submission_id, 'user_id' => $user_id, 'status' => 'pending', 'main' => 0));
     try {
         $this->getSubmissionUserTable()->saveSubmissionUser($submissionUser);
     } catch (\Exception $e) {
         echo 0;
         die;
     }
     echo 1;
     die;
 }
Esempio n. 2
0
 public function submitAction()
 {
     // Check if exists Conference ID
     if (!($conference_id = $this->params()->fromRoute('id', 0))) {
         return $this->redirect()->toRoute('cfp');
     }
     // Check if CFP is open
     // Submiting and editing is denied when cfp is closed
     if (!$this->getConferenceTable()->callIsOpen($conference_id)) {
         return $this->redirect()->toRoute('cfp/inner', array('action' => 'closed'));
     }
     // Get User ID and Submission ID
     $user_id = $this->zfcUserAuthentication()->getIdentity()->getId();
     $submission_id = $this->params()->fromRoute('edit', 0);
     if ($submission_id && !$this->getSubmissionUserTable()->validateUserSubmission($user_id, $submission_id)) {
         return $this->redirect()->toRoute('my-submissions');
     }
     // Get tracks
     $tracks_form = array();
     $tracks = $this->getTrackTable()->getTracksByConference((int) $conference_id);
     // Prepare tracks for the form
     foreach ($tracks as $t) {
         $tracks_form[$t->track_id] = $t->name;
     }
     $form = new SubmissionForm(null, $tracks_form);
     // Is it edit?
     if ($submission_id) {
         $edit_subs = $this->getSubmissionTable()->getSubmission($submission_id);
         $form->bind($edit_subs);
     }
     // Paper submission
     $request = $this->getRequest();
     if ($request->isPost()) {
         // Insert or edit?
         if (!$submission_id) {
             /**
              * Inserting case
              */
             $submission = new Submission();
             $form->setInputFilter($submission->getInputFilter());
             $form->setData($request->getPost());
             // Is this form ok?
             if ($form->isValid()) {
                 $formData = $form->getData();
                 $formData['conference_id'] = $conference_id;
                 // Data gathering
                 $submission->exchangeArray($formData);
                 $submission_id = $this->getSubmissionTable()->saveSubmission($submission);
                 // Link user to submission
                 $submissionUser = new SubmissionUser();
                 $submissionUser->exchangeArray(array('submission_id' => $submission_id, 'user_id' => $user_id, 'status' => 'confirmed', 'main' => 1));
                 $this->getSubmissionUserTable()->saveSubmissionUser($submissionUser);
                 return $this->redirect()->toRoute('cfp/ok');
             }
         } else {
             /**
              * Editing case
              */
             $form->setData($request->getPost());
             // This is a sad workaround :(
             $date_sent = $edit_subs->date_sent;
             $accepted = $edit_subs->accepted;
             if ($form->isValid()) {
                 /**
                  * @TODO why this data set doesn't hold the values?
                  */
                 $edit_subs->submission_id = $submission_id;
                 $edit_subs->conference_id = $conference_id;
                 $edit_subs->date_sent = $date_sent;
                 $edit_subs->accepted = $accepted;
                 $this->getSubmissionTable()->saveSubmission($edit_subs);
             }
             return $this->redirect()->toRoute('my-submissions');
         }
     }
     return array('form' => $form, 'conference_id' => $conference_id, 'edit' => (bool) $submission_id, 'submission_id' => $submission_id);
 }