I've made a change to Niels' banner MOD. My modification makes it possible to hide banners from users with a certain rank.
I tried to make a howto, it is not easyMOD compatible I think
I hope it is useful.
- Code: Select all
sql query to add the desired column to the banners table (default setting = 1 means banners default hidden to site admins)
ALTER TABLE `phpbb_banner` ADD `banner_hide_from` TINYINT( 2 ) DEFAULT '1' NOT NULL
OPEN
page_header.php
FIND
$sql = "SELECT DISTINCT banner_id
BEFORE ADD
$sql_banner_hide_rank = ($userdata['user_rank'] > 0) ? " OR " . $userdata['user_rank'] . " < banner_hide_from)" : ")";
$sql_banner_hide = "AND (banner_hide_from=0";
$sql_banner_hide.= ($userdata['user_id'] == ANONYMOUS) ? " OR 1)" : $sql_banner_hide_rank;
FIND
WHERE banner_active
AFTER ADD
$sql_banner_hide
OPEN
admin\admin_banner.php
FIND
$banner_example = '<a href="'.append_sid('redirect.'.$phpEx.'?banner_id='.$banner_info['banner_id']).'" target="_blank"><img src="'.$banner_info['banner_name'].'" '.$banner_size.' border="0" alt="'.$banner_info['banner_description'].'" title="'.$banner_info['banner_description'].'" /></a>';
}
AFTER ADD
$banner_hide_from = $banner_info['banner_hide_from'];
FIND
'L_NO' => $lang['No'],
AFTER ADD
'BANNER_HIDE_FROM' => $banner_info['banner_hide_from'],
'L_BANNER_HIDE_FROM' => $lang['Banner_hide_from'],
'L_BANNER_HIDE_FROM_EXPLAIN' => $lang['Banner_hide_from_explain'],
FIND
if( !empty($banner_id) )
BEFORE ADD
$banner_hide_from = ( isset($HTTP_POST_VARS['banner_hide_from']) ) ? intval($HTTP_POST_VARS['banner_hide_from']) : 0;
FIND
date_begin=$date_begin, date_end=$date_end, time_begin=$time_begin, time_end=$time_end,
AFTER ADD
banner_hide_from=$banner_hide_from,
FIND
$sql = "INSERT INTO " . BANNERS_TABLE . " (banner_id, banner_name, banner_active, banner_spot, banner_description, banner_url, banner_click, banner_view, banner_owner, banner_level, banner_level_type, banner_timetype, time_begin, time_end, date_begin, date_end, banner_comment, banner_type, banner_width, banner_height, banner_filter, banner_filter_time,banner_weigth,banner_hide_from)
VALUES ('$banner_id','" . str_replace("\'", "''", $banner_name) . "', '$banner_active', '$banner_spot', '" . str_replace("\'", "''", $banner_description) . "', '" . str_replace("\'", "''", $banner_url) . "', '$banner_click', '$banner_view', '".$owner['user_id']."', '$banner_level', '$banner_level_type', '$time_type', '$time_begin', '$time_end', '$date_begin', '$date_end', '" . str_replace("\'", "''", $banner_comment) . "','$banner_type','" . str_replace("\'", "''", $banner_width) . "','" . str_replace("\'", "''",
$banner_height) . "','$banner_filter','$banner_filter_time','$banner_weigth','banner_hide_from')";
INLINE FIND
,banner_weigth
INLINE AFTER ADD
,banner_hide_from
INLINE FIND
,'$banner_weigth'
INLINE AFTER ADD
,'banner_hide_from'
OPEN
templates\subSilver\admin\banner_edit_body.tpl
FIND
<tr>
<td class="row1" width="38%"><span class="gen">{L_BANNER_WEIGTH}:</span><br />
<span class="gensmall">{L_BANNER_WEIGTH_EXPLAIN}</span></td>
<td class="row2"><input type="text" name="banner_weigth" size="2" maxlength="2" value="{BANNER_WEIGTH}" /></td>
</tr>
BEFORE ADD
<tr>
<td class="row1" width="38%"><span class="gen">{L_BANNER_HIDE_FROM}:</span><br />
<span class="gensmall">{L_BANNER_HIDE_FROM_EXPLAIN}</span></td>
<td class="row2"><input type="text" name="banner_hide_from" size="2" maxlength="2" value="{BANNER_HIDE_FROM}" /></td>
</tr>
OPEN
language\lang_english\lang_banner.php
FIND
?>
BEFORE ADD
$lang['Banner_hide_from'] = 'Hide banner for users';
$lang['Banner_hide_from_explain'] = 'The banner is hidden for users with a rank higher than the value you set here. A value of 0 means that every user sees the banner.';
SAVE/CLOSE ALL FILES
BTW, this code hide banner for users with a rank equal or higher than the one set for that banner. Of course it is possible to hide it only for users with a rank equal. If you would like to, you would have to change
- Code: Select all
$userdata['user_rank'] . " < banner_hide_from)"
to
- Code: Select all
$userdata['user_rank'] . " = banner_hide_from)"

