/** * Short description for 'downloadlist' * * Long description (if any) ... * * @param object $resp Parameter description (if any) ... * @param unknown $option Parameter description (if any) ... * @return void */ public static function downloadlist($resp, $option) { $database = \App::get('db'); $ee = new \Components\Events\Tables\Event($database); header('Content-type: text/comma-separated-values'); header('Content-disposition: attachment; filename="eventrsvp.csv"'); $fields = array('name', 'registered', 'affiliation', 'email', 'telephone', 'arrival', 'departure', 'disability', 'dietary', 'dinner'); //array_merge($ee->getDefinedFields(Request::getVar('id', array())), array('name')); // Output header usort($fields, array('\\Components\\Events\\Helpers\\Csv', 'fieldSorter')); echo self::quoteRow(array_map('ucfirst', $fields)); $rows = $resp->getRecords(); // Get a list of IDs to query the race identification for all of them at once to avoid // querying for it in a loop later $race_ids = array(); foreach ($rows as $re) { $race_ids[$re->id] = array('identification' => ''); } foreach (\Components\Events\Tables\Respondent::getRacialIdentification(array_keys($race_ids)) as $id => $val) { $race_ids[$id] = $val; } // Output rows foreach ($rows as $re) { if (!isset($re->last_name) || !$re->last_name) { $re->last_name = '[unknown]'; } if (!isset($re->first_name) || !$re->first_name) { $re->first_name = '[unknown]'; } $row = array($re->last_name . ', ' . $re->first_name); // TODO: Oops, I should have made these fields match up better in the first place. foreach ($fields as $field) { switch ($field) { case 'name': break; case 'position': $row[] = $re->position_description; break; case 'comments': $row[] = $re->comment; break; case 'degree': $row[] = $re->highest_degree; break; case 'race': $row[] = $race_ids[$re->id]['identification']; break; case 'address': $address = array(); if ($re->city) { $address[] = $re->city; } if ($re->state) { $address[] = $re->state; } if ($re->zip) { $address[] = $re->zip; } if ($re->country) { $address[] = $re->country; } $row[] = implode(', ', $address); break; case 'disability': $row[] = $re->disability_needs ? 'Yes' : 'No'; break; case 'dietary': $row[] = $re->dietary_needs; break; case 'dinner': $row[] = $re->attending_dinner ? 'Yes' : 'No'; break; default: if (isset($re->{$field})) { $row[] = $re->{$field}; } else { $row[] = ''; } break; } } echo self::quoteRow($row); } exit; }
/** * Process Registration * * @return string */ private function doRegister() { //get request vars $register = Request::getVar('register', NULL, 'post'); $arrival = Request::getVar('arrival', NULL, 'post'); $departure = Request::getVar('departure', NULL, 'post'); $dietary = Request::getVar('dietary', NULL, 'post'); $dinner = Request::getVar('dinner', NULL, 'post'); $disability = Request::getVar('disability', NULL, 'post'); $race = Request::getVar('race', NULL, 'post'); $event_id = Request::getInt('event_id', NULL, 'post'); //load event data $event = new \Components\Events\Models\Event($event_id); // get event params $params = new \Hubzero\Config\Registry($event->get('params')); //array to hold any errors $errors = array(); //check for first name if (!isset($register['first_name']) || $register['first_name'] == '') { $errors[] = Lang::txt('Missing first name.'); } //check for last name if (!isset($register['last_name']) || $register['last_name'] == '') { $errors[] = Lang::txt('Missing last name.'); } //check for affiliation if (isset($register['affiliation']) && $register['affiliation'] == '') { $errors[] = Lang::txt('Missing affiliation.'); } //check for email if email is supposed to be on if ($params->get('show_email', 1) == 1) { if (!isset($register['email']) || $register['email'] == '' || !filter_var($register['email'], FILTER_VALIDATE_EMAIL)) { $errors[] = Lang::txt('Missing email address or email is not valid.'); } // check to make sure this is the only time registering if (\Components\Events\Tables\Respondent::checkUniqueEmailForEvent($register['email'], $event_id) > 0) { $errors[] = Lang::txt('You have previously registered for this event.'); } } //if we have any errors we must return if (count($errors) > 0) { $this->register = $register; $this->arrival = $arrival; $this->departure = $departure; $this->dietary = $dietary; $this->dinner = $dinner; $this->disability = $disability; $this->race = $race; $this->setError(implode('<br />', $errors)); return $this->register(); } //set data for saving $eventsRespondent = new \Components\Events\Tables\Respondent(array()); $eventsRespondent->event_id = $event_id; $eventsRespondent->registered = Date::toSql(); $eventsRespondent->arrival = $arrival['day'] . ' ' . $arrival['time']; $eventsRespondent->departure = $departure['day'] . ' ' . $departure['time']; $eventsRespondent->position_description = ''; if (isset($register['position_other']) && $register['position_other'] != '') { $eventsRespondent->position_description = $register['position_other']; } else { if (isset($register['position'])) { $eventsRespondent->position_description = $register['position']; } } $eventsRespondent->highest_degree = isset($register['degree']) ? $register['degree'] : ''; $eventsRespondent->gender = isset($register['sex']) ? $register['sex'] : ''; $eventsRespondent->disability_needs = isset($disability) && strtolower($disability) == 'yes' ? 1 : null; $eventsRespondent->dietary_needs = isset($dietary['needs']) && strtolower($dietary['needs']) == 'yes' ? $dietary['specific'] : null; $eventsRespondent->attending_dinner = isset($dinner) && $dinner == 'yes' ? 1 : 0; $eventsRespondent->bind($register); //did we save properly if (!$eventsRespondent->save($eventsRespondent)) { $this->setError($eventsRespondent->getError()); return $this->register(); } $r = $race; unset($r['nativetribe']); $r = empty($r) ? array() : $r; $sql = "INSERT INTO `#__events_respondent_race_rel` (respondent_id, race, tribal_affiliation)\n\t\t VALUES (" . $this->database->quote($eventsRespondent->id) . ", " . $this->database->quote(implode(',', $r)) . ", " . $this->database->quote($race['nativetribe']) . ")"; $this->database->setQuery($sql); $this->database->query(); //load event we are registering for $eventsEvent = new \Components\Events\Tables\Event($this->database); $eventsEvent->load($event_id); // send a copy to event admin if ($eventsEvent->email != '') { //build message to send to event admin $email = new \Hubzero\Plugin\View(array('folder' => 'groups', 'element' => 'calendar', 'name' => 'calendar', 'layout' => 'register_email_admin')); $email->option = $this->option; $email->group = $this->group; $email->params = $params; $email->event = $eventsEvent; $email->sitename = Config::get('sitename'); $email->register = $register; $email->race = $race; $email->dietary = $dietary; $email->disability = $disability; $email->arrival = $arrival; $email->departure = $departure; $email->dinner = $dinner; $message = str_replace("\n", "\r\n", $email->loadTemplate()); //declare subject $subject = Lang::txt("[" . $email->sitename . "] Group \"{$this->group->get('description')}\" Event Registration: " . $eventsEvent->title); //make from array $from = array('email' => 'group-event-registration@' . $_SERVER['HTTP_HOST'], 'name' => $register['first_name'] . ' ' . $register['last_name']); // email from person if ($params->get('show_email', 1) == 1) { $from['email'] = $register['email']; } //send email $this->_sendEmail($eventsEvent->email, $from, $subject, $message); } // build message to send to event registerer // only send if show email is on if ($params->get('show_email', 1) == 1) { $email = $this->view('register_email_user', 'calendar'); $email->option = $this->option; $email->group = $this->group; $email->params = $params; $email->event = $eventsEvent; $email->sitename = Config::get('sitename'); $email->siteurl = Config::get('live_site'); $email->register = $register; $email->race = $race; $email->dietary = $dietary; $email->disability = $disability; $email->arrival = $arrival; $email->departure = $departure; $email->dinner = $dinner; $message = str_replace("\n", "\r\n", $email->loadTemplate()); // build to, from, & subject $to = User::get('email'); $from = array('email' => 'groups@' . $_SERVER['HTTP_HOST'], 'name' => $email->sitename . ' Group Calendar: ' . $this->group->get('description')); $subject = Lang::txt('Thank you for Registering for the "%s" event', $eventsEvent->title); // send mail to user registering $this->_sendEmail($to, $from, $subject, $message); } // redirect back to the event App::redirect(Route::url('index.php?option=' . $this->option . '&cn=' . $this->group->get('cn') . '&active=calendar&action=details&event_id=' . $event_id), Lang::txt('You have successfully registered for the event.'), 'passed'); }
/** * 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(); }
?> <?php if (!empty($resp->website)) { ?> <tr><td><?php echo Lang::txt('COM_EVENTS_RESPONDANT_WEBSITE'); ?> </td><td><?php echo $this->escape($resp->website); ?> </td></tr> <?php } ?> <?php $race = \Components\Events\Tables\Respondent::getRacialIdentification($resp->id); if (!empty($race)) { ?> <tr><td><?php echo Lang::txt('COM_EVENTS_RESPONDANT_RACE'); ?> </td><td><?php echo $this->escape($race); ?> </td></tr> <?php } ?> <?php if (!empty($resp->gender)) { ?>
/** * Remove one or more entries for an event * * @return void */ public function removeTask() { // Incoming $ids = Request::getVar('id', array()); if (!is_array($ids)) { $ids = array(); } // Make sure we have an ID if (empty($ids)) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller, false)); return; } // Instantiate an event object $event = new Event($this->database); // Instantiate a page object $ep = new Page($this->database); // Instantiate a respondent object $er = new Respondent(array()); // Loop through the IDs and unpublish the event foreach ($ids as $id) { // Instantiate an event tags object $rt = new Tags($id); // Delete tags on this event $rt->removeAll(); // Delete the event $event->delete($id); // Delete any associated pages $ep->deletePages($id); // Delete any associated respondents $er->deleteRespondents($id); } // Redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller, false), Lang::txt('COM_EVENTS_CAL_LANG_REMOVED')); }
/** * Remove one or more entries * * @return void */ public function removeTask() { // Check for request forgeries Request::checkToken(); // Incoming $workshop = Request::getInt('workshop', 0); $ids = Request::getVar('rid', array()); // Get the single ID we're working with if (!is_array($ids)) { $ids = array(); } // Do we have any IDs? if (!empty($ids)) { $r = new Respondent(array()); // Loop through each ID and delete the necessary items foreach ($ids as $id) { // Remove the profile $r->delete($id); } } // Output messsage and redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&id[]=' . $workshop, false), Lang::txt('COM_EVENTS_RESPONDENT_REMOVED')); }