###########################################################################################################################
## MOD Title: Group Access
## MOD Version: 1.1.2
## MOD Author: Logeen [www.kurshtml.edu.pl]
## MOD Description: Pozwala odebrac wybranej grupie osobne uprawnienia do pisania, glosowania i odpowiadania. Dziala rowniez w przypadku, kiedy subforum nie jest prywatne. Grupy z ograniczeniami nie mozna samodzielnie opuscic.
## Installation Level: Easy
## Installation Time: 5-10 Minutes
##
## Files To Edit: 6
## includes/constants.php
## language/[your_language]/lang_main.php
## admin/admin_ug_auth.php
## admin/admin_groups.php
## posting.php
## groupcp.php
##
###########################################################################################################################
#
#-----[ SQL ]--------------------------------
#
CREATE TABLE `phpbb_group_access` (
`group_id` mediumint(8) NOT NULL,
`forum_id` smallint(5) unsigned NOT NULL default '0',
`no_post` tinyint(1) NOT NULL default '0',
`no_reply` tinyint(1) NOT NULL default '0',
`no_vote` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`group_id`,`forum_id`)
);
#
#-----[ OPEN ]--------------------------------
#
includes/constants.php
#
#-----[ FIND ]--------------------------------
#
define('AUTH_ACCESS_TABLE', $table_prefix.'auth_access');
#
#-----[ AFTER, ADD ]--------------------------------
#
define('GROUP_ACCESS_TABLE', $table_prefix.'group_access');
#
#-----[ OPEN ]--------------------------------
#
language/[your_language]/lang_main.php
#
#-----[ FIND ]--------------------------------
#
//
// That's all, Folks!
// -------------------------------------------------
#
#-----[ BEFORE, ADD ]--------------------------------
#
$lang['Access denied'] = 'Dostêp zabroniony';
#
#-----[ OPEN ]--------------------------------
#
admin/admin_ug_auth.php
#
#-----[ FIND ]--------------------------------
#
$l_auth_return = ( $mode == 'user' ) ? $lang['Click_return_userauth'] : $lang['Click_return_groupauth'];
$message = $lang['Auth_updated'] . '
' . sprintf($l_auth_return, '', '') . '
' . sprintf($lang['Click_return_admin_index'], '', '');
#
#-----[ BEFORE, ADD ]--------------------------------
#
////////// GROUP ACCESS
$group_access_nopost = isset($HTTP_POST_VARS) ? $HTTP_POST_VARS['group_access_nopost'] : $_POST['group_access_nopost'];
$group_access_novote = isset($HTTP_POST_VARS) ? $HTTP_POST_VARS['group_access_novote'] : $_POST['group_access_novote'];
$group_access_noreply = isset($HTTP_POST_VARS) ? $HTTP_POST_VARS['group_access_noreply'] : $_POST['group_access_noreply'];
$sql = "SELECT forum_id, no_post, no_reply, no_vote FROM " . GROUP_ACCESS_TABLE . " WHERE group_id = $group_id";
$result = $db->sql_query($sql);
$group_access_forums = array();
while($group_access_row = $db->sql_fetchrow($result))
{
$group_access_forums[$group_access_row['forum_id']] = 1;
}
$db->sql_freeresult($result);
foreach($forum_access as $group_access_f)
{
if ($group_access_forums[$group_access_f['forum_id']])
{
$sql = "UPDATE " . GROUP_ACCESS_TABLE . "
SET no_post = " . ($group_access_nopost ? '1' : '0') . ", no_reply = " . (isset($group_access_noreply) && in_array($group_access_f['forum_id'], $group_access_noreply) ? '1' : '0') . ", no_vote = " . ($group_access_novote ? '1' : '0') . "
WHERE group_id = $group_id AND forum_id = " . $group_access_f['forum_id'];
}
else $sql = "INSERT INTO " . GROUP_ACCESS_TABLE . " (group_id, forum_id, no_post, no_reply, no_vote) VALUES ($group_id, " . $group_access_f['forum_id'] . ", " . ($group_access_nopost ? '1' : '0') . ", " . (isset($group_access_noreply) && in_array($group_access_f['forum_id'], $group_access_noreply) ? '1' : '0') . ", " . ($group_access_novote ? '1' : '0') . ")";
$db->sql_query($sql);
}
//////////
#
#-----[ FIND ]--------------------------------
#
$template->assign_block_vars("switch_group_auth", array());
#
#-----[ AFTER, ADD ]--------------------------------
#
////////// GROUP ACCESS
$sql = "SELECT forum_id, no_post, no_reply, no_vote FROM " . GROUP_ACCESS_TABLE . " WHERE group_id = $group_id";
$result = $db->sql_query($sql);
$group_access = '';
$group_access_no = array();
while($group_access_row = $db->sql_fetchrow($result))
{
if ($group_access_row['no_post']) $group_access_no['post'][$group_access_row['forum_id']] = 1;
if ($group_access_row['no_reply']) $group_access_no['reply'][$group_access_row['forum_id']] = 1;
if ($group_access_row['no_vote']) $group_access_no['vote'][$group_access_row['forum_id']] = 1;
}
$db->sql_freeresult($result);
for ($group_access_i = 0, $group_access_forums = ''; $group_access_i < count($forum_access); $group_access_i++)
{
$group_access_forums .= '';
}
$group_access = '
' . $lang['Lock'] . '' . $lang['Post'] . '' . $lang['Vote'] . ' | ' . $lang['Reply'] . ': |