Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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');
 }
Example #3
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();
 }
Example #4
0
?>
		<?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)) {
    ?>
Example #5
0
 /**
  * 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'));
 }
Example #6
0
 /**
  * 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'));
 }