Module Joomla 1.5 pour afficher le titre (status) courant d'un flux icecast / shoutcast.
Je me suis basé sur le code de ce forum
http://icecast.imux.net/viewtopic.php?t=7550&sid=2a282fa75ac5bfc77e9bb770b7225b6f pour créer un module sous Joomla. Ce plugin affiche le titre du flux et le rafraîchit toutes les x secondes (10 par défaut) par jQuery.
Ce code peut aussi être un bon exemple pour accéder à des paramètres de module sans passer par la page index.php de joomla. Ici quand jQuery accède directement à la page, on charge manuellement une partie du framework Joomla pour accéder aux paramètres nécessaires.
Source / Exemple :
<?php
// If the script run inside Joomla
if(defined('_JEXEC')) {
// Grab the JDocument
$document = JFactory::getDocument();
// Add the needed script
$document->addScript(JURI::root().'modules/mod_nowlistening/jquery-1.7.2.min.js');
$document->addScript(JURI::root().'modules/mod_nowlistening/nl.js');
// Build some javascript and add it
$js_code = 'updateNowPlaying("'.JURI::root().'");';
$js_code .= 'setInterval( "updateNowPlaying(\"'.JURI::root().'\")", '.$params->get('rtime').');';
$document->addScriptDeclaration($js_code);
// Add the needed css
$document->addStyleSheet(JURI::root().'modules/mod_nowlistening/nl.css');
// Now Playing Div
echo '<span class="nl1">'.$params->get('btext').'<span id="nowPlaying" class="nl2">';
echo $params->get('nojavascript').'</span>'.$params->get('atext').'</span>';
// Or if the script if called directly trough AJAX
}else{
// Inspired from http://icecast.imux.net/viewtopic.php?t=7550&sid=2a282fa75ac5bfc77e9bb770b7225b6f
/* ----------- Server configuration ---------- */
// Get Joomla! framework
define( '_JEXEC', 1 );
define( '_VALID_MOS', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../..'));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$user =& JFactory::getUser();
$session =& JFactory::getSession();
// Get this module
jimport( 'joomla.application.module.helper' );
$module = &JModuleHelper::getModule('nowlistening');
$params = new JParameter($module->params);
// Get the option
$address = $params->get('address');
$port = $params->get('port');
$server = $params->get('type'); // 0 = icecast, 1 = shoutcast
$offline = $params->get('offline');
$notitle = $params->get('nosongtitle');
if ($server == 0){
$pos = 5;
$http = "GET /status2.xsl HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n";
}else if ($server == 1){
$pos = 6;
$http = "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n";
}
/* ------------------------------------------- */
$fp = @fsockopen($address,$port,$errno,$errstr,1);
if(!$fp){
// Displays when server is offline
echo $offline;
}else{
fputs($fp, $http);
while (!feof($fp)){
$info = fgets($fp);
}
if($server == 0){
$info = str_replace('<pre>', "", $info);
$info = str_replace('</pre>', "", $info);
}else{
$info = str_replace('</body></html>', "", $info);
}
$split = explode(',', $info);
if (empty($split[$pos])) {
// Displays when sever is online but no song title
echo $notitle;
}else{
$title = str_replace('\'', '`', $split[$pos]);
$title = str_replace(',', ' ', $title);
echo $title; // Diaplays song
}
}
fclose($fp);
} ?>
Conclusion :
Ça fait 10 min que j'essaye d'ajouter le zip avec le reste des fichiers (xml, js, css, etc) mais rien à faire j'ai une erreur sur le site. Donc si quelqu'un est intéressé par le module qui s'installe directement par le backend de Joomla, il peut me contacter par MP.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.