group.php 7.36 KB
Newer Older
Ayolo's avatar
Ayolo committed
1 2 3 4
<?php

/* Copyright 2006
 * - Julien Etelain < julien at pmad dot net >
5
 * - Benjamin Collet < bcollet at oxynux dot org >
Ayolo's avatar
Ayolo committed
6 7 8 9 10
 *
 * Ce fichier fait partie du site de l'Association des Étudiants de
 * l'UTBM, http://ae.utbm.fr.
 *
 * This program is free software; you can redistribute it and/or
Ayolo's avatar
Ayolo committed
11
 * modify it under the terms of the GNU General Public License a
Ayolo's avatar
Ayolo committed
12 13 14 15 16 17 18 19 20 21 22 23 24
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 */
25

Ayolo's avatar
Ayolo committed
26 27 28 29 30 31 32
$topdir = "./";
require_once($topdir. "include/site.inc.php");
require_once($topdir. "include/cts/sqltable.inc.php");
require_once($topdir. "include/entities/group.inc.php");

$site = new site ();

Ayolo's avatar
fix  
Ayolo committed
33
if ( !$site->user->is_in_group("root") && !$site->user->is_in_group("gestion_ae"))
34
  $site->error_forbidden("accueil","group",1);
35 36 37

$grp = new group ( $site->db,$site->dbrw);

Ayolo's avatar
Ayolo committed
38
if ( isset($_REQUEST["id_groupe"]) )
39 40
{
  $grp->load_by_id($_REQUEST["id_groupe"]);
41 42
  if ( $grp->id < 1 )
  {
43
    $site->error_not_found("accueil");
44
    exit();
45
  }
Ayolo's avatar
Ayolo committed
46 47
}

BenC's avatar
BenC committed
48
if ( $_REQUEST["action"] == "delete" && !isset($_REQUEST["id_utilisateur"]) && $site->user->is_in_group("root") )
Ayolo's avatar
Ayolo committed
49
{
50
  // Opération **trés** critique (la suppression d'un groupe barman, ou d'admin serai trés dommagable)
51
  if ( $site->is_sure ( "","Suppression du groupe ".$grp->nom,"delgrp".$grp->id, 2 ) )
52
  {
53
    _log($site->dbrw,"Retrait d'un groupe","Retrait du groupe ". $grp->nom ."(id : ". $grp->id .")","Groupes",$site->user);
54 55 56
    $grp->delete_group();
  }
  $grp->id = -1;
Ayolo's avatar
Ayolo committed
57 58 59
}

