Pagina 1 van 1

[ BETA ] Admin Veld In Profiel

Geplaatst: 16 nov 2004, 12:07
door ElbertF
Admin Veld In Profiel 2.0.3
  • Plaats een extra veld in de profielen (alleen zichtbaar admins en/of moderators), met alle beschikbare informatie over de betreffende gebruiker. It laat zelfs hun IP adressen zien (maar alleen als de gebruiker onlangs heeft ingelogd).
  • Plaatst een link naar de Gebruikers Administratie in de profielen van de gebruikers, waar je al hun gegevens kan aanpassen. Deze link is nooit zichtbaar voor moderators.
  • Voegt een extra optie toe in de ACP, om de mod aan te zetten voor alleen admins, of admins en moderators, of om de mod uit te schakelen.
  • Screenshots:

    Afbeelding

    Admin Control Panel:

    Afbeelding

Code: Selecteer alles

##############################################################
## MOD Title: Admin Field In Profile Mod
## MOD Author: etncrew < spambots@hotmail.com > (Oker) http://www.etncrew.com/forum
## MOD Description: A very easy to install add-on, which adds an admin-only field to the user profiles, with
## detailed user information, and a link to the Admin User Management.
## MOD Version: 2.0.0
##
## Installation Level: Easy
## Installation Time: 10 Minutes
## Files To Edit: constants.php
##			admin/admin_board.php
##			includes/usercp_viewprofile.php
##			language/lang_english/lang_main.php
##			language/lang_english/lang_admin.php
##			templates/subSilver/profile_view_body.tpl
##			templates/subSilver/admin/board_config_body.tpl
## 
## Included Files: n/a
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes: 
##
##############################################################
## MOD History:
##
##   2004-11-19 - Version 2.0.3
##      - Added disable/admin only/admin & moderator only switch in the ACP
##      - Added session history (ip tracking)
##      - Small bugfix
##
##   2004-11-17 - Version 2.0.0
##      - Added an admin-only field with detaild user information
##
##   2004-10-20 - Version 1.0.0
##      - Creation
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ SQL ]------------------------------------------
#

INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ('admin_field', '1');

#
#-----[ OPEN ]------------------------------------------
#

admin/admin_board.php

#
#-----[ FIND ]------------------------------------------
#

$prune_no = ( !$new['prune_enable'] ) ? "checked=\"checked\"" : "";

#
#-----[ AFTER, ADD ]------------------------------------------
#

// Begin mod | Admin Field In Profile
// ADD
$admin_field_disabled = ($new['admin_field'] == 0) ? 'checked="checked"' : '';
$admin_field_admin    = ($new['admin_field'] == 1) ? 'checked="checked"' : '';
$admin_field_mod      = ($new['admin_field'] == 2) ? 'checked="checked"' : '';
// End mod | Admin Field In Profile

#
#-----[ FIND ]------------------------------------------
#

	"L_ADMIN" => $lang['Acc_Admin'], 

#
#-----[ AFTER, ADD ]------------------------------------------
#

	// Begin mod | Admin Field In Profile
	// ADD
	"L_ADMIN_FIELD" => $lang['Admin_field'], 
	"L_ADMIN_FIELD_EXPLAIN" => $lang['Admin_field_explain'], 
	"L_ADMIN_ONLY" => $lang['Admin_only'],
	"L_ADMIN_MOD_ONLY" => $lang['Admin_mod_only'],
	// End mod | Admin Field In Profile

#
#-----[ FIND ]------------------------------------------
#

	"ACTIVATION_NONE_CHECKED" => $activation_none,

#
#-----[ AFTER, ADD ]------------------------------------------
#

	// Begin mod | Admin Field In Profile
	// ADD
	"ADMIN_FIELD_DISABLED" => $admin_field_disabled,
	"ADMIN_FIELD_ADMIN" => $admin_field_admin,
	"ADMIN_FIELD_MOD" => $admin_field_mod,
	// End mod | Admin Field In Profile

#
#-----[ OPEN ]------------------------------------------
#

constants.php

#
#-----[ FIND ]------------------------------------------
#

