/**
  * Validate the form
  */
 function validate()
 {
     import('classes.payment.ojs.OJSPaymentManager');
     $paymentManager =& OJSPaymentManager::getManager();
     if ($paymentManager->submissionEnabled()) {
         if (!parent::validate()) {
             return false;
         }
         $journal =& Request::getJournal();
         $journalId = $journal->getId();
         $articleId = $this->articleId;
         $user =& Request::getUser();
         $completedPaymentDAO =& DAORegistry::getDAO('OJSCompletedPaymentDAO');
         if ($completedPaymentDAO->hasPaidSubmission($journalId, $articleId)) {
             return parent::validate();
         } elseif (Request::getUserVar('qualifyForWaiver') && Request::getUserVar('commentsToEditor') != '') {
             return parent::validate();
         } elseif (Request::getUserVar('paymentSent')) {
             return parent::validate();
         } else {
             $queuedPayment =& $paymentManager->createQueuedPayment($journalId, PAYMENT_TYPE_SUBMISSION, $user->getId(), $articleId, $journal->getSetting('submissionFee'));
             $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
             $paymentManager->displayPaymentForm($queuedPaymentId, $queuedPayment);
             exit;
         }
     } else {
         return parent::validate();
     }
 }