if (  $grp->id > 0)
60 61
{

Ayolo's avatar
fix  
Ayolo committed
62
  if($site->user->is_in_group("gestion_ae") || $site->user->is_in_group("root"))
63
  {
Ayolo's avatar
fix  
Ayolo committed
64
    if ( $_REQUEST["action"] == "delete" )
65
    {
Ayolo's avatar
fix  
Ayolo committed
66 67 68
      if ( ($grp->id != 7
            && $grp->id != 46
            && $grp->id != 47
69
            && $site->user->is_in_group_id ($grp->id)
Ayolo's avatar
fix  
Ayolo committed
70
           ) || $site->user->is_in_group("root") )
71
      {
Ayolo's avatar
fix  
Ayolo committed
72
        $grp->remove_user_from_group($_REQUEST["id_utilisateur"]);
73
        $user = new utilisateur($site->db);
Ayolo's avatar
fix  
Ayolo committed
74
        $user->load_by_id($_REQUEST["id_utilisateur"]);
75
        _log($site->dbrw,"Retrait d'un utilisateur du groupe ". $grp->nom,"Retrait de l'utilisateur ".$user->nom." ".$user->prenom." (id : ".$user->id.") du groupe ". $grp->nom ." (id : ".$grp->id.")","Groupes",$site->user);
76
      }
Ayolo's avatar
fix  
Ayolo committed
77
      else
Antoine Tenart's avatar
Antoine Tenart committed
78
        $Error = "Veuillez contacter l'équipe informatique pour modifier les groupes dont vous n'êtes pas membre ou les groupes systèmes.";
BenC's avatar
BenC committed
79
    }
Ayolo's avatar
fix  
Ayolo committed
80 81
    elseif ( $_REQUEST["action"] == "deletes" && !empty($_REQUEST["id_utilisateurs"]) )
    {
82
      if ( ($grp->id != 7 && $grp->id != 46 && $grp->id != 47 && $site->user->is_in_group_id ($grp->id)) || $site->user->is_in_group("root") )
Ayolo's avatar
fix  
Ayolo committed
83 84 85 86 87 88
      {
        foreach($_REQUEST["id_utilisateurs"] as $id_utilisateur)
        {
            $grp->remove_user_from_group($id_utilisateur);
            $user = new utilisateur($site->db);
            $user->load_by_id($id_utilisateur);
89
            _log($site->dbrw,"Retrait d'un utilisateur du groupe ". $grp->nom,"Retrait de l'utilisateur ".$user->nom." ".$user->prenom." (id : ".$user->id.") du groupe ". $grp->nom ." (id : ".$grp->id.")","Groupes",$site->user);
Ayolo's avatar
fix  
Ayolo committed
90 91 92
        }
      }
      else
Antoine Tenart's avatar
Antoine Tenart committed
93
        $Error = "Veuillez contacter l'équipe informatique pour modifier les groupes dont vous n'êtes pas membre ou les groupes systèmes.";
Ayolo's avatar
fix  
Ayolo committed
94 95
    }
    elseif ( $_REQUEST["action"] == "add" )
96
    {
97
      if ( ($grp->id != 7 && $grp->id != 46 && $grp->id != 47 && $site->user->is_in_group_id ($grp->id)) || $site->user->is_in_group("root") )
98
      {
Ayolo's avatar
fix  
Ayolo committed
99 100
        $user = new utilisateur($site->dbrw);
        $user->load_by_id($_REQUEST["id_utilisateur"]);
101
        if ( $user->id > 0 )
Ayolo's avatar
fix  
Ayolo committed
102 103
        {
          $grp->add_user_to_group($user->id);
104
          _log($site->dbrw,"Ajout d'un utilisateur au groupe ". $grp->nom,"Ajout de l'utilisateur ".$user->nom." ".$user->prenom." (id : ".$user->id.") au groupe ". $grp->nom ." (id : ".$grp->id.")","Groupes",$site->user);
Ayolo's avatar
fix  
Ayolo committed
105
        }
106
      }
Ayolo's avatar
fix  
Ayolo committed
107
      else
Antoine Tenart's avatar
Antoine Tenart committed
108
        $Error = "Veuillez contacter l'équipe informatique pour modifier les groupes dont vous n'êtes pas membre ou les groupes systèmes.";
BenC's avatar
BenC committed
109
    }
110
  }
111
  $site->start_page("accueil","Groupe");
112

113 114 115 116 117 118 119 120 121
  $cts = new contents("<a href=\"group.php\">Groupes</a> / ".$grp->get_html_link());
  $cts->add_paragraph($grp->description);
  $req = new requete($site->db,
    "SELECT `utilisateurs`.`id_utilisateur`, " .
    "CONCAT(`utilisateurs`.`prenom_utl`,' ',`utilisateurs`.`nom_utl`) as `nom_utilisateur` " .
    "FROM `utl_groupe` " .
    "INNER JOIN `utilisateurs` ON `utilisateurs`.`id_utilisateur`=`utl_groupe`.`id_utilisateur` " .
    "WHERE `utl_groupe`.`id_groupe`='".$grp->id."' " .
    "ORDER BY `utilisateurs`.`nom_utl`,`utilisateurs`.`prenom_utl`");
122

123
  $tbl = new sqltable(
124 125 126 127 128
      "listmemb",
      "Membres", $req, "group.php?id_groupe=".$grp->id,
      "id_utilisateur",
      array("nom_utilisateur"=>"Utilisateur"),
      array("delete"=>"Supprimer"),
129 130 131 132
      array("deletes"=>"Supprimer"),
      array( )
      );
  $cts->add($tbl,true);
133

134 135
  $frm = new form("adduser","group.php?id_groupe=".$grp->id, false,"POST","Ajouter un utilisateur");
  $frm->add_hidden("action","add");
136 137

  if ( $Error )
138
    $frm->error($Error);
139

Ayolo's avatar
Ayolo committed
140
  $frm->add_user_fieldv2("id_utilisateur","Utilisateur");
141 142
  $frm->add_submit("valid","Ajouter");
  $cts->add($frm,true);
143

144
  $site->add_contents($cts);
145

146 147
  $site->end_page();
  exit();
Ayolo's avatar
Ayolo committed
148 149
}

