3 class mw_users_sources_invitations extends mw_controller{
9 var $morceau_status_id;
15 if(($this->status = $data->source_status()) === false){
16 return "Impossible de lire la liste des status de source";
18 foreach($this->status as $id_source_status => $source_status){
19 if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
20 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
21 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
22 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
24 if(!isset($this->album_status_id) || !isset($this->morceau_status_id) || !isset($this->album_status_id)){
26 if(!isset($this->album_status_id)) $inconnus .= ($inconnus ? ", " : "")."album";
27 if(!isset($this->morceau_status_id)) $inconnus .= ($inconnus ? ", " : "")."morceau";
28 if(!isset($this->piste_status_id)) $inconnus .= ($inconnus ? ", " : "")."piste";
29 return "Types de source inconnu: ".$inconnus;
31 if(!($this->user = $env->user())){
32 return "Vous devez être identifié pour accéder à cette page";
40 if(($sources_access = $data->sources_access()) === false){
41 $env->erreur("Impossible de lire les types d'access");
44 if(($groupes = $data->groupes($this->user["id"])) === false){
45 $env->erreur("Impossible de lire la liste des groupes");
48 if(($invitations = $data->sources_invitations($groupes["list"], $this->user["id"])) === false){
49 $env->erreur("Impossible de lire la liste des invitations");
52 foreach($invitations["list"] as $id_invitation => $invitation){
53 if(!($user = $data->user_by_id($invitation["id_user"]))){
54 $env->erreur("impossible de lire les informations de l'utilisateur pour une invitation");
57 $invitations["list"][$id_invitation]["user"] = $user;
58 if(!($source = $data->source($invitation["id_source"]))){
59 $env->erreur("impossible de lire les informations de la source pour une invitation");
62 $invitations["list"][$id_invitation]["source"] = $source;
64 if(($groupes = $data->groupes()) === false){
65 $env->erreur("Impossible de lire la liste des groupes");
68 $env->set_out("user", $this->user);
69 $env->set_out("groupes", $groupes);
70 $env->set_out("sources_access", $sources_access);
71 $env->set_out("invitations", $invitations);
72 $env->set_out("status", $this->status);
75 function source_groupes(){
78 if(!($source = $data->source($_GET[$env->param("id")], true))){
79 $env->erreur("Impossible de lire les informations de la source");
82 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
83 if(!$source["permissions"]["admin"]){
84 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
87 if(($sources_access = $data->sources_access()) === false){
88 $env->erreur("Impossible de lire les types d'access");
91 if(($groupes = $data->groupes()) === false){
92 $env->erreur("Impossible de lire la liste des groupes");
97 $invitations = $data->list_sml_sources_invitations(
101 array("id_source", "eq", $source["id"])
107 $env->erreur("Impossible de lire la liste des invitations pour cette source");
110 foreach($invitations["list"] as $id_invitation => $invitation){
111 if(isset($groupes["list"][$invitation["id_author"]])){
112 $invitations["list"][$id_invitation]["author"] = $groupes["list"][$invitation["id_author"]];
113 unset($groupes["list"][$invitation["id_author"]]);
117 foreach($source["groupes"] as $id_groupe => $groupe){
118 if(isset($groupes["list"][$id_groupe])){
119 unset($groupes["list"][$id_groupe]);
123 $env->set_out("groupes", $groupes);
124 $env->set_out("sources_access", $sources_access);
125 $env->set_out("source", $source);
126 $env->set_out("invitations", $invitations);
129 function invite_groupe(){
131 $data = $env->data();
132 if(!($source = $data->source($_GET[$env->param("id")], true))){
133 $env->erreur("Impossible de lire les informations de la source");
136 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
137 if(!$source["permissions"]["admin"]){
138 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
141 if(($sources_access = $data->sources_access()) === false){
142 $env->erreur("Impossible de lire les types d'access");
145 if(!($groupe = $data->groupe($_POST["id_groupe"]))){
146 $env->erreur("impossible de lire les informations du groupe");
148 if(!$_POST["id_sources_access"] || !isset($sources_access[$_POST["id_sources_access"]])){
149 $env->erreur("identifiant d'access de source incorrect");
152 !$data->add_sml_sources_invitations(
154 "id_user" => $this->user["id"],
155 "id_source" => $source["id"],
156 "id_author" => $groupe["id"],
157 "id_sources_access" => $_POST["id_sources_access"],
158 "date_invitation" => date("Y-m-d H:i:s")
162 $env->erreur("Impossible d'ajouter l'invitation");
166 $env->url("users/sources_invitations"),
167 "l'invitation a été ajoutée"
171 function annule_invitation_groupe(){
173 $data = $env->data();
174 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
175 $env->erreur("Impossible de lire les informations de l'invitation");
178 if(!($morceau = $data->source($invitation["id_source"], true))){
179 $env->erreur("Impossible de lire les informations du morceau");
182 $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
183 if(!$morceau["permissions"]["admin"]){
184 $env->erreur("vous n'avez pas la permission d'editer les groupes du morceau");
187 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
188 $env->erreur("Impossible d'annuler l'invitation");
192 $env->url("users/sources_invitations"),
193 "l'invitation a été annulée"
197 function accepter_invitation_groupe(){
199 $data = $env->data();
200 if(($groupes = $data->groupes($this->user["id"])) === false){
201 $env->erreur("Impossible de lire la liste des groupes");
204 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
205 $env->erreur("Impossible de lire les informations de l'invitation");
208 if(!($source = $data->source($invitation["id_source"], true))){
209 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
212 if(!isset($groupes["list"][$invitation["id_author"]])){
213 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
216 if(($HAS_THIS_GROUP = $data->source_has_groupe($source["id"], $invitation["id_author"])) === false){
217 $env->erreur("Impossible de savoir si ce groupe a déjà accès à cette source");
221 $env->erreur("le groupe a déjà accès à cette source");
224 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
225 $env->erreur("Impossible d'effacer l'invitation");
228 if(!$data->add_source_groupe($source["id"], $invitation["id_author"], $invitation["id_sources_access"])){
229 $env->erreur("Impossible de vous ajouter des droits sur la source");
233 $env->url("users/sources_invitations"),
234 "l'invitation a été acceptée"
238 function refuser_invitation_groupe(){
240 $data = $env->data();
241 if(($groupes = $data->groupes($this->user["id"])) === false){
242 $env->erreur("Impossible de lire la liste des groupes");
245 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
246 $env->erreur("Impossible de lire les informations de l'invitation");
249 if(!($source = $data->source($invitation["id_source"], true))){
250 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
253 if(!isset($groupes["list"][$invitation["id_author"]])){
254 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
257 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
258 $env->erreur("Impossible d'effacer l'invitation");
262 $env->url("users/sources_invitations"),
263 "l'invitation a été refusée"
267 function del_groupe(){
269 $data = $env->data();
270 if(!($source = $data->source($_GET[$env->param("id")], true))){
271 $env->erreur("Impossible de lire les informations de la source");
274 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
275 if(!$source["permissions"]["admin"]){
276 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
279 $source_class = $this->status[$source["status"]]["nom"];
280 if($source_class == "album"){
281 $redirect = $env->url("users/albums/groupes", array("id" => $source["id"]));
283 elseif($source_class == "morceau"){
284 $redirect = $env->url("users/morceaux/groupes", array("id" => $source["id"]));
286 elseif($source_class == "piste"){
287 $redirect = $env->url("users/pistes/groupes", array("id" => $source["id"]));
290 $env->erreur("type de source inconnu");
293 if(!($groupe = $data->groupe($_GET[$env->param("groupe")]))){
294 $env->erreur("impossible de lire les informations du groupe");
297 $ID_UNIQUE_ADMIN = false;
298 foreach($source["groupes"] as $id_groupe => $source_groupe){
299 if($source_groupe["id_groupe_status"] == $data->id_groupe_status_admin()){
300 if(!$ID_UNIQUE_ADMIN) $ID_UNIQUE_ADMIN = $id_groupe;
302 $ID_UNIQUE_ADMIN = true;
307 if(!$ID_UNIQUE_ADMIN){
308 $env->erreur("aucun administrateur sur cette source");
311 if($ID_UNIQUE_ADMIN !== true){
312 if($groupe["id"] == $ID_UNIQUE_ADMIN){
313 $env->erreur("vous ne pouvez pas enlever l'unique administrateur");
317 if(!$data->del_source_groupe($source["id"], $groupe["id"])){
318 $env->erreur("Impossible d'enlever le groupe");
323 "le groupe a été enlevé"