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");
49 foreach($groupes["list"] as $id_groupe => $groupe) $groupes_in .= ($groupes_in ? "," : "").$id_groupe;
50 $invitations = array("list" => array(), "total" => 0);
54 $invitations = $data->list_sml_sources_invitations(
57 "where"=> "id_author IN(".$groupes_in.") OR id_user=".$this->user["id"],
58 "order_by" => "date_invitation",
64 $env->erreur("Impossible de lire la liste des invitations");
68 foreach($invitations["list"] as $id_invitation => $invitation){
69 if(!($user = $data->user_by_id($invitation["id_user"]))){
70 $env->erreur("impossible de lire les informations de l'utilisateur pour une invitation");
73 $invitations["list"][$id_invitation]["user"] = $user;
74 if(!($source = $data->source($invitation["id_source"]))){
75 $env->erreur("impossible de lire les informations de la source pour une invitation");
78 $invitations["list"][$id_invitation]["source"] = $source;
80 if(($groupes = $data->groupes()) === false){
81 $env->erreur("Impossible de lire la liste des groupes");
84 $env->set_out("user", $this->user);
85 $env->set_out("groupes", $groupes);
86 $env->set_out("sources_access", $sources_access);
87 $env->set_out("invitations", $invitations);
88 $env->set_out("status", $this->status);
91 function source_groupes(){
94 if(!($source = $data->source($_GET[$env->param("id")], true))){
95 $env->erreur("Impossible de lire les informations de la source");
98 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
99 if(!$source["permissions"]["admin"]){
100 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
103 if(($sources_access = $data->sources_access()) === false){
104 $env->erreur("Impossible de lire les types d'access");
107 if(($groupes = $data->groupes()) === false){
108 $env->erreur("Impossible de lire la liste des groupes");
111 if(($invitations = $data->list_sml_sources_invitations(array("index_name" => "id", "where"=> "id_source=".$source["id"]))) === false){
112 $env->erreur("Impossible de lire la liste des invitations pour cette source");
115 foreach($invitations["list"] as $id_invitation => $invitation){
116 if(isset($groupes["list"][$invitation["id_author"]])){
117 $invitations["list"][$id_invitation]["author"] = $groupes["list"][$invitation["id_author"]];
118 unset($groupes["list"][$invitation["id_author"]]);
122 foreach($source["groupes"] as $id_groupe => $groupe){
123 if(isset($groupes["list"][$id_groupe])){
124 unset($groupes["list"][$id_groupe]);
128 $env->set_out("groupes", $groupes);
129 $env->set_out("sources_access", $sources_access);
130 $env->set_out("source", $source);
131 $env->set_out("invitations", $invitations);
134 function invite_groupe(){
136 $data = $env->data();
137 if(!($source = $data->source($_GET[$env->param("id")], true))){
138 $env->erreur("Impossible de lire les informations de la source");
141 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
142 if(!$source["permissions"]["admin"]){
143 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
146 if(($sources_access = $data->sources_access()) === false){
147 $env->erreur("Impossible de lire les types d'access");
150 if(!($groupe = $data->groupe($_POST["id_groupe"]))){
151 $env->erreur("impossible de lire les informations du groupe");
153 if(!$_POST["id_sources_access"] || !isset($sources_access[$_POST["id_sources_access"]])){
154 $env->erreur("identifiant d'access de source incorrect");
157 !$data->add_sml_sources_invitations(
159 "id_user" => $this->user["id"],
160 "id_source" => $source["id"],
161 "id_author" => $groupe["id"],
162 "id_sources_access" => $_POST["id_sources_access"],
163 "date_invitation" => date("Y-m-d H:i:s")
167 $env->erreur("Impossible d'ajouter l'invitation");
171 $env->url("users/sources_invitations"),
172 "l'invitation a été ajoutée"
176 function annule_invitation_groupe(){
178 $data = $env->data();
179 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
180 $env->erreur("Impossible de lire les informations de l'invitation");
183 if(!($morceau = $data->source($invitation["id_source"], true))){
184 $env->erreur("Impossible de lire les informations du morceau");
187 $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
188 if(!$morceau["permissions"]["admin"]){
189 $env->erreur("vous n'avez pas la permission d'editer les groupes du morceau");
192 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
193 $env->erreur("Impossible d'annuler l'invitation");
197 $env->url("users/sources_invitations"),
198 "l'invitation a été annulée"
202 function accepter_invitation_groupe(){
204 $data = $env->data();
205 if(($groupes = $data->groupes($this->user["id"])) === false){
206 $env->erreur("Impossible de lire la liste des groupes");
209 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
210 $env->erreur("Impossible de lire les informations de l'invitation");
213 if(!($source = $data->source($invitation["id_source"], true))){
214 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
217 if(!isset($groupes["list"][$invitation["id_author"]])){
218 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
221 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
222 if($source["permissions"]["contributeur"]){
223 $env->erreur("vous avez déjà accès à cette source");
226 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
227 $env->erreur("Impossible d'effacer l'invitation");
230 if(!$data->add_source_groupe($source["id"], $invitation["id_author"], $invitation["id_sources_access"])){
231 $env->erreur("Impossible de vous ajouter des droits sur la source");
235 $env->url("users/sources_invitations"),
236 "l'invitation a été acceptée"
240 function refuser_invitation_groupe(){
242 $data = $env->data();
243 if(($groupes = $data->groupes($this->user["id"])) === false){
244 $env->erreur("Impossible de lire la liste des groupes");
247 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
248 $env->erreur("Impossible de lire les informations de l'invitation");
251 if(!($source = $data->source($invitation["id_source"], true))){
252 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
255 if(!isset($groupes["list"][$invitation["id_author"]])){
256 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
259 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
260 $env->erreur("Impossible d'effacer l'invitation");
264 $env->url("users/sources_invitations"),
265 "l'invitation a été refusée"
269 function del_groupe(){
271 $data = $env->data();
272 if(!($source = $data->source($_GET[$env->param("id")], true))){
273 $env->erreur("Impossible de lire les informations de la source");
276 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
277 if(!$source["permissions"]["admin"]){
278 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
281 $source_class = $this->status[$source["status"]]["nom"];
282 if($source_class == "album"){
283 $redirect = $env->url("users/albums/groupes", array("id" => $source["id"]));
285 elseif($source_class == "morceau"){
286 $redirect = $env->url("users/morceaux/groupes", array("id" => $source["id"]));
288 elseif($source_class == "piste"){
289 $redirect = $env->url("users/pistes/groupes", array("id" => $source["id"]));
292 $env->erreur("type de source inconnu");
295 if(!($groupe = $data->groupe($_GET[$env->param("groupe")]))){
296 $env->erreur("impossible de lire les informations du groupe");
299 $ID_UNIQUE_ADMIN = false;
300 foreach($source["groupes"] as $id_groupe => $source_groupe){
301 if($source_groupe["id_groupe_status"] == $data->id_groupe_status_admin()){
302 if(!$ID_UNIQUE_ADMIN) $ID_UNIQUE_ADMIN = $id_groupe;
304 $ID_UNIQUE_ADMIN = true;
309 if(!$ID_UNIQUE_ADMIN){
310 $env->erreur("aucun administrateur sur cette source");
313 if($ID_UNIQUE_ADMIN !== true){
314 if($groupe["id"] == $ID_UNIQUE_ADMIN){
315 $env->erreur("vous ne pouvez pas enlever l'unique administrateur");
319 if(!$data->del_source_groupe($source["id"], $groupe["id"])){
320 $env->erreur("Impossible d'enlever le groupe");
325 "le groupe a été enlevé"