private function _buildShortcodeEvent(array $normalizedOptions, $innerContent)
 {
     if (!$innerContent) {
         $innerContent = null;
     }
     $name = $this->_context->get(tubepress_api_options_Names::SHORTCODE_KEYWORD);
     $shortcode = new tubepress_shortcode_impl_Shortcode($name, $normalizedOptions, $innerContent);
     return $this->_eventDispatcher->newEventInstance($shortcode);
 }
 private function _errorOut(Exception $e, $code)
 {
     $this->_responseCode->setResponseCode($code);
     $event = $this->_eventDispatcher->newEventInstance($e);
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::HTML_EXCEPTION_CAUGHT, $event);
     $args = array('exception' => $e);
     $response = $this->_templating->renderTemplate('exception/ajax', $args);
     echo $response;
 }
Exemple #3
0
    public function onPostScriptsTemplateRender(tubepress_api_event_EventInterface $event)
    {
        $jsEvent = $this->_eventDispatcher->newEventInstance(array());
        $this->_eventDispatcher->dispatch(tubepress_api_event_Events::HTML_GLOBAL_JS_CONFIG, $jsEvent);
        $args = $jsEvent->getSubject();
        $asJson = json_encode($args);
        $html = $event->getSubject();
        $toPrepend = <<<EOT
<script type="text/javascript">var TubePressJsConfig = {$asJson};</script>
EOT;
        $event->setSubject($toPrepend . $html);
    }
 /**
  * {@inheritdoc}
  */
 public function getParamValue($name)
 {
     /* Are we sure we have it? */
     if (!$this->hasParam($name)) {
         return null;
     }
     $request = $this->_getGETandPOSTarray();
     $rawValue = $request[$name];
     $event = $this->_eventDispatcher->newEventInstance($rawValue, array('optionName' => $name));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::NVP_FROM_EXTERNAL_INPUT, $event);
     $event = $this->_eventDispatcher->newEventInstance($event->getSubject(), array('optionName' => $name));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::NVP_FROM_EXTERNAL_INPUT . ".{$name}", $event);
     return $event->getSubject();
 }
Exemple #5
0
 /**
  * Handles the detection of a custom options.
  *
  * @param array $match The array shortcode matches
  *
  * @return array The name value pair array.
  */
 private function _buildNameValuePairArray($match)
 {
     $toReturn = array();
     $value = null;
     foreach ($match as $m) {
         if (!empty($m[1])) {
             $name = $m[1];
             $value = $m[2];
         } elseif (!empty($m[3])) {
             $name = $m[3];
             $value = $m[4];
         } elseif (!empty($m[5])) {
             $name = $m[5];
             $value = $m[6];
         }
         if (!isset($name) || !isset($value)) {
             continue;
         }
         if ($this->_shouldLog) {
             $this->_logger->debug(sprintf('Name-value pair detected: %s = "%s" (unfiltered)', $name, $this->_stringUtils->redactSecrets($value)));
         }
         $event = $this->_eventDispatcher->newEventInstance($value, array('optionName' => $name));
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::NVP_FROM_EXTERNAL_INPUT, $event);
         $filtered = $event->getSubject();
         $event = $this->_eventDispatcher->newEventInstance($filtered, array('optionName' => $name));
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::NVP_FROM_EXTERNAL_INPUT . ".{$name}", $event);
         $filtered = $event->getSubject();
         if ($this->_shouldLog) {
             $this->_logger->debug(sprintf('Name-value pair detected: %s = "%s" (filtered)', $name, $this->_stringUtils->redactSecrets($filtered)));
         }
         $toReturn[$name] = $filtered;
     }
     return $toReturn;
 }
 /**
  * @param tubepress_api_http_message_RequestInterface $request
  *
  * @return tubepress_api_http_message_ResponseInterface|null
  */
 private function _getQuickResponse(tubepress_api_http_message_RequestInterface $request)
 {
     $event = $this->_eventDispatcher->newEventInstance($request, array('response' => null));
     if ($this->_shouldLog) {
         $this->_logDebug(sprintf('Dispatching <code>%s</code> event for %s', tubepress_api_http_Events::EVENT_HTTP_REQUEST, $this->_stringifyRequest($request)));
     }
     $this->_eventDispatcher->dispatch(tubepress_api_http_Events::EVENT_HTTP_REQUEST, $event);
     if (!$event->hasArgument('response') || $event->getArgument('response') === null) {
         if ($this->_shouldLog) {
             $this->_logDebug(sprintf('No listeners created a response for %s. A network request will be made instead.', $this->_stringifyRequest($request)));
         }
         return null;
     }
     /**
      * @var tubepress_api_http_message_ResponseInterface
      */
     $response = $event->getArgument('response');
     if (!$response instanceof tubepress_api_http_message_ResponseInterface) {
         if ($this->_shouldLog) {
             $this->_logDebug(sprintf('A listener created a non-response for %s. A network request will be made instead.', $this->_stringifyRequest($request)));
         }
         return null;
     }
     if ($this->_shouldLog) {
         $this->_logDebug(sprintf('A listener created a response for %s. No network request will be made.', $this->_stringifyRequest($request)));
     }
     return $response;
 }
 /**
  * {@inheritdoc}
  */
 public function getHtml()
 {
     try {
         $htmlGenerationEventPre = $this->_eventDispatcher->newEventInstance('');
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::HTML_GENERATION, $htmlGenerationEventPre);
         /*
          * @var $selected string
          */
         $html = $htmlGenerationEventPre->getSubject();
         if ($html === null) {
             throw new RuntimeException('Unable to generate HTML.');
         }
         $htmlGenerationEventPost = $this->_eventDispatcher->newEventInstance($html);
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::HTML_GENERATION_POST, $htmlGenerationEventPost);
         /*
          * @var string
          */
         $html = $htmlGenerationEventPost->getSubject();
         return $html;
     } catch (Exception $e) {
         $event = $this->_eventDispatcher->newEventInstance($e);
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::HTML_EXCEPTION_CAUGHT, $event);
         $args = array('exception' => $e);
         $html = $this->_templating->renderTemplate('exception/static', $args);
         return $html;
     }
 }
 private function _fireEventAndReturnSubject($eventName, $raw)
 {
     if ($raw instanceof tubepress_api_event_EventInterface) {
         $event = $raw;
     } else {
         $event = $this->_eventDispatcher->newEventInstance($raw);
     }
     $this->_eventDispatcher->dispatch($eventName, $event);
     return $event->getSubject();
 }
 /**
  * @param                                                   $eventName
  * @param tubepress_api_url_UrlInterface                    $url
  * @param tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider
  *
  * @return tubepress_api_url_UrlInterface
  */
 private function _dispatchUrl($eventName, tubepress_api_url_UrlInterface $url, tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider)
 {
     $event = $this->_eventDispatcher->newEventInstance($url, array('provider' => $provider));
     $this->_eventDispatcher->dispatch($eventName, $event);
     $newUrl = $event->getSubject();
     if (!$newUrl instanceof tubepress_api_url_UrlInterface) {
         throw new RuntimeException('Unable to calculate redirection endpoint.');
     }
     return $newUrl;
 }
