/** * check if any events of categories below are present and free for booking * * @param Tx_WoehrlSeminare_Domain_Model_Category $category * @return boolean * @api */ public function render(Tx_WoehrlSeminare_Domain_Model_Category $category) { $events = $this->eventRepository->findAllGbByCategory($category); $categories = $this->categoryRepository->findCurrentBranch($category); $showLink = FALSE; if (count($categories) == 0 || count($events) == 0) { foreach ($events as $event) { $showLink = TRUE; if ($this->subscriberRepository->countAllByEvent($event) >= $event->getMaxSubscriber()) { $showLink = FALSE; } // event is cancelled if ($event->getCancelled()) { $showLink = FALSE; } // deadline reached.... if (is_object($event->getSubEndDateTime())) { if ($event->getSubEndDateTime()->getTimestamp() < time()) { $showLink = FALSE; } } // if any event exists and is valid, break here and return TRUE if ($showLink) { break; } } } //~ else //~ return TRUE; return $showLink; }
/** * Calculate the free places for a given event. * * @param Tx_WoehrlSeminare_Domain_Model_Event $event * @return int * @author Alexander Fuchs <*****@*****.**> * @api */ public function render(Tx_WoehrlSeminare_Domain_Model_Event $event = NULL) { if ($event != NULL) { $free = $event->getMaxSubscriber() - $this->subscriberRepository->countAllByEvent($event); } else { $free = 0; } return $free > 0 ? $free : 0; }
/** * Return the number of subscribers for a given event * * @param Tx_WoehrlSeminare_Domain_Model_Event $event * @return int * @author Alexander Fuchs <*****@*****.**> * @api */ public function render(Tx_WoehrlSeminare_Domain_Model_Event $event = NULL) { if ($event != NULL) { $booked = $this->subscriberRepository->countAllByEvent($event); } else { $booked = 0; } return $booked; }
/** * Render the supplied DateTime object as a formatted date. * * @param Tx_WoehrlSeminare_Domain_Model_Event $event * @return boolean * @author Alexander Fuchs <*****@*****.**> * @api */ public function render($event) { $showLink = TRUE; // limit reached already --> overbooked if ($this->subscriberRepository->countAllByEvent($event) >= $event->getMaxSubscriber()) { $showLink = FALSE; } // event is cancelled if ($event->getCancelled()) { $showLink = FALSE; } // deadline reached.... if (is_object($event->getSubEndDateTime())) { if ($event->getSubEndDateTime()->getTimestamp() < time()) { $showLink = FALSE; } } return $showLink; }
/** * Validation of given Params * * @param $event * @return bool */ public function isValid($event) { // limit reached already --> overbooked if ($this->subscriberRepository->countAllByEvent($event) + 1 > $event->getMaxSubscriber()) { $this->isValid = FALSE; $this->addError('val_event_overbooked', 1200); } // event is cancelled if ($event->getCancelled()) { $this->isValid = FALSE; $this->addError('val_event_cancelled', 1300); } // deadline reached.... if (is_object($event->getSubEndDateTime())) { if ($event->getSubEndDateTime()->getTimestamp() < time()) { $this->isValid = FALSE; $this->addError('val_event_reacheddeadline', 1400); } } return $this->isValid; }
/** * Validation of given Params * * @param Tx_WoehrlSeminare_Domain_Model_Subscriber $newSubscriber * @return bool */ public function isValid($newSubscriber) { if (strlen($newSubscriber->getName()) < 3) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_name', 1000); $this->result->forProperty('name')->addError($error); // usually $this->addError is enough but this doesn't set the CSS errorClass in the form-viewhelper :-( // $this->addError('val_name', 1000); $this->isValid = FALSE; } if (!t3lib_div::validEmail($newSubscriber->getEmail())) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_email', 1100); $this->result->forProperty('email')->addError($error); // $this->addError('val_email', 1100); $this->isValid = FALSE; } if (strlen($newSubscriber->getCustomerid()) > 0 && filter_var($newSubscriber->getCustomerid(), FILTER_VALIDATE_INT) === FALSE) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_customerid', 1110); $this->result->forProperty('customerid')->addError($error); // $this->addError('val_customerid', 1110); $this->isValid = FALSE; } if (strlen($newSubscriber->getNumber()) == 0 || filter_var($newSubscriber->getNumber(), FILTER_VALIDATE_INT) === FALSE || $newSubscriber->getNumber() < 1) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_number', 1120); $this->result->forProperty('number')->addError($error); // $this->addError('val_number', 1120); $this->isValid = FALSE; } else { $event = $newSubscriber->getEvent(); // limit reached already --> overbooked if ($this->subscriberRepository->countAllByEvent($event) + $newSubscriber->getNumber() > $event->getMaxSubscriber()) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_number', 1130); $this->result->forProperty('number')->addError($error); // $this->addError('val_number', 1130); $this->isValid = FALSE; } } if ($newSubscriber->getEditcode() != $this->getSessionData('editcode')) { $error = $this->objectManager->get('Tx_Extbase_Error_Error', 'val_editcode', 1140); $this->result->forProperty('editcode')->addError($error); // $this->addError('val_editcode', 1140); $this->isValid = FALSE; } return $this->isValid; }
/** * checkForSubscriptionEndCommand * * @param int stroagePid * @param string senderEmailAddress * @return void */ public function checkForSubscriptionEndCommand($storagePid, $senderEmailAddress = '') { // do some init work... $this->initializeAction(); // abort if no storagePid is found if (!t3lib_utility_Math::canBeInterpretedAsInteger($storagePid)) { echo 'NO storagePid given. Please enter the storagePid in the scheduler task.'; exit(1); } // abort if no senderEmailAddress is found if (empty($senderEmailAddress)) { echo 'NO senderEmailAddress given. Please enter the senderEmailAddress in the scheduler task.'; exit(1); } // set storagePid to point extbase to the right repositories $configurationArray = array('persistence' => array('storagePid' => $storagePid)); $this->configurationManager->setConfiguration($configurationArray); // start the work... // 1. get events in future which reached the subscription deadline $allevents = $this->eventRepository->findAllSubscriptionEnded(); foreach ($allevents as $event) { // startDateTime may never be empty $helper['start'] = $event->getStartDateTime()->getTimestamp(); // endDateTime may be empty if ($event->getEndDateTime() instanceof DateTime && $event->getStartDateTime() != $event->getEndDateTime()) { $helper['end'] = $event->getEndDateTime()->getTimestamp(); } else { $helper['end'] = $helper['start']; } if ($event->isAllDay()) { $helper['allDay'] = 1; } $helper['now'] = time(); $helper['nameto'] = strtolower(str_replace(array(',', ' '), array('', '-'), $event->getContact()->getName())); $helper['description'] = $this->foldline($event->getDescription()); // location may be empty... if (is_object($event->getLocation())) { $helper['location'] = $event->getLocation()->getName(); $helper['locationics'] = $this->foldline($event->getLocation()->getName()); } // check if we have to cancel the event if ($this->subscriberRepository->countAllByEvent($event) < $event->getMinSubscriber()) { // --> ok, we have to cancel the event because not enough subscriber were found // email to all subscribers foreach ($event->getSubscribers() as $subscriber) { $cronLog .= 'Absage an Teilnehmer: ' . $event->getTitle() . ': ' . strftime('%x %H:%M', $event->getStartDateTime()->getTimestamp()) . ' --> ' . $subscriber->getEmail() . "\n"; $out = $this->sendTemplateEmail(array($subscriber->getEmail() => $subscriber->getName()), array($event->getContact()->getEmail() => $event->getContact()->getName()), 'Absage der Veranstaltung: ' . $event->getTitle(), 'CancellEvent', array('event' => $event, 'subscribers' => '', 'helper' => $helper, 'attachIcs' => TRUE)); } $cronLog .= 'Absage an Veranstalter: ' . $event->getTitle() . ': ' . strftime('%x %H:%M', $event->getStartDateTime()->getTimestamp()) . ' --> ' . $event->getContact()->getEmail() . "\n"; // email to event owner $out = $this->sendTemplateEmail(array($event->getContact()->getEmail() => $event->getContact()->getName()), array($senderEmailAddress => 'WÖHRL Akademie - noreply'), 'Absage der Veranstaltung: ' . $event->getTitle(), 'CancellEvent', array('event' => $event, 'subscribers' => $event->getSubscribers(), 'helper' => $helper, 'attachCsv' => TRUE, 'attachIcs' => TRUE)); if ($out >= 1) { $event->setSubEndDateInfoSent(TRUE); $event->setCancelled(TRUE); } } else { // event takes place but subscription is not possible anymore... // email to event owner $cronLog .= 'Anmeldefrist abgelaufen an Veranstalter: ' . $event->getTitle() . ': ' . strftime('%x %H:%M', $event->getStartDateTime()->getTimestamp()) . ' --> ' . $event->getContact()->getEmail() . "\n"; $out = $this->sendTemplateEmail(array($event->getContact()->getEmail() => $event->getContact()->getName()), array($senderEmailAddress => 'WÖHRL Akademie - noreply'), 'Veranstaltung Anmeldefrist abgelaufen: ' . $event->getTitle(), 'DeadlineReached', array('event' => $event, 'subscribers' => $event->getSubscribers(), 'helper' => $helper, 'attachCsv' => TRUE, 'attachIcs' => TRUE)); if ($out == 1) { $event->setSubEndDateInfoSent(TRUE); } } } echo $cronLog; return; }