Register Members List Search Today's Posts Mark Forums Read

Reply
 
Article Options
List of changed var/array/function names
Brad
Join Date: Nov 2001
Posts: 4,765

Washington
by Brad Brad is offline 07 Jun 2005

A lot of things changed in 3.5 and you might find yourself lost for awhile as you figure out how to work with the new var/array/function names. This list should help you port your old 3.0.x hacks quicker, if you have anything to add to the list reply to this thread and I will edit the first post!

Note that some of these might not work in some parts of the new code, OOP changes a lot of things, in some cases you might be using $this-> or some other alternative to get to these.

On the front end they will work for the most part. Do remember that there are hooks littered in the 'build' functions like the one that builds postbit. For an example of working with such hooks you can check out a plug-in I released, I spend 5 minutes wondering why $post would not work until I realized I was begin an idiot!

Anyway check out the .xml file: http://www.vbulletin.org/forum/showthread.php?t=82623

Turned out I needed to use $this->post because that hook was inside of a function! Doh!

The big list...

3.0.x version of the var will be on the left, 3.5 on the right as so:

3.0.x => 3.5

Global

$DB_site-> => $db->
$bbuserinfo[] => $vbulletin->userinfo[]
$vboptions[] => $vbulletin->options[]
$_GET/$_REQUEST/$_POST/$_COOKIE => $vbulletin->GPC[]
globalize() => $vbulletin->input->clean_array_gpc()

Last edited by Brad.loo; 07 Jun 2005 at 16:01..
Views: 12657
Reply With Quote
Comments
  #2  
Old 07 Jun 2005, 18:12
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
$DB_site->query(); => $db->query_read();
__________________
Reply With Quote
  #3  
Old 07 Jun 2005, 18:22
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Real name: Andreas
Hmm ... not always.
Only for SELECT.
For REPLACE/UPDATE/INSERT it would be query_write(), to support mySQL 4.1 Master/Slave.
To keep compatibility, query() is also available and will call the correct connection.
Reply With Quote
  #4  
Old 08 Jun 2005, 02:51
Brad Brad is offline
 
Join Date: Nov 2001
Yea I'll need to add that one, will cause alot of questions when this goes public, thanks guys and keep adding them as you find them
Reply With Quote
  #5  
Old 08 Jun 2005, 17:50
Wayne Luke's Avatar
Wayne Luke Wayne Luke is offline
 
Join Date: Jan 2002
Real name: Wayne
Coding in vBulletin 3.5

The following was written by Kier for the developers. He has agreed to release it here.


Variables in the $vbulletin (vB_Registry) class


Just about all the variables that used to get set up by init.php have now been migrated to the $vbulletin class.

When migrating the old code, I don't want to see this sort of thing unless there's a specific reason for it:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Rather, the code should look like this:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Database

The MySQL database class has been totally rewritten, and the object is now called $db, rather than the old $DB_site.

You can also reference the database object via $vbulletin->db, so there is no real need to put $db into the list of globals in functions.

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Outside of function scope however, continue to use $db rather than $vbulletin->db.

Whereas we used to have a single $DB_site->query() function to run SQL queries, there are now three public functions to execute SQL. They are:

$db->query_read
Use this function to execute SELECT and SHOW queries only. If the user is using MySQL replication, these queries will execute on their slave server.

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

$db->query_write
Use this function to execute UPDATE, ALTER and all other data-modifying queries. query_write() will execute on the master server in a replication situation.

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.


addslashes() and addslashes_like() should be dropped in query strings, as it's problematic for some non-MySQL systems. Right now, the correct way to replace these functions is to use the newly defined functions in the database class, like this:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Please also note that when escaping quotes for Javascript strings, you should no longer use 'addslashes()', but rather use 'js_addslashes()'.

Datastore

All items from the datastore now get fed directly into the $vbulletin class.
They become $vbulletin->itemname.

If their title is in the $unserialize array in the datastore class, they will be automatically unserialized when they are fetched.

Note that the code currently has a lot of code that is equivalent to

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

That will not work any more, as the datastore item variables are initialized with the datastore class.

Therefore, instead of checking 'isset' you will need to check

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Bitfields

The old $_BITFIELDS, $_FORUMOPTIONS, $_USEROPTIONS etc. arrays no longer exist as individual entities. They are now part of the $vbulletin data registry object and go by different names. All the data they contained is still there, but you'll need to talk to them differently.

If you look at the top of includes/class_core.php I have left a 'translation lookup table' so that it's easier to see where the data you are looking for has gone.

