'...', * 'om_collectivite' '...' * 'valeur' => '...', * 'delete' => '...', * ) * @return string Le résultat du traitement */ public function create_or_delete($request_data) { $_POST = array(); // Check DATA if (isset($request_data["libelle_profil"]) === false && isset($request_data["liste_droits"]) === false) { $this->setMessage(__("Le paramètre libelle_profil ou liste_droits est obligatoire.")); return $this->BAD_DATA; } $delete = false; if (isset($request_data["delete"]) === true) { $delete = $this->f->get_boolean_from_string($request_data["delete"]); } // Récupération de l'identifiant de l'om_profil $om_profil = $this->get_om_profil($request_data["libelle_profil"]); if ($om_profil === false) { $this->setMessage(__("Le paramètre libelle_intructeur est introuvable.")); return $this->BAD_DATA; } // Pour chaque droit foreach (explode(' ', $request_data["liste_droits"]) as $droit) { $droit = trim($droit); // Vérifier son existance $om_droit = $this->get_om_droit($droit); if ($om_droit === false && $delete === false) { // Effectuer l'action : Ajout $sucess = $this->creation_om_droit($droit, $om_profil); if ($sucess === false) { $this->setMessage(__("Erreur lors de la création du droit ".$droit.".")); return $this->BAD_DATA; } } if ($om_droit !== false && $delete) { // Effectuer l'action : Suppression $sucess = $this->suppression_om_droit($om_droit); if ($sucess === false) { $this->setMessage(__("Erreur lors de la suppression du droit ".$droit.".")); return $this->BAD_DATA; } } } 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_om_droit($libelle_droit, $om_profil) { $om_droit = $this->f->get_inst__om_dbform(array( "obj" => "om_droit", "idx" => "]", )); $valAuto = array(); foreach($om_droit->champs as $value) { $valAuto[$value] = null; } $valAuto['libelle'] = $libelle_droit; $valAuto['om_profil'] = $om_profil; if ($om_droit->ajouter($valAuto) === false) { return false; } return $om_droit->valF['om_droit']; } /** * Cette methode prend les valeurs d'un om_droit pour le supprimer * et renvoit true si la suppression a été effectuée avec succès, false sinon. * * @param array $om_droit Les champs renseignés du om_droit. * @return boolean True si la suppression a été effectuée avec succès, false sinon. */ private function suppression_om_droit($om_droit) { $sql = sprintf( 'DELETE FROM %1$som_droit WHERE om_droit = \'%2$s\';', DB_PREFIXE, $this->f->db->escapeSimple($om_droit) ); $this->f->addToLog(sprintf('%s() La requête SQL est : %s', __METHOD__, $sql), DEBUG_MODE); $qres = $this->f->db->query($sql); $this->f->isDatabaseError($qres); return true; } /** * Cette méthode prend le libellé d'un om_parametre 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 l'om_parametre. * @param int $collectivite_id Id de la collectivité auquel le parametre doit être liée. * @return int L'identifiant du parametre. */ private function get_om_profil($libelle) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT om_profil FROM %1$som_profil WHERE om_profil.libelle = \'%2$s\'', DB_PREFIXE, $this->f->db->escapeSimple($libelle) ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("L'om_profil passé en paramètre n'existe pas.")); return false; } $this->om_profil = $qres["result"]; return $this->om_profil; } /** * Cette méthode prend le libellé d'un om_parametre 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 l'om_parametre. * @param int $collectivite_id Id de la collectivité auquel le parametre doit être liée. * @return int L'identifiant du parametre. */ private function get_om_droit($libelle) { $qres = $this->f->get_one_result_from_db_query( sprintf( 'SELECT om_droit FROM %1$som_droit WHERE om_droit.libelle = \'%2$s\' AND om_droit.om_profil = \'%3$s\'', DB_PREFIXE, $this->f->db->escapeSimple($libelle), $this->f->db->escapeSimple($this->om_profil) ), array( "origin" => __METHOD__, ) ); if ($qres["result"] === null) { $this->setMessage(__("L'om_droit passé en paramètre n'existe pas.")); return false; } return $qres["result"]; } } ?>