/** * 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); } } } } }
public function groupeAction($id) { $filterArray = function ($value) { if (is_numeric($value)) { return $value; } }; $this->definirVariablesCommunes(); $this->view->setVar("titre", "Navigateur"); if (isset($this->getDi()->getConfig()->configurations["defaut"])) { $xmlPath = $this->getDi()->getConfig()->configurations["defaut"]; } else { $xmlPath = $this->getDi()->getConfig()->configurationsDir . "defaut" . '.xml'; } $filemtime = filemtime($xmlPath); $this->view->setVar("configuration", "defaut?v={$filemtime}"); $arrayGroupeCoucheId = array_filter(explode(",", $id), $filterArray); $couches = array(); foreach ($arrayGroupeCoucheId as $key => $value) { $couche = IgoGroupeCouche::find("groupe_id={$value}"); if (count($couche) == 0) { continue; } foreach ($couche as $value) { if (is_numeric($value->couche_id)) { $couches[] = $value->couche_id; } else { $this->dispatcher->forward(array("controller" => "error", "action" => "error404")); return; } } } if (count($couches) >= 1) { $this->view->setVar("couche", implode(',', $couches) . "?v=" . md5(rand(1000, 9999999))); } else { $this->view->setVar("avertissement", "Aucun groupe n'a été trouvé avec le(s) id(s) suivant :" . implode(";", $arrayGroupeCoucheId)); $this->view->setVar("couche", "null"); } }
function obtenirGroupeCouche($coucheId) { $groupes = IgoGroupeCouche::find("couche_id=" . $coucheId); // TODO cleanup $in = ''; foreach ($groupes as $value) { $in .= $value->groupe_id . ','; } return substr($in, 0, strlen($in) - 1); }