source: spip-zone/_plugins_/_dev_/spicasa/spicasa_options.php @ 26603

Last change on this file since 26603 was 26603, checked in by gaitan@…, 11 years ago

improved albums navigation. It's working such as well

File size: 6.4 KB
Line 
1<?php
2
3$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
4define('_DIR_PLUGIN_SPICASA',(_DIR_PLUGINS.end($p))."/");
5
6ini_set('include_path', 
7                                ini_get('include_path') . PATH_SEPARATOR . _DIR_PLUGIN_SPICASA.'LightweightPicasaAPI');
8
9require_once 'Picasa.php';
10
11include_spip('inc/distant'); // pour 'copie_locale'
12
13
14function spicasa_resultados($query, $id_article, $debut=1, $max_results=250, $items_page=50){
15        /*Return images for a general query*/
16   
17
18                $pic = new Picasa();
19                $query = str_replace(" ", "+", $query);
20                $images = $pic->getImages(null, $debut+$items_page, $debut, $query, null, "public", null, 800);
21
22                if($images->getTotalResults() < $max_results) $max_results=$images->getTotalResults();
23               
24                foreach($images->getImages() as $img){
25                       
26                                       
27                                $id_image = $img->getIdnum();
28                                $id_album = $img->getAlbumid(); 
29                                $author = $img->getAuthor()->getUser();
30                               
31                                $titre = $img->getTitle();
32                                $thumb = $img->getMediumThumb();
33                                       
34                        $ret .= spicasa_thumb($id_image,$id_album, $thumb, $titre, $author,"");
35                }
36       
37        //pagination
38        for ($i = 1; $i <= $max_results; $i = $i + $items_page) {
39                if ($i != $debut) $pagination .= " <a href='#' onclick='spicasa_buscar($i);return false;'>$i</a> ";
40                else $pagination .= " <strong>$i</strong> ";
41        }
42               
43                $pagination = "<div style='background-color: #eeeeee; font-size: 0.7em; text-align: right; padding: 5px; padding-right: 10px;'>$pagination</div>";
44       
45       
46        if ($ret) {
47                $ret = "$pagination<div style='padding: 10px; padding-right: 0px; font-size: 0.8em;'>$ret</div><div style='clear: left;'></div>$pagination";
48        }
49       
50       
51        return $ret;
52 
53 
54   
55}
56
57
58function spicasa_add_photo($id_image, $id_article, $id_album, $user){
59    /* This function download the given image and attach it to the articule in course.*/
60   
61        $pic = new Picasa();
62        $image = $pic->getImageById($user, $id_album, $id_image, null, 800);
63        foreach($image->getContentUrlMap() as $value) $url = $value; //just one
64
65        $type = $image->getImageType();
66               
67        switch($type){
68                case "image/jpeg": 
69                        $extension = "jpg";     
70                        break;
71                case "image/gif": 
72                                        $extension = "gif";     
73                                        break;
74                case "image/png":
75                        $extension = "png";     
76                        break;         
77        }
78
79        $titre = $image->getTitle();
80        $descriptif = $image->getDescription()."(c)".$image->getAuthor()->getName() ;
81        $largeur = $image->getWidth();
82        $hauteur = $image->getHeight();
83   
84        $img_local = copie_locale($url);
85       
86        $taille = filesize($img_local);
87        $tam = getimagesize($img_local);
88        $img_local = ereg_replace("^"._DIR_IMG, "", $img_local);
89       
90        include_spip("base/abstract_sql");
91        $id_document = sql_insertq (
92                "spip_documents",
93                array (
94                        "extension" => "$extension",
95                        "titre" => "$titre",
96                        "date" => "NOW()",
97                        "descriptif" => "$descriptif",
98                        "fichier" => "$img_local",
99                        "largeur" => "$tam[0]",
100                        "hauteur" => "$tam[1]",
101                        "mode" => "document",
102                        "taille" => $taille,
103                        "distant" => "non"
104                )
105        );
106        if ($id_document) {
107                sql_insertq (
108                        "spip_documents_liens",
109                        array(
110                                "id_document" => $id_document,
111                                "id_objet" => $id_article,
112                                "objet" => "article"
113                        )
114                );
115        }
116       
117        return _T('spicasa:la_imagen')." <strong>".$titre."</strong> "._T('spicasa:exitosamente');
118
119}
120
121function spicasa_login($email, $pass){
122    /* function to login at Picasa Web album. If it's ok, show the list of user's albums */
123    $pic = new Picasa();
124
125    try{
126        $login = $pic->authorizeWithClientLogin($email, $pass);
127        print "<script>$('#login').html('<p>"._T('spicasa:logged')."<strong>$email</strong></p>');</script>";
128       
129    } catch (Picasa_Exception_CaptchaRequiredException $ce) {
130        print _T('spicasa:captcha');
131        print '<img src="'.$ce->getCaptchaUrl().'" />';
132        return;
133
134       /* Put code for generating a form with an input field, setting $ce->getCaptchaToken(),
135        * $ce->getUsername(), and $cd->getPassword() as hidden fields here
136        */
137    } catch (Picasa_Exception_InvalidUsernameOrPasswordException $ie) {
138        print _T('spicasa:login_invalid');
139        print _T('spicasa:intente');
140        return;
141    } catch (Picasa_Exception $e) {
142        print _T('spicasa:login_fail').": ".$e->getMessage();
143        print "<br/>"._T('spicasa:intente');
144        return;
145
146    }
147   
148    //show album list.
149    return spicasa_lists_albums($email, $pic);
150}
151
152function spicasa_lists_albums($email, $pic){
153    $username = substr($email, 0, strrpos($email, "@")); 
154    //print $username;
155    $account = $pic->getAlbumsByUsername ($username, null, null, "all");
156   
157     foreach($account->getAlbums() as $album){
158        $ret .=  spicasa_thumb("",$album->getIdnum(),$album->getIcon(),$album->getTitle(), $username, "album");
159     }
160   
161    return $ret;
162  }
163
164
165
166function spicasa_add_album($id_album, $user, $id_article){
167         $pic = new Picasa();
168             $album = $pic->getAlbumById($user, $id_album, null, null, null, null, null, 800);
169         foreach($album->getImages() as $img){   
170                $id_image = $img->getIdnum();
171                spicasa_add_photo($id_image, $id_article, $id_album, $user);
172        }
173
174        return _T('spicasa:el_album')." <strong>".$album->getTitle()."</strong> "._T('spicasa:exitosamente');
175       
176}
177
178
179function spicasa_show_album($id_album, $user, $id_article){
180         $pic = new Picasa();
181     $album = $pic->getAlbumById($user, $id_album, null, null, null, null, null, 800);
182     foreach($album->getImages() as $img){   
183                $id_image = $img->getIdnum();
184                                $id_album = $img->getAlbumid(); 
185                                $author = $img->getAuthor()->getUser();
186                               
187                                $titre = $img->getTitle();
188                                $thumb = $img->getMediumThumb();
189                                       
190                        $ret .= spicasa_thumb($id_image,$id_album, $thumb, $titre, $author,"");
191     }
192     return $ret;
193   
194}
195
196
197
198
199function spicasa_thumb($id_image,$id_album, $thumb, $titre, $author, $type="photo") {
200
201                        $ret .= "<div style='width: 190px; height: 190px; text-align: center; float: left; margin-right: 10px; margin-bottom: 10px;'>";
202                                $ret .= "<table cellpadding='0' cellspacing='0'><tr><td style='width: 190px; height: 190px; vertical-align: bottom; text-align: center; border: 0px;'>";
203                                $ret .= "<a onclick='spicasa";
204                $ret .= ($type=="album") ? "_show_album": "_add_photo";
205
206                                $ret .= "(";
207                                if ($id_image) $ret .= "\"$id_image\", ";
208                                $ret .= "\"$id_album\",\"$author\");return false;' href='#'><img src='".$thumb."' /></a></td></tr></table>";
209                                $ret .= "<div style='font-size: 0.8em;'><strong>$titre</strong></div>";
210                                $ret .= "</div>";
211                return $ret;
212}
213
214
215?>
Note: See TracBrowser for help on using the repository browser.