[SPIP Zone] r4371 - in /_plugins_/_contenu_editorial_/FpipR: exec/flickr_choix_photos.php exec/flickr_choix_sets.php inc/flickr_api.php

Author: pierre.andrews@gmail.com
Date: Wed Aug 2 17:04:08 2006
New Revision: 4371

Log:
attention, je dois encore tester cela. Verifier que le token est encore valide avant de continuer les operations.

Modified:
    _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_photos.php
    _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_sets.php
    _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php

Modified: _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_photos.php

--- _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_photos.php (original)
+++ _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_photos.php Wed Aug 2 17:04:08 2006
@@ -27,8 +27,9 @@
   $rez = spip_abstract_select($select,$from,$where);
   $row = spip_abstract_fetch($rez);
   if($row['flickr_nsid'] != '' && $row['flickr_token'] != '') {
+ $check = flickr_auth_checkToken($row['flickr_token']);
+ if($check) {
   $page = _request('page')?_request('page'):1;
- //TODO: ajouter des options de recherches
   $sort = _request('sort')?_request('sort'):'date-posted-desc';

   $photos = flickr_photos_search(40,$page,$row['flickr_nsid'],'','',_request('text_search'),'','','','','',$sort,'','',$row['flickr_token']);
@@ -103,7 +104,12 @@
   echo '</select>';
   echo '<button type="submit">'._T('fpipr:recherche').'</button>';
   echo '</form>';
-
+ } else {
+ include_spip('base/abstract_sql');
+ global $table_prefix;
+ spip_query("UPDATE ".$table_prefix."_auteurs SET flickr_nsid = '', flickr_token = '' WHERE id_auteur=$connect_id_auteur");
+ echo _T('fpipr:demande_authentification',array('url'=>generer_url_ecrire('auteurs_edit','id_auteur='.$connect_id_auteur)));
+ }
   } else {
   echo _T('fpipr:demande_authentification',array('url'=>generer_url_ecrire('auteurs_edit','id_auteur='.$connect_id_auteur)));
   }

Modified: _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_sets.php

--- _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_sets.php (original)
+++ _plugins_/_contenu_editorial_/FpipR/exec/flickr_choix_sets.php Wed Aug 2 17:04:08 2006
@@ -27,6 +27,8 @@
   $where = array('id_auteur='.$connect_id_auteur);
   $row = spip_abstract_fetsel($select,$from,$where);
   if($row['flickr_nsid'] != '' && $row['flickr_token'] != '') {
+ $check = flickr_auth_checkToken($row['flickr_token']);
+ if($check) {
   $page = _request('page')?_request('page'):1;
   $photosets = flickr_photosets_getList($row['flickr_nsid'],$row['flickr_token']);
   
@@ -67,6 +69,13 @@
   } else {
     echo generer_action_auteur('flickr_ajouter_documents',_request('id'), generer_url_ecrire('breves_edit','id_breve='._request('id')),$html);
   }
+
+ } else {
+ include_spip('base/abstract_sql');
+ global $table_prefix;
+ spip_query("UPDATE ".$table_prefix."_auteurs SET flickr_nsid = '', flickr_token = '' WHERE id_auteur=$connect_id_auteur");
+ echo _T('fpipr:demande_authentification',array('url'=>generer_url_ecrire('auteurs_edit','id_auteur='.$connect_id_auteur)));
+ }
   } else {
   echo _T('fpipr:demande_authentification',array('url'=>generer_url_ecrire('auteurs_edit','id_auteur='.$connect_id_auteur).'">l&agrave;</a>'));
   }

Modified: _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php

--- _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php (original)
+++ _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php Wed Aug 2 17:04:08 2006
@@ -21,9 +21,11 @@
function flickr_api_call($method, $params=array(), $auth_token='') {
   global $FLICKR_API_KEY;
   $params['api_key'] = $FLICKR_API_KEY;
- if($auth_token) $params['auth_token'] = $auth_token;
- $params['method'] = $method;
+ if($auth_token) {
+ $params['auth_token'] = $auth_token;
   $params['api_sig'] = flickr_sign($params);
+ }
+ $params['method'] = $method;
   
   $args = '';
   foreach($params as $k => $v) {
@@ -89,6 +91,32 @@
   }
}

+function flickr_auth_checkToken($token) {
+ /*<rsp stat="fail">
+ <err code="98" msg="Invalid auth token"/>
+ </rsp>
+ OR
+<auth>
+ <token>976598454353455</token>
+ <perms>read</perms>
+ <user nsid="12037949754@N01" username="Bees" fullname="Cal H" />
+</auth>*/
+ $check = flickr_check_error(flickr_api_call('flickr.auth.checkToken',array('auth_tokne'=>$token)));
+ if($check) {
+ $auth_info = array();
+ foreach($check as $t => $v) {
+ if(strpos($t,'user')) {
+ if(preg_match_all('#(nsid|fullname|username)="(.*?)"#',$photo,$matches,PREG_SET_ORDER)) {
+ foreach($matches as $m) $auth_info['user_'.$m[1]] = $m[2];
+ }
+ } else {
+ $auth_info[$t] = $v[0];
+ }
+ }
+ return $auth_info;
+ } else return false;
+}
+
//======================================================================

class FlickrPhotos {