public function gen_afterPageBuild(X_Page_ItemList_PItem $list, Zend_Controller_Action $controller)
 {
     if (!$this->isDefaultRenderer()) {
         return;
     }
     X_Debug::i("Plugin triggered");
     $request = $controller->getRequest();
     $responseType = 'u:BrowseResponse';
     $num = count($list->getItems());
     if ($this->request['browseflag'] == 'BrowseMetadata') {
         $parentID = $this->_getParent($controller->getRequest());
         $item = new X_Page_Item_PItem('fake-item', "Container");
         $item->setLink(array_merge(array('controller' => $controller->getRequest()->getControllerName(), 'action' => $controller->getRequest()->getActionName()), $controller->getRequest()->getParams()));
         $item->setDescription("Fake description");
         $didl = X_Upnp::createMetaDIDL($item, $parentID, $num, $controller->getRequest()->getControllerName(), $controller->getRequest()->getActionName(), $controller->getRequest()->getParam('p', 'null'));
     } elseif ($this->request['browseflag'] == 'BrowseDirectChildren') {
         $parentID = $this->request['objectid'];
         $didl = X_Upnp::createDIDL($list->getItems(), $parentID, $num, $controller->getRequest()->getControllerName(), $controller->getRequest()->getActionName(), $controller->getRequest()->getParam('p', 'null'));
     }
     $xmlDIDL = $didl->saveXML();
     X_Debug::i("DIDL response: {$xmlDIDL}");
     // Build SOAP-XML reply from DIDL-XML and send it to upnp device
     $domSOAP = X_Upnp::createSOAPEnvelope($xmlDIDL, $num, $num, $responseType, $parentID);
     $soapXML = $domSOAP->saveXML();
     // turn off viewRenderer and Layout, add Content-Type and set response body
     $this->_render($soapXML, $controller);
 }
 /**
  * Change the url of directplay link to add seeked value
  * @see X_VlcShares_Plugins_Abstract::filterModeItems()
  */
 public function filterModeItems(X_Page_Item_PItem $item, $provider, Zend_Controller_Action $controller)
 {
     if ($item->getKey() == 'core-directwatch' && $item->isUrl()) {
         $ssValue = $controller->getRequest()->getParam($this->getId(), 0);
         if ($ssValue > 0) {
             // need to change the value
             $link = $item->getLink();
             /* @var $hosterHelper X_VlcShares_Plugins_Helper_HosterSSWrapper */
             $hosterHelper = $this->helpers()->hoster();
             /* @var $hoster X_VlcShares_Plugins_Helper_HostInterface */
             $hoster = $hosterHelper->getLastPositiveMatch();
             /* @var $ssHelper X_VlcShares_Plugins_Helper_StreamSeeker */
             $ssHelper = $this->helpers('streamseeker');
             if ($ssHelper->isSeekableHoster($hoster)) {
                 $newLink = $ssHelper->getSeekedUrl($link, $ssValue, $hoster);
                 X_Debug::i("Changing link to {$newLink}");
                 $item->setLink($newLink);
             } else {
                 X_Debug::f("A seekable hoster reported as unseekable on last check: " . get_class($hoster));
             }
         }
     }
 }