2 ///usr/bin/php -q -d include_path=.:/etc/gforge:/usr/share/gforge:/usr/share/gforge/www/include check_and_update_forum_role_settings.php
3 // Script for add role settings for existing forums and remove role settings for deleted forums
5 require_once 'www/env.inc.php';
6 require_once $gfwww.'include/squal_pre.php';
9 $groups_res = db_query_params ('SELECT group_id FROM groups',
12 $error .= 'Error: Enable to get groups : ' .db_error();
19 for ($g=0; $g<db_numrows($groups_res); $g++) {
20 // select of all group's forums
21 $forums_group_res = db_query_params ('SELECT group_forum_id FROM forum_group_list WHERE group_id=$1',
22 array (db_result($groups_res,$g,'group_id'))) ;
23 if (!$forums_group_res) {
24 $error .= 'Error: Enable to get forums from group '. db_result($groups_res,$g,'group_id') . ' : ' .db_error();
28 // build of an array containing group's forums
29 $forums_group = Array ();
30 for ($f=0; $f<db_numrows($forums_group_res); $f++) {
31 $forums_group[$f] = db_result($forums_group_res,$f,'group_forum_id');
34 // select of all group's roles
35 $roles_group_res = db_query_params ('SELECT role_id FROM role WHERE group_id=$1',
36 array (db_result($groups_res,$g,'group_id'))) ;
37 if (!$roles_group_res) {
38 $error .= 'Error: Enable to get roles from group '. db_result($groups_res,$g,'group_id') . ' : ' .db_error();
43 for ($r=0; $r<db_numrows($roles_group_res); $r++) {
44 // select conf of each role
45 $role_settings_res = db_query_params ('SELECT role_id, section_name, ref_id, value FROM role_setting WHERE role_id=$1 AND section_name=$2',
46 array (db_result($roles_group_res,$r,'role_id'),
48 if (!$role_settings_res) {
49 $error .= 'Error: Enable to get role settings from role '. db_result($roles_group_res,$r,'role_id') . ' : ' .db_error();
54 for ($c=0; $c<db_numrows($role_settings_res); $c++) {
55 // check if the conf is corresponding to an existing forum of the group
56 if (!in_array(db_result($role_settings_res,$c,'ref_id'),$forums_group)) {
57 // remove the conf if it is not corresponding to an existing forum of the group
58 $result = db_query_params('DELETE FROM role_setting WHERE role_id=$1 AND section_name=$2 AND ref_id=$3',
59 array (db_result($roles_group_res,$r,'role_id'),
61 db_result($role_settings_res,$c,'ref_id'))) ;
64 $error .= 'Error: Enable to delete role setting\'s forum for role '.db_result($roles_group_res,$r,'role_id') . ' ' .db_error();
72 for ($f=0; $f<sizeof($forums_group); $f++) {
74 for ($r=0; $r<db_numrows($roles_group_res); $r++) {
75 $role_setting_res = db_query_params ('SELECT role_id, section_name, ref_id, value FROM role_setting WHERE role_id=$1 AND section_name=$2 AND ref_id=$3',
76 array (db_result($roles_group_res,$r,'role_id'),
79 if (!$role_setting_res) {
80 $error .= 'Error: Enable to get role setting for forum '. $forums_group[$f] . ' : ' .db_error();
83 // check if it exists a conf for each role
84 if (db_numrows($role_setting_res) == 0){
85 //add the role setting corresponding
86 $result = db_query_params('INSERT INTO role_setting (role_id,section_name,ref_id,value) VALUES ($1,$2,$3,$4)',
87 array (db_result($roles_group_res,$r,'role_id'),
93 $error .= 'Error: Enable to set role setting for forum '. $forums_group[$f] . ' : ' .db_error();