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

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

Mise a jour de microblog :

  • le formulaire de config fonctionne avec bonux ou cfg
  • la page configurer_microblog est directement liee depuis la page plugin (meme sans cfg)
  • une option de config pour utiliser les shorturls sur les articles
  • une fonction generer_url_microblog qui ressort les shorturls sur les articles quand c'est possible et demander, et sinon fait appel a generer_url_entite
  • un cartouche de commentaire homogene avec mise a jour de la date
  • version
File size: 2.6 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        );
43
44        // Choix de l'API
45        if (!isset($api)) {
46                if (!isset($service))
47                        $service = $cfg['service'];
48                if (!isset($apis[$service]))
49                        return false;
50                $api = $apis[$service];
51        }
52
53        if (!isset($user))
54                $user = $cfg['user'];
55        if (!isset($pass))
56                $pass = $cfg['pass'];
57
58        // Inserer les credits d'authentification
59        $api = str_replace(array('%user%','%pass%'), array(urlencode($user),urlencode($pass)), $api);
60
61        // Preparer le message (utf8 < 140 caracteres)
62        include_spip('inc/charsets');
63        $status = trim(preg_replace(',\s+,', ' ', $status));
64        $status = unicode2charset(charset2unicode($status), 'utf-8');
65        $status = substr($status, 0, 140);
66
67        if (!strlen($status))
68                return false;
69
70        $datas = array('status' => $status);
71
72        // anti-begaiment
73        $begaie = md5("$service $user $status");
74        if ($begaie == $GLOBALS['meta']['microblog_begaie']) {
75                spip_log("begaie $service $user $status", 'microblog');
76                return false;
77        } else
78                ecrire_meta('microblog_begaie', $begaie);
79
80        // ping et renvoyer la reponse xml
81        include_spip('inc/distant');
82        $ret = recuperer_page($api, false, false, null, $datas);
83        spip_log("$service $user $status ".strlen($ret), 'microblog');
84        return $ret;
85}
86
87
88function microblog_affiche_droite($flux){
89        if (autoriser('microbloguer','status')
90        AND isset($GLOBALS['meta']['microblog'])
91        AND is_array($cfg = @unserialize($GLOBALS['meta']['microblog']))
92        AND $cfg['invite']) {
93                $flux['data'] .= recuperer_fond('modeles/microblog_update',array());
94        }
95        return $flux;
96}
Note: See TracBrowser for help on using the repository browser.