Subversion Repositories eFlore/Applications.cel

Rev

Rev 3514 | Rev 3516 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3514 Rev 3515
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe métier de gestion de l'ajout, modification et suppression des images.
4
 * Classe métier de gestion de l'ajout, modification et suppression des images.
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 Bibliothèques
9
 * @subpackage Bibliothèques
10
 * @version    0.1
10
 * @version    0.1
11
 * @author     Delphine CAUQUIL <delphine@tela-botanica.org>
11
 * @author     Delphine CAUQUIL <delphine@tela-botanica.org>
12
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
12
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
13
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @copyright  1999-2017 Tela Botanica <accueil@tela-botanica.org>
14
 * @copyright  1999-2017 Tela Botanica <accueil@tela-botanica.org>
15
 */
15
 */
16
class GestionWidget extends Cel {
16
class GestionWidget extends Cel {
-
 
17
    // le champ is_type / est_type est traité dans services/CelWidgetManager car traite les différentes valeurs anvoyés par l'interface
-
 
18
    private $champs_defaut_valeur = array("date_created" => "CURRENT_TIMESTAMP",
-
 
19
        "date_updated" => "CURRENT_TIMESTAMP",
-
 
20
        "taxo_restriction_type" => "referentiel",
-
 
21
        "taxo_restriction_value" => "bdtfx",
-
 
22
        "location_type" => "point");
-
 
23
    
17
	
24
	
18
	/**
25
	/**
19
	 * Ajoute un paramètrage de widget de saisie
26
	 * Ajoute un paramètrage de widget de saisie
20
	 *
27
	 *
21
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
28
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
22
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
29
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
23
	 *
30
	 *
24
	 * @return true ou false suivant le succès de l'opération
31
	 * @return true ou false suivant le succès de l'opération
25
	 */
32
	 */
26
	public function obtenirWidget($parametres = array()) { 
33
	public function obtenirWidget($parametres = array()) { 
27
		$requete_liste = "SELECT * FROM `project_settings` ";
34
		$requete_liste = "SELECT * FROM `project_settings` ";
28
		$order = (isset($parametres['ordre'])) ? $parametres['ordre'] : 'project';
35
		$order = (isset($parametres['ordre'])) ? $parametres['ordre'] : 'project';
29
		if ($parametres != array()) {
36
		if ($parametres != array()) {
30
			$requete_liste .= " WHERE ";
37
			$requete_liste .= " WHERE ";
31
			foreach ($parametres as $champ => $valeur) {
38
			foreach ($parametres as $champ => $valeur) {
32
				$requete_liste .= $champ." = '".$valeur."' AND ";
39
				$requete_liste .= $champ." = '".$valeur."' AND ";
33
			}
40
			}
34
			$requete_liste = rtrim($requete_liste, " AND ");
41
			$requete_liste = rtrim($requete_liste, " AND ");
35
		}
42
		}
36
		$requete_liste .= " ORDER BY ".$order;
43
		$requete_liste .= " ORDER BY ".$order;
37
		$liste = Cel::db()->requeter($requete_liste);
44
		$liste = Cel::db()->requeter($requete_liste);
38
		return $liste;
45
		return $liste;
39
		
46
		
40
	}
47
	}
41
 
48
 
42
	/**
49
	/**
43
	 * Ajoute un paramètrage de widget de saisie
50
	 * Ajoute un paramètrage de widget de saisie
44
	 *
51
	 *
45
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
52
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
46
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
53
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
47
	 *
54
	 *
48
	 * @return true ou false suivant le succès de l'opération
55
	 * @return true ou false suivant le succès de l'opération
49
	 */
56
	 */
50
	public function ajouterWidget($parametres) {
57
	public function ajouterWidget($parametres) {
51
		$requete_id = "SELECT project_id as idprojet FROM project_settings WHERE project = '".$parametres['project']."'";
58
		$requete_id = "SELECT project_id as idprojet FROM project_settings WHERE project = '".$parametres['project']."'";
52
		$resultat = Cel::db()->requeter($requete_id);
59
		$resultat = Cel::db()->requeter($requete_id);
53
		if ($resultat == array()) {
60
		if ($resultat == array()) {
54
		    $requete_id = "SELECT max(`id`) + 1 as idprojet FROM project_settings";
61
		    $requete_id = "SELECT max(`id`) + 1 as idprojet FROM project_settings";
55
		    $resultat = Cel::db()->requeter($requete_id);
62
		    $resultat = Cel::db()->requeter($requete_id);
56
		}
63
		}
57
		$project_id = $resultat[0]['idprojet']; 
64
		$project_id = $resultat[0]['idprojet']; 
-
 
65
		if (array_diff_key($this->champs_defaut_valeur, $parametres)) {
-
 
66
		    $parametres = array_merge($parametres, array_diff_key($this->champs_defaut_valeur, $parametres));
-
 
67
		}
58
	    $requete_insertion = 'INSERT INTO project_settings '.
68
	    $requete_insertion = 'INSERT INTO project_settings '.
59
	   	    '(project_id, '.implode(array_keys($parametres), ', ').') VALUES ("'.$project_id.'", "'.implode($parametres, '", "').'")';
69
	   	    '(project_id, '.implode(array_keys($parametres), ', ').') VALUES ("'.$project_id.'", "'.implode($parametres, '", "').'")';
60
		$resultat_ajout = Cel::db()->executer($requete_insertion);
70
		$resultat_ajout = Cel::db()->executer($requete_insertion);
61
		$retour = true;
71
		$retour = true;
62
		if ($resultat_ajout === false) {
72
		if ($resultat_ajout === false) {
63
			$retour = false;
73
			$retour = false;
64
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
74
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
65
			$this->logger('CEL_bugs', $msg);
75
			$this->logger('CEL_bugs', $msg);
66
		}
76
		}
67
		return $retour;
77
		return $retour;
68
	}
78
	}
69
	
79
	
70
	/**
80
	/**
71
	 * Modifie une ou plusieurs observations grâce aux paramètres fournis
81
	 * Modifie une ou plusieurs observations grâce aux paramètres fournis
72
	 *
82
	 *
73
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
83
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
74
	 * @param mixed $ordre ordre(s) observation(s) relatif(s) à l'utilisateur: un seul ordre ou bien "ordre1,ordre2,ordre3" etc...
84
	 * @param mixed $ordre ordre(s) observation(s) relatif(s) à l'utilisateur: un seul ordre ou bien "ordre1,ordre2,ordre3" etc...
75
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
85
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
76
	 *
86
	 *
77
	 * @return true ou false suivant le succès de l'opération
87
	 * @return true ou false suivant le succès de l'opération
78
	 */
88
	 */
79
	public function modifierWidget($projet, $langue, $parametres) {
89
	public function modifierWidget($projet, $langue, $parametres) {
80
		$requete_insertion = 'UPDATE project_settings SET ';
90
		$requete_insertion = 'UPDATE project_settings SET ';
81
		$modifs = array_map(function($value, $key) {
91
		$modifs = array_map(function($value, $key) {
82
			return $key.'="'.$value.'"';
92
			return $key.'="'.$value.'"';
83
		}, array_values($parametres), array_keys($parametres));
93
		}, array_values($parametres), array_keys($parametres));
84
		
94
		
85
		$requete_insertion .= implode(', ', $modifs).' WHERE project = "'.$projet.'" AND language = "'.$langue.'";' ;
95
		$requete_insertion .= implode(', ', $modifs).' WHERE project = "'.$projet.'" AND language = "'.$langue.'";' ;
86
		//print_r($requete_insertion);
96
		//print_r($requete_insertion);
87
		$resultat_ajout = Cel::db()->executer($requete_insertion);
97
		$resultat_ajout = Cel::db()->executer($requete_insertion);
88
		$retour = true;
98
		$retour = true;
89
		if ($resultat_ajout === false) {
99
		if ($resultat_ajout === false) {
90
			$retour = false;
100
			$retour = false;
91
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
101
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
92
			$this->logger('CEL_bugs', $msg);
102
			$this->logger('CEL_bugs', $msg);
93
		} else {
103
		} else {
94
			if (isset($parametres['est_type']) && $parametres['est_type']) $this->modifierTypeWidget($projet, $parametres);
104
			if (isset($parametres['est_type']) && $parametres['est_type']) $this->modifierTypeWidget($projet, $parametres);
95
		}
105
		}
96
		return $retour;
106
		return $retour;
97
	}
107
	}
98
	
108
	
99
	private function modifierTypeWidget($projet, $parametres) {
109
	private function modifierTypeWidget($projet, $parametres) {
100
		$params_type = array('type_localisation', 'type_espece', 'milieux','champs_supp');
110
		$params_type = array('type_localisation', 'type_espece', 'milieux','champs_supp');
101
		//print_r(array_intersect_keys($parametres, $params_type));exit;
111
		//print_r(array_intersect_keys($parametres, $params_type));exit;
102
	}
112
	}
103
	
113
	
104
}
114
}