/** * Enlève d'un groupe les couches, sauf celles spécifiées * @param string $id_couches Liste des couches à conserver * @param int $groupe_id * @param int $profil_id Id du profil propriétaire */ public function enleverCouchesDuGroupe($id_couches, $groupe_id, $profil_id) { if (!$id_couches) { $id_couches = 0; } $estAdmin = $this->getDi()->getSession()->get("info_utilisateur")->estAdmin; if (!$estAdmin) { //Récupérer la liste des profils du pilote $profils = $this->getDi()->getSession()->get("info_utilisateur")->profils; $liste_profil_id_utilisateur = array(); foreach ($profils as $profil) { array_push($liste_profil_id_utilisateur, $profil["id"]); } $liste_profil_id_utilisateur = implode(",", $liste_profil_id_utilisateur); } //Récupérer les couches qui sont à enlever du groupe $igoGroupeCouches = IgoGroupeCouche::find("groupe_id = {$groupe_id} AND couche_id NOT IN ({$id_couches})"); foreach ($igoGroupeCouches as $igoGroupeCouche) { //L'utilisateur n'est pas un pilote if (!$estAdmin) { //Vérifier si l'utilisateur à le droit d'enlever la couche du groupe $igoVuePermissionsPourCouches = IgoVuePermissionsPourCouches::findFirst("couche_id = {$igoGroupeCouche->couche_id} AND groupe_id = {$groupe_id} AND profil_id IN({$liste_profil_id_utilisateur})"); } //L'utilisateur a le droit d'enlever la couche du groupe if ($estAdmin || $igoVuePermissionsPourCouches && $igoVuePermissionsPourCouches->est_association) { //Supprimer les associations de cette couche dans les contextes $igoCoucheContextes = IgoCoucheContexte::find("groupe_id = {$igoGroupeCouche->id}"); foreach ($igoCoucheContextes as $igoCoucheContexte) { if (!$igoCoucheContextes->delete()) { foreach ($igoCoucheContextes->getMessages() as $message) { $this->flash->error($message); } } } if (!$igoGroupeCouche->delete()) { foreach ($igoGroupeCouche->getMessages() as $message) { $this->flash->error($message); } } } } }
function obtenirPermission($couche_id) { global $app; if (is_null($app->getDI()->getConfig()->database)) { return null; } else { $conditions = "profil_id in (" . obtenirUtilisateurProfilsInQuery() . ") AND (couche_id = ?1)"; $parameters = array(1 => $couche_id); $permission = IgoVuePermissionsPourCouches::findFirst(array($conditions, "bind" => $parameters, "columns" => "couche_id, bool_or(est_lecture) as est_lecture, bool_or(est_ecriture) as est_ecriture, bool_or(est_analyse) as est_analyse, bool_or(est_export) as est_export", "group" => "couche_id")); return $permission; } }