/** * action list * * @return void */ public function listAction() { if (!$this->div->isLoggedUserInGroup($this->settings['participantGroupId'])) { $this->addFlashMessage($this->div->translate('message.noParticipant', $this->extensionName), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); $this->redirect('list'); } $oldestEventYear = $this->div->getOldestEventYear(); $currentYear = date("Y"); $index = 0; $statistics = array(); for ($i = $currentYear; $i >= $oldestEventYear; $i--) { $year = $i; $statistics[$index]['year'] = $year; $statistics[$index]['activeEvents'] = $this->eventRepository->findEventsOfYearByActive($year, true)->count(); $statistics[$index]['inactiveEvents'] = $this->eventRepository->findEventsOfYearByActive($year, false)->count(); $averageAccepts = $this->eventRepository->calculateAverageAcceptsPerEventByYear($year, true); $statistics[$index]['averageAccepts'] = $averageAccepts["0"]["average"]; $statistics[$index]['minimumAccepts'] = $averageAccepts["0"]["minimum"]; $statistics[$index]['maximumAccepts'] = $averageAccepts["0"]["maximum"]; $averageCancels = $this->eventRepository->calculateAverageAcceptsPerEventByYear($year, false); $statistics[$index]['averageCancels'] = $averageCancels["0"]["average"]; $statistics[$index]['minimumCancels'] = $averageCancels["0"]["minimum"]; $statistics[$index]['maximumCancels'] = $averageCancels["0"]["maximum"]; $tops = $this->eventRepository->topParticipantsByYear($year); for ($j = 0; $j <= count($tops) - 1; $j++) { $statistics[$index]['tops'][$j]['participantName'] = $tops[$j]["participantName"]; $statistics[$index]['tops'][$j]['eventsAccepted'] = $tops[$j]["eventsAccepted"]; } $index++; } $this->view->assign('statistics', $statistics); }
/** * action delete * * @param \PoiCom\PcEventScheduler\Domain\Model\Holiday $holiday * @return void */ public function deleteAction(\PoiCom\PcEventScheduler\Domain\Model\Holiday $holiday) { if (!$this->div->isLoggedUserInGroup($this->settings['eventAdminGroupId'])) { $this->addFlashMessage($this->div->translate('message.noAdmin', $this->extensionName), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); $this->redirect('list'); } $this->addFlashMessage($this->div->translate('message.holidayDeleted', $this->extensionName), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::OK); $this->holidayRepository->remove($holiday); $this->redirect('list'); }
/** * Notifies participants for the next event * * @return void */ public function notifyCommand() { $this->settings = $this->configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_SETTINGS); $eventStartTime = $this->settings['eventStartTime']; $participantGroupId = $this->settings['participantGroupId']; $eventPageUid = $this->settings['eventPageUid']; $offset = 0; $eventStartDate = $this->div->nextEventDate($offset); $events = $this->eventRepository->findByStart($eventStartDate->format("Y-m-d H:i:s")); if ($events->count() == 0) { $this->div->createEvent($eventStartDate); $events = $this->eventRepository->findByStart($eventStartDate->format("Y-m-d H:i:s")); } if ($events->getFirst()->getActive()) { $this->initFrontend(); $cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer'); $link = $cObj->typolink_URL(array('parameter' => "{$eventPageUid}", 'forceAbsoluteUrl' => 1)); $acceptUrl = $link . "?&tx_pceventscheduler_pceventscheduler%5Baction%5D=accept"; $cancelUrl = $link . "?&tx_pceventscheduler_pceventscheduler%5Baction%5D=cancel"; $participantsUnknown = $this->participantRepository->findParticipantsUnknown($events->getFirst()->getUid(), $participantGroupId); if (isset($participantsUnknown)) { foreach ($participantsUnknown as $participantUnknown) { $receiverEmail = $participantUnknown['email']; $receiverName = $participantUnknown['name']; $from = \TYPO3\CMS\Core\Utility\MailUtility::getSystemFrom(); $mail = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Mail\\MailMessage'); $mail->setFrom($from); $mail->setSubject($this->settings['notifyMailSubject']); $mail->setTo($receiverEmail); $mail->setBody(str_replace(array('###name###', '###eventdate###', '###eventtime###', '###eventlocation###', '###acceptlink###', '###cancellink###'), array($receiverName, $events->getFirst()->getStart()->format("d.m.Y"), $eventStartTime, $events->getFirst()->getLocation(), $acceptUrl, $cancelUrl), $this->settings['notifyMailBody']), 'text/html'); $mail->send(); } } } return true; }
/** * action location * * @return void */ public function locationAction() { if (!$this->div->isLoggedUserInGroup($this->settings['eventAdminGroupId'])) { $this->addFlashMessage($this->div->translate('message.noAdmin', $this->extensionName), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); $this->redirect('list'); } $location = $this->request->getArgument('location'); if ($this->request->hasArgument('offset')) { $offset = $this->request->getArgument('offset'); if ($offset < 0) { $this->addFlashMessage($this->div->translate('message.pastEventError', $this->extensionName), '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); $this->redirect('list', Null, Null, array('offset' => $offset)); } } if (!$this->request->hasArgument('offset')) { $offset = 0; } $eventStartDate = $this->div->nextEventDate($offset); $events = $this->eventRepository->findByStart($eventStartDate->format("Y-m-d H:i:s")); $events->getFirst()->setLocation($location); $this->eventRepository->update($events->getFirst()); $this->addFlashMessage($this->div->translate('message.setLocation', $this->extensionName) . ": {$location}", '', \TYPO3\CMS\Core\Messaging\AbstractMessage::OK); $this->redirect('list', Null, Null, array('offset' => $offset)); }