/** * @test */ public function removeSubscriberFromObjectStorageHoldingSubscribers() { $subscriber = new Tx_WoehrlSeminare_Domain_Model_Subscriber(); $localObjectStorage = new Tx_Extbase_Persistence_ObjectStorage(); $localObjectStorage->attach($subscriber); $localObjectStorage->detach($subscriber); $this->fixture->addSubscriber($subscriber); $this->fixture->removeSubscriber($subscriber); $this->assertEquals($localObjectStorage, $this->fixture->getSubscribers()); }
/** * action delete * * @param Tx_WoehrlSeminare_Domain_Model_Event $event * @param string $subscriber * @ignorevalidation $event * @ignorevalidation $editcode * @return void */ public function deleteAction(Tx_WoehrlSeminare_Domain_Model_Event $event = NULL, $editcode) { $myModifiedModel = new Tx_WoehrlSeminare_Domain_Model_Kostenstelle(); $myModifiedModel = $this->kostenstelleRepository->findByEditcode($editcode); if (isset($myModifiedModel[0])) { $myModifiedModel[0]->setHidden(1); $this->kostenstelleRepository->update($myModifiedModel[0]); $persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); $persistenceManager->persistAll(); } //TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($myModifiedModel[0]); // somebody is calling the action without giving an event --> useless if ($event === NULL) { $this->redirect('eventNotFound'); } // delete for which subscriber? $subscriber = $this->subscriberRepository->findAllByEditcode($editcode)->getFirst(); // multiple removal is possible... don't know, how to distinguish $event->removeSubscriber($subscriber); // some helper timestamps for ics-file $helper['now'] = time(); $helper['isdelete'] = 1; $helper['description'] = $this->foldline($this->html2rest($event->getDescription())); // location may be empty... if (is_object($event->getLocation())) { $helper['location'] = $event->getLocation()->getName(); $helper['locationics'] = $this->foldline($event->getLocation()->getName()); } $helper['nameto'] = strtolower(str_replace(array(',', ' '), array('', '-'), $subscriber->getName())); $helper['start'] = $event->getStartDateTime()->getTimestamp(); // endDate may be empty if ($event->getEndDateTime() instanceof \DateTime && $event->getStartDateTime() != $event->getEndDateTime()) { $helper['end'] = $event->getEndDateTime()->getTimestamp(); } if ($event->isAllDay()) { $helper['allDay'] = 1; } // send to contact, if // 1. new subscriber count is below minSubscriber // AND // 2. before subscriber count was above minSubscriber -> event was guaranteed // AND // 3. settings sendEmailOnFreeAgain if ($this->settings['emailToContact']['sendEmailOnFreeAgain'] && $this->subscriberRepository->countAllByEvent($event) >= $event->getMinSubscriber() && $this->subscriberRepository->countAllByEvent($event) - $subscriber->getNumber() < $event->getMinSubscriber()) { $helper['nameto'] = strtolower(str_replace(array(',', ' '), array('', '-'), $event->getContact()->getName())); // email to event owner $this->sendTemplateEmail(array($event->getContact()->getEmail() => $event->getContact()->getName()), array($this->settings['senderEmailAddress'] => Tx_Extbase_Utility_Localization::translate('tx_woehrlseminare.be.eventmanagement', 'woehrl_seminare')), 'Veranstaltung wegen Abmeldung nicht mehr gesichert: ' . $event->getTitle(), 'Minimumreachedagain', array('event' => $event, 'subscribers' => $event->getSubscribers(), 'subscriberCount' => $this->subscriberRepository->countAllByEvent($event) - $subscriber->getNumber(), 'helper' => $helper, 'settings' => $this->settings, 'attachSubscriberAsCsv' => FALSE, 'attachIcsInvitation' => TRUE)); } $this->sendTemplateEmail(array($subscriber->getEmail() => $subscriber->getName()), array($event->getContact()->getEmail() => $event->getContact()->getName()), 'Ihre Abmeldung: ' . $event->getTitle(), 'Unsubscribe', array('event' => $event, 'subscriber' => $subscriber, 'helper' => $helper, 'settings' => $this->settings, 'attachIcsInvitation' => TRUE)); // we changed the event inside the repository and have to // update the repo manually as of TYPO3 6.1 $this->eventRepository->update($event); $this->clearAllEventListCache($event->getGeniusBar()); $this->view->assign('event', $event); $this->view->assign('subscriber', $subscriber); }