Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 06-16-2011, 10:28 PM
Sarteck's Avatar
Sarteck Sarteck is offline
 
Join Date: Mar 2008
Posts: 304
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Trying to add a little extra to profile.php?do=editprofile ...

Right, so you know where we've got our Custom Profile Fields that users can alter? Someone has asked me to make a simple change to it. Or, I thought it was going to be simple, anyways...



Note the top Profile field there, "Username Color?" He wants me to put that "Gold Membership Extras" bit up above it, as shown in that image.

So I looked in the editprofile branch of the profile.php code, and I find out that the HTML is coming from a $customfields variable.

I see that $customfields gets its value from a function called fetch_profilefields(), and that function gets the individual HTML for each Profile Field from another function called fetch_profilefield().

Finally, I see that inside of fetch_profilefield() is a handy hook that I can use, profile_fetch_profilefields.



This is great, everything's falling into place.



Or so I thought it was.


fetch_profilefield() returns some HTML that gets assigned to the $tempcustom variable inside of fetch_profilefields(), as far as I can tell. However, when I try to return a value from fetch_profilefield(), it just doesn't "take" for some reason.



Here's what I got on that profile_fetch_profilefields hook:

PHP Code:
    if ($profilefield['profilefieldid'] == '16')
    {
        
$startbox '<div style="border:1px solid #000000; margin:1px;padding:1px;"><h2>Gold Membership Extras</h2><br />';
        
$endbox '</div>';


        
$data unserialize($profilefield['data']);
        
$selectbits '';
        
$foundselect 0;
        foreach (
$data AS $key => $val)
        {
            
$key++;
            
$selected '';
            if (
$vbulletin->userinfo["$profilefieldname"])
            {
                if (
trim($val) == $vbulletin->userinfo["$profilefieldname"])
                {
                    
$selected 'selected="selected"';
                    
$foundselect 1;
                }
            }
            else if (
$profilefield['def'] AND $key == 1)
            {
                
$selected 'selected="selected"';
                
$foundselect 1;
            }
            
$templater vB_Template::create('userfield_select_option');
                
$templater->register('key'$key);
                
$templater->register('selected'$selected);
                
$templater->register('val'$val);
            
$selectbits .= $templater->render();
        }
        if (
$profilefield['optional'])
        {
            if (!
$foundselect AND (!empty($vbulletin->userinfo["$profilefieldname"]) OR $vbulletin->userinfo["$profilefieldname"] === '0'))
            {
                
$optional $vbulletin->userinfo["$profilefieldname"];
            }
            
$templater vB_Template::create('userfield_optional_input');
                
$templater->register('optional'$optional);
                
$templater->register('optionalname'$optionalname);
                
$templater->register('profilefield'$profilefield);
                
$templater->register('tabindex'$tabindex);
            
$optionalfield $templater->render();
        }
        if (!
$foundselect)
        {
            
$selected 'selected="selected"';
        }
        else
        {
            
$selected '';
        }
        
$show['noemptyoption'] = iif($profilefield['def'] != 2truefalse);
        
$templater vB_Template::create('userfield_select');
            
$templater->register('optionalfield'$optionalfield);
            
$templater->register('profilefield'$profilefield);
            
$templater->register('profilefieldname'$profilefieldname);
            
$templater->register('selectbits'$selectbits);
            
$templater->register('selected'$selected);
        
$custom_field_holder $templater->render();

        
$templater vB_Template::create($wrapper_template);
            
$templater->register('custom_field_holder'$custom_field_holder);
            
$templater->register('profilefield'$profilefield);
        
$returnval $startbox.$templater->render().$endbox;
//if ($vbulletin->userinfo['userid'] == 533) {die($returnval.'<!-- test -->');}
        
return $returnval;
    } 

Now, when I uncomment //if ($vbulletin->userinfo['userid'] == 533) {die($returnval.'<!-- test -->');}, I get the expected output--the field is wrapped in between my "$startbox" and "$endbox" values. However, left commented, there is nothing that gets changed.

However, I -do- know that it's going through this function; 1), the uncommented "die()" executes, and 2) if I manually add some kind of test to $custom_field_holder, THAT value actually takes!

Could someone maybe point out a mistake I might be making? It's not terribly important to me--it's not even my own forum I'm doing this for--but it's bugging the hell out of me! XD

Also, I think similar plugins would help me organize my own forum's Profile Fields page.

Thanks in advance.
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 03:18 AM.


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.03549 seconds
  • Memory Usage 2,253KB
  • Queries Executed 11 (?)
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)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)showthread_list
  • (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_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • 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_threaded
  • showthread_threaded_construct_link
  • 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