示例#1
0
 /**
  * Import registrations and registration types.
  */
 function importRegistrations()
 {
     if ($this->hasOption('verbose')) {
         printf("Importing registrations\n");
     }
     $registrationTypeDao =& DAORegistry::getDAO('RegistrationTypeDAO');
     $registrationDao =& DAORegistry::getDAO('RegistrationDAO');
     $userDao =& DAORegistry::getDAO('UserDAO');
     $registrationTypes = array();
     foreach ($this->conferenceInfo as $conferenceId => $conferenceInfo) {
         $levels = array_map('trim', split("\n", Core::cleanVar($conferenceInfo['reg_levels'])));
         $fees = array_map('trim', split("\n", Core::cleanVar($conferenceInfo['reg_fees'])));
         $levelsLate = array_map('trim', split("\n", Core::cleanVar($conferenceInfo['reg_levels_late'])));
         $feesLate = array_map('trim', split("\n", Core::cleanVar($conferenceInfo['reg_fees_late'])));
         $lateDate = Core::cleanVar($conferenceInfo['reg_late_date']);
         $schedConf =& $this->schedConfMap[$conferenceId];
         foreach ($levels as $key => $level) {
             $fee = $fees[$key];
             $registrationType = new RegistrationType();
             $registrationType->setSchedConfId($schedConf->getId());
             $registrationType->setName($level, Locale::getLocale());
             $registrationType->setCost($fee);
             $registrationType->setCurrencyCodeAlpha('USD');
             // FIXME?
             $registrationType->setOpeningDate(Core::cleanVar($conferenceInfo['accept_deadline']));
             $registrationType->setClosingDate($lateDate);
             $registrationType->setAccess(REGISTRATION_TYPE_ACCESS_ONLINE);
             $registrationType->setPublic(0);
             $registrationType->setInstitutional(0);
             $registrationType->setMembership(0);
             $registrationType->setSequence($key);
             $registrationTypeDao->insertRegistrationType($registrationType);
             $registrationTypes[substr($level, 0, 60)] =& $registrationType;
             // Truncated in 1.x DB
             unset($registrationType);
         }
         foreach ($levelsLate as $key => $level) {
             $fee = $feesLate[$key];
             $registrationType = new RegistrationType();
             $registrationType->setSchedConfId($schedConf->getId());
             $registrationType->setName($level . ' (Late)', Locale::getLocale());
             $registrationType->setCost($fee);
             $registrationType->setCurrencyCodeAlpha('USD');
             // FIXME?
             $registrationType->setOpeningDate($lateDate);
             $registrationType->setClosingDate(Core::cleanVar($conferenceInfo['start_date']));
             $registrationType->setAccess(REGISTRATION_TYPE_ACCESS_ONLINE);
             $registrationType->setPublic(0);
             $registrationType->setInstitutional(0);
             $registrationType->setMembership(0);
             $registrationType->setSequence($key);
             $registrationTypeDao->insertRegistrationType($registrationType);
             $registrationTypes[substr($level, 0, 60) . ' (Late)'] =& $registrationType;
             // Truncated in 1.x DB
             unset($registrationType);
         }
     }
     $result =& $this->importDao->retrieve('SELECT * FROM registrants ORDER BY cf, id');
     while (!$result->EOF) {
         $row =& $result->fields;
         $schedConf =& $this->schedConfMap[$row['cf']];
         $email = Core::cleanVar($row['email']);
         if (!($user =& $userDao->getUserByEmail($email))) {
             // The user doesn't exist by email; create one.
             $name = Core::cleanVar($row['name']);
             $nameParts = split(' ', $name);
             $lastName = array_pop($nameParts);
             $firstName = join(' ', $nameParts);
             $user = new User();
             $user->setEmail($email);
             $user->setFirstName($firstName);
             $user->setLastName($lastName);
             $user->setPhone(Core::cleanVar($row['phone']));
             $user->setFax(Core::cleanVar($row['fax']));
             $user->setMailingAddress(Core::cleanVar($row['address']));
             $i = "";
             while ($userDao->userExistsByUsername($lastName . $i)) {
                 $i++;
             }
             $user->setUsername($lastName . $i);
             $user->setDateRegistered($row['date_registered']);
             $user->setDateLastLogin(null);
             $user->setMustChangePassword(1);
             $password = Validation::generatePassword();
             $user->setPassword(Validation::encryptCredentials($user->getUsername(), $password));
             $userDao->insertUser($user);
             if ($this->hasOption('emailUsers')) {
                 import('classes.mail.MailTemplate');
                 $mail = new MailTemplate('USER_REGISTER');
                 $mail->setFrom($schedConf->getSetting('contactEmail'), $schedConf->getSetting('contactName'));
                 $mail->assignParams(array('username' => $user->getUsername(), 'password' => $password, 'conferenceName' => $schedConf->getFullTitle()));
                 $mail->addRecipient($user->getEmail(), $user->getFullName());
                 $mail->send();
             }
         }
         $regLevel = trim(Core::cleanVar($row['reg_level']));
         $regFee = Core::cleanVar($row['reg_fee']);
         $conferenceInfo =& $this->conferenceInfo[$row['cf']];
         $seekingRegLevel = $regLevel . (strtotime($row['date_registered']) > strtotime($conferenceInfo['reg_late_date']) ? ' (Late)' : '');
         $registrationType =& $registrationTypes[$seekingRegLevel];
         if (!$registrationType || $registrationType->getCost() != $regFee) {
             if (!$registrationType) {
                 $this->errors[] = "Registration data inconsistency: Registration type \"{$seekingRegLevel}\" not found for user with email {$email}.";
             } else {
                 $this->errors[] = "Registration data inconsistency: Paid registration fee {$regFee} does not match registration type cost for \"{$seekingRegLevel}\" (" . $registrationType->getCost() . ") for user with email {$email}.";
                 unset($registrationType);
             }
             unset($user);
             unset($schedConf);
             $result->MoveNext();
             continue;
         }
         if ($registrationDao->registrationExistsByUser($user->getId(), $schedConf->getId())) {
             $this->errors[] = "A duplicate registration (level \"{$seekingRegLevel}\") was skipped for user with email {$email}.";
         } else {
             $registration = new Registration();
             $registration->setSchedConfId($schedConf->getId());
             $registration->setUserId($user->getId());
             $registration->setTypeId($registrationType->getTypeId());
             if ($row['has_paid'] == 'paid') {
                 $registration->setDatePaid(Core::cleanVar($row['date_paid']));
             }
             $registration->setSpecialRequests(Core::cleanVar($row['special_requests']));
             $registration->setDateRegistered($row['date_registered']);
             $registrationDao->insertRegistration($registration);
             unset($registration);
         }
         unset($user);
         unset($registrationType);
         unset($conferenceInfo);
         unset($schedConf);
         $result->MoveNext();
     }
     $result->Close();
 }
