PDA

View Full Version : [Solved] Add Custom Profile Fields to New User Moderation


HyphyMike
01-11-2013, 07:12 PM
How would I go about getting the info from custom profile fields. I dont believe they are global variables and I know they are in a different table than the 'users' table thats being displayed on this page. They are in userfields. How would I go about making a query for these 2 Custom Profile Fields I need on this /admincp/user.php?do=moderate page.

print_form_header('user', 'domoderate'); print_table_header($vbphrase['users_awaiting_moderation'], 4);
print_cells_row(array(
$vbphrase['username'],
$vbphrase['email'],
$vbphrase['ip_address'],
"Main Server", "MS Username",
"<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&amp;u=$user[userid]\" target=\"_blank\"><b>$user[username]</b></a>";
$cell[] = "<a href=\"mailto:$user[email]\">$user[email]</a>";
$cell[] = "<a href=\"usertools.php?" . $vbulletin->session->vars['sessionurl'] . "do=doips&amp;depth=2&amp;ipaddress=$user[ipaddress]&amp;hash=" . CP_SESSIONHASH . "\" target=\"_blank\">$user[ipaddress]</a>";
$cell[] = "$profilefield[field5]";
$cell[] = "$profilefield[field6]";
$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']);
}
}

https://vborg.vbsupport.ru/external/2013/01/31.jpg

kh99
01-14-2013, 01:22 PM
I think what you'd do is change the query at the top of that section to be like this (parts in red added):

$users = $db->query_read("
SELECT user.userid, username, email, ipaddress, userfield.*
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield USING(userid)
WHERE usergroupid = 4
ORDER BY username
");



then you should be able to use $user[fieldX] where X is the id of your custom field.

HyphyMike
01-16-2013, 02:06 AM
Thank you for your response, although that code is still showing blanks in the box.

My current code with your editted query.

if ($_REQUEST['do'] == 'moderate')
{
$users = $db->query_read("
SELECT user.userid, username, email, ipaddress
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield USING(userid)
WHERE usergroupid = 4
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'],
$vbphrase['email'],
$vbphrase['ip_address'],
"Main Server", "MS Username1",
"<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&amp;u=$user[userid]\" target=\"_blank\"><b>$user[username]</b></a>";
$cell[] = "<a href=\"mailto:$user[email]\">$user[email]</a>";
$cell[] = "<a href=\"usertools.php?" . $vbulletin->session->vars['sessionurl'] . "do=doips&amp;depth=2&amp;ipaddress=$user[ipaddress]&amp;hash=" . CP_SESSIONHASH . "\" target=\"_blank\">$user[ipaddress]</a>";
$cell[] = "$user[field5]";
$cell[] = "$user[field6]";
$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']);
}
}

kh99
01-16-2013, 02:20 AM
Sorry, my mistake - you also have to add the userfield fields to the list of fields, like:

$users = $db->query_read("
SELECT user.userid, username, email, ipaddress, userfield.*
FROM " . TABLE_PREFIX . "user AS user
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield USING(userid)
WHERE usergroupid = 4
ORDER BY username
");

HyphyMike
01-16-2013, 02:40 AM
You, Sir, are a god.

Thank you very much this will help me exponentially.