Fork me on GitHub


 Bas   Précédent   Suivant

« 1 ... 7 8 9 (10)


Re: SQL et Droits des forums Xoops - Module CBB 1.15
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
Je viens de me rendre compte d'une chose, mon script met bien à jour les permissions de tous les forums MAIS PAS DES CATEGORIES de ceux-ci.

Du coup, bien que l'on est mis les bons accès aux forums, si la catégorie englobante, n'a pas les accès adéquates, on est bloqué.

Prudence donc... (Je n'avais pas tort en mettant mon script dans sa version alpha :D).

Il faut donc inclure dans mon script les requêtes supplémentaires de ce type:
DELETE FROM xoops_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_cat_access' AND gperm_itemid '...')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (0, ..., ..., 2'forum_cat_access')

Je vais y travailler, ce n'est pas grand chose à faire, en fait.

Posté le : 15/12/2005 16:50
Transférer la contribution vers d'autres applications Transférer


Re: SQL et Droits des forums Xoops - Module CBB 1.15
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
Bon ben voilà, j'ai trouvé la solution moi-même en me faisant un script PHP maison répondant à MES besoins en fonction de mes analyses précédentes décrites plus haut.

J'ai testé ce script chez moi, il semble marcher mais reste à vérifier, valider et pourquoi pas optimiser dans son écriture.

Je conseille fortement de retirer ce script de votre site une fois utilisé car il est loin d'être sécurisé.

Ce script est libre d'utilisation et de diffusion tant que l'on concerve sa licence, et son origine. on peut le modifier à souhait mais il serait sympa de me faire part de toute modification utile.

J'espère également le voire ailleurs quand dans le fin fond du forum, histoire que mon expérience et mon travail ne tombe pas dans les oubliettes.

<?php
// Forums Perms Manager v0.2
// Created by Tinyturtle 2005/12/15
// Copyright (C) 2005
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as 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 32, Boston, MA  02111-127, USA.

// Purpose:
//
// The script was designed to create or update forums permissions (included categories permissions) 
// for your CBB/NewBB and perhaps others Forum modules for Xoops.
//
// Assumptions:
//
//  - Have your Forum Module already installed et well-configured
//  - Have all your forums and categories created
//  - Edit the script for your custom wishes
//
// Directions:
//
// This script can be executed Aafter copying somewhere in the files structure of 
// your web site using FTP client.
// Then simply enter the URI of the file just uploaded in your webbbrowser as for example: 
// http://www.yourdomain.com/path_to_file/Forums_Perms.php
// No more to do. ;-)
// For more security, delete this file of your files structure after using it.
//
// Notes:
// This script is an alpha version, there is much cases where it c annot run properly. 
// Use at your own risks. Save your database is recommanded before run this script.
// 
// Changelog:
// v0.2: 2005/12/15
// - Add Categories Support
//
// For more support, go on https://www.frxoops.org/.


echo "<html>n<head>n<title>Script de mise &agrave; jour des permissions de forums Xoops</title>n</head>n<body>n";
echo 
"<h1>Script PHP used to create/update/delete Xoops forum's permissions</h1><h2>Written by Tinyturtle</h2><br><br>n";

$prefix="xoops";
$host="'localhost'";
$login="your_login";
$password="your_password";
$database_name="your_database_name";

// Affiche les requêtes SQL exécutées et des informations complémentaires si la variable vaut 1
$verbose_mode=0;

// On se connecte à la base MySQL
$db mysql_connect($host$login$password) or die('Erreur : '.mysql_error());

// On sélectionne la base concernant xoops
mysql_select_db($database_name,$db) or die('Erreur : '.mysql_error());

// Concerne l'affectation de l'entier représentant le module Forum
$sql "SELECT mid FROM ".$prefix."_modules WHERE dirname = 'newbb'";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
if(
mysql_numrows($result) != 1)
  echo 
"Module Forum introuvable.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$forum_module_id $row['mid'];
  if (
$verbose_mode==1) echo "<b>Valeur de l'identifiant du module Forum</b>: ".$forum_module_id."<br>n";
}
mysql_free_result($result);

// Concerne le calcul du nombre de forums à modifier
$sql "SELECT COUNT(*) AS number FROM `".$prefix."_bb_forums`";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
if(
mysql_numrows($result) != 1)
  echo 
"Forums introuvables.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$forums_count $row['number'];
  if (
$verbose_mode==1) echo "<b>Nombre de forums &agrave; traiter</b>: ".$forums_count."<br>n";
}
mysql_free_result($result);

