vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   How can I modify this in register.php? (https://vborg.vbsupport.ru/showthread.php?t=265833)

AFemaleProdigy 06-26-2011 07:57 PM

How can I modify this in register.php?
 
I have been trying for some time now to figure out how to create the option in user registration for the user to select which usergroup they are placed in. All I keep hearing is "pay someone to do it" or I get referred to mods that no longer work. And I see that many other people have asked about this as well, and not gotten any answers.

I don't have the money to hire someone to do this right now and need it done asap. I want to know how to do this myself. I understand the general concept, but I need some direction with the specific code.

Right now I am looking at register.php and am thinking that I need to modify this line of code to include the function that says "if userinfo.field12 = xyz, then place user in usrgeroup xx". So, assuming the user chooses their usergroup on the register.php page (which is generated by a custom profile field), then they are placed into the appropriate group.

The default code below says (correct me if I am wrong): If user email needs verified, place into usergroup 3. Otherwise if user needs to be moderated, place into usergroup 4. Otherwise place all other users in default usergroup 2.

Code:

if ($vbulletin->options['verifyemail'])
 {
  $newusergroupid = 3;
 }
 else if ($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser'])
 {
  $newusergroupid = 4;
 }
 else
 {
  $newusergroupid = 2;
 }

So how could I write it to say all of that, plus modify the last else to say " else if userinfo.field12=x, place into usergroup xx. Then repeat for each userfield/usergroup option that can be selected?

If someone would help me with this I would greatly appreciate it!

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

Trying to figure this out. I came up with this and know it is not right, but I feel like I am so close! Ideas??

Code:

else if ($vbulletin->options['userinfo.field12'] != "Venue")
 {
  $newusergroupid = 10;


HMBeaty 06-26-2011 08:16 PM

Try this:
Code:

else if ($vbulletin->userinfo['field12'] != "Venue")
 {
  $newusergroupid = 10;


AFemaleProdigy 06-26-2011 08:52 PM

Thanks! However, I am not able to get that to work. I should probably also mention that the curstom field is a drop down menu (don't know if that matters). So I tried a variation of the following to select the particular option ID selected:

Code:

else if ($vbulletin->userinfo['field7'] != 5)
    {
    $newusergroupid = 10;
 }

So 5 = Venue, but that doesn't seem to work either. It is still putting users in the default 2 group.

Annnnnd this won't work...

Code:

if ($vbulletin->options['verifyemail'])
 {
  $newusergroupid = 3;
 }
 else if ($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser'])
 {
  $newusergroupid = 4;
 }
 else if ($vbulletin->userinfo['field7'] != "Venue")
    {
    $newusergroupid = 10;
 }
 else
 {
  $newusergroupid = 2;
 }

hmmm...

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

Hey... could it be that I should be editing this instead?? I am using email activation. So upon clicking the activation link, it is putting user into default 2 group. Maybe I need to put that line of code into this somewhere??

Code:

if ($vbulletin->options['verifyemail'])
  {
    $activateid = build_user_activation_id($userid, (($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser']) ? 4 : 2), 0);
    eval(fetch_email_phrases('activateaccount'));
    vbmail($email, $subject, $message, true);
  }
  else if ($newusergroupid == 2)
  {
    if ($vbulletin->options['welcomemail'])
    {
    eval(fetch_email_phrases('welcomemail'));
    vbmail($email, $subject, $message);
    }
  }


Boofo 06-26-2011 08:56 PM

Do you want them in the 10 usergroup is Venue shows up for the field?

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

If so, try this:

Code:

if ($vbulletin->options['verifyemail'])
{
        $newusergroupid = 3;
}
else if ($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser'])
{
        $newusergroupid = 4;
}
else if ($vbulletin->userinfo['field7'] == "Venue")
{
        $newusergroupid = 10;
}
else
{
        $newusergroupid = 2;
}


AFemaleProdigy 06-26-2011 09:06 PM

Okaaay... so I did some experimenting thinking maybe the email activation was interfering and it turns out that it was. So this DOES work if email activation is turned off. So the next hurdle is, how to keep email activation enabled and have this work?

And yes, if the user selects drop down otion "Venue", then they will be placed into usergroup 10 which is for Venues only.

Code:

else if ($vbulletin->userinfo['field7'] != "Venue")
    {
    $newusergroupid = 10;
 }

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

So pending email activation throws them into usergroup 3, nullifying the line that says if field7 is "venue" put them into usergroup 10. Then when they click the activation link, they still bypass that line and are put into default group 2. How do I modify that?

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

I'm thinking maybe this is where the issue is?

Code:

if ($vbulletin->options['verifyemail'])
  {
    $activateid = build_user_activation_id($userid, (($vbulletin->options['moderatenewmembers'] OR $vbulletin->GPC['coppauser']) ? 4 : 2), 0);
    eval(fetch_email_phrases('activateaccount'));
    vbmail($email, $subject, $message, true);
  }
  else if ($newusergroupid == 2)
  {
    if ($vbulletin->options['welcomemail'])
    {
    eval(fetch_email_phrases('welcomemail'));
    vbmail($email, $subject, $message);
    }
  }


Boofo 06-26-2011 09:25 PM

!= means is not equal to
== means is equal to

AFemaleProdigy 06-26-2011 09:38 PM

Hmmm... well... did some more testing based on the != vs == and am not sure what to think of it.

If I use !- then it seems to work properly. If I select option "Venue", then it moves me to usergroup 10. If I select another option like "Patron", it moves me to the default usergroup 2.

If I use == then nothing I choose puts me into usergroup 10 like it should. What do you make of that?

And thanks for your help guys! You are awesome!! :)

--------------- Added 26 Jun 2011 at 18:43 ---------------

yeah, that is not right.. but the == isn't working either. hmmm

--------------- Added 26 Jun 2011 at 18:55 ---------------

So I can't get this to work

Code:

else if ($vbulletin->userinfo['field7'] == 11)
    {
    $newusergroupid = 9;
 }

Or this (which should equal the same as above)

Code:

else if ($vbulletin->userinfo['field7'] == "Entertainer")
    {
    $newusergroupid = 9;
 }


Boofo 06-26-2011 10:00 PM

Ok, you have to make sure that Venue is spelled correctly and it IS case-sensitive. How do you have the option set your that? It has to be Venue to work with the code I posted.

AFemaleProdigy 06-26-2011 10:02 PM

These are the values in the database table...

Code:

a:4:{i:0;s:6:"Patron";i:1;s:11:"Entertainer";i:2;s:5:"Venue";i:3;s:14:"Venue Employee";}
That is for profilefieldid 7

Boofo 06-26-2011 10:04 PM

I just thought of something. How can there be a user field for any users BEFORE they register?

AFemaleProdigy 06-26-2011 10:06 PM

LOL! I wasn't sure if that was something that it checked as it was processing the registration fields. So do you think I would have to use another method of creating those options? Well doesn't the system store the custom profile field that is input during registration somewhere? It would have to. Especially being that you can make them required upon registration. Those values get stored somehow.

Of course, I guess that wouldn't work if the values are not stored prior to the script checking the values. ugh. What to do?

Boofo 06-26-2011 10:11 PM

Yes, they do get stored, but not until after registration. I apologize for not catching that before now. I should know better than that.

You would need to create a mod for what you are trying to do and then make a setting to handle that. But I still don't see how it can be done BEFORE they register if you are wanting to use a profile field.

AFemaleProdigy 06-26-2011 10:15 PM

What if....

I have email activation enabled which puts them and their profile information into usergroup 3 (storing their profile field data), then include the code to check the field variable and put them in the correct usergroup once they click the activation link? Would that work?

Boofo 06-26-2011 10:22 PM

Yes, but how do you determine what usergroup they need to go into? Who decides?

AFemaleProdigy 06-26-2011 10:29 PM

During registration, that profile field would be required. So they select say "Venue", then are pushed to "awaiting email activation" usergroup. Thus storing that selected profile field option. So once they click the acitvation link, that is sent through register.php again where we could possibly add some code to say what we were trying to do initially (or some variation)...

Code:

if ($vbulletin->userinfo['field7'] == "Entertainer")
    {
    $newusergroupid = 9;
 }

The profile field values should be stored by that point, right? So, we need to modify where it is saying "ok user activation email confirmed, put user into default usergroup 2"... to say ""ok user activation email confirmed, check if profile field 7 = "Entertainer", put user into usergroup 9".

Boofo 06-26-2011 10:40 PM

Yes, that should work that way.

AFemaleProdigy 06-26-2011 10:59 PM

I am not sure how to go about implementing that. Any suggestions? It drives me crazy that I can see the solution in front of me, but not know exactly how to code it. Grrr! LOL!

Boofo 06-26-2011 11:18 PM

PM on the way.


All times are GMT. The time now is 06:56 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.01266 seconds
  • Memory Usage 1,783KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (13)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (18)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete