public function onAfterTrackLink(&$item, $params, $TitleName = null) { $session = JFactory::getSession(); $app = JFactory::getApplication(); if ($app->isAdmin() && $this->params->get('plg_playjoom_barplayer_params_basic_view') == 'site' || $app->isSite() && $this->params->get('plg_playjoom_barplayer_params_basic_view') == 'admin') { return null; } else { $rootURL = rtrim(JURI::base(), '/'); $subpathURL = JURI::base(true); if (!empty($subpathURL) && $subpathURL != '/') { $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); } if (isset($item->id) && isset($item->file)) { $html = ''; if ($app->isAdmin()) { $link = $rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $item->id) . '&id=' . $item->id) . '&track.mp3'; $track_link = str_replace('/administrator', '', $link); } else { $track_link = $rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $item->id) . '&id=' . $item->id) . '&track.mp3'; } //$html .= '<div class="ui360" style="margin-top:-0.55em;"><a href="'.JURI::root(false).'index.php?option=com_playjoom&view=broadcast&id='.$item->id.'&'.urlencode($item->file).'"></a></div>'; $html .= '<div class="ui360" style="margin-top:-0.55em;"><a href="' . $track_link . '"></a></div>'; } else { return null; } return $html; } }
public function onPrepareTrackLink(&$item, $params = null, $TitleName = null, $Request = 'site') { $html = null; $session = JFactory::getSession(); //If the event call comes from the albumviewer, then the $TitleName haven´t null if ($TitleName != null) { $TrackTitle = $TitleName; } else { if (isset($item->title)) { $TrackTitle = $item->title; } else { return null; } } if ($Request == 'admin') { $html .= '<a href="' . $this->rootURL . JRoute::_('index.php?option=com_playjoom&task=audiotrack.edit&id=' . $item->id) . '">' . $TrackTitle . '</a>'; } else { //$html .= '<a href="'.$this->rootURL.JRoute::_('/components/com_playjoom/broadcasthandler/index.php?id='.$item->id,true).'&track.mp3" title="'.JText::_( 'PLG_PLAYJOOM_TRACKCONTROL_PLAYTITLE' ).'" target="_blank" class="direct_link">'.$TrackTitle.'</a>'; $html .= '<a href="' . $this->rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $item->id) . '&id=' . $item->id, true) . '&track.mp3" title="' . JText::_('PLG_PLAYJOOM_TRACKCONTROL_PLAYTITLE') . '" target="_blank" class="direct_link">' . $TrackTitle . '</a>'; } return $html; }
public function onAfterTrackLink(&$item, $params, $TitleName = null) { $session = JFactory::getSession(); $app = JFactory::getApplication(); if ($app->isAdmin() && $this->params->get('plg_playjoom_playbutton_params_basic_view', 'both') == 'site' || $app->isSite() && $this->params->get('plg_playjoom_playbutton_params_basic_view', 'both') == 'admin') { return null; } else { $html = ''; $rootURL = rtrim(JURI::base(), '/'); $subpathURL = JURI::base(true); if (!empty($subpathURL) && $subpathURL != '/') { $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); } if ($app->isAdmin()) { $link = $rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $item->id) . '&id=' . $item->id) . '&track.mp3'; $track_link = str_replace('/administrator', '', $link); } else { $track_link = $rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $item->id) . '&id=' . $item->id) . '&track.mp3'; } $html .= '<a href="' . $track_link . '" class="sm2_button" style="margin-left:15px;"></a>'; return $html; } }
public function onAfterPJContent(&$item, $params, $source = null, $TitleName = null) { $session = JFactory::getSession(); $rootURL = rtrim(JURI::base(), '/'); $subpathURL = JURI::base(true); if (!empty($subpathURL) && $subpathURL != '/') { $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); } //Check for Trackcontrol if (JPluginHelper::isEnabled('playjoom', 'trackcontrol') == false) { $html = null; } else { $html = ''; $html .= '<div class="sm2-bar-ui full-width fixed flat"> <div class="bd sm2-main-controls"> <div class="sm2-inline-texture"></div> <div class="sm2-inline-gradient"></div> <div class="sm2-inline-element sm2-button-element"> <div class="sm2-button-bd"> <a href="#play" class="sm2-inline-button play-pause">Play / pause</a> </div> </div> <div class="sm2-inline-element sm2-inline-status"> <div class="sm2-playlist"> <div class="sm2-playlist-target"> <noscript><p>JavaScript is required.</p></noscript> </div> </div> <div class="sm2-progress"> <div class="sm2-row"> <div class="sm2-inline-time">0:00</div> <div class="sm2-progress-bd"> <div class="sm2-progress-track"> <div class="sm2-progress-bar"></div> <div class="sm2-progress-ball"> <div class="icon-overlay"> </div> </div> </div> </div> <div class="sm2-inline-duration">0:00</div> </div> </div> </div> <div class="sm2-inline-element sm2-button-element sm2-volume"> <div class="sm2-button-bd"> <span class="sm2-inline-button sm2-volume-control volume-shade"></span> <a href="#volume" class="sm2-inline-button sm2-volume-control">volume</a> </div> </div> <div class="sm2-inline-element sm2-button-element"> <div class="sm2-button-bd"> <a href="#prev" title="Previous" class="sm2-inline-button previous">< previous</a> </div> </div> <div class="sm2-inline-element sm2-button-element"> <div class="sm2-button-bd"> <a href="#next" title="Next" class="sm2-inline-button next">> next</a> </div> </div> </div> <div class="bd sm2-playlist-drawer sm2-element"> <div class="sm2-inline-texture"> <div class="sm2-box-shadow"></div> </div> <div class="sm2-playlist-wrapper"> <ul class="sm2-playlist-bd"> '; foreach ($item as $i => $playlist_item) { if (JFile::exists($playlist_item->pathatlocal . DIRECTORY_SEPARATOR . $playlist_item->file)) { //$html .= '<li><a href="'.$rootURL.JRoute::_('/components/com_playjoom/broadcasthandler/index.php?id='.$playlist_item->id).'&track.mp3"><b>'.$playlist_item->artist.'</b> - '.$playlist_item->title.'</a></li>'; $html .= '<li><a href="' . $rootURL . JRoute::_('index.php?option=com_playjoom&view=broadcast&format=raw&tlk=' . hash('sha256', $session->getId() . '+' . PlayJoomHelper::getUserIP() . '+' . $playlist_item->id) . '&id=' . $playlist_item->id) . '&track.mp3"><b>' . $playlist_item->artist . '</b> - ' . $playlist_item->title . '</a></li>'; } } $html .= '</ul> </div> </div> </div>'; return $html; } }
/** * Method for to check if the requested track has a valid open session * * @param string $tlk hash of current session ID, track ID and user IP address. * * @return boolean */ public function checkValidSession($user_id, $pk) { $dispatcher = JDispatcher::getInstance(); $db = $this->getDbo(); $query = $db->getQuery(true); $query->from('#__session as s'); $query->select('s.session_id, s.userid'); $query->where('s.userid=' . (int) $user_id); $db->setQuery($query); $Valid_Sessions = $db->loadObjectList(); if (count($Valid_Sessions) >= 1) { foreach ($Valid_Sessions as $Valid_Session) { $session_form_db = hash('sha256', $Valid_Session->session_id . '+' . PlayJoomHelper::getUserIP() . '+' . $pk); $session_form_post = JFactory::getApplication()->input->get('tlk'); if ($session_form_db != $session_form_post) { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Access denied! No valid session found for this request.', 'priority' => JLog::WARNING, 'section' => 'site'))); $valid_session = false; } else { return true; } } } else { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Access denied! No valid session found for this request.', 'priority' => JLog::WARNING, 'section' => 'site'))); $valid_session = false; } return $valid_session; }
/** * Method for to create a wpl playlist into a array * * @param array $items */ public function CreateWPLList($items, $archiv = null) { $PJContent = null; $session = JFactory::getSession(); $dispatcher = JDispatcher::getInstance(); $Entriecounter = count($items); $filecounter = 0; $PJContent = null; $PJContent .= '<?wpl version="1.0"?>' . "\r\n"; $PJContent .= '<smil>' . "\r\n"; $PJContent .= '<head>' . "\r\n"; $PJContent .= '<meta name="Generator" content="PlayJoom Audio Server"/>' . "\r\n"; $PJContent .= '<meta name="ItemCount" content="' . $Entriecounter . '"/>' . "\r\n"; $PJContent .= '<title>Playlist</title>' . "\r\n"; $PJContent .= '</head>' . "\r\n"; $PJContent .= '<body>' . "\r\n"; $PJContent .= '<seq>' . "\r\n"; foreach ($items as $i => $item) { if (JFile::exists($item->pathatlocal . DIRECTORY_SEPARATOR . $item->file)) { $filecounter = $filecounter + 1; if ($archiv == true) { if (JRequest::getVar('source') == 'album') { $PJContent .= '<media src="' . $item->tracknumber . ' - ' . JApplication::stringURLSafe($item->title) . '.' . PlayJoomHelper::getFileExtension($item->mediatype) . '"/>' . "\r\n"; } else { $PJContent .= '<media src="' . $i + 1 . '-' . JApplication::stringURLSafe($item->artist) . '-' . JApplication::stringURLSafe($item->title) . '.' . PlayJoomHelper::getFileExtension($item->mediatype) . '"/>' . "\r\n"; } } else { $PJContent .= '<media src="' . SERVER_REF . "?option=com_playjoom&view=broadcast&format=raw&tlk=" . hash('sha256', $session->getId() . "+" . PlayJoomHelper::getUserIP() . "+" . $item->id) . "&id=" . $item->id . '"/>' . "\r\n"; } } else { $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Track ' . $item->title . ' isn´t available!', 'priority' => JLog::WARNING, 'section' => 'site'))); } } $PJContent .= '</seq>' . "\r\n"; $PJContent .= '</body>' . "\r\n"; $PJContent .= '</smil>' . "\r\n"; $dispatcher->trigger('onEventLogging', array(array('method' => __METHOD__ . ":" . __LINE__, 'message' => 'Done to write playlist file.', 'priority' => JLog::INFO, 'section' => 'site'))); $this->data[] = $PJContent; }