Exemple #10
0
 /**
  * {@inheritdoc}
  */
 public function collectSingle($id)
 {
     if ($this->_shouldLog) {
         $this->_logger->debug(sprintf('Fetching item with ID <code>%s</code>', $id));
     }
     $collectionEvent = $this->_eventDispatcher->newEventInstance($id);
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::MEDIA_ITEM_REQUEST, $collectionEvent);
     if (!$collectionEvent->hasArgument('mediaItem')) {
         throw new RuntimeException('No acceptable providers for item');
     }
     return $collectionEvent->getArgument('mediaItem');
 }
Exemple #11
0
 /**
  * @param      $eventName
  * @param      $subject
  * @param null $args
  *
  * @return tubepress_api_event_EventInterface
  */
 private function _dispatch($eventName, $subject, $args = null)
 {
     $event = $this->_eventDispatcher->newEventInstance($subject);
     if ($args) {
         $event->setArguments($args);
     }
     if ($this->_loggingEnabled) {
         $this->_logDebug(sprintf('Start dispatch of event <code>%s</code>', $eventName));
     }
     $this->_eventDispatcher->dispatch($eventName, $event);
     if ($this->_loggingEnabled) {
         $this->_logDebug(sprintf('End dispatch of event <code>%s</code>', $eventName));
     }
     return $event;
 }
    public function onPostGalleryTemplateRender(tubepress_api_event_EventInterface $event)
    {
        $galleryId = $this->_context->get(tubepress_api_options_Names::HTML_GALLERY_ID);
        $jsEvent = $this->_eventDispatcher->newEventInstance(array(), array('mediaPage' => $event->getArgument('mediaPage'), 'pageNumber' => $event->getArgument('pageNumber')));
        $this->_eventDispatcher->dispatch(tubepress_api_event_Events::GALLERY_INIT_JS, $jsEvent);
        $args = $jsEvent->getSubject();
        $this->_deepConvertBooleans($args);
        $asJson = json_encode($args);
        $html = $event->getSubject();
        $toReturn = $html . <<<EOT
<script type="text/javascript">
   var tubePressDomInjector = tubePressDomInjector || [], tubePressGalleryRegistrar = tubePressGalleryRegistrar || [];
       tubePressDomInjector.push(['loadGalleryJs']);
       tubePressGalleryRegistrar.push(['register', '{$galleryId}', {$asJson} ]);
</script>
EOT;
        $event->setSubject($toReturn);
    }
 private function _buildUrl(tubepress_spi_http_oauth2_Oauth2ProviderInterface $provider, $state)
 {
     $authorizationUrl = $provider->getAuthorizationEndpoint();
     if (!$authorizationUrl instanceof tubepress_api_url_UrlInterface) {
         $this->bail('OAuth2 provider returned a non URL.');
     }
     $clientId = $this->getPersistenceHelper()->getClientId($provider);
     $clientSecret = $this->getPersistenceHelper()->getClientSecret($provider);
     $query = $authorizationUrl->getQuery();
     $redirectUrl = $this->getOauth2Environment()->getRedirectionUrl($provider);
     $query->set('response_type', 'code')->set('client_id', $clientId)->set('state', $state)->set('redirect_uri', $redirectUrl->toString());
     $provider->onAuthorizationUrl($authorizationUrl, $clientId, $clientSecret);
     $event = $this->_eventDispatcher->newEventInstance($authorizationUrl, array('provider' => $provider));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::OAUTH2_URL_AUTHORIZATION, $event);
     $authorizationUrl = $event->getSubject();
     if (!$authorizationUrl instanceof tubepress_api_url_UrlInterface) {
         $this->bail('Non authorization URL returned.');
     }
     return $authorizationUrl;
 }
 private function _dispatchEventAndReturnSubject($optionName, $value, $eventName)
 {
     $event = $this->_eventDispatcher->newEventInstance($value, array('optionName' => $optionName));
     $this->_eventDispatcher->dispatch("{$eventName}.{$optionName}", $event);
     return $event->getSubject();
 }
