/** * 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); } } } }
/** * 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); }