// Concerne le calcul du nombre de catégories de forums à modifier
$sql "SELECT COUNT(*) AS number FROM `".$prefix."_bb_categories`";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
if(
mysql_numrows($result) != 1)
  echo 
"Catégories de forums introuvables.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$categories_count $row['number'];
  if (
$verbose_mode==1) echo "<b>Nombre de cat&eacute;gories de forums &agrave; traiter</b>: ".$categories_count."<br>n";
}
mysql_free_result($result);

// Concerne l'affectation de l'entier représentant le groupe des administrateurs
$sql "SELECT groupid FROM `".$prefix."_groups` WHERE group_type = 'Admin'";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
if(
mysql_numrows($result) != 1)
  echo 
"Erreur dans la table ".$prefix."_groups cocnernant le groupe Administrateur.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$admin_grp_id $row['groupid'];
  if (
$verbose_mode==1) echo "<b>Valeur de l'identifiant du groupe Administrateurs</b>: ".$admin_grp_id."<br>n";
}
mysql_free_result($result);

// Concerne l'affectation de l'entier représentant le groupe des utilisateurs enregistrés
$sql "SELECT groupid FROM `".$prefix."_groups` WHERE group_type = 'User'";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
if(
mysql_numrows($result) != 1)
  echo 
"Erreur dans la table ".$prefix."_groups cocnernant le groupe Membres.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$user_grp_id $row['groupid'];
  if (
$verbose_mode==1) echo "<b>Valeur de l'identifiant du groupe Utilisateurs</b>: ".$user_grp_id."<br>n";
}
mysql_free_result($result);

// Concerne l'affectation de l'entier représentant le groupe des utilisateurs anonymes
$sql "SELECT groupid FROM `".$prefix."_groups` WHERE group_type = 'Anonymous'";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
 if(
mysql_numrows($result) != 1)
  echo 
"Erreur dans la table ".$prefix."_groups cocnernant le groupe Anonymes.<br>n";
else
{
  
$row mysql_fetch_array($result);
  
$anonymous_grp_id $row['groupid'];
  if (
$verbose_mode==1) echo "<b>Valeur de l'identifiant du groupe Anonymes</b>: ".$anonymous_grp_id."<br>n";
}
mysql_free_result($result);

// Concerne la liste de catégories de forums à modifier
$sql "SELECT cat_id FROM `".$prefix."_bb_categories` ORDER BY `cat_id` ASC";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
while(
$row mysql_fetch_array($result))
{
  
$categorie_id $row['cat_id'];
  
  
// Concerne la gestion de l'accès des catégories du forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_cat_access' AND gperm_itemid = '".$categorie_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$categorie_id."', '".$forum_module_id."', 'forum_cat_access')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$categorie_id."', '".$forum_module_id."', 'forum_cat_access')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$categorie_id."', '".$forum_module_id."', 'forum_cat_access')";

}
mysql_free_result($result);

// Concerne la liste des forums à modifier
$sql "SELECT forum_id FROM `".$prefix."_bb_forums` ORDER BY `forum_id` ASC";
$result mysql_query($sql) or die('<font color=red><b>Erreur SQL : </b></font>'.$sql.'<br>'.mysql_error());
while(
$row mysql_fetch_array($result))
{
  
$forum_id $row['forum_id'];
  
  
// Concerne la gestion de l'accès du forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'global_forum_access' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'global_forum_access')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'global_forum_access')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'global_forum_access')";

  
// Concerne la gestion de la possibilité de créer un nouveau topic dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_post' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_post')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_post')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_post')";

  // Concerne la gestion de la possibilité de visualiser le contenu du forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_view' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_view')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_view')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_view')";

  
// Concerne la gestion de la possibilité de répondre aux posts du forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_reply' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_reply')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_reply')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_reply')";

  // Concerne la gestion de la possibilité d'éditer un post dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_edit' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_edit')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_edit')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_edit')";
  

  // Concerne la gestion de la possibilité de supprimer un post dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_delete' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_delete')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_delete')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_delete')";

  // Concerne la gestion de la possibilité d'ajouter un sondage à un topic dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_addpoll' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_addpoll')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_addpoll')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_addpoll')";

  // Concerne la gestion de la possibilité de voter à un sondage dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_vote' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_vote')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_vote')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_vote')";

  // Concerne la gestion de la possibilité d'attacher un fichier à un post dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_attach' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_attach')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_attach')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_attach')";

  // Concerne la gestion de la possibilité de poster sans approbation dans le forum
  
$forums_perms_sql[] = "DELETE FROM ".$prefix."_group_permission WHERE gperm_modid = '".$forum_module_id."' AND gperm_name = 'forum_can_noapprove' AND gperm_itemid = '".$forum_id."'";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$admin_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_noapprove')";
  
$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$user_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_noapprove')";
  
//$forums_perms_sql[] = "INSERT INTO ".$prefix."_group_permission (gperm_groupid, gperm_itemid, gperm_modid, gperm_name) VALUES ('".$anonymous_grp_id."', '".$forum_id."', '".$forum_module_id."', 'forum_can_noapprove')";
}
mysql_free_result($result);

