Quote:
Originally Posted by Ziki
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;
}
}