Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3857 Rev 3896
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
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",
18
    private $champs_defaut_valeur = array("date_created" => "CURRENT_TIMESTAMP",
19
        "date_updated" => "CURRENT_TIMESTAMP",
19
        "date_updated" => "CURRENT_TIMESTAMP",
20
        "taxo_restriction_type" => "referentiel",
20
        "taxo_restriction_type" => "referentiel",
21
        "taxo_restriction_value" => "bdtfx",
21
        "taxo_restriction_value" => "bdtfx",
22
        "location_type" => "point");
22
        "location_type" => "point",
-
 
23
        "is_mandatory_address" => "0",
-
 
24
        "is_mandatory_photo" => "0");
23
    
25
    
24
	
26
	
25
	/**
27
	/**
26
	 * Ajoute un paramètrage de widget de saisie
28
	 * Ajoute un paramètrage de widget de saisie
27
	 *
29
	 *
28
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
30
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
29
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
31
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
30
	 *
32
	 *
31
	 * @return true ou false suivant le succès de l'opération
33
	 * @return true ou false suivant le succès de l'opération
32
	 */
34
	 */
33
	public function obtenirWidget($parametres = array()) { 
35
	public function obtenirWidget($parametres = array()) { 
34
		$requete_liste = "SELECT * FROM `project_settings` ";
36
		$requete_liste = "SELECT * FROM `project_settings` ";
35
		$order = (isset($parametres['ordre'])) ? $parametres['ordre'] : 'project';
37
		$order = (isset($parametres['ordre'])) ? $parametres['ordre'] : 'project';
36
		if ($parametres != array()) {
38
		if ($parametres != array()) {
37
			$requete_liste .= " WHERE ";
39
			$requete_liste .= " WHERE ";
38
			foreach ($parametres as $champ => $valeur) {
40
			foreach ($parametres as $champ => $valeur) {
39
				$requete_liste .= $champ." = '".$valeur."' AND ";
41
				$requete_liste .= $champ." = '".$valeur."' AND ";
40
			}
42
			}
41
			$requete_liste = rtrim($requete_liste, " AND ");
43
			$requete_liste = rtrim($requete_liste, " AND ");
42
		}
44
		}
43
		$requete_liste .= " ORDER BY ".$order;
45
		$requete_liste .= " ORDER BY ".$order;
44
		$liste = Cel::db()->requeter($requete_liste);
46
		$liste = Cel::db()->requeter($requete_liste);
45
		return $liste;
47
		return $liste;
46
		
48
		
47
	}
49
	}
48
 
50
 
49
	/**
51
	/**
50
	 * Ajoute un paramètrage de widget de saisie
52
	 * Ajoute un paramètrage de widget de saisie
51
	 *
53
	 *
52
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
54
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
53
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
55
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
54
	 *
56
	 *
55
	 * @return true ou false suivant le succès de l'opération
57
	 * @return true ou false suivant le succès de l'opération
56
	 */
58
	 */
57
	public function ajouterWidget($parametres) {
59
	public function ajouterWidget($parametres) {
58
	    if (isset($parametres['type']) && $parametres['type'] != '') {
60
	    if (isset($parametres['type']) && $parametres['type'] != '') {
59
	        $rechercheId = $parametres['type'];
61
	        $rechercheId = $parametres['type'];
60
	    } else {
62
	    } else {
61
	        $rechercheId = $parametres['project'];
63
	        $rechercheId = $parametres['project'];
62
	    }
64
	    }
63
	    
65
	    
64
		$requete_id = "SELECT project_id as idprojet FROM project_settings WHERE project = '".$parametres['project']."'";
66
		$requete_id = "SELECT project_id as idprojet FROM project_settings WHERE project = '".$parametres['project']."'";
65
		$resultat = Cel::db()->requeter($requete_id);
67
		$resultat = Cel::db()->requeter($requete_id);
66
		if ($resultat == array()) {
68
		if ($resultat == array()) {
67
		    $requete_id = "SELECT max(`id`) + 1 as idprojet FROM project_settings";
69
		    $requete_id = "SELECT max(`id`) + 1 as idprojet FROM project_settings";
68
		    $resultat = Cel::db()->requeter($requete_id);
70
		    $resultat = Cel::db()->requeter($requete_id);
69
		}
71
		}
70
		$project_id = $resultat[0]['idprojet']; 
72
		$project_id = $resultat[0]['idprojet']; 
71
		if (array_diff_key($this->champs_defaut_valeur, $parametres)) {
73
		if (array_diff_key($this->champs_defaut_valeur, $parametres)) {
72
		    $parametres = array_merge($parametres, array_diff_key($this->champs_defaut_valeur, $parametres));
74
		    $parametres = array_merge($parametres, array_diff_key($this->champs_defaut_valeur, $parametres));
73
		}
75
		}
74
	    $requete_insertion = 'INSERT INTO project_settings '.
76
	    $requete_insertion = 'INSERT INTO project_settings '.
75
	   	    '(project_id, '.implode(array_keys($parametres), ', ').') VALUES ("'.$project_id.'", '.implode(Cel::db()->proteger($parametres), ', ').')';
77
	   	    '(project_id, '.implode(array_keys($parametres), ', ').') VALUES ("'.$project_id.'", '.implode(Cel::db()->proteger($parametres), ', ').')';
76
	    $requete_insertion = str_replace("'CURRENT_TIMESTAMP'", 'CURRENT_TIMESTAMP', $requete_insertion);
78
	    $requete_insertion = str_replace("'CURRENT_TIMESTAMP'", 'CURRENT_TIMESTAMP', $requete_insertion);
77
	    $resultat_ajout = Cel::db()->executer($requete_insertion);
79
	    $resultat_ajout = Cel::db()->executer($requete_insertion);
78
		$retour = true;
80
		$retour = true;
79
		if ($resultat_ajout === false) {
81
		if ($resultat_ajout === false) {
80
			$retour = false;
82
			$retour = false;
81
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
83
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
82
			$this->logger('CEL_bugs', $msg);
84
			$this->logger('CEL_bugs', $msg);
83
		}
85
		}
84
		return $retour;
86
		return $retour;
85
	}
87
	}
