예제 #1
0
 public function testTriggerSetsTarget()
 {
     $event = new Event();
     $this->assertNull($event->getTarget());
     Reflection::invoke($this->sut, 'trigger', array($event));
     $this->assertSame($this->sut, $event->getTarget());
 }
예제 #2
0
 public function onCancelSingle(Event $event)
 {
     $booking = $event->getTarget();
     $reservations = $this->reservationManager->getBy(['bid' => $booking->need('bid')], 'date ASC', 1);
     $reservation = current($reservations);
     $square = $this->squareManager->get($booking->need('sid'));
     $user = $this->userManager->get($booking->need('uid'));
     $dateRangerHelper = $this->dateRangeHelper;
     $reservationTimeStart = explode(':', $reservation->need('time_start'));
     $reservationTimeEnd = explode(':', $reservation->need('time_end'));
     $reservationStart = new \DateTime($reservation->need('date'));
     $reservationStart->setTime($reservationTimeStart[0], $reservationTimeStart[1]);
     $reservationEnd = new \DateTime($reservation->need('date'));
     $reservationEnd->setTime($reservationTimeEnd[0], $reservationTimeEnd[1]);
     $subject = sprintf($this->t('Your %s-booking has been cancelled'), $this->optionManager->get('subject.square.type'));
     $message = sprintf($this->t('we have just cancelled %s %s, %s for you.'), $this->optionManager->get('subject.square.type'), $square->need('name'), $dateRangerHelper($reservationStart, $reservationEnd));
     if ($user->getMeta('notification.bookings', 'true') == 'true') {
         $this->userMailService->send($user, $subject, $message);
     }
     if ($this->optionManager->get('client.contact.email.user-notifications')) {
         $backendSubject = sprintf($this->t('%s\'s %s-booking has been cancelled'), $user->need('alias'), $this->optionManager->get('subject.square.type'));
         $addendum = sprintf($this->t('Originally sent to %s (%s).'), $user->need('alias'), $user->need('email'));
         $this->backendMailService->send($backendSubject, $message, array(), $addendum);
     }
 }
예제 #3
0
 public function checkUserExists(Event $e, $username)
 {
     $sm = $e->getTarget()->getServiceManager();
     $mapper = $sm->get('apiuser_user_mapper');
     $userObject = $mapper->findByUsername($username);
     return $userObject ? true : false;
 }
예제 #4
0
 /**
  * Determines if we're dealing with the required Resource
  * before dispatching to actions
  *
  * @param Event $e
  * @return mixed|void
  */
 public function dispatch(Event $e)
 {
     switch ($e->getName()) {
         case 'create.post':
         case 'update.post':
         case 'patch.post':
             /**
              * Redirect client to newly created resource
              */
             $controller = $e->getTarget();
             if ($controller instanceof ResourceController) {
                 $resource = $controller->getResource();
                 if ($resource instanceof Resource) {
                     $model = $e->getParam('resource');
                     if ($model instanceof ResourceJsonModel) {
                         $object = $model->getPayload();
                         if ($object instanceof BackendResourceInterface) {
                             $e->stopPropagation(true);
                             $response = $controller->redirect()->toRoute('api/default', array('resource' => $resource->getIdentifier(), 'id' => $object->getId()));
                             return $response;
                             //@TODO remove until fixed CORS redirect
                         }
                     }
                 }
             }
             break;
     }
 }
 public function onDispatch(Event $event)
 {
     $controller = $event->getTarget();
     if (!$controller instanceof AbstractController) {
         return;
     }
     $entity = $controller->getEntity();
     if (!$entity) {
         return;
     }
     $terms = $entity->getTaxonomyTerms();
     if ($terms->isEmpty()) {
         foreach ($entity->getParents('link') as $parent) {
             $terms = $parent->getTaxonomyTerms();
             if (!$terms->isEmpty()) {
                 break;
             }
         }
     }
     $term = $this->strategy->findBranch($terms);
     if ($term) {
         /* @var $navigationFactory DefaultNavigationFactory */
         $navigationFactory = $controller->getServiceLocator()->get('Navigation\\Factory\\DefaultNavigationFactory');
         $params = ['term' => $term->getId(), 'controller' => 'Taxonomy\\Controller\\GetController', 'action' => 'index'];
         $routeMatch = new RouteMatch($params);
         $routeMatch->setMatchedRouteName('taxonomy/term/get');
         $navigationFactory->setRouteMatch($routeMatch);
     }
 }
