3 class mw_users_sources_invitations extends mw_controller{
7 public $album_status_id;
8 public $morceau_status_id;
9 public $piste_status_id;
11 public function validate(){
14 if(($this->status = $data->source_status()) === false){
15 return "Impossible de lire la liste des status de source";
17 foreach($this->status as $id_source_status => $source_status){
18 if($source_status["nom"] == "album") $this->album_status_id = $id_source_status;
19 if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status;
20 if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status;
21 if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break;
23 if(!isset($this->album_status_id) || !isset($this->morceau_status_id) || !isset($this->album_status_id)){
25 if(!isset($this->album_status_id)) $inconnus .= ($inconnus ? ", " : "")."album";
26 if(!isset($this->morceau_status_id)) $inconnus .= ($inconnus ? ", " : "")."morceau";
27 if(!isset($this->piste_status_id)) $inconnus .= ($inconnus ? ", " : "")."piste";
28 return "Types de source inconnu: ".$inconnus;
30 if(!($this->user = $env->user())){
31 return "Vous devez être identifié pour accéder à cette page";
36 public function index(){
39 if(($sources_access = $data->sources_access()) === false){
40 $env->erreur("Impossible de lire les types d'access");
43 if(($groupes = $data->groupes($this->user["id"])) === false){
44 $env->erreur("Impossible de lire la liste des groupes");
47 if(($invitations = $data->sources_invitations($groupes["list"], $this->user["id"])) === false){
48 $env->erreur("Impossible de lire la liste des invitations");
51 foreach($invitations["list"] as $id_invitation => $invitation){
52 if(!($user = $data->user_by_id($invitation["id_user"]))){
53 $env->erreur("impossible de lire les informations de l'utilisateur pour une invitation");
56 $invitations["list"][$id_invitation]["user"] = $user;
57 if(!($source = $data->source($invitation["id_source"]))){
58 $env->erreur("impossible de lire les informations de la source pour une invitation");
61 $invitations["list"][$id_invitation]["source"] = $source;
63 if(($groupes = $data->groupes()) === false){
64 $env->erreur("Impossible de lire la liste des groupes");
67 $env->set_out("user", $this->user);
68 $env->set_out("groupes", $groupes);
69 $env->set_out("sources_access", $sources_access);
70 $env->set_out("invitations", $invitations);
71 $env->set_out("status", $this->status);
74 public function source_groupes(){
77 if(!($source = $data->source($_GET[$env->param("id")], true))){
78 $env->erreur("Impossible de lire les informations de la source");
81 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
82 if(!$source["permissions"]["admin"]){
83 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
86 if(($sources_access = $data->sources_access()) === false){
87 $env->erreur("Impossible de lire les types d'access");
90 if(($groupes = $data->groupes()) === false){
91 $env->erreur("Impossible de lire la liste des groupes");
96 $invitations = $data->list_sml_sources_invitations(
100 array("id_source", "eq", $source["id"])
106 $env->erreur("Impossible de lire la liste des invitations pour cette source");
109 foreach($invitations["list"] as $id_invitation => $invitation){
110 if(isset($groupes["list"][$invitation["id_author"]])){
111 $invitations["list"][$id_invitation]["author"] = $groupes["list"][$invitation["id_author"]];
112 unset($groupes["list"][$invitation["id_author"]]);
116 foreach($source["groupes"] as $id_groupe => $groupe){
117 if(isset($groupes["list"][$id_groupe])){
118 unset($groupes["list"][$id_groupe]);
122 $env->set_out("groupes", $groupes);
123 $env->set_out("sources_access", $sources_access);
124 $env->set_out("source", $source);
125 $env->set_out("invitations", $invitations);
128 public function invite_groupe(){
130 $data = $env->data();
131 if(!($source = $data->source($_GET[$env->param("id")], true))){
132 $env->erreur("Impossible de lire les informations de la source");
135 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
136 if(!$source["permissions"]["admin"]){
137 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
140 if(($sources_access = $data->sources_access()) === false){
141 $env->erreur("Impossible de lire les types d'access");
144 if(!($groupe = $data->groupe($_POST["id_groupe"]))){
145 $env->erreur("impossible de lire les informations du groupe");
147 if(!$_POST["id_sources_access"] || !isset($sources_access[$_POST["id_sources_access"]])){
148 $env->erreur("identifiant d'access de source incorrect");
151 !$data->add_sml_sources_invitations(
153 "id_user" => $this->user["id"],
154 "id_source" => $source["id"],
155 "id_author" => $groupe["id"],
156 "id_sources_access" => $_POST["id_sources_access"],
157 "date_invitation" => date("Y-m-d H:i:s")
161 $env->erreur("Impossible d'ajouter l'invitation");
165 $env->url("users/sources_invitations"),
166 "l'invitation a été ajoutée"
170 public function annule_invitation_groupe(){
172 $data = $env->data();
173 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
174 $env->erreur("Impossible de lire les informations de l'invitation");
177 if(!($morceau = $data->source($invitation["id_source"], true))){
178 $env->erreur("Impossible de lire les informations du morceau");
181 $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]);
182 if(!$morceau["permissions"]["admin"]){
183 $env->erreur("vous n'avez pas la permission d'editer les groupes du morceau");
186 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
187 $env->erreur("Impossible d'annuler l'invitation");
191 $env->url("users/sources_invitations"),
192 "l'invitation a été annulée"
196 public function accepter_invitation_groupe(){
198 $data = $env->data();
199 if(($groupes = $data->groupes($this->user["id"])) === false){
200 $env->erreur("Impossible de lire la liste des groupes");
203 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
204 $env->erreur("Impossible de lire les informations de l'invitation");
207 if(!($source = $data->source($invitation["id_source"], true))){
208 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
211 if(!isset($groupes["list"][$invitation["id_author"]])){
212 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
215 if(($HAS_THIS_GROUP = $data->source_has_groupe($source["id"], $invitation["id_author"])) === false){
216 $env->erreur("Impossible de savoir si ce groupe a déjà accès à cette source");
220 $env->erreur("le groupe a déjà accès à cette source");
223 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
224 $env->erreur("Impossible d'effacer l'invitation");
227 if(!$data->add_source_groupe($source["id"], $invitation["id_author"], $invitation["id_sources_access"])){
228 $env->erreur("Impossible de vous ajouter des droits sur la source");
232 $env->url("users/sources_invitations"),
233 "l'invitation a été acceptée"
237 public function refuser_invitation_groupe(){
239 $data = $env->data();
240 if(($groupes = $data->groupes($this->user["id"])) === false){
241 $env->erreur("Impossible de lire la liste des groupes");
244 if(!($invitation = $data->get_sml_sources_invitations("id", $_GET[$env->param("id")]))){
245 $env->erreur("Impossible de lire les informations de l'invitation");
248 if(!($source = $data->source($invitation["id_source"], true))){
249 $env->erreur("Impossible de lire les informations de la source pour cette invitation");
252 if(!isset($groupes["list"][$invitation["id_author"]])){
253 $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
256 if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
257 $env->erreur("Impossible d'effacer l'invitation");
261 $env->url("users/sources_invitations"),
262 "l'invitation a été refusée"
266 public function del_groupe(){
268 $data = $env->data();
269 if(!($source = $data->source($_GET[$env->param("id")], true))){
270 $env->erreur("Impossible de lire les informations de la source");
273 $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
274 if(!$source["permissions"]["admin"]){
275 $env->erreur("vous n'avez pas la permission d'editer les groupes de la source");
278 $source_class = $this->status[$source["status"]]["nom"];
279 if($source_class == "album"){
280 $redirect = $env->url("users/albums/groupes", array("id" => $source["id"]));
282 elseif($source_class == "morceau"){
283 $redirect = $env->url("users/morceaux/groupes", array("id" => $source["id"]));
285 elseif($source_class == "piste"){
286 $redirect = $env->url("users/pistes/groupes", array("id" => $source["id"]));
289 $env->erreur("type de source inconnu");
292 if(!($groupe = $data->groupe($_GET[$env->param("groupe")]))){
293 $env->erreur("impossible de lire les informations du groupe");
296 $ID_UNIQUE_ADMIN = false;
297 foreach($source["groupes"] as $id_groupe => $source_groupe){
298 if($source_groupe["id_groupe_status"] == $data->id_groupe_status_admin()){
299 if(!$ID_UNIQUE_ADMIN) $ID_UNIQUE_ADMIN = $id_groupe;
301 $ID_UNIQUE_ADMIN = true;
306 if(!$ID_UNIQUE_ADMIN){
307 $env->erreur("aucun administrateur sur cette source");
310 if($ID_UNIQUE_ADMIN !== true){
311 if($groupe["id"] == $ID_UNIQUE_ADMIN){
312 $env->erreur("vous ne pouvez pas enlever l'unique administrateur");
316 if(!$data->del_source_groupe($source["id"], $groupe["id"])){
317 $env->erreur("Impossible d'enlever le groupe");
322 "le groupe a été enlevé"