source: spip-zone/_plugins_/plugin-thelia/auth/thelia.php @ 87036

Last change on this file since 87036 was 87036, checked in by cam.lafit@…, 4 years ago

Prémunier des warning sur le profil auteur

  • si $auteur est incomplet alors evitons de continuer la création d'un profil thelia/spip
  • Se prémunir des warning inutile avec php5.x
File size: 5.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2008                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13include_spip('inc/session');
14if (!defined("_ECRIRE_INC_VERSION")) return;
15
16         
17          error_reporting(E_ALL);
18// Authentifie via Thélia et retourne la ligne SQL decrivant l'utilisateur si ok
19
20// http://doc.spip.org/@inc_auth_ldap_dist
21function auth_thelia_dist ($login, $pass, $md5pass="", $md5next="") {
22                       
23        if (lire_config("spip_thelia/auth_unique_spip_thelia","non")=="oui") {
24
25                  spip_log("thelia2 $login " . ($pass ? "mdp fourni" : "mdp absent"). ($md5pass ? "md5mdp fourni" : "md5mdp absent"));
26                  if (!file_exists(_RACINE_THELIA."fonctions/moteur.php") ) {
27                      spip_log("fichier thelia trouve");
28                        return array();
29                  }
30                 spip_log("thelia1"); //récupérer le nom de la base spip
31                  if ($result = mysql_query("SELECT DATABASE()")) {
32                    $row = mysql_fetch_row($result);
33                    $spip_db = $row[0];
34                  }
35                  spip_log("test1, db courante=".$spip_db);
36                    $res =" foo ";
37                  ob_start();
38                    include_once(_RACINE_THELIA.'fonctions/moteur.php');
39                    ob_end_clean();
40                    //include_once('classes/Client.class.php');
41                  spip_log("test2");
42                 
43                               
44                  // Securite
45                  if (!$login || (!$pass && !$md5pass)) return array();
46
47                             
48                 
49
50                  // Utilisateur connu ?
51                          $client = New Client();
52                          $rec = $client->charger($login, $pass);
53
54                          //revenir sur la base spip
55                          $resultconnect = mysql_select_db($spip_db);
56                           spip_log("spipdb=".$spip_db." - ".$resultconnect);
57                          if($rec) {
58                                  spip_log("thelia $login utilisateur connu");
59                                  $_SESSION['navig']->client = $client;
60                                  $_SESSION['navig']->connecte = 1; 
61                                  modules_fonction("apresconnexion");
62                               
63                                // importer les infos depuis thelia,
64                                // avec le statut par defaut a l'install
65                                // refuser d'importer n'importe qui
66                                if (!$statut = $GLOBALS['thelia_statut_nouvel_auteur']) return array();
67                       
68                                if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='thelia'")) {
69                                          $data = pipeline('thelia_authentifie',array("auteur" => $result,"statut"=>"existant"));
70                                      return $data['auteur'];
71                                }
72                               
73                                spip_log("thelia2");
74                                // Recuperer les donnees de l'auteur
75                                // Convertir depuis UTF-8 (jeu de caracteres par defaut)
76                                include_spip('inc/charsets');
77                                $nom = $client->nom.' '.$client->prenom;
78                                $email = $login;
79                                $bio = '';
80                                $resultconnect = mysql_select_db($spip_db);
81                                spip_log("thelia2bis-connect=".$resultconnect);
82                                $n = sql_insertq('spip_auteurs', array(
83                                                'source' => 'thelia',
84                                                'nom' => $nom,
85                                                'login' => $login,
86                                                'email' => $email,
87                                                'bio' => $bio,
88                                                'statut' => $statut,
89                                                'pass' => ''),0);
90                                spip_log("thelia3");
91                                spip_log("Creation de l'auteur '$nom' depuis thelia dans spip_auteurs id->".$n);
92                             
93                                spip_log("thelia4");
94             
95                                if($_SESSION['navig']->urlpageret) {
96                                     spip_log("redirige vers ".$_SESSION['navig']->urlpageret);
97                                          redirige($_SESSION['navig']->urlpageret);
98                                } else {
99                                      spip_log("redirige vers index.php");
100                                      redirige("index.php");
101                                }
102                                spip_log("test6");
103                                if ($n) {
104                                        $auteur = sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
105                                        $data = pipeline('thelia_authentifie',array("auteur" => $auteur,"statut"=>"nouveau"));
106                                    return $data['auteur'];
107                                }
108
109                                spip_log("Creation de l'auteur '$nom' depuis thelia impossible");
110                               
111                               
112                               
113                                return array(); 
114                               
115                        } else {
116                              //utilisateur inconnu
117                              spip_log("thelia $login utilisateur inconnu");
118                              redirige("connexion.php?errconnex=1");
119                              return array(); 
120                        }
121        } 
122spip_log("thelia0");
123       
124        return array();
125     
126}
127
128/*
129        $auteur = array(login,pass,client)
130*/
131function creer_auteur_thelia($auteur) {
132
133    if (empty($auteur))
134        return array();
135
136        //Empecher un doublon
137        if (isset($auteur['login']) && $result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['login']) . " AND source='thelia'")) {
138              spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien",'theliaob');
139              return $result;
140        }
141       
142        //charger le support thelia     
143        ob_start();
144                include_once('fonctions/moteur.php');
145        ob_end_clean(); 
146
147        //Empecher un doublon
148        if (isset($auteur['client']) &&  $result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['client']->email) . " AND source='thelia'")) {
149              spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien",'theliaob');
150              return $result;
151        }
152
153        //Tester la présence dans thelia
154        $client = $auteur['client'];
155        if (!$auteur['client']) {
156                $client = New Client();
157                if (!$client->charger($auteur['login'], $auteur['pass']))
158                        return array(); 
159        }
160
161        //Valeur par défaut
162        if (!$statut = $GLOBALS['thelia_statut_nouvel_auteur']) { 
163                spip_log('erreur pas de statut defini par defaut','theliaob');
164                return array(); 
165        }
166
167        spip_log("enregistrement auteur",'theliaob');
168        // Recuperer les donnees de l'auteur
169        // Convertir depuis UTF-8 (jeu de caracteres par defaut)
170        include_spip('inc/charsets');
171        $nom = $client->nom.' '.$client->prenom;
172        $login = $email = $client->email;
173        $bio = '';
174        $n = sql_insertq(
175                'spip_auteurs', 
176                array(
177                        'source' => 'thelia',
178                        'nom' => $nom,
179                        'login' => $login,
180                        'email' => $email,
181                        'bio' => $bio,
182                        'statut' => $statut,
183                        'pass' => '')
184                );
185        spip_log('Auteur depuis thelia d\'id '.$n,'theliaob');
186
187        return sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
188}
189?>
Note: See TracBrowser for help on using the repository browser.