예제 #6
0
 /**
  * Add Client Id and Client Secret to Request Parameters
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $this->request = $e->getTarget();
     $headers = $this->request->getHeaders();
     $params = array('Authorization' => 'OAuth ' . $this->getOauthString());
     $headers->addHeaders($params);
 }
 public function onLoadModules(Event $e)
 {
     $moduleManager = $e->getTarget();
     $modules = $moduleManager->getModules();
     // Hier kommt die Superglobal $_ENV rein
     $moduleManager->setModules($modules);
 }
 /**
  * @param Event $e
  * @throws \Instance\Exception\RuntimeException
  */
 public function onBypass(Event $e)
 {
     $target = $e->getTarget();
     if (!$target instanceof InstanceProviderInterface) {
         throw new Exception\RuntimeException(sprintf('Expected instance of InstanceProviderInterface but got %s.', is_object($target) ? get_class($target) : gettype($target)));
     }
     $this->instanceManager->switchInstance($target->getInstance());
 }
예제 #9
0
 public function disableValidatorAnnotationForDoctrine(Event $e)
 {
     if (class_exists('Doctrine\\Common\\Annotations\\AnnotationReader')) {
         $moduleManager = $e->getTarget();
         $config = $moduleManager->getModule('AnnotationValidator')->getConfig();
         AnnotationReader::addGlobalIgnoredName($config['validator_annotation']);
     }
 }
 public function onCreate(Event $e)
 {
     /* var $entity \Entity\Entity\EntityInterface */
     $entity = $e->getParam('entity');
     $result = new UrlResult();
     $result->setResult($e->getTarget()->url()->fromRoute('entity/repository/add-revision', ['entity' => $entity->getId()]));
     return $result;
 }
 /**
  * Sets the query parameters to the paginator
  * 
  * @param Event $event Event
  * 
  * @return void
  */
 public function setData(Event $event)
 {
     $paginator = $event->getParam('paginator');
     if ($paginator instanceof Paginator) {
         $controller = $event->getTarget();
         $paginator->setData($controller->params()->fromQuery());
     }
 }
 /**
  * @param Event $e
  */
 public function addPages(Event $e)
 {
     $this->event = $e;
     $pages = $this->getPages();
     // find parent page
     $parentPage = $this->getNavigation()->findOneByRoute($this->getRoute());
     // add pages to parent
     $parentPage->addPages($e->getTarget()->preparePages($pages));
 }
예제 #13
0
파일: Luz.php 프로젝트: adrwtr/ZendExemplos
 public function ligar(Event $objEvent)
 {
     $this->sn_luz_ligada = true;
     echo "A luz está ligada";
     echo "<BR>";
     echo "O alarme foi disparado por: ";
     echo $objEvent->getTarget()->getNome();
     return $this;
 }
예제 #14
0
 /**
  * onBootstrap
  * @param MvcEvent $e
  */
 public function onBootstrap(Event $e)
 {
     $application = $e->getTarget();
     $serviceManager = $application->getServiceManager();
     $eventManager = $application->getEventManager();
     // set static adapter for all module table gateways
     $dbAdapter = $serviceManager->get('Zend\\Db\\Adapter\\Adapter');
     Feature\GlobalAdapterFeature::setStaticAdapter($dbAdapter);
 }
 /**
  * Gets executed on page create
  *
  * @param Event $e
  * @return void
  */
 public function onUpdate(Event $e)
 {
     /* @var $repository PageRepositoryInterface */
     $slug = $e->getParam('slug');
     $repository = $e->getParam('repository');
     $url = $e->getTarget()->url()->fromRoute('page/view', ['page' => $repository->getId()], null, null, false);
     $alias = $this->getAliasManager()->createAlias($url, $slug, $slug . '-' . $repository->getId(), $repository, $repository->getInstance());
     $this->getAliasManager()->flush($alias);
 }
