Changeset 39879 in spip-zone


Ignore:
Timestamp:
Aug 16, 2010, 11:48:06 PM (9 years ago)
Author:
kent1@…
Message:

Retour de twitter ... Pas tout à fait fini mais déjà utilisable... cf : http://twitter.com/mediaspip

Tout debug est le bienvenue....

Faites vos remarques sur SPIP-zone ou sur l'article de contrib (la mise à jour de la documentation viendra sous peu)

Location:
_plugins_/microblog
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/microblog/fonds/cfg_microblog.html

    r39142 r39879  
    11[(#REM) titre=Microblog]
    22[(#REM) autoriser=configurer]
    3 [(#REM) presentation= ]
     3[(#REM) titre_boite=Microblog]
    44[(#REM) icone=images/microblog-24.png]
     5[(#REM) logo=images/microblog.png]
    56<!-- descriptif=
    67<img src='#CHEMIN{images/microblog-64.png}' alt='' style="float: #LANG_RIGHT;" />
  • _plugins_/microblog/formulaires/configurer_microblog.html

    r39866 r39879  
    2121                                                <li>
    2222                                                        <label>Twitter</label>
    23                                                         Attention Twitter n'autorise plus les appels sur l'ancienne API&#160;; utiliser <a href="http://www.supertweet.net/">SuperTweet</a> &#224; la place&#160;!
     23                                                        <a href="https://twitter.com/signup">https://twitter.com/signup</a>, twitter.com
    2424                                                </li>
    2525                                        </ul>
    2626
    27                                         <ul>
    28                                                 <li>
     27                                        <ul class="compte">
     28                                                <li class="editer_service">
    2929                                                        <label for="service"><:microblog:service:></label>
    3030                                                        <p class="explication"><:microblog:compte_tests:> :
    31                                                         <br /><s>twitter | spipotest spipotest1</s>
    3231                                                        <br />supertweet | spipotest spipotest2
    3332                                                        </p>
     
    4241                                                                <option value="" disabled="disabled">- twitter -</option>
    4342                                                                <option value="twitter"[
    44                                                                         (#ENV{service}|=={twitter}|?{selected="selected"})] disabled="disabled">Twitter.com (obsol&#232;te)</option>
     43                                                                        (#ENV{service}|=={twitter}|?{selected="selected"})]>Twitter.com</option>
    4544                                                                <option value="supertweet"[
    4645                                                                        (#ENV{service}|=={supertweet}|?{selected="selected"})]>Supertweet.net</option>
    4746                                                        </select>
    4847                                                </li>
    49                                                 <li>
    50                                                         <label for="user">Username</label>
     48                                                <li class="editer_user">
     49                                                        <label for="user"><:microblog:label_username:></label>
    5150                                                        <input type="text" name="user" value="[(#ENV{user})]" id="user" class="text" />
    5251                                                </li>
    53                                                 <li>
    54                                                         <label for="password"><:entree_mot_passe:></label>
     52                                                <li class="editer_pass">
     53                                                        <label for="pass"><:entree_mot_passe:></label>
    5554                                                        <input type="password" name="pass" value="[(#ENV{pass})]" id="pass" class="text" />
    5655                                                </li>
     56                                                <li class="editer_twitter_consumer_key twitter_conf">
     57                                                        <label for="twitter_consumer_key"><:microblog:label_twitter_consumer_key:></label>
     58                                                        <p class="explication"><:microblog:explication_twitter_api_oauth:></p>
     59                                                        <input type="text" name="twitter_consumer_key" value="[(#ENV{twitter_consumer_key})]" id="twitter_consumer_key" class="text" />
     60                                                </li>
     61                                                <li class="editer_twitter_consumer_secret twitter_conf">
     62                                                        <label for="twitter_consumer_secret"><:microblog:label_twitter_consumer_secret:></label>
     63                                                        <input type="password" name="twitter_consumer_secret" value="[(#ENV{twitter_consumer_secret})]" id="twitter_consumer_secret" class="text" />
     64                                                </li>
     65                                                [(#ENV{service}|=={twitter}|oui)
     66                                                [(#ENV{twitter_consumer_key}|strlen|et{#ENV{twitter_consumer_key}|strlen}|oui)
     67                                                <li class="associer_twitter_compte twitter_conf">
     68                                                        [(#SET{infos_compte,[(#VAL{account/verify_credentials}|microblog_twitter_api)]})]
     69                                                        [(#SET{name,#GET{infos_compte}|table_valeur{screen_name}})]
     70                                                        [(#SET{url,#VAL{http://twitter.com/}|concat{#GET{name}}})]
     71                                                        [(#GET{name}|oui)
     72                                                                <a href='[(#URL_ACTION_AUTEUR{twitter_oauth_request,'-1',#SELF})]'><:microblog:label_dissocier_compte_twitter{nom=#GET{name},url=#GET{url}}:></a>       
     73                                                        ]
     74                                                        [(#GET{name}|non)
     75                                                                <a href='[(#URL_ACTION_AUTEUR{twitter_oauth_request,'',#SELF})]'><:microblog:label_associer_compte_twitter:></a>       
     76                                                        ]
     77                                                </li>]]
    5778                                        </ul>
     79                                        <script type="text/javascript">
     80                                                jQuery(document).ready(function(){
     81                                                        [(#ENV{service}|=={twitter}|oui)
     82                                                                jQuery('ul.compte li').not('.twitter_conf').not('.editer_service').hide();
     83                                                        ]
     84                                                        [(#ENV{service}|=={twitter}|non)
     85                                                                jQuery('ul.compte li.twitter_conf').hide();
     86                                                        ]
     87                                                        jQuery('.editer_service select').change(function(){
     88                                                                if(jQuery(this).val() == 'twitter'){
     89                                                                        jQuery('ul.compte li.twitter_conf').slideDown('slow',function(){
     90                                                                                jQuery('ul.compte li').not('.twitter_conf').not('.editer_service').slideUp();
     91                                                                        });
     92                                                                }else{
     93                                                                        jQuery('ul.compte li').not('.twitter_conf').not('.editer_service').slideDown('slow',function(){
     94                                                                                jQuery('ul.compte li.twitter_conf').slideUp();
     95                                                                        });
     96                                                                }
     97                                                        });
     98                                                });
     99                                        </script>
    58100                                </fieldset>
    59101                        </li>
  • _plugins_/microblog/formulaires/microbloguer.html

    r39687 r39879  
    22
    33  formulaire microbloguer
    4   (c) 2009 Cerdic
     4  (c) 2009-2010 Cerdic
    55  Distribue sous licence GPL
    66
  • _plugins_/microblog/formulaires/microbloguer.php

    r39142 r39879  
    11<?php
    2 /*
     2/**
    33 * Plugin spip|microblog
    44 * (c) Fil 2009-2010
    55 *
    6  * envoyer des micromessages depuis SPIP vers twitter ou laconica
    7  * distribue sous licence GNU/LGPL
     6 * Envoyer des micromessages depuis SPIP vers twitter ou laconica
     7 * Distribue sous licence GNU/LGPL
    88 *
    99 */
    1010
    11 
    1211if (!defined("_ECRIRE_INC_VERSION")) return;
    1312
    14 // chargement des valeurs par defaut des champs du formulaire
     13/**
     14 * Fonction de chargement des valeurs par defaut des champs du formulaire
     15 */
    1516function formulaires_microbloguer_charger_dist(){
    1617        return
     
    2021}
    2122
    22 // chargement des valeurs par defaut des champs du formulaire
     23/**
     24 * Fonction de vérification du formulaire avant traitement
     25 *
     26 * Vérifie la présence d'un statut depuis le champs adéquat
     27 * Vérifie que la longueur du statut n'excède pas la longueur maximale
     28 */
    2329function formulaires_microbloguer_verifier_dist(){
    2430        $erreurs = array();
     
    3440}
    3541
    36 
     42/**
     43 * Fonction de traitement du formulaire
     44 * Envoie la contribution au service configuré
     45 *
     46 * S'il y a une erreur en retour (false),
     47 * on affiche un message explicitant qu'il y a une erreur dans la configuration
     48 */
    3749function formulaires_microbloguer_traiter_dist(){
    3850        $res = array();
    3951        if ($status = _request('status')){
    4052                include_spip('inc/microblog');
    41                 microblog($status);
     53                $retour = microblog($status);
     54                spip_log($retour,'microblog');
    4255                set_request('status','');
    43                 $res = array('message_ok'=>$status,'editable'=>true);
     56                if($retour){
     57                        $res = array('message_ok'=>$status,'editable'=>true);
     58                }else{
     59                        $res = array('message_erreur'=>_T('microblog:erreur_verifier_configuration'),'editable'=>true);
     60                }
    4461        }
    4562        else
  • _plugins_/microblog/inc/microblog.php

    r39866 r39879  
    11<?php
    2 /*
     2/**
    33 * Plugin spip|microblog
    44 * (c) Fil 2009-2010
     
    1212
    1313
    14 /*
     14/**
    1515 * Envoyer un microblog sur une des plateformes disponibles
     16 *
    1617 * $status : ce qu'on veut ecrire
    1718 * $user, $pass : identifiants
     
    3940                'spipo' => 'http://%user%:%pass%@spip.org/api/statuses/update.xml',
    4041                'identica' => 'http://%user%:%pass%@identi.ca/api/statuses/update.xml',
    41                 'twitter' => 'http://%user%:%pass%@twitter.com/statuses/update.xml',
     42                'twitter' => 'http://twitter.com/statuses/update.xml',
    4243                'supertweet' => 'http://%user%:%pass%@api.supertweet.net/statuses/update.xml'
    4344        );
     
    5152                $api = $apis[$service];
    5253        }
     54       
     55        /**
     56         * Si l'API utilisée est twitter, on force le passage en oAuth
     57         */
     58        if($service == 'twitter'){
     59                if(
     60                        isset($cfg['twitter_consumer_key'])
     61                                && isset($cfg['twitter_consumer_secret'])
     62                                && isset($cfg['twitter_token'])
     63                                && isset($cfg['twitter_token_secret'])){
     64                        // Cas de twitter et oAuth
     65                        include_spip('inc/twitteroauth');
     66                        $consumer_key = $cfg['twitter_consumer_key'];
     67                        $consumer_secret = $cfg['twitter_consumer_secret'];
    5368
    54         if (!isset($user))
    55                 $user = $cfg['user'];
    56         if (!isset($pass))
    57                 $pass = $cfg['pass'];
     69                        $connection = new TwitterOAuth($consumer_key, $consumer_secret, $cfg['twitter_token'], $cfg['twitter_token_secret']);
     70                       
     71                        if($connection){
     72                                $oAuth = true;
     73                        }
     74                        else{
     75                                spip_log('Erreur de connexion à twitter, verifier la configuration','microblog');
     76                                return false;
     77                        }
     78                }
     79                else{
     80                        spip_log('Erreur de connexion à twitter, verifier la configuration','microblog');
     81                        return false;
     82                }
     83        }else{
     84                if (!isset($user))
     85                        $user = $cfg['user'];
     86                if (!isset($pass))
     87                        $pass = $cfg['pass'];
    5888
    59         // Inserer les credits d'authentification
    60         $api = str_replace(array('%user%','%pass%'), array(urlencode($user),urlencode($pass)), $api);
    61 
     89                // Inserer les credits d'authentification
     90                $api = str_replace(array('%user%','%pass%'), array(urlencode($user),urlencode($pass)), $api);
     91        }
     92       
    6293        // Preparer le message (utf8 < 140 caracteres)
    6394        include_spip('inc/charsets');
     
    80111
    81112        // ping et renvoyer la reponse xml
    82         include_spip('inc/distant');
    83         $ret = recuperer_page($api, false, false, null, $datas);
    84         spip_log("$service $user $status ".strlen($ret), 'microblog');
     113        if($oAuth){
     114                $ret = 'ok';
     115                $api = 'statuses/update';
     116                $connection->post($api,$datas);
     117                if (200 != $connection->http_code){
     118                        spip_log('Erreur '.$connection->http_code,'microblog');
     119                        return false;
     120                }
     121        }else{
     122                include_spip('inc/distant');
     123                $ret = recuperer_page($api, false, false, null, $datas);
     124                spip_log("$service $user $status ".strlen($ret), 'microblog');
     125        }
     126       
    85127        return $ret;
    86128}
  • _plugins_/microblog/lang/microblog_fr.php

    r39578 r39879  
    44
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    6 
    7   // A
    8   'article' => 'article',
     6        // A
     7        'article' => 'article',
    98
    109        // B
    1110        'bouton_envoyer' => 'Envoyer',
    1211
    13   // C
    14   'choisir' => 'choisir',
    15   'compte_tests' => 'Compte de tests',
    16   'compte_defaut' => 'Compte par d&#233;faut pour la fonction',
    17   'creer_compte_services' => 'Vous pouvez cr&#233;er un compte pour votre site SPIP sur l\'un des services suivants',
     12        // C
     13        'choisir' => 'choisir',
     14        'compte_tests' => 'Compte de tests',
     15        'compte_defaut' => 'Compte par d&#233;faut pour la fonction',
     16        'creer_compte_services' => 'Vous pouvez cr&#233;er un compte pour votre site SPIP sur l\'un des services suivants',
    1817
    19   // E
    20   'elements_signaler' => 'Elements &#224; signaler sur le flux public ci-dessus',
     18        // E
     19        'elements_signaler' => 'Elements &#224; signaler sur le flux public ci-dessus',
     20        'erreur_verifier_configuration' => 'Il y a une erreur, veuillez v&eacute;rifiez la configuration.',
     21        'explication_twitter_api_oauth' => 'L\'API oAuth de twitter n&eacute;cessite la cr&eacute;ation d\'une application <a href="http://dev.twitter.com/apps/new">sur leur site (http://dev.twitter.com/apps/new)</a>. Cr&eacute;ez cette application, entrez les donn&eacute;es fournies, enregistrez la configuration puis un lien plus bas permettra d\'associer un compte twitter &agrave; ce site.',
    2122
    2223        // I
     
    2526        'invite_statut_explications' => 'Le plugin peut afficher dans l\'espace priv&#233; une invite de statut. Voulez-vous afficher une invite de statut pour les r&#233;dacteurs autoris&#233;s (par d&#233;faut&nbsp;: les administrateurs du site) ?',
    2627        'invite_afficher' => 'Afficher l\'invite de statut',
    27        
    2828
    29   // L
     29        // L
     30        'label_associer_compte_twitter' => 'Associer votre compte twitter &agrave; ce site',
     31        'label_dissocier_compte_twitter' => 'Dissocier le compte twitter actuellement utilis&eacute; (<a href="@url@">@nom@</a>)',
    3032        'label_status' => 'Quoi de neuf ?',
     33        'label_twitter_consumer_key' => 'Cl&eacute; cliente (consumer key) de l\'API Twitter',
     34        'label_twitter_consumer_secret' => 'Cl&eacute; secr&ecirc;te (consumer secret) de l\'API Twitter',
     35        'label_username' => 'Nom d\'utilisateur',
    3136
    3237        // P
    33   'presentation_spipo' => 'le site de la communaut&#233; SPIP',
    34   'presentation_laconica' => 'le site public du logiciel laconi.ca',
     38        'presentation_spipo' => 'le site de la communaut&#233; SPIP',
     39        'presentation_laconica' => 'le site public du logiciel laconi.ca',
    3540
    36   // N
    37   'notifications' => 'Notifications',
    38   'notifications_publiques' => 'Notifications publiques',
     41        // N
     42        'notifications' => 'Notifications',
     43        'notifications_publiques' => 'Notifications publiques',
    3944
    4045        // P
    41   'poster_forums' => 'Forums post&#233;s',
    42   'proposer_articles' => 'Articles propos&#233;s',
    43   'propose' => 'propos&#233;',
     46        'poster_forums' => 'Forums post&#233;s',
     47        'proposer_articles' => 'Articles propos&#233;s',
     48        'propose' => 'propos&#233;',
    4449        'publier_articles' => 'Articles publi&#233;s',
    45   'publie' => 'publi&#233;',
     50        'publie' => 'publi&#233;',
    4651        'publier_articles_futurs_immediatement'=>'Annoncer les articles quelle que soit leur date de publication',
    4752        'publier_articles_futurs_visibles'=>'Ne pas annoncer les articles avant la date de publication fix&eacute;e',
     
    5055
    5156        // S
    52   'service' => 'Service'
     57        'service' => 'Service'
    5358
    5459);
  • _plugins_/microblog/microblog_fonctions.php

    r39867 r39879  
    11<?php
    2 /*
     2/**
    33 * Plugin spip|microblog
    44 * (c) Fil 2009-2010
     
    2121}
    2222
     23/**
     24 * Fonction d'utilisation simple de l'API twitter oAuth
     25 *
     26 * @param $command string : la commande à passer
     27 * @param $type string : le type de commande (get/post/delete)
     28 * @param $params array : les paramètres dans un array de la commande
     29 * @param $retour string : le retour souhaité par défaut cela renverra la chaine
     30 * ou l'array retourné par la commande. Sinon on peut utiliser les valeurs http_code,http_info,url
     31 */
     32function microblog_twitter_api($command,$type='get',$params=array(),$retour=''){
     33        $cfg = @unserialize($GLOBALS['meta']['microblog']);
     34        include_spip('inc/twitteroauth');
     35       
     36        $connection = new TwitterOAuth($cfg['twitter_consumer_key'], $cfg['twitter_consumer_secret'], $cfg['twitter_token'], $cfg['twitter_token_secret']);
     37       
     38        switch($type){
     39                case 'get':
     40                        $content = $connection->get($command,$params);
     41                        break;
     42                case 'post':
     43                        $content = $connection->post($command,$params);
     44                        break;
     45                case 'delete':
     46                        $content = $connection->delete($command,$params);
     47                        break;
     48                default:
     49                        $content = $connection->get($command,$params);
     50        }
     51
     52        switch($retour){
     53                case 'http_code':
     54                        return $connection->http_code;
     55                case 'http_info':
     56                        return $connection->http_info;
     57                case 'url':
     58                        return $connection->url;
     59                default:
     60                        if (!is_string($content)) {
     61                                foreach($content as $key => $val){
     62                                        $contents[$key] = $val;
     63                                }
     64                                return $contents;
     65                        }
     66                        else{
     67                                return $content;
     68                        }
     69                       
     70        }
     71}
    2372
    2473?>
  • _plugins_/microblog/plugin.xml

    r39866 r39879  
    33        <auteur>Fil &#169; 2009-2010</auteur>
    44        <licence>GNU/LGPL</licence>
    5         <version>0.4</version>
     5        <version>0.5</version>
    66        <etat>stable</etat>
    77        <description>
    8         Envoyer des micromessages vers les plateformes laconica, twitter (via supertweet.net), spip.org etc. Fournit une fonction <code>microblog($statut, $user, $pass, $service);</code>.
     8        Envoyer des micromessages vers les plateformes laconica, twitter (via supertweet.net), twitter (via l'API oAuth), spip.org etc. Fournit une fonction <code>microblog($statut, $user, $pass, $service);</code>.
     9       
     10        Utilise la librairie [twitteroauth->http://github.com/abraham/twitteroauth] d'Abraham Williams pour l'API oAuth de twitter.
    911        </description>
    1012        <lien>http://www.spip-contrib.net/Microblog</lien>
Note: See TracChangeset for help on using the changeset viewer.