示例#2
0
 /**
  * Internal function to return a Registration object from a row.
  * @param $row array
  * @return Registration
  */
 function &_returnRegistrationFromRow(&$row)
 {
     $registration = new Registration();
     $registration->setId($row['registration_id']);
     $registration->setSchedConfId($row['sched_conf_id']);
     $registration->setUserId($row['user_id']);
     $registration->setTypeId($row['type_id']);
     $registration->setDateRegistered($this->dateFromDB($row['date_registered']));
     $registration->setDatePaid($this->dateFromDB($row['date_paid']));
     $registration->setMembership($row['membership']);
     $registration->setDomain($row['domain']);
     $registration->setIPRange($row['ip_range']);
     $registration->setSpecialRequests($row['special_requests']);
     $registration->setSurvey($row['survey']);
     $registration->setApplicationForm($row['application_form']);
     HookRegistry::call('RegistrationDAO::_returnRegistrationFromRow', array(&$registration, &$row));
     return $registration;
 }
示例#3
0
 /**
  * Save registration. 
  */
 function execute()
 {
     $registrationDao =& DAORegistry::getDAO('RegistrationDAO');
     $schedConf =& Request::getSchedConf();
     if (isset($this->registrationId)) {
         $registration =& $registrationDao->getRegistration($this->registrationId);
     }
     if (!isset($registration)) {
         $registration = new Registration();
         $registration->setDateRegistered(time());
     }
     $registration->setSchedConfId($schedConf->getId());
     $registration->setUserId($this->getData('userId'));
     $registration->setTypeId($this->getData('typeId'));
     $registration->setApplicationForm($this->getData('applicationForm'));
     $registration->setSurvey($this->getData('survey'));
     $registration->setMembership($this->getData('membership') ? $this->getData('membership') : null);
     $registration->setDomain($this->getData('domain') ? $this->getData('domain') : null);
     $registration->setIPRange($this->getData('ipRange') ? $this->getData('ipRange') : null);
     $registration->setSpecialRequests($this->getData('specialRequests') ? $this->getData('specialRequests') : null);
     // Send an email to the registrant informing them that their payment was received
     if ($this->getData('notifyPaymentEmail')) {
         $userDao =& DAORegistry::getDAO('UserDAO');
         $schedConfName = $schedConf->getSchedConfTitle();
         $schedConfId = $schedConf->getId();
         $user =& $userDao->getUser($this->getData('userId'));
         list($registrationEmail, $registrationName, $registrationContactSignature) = $this->getRegistrationContactInformation($schedConfId);
         $paramArray = array('registrantName' => $user->getFullName(), 'schedConfName' => $schedConfName, 'registrationContactSignature' => $registrationContactSignature);
         import('mail.MailTemplate');
         $mail = new MailTemplate('MANUAL_PAYMENT_RECEIVED');
         $mail->setFrom($registrationEmail, $registrationName);
         $mail->assignParams($paramArray);
         $mail->addRecipient($user->getEmail(), $user->getFullName());
         $mail->send();
     }
     $registration->setDatePaid($this->getData('datePaid'));
     // Update or insert registration
     if ($registration->getId() != null) {
         $registrationDao->updateRegistration($registration);
     } else {
         $registrationDao->insertRegistration($registration);
     }
     $registrationOptionDao =& DAORegistry::getDAO('RegistrationOptionDAO');
     $registrationOptions =& $registrationOptionDao->getRegistrationOptionsBySchedConfId($schedConf->getId());
     $registrationOptionIds = (array) $this->getData('registrationOptionIds');
     $registrationOptionDao->deleteRegistrationOptionAssocByRegistrationId($this->registrationId);
     while ($registrationOption =& $registrationOptions->next()) {
         $optionId = (int) $registrationOption->getOptionId();
         if (in_array($optionId, $registrationOptionIds)) {
             $registrationOptionDao->insertRegistrationOptionAssoc($this->registrationId, $registrationOption->getOptionId());
         }
         unset($registrationOption);
     }
     if ($this->getData('notifyEmail')) {
         // Send user registration notification email
         $userDao =& DAORegistry::getDAO('UserDAO');
         $registrationTypeDao =& DAORegistry::getDAO('RegistrationTypeDAO');
         $schedConfName = $schedConf->getSchedConfTitle();
         $schedConfId = $schedConf->getId();
         $user =& $userDao->getUser($this->getData('userId'));
         $registrationType =& $registrationTypeDao->getRegistrationType($this->getData('typeId'));
         list($registrationEmail, $registrationName, $registrationContactSignature) = $this->getRegistrationContactInformation($schedConfId);
         $paramArray = array('registrantName' => $user->getFullName(), 'schedConfName' => $schedConfName, 'registrationType' => $registrationType->getSummaryString(), 'username' => $user->getEmail(), 'registrationContactSignature' => $registrationContactSignature);
         import('mail.MailTemplate');
         $mail = new MailTemplate('REGISTRATION_NOTIFY', null, null, null, null, false);
         $mail->setFrom($registrationEmail, $registrationName);
         $mail->assignParams($paramArray);
         $mail->addRecipient($user->getEmail(), $user->getFullName());
         $mail->send();
     }
 }
