/**
  * Fills vacancies created through a unregistration with attendees from the registration queue.
  *
  * @param tslib_pibase $plugin live plugin object
  *
  * @return void
  */
 private function fillVacancies(tslib_pibase $plugin)
 {
     $seminar = $this->registration->getSeminarObject();
     $seminar->calculateStatistics();
     if (!$seminar->hasVacancies()) {
         return;
     }
     $vacancies = $seminar->getVacancies();
     /** @var tx_seminars_BagBuilder_Registration $registrationBagBuilder */
     $registrationBagBuilder = t3lib_div::makeInstance('tx_seminars_BagBuilder_Registration');
     $registrationBagBuilder->limitToEvent($seminar->getUid());
     $registrationBagBuilder->limitToOnQueue();
     $registrationBagBuilder->limitToSeatsAtMost($vacancies);
     $bag = $registrationBagBuilder->build();
     /** @var tx_seminars_registration $registration */
     foreach ($bag as $registration) {
         if ($vacancies <= 0) {
             break;
         }
         if ($registration->getSeats() <= $vacancies) {
             tx_oelib_db::update('tx_seminars_attendances', 'uid = ' . $registration->getUid(), array('registration_queue' => 0));
             $vacancies -= $registration->getSeats();
             $user = $registration->getFrontEndUser();
             foreach ($this->getHooks() as $hook) {
                 if (method_exists($hook, 'seminarRegistrationMovedFromQueue')) {
                     $hook->seminarRegistrationMovedFromQueue($registration, $user);
                 }
             }
             $this->notifyAttendee($registration, $plugin, 'confirmationOnQueueUpdate');
             $this->notifyOrganizers($registration, 'notificationOnQueueUpdate');
             if ($this->getConfValueBoolean('sendAdditionalNotificationEmails')) {
                 $this->sendAdditionalNotification($registration);
             }
         }
     }
 }
Пример #2
0
 /**
  * Commits the changes of an record to the database.
  *
  * @param array $updateArray
  *        an associative array with the keys being the field names and the value being the field values, may be empty
  *
  * @return void
  */
 public function saveToDatabase(array $updateArray)
 {
     if (empty($updateArray)) {
         return;
     }
     tx_oelib_db::update($this->tableName, 'uid = ' . $this->getUid(), $updateArray);
 }