tweets($account, $nb, $tweetClass1, $tweetClass2, $tweetContentClass, $showDate, $dateFormat, $tweetDateClass, $showIcon, $tweetIcon, $tweetIconClass); } function tweets($account, $nb, $tweetClass1, $tweetClass2, $tweetContentClass, $showDate, $dateFormat, $tweetDateClass, $showIcon, $tweetIcon, $tweetIconClass) { $this->twitterAccount = $account; $this->nbToDisplay = $nb; $this->tweetClass1 = $tweetClass1; $this->tweetClass2 = $tweetClass2; $this->tweetContentClass = $tweetContentClass; $this->showDate = $showDate; $this->dateFormat = $dateFormat; $this->tweetDateClass = $tweetDateClass; $this->showIcon = $showIcon; $this->tweetIcon = $tweetIcon; $this->tweetIconClass = $tweetIconClass; if(strlen($account) == 0) { // account not specified showError(1); return false; } else { $this->rss = "http://twitter.com/statuses/user_timeline/" . $this->twitterAccount . ".rss"; $flux = @simplexml_load_file($this->rss); if(!$flux) { // account error, rss not available showError(2); return false; } else { echo "\n"; $i = 0; foreach ($flux->channel->item as $item) { if($i < $this->nbToDisplay) { // Description: Remove the account name $tweetContent = str_replace($this->twitterAccount.": ", "", $item->description); // LINKS are now clickable $tweetContent = preg_replace('#(http|https)(://[A-Za-z0-9-_àäâéèëêïîôöùüûç]+)(\.[a-z]{2,5})([A-Za-z0-9_/\+\?\.-]*)#s', '$1$2$3$4', $tweetContent); // #LINKS are now clickable $tweetContent = preg_replace('/#([A-Za-z0-9_-àäâéèëêïîôöùüûç]+)/s', ' #$1', $tweetContent); // @LINKS are now clickable $tweetContent = preg_replace('#@([A-Za-z0-9_-àäâéèëêïîôöùüûç]+)#s', ' @$1', $tweetContent); $D = date_parse_from_format("D, d M Y H:i:s +0000", $item->pubDate); $tweetDate = date($this->dateFormat, mktime($D['hour'], $D['minute'], 0, $D['month'], $D['day'], $D['year'])); $this->displayTweet($tweetContent, $tweetDate, $i); $i++; } else { break; } } } } } function displayTweet($tweetContent, $tweetDate, $i) { if($i % 2) $class = $this->tweetClass1; else $class = $this->tweetClass2; echo "
\n"; if($this->showIcon == true) { echo "
tweetIconClass\">tweetIcon\" alt=\"\" />
\n"; } if($this->showDate == true) { echo "
tweetDateClass\">$tweetDate
\n"; } echo "
tweetContentClass\">$tweetContent
\n"; echo "
\n"; } function showError($errorId) { // @params: (int) $erroId // - 1: Account error OR rss unavailable // - 2: Params missing: account $msg = ''; switch($errorId) { case 1: $msg = "Veuillez spécifier un compte twitter valide SVP!"; break; case 2: $msg = "Le compte rss ."\" target=\"_blank\">" . $this->twitterAccount . " n'est pas joignable. Veuillez spécifier un compte twitter valide SVP!"; break; default: break; } echo "

" . $msg . "

\n"; } function showDebugInfo() { echo "\n"; } } function smarty_cms_function_tweets($params, &$smarty) { global $gCms; $config =& $gCms->GetConfig(); $debug = isset($params['debug']) ? $params['debug']:false; $account = isset($params['account']) ? $params['account']:''; $nb = isset($params['nbToDisplay']) ? $params['nbToDisplay']:10; $tweetClass1 = isset($params['tweetClass1']) ? $params['tweetClass1']:'defaultTweetClass1'; $tweetClass2 = isset($params['tweetClass2']) ? $params['tweetClass2']:'defaultTweetClass2'; $tweetContentClass = isset($params['tweetContentClass']) ? $params['tweetContentClass']:'defaultTweetContentClass'; $showDate = isset($params['showDate']) ? $params['showDate']:false; $dateFormat = isset($params['dateFormat']) ? $params['dateFormat']:'\L\e d/m/Y - H:i'; $tweetDateClass = isset($params['tweetDateClass']) ? $params['tweetDateClass']:'defaultTweetDateClass'; $showIcon = isset($params['showIcon']) ? $params['showIcon']:false; $tweetIcon = isset($params['tweetIcon']) ? $params['tweetIcon']:''; $tweetIconClass = isset($params['tweetIconClass']) ? $params['tweetIconClass']:'defaultTweetIconClass'; $tweets = new tweets($account, $nb, $tweetClass1, $tweetClass2, $tweetContentClass, $showDate, $dateFormat, $tweetDateClass, $showIcon, $tweetIcon, $tweetIconClass); if($debug != false) { $tweets->showDebuginfo(); } } function smarty_cms_help_function_tweets() { ?>

Que fait cette balise ?

Cette balise permet d'afficher les tweets d'un compte Twitter public.

Comment l'utiliser ?

C'est très simple, ajoutez la balise Smarty {tweets account=myTwitterAccount} à votre page ou gabarit.

Paramètres:

account=myTwitterAccount
Le nom de votre compte twitter.

(optionnel) nbToDisplay=10
Le nombre de tweets à afficher (par ordre décroissant de date de publication). Par défaut: 10 tweets.

(optionnel) debug=false
Affiche des informations de débugage. Valeur: true/false. Par défaut: false.

(optionnel) tweetClass1=defaultTweetClass1
Classe CSS pour l'affichage des tweets 'impairs'. Une classe par défaut est défini.

(optionnel) tweetClass2=defaultTweetClass2
Classe CSS pour l'affichage des tweets 'pairs'. Une classe par défaut est défini.

(optionnel) tweetContentClass=defaultTweetContentClass
Classe CSS pour l'affichage du contenu des tweets. Une classe par défaut est défini.

(optionnel) showDate=false
Affiche la date des tweets. valeur: true/false. Par défaut: false

(optionnel) dateFormat='\L\e d/m/Y - H:i'
Format d'affichage de la date utilisé par la fonction php date().

(optionnel) tweetDateClass=defaultTweetDateClass
Classe CSS pour l'affichage de la date des tweets. Une classe par défaut est défini.

(optionnel) showIcon=false
Affiche une icône pour chaque tweet. Valeur: true/false. Par défaut: false.

(optionnel) tweetIcon='URL/de/l_icone'
Si showIcon=true, icone qui s'affichera pour chaque tweet.

(optionnel) tweetIconClass='defaultTweetIconClass'
Class CSS pour l'affichage de l'icône. Une classe par défaut est définie.

Organisation des blocs pour l'affichage:
Voici comment sont organisés les différents blocs pour chaque tweets.

<div class="tweetClass1/2">
   <div class="tweetIconClass">tweetIcon</div>
   <div class="tweetDateClass">tweetDate</div>
   <div class="tweetContentClass">tweetContent</div>
</div>

Auteur: Alexandre COURTOIS <alexandre.courtois@gmail.com>
Version: 1.0 - 11/01/2011

\n"; } ?>