null, * 'libelle' => null, * 'description' => null, * 'chef' => null, * 'debut' => null, * 'fin' => null, * 'om_collectivite' * 'delete' => false, * ) * @return string Le résultat du traitement */ public function update_or_create($request_data) { // Check DATA if (isset($request_data["libelle"]) === false && isset($request_data["code"]) === false ) { return $this->BAD_DATA; } $delete = false; if (isset($request_data["delete"]) === true) { $delete = $this->f->get_boolean_from_string($request_data["delete"]); } // Check and Get collectivité if (empty($request_data["om_collectivite"]) === true ) { $request_data["om_collectivite"] = "agglo"; } $request_data['om_collectivite'] = $this->get_collectivite($request_data["om_collectivite"]); // Check If Exists direction $direction = $this->get_direction($request_data["code"], $request_data["libelle"], $request_data['om_collectivite']); // If Exists Update or delete direction if ($direction == true ){ if ($delete){ $sql = "DELETE FROM ".DB_PREFIXE."direction"; $sql .= " WHERE direction=".$direction." AND om_collectivite=".$request_data['om_collectivite'].";"; }else{ $sql = "UPDATE ".DB_PREFIXE."direction SET code = '".$request_data["code"]."', libelle = '".$request_data["libelle"]."'"; // 'description' => null, if (empty($request_data["description"]) === false) { $sql .= ", description = '".$request_data["description"]."'"; } // 'chef' => null, if (empty($request_data["chef"]) === false) { $sql .= ", chef = '".$request_data["chef"]."'"; } // 'debut' => null, if (empty($request_data["debut"]) === false) { $sql .= ", debut = '".$request_data["debut"]."'"; } // 'fin' => null, if (empty($request_data["fin"]) === false) { $sql .= ", fin = '".$request_data["fin"]."'"; } $sql .= " WHERE direction=".$direction." AND om_collectivite=".$request_data['om_collectivite'].";"; } }else{ if (!$delete){ $sucess = $this->creation_direction($request_data, $request_data['om_collectivite']); if (!$sucess) return $this->BAD_DATA; return $this->OK; }else{ return $this->BAD_DATA; } } $qres = $this->f->db->query($sql); $this->f->isDatabaseError($qres); return $this->OK; } /** * Cette methode prend les valeurs d'un om_parametre pour le créer * et renvoit l'identifiant du om_parametre créer ou false * * @param array $om_parametre_valeur Les champs renseignés du om_parametre. * @return int L'identifiant de om_parametre. */ private function creation_direction($direction_valeur, $collectivite_id) { $direction = $this->f->get_inst__om_dbform(array( "obj" => "direction", "idx" => "]", )); $valAuto = array(); foreach($direction->champs as $value) { $valAuto[$value] = null; } foreach ($direction_valeur as $colonne => $valeur) { $valAuto[$colonne] = $valeur; } $valAuto["om_collectivite"] = $collectivite_id; if ($direction->ajouter($valAuto) === false) { $this->setMessage(__("La direction n'a pas été créée.")); return false; } $this->setMessage(__("La direction a été créée avec succès.")); return $direction->valF['direction']; } /** * Cette méthode prend le libellé et le code d'une direction et le transforme en * son identifiant en le trouvant dans la base de données et en le * sauvegardant pour réutilisation * * @param string $parametre_libelle Libellé de la direction. * @param string $parametre_code Code de la direction. * @param int $collectivite_id Id de la collectivité auquel la direction doit être liée. * @return int L'identifiant de la direction. */ private function get_direction($parametre_code, $parametre_libelle, $collectivite_id) { if (array_key_exists($parametre_code, $this->direction) === false) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT direction FROM %1$sdirection WHERE direction.code = \'%2$s\' AND direction.libelle = \'%3$s\' AND direction.om_collectivite = %4$s', DB_PREFIXE, $this->f->db->escapeSimple($parametre_code), $this->f->db->escapeSimple($parametre_libelle), $collectivite_id ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("La direction dont le code et le libelle sont passée en paramètre n'existe pas.")); return false; } $this->collectivite[$parametre_code] = $qres["result"]; } return $this->collectivite[$parametre_code]; } /** * Cette méthode prend le libellé de la collectivité et la transforme en * son identifiant en la trouvant dans la base de données et en la * sauvegardant pour réutilisation (ex: la même collectivité pour * le pétitionnaire que la demande) * * @param string $collectivite_libelle Libellé de la collectivité. * @return int L'identifiant de la collectivité. */ private function get_collectivite($collectivite_libelle) { if (array_key_exists($collectivite_libelle, $this->collectivite) === false) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT om_collectivite FROM %1$som_collectivite WHERE om_collectivite.libelle = \'%2$s\'', DB_PREFIXE, $this->f->db->escapeSimple($collectivite_libelle) ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("La collectivité passée en paramètre n'existe pas.")); return false; } $this->collectivite[$collectivite_libelle] = $qres["result"]; } return $this->collectivite[$collectivite_libelle]; } } ?>