Subversion Repositories eFlore/Applications.cel

Rev

Rev 2458 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2458 Rev 3027
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Liste des utilisateurs du cel, par défaut les 50 premiers ou bien commencant par la chaine fournie en paramètre
4
 * Liste des utilisateurs du cel, par défaut les 50 premiers ou bien commencant par la chaine fournie en paramètre
5
 *
5
 *
6
 * @internal   Mininum PHP version : 5.2
6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
7
 * @category   CEL
8
 * @package    Services
8
 * @package    Services
9
 * @subpackage Observations
9
 * @subpackage Observations
10
 * @version    0.1
10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
17
 */
17
 */
18
class InventoryUserList extends Cel {
18
class InventoryUserList extends Cel {
19
 
19
 
20
	public function getElement($uid) {
20
	public function getElement($uid) {
21
		$this->controleUtilisateur($uid[0]);
21
		$this->controleUtilisateur($uid[0]);
22
 
22
 
23
		$requete = 'SELECT DISTINCT id_utilisateur, courriel FROM cel_utilisateurs '.
23
		// Découplage de l'annuaire TB (suppression de la lecture dans cel_utilisateurs)
24
			$this->construireRequeteConditionTableUtilisateurs($uid).' '.
-
 
25
			'UNION '.
24
		// @TODO vérifier que ça n'impacte que la liste d'usurpation d'identité pour les admins (on peut s'en passer)
26
			'SELECT DISTINCT ce_utilisateur as id_utilisateur, courriel_utilisateur as courriel '.
25
		$requete = 'SELECT DISTINCT ce_utilisateur as id_utilisateur, courriel_utilisateur as courriel '.
27
			'FROM cel_obs '.
26
			'FROM cel_obs '.
28
			$this->construireRequeteConditionTableObs($uid).' '.
27
			$this->construireRequeteConditionTableObs($uid).' '.
29
			'LIMIT 0,50 '.
28
			'LIMIT 0,50 '.
30
			' -- '.__FILE__.':'.__LINE__;
29
			' -- '.__FILE__.':'.__LINE__;
31
		$utilisateurs = Cel::db()->requeter($requete);
30
		$utilisateurs = Cel::db()->requeter($requete);
32
 
31
 
33
		$liste_utilisateurs = array();
32
		$liste_utilisateurs = array();
34
		if ($utilisateurs) {
33
		if ($utilisateurs) {
35
			foreach ($utilisateurs as $utilisateur) {
34
			foreach ($utilisateurs as $utilisateur) {
36
				$liste_utilisateurs[] = $utilisateur;
35
				$liste_utilisateurs[] = $utilisateur;
37
			}
36
			}
38
		}
37
		}
39
		usort($liste_utilisateurs, array($this, 'trierUtilisateurs'));
38
		usort($liste_utilisateurs, array($this, 'trierUtilisateurs'));
40
 
39
 
41
		$this->envoyerJson($liste_utilisateurs);
40
		$this->envoyerJson($liste_utilisateurs);
42
		return true;
41
		return true;
43
	}
42
	}
44
 
43
 
45
	public function trierUtilisateurs($val1, $val2) {
44
	public function trierUtilisateurs($val1, $val2) {
46
		if (strstr($val1['courriel'], '@')) {
45
		if (strstr($val1['courriel'], '@')) {
47
			if (strstr($val2['courriel'], '@')) {
46
			if (strstr($val2['courriel'], '@')) {
48
				return strcmp($val1['courriel'], $val2['courriel']);
47
				return strcmp($val1['courriel'], $val2['courriel']);
49
			} else {
48
			} else {
50
				return -1;
49
				return -1;
51
			}
50
			}
52
		} else {
51
		} else {
53
			if (strstr($val2['courriel'], '@')) {
52
			if (strstr($val2['courriel'], '@')) {
54
				return 1;
53
				return 1;
55
			} else {
54
			} else {
56
				return strcmp($val1['courriel'], $val2['courriel']);
55
				return strcmp($val1['courriel'], $val2['courriel']);
57
			}
56
			}
58
		}
57
		}
59
	}
58
	}
60
 
-
 
61
	private function construireRequeteConditionTableUtilisateurs($params) {
-
 
62
		$condition = '';
-
 
63
		if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
-
 
64
			$condition .= ' WHERE courriel LIKE '.Cel::db()->proteger($params[1].'%');
-
 
65
		}
-
 
66
		return $condition;
-
 
67
	}
-
 
68
 
59
 
69
	private function construireRequeteConditionTableObs($params) {
60
	private function construireRequeteConditionTableObs($params) {
70
		$condition = '';
61
		$condition = '';
71
		if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
62
		if (isset($params[1]) && $params[1] != null && $params[1] != '*') {
72
			$condition .= ' WHERE courriel_utilisateur LIKE '.Cel::db()->proteger($params[1].'%');
63
			$condition .= ' WHERE courriel_utilisateur LIKE '.Cel::db()->proteger($params[1].'%');
73
		}
64
		}
74
		return $condition;
65
		return $condition;
75
	}
66
	}
76
}
67
}