function indexAction()
 {
     if (X_VlcShares_Plugins::helpers()->devices()->isWiimc()) {
         // everything have to be in plx format
         $plx = new X_Plx(X_Env::_('p_auth_loginindex_plxtitle'), X_Env::_('p_auth_loginindex_plxdesc'));
         $plx->addItem(new X_Plx_Item(X_Env::_('p_auth_login_advice'), X_Env::completeUrl($this->_helper->url('index', 'auth'))));
         $plx->addItem(new X_Plx_Item(X_Env::_('p_auth_login_pressbbutton'), X_Env::completeUrl($this->_helper->url('index', 'auth'))));
         $this->_helper->viewRenderer->setNoRender(true);
         $this->_helper->layout->disableLayout();
         $this->getResponse()->setHeader('Content-Type', 'text/plain');
         $this->getResponse()->setBody((string) $plx);
         //echo $plx;
         return;
     }
     //if ( $this->ns->enabled && isset($this->ns->username) ) {
     //throw new Exception(X_Env::_('p_auth_already_loggedin'));
     //}
     if ($this->plugin->isLoggedIn()) {
         throw new Exception(X_Env::_('p_auth_already_loggedin'));
     }
     $form = new Application_Form_AuthLogin();
     $form->setAction($this->_helper->url('login', 'auth'));
     $this->view->form = $form;
     $this->view->messages = $this->_helper->flashMessenger->getMessages();
 }
 public function indexAction()
 {
     $lang = $this->getRequest()->getParam('lang', false);
     $languages = array();
     foreach (new DirectoryIterator(APPLICATION_PATH . "/../languages/") as $entry) {
         if ($entry->isFile() && pathinfo($entry->getFilename(), PATHINFO_EXTENSION) == 'ini') {
             if (count(explode('.', $entry->getFilename())) == 2) {
                 $languages[$entry->getFilename()] = pathinfo($entry->getFilename(), PATHINFO_FILENAME);
             }
         }
     }
     if ($lang != false) {
         // cleanup from ./ and ../
         $lang = str_replace(array('.', '/'), '', $lang);
         if (file_exists(APPLICATION_PATH . "/../languages/{$lang}.ini") && array_key_exists("{$lang}.ini", $languages)) {
             $translation = new Zend_Translate('ini', APPLICATION_PATH . "/../languages/{$lang}.ini");
             X_Env::initTranslator($translation);
         } else {
             $this->_helper->flashMessenger(array('type' => 'error', 'text' => X_Env::_('installer_invalid_language')));
             $lang = false;
         }
     }
     $form = new Application_Form_Installer();
     $form->setAction($this->_helper->url('save', 'installer'));
     try {
         $form->lang->setMultiOptions($languages);
         $form->setDefault('lang', $lang !== false ? "{$lang}.ini" : 'en_GB.ini');
         $form->setDefault('auth', 0);
         $form->setDefault('threads', X_Env::completeUrl($this->_helper->url('start', 'threads')));
     } catch (Exception $e) {
         // WTF?
     }
     // try to read the manifest of plugins index
     $plugins = $this->getInstallablePlugins();
     try {
         $form->plugins->setMultiOptions($plugins);
     } catch (Exception $e) {
         // Connection kaboom?
     }
     $ns = new Zend_Session_Namespace('vlc-shares::installer');
     if (isset($ns->errors) && $ns->errors) {
         $form->isValid($ns->data);
         unset($ns->errors);
         unset($ns->data);
     }
     $threadsChecks = $this->_helper->url('check', 'threads');
     $threadsPing = $this->_helper->url('ping', 'threads');
     $basePing = $this->_helper->url('', 'threads');
     $httpPort = $_SERVER['SERVER_PORT'];
     $httpPort = $httpPort != '80' && $httpPort != '' ? ":{$httpPort}" : '';
     $threadsUrls = array("'http://localhost{$httpPort}{$basePing}'", "'http://127.0.0.1{$httpPort}{$basePing}'", "'http://127.0.1.1{$httpPort}{$basePing}'", "'http://192.168.1.1{$httpPort}{$basePing}'");
     $this->view->messages = array_merge($this->_helper->flashMessenger->getMessages(), $this->_helper->flashMessenger->getCurrentMessages());
     $this->_helper->flashMessenger->clearCurrentMessages();
     $this->view->languages = $languages;
     $this->view->threadsCheck = $threadsChecks;
     $this->view->threadsPing = $threadsPing;
     $this->view->threadsUrls = $threadsUrls;
     $this->view->form = $form;
 }
 public function gen_afterPageBuild(X_Page_ItemList_PItem $items, Zend_Controller_Action $controller)
 {
     if (count($items->getItems()) == 0) {
         X_Debug::i("Plugin triggered");
         $item = new X_Page_Item_PItem('emptylists', X_Env::_('p_emptylists_moveaway'));
         $item->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($controller->getHelper('url')->url()));
         $items->append($item);
     }
 }
 public function gen_afterPageBuild(X_Page_ItemList_PItem $items, Zend_Controller_Action $controller)
 {
     if ($this->helpers()->devices()->isWiimc() && $this->helpers()->devices()->isWiimcBeforeVersion('1.0.9')) {
         if (count($items->getItems()) === 1) {
             X_Debug::i("Plugin triggered");
             $item = new X_Page_Item_PItem('workaroundwiimcplaylistitemsbug', '-- Workaround for bug in Wiimc <= 1.0.9 --');
             $item->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($controller->getHelper('url')->url()));
             $items->append($item);
         }
     }
 }
 /**
  * Show the header inside the selection page
  */
 public function preGetSelectionItems($provider, $location, $pid, Zend_Controller_Action $controller)
 {
     // we want to expose items only if pid is this plugin
     if ($this->getId() != $pid) {
         return;
     }
     X_Debug::i('Plugin triggered');
     $urlHelper = $controller->getHelper('url');
     $link = new X_Page_Item_PItem($this->getId() . '-header', X_Env::_('p_profiles_selection_title'));
     $link->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
     return new X_Page_ItemList_PItem();
 }
 public function scriptAction()
 {
     $hosters = X_VlcShares_Plugins::helpers()->hoster()->getHosters();
     $csrf = new Zend_Form_Element_Hash('csrf', array('salt' => __CLASS__));
     $csrf->initCsrfToken();
     $this->view->hosters = $hosters;
     $this->view->frameUrl = X_Env::completeUrl($this->_helper->url->url(array('controller' => 'bookmarklets', 'action' => 'frame')));
     $this->view->cssUrl = X_Env::completeUrl($this->_helper->viewRenderer->view->baseUrl('/css/bookmarklets/injected.css'));
     $this->view->xfcUrl = X_Env::completeUrl($this->_helper->viewRenderer->view->baseUrl('/js/jquery.xfc.js'));
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setViewSuffix('pjs');
     $this->getResponse()->setHeader('Content-Type', 'application/javascript');
 }
 public function getModeItems($provider, $location, Zend_Controller_Action $controller)
 {
     $list = new X_Page_ItemList_PItem();
     $urlHelper = $controller->getHelper('url');
     if ($this->countdown > 0) {
         $countdown = new X_Page_Item_PItem('core-countdown', X_Env::_('core_countdown', $this->countdown));
         $countdown->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setIcon("/images/{$this->getId()}/logo.png")->setLink(X_Env::completeUrl($urlHelper->url()));
         $list->append($countdown);
     }
     if ($this->error_message) {
         $error = new X_Page_Item_PItem('core-error', X_Env::_($this->error_message));
         $error->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setIcon("/images/{$this->getId()}/logo.png")->setLink(X_Env::completeUrl($urlHelper->url()));
         $list->append($error);
     }
     return $list;
 }
 public function preGetSelectionItems($provider, $location, $pid, Zend_Controller_Action $controller)
 {
     // we want to expose items only if pid is this plugin
     if ($this->getId() != $pid) {
         return;
     }
     // check for resolvable $location
     // this plugin is useless if i haven't an access
     // to the real location (url for stream or path for file)
     $provider = X_VlcShares_Plugins::broker()->getPlugins($provider);
     if (!$provider instanceof X_VlcShares_Plugins_ResolverInterface) {
         return;
     }
     X_Debug::i('Plugin triggered');
     $urlHelper = $controller->getHelper('url');
     $link = new X_Page_Item_PItem($this->getId() . '-header', X_Env::_('p_audioswitcher_selection_title'));
     $link->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
     return new X_Page_ItemList_PItem();
 }
 /**
  * Add the button BackToStream in controls page
  *
  * @param X_Streamer_Engine $engine
  * @param Zend_Controller_Action $controller the controller who handle the request
  * @return array
  */
 public function preGetControlItems(X_Streamer_Engine $engine, Zend_Controller_Action $controller)
 {
     $urlHelper = $controller->getHelper('url');
     $return = new X_Page_ItemList_PItem();
     if ($this->config('show.title', true)) {
         $onAirName = X_Env::_("p_streaminfo_unknown_source");
         if ($engine instanceof X_Streamer_Engine_Vlc) {
             $vlc = $engine->getVlcWrapper();
             $onAirName = $vlc->getCurrentName();
         } else {
             // try to find the name from the location (if any)
             $providerId = $controller->getRequest()->getParam('p', false);
             $location = $controller->getRequest()->getParam('l', false);
             if ($providerId && $location) {
                 $providerObj = X_VlcShares_Plugins::broker()->getPlugins($providerId);
                 $location = X_Env::decode($location);
                 if ($providerObj instanceof X_VlcShares_Plugins_ResolverInterface) {
                     $onAirName = $providerObj->resolveLocation($location);
                 }
             }
         }
         // show the title of the file
         $item = new X_Page_Item_PItem('streaminfo-onair', X_Env::_('p_streaminfo_onair') . ": {$onAirName}");
         $item->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
         $return->append($item);
     }
     if ($engine instanceof X_Streamer_Engine_Vlc) {
         $vlc = $engine->getVlcWrapper();
         if ($this->config('show.time', false)) {
             $currentTime = X_Env::formatTime($vlc->getCurrentTime());
             $totalTime = X_Env::formatTime($vlc->getTotalTime());
             $item = new X_Page_Item_PItem('streaminfo-time', "{$currentTime}/{$totalTime}");
             $item->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
             $return->append($item);
         }
     }
     return $return;
 }
 /**
  * Check the item in the collection should be filtered out
  * If return is false, the item will be discarded at 100%
  * If return is true, isn't sure that the item will be added
  * 'cause another plugin can prevent this
  * 
  * Plugins who check per-item acl or blacklist should hook here
  * 
  * @param X_Page_Item_PItem $item
  * @param string $provider
  * @param Zend_Controller_Action $controller
  * @return boolean true if item is ok, false if item should be discarded
  */
 public function filterShareItems(X_Page_Item_PItem $item, $provider, Zend_Controller_Action $controller)
 {
     $providerClass = X_VlcShares_Plugins::broker()->getPluginClass($provider);
     $providerObj = X_VlcShares_Plugins::broker()->getPlugins($provider);
     if (is_a($providerObj, 'X_VlcShares_Plugins_FileSystem')) {
         if ($item->getType() == X_Page_Item_PItem::TYPE_ELEMENT) {
             $itemLocation = $item->getCustom('X_VlcShares_Plugins_FileSystem:location');
             /* @var $urlHelper Zend_Controller_Action_Helper_Url */
             $urlHelper = $controller->getHelper('url');
             $path = $providerObj->resolveLocation($itemLocation);
             $thumb = new Application_Model_FsThumb();
             Application_Model_FsThumbsMapper::i()->fetchByPath($path, $thumb);
             if ($thumb->isNew()) {
                 $thumbUrl = X_Env::completeUrl($urlHelper->direct('thumb', 'fsthumbs', 'default', array('l' => X_Env::encode($itemLocation), 't' => 'dummy.jpg')));
             } else {
                 $thumbUrl = X_Env::completeUrl(Zend_Controller_Front::getInstance()->getBaseUrl() . $thumb->getUrl());
             }
             //$item->setDescription($itemLocation);
             $item->setThumbnail($thumbUrl);
         }
     }
     return true;
 }
 public function selectionAction()
 {
     $request = $this->getRequest();
     X_VlcShares_Plugins::broker()->gen_preProviderSelection($this);
     $provider = $request->getParam('p', false);
     if ($provider === false || !X_VlcShares_Plugins::broker()->isRegistered($provider)) {
         throw new Exception("Invalid provider");
     }
     $pid = $request->getParam('pid', false);
     if ($pid === false || !X_VlcShares_Plugins::broker()->isRegistered($pid)) {
         throw new Exception("Invalid pluginId");
     }
     $location = X_Env::decode($request->getParam('l', ''));
     $pageItems = new X_Page_ItemList_PItem();
     // I add a "Back" button as first, this should redirect to mode action
     $back = new X_Page_Item_PItem('core-back', X_Env::_('back'));
     $back->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(array('action' => 'mode', 'pid' => null), 'default', false);
     $pageItems->append($back);
     // links on top
     $pageItems->merge(X_VlcShares_Plugins::broker()->preGetSelectionItems($provider, $location, $pid, $this));
     // add separator between header items and options items
     $separator = new X_Page_Item_PItem('core-separator', X_Env::_('_____options_separator_____'));
     $separator->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($this->_helper->url->url()));
     $pageItems->append($separator);
     // normal links
     $pageItems->merge(X_VlcShares_Plugins::broker()->getSelectionItems($provider, $location, $pid, $this));
     // bottom links
     $pageItems->merge(X_VlcShares_Plugins::broker()->postGetSelectionItems($provider, $location, $pid, $this));
     // filter out items (parental-control / hidden file / system dir)
     foreach ($pageItems->getItems() as $key => $item) {
         $results = X_VlcShares_Plugins::broker()->filterSelectionItems($item, $provider, $pid, $this);
         if ($results != null && in_array(false, $results)) {
             $pageItems->remove($item);
         }
     }
     // trigger for page creation
     X_VlcShares_Plugins::broker()->gen_afterPageBuild($pageItems, $this);
 }
 /**
  * This hook can be used to add low priority args in vlc stack
  * 
  * @param X_Vlc $vlc vlc wrapper object
  * @param string $provider id of the plugin that should handle request
  * @param string $location to stream
  * @param Zend_Controller_Action $controller the controller who handle the request
  */
 public function preRegisterVlcArgs(X_Vlc $vlc, $provider, $location, Zend_Controller_Action $controller)
 {
     // this plugin inject params only if this is the provider
     if ($provider != $this->getId()) {
         return;
     }
     // i need to register source as first, because subtitles plugin use source
     // for create subfile
     X_Debug::i('Plugin triggered');
     $dLocation = $this->resolveLocation($location);
     if ($location !== null) {
         // TODO adapt to newer api when ready
         $vlc->registerArg('source', "\"{$dLocation}\"");
     } else {
         X_Debug::e("No source o_O");
         return;
     }
     // Now, it's time to check for sub parameter
     $request = $controller->getRequest();
     $sub = $request->getParam($this->getId() . ':sub', false);
     if ($sub !== false) {
         $sub = X_Env::decode($sub);
         /* @var $helper X_VlcShares_Plugins_Helper_Youtube */
         $helper = $this->helpers('youtube');
         list(, , , $videoId) = explode('/', $location);
         $sub = $helper->getSubtitleNOAPI($videoId, $sub);
         $urlHelper = $controller->getHelper('url');
         $subFile = X_Env::completeUrl($urlHelper->url($sub['srt_url'], 'default', true));
         $vlc->registerArg('subtitles', "--sub-file=\"{$subFile}\"");
     }
 }
 public function gen_afterPageBuild(X_Page_ItemList_PItem $list, Zend_Controller_Action $controller)
 {
     // force Rendering win over everythings
     /*if ( !$this->_forceRendering ) {
     			if ( !((bool) $this->config('forced.enabled', false)) && !$this->helpers()->devices()->isWiimc() ) return;
     		} 
     		*/
     // new renderer interface
     if (!$this->isDefaultRenderer()) {
         return;
     }
     X_Debug::i("Plugin triggered");
     $request = $controller->getRequest();
     $enhanced = $this->helpers()->devices()->isWiimcEnhanced() && $this->config('support.enhanced', true);
     $plx = new X_Plx(X_Env::_('p_wiimcplxrenderer_plxtitle_' . $request->getControllerName() . '_' . $request->getActionName()), X_Env::_('p_wiimcplxrenderer_plxdescription_' . $request->getControllerName() . '_' . $request->getActionName()));
     // wiimc plus custom tags
     if ($enhanced) {
         $plx->setWiimcplus_generator_name('vlc-shares');
         // uses the __call api
         $plx->setWiimcplus_generator_version(X_VlcShares::VERSION_CLEAN);
         // uses the __call api
         if ($request->getControllerName() == 'index' && $request->getActionName() == 'collections') {
             $plx->setWiimcplus_assert_mainmenu('true');
             // uses the __call api
         }
         // show the current time as custom playlist header tag if the page is controls/control or browse/stream
         if ($request->getControllerName() == 'controls' && $request->getActionName() == 'control' || $request->getControllerName() == 'browse' && $request->getActionName() == 'stream') {
             $vlc = X_Vlc::getLastInstance();
             if ($vlc) {
                 // check to be sure that vlc is running right now
                 $currentTime = X_Env::formatTime($vlc->getCurrentTime());
                 $totalTime = X_Env::formatTime($vlc->getTotalTime());
                 $plx->setWiimcplus_current_time("{$currentTime}/{$totalTime}");
                 // uses the __call api
             }
         } elseif ($request->getControllerName() == 'browse' && $request->getActionName() == 'selection') {
             $plx->setWiimcplus_assert_nohistory('true');
             // uses the __call api
         }
     }
     foreach ($list->getItems() as $i => $item) {
         /* @var $item X_Page_Item_PItem */
         $plxItemName = ($item->isHighlight() ? '-) ' : '') . $item->getLabel();
         $plxItemWiimcplusIcon = null;
         switch ($item->getType()) {
             case X_Page_Item_PItem::TYPE_CONTAINER:
                 $plxItemType = X_Plx_Item::TYPE_PLAYLIST;
                 $plxItemWiimcplusIcon = 'folder';
                 break;
             case X_Page_Item_PItem::TYPE_ELEMENT:
                 $plxItemType = X_Plx_Item::TYPE_PLAYLIST;
                 if ($request->getControllerName() == 'browse' && $request->getActionName() == 'share') {
                     $plxItemWiimcplusIcon = 'file';
                 }
                 break;
             case X_Page_Item_PItem::TYPE_REQUEST:
                 $plxItemType = X_Plx_Item::TYPE_SEARCH;
                 break;
             case X_Page_Item_PItem::TYPE_PLAYABLE:
                 $plxItemType = X_Plx_Item::TYPE_VIDEO;
                 break;
             default:
                 $plxItemType = $item->getType();
         }
         /* @var $urlHelper Zend_Controller_Action_Helper_Url */
         $urlHelper = $controller->getHelper('url');
         $plxItemUrl = $item->isUrl() ? $item->getLink() : X_Env::completeUrl($urlHelper->url($item->getLink(), $item->getRoute(), $item->isReset()));
         $plxItem = new X_Plx_Item($plxItemName, $plxItemUrl, $plxItemType);
         if ($item->getThumbnail() != null) {
             if (X_Env::startWith($item->getThumbnail(), 'http') || X_Env::startWith($item->getThumbnail(), 'https')) {
                 $plxItem->setThumb($item->getThumbnail());
             } else {
                 $plxItem->setThumb(X_Env::completeUrl($item->getThumbnail()));
             }
         }
         if ($enhanced) {
             if ($plxItemWiimcplusIcon !== null) {
                 $plxItem->setWiimcplus_icon($plxItemWiimcplusIcon);
             }
             if ($item->getKey() == 'core-separator') {
                 $plxItem->setWiimcplus_assert_separator('true');
             }
             if ($item->getKey() == 'core-directwatch') {
                 $plxItem->setWiimcplus_assert_directwatch('true');
                 if ($item->getCustom('subtitle') != null) {
                     $plxItem->setWiimcplus_subtitle($item->getCustom('subtitle'));
                 }
             }
             if ($item->getKey() == 'core-play') {
                 $plxItem->setWiimcplus_assert_startvlc('true');
             }
         }
         $plx->addItem($plxItem);
     }
     $this->_render($plx, $controller);
 }
 /**
  * Get download queue status
  * @param unknown_type $provider
  * @param unknown_type $location
  * @param Zend_Controller_Action $controller
  * @return X_Page_ItemList_PItem
  */
 public function getShareItems($provider, $location, Zend_Controller_Action $controller)
 {
     // this plugin add items only if it is the provider
     if ($provider != $this->getId()) {
         return;
     }
     X_Debug::i("Plugin triggered");
     // disabling cache plugin
     try {
         $cachePlugin = X_VlcShares_Plugins::broker()->getPlugins('cache');
         if (method_exists($cachePlugin, 'setDoNotCache')) {
             $cachePlugin->setDoNotCache();
         }
     } catch (Exception $e) {
         // cache plugin not registered, no problem
     }
     // unregister sort plugin, it's useless now
     X_VlcShares_Plugins::broker()->unregisterPluginClass('X_VlcShares_Plugins_SortItems');
     /* @var $jdHelper X_VlcShares_Plugins_Helper_JDownloader */
     $jdHelper = $this->helpers('jdownloader');
     /* @var $url Zend_View_Helper_Url */
     $urlHelper = $controller->getHelper('url');
     $packages = $jdHelper->getDownloads();
     X_Debug::i("Packages found: " . count($packages));
     $list = new X_Page_ItemList_PItem();
     foreach ($packages as $package) {
         /* @var $package Application_Model_JDownloaderPackage */
         if ($this->helpers()->devices()->isWiimc()) {
             $packageLabel = X_Env::_('p_jdownloader_share_packageentry_nohtml', $package->getName(), $package->getSize(), $package->getFilesCount(), $package->getETA(), $package->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($package->isDownloading() ? '1' : '0')));
             $packageDesc = X_Env::_('p_jdownloader_share_packageentry_desc_nohtml', $package->getSize(), $package->getFilesCount(), $package->getETA(), $package->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($package->isDownloading() ? '1' : '0')));
         } else {
             $packageLabel = X_Env::_('p_jdownloader_share_packageentry_html', $package->getName());
             $packageDesc = X_Env::_('p_jdownloader_share_packageentry_desc_html', $package->getSize(), $package->getFilesCount(), $package->getETA(), $package->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($package->isDownloading() ? '1' : '0')));
         }
         $link = new X_Page_Item_PItem($this->getId() . '-package', $packageLabel);
         $link->setIcon('/images/icons/folder.png')->setDescription($packageDesc)->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
         $list->append($link);
         X_Debug::i("{$package->getFilesCount()} files in package {$package->getName()}");
         foreach ($package->getFiles() as $file) {
             /* @var $file Application_Model_JDownloaderFile */
             if ($this->helpers()->devices()->isWiimc()) {
                 $fileLabel = X_Env::_('p_jdownloader_share_fileentry_nohtml', $file->getName(), $file->getHoster(), $file->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($file->isDownloading() ? '1' : '0')));
                 $fileDesc = X_Env::_('p_jdownloader_share_fileentry_desc_nohtml', $file->getHoster(), $file->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($file->isDownloading() ? '1' : '0')));
             } else {
                 $fileLabel = X_Env::_('p_jdownloader_share_fileentry_html', $file->getName());
                 $fileDesc = X_Env::_('p_jdownloader_share_fileentry_desc_html', $file->getHoster(), $file->getPercent(), X_Env::_('p_jdownloader_downloadstate_' . ($file->isDownloading() ? '1' : '0')));
             }
             $link = new X_Page_Item_PItem($this->getId() . '-file', $fileLabel);
             $link->setDescription($fileDesc)->setType(X_Page_Item_PItem::TYPE_ELEMENT)->setLink(X_Env::completeUrl($urlHelper->url()));
             $list->append($link);
         }
     }
     return $list;
 }