correction bug invitation quand meme user
authorroot <root@dj3c1t.net>
Sat, 12 Oct 2013 13:20:49 +0000 (15:20 +0200)
committerroot <root@dj3c1t.net>
Sat, 12 Oct 2013 13:20:49 +0000 (15:20 +0200)
app/controllers/users/sources_invitations.php
app/data/modules/sql/sml_data_source_groupes.php
app/out/default/views/users/sources_invitations/list.php

index 40f2a2f..247c00b 100644 (file)
         $env->erreur("l'invitation s'adresse a un groupe qui n'appartient pas à votre utilisateur");
         return;
       }
-      $source["permissions"] = $data->source_permissions($source, $this->user["id"]);
-      if($source["permissions"]["contributeur"]){
-        $env->erreur("vous avez déjà accès à cette source");
+      if(($HAS_THIS_GROUP = $data->source_has_groupe($source["id"], $invitation["id_author"])) === false){
+        $env->erreur("Impossible de savoir si ce groupe a déjà accès à cette source");
+        return;
+      }
+      if($HAS_THIS_GROUP){
+        $env->erreur("le groupe a déjà accès à cette source");
         return;
       }
       if(!$data->del_sml_sources_invitations("id", $invitation["id"])){
index 5008bb8..45d07b1 100644 (file)
       return $sources;
     }
 
+    function source_has_groupe($id_source, $id_groupe){
+      $sgbd = $this->sgbd();
+      $HAS_THIS_GROUP = 0;
+      try{
+        $sql =
+         "SELECT count(*) as n FROM #--sml_sources_authors"
+        ." WHERE id_source=".$this->eq($id_source)
+        ." AND id_author=".$this->eq($id_groupe);
+        $rst = $sgbd->query($sql);
+        if($v_rst = $sgbd->fetch_assoc($rst)) $HAS_THIS_GROUP = $v_rst["n"];
+        $sgbd->free_result($rst);
+      }
+      catch(Exception $e) { $HAS_THIS_GROUP = false; }
+      return $HAS_THIS_GROUP;
+    }
+
     function add_source_groupe($id_source, $id_groupe, $id_groupe_status)
     { $sgbd = $this->sgbd();
       try{
index c4574c0..44d8b85 100644 (file)
     }
     else continue;
 
+    $IS_INVITED = false;
+    foreach($this->out["groupes"]["list"] as $groupe){
+      if($groupe["id"] == $invitation["id_author"] && $groupe["id_user"] == $this->out["user"]["id"]){
+        $IS_INVITED = true;
+        break;
+      }
+    }
+
 
   ?>
   <li class="invitation">
@@ -43,7 +51,8 @@
            title="annuler cette invitation"
            onclick="return confirm('annuler cette invitation ?')"/>Annuler l'invitation</a>
       </li>
-      <?php else : ?>
+      <?php endif; ?>
+      <?php if($IS_INVITED) : ?>
       <li>
         <a href="<?php echo $this->url("users/sources_invitations/accepter_invitation_groupe", array("id" => $id_invitation)) ?>"
            class="admin_link"