BenC's avatar
BenC committed
150
if ( $_REQUEST["action"] == "addgroup" && $site->user->is_in_group("root"))
Ayolo's avatar
Ayolo committed
151
{
152 153 154
  if ( !$_REQUEST["nom"] )
    $Error = "Un nom est requis.";
  else
155
  {
156
    $grp->add_group($_REQUEST["nom"],$_REQUEST["description"],$_REQUEST['type']);
157
    _log($site->dbrw,"Ajout d'un groupe","Ajout du groupe ". $_REQUEST["nom"] ."(". $_REQUEST["description"] .")","Groupes",$site->user);
158
  }
Ayolo's avatar
Ayolo committed
159 160
}

161
$site->start_page("accueil","Groupes");
Ayolo's avatar
Ayolo committed
162 163 164
$cts = new contents("Groupes");

$req = new requete($site->db,
165 166
  "SELECT * FROM `groupe` " .
  "ORDER BY nom_groupe");
167

BenC's avatar
BenC committed
168 169 170
if ( $site->user->is_in_group("root") )
{
  $tbl = new sqltable(
171 172 173 174 175
      "listgrp",
      "Groupes", $req, "group.php",
      "id_groupe",
      array("id_groupe" => "ID", "nom_groupe"=>"Groupe","description_groupe"=>"Description"),
      array("delete"=>"Supprimer"),
176 177
      array(),
      array( )
178
      );
BenC's avatar
BenC committed
179 180 181 182
}
else
{
  $tbl = new sqltable(
183 184 185 186 187
      "listgrp",
      "Groupes", $req, "group.php",
      "id_groupe",
      array("id_groupe" => "ID", "nom_groupe"=>"Groupe","description_groupe"=>"Description"),
      array(),
188 189
      array(),
      array( )
190
      );
BenC's avatar
BenC committed
191
}
Ayolo's avatar
Ayolo committed
192 193
$cts->add($tbl,true);

BenC's avatar
BenC committed
194
if ( $site->user->is_in_group("root") )
BenC's avatar
BenC committed
195 196 197
{
  $frm = new form("addgroup","group.php", false,"POST","Créer un groupe");
  $frm->add_hidden("action","addgroup");
198
  if ( $Error )
199
    $frm->error($Error);
BenC's avatar
BenC committed
200
  $frm->add_text_field("nom","Nom (unix)","",true);
201
  $frm->add_select_field("type","Type",$types_groupes);
BenC's avatar
BenC committed
202 203 204 205 206
  $frm->add_text_field("description","Description","");
  $frm->add_submit("valide","Ajouter");
  $cts->add($frm,true);
}
else
BenC's avatar
BenC committed
207
  $cts->add_paragraph("Pour ajouter ou supprimer des groupes, veuillez contacter l'équipe informatique.");
Ayolo's avatar
Ayolo committed
208 209 210

$site->add_contents($cts);
$site->end_page();
BenC's avatar
BenC committed
211
?>