?>

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// Begin mod | Admin Field In Profile
// ADD
define('ADMIN_FIELD_TABLE', $table_prefix.'admin_field');
// End mod | Admin Field In Profile

#
#-----[ OPEN ]------------------------------------------
#

includes/usercp_viewprofile.php

#
#-----[ FIND ]------------------------------------------
#

$template->assign_vars(array(

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// Begin mod | Admin Field In Profile
// ADD
if((($userdata['user_level'] == ADMIN) && ($board_config['admin_field'] != 0)) || (($userdata['user_level'] == MOD) && ($board_config['admin_field'] == 2))) {
	$user_id = ( isset( $HTTP_POST_VARS[POST_USERS_URL]) ) ? intval( $HTTP_POST_VARS[POST_USERS_URL]) : intval( $HTTP_GET_VARS[POST_USERS_URL]);
	$this_userdata = get_userdata($user_id);

	$No = "<b>" . $lang['No'] . "</b>";
	$Yes = $lang['Yes'];
	
	$timezone = "GMT " . (($this_userdata['user_timezone'] >= 0) ? "+" : "") . round($this_userdata['user_timezone'], 1);
	
	$sql = "SELECT themes_id, style_name
		FROM " . THEMES_TABLE . "
		ORDER BY template_name, themes_id";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Couldn't query themes table", "", __LINE__, __FILE__, $sql);
	}

	while ( $row = $db->sql_fetchrow($result) )
	{
		if ($row['themes_id'] == $this_userdata['user_style']) {
			$style = $row['style_name'];
		}
	}
	
	$sql = "SELECT session_user_id, session_time, session_ip FROM " . SESSIONS_TABLE . "
		WHERE session_user_id = " . $this_userdata['user_id'] . " ORDER BY session_time DESC";
	if(!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, "Couldn't obtain guest user/online information.", "", __LINE__, __FILE__, $sql);
	}
	$onlinerow_reg = $db->sql_fetchrowset($result);

	for($i = 0; $i < count($onlinerow_reg); $i++) {
		$ip_history .= "<a target='_blank' href='http://network-tools.com/default.asp?host=" . decode_ip($onlinerow_reg[$i]['session_ip']) . "'>" . decode_ip($onlinerow_reg[$i]['session_ip']) . "</a><br/>";
		$ip_time    .= date("D M j, Y H:i", $onlinerow_reg[$i]['session_time']) . "<br />";
	}

	if (!$ip_time) {
		$ip_time = $lang['No_recent_data'];
	}

	$template->assign_vars(array(
		'L_ADMIN_ONLY' => ($userdata['user_level'] == ADMIN) ? $lang['Admin_only_field'] : $lang['Admin_mod_only_field'],
		'L_USER_ADMIN' => $lang['User_admin'],
		'U_ADMIN_PROFILE' => "admin/admin_users.$phpEx?mode=edit&" . POST_USERS_URL . '=' . $profiledata['user_id'] . '&sid='. $userdata['session_id'],

		'L_IP' => $lang['IP_history'],
		'IP_TIME' => $ip_time,
		'IP' => $ip_history,
		
		'L_REG_INFO' => $lang['Registration_info'],
		'U_EMAIL_ADDRESS' => "<a href='$email_uri'>{$profiledata['user_email']}</a>",

		'L_PREFERENCES' => $lang['Preferences'],
		'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'],
		'VIEW_EMAIL' => ($this_userdata['user_viewemail'] == 0) ? $No : $Yes,
		'L_HIDDEN' => $lang['Hide_user'],
		'HIDDEN' => ($this_userdata['user_allow_viewonline'] == 1) ? $No : $Yes,
		
		'L_NOTIFY_PM' => $lang['Notify_on_privmsg'],
		'NOTIFY_PM' => ($this_userdata['user_notify_pm'] == 0) ? $No : $Yes,
		'L_POPUP_PM' => $lang['Popup_on_privmsg'],
		'POPUP_PM' => ($this_userdata['user_popup_pm'] == 0) ? $No : $Yes,
		'L_ALWAYS_ADD_SIGNATURE' => $lang['Always_add_sig'],
		'ALWAYS_ADD_SIGNATURE' => ($this_userdata['user_attachsig'] == 0) ? $No : $Yes,
		'L_NOTIFY_REPLY' => $lang['Always_notify'],
		'NOTIFY_REPLY' => ($this_userdata['user_notify'] == 0) ? $No : $Yes,
		'L_ALWAYS_ALLOW_BBCODE' => $lang['Always_bbcode'],
		'ALWAYS_ALLOW_BBCODE' => ($this_userdata['user_allowbbcode'] == 0) ? $No : $Yes,
		'L_ALWAYS_ALLOW_HTML' => $lang['Always_html'],
		'ALWAYS_ALLOW_HTML' => ($this_userdata['user_allowhtml'] == 0) ? $No : $Yes,
		'L_ALWAYS_ALLOW_SMILIES' => $lang['Always_smile'],
		'ALWAYS_ALLOW_SMILIES' => ($this_userdata['user_allowsmile'] == 0) ? $No : $Yes,

		'L_LANG' => $lang['Board_lang'],
		'LANG' => $this_userdata['user_lang'],
		'L_BOARD_STYLE' => $lang['Board_style'],
		'BOARD_STYLE' => $style,
		'L_TIMEZONE' => $lang['Timezone'],
		'TIMEZONE' => $timezone,
			
		'L_SPECIAL_ADMIN' => $lang['User_special'],
		'L_USER_ACTIVE' => $lang['User_status'],
		'USER_ACTIVE' => ($this_userdata['user_active'] == 0) ? $No : $Yes,
		'L_ALLOW_AVATAR' => $lang['User_allowavatar'],
		'ALLOW_AVATAR' => ($this_userdata['user_allowavatar'] == 0) ? $No : $Yes,
		'L_ALLOW_PM' => $lang['User_allowpm'],
		'ALLOW_PM' => ($this_userdata['user_allow_pm'] == 0) ? $No : $Yes)
	);

	$template->assign_block_vars("switch_user_admin", array());
	
	if($userdata['user_level'] == ADMIN) {
		$template->assign_block_vars("switch_user_mod", array());
	}
}
// End mod | Admin Field In Profile

