source: spip-zone/_plugins_/microblog/inc/microblog.php @ 39866

Last change on this file since 39866 was 39866, checked in by fil@…, 10 years ago

suite a l'abandon de l'API simple, proposer supertweet, faute de OAuth

File size: 2.7 KB
Line 
1<?php
2/*
3 * Plugin spip|microblog
4 * (c) Fil 2009-2010
5 *
6 * envoyer des micromessages depuis SPIP vers twitter ou laconica
7 * distribue sous licence GNU/LGPL
8 *
9 */
10
11if (!defined("_ECRIRE_INC_VERSION")) return;
12
13
14/*
15 * Envoyer un microblog sur une des plateformes disponibles
16 * $status : ce qu'on veut ecrire
17 * $user, $pass : identifiants
18 * $service : quel service
19 * $api : si on est vraiment desespere :-)
20 */
21function microblog($status, $user=null, $pass=null, $service=null, $api=null){
22        $cfg = @unserialize($GLOBALS['meta']['microblog']);
23
24        // Certains define prennent le pas sur le reste (mode TEST)
25        if (defined('_TEST_MICROBLOG_SERVICE')) {
26                if (_TEST_MICROBLOG_SERVICE == '') {
27                        spip_log('microblog desactive par _TEST_MICROBLOG_SERVICE');
28                        return false;
29                }
30                else
31                        $service = _TEST_MICROBLOG_SERVICE;
32        }
33        if (defined('_TEST_MICROBLOG_USER')) $user = _TEST_MICROBLOG_USER;
34        if (defined('_TEST_MICROBLOG_PASS')) $pass = _TEST_MICROBLOG_PASS;
35
36
37        // services connus
38        $apis = array(
39                'spipo' => 'http://%user%:%pass%@spip.org/api/statuses/update.xml',
40                'identica' => 'http://%user%:%pass%@identi.ca/api/statuses/update.xml',
41                'twitter' => 'http://%user%:%pass%@twitter.com/statuses/update.xml',
42                'supertweet' => 'http://%user%:%pass%@api.supertweet.net/statuses/update.xml'
43        );
44
45        // Choix de l'API
46        if (!isset($api)) {
47                if (!isset($service))
48                        $service = $cfg['service'];
49                if (!isset($apis[$service]))
50                        return false;
51                $api = $apis[$service];
52        }
53
54        if (!isset($user))
55                $user = $cfg['user'];
56        if (!isset($pass))
57                $pass = $cfg['pass'];
58
59        // Inserer les credits d'authentification
60        $api = str_replace(array('%user%','%pass%'), array(urlencode($user),urlencode($pass)), $api);
61
62        // Preparer le message (utf8 < 140 caracteres)
63        include_spip('inc/charsets');
64        $status = trim(preg_replace(',\s+,', ' ', $status));
65        $status = unicode2charset(charset2unicode($status), 'utf-8');
66        $status = substr($status, 0, 140);
67
68        if (!strlen($status))
69                return false;
70
71        $datas = array('status' => $status);
72
73        // anti-begaiment
74        $begaie = md5("$service $user $status");
75        if ($begaie == $GLOBALS['meta']['microblog_begaie']) {
76                spip_log("begaie $service $user $status", 'microblog');
77                return false;
78        } else
79                ecrire_meta('microblog_begaie', $begaie);
80
81        // 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');
85        return $ret;
86}
87
88
89function microblog_affiche_droite($flux){
90        if (autoriser('microbloguer','status')
91        AND isset($GLOBALS['meta']['microblog'])
92        AND is_array($cfg = @unserialize($GLOBALS['meta']['microblog']))
93        AND $cfg['invite']) {
94                $flux['data'] .= recuperer_fond('modeles/microblog_update',array());
95        }
96        return $flux;
97}
Note: See TracBrowser for help on using the repository browser.