Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 07-29-2008, 09:51 PM
jesus likes pie jesus likes pie is offline
 
Join Date: Apr 2005
Posts: 342
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default what's going on with this code???

I nearly got this to work perfectly but there's a problem driving me NUTS:

Here's the plugin code (hook: profile_updateprofile)

PHP Code:
$user $db->query_first("
            SELECT field5
            FROM " 
TABLE_PREFIX "userfield
            WHERE userid = " 
$vbulletin->userinfo['userid'] . "
        "
);


        if (
$user['field5'] == 'Windows Vista Ultimate')
        {
        
$membergroupids $userdata->fetch_field('membergroupids');
        if (
$membergroupids != "")
        {
            
$membergroupids str_replace(", 10"""$membergroupids);
            
$membergroupids str_replace("10"""$membergroupids);
            
$membergroupids $membergroupids ", 9";
        }
        else
        {
            
$membergroupids '9';
        }

        
$userdata->set('membergroupids'$membergroupids);
        }
        else 
// ($user['field5'] == 'Windows Vista Home Premium')
        
{
        {
        
$membergroupids $userdata->fetch_field('membergroupids');
        if (
$membergroupids != "")
        {
            
$membergroupids str_replace(", 9"""$membergroupids);
$membergroupids str_replace("9"""$membergroupids);
            
$membergroupids $membergroupids ", 10";
        }
        else
        {
            
$membergroupids '10';
        }

        
$userdata->set('membergroupids'$membergroupids);
        }
        } 
Goal: There is a field I have for Operating System selection. It's a single selection dropdown (field5). Depending on what the user selects I want to move them into a specific secondary usergroup. They should not be able to be in 2 OS usergroups at the same time so if they switch the OS selection the code is supposed to remove all instances of the other OS-related usergroup IDs and then it updates with the new usergroup ID.

The current code is of course incomplete. I only have 2 selections because I was testing if it would work as designed so far. And it's nearly there.

The problem:

I select one of the options (let's say windows ultimate) and click update --> it will correctly modify the database. So far so good. However, if I go back and change from ultimate to home premium then the databse will not be altered. I cannot understand WHY this happens. Now here's the kicker: if I go back to edit my profile, the field IS set to home premium, so without touching anything and then clicking update THEN the database will get modified to reflect the usergroup changes.

Effectively you need to update your profile twice for it to work. No idea why.

And it gets a bit stranger...

If you only update once (so the databse has not changed yet in regards to the usergroup) and then return to the field selection but switch back to Ultimate and click update, the databse SHOULD not get modified since you put the field selection to correspond with what the databse is showing. HOWEVER...it DOES get modified and you get put into the home premium usergroup when it should be in the ultimate usergroup. And then it gets really confused because it now switched the IDs which correspond to the usergroups and furthermore it no longer requires that you update twice in order for it to modify the database usergroup records.

So once vB reverses the code to make ultimate updates give out the home premium usergroup (and vice verca) it no longer needs you to update twice.


Any ideas on WHY this is happening???

--------------- Added [DATE]1217395058[/DATE] at [TIME]1217395058[/TIME] ---------------

bump..
Reply With Quote
Reply


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 11:53 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03147 seconds
  • Memory Usage 2,223KB
  • 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)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