#
#-----[ OPEN ]------------------------------------------
#

templates/subSilver/profile_view_body.tpl

#
#-----[ FIND ]------------------------------------------
# Note: this part is not neccesary (but it looks better), skip it if you can't find it.

<table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0" align="center">

#
#-----[ IN-LINE FIND ]------------------------------------------
#

3

#
#-----[ IN-LINE, REPLACE WITH ]------------------------------------------
#

0

#
#-----[ FIND ]------------------------------------------
#

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">

#
#-----[ BEFORE, ADD ]------------------------------------------
#

<!-- Begin MOD | Admin Field In Profile
Add -->
  <!-- BEGIN switch_user_admin -->
  <tr> 
	<td colspan="2" class="catLeft" width="100%" height="28" align="center"><b><span class="gen">{L_ADMIN_ONLY}</span></b></td>
  </tr>
  <tr>
	<td colspan="2" class="row1" valign="top"><table width="100%" border="0" cellspacing="1" cellpadding="3">
    <!-- END switch_user_admin -->
    <!-- BEGIN switch_user_mod -->
	 <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_USER_ADMIN}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen"><a target="_admin" href="{U_ADMIN_PROFILE}">{USERNAME}</a></span></td>
	  </tr>
    <!-- END switch_user_mod -->
    <!-- BEGIN switch_user_admin -->
	  <tr> 
		<td colspan="2" class="row2" height="6" valign="top" align="center"><span class="gensmall">{L_REG_INFO}</span></td>
	  </tr>   
	  <tr>
		<td class="row1" width="50%" height="6" valign="top" align="right"><span class="gen">{L_EMAIL_ADDRESS}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{U_EMAIL_ADDRESS}</span></td>
	  </tr>
	  <tr> 
		<td colspan="2" class="row2" height="6" valign="top" align="center"><span class="gensmall">{L_PREFERENCES}</span></td>
	  </tr>   
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_PUBLIC_VIEW_EMAIL}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{VIEW_EMAIL}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_HIDDEN}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{HIDDEN}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_NOTIFY_PM}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{NOTIFY_PM}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_POPUP_PM}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{POPUP_PM}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_HIDDEN}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{HIDDEN}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALWAYS_ADD_SIGNATURE}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALWAYS_ADD_SIGNATURE}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_NOTIFY_REPLY}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{NOTIFY_REPLY}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALWAYS_ALLOW_BBCODE}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALWAYS_ALLOW_BBCODE}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALWAYS_ALLOW_HTML}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALWAYS_ALLOW_HTML}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALWAYS_ALLOW_SMILIES}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALWAYS_ALLOW_SMILIES}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_LANG}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{LANG}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_BOARD_STYLE}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{BOARD_STYLE}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_TIMEZONE}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{TIMEZONE}</span></td>
	  </tr>
	  <tr> 
		<td colspan="2" class="row2" height="6" valign="top" align="center"><span class="gensmall">{L_SPECIAL_ADMIN}</span></td>
	  </tr>   
	  <tr>
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_USER_ACTIVE}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{USER_ACTIVE}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALLOW_PM}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALLOW_PM}</span></td>
	  </tr>
	  <tr> 
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{L_ALLOW_AVATAR}:</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{ALLOW_AVATAR}</span></td>
	  </tr>
	  <tr> 
		<td colspan="2" class="row2" height="6" valign="top" align="center"><span class="gensmall">{L_IP}</span></td>
	  </tr>   
	  <tr>
		<td class="row1" height="6" valign="top" align="right"><span class="gen">{IP_TIME}</span></td>
		<td class="row2" height="6" valign="top"><span class="gen">{IP}</span></td>
	  </tr>
	</table></td>
  </tr>
  <!-- END switch_user_admin -->