To avoid too much $object->array[key1][key2][key3][key4] stuff, there are references set up to allow you to talk to deep elements quickly. For example, $vbulletin->bf_ugp_adminpermissions is a reference to $vbulletin->bf_ugp['adminpermissions']... it makes more sense when you start using them

Oh... 'ugp' stands for usergroup permissions.

vB_Input Class

If you read includes/class_core.php, you'll notice that there's a class called vB_Input. This class deals with input into vBulletin and stuff that's related to the superglobal arrays ($_REQUEST, $_ENV, $_SERVER etc.)


Misc


As lots of variables have been shuffled around, you'll need to keep your eyes open for them. For example, $scriptpath is now $vbulletin->scriptpath and $nozip is now $vbulletin->nozip.

I strongly suggest that you read and familiarize yourself with the new init.php and the contents of includes/class_core.php before diving in.
__________________
Wayne Luke
Get started with your own social network. Purchase and download vBulletin today.

Last edited by Colin F; 12 Jun 2005 at 18:14.
Reply With Quote
  #6  
Old 09 Jun 2005, 21:51
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Real name: Fillip
Thank you for this update, Wayne. It helped me answer my question about query_read vs query_write
[Removed question as more indepth studies of the files answered it]

Last edited by Revan; 09 Jun 2005 at 21:57.
Reply With Quote
  #7  
Old 09 Jun 2005, 22:00
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Real name: Andreas
You can use query_first() as this basically does the same as query_read() and fetch_array().
Reply With Quote
  #8  
Old 09 Jun 2005, 23:07
Brad Brad is offline
 
Join Date: Nov 2001
You can also use the old school query();, but it preforms a preg call to check for the query type (SELECT = read, everything else = write). Really you should not use query(); anymore, but there is nothing stoping you from doing it
Reply With Quote
  #9  
Old 09 Jun 2005, 23:17
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Real name: Fillip
Ah I see, thanks
I really wish they didn't add support for the old query(), this will only lead to lazy coders writing shi'ite stuff that keeps using these old, outdated versions, forcing vB to sacrifice performance in order to determine the correct function which again leads to a performance hit. .
I guess this means I will have to be more selective and conservative with the stuff I install, as I like things running fast and smooth
Reply With Quote
  #10  
Old 09 Jun 2005, 23:36
AN-net's Avatar
AN-net AN-net is offline
 
Join Date: Dec 2003
god everything i have worked for has to be rewritten, damn u!!!!

also is $vbulletin->bbuserinfo[] now used in templates and where is official vbulletin.com documentation?
Reply With Quote
  #11  
Old 09 Jun 2005, 23:52
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Real name: Andreas
god everything i have worked for has to be rewritten, damn u!!!!
That was to be expected

As far as I can see $bbuserinfo/$vboptions/$session is being unsed in the Templates.
But I am not sure if this will be changed.

Last edited by KirbyDE; 10 Jun 2005 at 00:19.
Reply With Quote
  #12  
Old 10 Jun 2005, 00:14
Zachery's Avatar
Zachery Zachery is offline
 
Join Date: Jul 2002
Real name: Zachery Woods
Originally Posted by AN-net
god everything i have worked for has to be rewritten, damn u!!!!

also is $vbulletin->bbuserinfo[] now used in templates and where is official vbulletin.com documentation?
No, the old way still works in the templates.
__________________
Looking for ImpEx?
Reply With Quote
  #13  
Old 10 Jun 2005, 01:32
Zero Tolerance's Avatar
Zero Tolerance Zero Tolerance is offline
 
Join Date: Feb 2004
Real name: Scot
if you're not in the mood to re-write all the variables, you can put stuff like:

$bbuserinfo = $vbulletin->userinfo;
unset($vbulletin->userinfo);

At the top of your files (after you've included the files you require), ofcourse if your embedding code into an existing vB 3.5 php file, like forumdisplay, i wouldn't use the unset function.

It's a quick and easy method, until you get time to properly convert everything

- Zero Tolerance
Reply With Quote
  #14  
Old 10 Jun 2005, 01:33
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Real name: Andreas
*cough* functions_legacy.php, enable_legacy() *cough*
Reply With Quote
  #15  
Old 10 Jun 2005, 01:36
Zero Tolerance's Avatar
Zero Tolerance Zero Tolerance is offline
 
Join Date: Feb 2004
Real name: Scot
Originally Posted by KirbyDE
*cough* functions_legacy.php, enable_legacy() *cough*
Or that will do too I really need to look through the files more.

- Zero Tolerance
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Article Options

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


New To Site? Need Help?

All times are GMT. The time now is 06:19.

Layout Options | Width: Wide Color: