[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / spip_piwik / formulaires / configurer_piwik_fonctions.php
1 <?php
2
3 if (!defined('_ECRIRE_INC_VERSION')) {
4 return;
5 }
6
7 /**
8 *
9 * Fonction de verification du formulaire de configuration CFG
10 * TODO : vérifier que cela fonctionne toujours en SPIP > 3.x
11 *
12 */
13 function cfg_config_piwik_verifier(&$cfg) {
14 $erreur = array();
15 $obligatoires = array('token','user','urlpiwik');
16 foreach ($obligatoires as $obligatoire) {
17 if (!$cfg->val[$obligatoire]) {
18 $erreur[$obligatoire] = _T('info_obligatoire');
19 }
20 }
21
22 $piwik_token = $cfg->val['token'];
23 if (!$erreur['token'] && !preg_match('/^[a-f0-9]{32}$/i', $piwik_token)) {
24 $erreur['token'] = _T('piwik:cfg_erreur_token');
25 return $erreur;
26 }
27 $piwik_url = 'http://'.$cfg->val['urlpiwik'].'/';
28
29 $piwik_recuperer_data = charger_fonction('piwik_recuperer_data', 'inc');
30
31 /**
32 * Vérifier la correspondance nom d'utilisateur/ token
33 * Qui nous permettra par la suite de définir d'autres choses
34 */
35 $method_verif_user = 'UsersManager.getUser';
36 $options_user = array('userLogin'=>$cfg->val['user']);
37 $datas_user = $piwik_recuperer_data($piwik_url, $piwik_token, '', $method_verif_user, 'PHP', $options_user);
38 if (is_array($datas_user = unserialize($datas_user))) {
39 if (!$erreur['user'] && $datas_user['result'] == 'error') {
40 $erreur['user'] = _T('piwik:cfg_erreur_user_token');
41 }
42 /**
43 * Vérifier que ce token est un token admin
44 * Si non : mettre une meta comme quoi il n'est pas admin pour créer des sites
45 */
46 $method_verif_user_bis = 'UsersManager.getUsers';
47 $datas_user_bis = $piwik_recuperer_data($piwik_url, $piwik_token, '', $method_verif_user_bis, 'PHP');
48 $datas_user_bis = unserialize($datas_user_bis);
49 if (is_array($datas_user_bis) && ($datas_user_bis['result'] == 'error')) {
50 ecrire_meta('piwik_admin', 'non');
51 } else {
52 ecrire_meta('piwik_admin', 'oui');
53 unset($erreur['user']);
54 }
55 }
56
57 /**
58 * Récupération de la liste des sites où cet utilisateur
59 * a les droits d'admin
60 */
61 $method = 'SitesManager.getSitesWithAdminAccess';
62 $datas = $piwik_recuperer_data($piwik_url, $piwik_token, '', $method, 'PHP');
63 if (!$erreur['urlpiwik'] and !is_array(unserialize($datas))) {
64 $erreur['urlpiwik'] = _T('piwik:cfg_erreur_recuperation_data');
65 } else {
66 ecrire_meta('piwik_sites_dispo', $datas);
67 }
68
69 return $erreur;
70 }