86
	
88
	
87
	/**
89
	/**
88
	 * Modifie une ou plusieurs observations grâce aux paramètres fournis
90
	 * Modifie une ou plusieurs observations grâce aux paramètres fournis
89
	 *
91
	 *
90
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
92
	 * @param int $utilisateur id utilisateur du proprietaire de l'observation
91
	 * @param mixed $ordre ordre(s) observation(s) relatif(s) à l'utilisateur: un seul ordre ou bien "ordre1,ordre2,ordre3" etc...
93
	 * @param mixed $ordre ordre(s) observation(s) relatif(s) à l'utilisateur: un seul ordre ou bien "ordre1,ordre2,ordre3" etc...
92
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
94
	 * @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
93
	 *
95
	 *
94
	 * @return true ou false suivant le succès de l'opération
96
	 * @return true ou false suivant le succès de l'opération
95
	 */
97
	 */
96
	public function modifierWidget($projet, $langue, $parametres) {
98
	public function modifierWidget($projet, $langue, $parametres) {
97
		$requete_insertion = 'UPDATE project_settings SET ';
99
		$requete_insertion = 'UPDATE project_settings SET ';
98
		$modifs = array_map(function($value, $key) {
100
		$modifs = array_map(function($value, $key) {
99
			return $key.'="'.$value.'"';
101
			return $key.'="'.$value.'"';
100
		}, array_values($parametres), array_keys($parametres));
102
		}, array_values($parametres), array_keys($parametres));
101
		
103
		
102
		$requete_insertion .= implode(', ', $modifs).' WHERE project = "'.$projet.'" AND language = "'.$langue.'";' ;
104
		$requete_insertion .= implode(', ', $modifs).' WHERE project = "'.$projet.'" AND language = "'.$langue.'";' ;
103
		//print_r($requete_insertion);
105
		//print_r($requete_insertion);
104
		$resultat_ajout = Cel::db()->executer($requete_insertion);
106
		$resultat_ajout = Cel::db()->executer($requete_insertion);
105
		$retour = true;
107
		$retour = true;
106
		if ($resultat_ajout === false) {
108
		if ($resultat_ajout === false) {
107
			$retour = false;
109
			$retour = false;
108
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
110
			$msg = "Erreur de creation d'un widget : $resultat_ajout";
109
			$this->logger('CEL_bugs', $msg);
111
			$this->logger('CEL_bugs', $msg);
110
		} else {
112
		} else {
111
			if (isset($parametres['est_type']) && $parametres['est_type']) $this->modifierTypeWidget($projet, $parametres);
113
			if (isset($parametres['est_type']) && $parametres['est_type']) $this->modifierTypeWidget($projet, $parametres);
112
		}
114
		}
113
		return $retour;
115
		return $retour;
114
	}
116
	}
115
	
117
	
116
	private function modifierTypeWidget($projet, $parametres) {
118
	private function modifierTypeWidget($projet, $parametres) {
117
		$params_type = array('type_localisation', 'type_espece', 'milieux','champs_supp');
119
		$params_type = array('type_localisation', 'type_espece', 'milieux','champs_supp');
118
		//print_r(array_intersect_keys($parametres, $params_type));exit;
120
		//print_r(array_intersect_keys($parametres, $params_type));exit;
119
	}
121
	}
120
	
122
	
121
}
123
}