diff --git a/balint_administrations.php b/balint_administrations.php
index 30c5f95..3ed9cd5 100644
--- a/balint_administrations.php
+++ b/balint_administrations.php
@@ -28,12 +28,12 @@ function balint_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(
- array('maj_tables', array('spip_articles')),
+ array('maj_tables', array('spip_articles','spip_auteurs_liens')),
array('config_prive')
);
- $maj['1.0.7'] = array(
- array('maj_tables', array('spip_articles')),
+ $maj['1.0.12'] = array(
+ array('maj_tables', array('spip_articles','spip_auteurs_liens')),
array('config_prive')
);
diff --git a/balint_autorisations.php b/balint_autorisations.php
index 9693509..8ab0823 100644
--- a/balint_autorisations.php
+++ b/balint_autorisations.php
@@ -118,11 +118,30 @@ function autoriser_article_lire($faire, $type, $id, $qui, $opt) {
function autoriser_article_modifier($faire, $type, $id, $qui, $opt) {
- if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){
- return true;
+ // Si l'article est un groupe, il faut être auteur et avoir le role "admin"
+ if ($opt AND in_array('groupe',$opt)){
+ $where = array(
+ 'id_objet='.intval($id),
+ 'objet="article"',
+ 'id_auteur =' . $qui['id_auteur']
+ );
+ $role = sql_getfetsel('role','spip_auteurs_liens',$where);
+ if (in_array($qui['id_auteur'],auteurs_objet('article',$id)) AND $role == "admin"){
+ return true;
+ }
+ else {
+ return in_array($qui['statut'], array('0minirezo'));
+ }
}
+
+ // Sinon, seuls les auteurs et les admins peuvent le modifier
else{
- return in_array($qui['statut'], array('0minirezo'));
+ if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){
+ return true;
+ }
+ else{
+ return in_array($qui['statut'], array('0minirezo'));
+ }
}
}
@@ -158,7 +177,9 @@ function autoriser_sujet_editer($faire, $type, $id, $qui, $opt) {
}
function autoriser_forum_voir($faire, $type, $id, $qui, $opt) {
- $id_auteur = $qui['id_auteur'];
+ return in_array($qui['statut'], array('0minirezo','1comite'));
+
+/* $id_auteur = $qui['id_auteur'];
// Il faut être au moins membre
if ($qui['statut']=='1comite'){
// si le forum est privé, il faut être membre du bureau
@@ -178,4 +199,5 @@ function autoriser_forum_voir($faire, $type, $id, $qui, $opt) {
if ($qui['statut']=='0minirezo'){
return true;
}
+*/
}
diff --git a/base/balint.php b/base/balint.php
index d733bb8..b3687f9 100644
--- a/base/balint.php
+++ b/base/balint.php
@@ -16,6 +16,13 @@ function balint_declarer_tables_principales($tables_principales){
return $tables_principales;
}
+function balint_declarer_tables_auxiliaires($tables_auxiliaires){
+
+ $tables_auxiliaires['spip_auteurs_liens']['field']['role'] = "text DEFAULT '' NOT NULL";
+
+ return $tables_auxiliaires;
+}
+
function balint_declarer_champs_extras($champs = array()) {
$champs['spip_groupes_mots']['grigri'] = array(
'saisie' => 'input',//Type du champ (voir plugin Saisies)
@@ -78,6 +85,21 @@ function balint_declarer_champs_extras($champs = array()) {
'modifier' => array('auteur' => '0minirezo')),//Seuls les admins peuvent modifier
),
);
+ $champs['spip_auteurs']['telephone'] = array(
+ 'saisie' => 'input',//Type du champ (voir plugin Saisies)
+ 'options' => array(
+ 'nom' => 'telephone',
+ 'label' => 'Téléphone',
+ 'sql' => "varchar(30) NOT NULL DEFAULT ''",
+ 'defaut' => '',// Valeur par défaut
+ 'restrictions'=>array(
+ 'voir' => array('auteur' => ''),
+ 'modifier' => array('auteur' => 'ominirezo','1comite')
+ )
+
+ ),
+ );
+
/*
$champs['spip_auteurs']['bureau'] = array(
'saisie' => 'case',//Type du champ (voir plugin Saisies)
diff --git a/content/gerer_auteurs.html b/content/gerer_auteurs.html
index 3969dcd..2c196c5 100644
--- a/content/gerer_auteurs.html
+++ b/content/gerer_auteurs.html
@@ -11,7 +11,7 @@
Nom
Statut
- Bureau
+ [(#REM)Bureau ]
Animateur
Email
Téléphone
@@ -19,7 +19,7 @@
-
+
#NOM
@@ -28,13 +28,13 @@
[(#STATUT|=={1comite}|oui) Membre]
[(#STATUT|=={6forum}|oui) Inscrit]
-
+ [(#REM)
-
+ ]
[(#REM) On affiche les villes dont on est animateur de groupe, ou le pays si on animateur de gps ponctuels]
- [(#SURTITRE|sinon{#INFO_TITRE{rubrique,#ID_RUBRIQUE}}|unique)]
+ #TITRE
#EMAIL
diff --git a/formulaires/editer_groupe.html b/formulaires/editer_groupe.html
index 4ea0c47..cbb5dcd 100644
--- a/formulaires/editer_groupe.html
+++ b/formulaires/editer_groupe.html
@@ -101,15 +101,27 @@
[(#SET{T_id_auteurs, #ENV{T_id_auteurs}|sinon{#ARRAY}})]
+ [(#SET{T_id_admins, #ENV{T_id_admins}|sinon{#ARRAY}})]
- Responsables
- Animateurs du groupe
+ Membres
+ Membres du groupe
-
+
#NOM
-
+
+
+
+
+
+ Admins
+ Animateurs du groupe
+
+
+
+ #NOM
+
diff --git a/formulaires/editer_groupe.php b/formulaires/editer_groupe.php
index 3d5d94b..be230ba 100644
--- a/formulaires/editer_groupe.php
+++ b/formulaires/editer_groupe.php
@@ -32,16 +32,27 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
$valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article));
- $where = array(
+ // Liste des membres
+ $where1 = array(
+ 'id_objet='.intval($id_article),
+ 'objet="article"'
+ );
+ $res1 = sql_allfetsel('id_auteur','spip_auteurs_liens',$where1);
+ $valeurs['T_id_auteurs'] = array_column($res1,'id_auteur');
+
+ // Liste des admins
+ $where2 = array(
'id_objet='.intval($id_article),
'objet="article"',
+ 'role="admin"'
);
- $res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
+ $res2 = sql_allfetsel('id_auteur','spip_auteurs_liens',$where2);
+ $valeurs['T_id_admins'] = array_column($res2,'id_auteur');
- $valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
}
else {
$valeurs['T_id_auteurs'] = array();
+ $valeurs['T_id_admins'] = array();
$valeurs['id_article'] = -1 * intval(session_get('id_auteur'));
}
@@ -128,11 +139,13 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
include_spip('action/editer_liens');
$where = array(
'id_objet='.intval($id_article),
- 'objet="article"',
+ 'objet="article"'
);
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
$ids_auteurs = array_column($ids_auteurs, 'id_auteur');
+
$Tauteurs = _request('Tauteurs');
+ $Tadmins = _request('Tadmins');
if (count($Tauteurs)) {
$associer = array_diff($Tauteurs, $ids_auteurs);
@@ -142,6 +155,16 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) ));
}
+ $liste_admins = implode(',' , $Tadmins);
+
+ $where2 = array(
+ 'id_objet='.intval($id_article),
+ 'objet="article"',
+ 'id_auteur IN (' . $liste_admins . ')'
+ );
+ sql_updateq('spip_auteurs_liens', array('role' => ''), $where);
+ sql_updateq('spip_auteurs_liens', array('role' => 'admin'), $where2);
+
// maj des mots fermes
$T_id_groupe = sql_allfetsel('id_groupe','spip_groupes_mots','grigri!="tags"');
$T_id_groupe = array_column($T_id_groupe,'id_groupe');
@@ -235,7 +258,7 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
$retour['message_ok'] = "Le groupe est bien enregistré.";
// on redirige vers la ville
- $retour['redirect'] = "spip.php?page=groupes&id_article=$id_article";
+ //$retour['redirect'] = "spip.php?page=groupes&id_article=$id_article";
$bigform = charger_fonction('bigform_traiter','inc');
diff --git a/inclure/sidebar_groupes.html b/inclure/sidebar_groupes.html
index db97776..33f437c 100644
--- a/inclure/sidebar_groupes.html
+++ b/inclure/sidebar_groupes.html
@@ -4,17 +4,20 @@
[(#REM) S'il s'agit de la page d'un groupe :]
-
- [(#AUTORISER{modifier, article, #ID_ARTICLE})
+
+
Mettre à jour le groupe
- ]
+
+
[(#TITRE) ]
- Responsables
-
- #NOM
+
Contact
+
+
diff --git a/paquet.xml b/paquet.xml
index af53028..781d766 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -6,7 +6,7 @@
compatibilite="[3.1.7;3.3.*]"
logo="img/fede_64.jpg"
documentation=""
- schema="1.0.7"
+ schema="1.0.12"
>
Squelette Fédé