Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 09-15-2008, 01:46 AM
biome.pat biome.pat is offline
 
Join Date: Aug 2008
Location: Toronto, ON, Canada
Posts: 43
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Custom Profile Field in user.php

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!
Reply With Quote
  #2  
Old 09-15-2008, 01:53 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #3  
Old 09-15-2008, 04:06 AM
biome.pat biome.pat is offline
 
Join Date: Aug 2008
Location: Toronto, ON, Canada
Posts: 43
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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 [DATE]1221460988[/DATE] at [TIME]1221460988[/TIME] ---------------

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

PHP Code:
// ###################### 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&amp;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($cell0'', -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']);
    }
}
Reply With Quote
  #4  
Old 09-15-2008, 03:27 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.)
Reply With Quote
  #5  
Old 09-15-2008, 11:13 PM
biome.pat biome.pat is offline
 
Join Date: Aug 2008
Location: Toronto, ON, Canada
Posts: 43
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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!
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 06:56 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04718 seconds
  • Memory Usage 2,241KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete