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 $this->showError(1); return false; } else { $this->rss = "https://twitter.com/statuses/user_timeline/" . $this->twitterAccount . ".rss"; $flux = @simplexml_load_file($this->rss); if(!$flux) { // account error, rss not available $this->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); if(function_exists('date_parse_from_format')) { // php 5.3+ $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'])); } else { // backports for php < 5.3 $D = $this->date_parse($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 date_parse($date) { // get rid of 'D,' and ':s +0000': $date = substr($date,5,-9); $retDate['day'] = substr($date,0,2); // convert 'M' in 'm' switch(strtolower(substr($date,3,3))) { case 'jan': $retDate['month'] = 1; break; case 'feb': $retDate['month'] = 2; break; case 'mar': $retDate['month'] = 3; break; case 'apr': $retDate['month'] = 4; break; case 'may': $retDate['month'] = 5; break; case 'jun': $retDate['month'] = 6; break; case 'jul': $retDate['month'] = 7; break; case 'aug': $retDate['month'] = 8; break; case 'sep': $retDate['month'] = 9; break; case 'oct': $retDate['month'] = 10; break; case 'nov': $retDate['month'] = 11; break; case 'dec': $retDate['month'] = 12; break; } // year $retDate['year'] = substr($date,7,4); // Hour min $retDate['hour'] = substr($date,12,2); $retDate['minute'] = substr($date,15,2); return $retDate; } function displayTweet($tweetContent, $tweetDate, $i) { if($i % 2) $class = $this->tweetClass1; else $class = $this->tweetClass2; echo "
" . $msg . "
\n"; } function showDebugInfo() { echo "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>