Exemple #15
0
 private function _dispatchForOptionSet($optionName, $optionValue, array $errors, $eventName)
 {
     $event = $this->_eventDispatcher->newEventInstance($errors, array('optionName' => $optionName, 'optionValue' => $optionValue));
     $this->_eventDispatcher->dispatch($eventName, $event);
     return $event;
 }
 public function __fireOptionsPageEvent()
 {
     $this->_eventDispatcher->dispatch(tubepress_wordpress_api_Constants::EVENT_OPTIONS_PAGE_INVOKED);
 }
Exemple #17
0
 private function _dispatchForExternalInput($optionName, $optionValue)
 {
     $event = $this->_eventDispatcher->newEventInstance($optionValue, array('optionName' => $optionName));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::NVP_FROM_EXTERNAL_INPUT, $event);
     return $event->getSubject();
 }
 /**
  * @deprecated
  */
 public function __fireWidgetControlEvent()
 {
     $this->_eventDispatcher->dispatch(tubepress_wordpress_api_Constants::EVENT_WIDGET_PRINT_CONTROLS);
 }
 /**
  * {@inheritdoc}
  */
 public function renderTemplate($originalTemplateName, array $templateVars = array())
 {
     /*
      * First dispatch the template name.
      */
     $nameSelectionEvent = $this->_eventDispatcher->newEventInstance($originalTemplateName, $templateVars);
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::TEMPLATE_SELECT . ".{$originalTemplateName}", $nameSelectionEvent);
     $newTemplateName = $nameSelectionEvent->getSubject();
     /*
      * Fire the pre-render event for the original name.
      */
     $preRenderEvent = $this->_eventDispatcher->newEventInstance($nameSelectionEvent->getArguments());
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::TEMPLATE_PRE_RENDER . ".{$originalTemplateName}", $preRenderEvent);
     if ($originalTemplateName !== $newTemplateName) {
         /*
          * Fire the pre-render event for the new name.
          */
         $preRenderEvent = $this->_eventDispatcher->newEventInstance($preRenderEvent->getSubject());
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::TEMPLATE_PRE_RENDER . ".{$newTemplateName}", $preRenderEvent);
     }
     /*
      * Render!
      */
     $result = $this->_delegate->render($newTemplateName, $preRenderEvent->getSubject());
     if ($originalTemplateName !== $newTemplateName) {
         /*
          * Fire the post-render event.
          */
         $newPostRenderEvent = $this->_eventDispatcher->newEventInstance($result, $preRenderEvent->getSubject());
         $this->_eventDispatcher->dispatch(tubepress_api_event_Events::TEMPLATE_POST_RENDER . ".{$newTemplateName}", $newPostRenderEvent);
         $result = $newPostRenderEvent->getSubject();
     }
     /*
      * Fire the post-render event.
      */
     $originalPostRenderEvent = $this->_eventDispatcher->newEventInstance($result, $preRenderEvent->getSubject());
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::TEMPLATE_POST_RENDER . ".{$originalTemplateName}", $originalPostRenderEvent);
     return $originalPostRenderEvent->getSubject();
 }
 /**
  * {@inheritdoc}
  */
 public function getAcceptableValues($optionName)
 {
     $event = $this->_eventDispatcher->newEventInstance(null, array('optionName' => $optionName));
     $this->_eventDispatcher->dispatch(tubepress_api_event_Events::OPTION_ACCEPTABLE_VALUES . ".{$optionName}", $event);
     return $event->getSubject();
 }
 private function _dispatchAndReturnSubject(tubepress_api_event_EventInterface $event, $eventName)
 {
     $this->_eventDispatcher->dispatch($eventName, $event);
     return $event->getSubject();
 }
Exemple #22
0
 private function _dispatchAndReturnSubject(tubepress_spi_media_HttpFeedHandlerInterface $feedHandler, $eventName, $subject, array $args = array())
 {
     $event = $this->_eventDispatcher->newEventInstance($subject, $args);
     $this->_eventDispatcher->dispatch($eventName . '.' . $feedHandler->getName(), $event);
     return $event->getSubject();
 }