예제 #16
0
 /**
  * Validate and Filter content passed to the Resource
  *
  * By default this will prevent XSS and malicious
  * code being passed to the backend.
  *
  * Further event propagation is stopped to prevent
  * additional manipulation to reduce further risk.
  *
  * @param Event $event
  * @return array|null
  */
 public function validateContent(Event $event)
 {
     $controller = $event->getTarget();
     if ($controller instanceof ResourceController) {
         $request = $event->getTarget()->getRequest();
         if (!$request instanceof HttpRequest) {
             return;
         }
         if (in_array($request->getMethod(), $this->methodsWithoutBodies)) {
             return;
         }
         $resource = $controller->getResource();
         if ($resource instanceof Resource) {
             /**
              * Check Request method is allowed by Resource
              * Usually this would be picked up by Access Control,
              * however we should always check
              */
             if (!in_array($request->getMethod(), $resource->getResourceHttpMethods())) {
                 return;
             }
             $inputFilter = $resource->getInputFilter();
             if (!$inputFilter instanceof InputFilter) {
                 return;
             }
             try {
                 $data = $event->getParam('data', array());
                 if ($request->isPatch()) {
                     // Only filter values that have been provided
                     $inputFilter->setValidationGroup(array_keys($data));
                 }
                 $inputFilter->setData($data);
                 if ($inputFilter->isValid()) {
                     $filteredData = $inputFilter->getValues();
                     $event->stopPropagation(true);
                     return array_merge($data, $filteredData);
                 }
                 return new ProblemResponse(new Problem(422, 'Failed Validation', null, null, ['validation_messages' => $inputFilter->getMessages()]));
             } catch (\Exception $ex) {
                 return new ProblemResponse(new Problem(400, 'Invalid data specified in request'));
             }
         }
     }
 }
예제 #17
0
 public function addPages(Event $e)
 {
     /* @var \Zend\Navigation\Navigation $navigation */
     $navigation = $e->getParam('navigation');
     /* @var \UthandoNews\Service\News $newsService */
     $newsService = $e->getTarget()->getService('UthandoNews');
     /* @var \UthandoNavigation\Service\Menu $menuService */
     $menuService = $e->getTarget()->getService('UthandoNavigationMenu');
     $newsItems = $newsService->search(['sort' => '-dateCreated']);
     $pages = [];
     /* @var \UthandoNews\Model\News $newsItem */
     foreach ($newsItems as $newsItem) {
         $pages[$newsItem->getArticle()->getSlug()] = ['label' => $newsItem->getArticle()->getTitle(), 'route' => 'news', 'params' => ['news-item' => $newsItem->getArticle()->getSlug()]];
     }
     // find shop page
     $newsPage = $navigation->findOneByRoute('news-list');
     // add categories to shop page
     $newsPage->addPages($menuService->preparePages($pages));
 }
예제 #18
0
 /**
  * Add Client Id and Client Secret to Request Parameters
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $validator = new NotEmpty();
     if (!array_key_exists('client_id', $this->options) || !$validator->isValid($this->options['client_id'])) {
         throw new Exception\InvalidArgumentException('You need to set client_id!');
     }
     $request = $e->getTarget();
     $query = $request->getQuery();
     $query->set('client_id', $this->options['client_id']);
 }
예제 #19
0
 public function tocar(Event $objEvent)
 {
     echo "<HR>";
     echo "A buzina está tocando";
     echo "<BR>";
     echo "O alarme foi disparado por: ";
     echo $objEvent->getTarget()->getNome();
     $objEvent->stopPropagation(true);
     return $this;
 }
예제 #20
0
 /**
  * Add access token to Request Parameters
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $validator = new NotEmpty();
     if (!isset($this->options['tokenOrLogin']) || !$validator->isValid($this->options['tokenOrLogin'])) {
         throw new Exception\InvalidArgumentException('You need to set OAuth token!');
     }
     $request = $e->getTarget();
     $query = $request->getQuery();
     $query->set('access_token', $this->options['tokenOrLogin']);
 }
예제 #21
0
 /**
  * Add Client Id and Client Secret to Request Parameters
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $validator = new NotEmpty();
     if (!isset($this->options['tokenOrLogin'], $this->options['password']) || !$validator->isValid($this->options['tokenOrLogin']) || !$validator->isValid($this->options['password'])) {
         throw new Exception\InvalidArgumentException('You need to set client_id and client_secret!');
     }
     $request = $e->getTarget();
     $query = $request->getQuery();
     $query->set('client_id', $this->options['tokenOrLogin']);
     $query->set('client_secret', $this->options['password']);
 }
예제 #22
0
 /**
  *  Add Basic Authnentication to Header
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $validator = new NotEmpty();
     if (!isset($this->options['tokenOrLogin'], $this->options['password']) || !$validator->isValid($this->options['tokenOrLogin']) || !$validator->isValid($this->options['password'])) {
         throw new Exception\InvalidArgumentException('You need to set username with password!');
     }
     $request = $e->getTarget();
     $headers = $request->getHeaders();
     $params = array('Authorization' => 'Basic ' . base64_encode($this->options['tokenOrLogin'] . ':' . $this->options['password']));
     $headers->addHeaders($params);
 }
예제 #23
0
 /**
  * Add Authorization Token to Header
  *
  * @throws Exception\InvalidArgumentException
  */
 public function preSend(Event $e)
 {
     $validator = new NotEmpty();
     if (!isset($this->options['tokenOrLogin']) || !$validator->isValid($this->options['tokenOrLogin'])) {
         throw new Exception\InvalidArgumentException('You need to set OAuth token!');
     }
     $request = $e->getTarget();
     $headers = $request->getHeaders();
     $params = array('Authorization' => 'token ' . $this->options['tokenOrLogin']);
     $headers->addHeaders($params);
 }