<!-- End MOD | Admin Field In Profile -->

#
#-----[ OPEN ]------------------------------------------
#

templates/subSilver/admin/board_config_body.tpl

#
#-----[ FIND ]------------------------------------------
#

		<td class="row1">{L_ENABLE_PRUNE}</td>
		<td class="row2"><input type="radio" name="prune_enable" value="1" {PRUNE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="prune_enable" value="0" {PRUNE_NO} /> {L_NO}</td>
	</tr>

#
#-----[ AFTER, ADD ]------------------------------------------
#

	<!-- Begin MOD | Admin Field In Profile
	Add -->
	<tr>
		<td class="row1">{L_ADMIN_FIELD}<br /><span class="gensmall">{L_ADMIN_FIELD_EXPLAIN}</span></td>
		<td class="row2"><input type="radio" name="admin_field" value="0" {ADMIN_FIELD_DISABLED} />{L_DISABLED}&nbsp; &nbsp;<input type="radio" name="admin_field" value="1" {ADMIN_FIELD_ADMIN} />{L_ADMIN_ONLY}&nbsp; &nbsp;<input type="radio" name="admin_field" value="2" {ADMIN_FIELD_MOD} />{L_ADMIN_MOD_ONLY}</td>
	</tr>
	<!-- End MOD | Admin Field In Profile -->

#
#-----[ OPEN ]------------------------------------------
#

language/lang_english/lang_main.php

#
#-----[ FIND ]------------------------------------------
#

//
// That's all, Folks!

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// Begin mod | Admin Field In Profile
// Add
$lang['Admin_only_field'] = 'Admin Only Field';
$lang['Admin_mod_only_field'] = 'Moderators Only Field';
$lang['User_admin'] = 'User Administration';
$lang['User_status'] = 'User is active';
$lang['User_allowpm'] = 'Can send Private Messages';
$lang['User_allowavatar'] = 'Can display avatar';
$lang['User_special'] = 'Special admin-only fields';
$lang['IP_history'] = 'Session history [ date | ip ]';
$lang['No_recent_data'] = 'No recent data available';
// End mod | Admin Field In Profile

#
#-----[ OPEN ]------------------------------------------
#

language/lang_english/lang_admin.php

#
#-----[ FIND ]------------------------------------------
#

//
// That's all Folks!

#
#-----[ BEFORE, ADD ]------------------------------------------
#

// Begin mod | Admin Field In Profile
// Add
$lang['Admin_field'] = "Admin Field In Profile";
$lang['Admin_field_explain'] = "Adds detailed user information to the profiles, only viewable by admins and/or moderators.";
$lang['Admin_only'] = "Admin Only";
$lang['Admin_mod_only'] = "Admins & Moderators";
// End mod | Admin Field In Profile

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Upgrade: version 2.0.0
Upgrade: version 2.0.3

Geplaatst: 16 nov 2004, 18:44
door LazyTiger
bestaat al...

Geplaatst: 16 nov 2004, 21:56
door mosymuis
Heb op mijn forum ook zoiets dergelijks gemaakt, het nut ervan is handig kan ik je zeggen.

Twee tips:

Code: Selecteer alles

$HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']
is nogal omslachtig. $userdata['session_id'] werkt ook.

Daarnaast is je nieuwe frame pagina overbodig, je zou best een extension voor de huidige pagina kunnen maken die aan de hand van een ?frame= oid een te noemen pagina plaatst.

Geplaatst: 17 nov 2004, 14:28
door ElbertF
mosymuis schreef:Heb op mijn forum ook zoiets dergelijks gemaakt, het nut ervan is handig kan ik je zeggen.

Twee tips:

Code: Selecteer alles

$HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_sid']
is nogal omslachtig. $userdata['session_id'] werkt ook.
Ok, bedankt :)
mosymuis schreef:Daarnaast is je nieuwe frame pagina overbodig, je zou best een extension voor de huidige pagina kunnen maken die aan de hand van een ?frame= oid een te noemen pagina plaatst.
Wat bedoel je precies? Een iFrame in profielen?