echo 
"<font color='blue'><b>Mise &agrave; jour des permissions des forums (cat&eacute;gories incluses) en cours...</b></font><br>n";

// Exécution des requêtes de mise à jour des permissions
for($i=0;$i<sizeof($forums_perms_sql);$i++) // tant que $i est inferieur au nombre de requêtes du tableau...
{
  
mysql_query($forums_perms_sql[$i]) or die('<font color=red><b>Erreur SQL : </b></font>'.$forums_perms_sql[$i].'<br>'.mysql_error());
  if (
$verbose_mode==1) echo "<b>Ex&eacute;cution de la requ&ecirc;te SQL suivante :</b> ".$forums_perms_sql[$i]."<br>n";
}
echo 
"<font color='blue'><b>Ex&eacute;cution du script termin&eacute; avec succ&egrave;s.</b></font><br>n";

// Fermeture la connexion à MySQL
mysql_close();
?>

P.S.: J'aurais bien mis le fichier en pièce jointe mais je n'en ai aps la possibilité ici, donc obliger de faire un copier-coller de barbare, pas très propre en pise en page...

EDIT: Version modifiée ajoutant le support des catégories des forums.

Posté le : 15/12/2005 16:23

Edité par Tinyturtle sur 15/12/2005 17:33:11
Transférer la contribution vers d'autres applications Transférer


Re: SQL et Droits des forums Xoops - Module CBB 1.15
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
Bon, je crois que j'approche de la solution après une rapide analyse des requêtes SQL de Xoops et de la table xoops_group_permission.

Voici mes déductions:
- gperm_id est un entier auto-incrémenté généré automatiquement qui sert de clé au n-uplet inséré.
- gperm_groupid est un entier servant à représenter le groupe d'utilisateurs auquel on souhaite ajouter/mettre à jour/supprimer des droits.
- gperm_itemid est un entier représentant l'élément du module (dans notre cas, un forum) auquel s'applique les droits.
- gperm_modid est un entier représentant le module auquel appartient l'élément que l'on veut modifier.
- gperm_name est une chaine de caractères représentant le type de droit que l'on veut affecter à l'élément (dans notre cas, un forum).

Pour connaître l'ensemble des valeurs possible du champ gperm_name pour un élément de type forum, j'ai effectué la requête SQL suivante:
SELECT DISTINCT gperm_name
FROM 
`f7cph_group_permission`
WHERE gperm_name LIKE "%forum%"

Ce qui m'a donné comme résultat pour les valeurs du champ gperm_name:
- global_forum_access: Permet l'accès au forum
- forum_cat_access: Là, je vois pas trop la différence par rapport à la valeur ci-dessus.
- forum_can_view: Permet la visualisation du forum
- forum_can_post: Donne la possibilité de créer un topic dans le forum
- forum_can_reply: Donne la possibilité de répondre à un post du forum
- forum_can_edit: Donne la possibilité d'éditer un post du forum
- forum_can_delete: Donne la possibilité d'effacer un post du forum
- forum_can_addpoll: Donne la possibilité d'ajouter un sondage à un topic du forum
- forum_can_vote: Donne la possibilité de voter à un sondage dans le forum
- forum_can_attach: Donne la possibilité d'ajouter un fichier à un post du forum
- forum_can_noapprove: Donne la possibilité de poster dans le forum sans approbation par un modérateur.

Autres informations, mais qui vont surement varier en fonction de l'installation de chacun:

- gperm_modid aura pour valeur dans les requêtes SQL, l'entier 2, puisque l'on va travailler sur le module forum.
Information trouvée par le biais de la requête SQL suivante:
SELECT midnamedirname FROM xoops_modules WHERE dirname 'newbb'

- gperm_groupid vaudra les valeurs 1,2 et/ou 3 en fonction de ce qu'on désire.
Information trouvée par le biais de la requête SQL suivante:
SELECT groupidnamedescriptiongroup_type FROM `f7cph_groups`


