/** * @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; }
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); }