Author: pierre.andrews@gmail.com
Date: Sat Jul 29 03:45:20 2006
New Revision: 4255
Log:
c'est moche et on peut pas faire bcp, mais au moins, chaque auteur peut s'identifier sur son compte (on pourra ainsi recuperer ses donnees ensuite)
Added:
_plugins_/_contenu_editorial_/FpipR/
_plugins_/_contenu_editorial_/FpipR/FpipR.php
_plugins_/_contenu_editorial_/FpipR/action/
_plugins_/_contenu_editorial_/FpipR/action/flickr_authenticate_end.php
_plugins_/_contenu_editorial_/FpipR/inc/
_plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php
_plugins_/_contenu_editorial_/FpipR/plugin.xml
Added: _plugins_/_contenu_editorial_/FpipR/FpipR.php
--- _plugins_/_contenu_editorial_/FpipR/FpipR.php (added)
+++ _plugins_/_contenu_editorial_/FpipR/FpipR.php Sat Jul 29 03:45:20 2006
@@ -0,0 +1,35 @@
+<?php
+
+function FpipR_affiche_milieu($flux) {
+ if($flux['args']['exec'] == 'auteurs_edit') {
+ global $table_prefix, $connect_id_auteur;
+
+ include_spip('base/abstract_sql');
+
+ //on crée la colonne pour stoquer les frobs
+ $installe = unserialize(lire_meta('FpipR:installe'));
+ if(!$installe) {
+ spip_query("ALTER TABLE `".$table_prefix."_auteurs` ADD (`flickr_token` TINYTEXT NULL, `flickr_nsid` TINYTEXT NULL);");
+ ecrire_meta('FpipR:installe',serialize(true)); //histoire de pas faire une recherche dans la base à chaque coup
+ ecrire_metas();
+ }
+ $from = array('spip_auteurs');
+ $select = array('flickr_token','flickr_nsid');
+ $where = array('id_auteur='.$flux['args']['id_auteur']);
+ $rez = spip_abstract_select($select,$from,$where);
+ $row = spip_abstract_fetch($rez);
+ if($row['flickr_nsid'] != '' && $row['flickr_token'] != '') {
+ $html = "Vous êtes identifié, bravo: ".$row['flickr_nsid'].':'.$row['flickr_token'];
+ } else {
+ include_spip('inc/flickr_api');
+ $infos = flickr_authenticate_get_frob();
+ $html = 'Veillez d\'abord <a target="blank" href="'.$infos['url'].'">autoriser</a> ce plugin sur flickr,
+<br/> une fois terminé vous pouvez revenir sur cette fenetre pour '.generer_action_auteur('flickr_authenticate_end',$infos['frob'], generer_url_ecrire('auteurs_edit','id_auteur='.$connect_id_auteur),'<button type="submit">'._T('terminer').'</button> l\'authentification');
+ }
+ spip_abstract_free($rez);
+ $flux['data'].=$html;
+ return $flux;
+ }
+}
+
+?>
Added: _plugins_/_contenu_editorial_/FpipR/action/flickr_authenticate_end.php
--- _plugins_/_contenu_editorial_/FpipR/action/flickr_authenticate_end.php (added)
+++ _plugins_/_contenu_editorial_/FpipR/action/flickr_authenticate_end.php Sat Jul 29 03:45:20 2006
@@ -0,0 +1,21 @@
+<?php
+
+function action_flickr_authenticate_end() {
+ $redirect = _request('redirect');
+ $hash = _request('hash');
+ $id_auteur = _request('id_auteur');
+ $arg = _request('arg');
+ $action = _request('action');
+
+ include_spip('inc/actions');
+ if (!verifier_action_auteur("$action-$arg", $hash,$id_auteur)) {
+ include_spip('inc/minipres');
+ minipres(_T('info_acces_interdit'));
+ } else {
+ include_spip('inc/flickr_api');
+ flickr_authenticate_end($id_auteur,$arg);
+ redirige_par_entete(urldecode($redirect));
+ }
+}
+
+?>
Added: _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php
--- _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php (added)
+++ _plugins_/_contenu_editorial_/FpipR/inc/flickr_api.php Sat Jul 29 03:45:20 2006
@@ -0,0 +1,68 @@
+<?php
+
+$GLOBALS['FLICKR_API_KEY'] = "7356b4277d182c151e676903c064edec";
+$GLOBALS['FLICKR_SECRET'] = "8dd0abb691ff659d";
+
+function flickr_sign($params) {
+ global $FLICKR_SECRET;
+ ksort($params);
+ $ret = $FLICKR_SECRET;
+ foreach($params as $k => $v) {
+ $ret .= $k.$v;
+ }
+
+ return md5($ret);
+}
+
+function flickr_api_call($method, $params=array()) {
+ global $FLICKR_API_KEY;
+ $params['api_key'] = $FLICKR_API_KEY;
+ $params['method'] = $method;
+ $params['api_sig'] = flickr_sign($params);
+
+ $args = '';
+ foreach($params as $k => $v) {
+ $args .= '&'.$k.'='.$v;
+ }
+
+ $args = substr($args,1);
+
+ return file_get_contents("http://www.flickr.com/services/rest/?$args");
+}
+
+function flickr_authenticate_get_frob() {
+ global $FLICKR_API_KEY;
+ $frob = flickr_api_call('flickr.auth.getFrob');
+ if(preg_match('#<frob>(.*?)</frob>#', $frob, $matches)) {
+ $params['api_key'] = $FLICKR_API_KEY;
+ $params['frob'] = $matches[1];
+ $params['perms'] = 'read';
+ $params['api_sig'] = flickr_sign($params);
+
+ $args = '';
+ foreach($params as $k => $v) {
+ $args .= '&'.$k.'='.$v;
+ }
+ $args = substr($args,1);
+ return array('url'=>"http://flickr.com/services/auth/?$args",'frob'=>$matches[1]);
+ } else spip_log($frob);
+}
+
+function flickr_authenticate_end($id_auteur,$frob) {
+ $frob = flickr_api_call('flickr.auth.getToken',array('frob'=>$frob));
+ $nsid='';
+ $token = '';
+ if(preg_match('#<token>(.*?)</token>#', $frob, $matches)) {
+ $token = $matches[1];
+ }
+ if(preg_match('#<user nsid="(.*?)"#', $frob, $matches)) {
+ $nsid = $matches[1];
+ }
+ if(isset($token) && isset($nsid)) {
+ include_spip('base/abstract_sql');
+ global $table_prefix;
+ spip_query("UPDATE ".$table_prefix."_auteurs SET flickr_nsid = '$nsid', flickr_token = '$token' WHERE id_auteur=$id_auteur");
+ } else spip_log($frob);
+}
+
+?>
Added: _plugins_/_contenu_editorial_/FpipR/plugin.xml
--- _plugins_/_contenu_editorial_/FpipR/plugin.xml (added)
+++ _plugins_/_contenu_editorial_/FpipR/plugin.xml Sat Jul 29 03:45:20 2006
@@ -0,0 +1,25 @@
+<plugin>
+ <nom> <!-- Nom du plugin -->
+ FpipR
+ </nom>
+ <auteur> <!-- Auteur du plugin -->
+ Pierre Andrews (mortimer)
+ </auteur>
+ <version>
+ 0.1
+ </version>
+ <etat>
+ dev
+ </etat>
+ <description>
+ <multi>[fr] associer des photos et sets Flickr.com à vos articles.
+ </multi>
+ </description>
+ <prefix>
+ FpipR
+ </prefix>
+ <pipeline>
+ <nom>affiche_milieu</nom>
+ <inclure>FpipR.php</inclure>
+ </pipeline>
+</plugin>