Reste donc maintenant à construire les requêtes SQL "qui vont bien" en fonction des groupes, des forums et des préférences de chacun (là, ce sera les miennes) et éventuellement si besoin un petit script PHP temporaire qui effectue tout ça.

Corrigez moi, si je dis des bêtises...

Posté le : 15/12/2005 12:23

Edité par Tinyturtle sur 15/12/2005 12:51:10
Transférer la contribution vers d'autres applications Transférer


Re: SQL et Droits des forums Xoops - Module CBB 1.15
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
J'apporte moi-même de l'eau à mon moulin, car je viens d'avoir une idée pour savoir ce qui se passe lorsqu'on utilise l'interface Xoops pour la gestion des permissions.

J'ai donc mis Xoops en Mode Debug SQL afin d'observer les requêtes SQL exécutées lorsque je mets moi-même les permissions à la main d'un forum pris au hasard parmi mes 69.

Voici ce que j'obtiens:
SELECT FROM ltt_modules WHERE dirname 'newbb'
SELECT FROM ltt_config WHERE (conf_modid '2'ORDER BY conf_order ASC
SELECT 
FROM ltt_group_permission WHERE (gperm_name 'module_admin' AND gperm_modid '1' AND (gperm_groupid '1'))
SELECT FROM ltt_bb_forums WHERE forum_id 30
SELECT 
FROM ltt_config WHERE (conf_modid '0' AND conf_catid '4'ORDER BY conf_order ASC
UPDATE ltt_bb_forums SET forum_name
='La Santé au Naturel et les médecines alternatives'forum_desc='Ici tous vos posts sur les médecines alternatives (homéopathie, phytothérapie, naturopathie...) et les produits naturels pour améliorer et conserver notre santé.'forum_moderator='2 3'cat_id=7forum_type=0allow_html=1allow_sig=1,allow_subject_prefix=1hot_threshold=10forum_order=0allow_attachments=1attach_maxkb=1000attach_ext=''allow_polls=1 WHERE forum_id=30
DELETE FROM ltt_group_permission WHERE 
(gperm_modid '2' AND gperm_name 'global_forum_access' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'global_forum_access')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'global_forum_access')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (03302'global_forum_access')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_post' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_post')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_post')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_view' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_view')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_view')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (03302'forum_can_view')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_reply' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_reply')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_reply')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_edit' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_edit')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_edit')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_delete' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_delete')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_delete')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_addpoll' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_addpoll')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_addpoll')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_vote' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_vote')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_vote')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_attach' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_attach')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_attach')
DELETE FROM ltt_group_permission WHERE (gperm_modid '2' AND gperm_name 'forum_can_noapprove' AND gperm_itemid '30')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (01302'forum_can_noapprove')
INSERT INTO ltt_group_permission (gperm_idgperm_groupidgperm_itemidgperm_modidgperm_nameVALUES (02302'forum_can_noapprove')

Note: Toutes les tables sont préfixées par "ltt_" plutôt que par "xoops_" car j'ai utilisé le module protector pour changer de préfixe afin d'ajouter un peu de sécurité à ma base.

On observe donc que la mise à jour des permissions d'un seul et unique forum entraine non pas l'exécution d'une requête SQL mais de plusieurs. Reste à analyser le tout. Bon courage...

Posté le : 15/12/2005 11:52
Transférer la contribution vers d'autres applications Transférer


Re: SQL et Droits des forums Xoops - Module CBB 1.15
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
Bon, je vais essayer de faire plus simple dans ma requête et d'aller droit au but.

Vu que par le biais de l'interface de Xoops, il faut mettre les permissions des forums à la main et SURTOUT un par un.

Je voudrais savoir quelles sont les requêtes SQL exécutées (vu que l'ensemble des configurations des permissions est forcément stocké dans la base MySQL) afin de mettre en place toutes les permissions de mes 69 forums en une fois par le biais d'une ou plusieurs requêtes SQL.

Les requêtes SQL exécutées sont forcément dans un ou plusieurs scripts PHP de Xoops, mais la difficulté consiste à toutes les trouver (sans exception) afin de ne pas faire d'erreurs et de comprendre ce qu'elles font.

En ce qui concerne l'indication apportée par Christian (merci à lui ) sur le fait que la table xoops_group_permission soit impactée, je m'en étais douté. Seulement les champs, mais surtout les valeurs de ces derniers ne sont pas très parlant lorsqu'on observe le contenu de cette table.

Pour rappel, voici le schema de cette dernière:
CREATE TABLE `f7cph_group_permission` (
  `
gperm_idint(10unsigned NOT NULL auto_increment,
  `
gperm_groupidsmallint(5unsigned NOT NULL default '0',
  `
gperm_itemidmediumint(8unsigned NOT NULL default '0',
  `
gperm_modidmediumint(5unsigned NOT NULL default '0',
  `
gperm_namevarchar(50collate latin1_general_ci NOT NULL default '',
  
PRIMARY KEY  (`gperm_id`),
  
KEY `groupid` (`gperm_groupid`),
  
KEY `itemid` (`gperm_itemid`),
  
KEY `gperm_modid` (`gperm_modid`,`gperm_name`(10))
);


Grosso modo, je veux que:
- Tout le monde puisse accéder à l'intégralité de mes forums en lecture seule.
- Seuls les utilisateurs enregistrés (les membres) et les administrateurs puissent poster.
- Seuls les administrateurs puissent avoir des droits supplémentaires à la lectures/écritures, si de tels droits existent.


Pour finir, n'y a t'il pas d'autres tables impactées concernant la gestion des permissions des forums ?

En tout cas, merci de m'avoir donné une première réponse en espérant avoir rapidement des compléments d'informations pour de pas être trop longtemps bloqué.

Posté le : 15/12/2005 11:31
Transférer la contribution vers d'autres applications Transférer


PHP/SQL et droits des forums Xoops - Modules CBB/NewBB 2 et peut-être d'autres
Aspirant
Inscrit: 30/10/2005 16:12
De La Rochelle
Messages: 98
Bonjour à tous, je reviens sur une question qui a été posée plusieurs fois :google:, mais en l'abordant d'une façon différente.

Voici le contexte:
Je suis en train de faire la migration (sans trop de gros soucis) d'un site PHPNuke vers Xoops; et notamment la partie PHPBB vers CBB v1.15 à l'aide du script d'Hervé Thouzard (dont je salue l'initiative française du script) qui marche assez bien (je m'en suis inspiré pour d'autres parties de la migration pour des scripts SQL).

Seulement voilà, j'ai bien remarqué le système de droits concernant les forums de Xoops et la fastidieuse manoeuvre de les faire un par un. Le forum que j'administre (en partie), est réparti dans 13 catégories regroupant en tout 69 forums (sous-forums compris). Ainsi, je me confronte à la difficulté de les faire un par un.

Je cherche donc une solution par le biais de requêtes/scripts (My)SQL me permettant d'effectuer ce que je veux, mais je n'arrive pas à trouver où est stocké cette information dans la base MySQL (table(s) ?)et surtout sous quelle forme (nombre et nom(s) des champs associés et leurs valeurs possibles).

Y aurait il quelqu'un ayant déjà essuyé les platres pour des forums aussi conséquents que les miens, que ce soit en termes de requêtes/scripts SQL déjà écrits, ou simplement de pistes.

Cela me simplifierait énormément la tâche, me ferait gagner du temps (ainsi qu'à ceux qui auront le même problème que moi) et enfin, permettrait de refaire la manoeuvre si besoin est.

Imaginez le scénario suivant:
- On effectue la gestion des droits des 69 forums à la main.
- On se rends compte que l'on a fait une erreur à un endroit (pour je ne sais quelle raison).

Résultat: Obligé de recommencer à la main les droits des "X" forums erronés (Après éventuellement un vidage de table(s))...

Suggestion classique:
- Faire une sauvegarde (SQL)
Remarque à la suggestion:
- Sauvegarder quelle table quand on ne sait pas exactement où et comment sont stockés les droits sur les forums.


P.S.: Je sais qu'en cherchant un peu dans les scripts PHP de Xoops, j'aurai pu avoir des pistes, mais je préfère demander avant aux experts plutôt que de chercher à l'aveuglette.

P.S.2: il ne me semble pas que le sujet ait été abordé de cette façon (même après recherche sur le forum) mais si c'est le cas, je m'excuse d'avance pour le dérangement et vous prie de bien vouloir me réorienter vers le post ou topic adéquate.

Sincérement un Xoopsien en devenir... :xfsuper:
(En espérant que ce post ait une vie décente et ne sombre pas dans l'anonymat sous la tonne des autres posts et qu'il puisse aider la communauté xoopsienne française de par l'expérience du nouveau xoopsien qui se tire les cheveux face à ce problème bien pénible )

Posté le : 14/12/2005 17:22

Edité par Tinyturtle sur 15/12/2005 16:30:41
Transférer la contribution vers d'autres applications Transférer



 Haut
« 1 ... 7 8 9 (10)




Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

54 Personne(s) en ligne (44 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 54 | Plus ...