source: spip-zone/_plugins_/twidget/action/twidget.php @ 39841

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

l'url de search est devenue search.twitter.com, reparons le proxy
+ passage a la version 2.2.2 du js, avec les remplacements en commentaire pour la prochaine version

File size: 1.8 KB
Line 
1<?php
2/*
3 * Plugin xxx
4 * (c) 2009 xxx
5 * Distribue sous licence GPL
6 *
7 */
8
9function action_twidget_dist(){
10
11        $url = $_SERVER['QUERY_STRING'];
12        $url = preg_replace(",^action=twidget&w=,","",$url);
13        $sd = "";
14        if (strncmp($url,'search',6)==0)
15                $sd = "search.";
16        $url = "http://{$sd}twitter.com/".$url;
17
18        echo twidget_get_cached_url($url);
19        exit;
20}
21
22function twidget_get_cached_url($url,$force=true) {
23        @define('_TWIDGET_CACHE',60);
24
25        $hash = md5($url);
26        $dir = sous_repertoire(_DIR_CACHE,"twidget");
27        if (lire_fichier($f = "$dir/p$hash.txt", $c)
28          AND $c = unserialize($c)
29                AND time()-$c['time']<_TWIDGET_CACHE)
30                return $c['content'];
31
32        // si job_queue, programmer la maj et renvoyer le contenu existant
33        if (isset($c['content']) AND !$force AND function_exists('job_queue_add')) {
34         job_queue_add ('twidget_get_cached_url', 'Twitter Widget proxy', array($url,true), 'action/widget',true);
35         return $c['content'];
36        }
37
38        // mettre a jour le cache
39
40        // recuperer le json
41        include_spip('inc/distant');
42        $contenu = recuperer_page($url);
43
44        // intercepter, cacher et relocaliser les avatars
45        preg_match_all(',"profile_image_url":"([^"]*)",Uims',$contenu,$regs,PREG_SET_ORDER);
46        foreach($regs as $reg){
47                $contenu = str_replace($reg[1],twidget_get_cached_avatar($reg[1]),$contenu);
48        }
49
50        ecrire_fichier($f, serialize(array('time'=>time(),'content'=>$contenu)));
51        return $contenu;
52
53}
54
55function twidget_get_cached_avatar($img_url){
56        @define('_TWIDGET_CACHE_AVATAR',24*3600);
57        $parts = parse_url($img_url);
58
59        $hash = md5($parts['path']);
60        $ext = substr($parts['path'], strrpos($parts['path'], "."));
61
62        $dir = sous_repertoire(_DIR_VAR,"twidget");
63        $dir = sous_repertoire($dir,substr($hash,0,2));
64        $f = $dir.$hash.$ext;
65
66        if (file_exists($f) AND time()-filemtime($f)<_TWIDGET_CACHE_AVATAR)
67                return $f;
68
69        recuperer_page($img_url,$f);
70        return $f;
71}
72?>
Note: See TracBrowser for help on using the repository browser.