예제 #24
0
 public function setVocabTypeToDefaultState(Event $event)
 {
     $vocab = $event->getTarget();
     $vocabName = 'customvocab:' . $vocab->getId();
     $conn = $this->getServiceLocator()->get('Omeka\\Connection');
     $stmt = $conn->prepare('UPDATE value SET type = "literal" WHERE type = ?');
     $stmt->bindValue(1, $vocabName);
     $stmt->execute();
     $stmt = $conn->prepare('UPDATE resource_template_property SET data_type = NULL WHERE data_type = ?');
     $stmt->bindValue(1, $vocabName);
     $stmt->execute();
 }
예제 #25
0
 public function onRegister(Event $e)
 {
     $sm = $e->getTarget()->getServiceManager();
     $em = $sm->get('doctrine.entitymanager.orm_default');
     $user = $e->getParam('user');
     $config = $sm->get('config');
     $criteria = array('roleId' => $config['zfcuser']['new_user_default_role']);
     $defaultUserRole = 'member';
     if ($defaultUserRole !== null) {
         $user->setRole($defaultUserRole);
     }
 }
예제 #26
0
 /**
  * @param Event $e
  * @throws ServiceException
  */
 public function queueMail(Event $e)
 {
     /* @var ServiceManager $sl */
     $sl = $e->getTarget()->getServiceLocator();
     $data = $e->getParams();
     /* @var $mailQueue MailQueue */
     $mailQueue = $sl->get('UthandoMailQueue');
     $hydrator = $mailQueue->getHydrator();
     $model = $mailQueue->getModel();
     $model = $hydrator->hydrate($data, $model);
     $mailQueue->save($model);
 }
예제 #27
0
 public function onRegister(Event $e)
 {
     $sm = $e->getTarget()->getServiceManager();
     $em = $sm->get('doctrine.entitymanager.orm_default');
     $user = $e->getParam('user');
     $config = $sm->get('config');
     $criteria = array('roleId' => $config['zfcuser']['new_user_default_role']);
     $defaultUserRole = $em->getRepository('EduUser\\Entity\\Role')->findOneBy($criteria);
     if ($defaultUserRole !== null) {
         $user->addRole($defaultUserRole);
     }
 }
 /**
  * Determines if we're dealing with the required Resource
  * before dispatching to actions
  *
  * @param Event $e
  * @return boolean
  */
 public function dispatch(Event $e)
 {
     $controller = $e->getTarget();
     if (!$controller instanceof ResourceController) {
         return false;
     }
     $resource = $controller->getResource();
     $resourceIdentifier = $resource->getIdentifier();
     if ($resourceIdentifier !== $this->resourceIdentifier) {
         return false;
     }
     return true;
 }
예제 #29
0
파일: Module.php 프로젝트: rikaix/ZeTwig
 public function registerTwigStrategy(Event $event)
 {
     $app = $event->getTarget();
     $locator = $app->getLocator();
     $view = $locator->get('Zend\\View\\View');
     $twigStrategy = $locator->get('ZeTwig\\View\\Strategy\\TwigRendererStrategy');
     $renderer = $twigStrategy->getRenderer();
     $basePath = $app->getRequest()->getBasePath();
     $renderer->plugin('basePath')->setBasePath($basePath);
     $renderer->plugin('url')->setRouter($event->getRouter());
     $renderer->plugin('headTitle')->setSeparator(' - ')->setAutoEscape(false);
     // Attach strategy, which is a listener aggregate, at high priority
     $view->events()->attach($twigStrategy, 100);
 }
예제 #30
0
 public function postSend(Event $e)
 {
     $response = $e->getTarget();
     $statusCode = $response->getStatusCode();
     $cache = $this->getCache();
     if ($statusCode == 304) {
         $response = $cache->getItem($this->cacheKey);
     } else {
         $cache->setItem($this->cacheKey, $response);
         $headers = $response->getHeaders();
         $etag = $headers->get('Etag')->getFieldValue();
         $tags = array('etag' => $etag);
         $cache->setTags($this->cacheKey, $tags);
     }
     $e->stopPropagation(true);
     return $response;
 }