Andreas |
02-10-2008 09:23 AM |
Quote:
Originally Posted by Ziki
(Post 1396607)
Not possible with a plugin,for that you have to edit the files
|
Believe me, it is (to some great extend - the only query you miss is datastore setup) - i've already done this:
- Create a plugin with execution order = 1 on init_startup
- Check if explain=1, otherweise done
- Copy the Resouce ID # o fthe mySQL connection and all other stuff you need from $db
- Require class_database_explain.php
- Unset $db, create a new object of class vB_Database_Explain and set the properties
And you're done :)
Sample Code
PHP Code:
if ($condition_to_activate_explain) {
switch (strtolower($vbulletin->config['Database']['dbtype'])) { // load standard MySQL class case 'mysql': case '': { require_once(DIR . '/includes/class_database_explain.php'); $newdb =& new vB_Database_Explain($vbulletin); break; } // load MySQLi class case 'mysqli': { require_once(DIR . '/includes/class_database_explain.php'); $newdb =& new vB_Database_MySQLi_Explain($vbulletin); break; } } if (!empty($newdb)) { $newdb->appname = $db->appname; $newdb->appshortname = $db->appshortname; $newdb->database = $db->database; $newdb->connection_master = $db->connection_master; $newdb->connection_slave =& $newdb->connection_master; $newdb->connection_recent = $db->connection_recent; $newdb->multiserver = $db->multiserver; $newdb->shutdownqueries = $db->shutdownqueries; $newdb->sql = $db->sql; $newdb->reporterror = $db->reporterror; $newdb->error = $db->error; $newdb->errno = $db->errno; $newdb->maxpacket = $db->maxpacket; $newdb->locked = $db->locked; $newdb->querycount = $db->querycount; $db = $newdb; $vbulletin->db =& $db; } }
|