/**
  * @return string The widget HTML for this form element.
  */
 public function getWidgetHTML()
 {
     $templateBuilder = tubepress_impl_patterns_sl_ServiceLocator::getTemplateBuilder();
     $eventDispatcher = tubepress_impl_patterns_sl_ServiceLocator::getEventDispatcher();
     $template = $templateBuilder->getNewTemplateInstance($this->getAbsolutePathToTemplate());
     $templateEvent = new tubepress_spi_event_EventBase($template);
     $templateEvent->setArgument('field', $this);
     $templateVariables = $this->getTemplateVariables();
     foreach ($templateVariables as $name => $value) {
         $template->setVariable($name, $value);
     }
     $eventDispatcher->dispatch(tubepress_api_const_event_EventNames::OPTIONS_PAGE_FIELDTEMPLATE, $templateEvent);
     return $template->toString();
 }
 public function magic(tubepress_api_event_EventInterface $event)
 {
     $value = $event->getSubject();
     /** If it's an array, send each element through the filter. */
     if (is_array($value)) {
         foreach ($value as $key => $subValue) {
             $subEvent = new tubepress_spi_event_EventBase($subValue);
             $subEvent->setArgument('optionName', $key);
             $this->magic($subEvent);
             $value[$key] = $subEvent->getSubject();
         }
         $event->setSubject($value);
         return;
     }
     /** We're only interested in strings. */
     if (!is_string($value)) {
         return;
     }
     $toReturn = trim($value);
     $toReturn = htmlspecialchars($toReturn, ENT_NOQUOTES);
     $toReturn = tubepress_impl_util_StringUtils::stripslashes_deep($toReturn);
     $toReturn = $this->_booleanMagic($toReturn);
     $event->setSubject($toReturn);
 }
 private function _feedToVideoArray($feed)
 {
     $toReturn = array();
     $total = $this->countVideosInFeed($feed);
     $isDebugEnabled = $this->_logger->isHandling(ehough_epilog_Logger::DEBUG);
     if ($isDebugEnabled) {
         $this->_logger->debug(sprintf('Now attempting to build %d video(s) from raw feed', $total));
     }
     for ($index = 0; $index < $total; $index++) {
         if (!$this->canWorkWithVideoAtIndex($index)) {
             if ($isDebugEnabled) {
                 $this->_logger->debug(sprintf('Skipping video at index %d', $index));
             }
             continue;
         }
         /*
          * Let's build a video!
          */
         $video = new tubepress_api_video_Video();
         /*
          * Every video needs to have a provider.
          */
         $video->setAttribute(tubepress_api_video_Video::ATTRIBUTE_PROVIDER_NAME, $this->getName());
         /*
          * Let add-ons build the rest of the video.
          */
         $event = new tubepress_spi_event_EventBase($video);
         $event->setArgument('zeroBasedFeedIndex', $index);
         $event->setArgument('rawFeed', $feed);
         /*
          * Let subclasses add to the event.
          */
         $this->onBeforeFiringVideoConstructionEvent($event);
         $video = $this->_fireEventAndGetSubject(tubepress_api_const_event_EventNames::VIDEO_CONSTRUCTION, $event);
         array_push($toReturn, $video);
     }
     $this->onFeedAnalysisComplete($feed);
     if ($isDebugEnabled) {
         $this->_logger->debug(sprintf('Built %d video(s) from raw feed', sizeof($toReturn)));
     }
     return $toReturn;
 }