Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3192 → Rev 3193

/trunk/jrest/services/CelWidgetManager.php
25,15 → 25,47
 
class CelWidgetManager extends Cel {
 
// certains paramètres apparaissent plusieurs fois car ils ont des alias
// dans certains widgets
// correspondance entre les champs de l'interface et les champs de la BD (format 2018 / 2019)
private $parametres_autorises = array(
'projet' => 'projet',
'type' => 'type',
'esttype' => 'est_type',
'langue' => 'langue',
'order' => 'order'
'projet' => 'project',
'type' => 'type',
'esttype' => 'istype',
'langue' => 'language',
'order' => 'order'
);
private $correspondance_config_widget= array(
'projet' => 'project',
'langue' => 'language',
'titre' => 'title',
'logo' => 'logo',
'description' => 'description',
'type' => 'type',
'est_type' => 'is_type',
'style_css' => 'css_style',
'image_fond' => 'image_font',
'date_creation' => 'date_created',
'type_especes' => 'taxo_restriction_type',
'referentiel' => 'taxo_restriction_value',
'type_localisation' => 'location_type',
'localisation' => 'location',
'milieux' => 'environments',
'motscles' => 'project_tag_name'
);
private $correspondance_champs_etendus = array(
"key" => "field_id",
"element" => "data_type",
"mandatory" => "is_mandatory",
"unit" => "unit"
);
private $correspondance_champs_etendus_trad = array(
"key" => "extended_field_id",
"name" => "label",
"description" => "description",
"fieldValues" => "default_value"
);
 
public function getRessource() {
return $this->getElement(array());
42,54 → 74,74
/**
* Méthode appelée avec une requête de type GET.
*/
public function getElement($params = array()) {
switch(@strtolower($params[0])) {
public function getElement($params = array()) {
switch(@strtolower($params[0])) {
case 'widget':
$this->getWidget();
break;
 
 
case 'champsetendus';
$this->getChampsEtendus();
break;
default:
$this->getWidget();
}
}
 
 
public function createElement($requeteDonnees) {
unset($requeteDonnees['signup_submit']);
if (isset($requeteDonnees['champs-supp'])) {
$gestionchamps = new GestionChampsEtendus2($this->config);
$champs = $this->traiterCorrespondanceChampsEtendusInterfaceBD($requeteDonnees); //var_dump($champs);exit;
$liste = $gestionchamps->ajouterParProjet($champs);
unset($requeteDonnees['champs-supp']);
}
$requeteDonnees['est_type'] = (isset($requeteDonnees['est_type']) && $requeteDonnees['est_type']== "on") ? '1' : '0';
$manager = new GestionWidget($this->config);
$requeteDonnees = $this->traiterCorresponceConfigWidgetInterfaceBD($requeteDonnees);
$retour = $manager->ajouterWidget($requeteDonnees);
 
$this->envoyerJson($retour);
 
}
 
public function updateElement($uid,$params) {
$retour = "";
if (isset($params['projet']) && isset($params['langue'])) {
$manager = new GestionWidget($this->config);
$params['est_type'] = (isset($params['est_type']) && $params['est_type']== "on") ? '1' : '0';
$retour = $manager->modifierWidget($params['projet'], $params['langue'], $params);
 
$requeteDonnees = $this->traiterCorresponceConfigWidgetInterfaceBD($params);
$retour = $manager->modifierWidget($params['projet'], $params['langue'], $requeteDonnees);
}
$this->envoyerJson($retour);
return "ff";
 
}
 
private function getWidget() {
$criteres = $this->traiterParametresAutorises($_GET);
$criteres = $this->traiterParametresAutorises($_GET);
$manager = new GestionWidget($this->config);
$liste = $manager->obtenirWidget($criteres);
$liste = $this->traiterCorresponceConfigWidgetBDInterface($liste);
 
 
$this->envoyerJson($liste);
}
private function getChampsEtendus() {
$champs = new GestionChampsEtendus2($this->config);
$projet = (isset($_GET['projet'])) ? $_GET['projet'] : "";
$langue = (isset($_GET['langue'])) ? $_GET['langue'] : "fr";
$liste = $champs->consulterProjetChampsEtendus($projet, $langue);
$liste = $this->traiterCorrespondanceChampsEtendusBDInterface($liste);
$this->envoyerJson($liste);
}
 
 
protected function traiterParametresAutorises(Array $parametres) {
$parametres_traites = array();
 
foreach($parametres as $cle => $valeur) {
if(is_string($valeur) && !trim($valeur)) continue;
if(isset($this->parametres_autorises[$cle])) {
98,7 → 150,91
}
return $parametres_traites;
}
protected function traiterCorresponceConfigWidgetBDInterface(Array $widgets) {
$parametres_traites = array();
$corresp = array_flip($this->correspondance_config_widget);
foreach($widgets as $id => $widget) {
foreach($widget as $cle => $valeur) {
if(is_string($valeur) && !trim($valeur)) continue;
if(isset($corresp[$cle])) {
$parametres_traites[$id][$corresp[$cle]] = $valeur;
}
}
}
return $parametres_traites;
}
protected function traiterCorresponceConfigWidgetInterfaceBD(Array $parametres) {
$parametres_traites = array();
$corresp = $this->correspondance_config_widget;
foreach($parametres as $cle => $valeur) {
if(is_string($valeur) && !trim($valeur)) continue;
if(isset($corresp[$cle])) {
$parametres_traites[$corresp[$cle]] = $valeur;
}
}
return $parametres_traites;
}
protected function traiterCorrespondanceChampsEtendusInterfaceBD(Array $champsinterface) {
$champsrequete = array(); $i = 0;
$champssupp = json_decode($champsinterface['champs-supp'], true);
// pour chaque champs-supp, mettre correspondance extended field et extended field trad
foreach ($champssupp as $champ) {
$champsrequete['ce'][$i]['project'] = $champsrequete['cet'][$i]['project'] = $champsinterface['projet'];
$champsrequete['cet'][$i]['language_iso_code'] = $champsinterface['langue'];
// pour la table extended fiels champs interface => champs bd
foreach ($this->correspondance_champs_etendus as $ci => $ce) {
if (isset($champ[$ci]) && $champ[$ci] != "") {
$champsrequete['ce'][$i][$ce] = $champ[$ci];
} else {
if ($ci == "mandatory") {
$champsrequete['ce'][$i][$ce] = "0";
} else {
$champsrequete['ce'][$i][$ce] = "";
}
}
}
// pour la table extended fiels trad champs interface => champs bd
foreach ($this->correspondance_champs_etendus_trad as $cit => $cr) {
if (isset($champ[$cit]) && is_array($champ[$cit])) {
$champsrequete['cet'][$i][$cr] = json_encode($champ[$cit]);
} elseif (isset($champ[$cit]) && $champ[$cit] != "") {
$champsrequete['cet'][$i][$cr] = $champ[$cit];
} else {
$champsrequete['cet'][$i][$cr] = "";
}
}
$i++;
}
return $champsrequete;
}
protected function traiterCorrespondanceChampsEtendusBDInterface(Array $champsrequete) {
$champssupp = array(); $i = 0;
foreach ($champsrequete as $champ) {
$champssupp[$champ['project']]['projet'] = $champ['project'];
$champssupp[$champ['project']]['langue'] = $champ['language_iso_code'];
// pour la table extended fiels champs interface => champs bd
foreach ($this->correspondance_champs_etendus as $ci => $ce) {
if (isset($champ[$ce]) && $champ[$ce] != "") {
$champssupp[$champ['project']]['champs-supp'][$i][$ci] = $champ[$ce];
} else {
$champssupp[$champ['project']]['champs-supp'][$i][$ci]= "";
}
}
// pour la table extended fiels trad champs interface => champs bd
foreach ($this->correspondance_champs_etendus_trad as $cet => $cr) {
if (isset($champ[$cr]) && $champ[$cr] != "") {
$champssupp[$champ['project']]['champs-supp'][$i][$cet]= $champ[$cr];
} else {
$champssupp[$champ['project']]['champs-supp'][$i][$cet]="";
}
}$i++;
}
return $champssupp;
}
 
 
}
?>
?>