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 - + Membres + +
+ +
+ Admins + +
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 + +
[(#EMAIL|ou{#TELEPHONE}|oui) -   (contact) + #NOM ]
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é