示例#4
0
 /**
  * Save registration. 
  */
 function execute()
 {
     $registrationDao = DAORegistry::getDAO('RegistrationDAO');
     $schedConf =& Request::getSchedConf();
     if (isset($this->registrationId)) {
         $registration =& $registrationDao->getRegistration($this->registrationId);
     }
     if (!isset($registration)) {
         $registration = new Registration();
         $registration->setDateRegistered(time());
     }
     $registration->setSchedConfId($schedConf->getId());
     $registration->setUserId($this->getData('userId'));
     $registration->setTypeId($this->getData('typeId'));
     $registration->setMembership($this->getData('membership') ? $this->getData('membership') : null);
     $registration->setDomain($this->getData('domain') ? $this->getData('domain') : null);
     $registration->setIPRange($this->getData('ipRange') ? $this->getData('ipRange') : null);
     $registration->setSpecialRequests($this->getData('specialRequests') ? $this->getData('specialRequests') : null);
     // Send an email to the registrant informing them that their payment was received
     if ($this->getData('notifyPaymentEmail')) {
         $userDao = DAORegistry::getDAO('UserDAO');
         $schedConfName = $schedConf->getLocalizedName();
         $schedConfId = $schedConf->getId();
         $user =& $userDao->getById($this->getData('userId'));
         list($registrationEmail, $registrationName, $registrationContactSignature) = $this->getRegistrationContactInformation($schedConfId);
         $paramArray = array('registrantName' => $user->getFullName(), 'schedConfName' => $schedConfName, 'registrationContactSignature' => $registrationContactSignature);
         import('classes.mail.MailTemplate');
         $mail = new MailTemplate('MANUAL_PAYMENT_RECEIVED');
         $mail->setFrom($registrationEmail, $registrationName);
         $mail->assignParams($paramArray);
         $mail->addRecipient($user->getEmail(), $user->getFullName());
         $mail->send();
     }
     $registration->setDatePaid($this->getData('datePaid'));
     // Update or insert registration
     if ($registration->getId() != null) {
         $registrationDao->updateRegistration($registration);
     } else {
         $registrationDao->insertRegistration($registration);
     }
     $registrationOptionDao = DAORegistry::getDAO('RegistrationOptionDAO');
     $registrationOptions =& $registrationOptionDao->getRegistrationOptionsBySchedConfId($schedConf->getId());
     $registrationOptionIds = (array) $this->getData('registrationOptionIds');
     $registrationOptionDao->deleteRegistrationOptionAssocByRegistrationId($this->registrationId);
     $registrationTypeDao = DAORegistry::getDAO('RegistrationTypeDAO');
     $registrationType =& $registrationTypeDao->getRegistrationType($registration->getTypeId());
     // Present the itemized costs in the notification email
     $totalCost = $registrationType->getCost();
     $registrationOptionCosts = $registrationTypeDao->getRegistrationOptionCosts($registration->getTypeId());
     $registrationOptionText = '';
     // Record registration options (and tally up itemized costs for the email)
     while ($registrationOption =& $registrationOptions->next()) {
         $optionId = (int) $registrationOption->getOptionId();
         $optionCost = isset($registrationOptionCosts[$optionId]) ? $registrationOptionCosts[$optionId] : 0;
         if (in_array($optionId, $registrationOptionIds)) {
             $registrationOptionDao->insertRegistrationOptionAssoc($this->registrationId, $registrationOption->getOptionId());
             $registrationOptionText .= $registrationOption->getRegistrationOptionName() . ' - ' . sprintf('%.2f', $optionCost) . ' ' . $registrationType->getCurrencyCodeAlpha() . "\n";
             $totalCost += $optionCost;
         }
         unset($registrationOption);
     }
     if ($this->getData('notifyEmail')) {
         // Send user registration notification email
         $userDao = DAORegistry::getDAO('UserDAO');
         $registrationTypeDao = DAORegistry::getDAO('RegistrationTypeDAO');
         $schedConfName = $schedConf->getLocalizedName();
         $schedConfId = $schedConf->getId();
         $user =& $userDao->getById($this->getData('userId'));
         $registrationType =& $registrationTypeDao->getRegistrationType($this->getData('typeId'));
         list($registrationEmail, $registrationName, $registrationContactSignature) = $this->getRegistrationContactInformation($schedConfId);
         $paramArray = array('registrantName' => $user->getFullName(), 'schedConfName' => $schedConfName, 'registrationType' => $registrationType->getSummaryString(), 'registrationOptions' => $registrationOptionText, 'totalCost' => $totalCost, 'username' => $user->getUsername(), 'registrationContactSignature' => $registrationContactSignature);
         import('classes.mail.MailTemplate');
         $mail = new MailTemplate('REGISTRATION_NOTIFY', null, null, null, null, false);
         $mail->setFrom($registrationEmail, $registrationName);
         $mail->assignParams($paramArray);
         $mail->addRecipient($user->getEmail(), $user->getFullName());
         $mail->send();
     }
 }