Geplaatst: 17 nov 2004, 15:03
door Luuk
Nee, ik denk in admin/index.php de code zo maken dat hij rechts de goede pagina laadt dmv ?frame=blaat in de url te zetten.

Geplaatst: 17 nov 2004, 17:57
door mosymuis
^^precies

Geplaatst: 17 nov 2004, 18:40
door ElbertF
Luuk schreef:?frame=blaat
Is dat HTML? Zegt me niks.. Kun je uitleggen hoe ik dat precies doe dan?

Geplaatst: 17 nov 2004, 18:43
door mosymuis
Als je dat meegeeft aan het url kan je hem in PHP aannemen met $HTTP_GET_VARS['frame'] of $_GET['frame'].

Geplaatst: 19 nov 2004, 00:04
door ElbertF
Update: versie 2.0.0

Plaatst nu een veld met beschikbare info over de gebruikbaar in de profielen, alleen zichtbaar voor admins (zie eerste post voor nieuwe screenshot).

@Mosymuis: okee, dan moet ik dus admin/index.php aanpassen.. Komt in de volgende versie :)

Geplaatst: 19 nov 2004, 16:04
door ElbertF
Upgrade: version 2.0.3

Laat nu ook de IP adressen zien van onlangs ingelogde gebruikers. Ik heb een aan/uit knop in de ACP toegevoegd, en een optie om het veld zichtbaar te maken voor moderators (zonder de admin link).
P.T. schreef:bestaat al...
Nu begint het wel een uniek modje te worden toch?

Geplaatst: 19 nov 2004, 16:13
door Stef
Spambot schreef:Upgrade: version 2.0.3

Laat nu ook de IP adressen zien van onlangs ingelogde gebruikers.
Wat heeft dat met je mod te maken?

Geplaatst: 19 nov 2004, 16:36
door ElbertF
Alles, het is de bedoeling zoveel mogelijk informatie over de gebruikers weer te geven. Dit geeft je ook de mogelijkheid IP adressen te traceren zonder dat een gebruiker iets post. Leek me wel een mooie aanvulling. :)

Geplaatst: 25 nov 2004, 20:11
door RobinTown
nav dit

Kan je ook de browser en zeg maar welke versie van windows gebruikt (ik weet niet hoe je dat in 1 woord noemt :P )

Geplaatst: 26 nov 2004, 01:04
door ElbertF
Die info kun je ophalen door op de link van het IP adres te klikken. Ik kan het er niet eenvoudig in verwerken :)