View Full Version : Custom Profile Field in user.php
biome.pat
09-15-2008, 01:46 AM
Hello! I'm trying to customize user.php in the admincp folder so that there are a few extra columns that show up while moderating new users. There are a couple of custom profile fields that need to be laboriously cross-checked before I allow folks to post, and it sure would be easier if they showed up on the main user moderation page. It would be even easier if I could get LDAP Authentication working, but that's a different story... grumble, mumble, etc.
Anyway, I know how to set it up and where to edit, but I can't seem to figure out what calls the contents of the custom field. I figured it would be $user[fieldX] or something, but that's not working. Any quick answers? I only know how to call it in a postbit, but I think this is different, if I understand correctly...
Thanks all!
Lynne
09-15-2008, 01:53 AM
Are you making sure the fields are even available to be printed out right then? Did you modify a query to add them to the select statement?
biome.pat
09-15-2008, 04:06 AM
Oh dear. And this is where my amateur-ness shines through. I don't know PHP aside from the chunks I try to edit, so the grand structure is above me. Excuse me if my terminology is a little wonky, but how would I query info from a different table? In the user moderation section, all the info is queried from the "user" table, but the custom profile fields are in the "userfield" table. Is there an easy way to organize that so that I could get the userfield info into the $users array that all the other info is dumped in?
Drats. I don't make sense, do I?
Well thanks regardless Lynne!
--------------- Added 1221460988 at 1221460988 ---------------
Alright, so I managed to learn a little PHP, and the parts I changed around were the query_read and $cell = array() bits... I'd love to hear your input as to whether this looks OK. Barring any unforeseen database explosions, I look forward to hearing from you :)
// ###################### Start moderate + coppa #######################
if ($_REQUEST['do'] == 'moderate')
{
$users = $db->query_read("
SELECT
" . TABLE_PREFIX . "user.userid,
" . TABLE_PREFIX . "user.username,
" . TABLE_PREFIX . "user.email,
" . TABLE_PREFIX . "user.ipaddress,
" . TABLE_PREFIX . "userfield.field6,
" . TABLE_PREFIX . "userfield.field7,
" . TABLE_PREFIX . "userfield.field8
FROM
" . TABLE_PREFIX . "user,
" . TABLE_PREFIX . "userfield
WHERE usergroupid = 4
AND " . TABLE_PREFIX . "user.userid = " . TABLE_PREFIX . "userfield.userid
ORDER BY username
");
if ($db->num_rows($users) == 0)
{
print_stop_message('no_matches_found');
}
else
{
?>
<script type="text/javascript">
function js_check_radio(value)
{
for (var i = 0; i < document.cpform.elements.length; i++)
{
var e = document.cpform.elements[i];
if (e.type == 'radio' && e.name.substring(0, 8) == 'validate')
{
if (e.value == value)
{
e.checked = true;
}
else
{
e.checked = false;
}
}
}
}
</script>
<?php
print_form_header('user', 'domoderate');
print_table_header($vbphrase['users_awaiting_moderation'], 6);
print_cells_row(array(
$vbphrase['username'],
"First",
"Last",
$vbphrase['email'],
"UTORid",
"<input type=\"button\" class=\"button\" value=\"" . $vbphrase['accept_all'] . "\" onclick=\"js_check_radio(1)\" />
<input type=\"button\" class=\"button\" value=\"" . $vbphrase['delete_all'] . "\" onclick=\"js_check_radio(-1)\" />
<input type=\"button\" class=\"button\" value=\"" . $vbphrase['ignore_all'] . "\" onclick=\"js_check_radio(0)\" />"
), 0, 'thead', -3);
while ($user = $db->fetch_array($users))
{
$cell = array();
$cell[] = "<a href=\"user.php?" . $vbulletin->session->vars['sessionurl'] . "do=edit&u=$user[userid]\" target=\"_user\"><b>$user[username]</b></a>";
$cell[] = "$user[field6]";
$cell[] = "$user[field7]";
$cell[] = "<a href=\"mailto:$user[email]\">$user[email]</a>";
$cell[] = "$user[field8]";
$cell[] = "
<label for=\"v_$user[userid]\"><input type=\"radio\" name=\"validate[$user[userid]]\" value=\"1\" id=\"v_$user[userid]\" tabindex=\"1\" />$vbphrase[accept]</label>
<label for=\"d_$user[userid]\"><input type=\"radio\" name=\"validate[$user[userid]]\" value=\"-1\" id=\"d_$user[userid]\" tabindex=\"1\" />$vbphrase[delete]</label>
<label for=\"i_$user[userid]\"><input type=\"radio\" name=\"validate[$user[userid]]\" value=\"0\" id=\"i_$user[userid]\" tabindex=\"1\" checked=\"checked\" />$vbphrase[ignore]</label>
";
print_cells_row($cell, 0, '', -4);
}
require_once(DIR . '/includes/functions_misc.php');
$template = fetch_phrase('validated', 'emailbody', 'email_');
print_table_break();
print_table_header($vbphrase['email_options']);
print_yes_no_row($vbphrase['send_email_to_accepted_users'], 'send_validated', 1);
print_yes_no_row($vbphrase['send_email_to_deleted_users'], 'send_deleted', 1);
print_description_row($vbphrase['email_will_be_sent_in_user_specified_language']);
print_table_break();
print_submit_row($vbphrase['continue']);
}
}
Lynne
09-15-2008, 03:27 PM
Well, simply looking at the code, it looks fine. Does it give you what you want? (Sometimes what I do is rename the page to something like user1.php and that way I'm not screwing up the page the mods are using.)
biome.pat
09-15-2008, 11:13 PM
Yeah, it seems to be working great! I was just worried that somehow I would erase EVERYTHING somehow. Y'know... just "DATABASE GONE". I suppose that pretty hard to do with query_read, but still :)
Thanks again for getting me thinking in the right direction. This made the today's couple-hundred user moderations somewhat more manageable!
vBulletin® v3.8.12 by vBS, Copyright ©2000-2024, vBulletin Solutions Inc.