예제 #1
0
 /**
  * Process event registration
  *
  * @return     void
  */
 public function processTask()
 {
     // Get some needed info
     $offset = $this->offset;
     $year = $this->year;
     $month = $this->month;
     $day = $this->day;
     $option = $this->_option;
     // Incoming
     $id = Request::getInt('id', 0, 'post');
     // Ensure we have an ID
     if (!$id) {
         App::redirect(Route::url('index.php?option=' . $this->_option));
         return;
     }
     // Load event
     $event = new Event($this->database);
     $event->load($id);
     $this->event = $event;
     // Ensure we have an event
     if (!$event->title) {
         App::redirect(Route::url('index.php?option=' . $this->_option));
         return;
     }
     $auth = true;
     if ($this->config->getCfg('adminlevel')) {
         $auth = $this->_authorize();
     }
     $bits = explode('-', $event->publish_up);
     $eyear = $bits[0];
     $emonth = $bits[1];
     $edbits = explode(' ', $bits[2]);
     $eday = $edbits[0];
     $page = new Page($this->database);
     $page->alias = $this->_task;
     // Get the pages for this workshop
     $pages = $page->loadPages($event->id);
     // Set the page title
     Document::setTitle(Lang::txt(strtoupper($this->_name)) . ': ' . Lang::txt('EVENTS_REGISTER') . ': ' . stripslashes($event->title));
     // Set the pathway
     if (Pathway::count() <= 0) {
         Pathway::append(Lang::txt(strtoupper($this->_name)), 'index.php?option=' . $this->_option);
     }
     Pathway::append($eyear, 'index.php?option=' . $this->_option . '&year=' . $eyear);
     Pathway::append($emonth, 'index.php?option=' . $this->_option . '&year=' . $eyear . '&month=' . $emonth);
     Pathway::append($eday, 'index.php?option=' . $this->_option . '&year=' . $eyear . '&month=' . $emonth . '&day=' . $eday);
     Pathway::append(stripslashes($event->title), 'index.php?option=' . $this->_option . '&task=details&id=' . $event->id);
     Pathway::append(Lang::txt('EVENTS_REGISTER'), 'index.php?option=' . $this->_option . '&task=details&id=' . $event->id . '&page=register');
     // Incoming
     $register = Request::getVar('register', NULL, 'post');
     $arrival = Request::getVar('arrival', NULL, 'post');
     $departure = Request::getVar('departure', NULL, 'post');
     $dietary = Request::getVar('dietary', NULL, 'post');
     $bos = Request::getVar('bos', NULL, 'post');
     $dinner = Request::getVar('dinner', NULL, 'post');
     $disability = Request::getVar('disability', NULL, 'post');
     $race = Request::getVar('race', NULL, 'post');
     if ($register) {
         $register = array_map('trim', $register);
         $register = array_map(array('\\Hubzero\\Utility\\Sanitize', 'stripAll'), $register);
         $validemail = $this->_validEmail($register['email']);
     }
     if ($arrival) {
         $arrival = array_map('trim', $arrival);
         $arrival = array_map(array('\\Hubzero\\Utility\\Sanitize', 'stripAll'), $arrival);
     }
     if ($departure) {
         $departure = array_map('trim', $departure);
         $departure = array_map(array('\\Hubzero\\Utility\\Sanitize', 'stripAll'), $departure);
     }
     if ($dietary) {
         $dietary = array_map('trim', $dietary);
         $dietary = array_map(array('\\Hubzero\\Utility\\Sanitize', 'stripAll'), $dietary);
     }
     // check to make sure this is the only time registering
     if (Respondent::checkUniqueEmailForEvent($register['email'], $event->id) > 0) {
         $this->setError(Lang::txt('EVENTS_EVENT_REGISTRATION_PREVIOUS'));
         $validemail = 0;
     }
     if ($register['firstname'] && $register['lastname'] && $validemail == 1) {
         $email = $event->email;
         $subject = Lang::txt('EVENTS_EVENT_REGISTRATION') . ': ' . $event->title;
         $hub = array('email' => $register['email'], 'name' => Config::get('sitename') . ' ' . Lang::txt('EVENTS_EVENT_REGISTRATION'));
         $eview = new \Hubzero\Component\View(array('name' => 'register', 'layout' => 'email'));
         $eview->option = $this->_option;
         $eview->sitename = Config::get('sitename');
         $eview->register = $register;
         $eview->race = $race;
         $eview->dietary = $dietary;
         $eview->disability = $disability;
         $eview->arrival = $arrival;
         $eview->departure = $departure;
         $eview->dinner = $dinner;
         $eview->bos = $bos;
         $message = $eview->loadTemplate();
         $message = str_replace("\n", "\r\n", $message);
         // check to see if event manager email is configured
         if ($email != "" || $email != NULL || !isset($email)) {
             // one for the event manager
             $this->_sendEmail($hub, $email, $subject, $message);
         }
         // one for the attendee
         $this->_sendEmail($hub, $register['email'], $subject, $message);
         $this->_log($register);
         $this->view->setLayout('thanks');
     } else {
         $this->view->setLayout('default');
     }
     $this->view->setName('register');
     $this->view->state = 'open';
     $this->view->option = $this->_option;
     $this->view->title = Lang::txt(strtoupper($this->_name)) . ': ' . Lang::txt('EVENTS_REGISTER');
     $this->view->task = $this->_task;
     $this->view->year = $year;
     $this->view->month = $month;
     $this->view->day = $day;
     $this->view->offset = $offset;
     $this->view->event = $event;
     $this->view->authorized = $auth;
     $this->view->page = $page;
     $this->view->pages = $pages;
     $this->view->register = $register;
     $this->view->arrival = $arrival;
     $this->view->departure = $departure;
     if ($this->getError()) {
         $this->view->setError($this->getError());
     }
     $this->view->display();
 }