Rev 3518 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
// declare(encoding='UTF-8');
/**
* Classe métier de gestion de l'ajout, modification et suppression des images.
*
* @internal Mininum PHP version : 5.2
* @category CEL
* @package Services
* @subpackage Bibliothèques
* @version 0.1
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @copyright 1999-2017 Tela Botanica <accueil@tela-botanica.org>
*/
class GestionWidget extends Cel {
// le champ is_type / est_type est traité dans services/CelWidgetManager car traite les différentes valeurs anvoyés par l'interface
private $champs_defaut_valeur = array("date_created" => "CURRENT_TIMESTAMP",
"date_updated" => "CURRENT_TIMESTAMP",
"taxo_restriction_type" => "referentiel",
"taxo_restriction_value" => "bdtfx",
"location_type" => "point");
/**
* Ajoute un paramètrage de widget de saisie
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return true ou false suivant le succès de l'opération
*/
public function obtenirWidget($parametres = array()) {
$requete_liste = "SELECT * FROM `project_settings` ";
$order = (isset($parametres['ordre'])) ? $parametres['ordre'] : 'project';
if ($parametres != array()) {
$requete_liste .= " WHERE ";
foreach ($parametres as $champ => $valeur) {
$requete_liste .= $champ." = '".$valeur."' AND ";
}
$requete_liste = rtrim($requete_liste, " AND ");
}
$requete_liste .= " ORDER BY ".$order;
$liste = Cel::db()->requeter($requete_liste);
return $liste;
}
/**
* Ajoute un paramètrage de widget de saisie
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return true ou false suivant le succès de l'opération
*/
public function ajouterWidget($parametres) {
$requete_id = "SELECT project_id as idprojet FROM project_settings WHERE project = '".$parametres['project']."'";
$resultat = Cel::db()->requeter($requete_id);
if ($resultat == array()) {
$requete_id = "SELECT max(`id`) + 1 as idprojet FROM project_settings";
$resultat = Cel::db()->requeter($requete_id);
}
$project_id = $resultat[0]['idprojet'];
if (array_diff_key($this->champs_defaut_valeur, $parametres)) {
$parametres = array_merge($parametres, array_diff_key($this->champs_defaut_valeur, $parametres));
}
$requete_insertion = 'INSERT INTO project_settings '.
'(project_id, '.implode(array_keys($parametres), ', ').') VALUES ("'.$project_id.'", '.implode(Cel::db()->proteger($parametres), ', ').')';
$requete_insertion = str_replace("'CURRENT_TIMESTAMP'", 'CURRENT_TIMESTAMP', $requete_insertion);
$resultat_ajout = Cel::db()->executer($requete_insertion);
$retour = true;
if ($resultat_ajout === false) {
$retour = false;
$msg = "Erreur de creation d'un widget : $resultat_ajout";
$this->logger('CEL_bugs', $msg);
}
return $retour;
}
/**
* Modifie une ou plusieurs observations grâce aux paramètres fournis
*
* @param int $utilisateur id utilisateur du proprietaire de l'observation
* @param mixed $ordre ordre(s) observation(s) relatif(s) à l'utilisateur: un seul ordre ou bien "ordre1,ordre2,ordre3" etc...
* @param array $parametres tableau indexé avec les mêmes noms de champs que la bdd
*
* @return true ou false suivant le succès de l'opération
*/
public function modifierWidget($projet, $langue, $parametres) {
$requete_insertion = 'UPDATE project_settings SET ';
$modifs = array_map(function($value, $key) {
return $key.'="'.$value.'"';
}, array_values($parametres), array_keys($parametres));
$requete_insertion .= implode(', ', $modifs).' WHERE project = "'.$projet.'" AND language = "'.$langue.'";' ;
//print_r($requete_insertion);
$resultat_ajout = Cel::db()->executer($requete_insertion);
$retour = true;
if ($resultat_ajout === false) {
$retour = false;
$msg = "Erreur de creation d'un widget : $resultat_ajout";
$this->logger('CEL_bugs', $msg);
} else {
if (isset($parametres['est_type']) && $parametres['est_type']) $this->modifierTypeWidget($projet, $parametres);
}
return $retour;
}
private function modifierTypeWidget($projet, $parametres) {
$params_type = array('type_localisation', 'type_espece', 'milieux','champs_supp');
//print_r(array_intersect_keys($parametres, $params_type));exit;
}
}