So, instead of going to every blog's dashboard and noting down the list of every active plugin, I decided to write a quick (and dirty, i.e. not optimized) script.
<?php
// initialize variables [you have to change them to their proper values]
$dbhost = "localhost";
$dbuser = "dbuser";
$dbpass = "dbpassword";
// connect to MySQL and get all database names
$db = mysql_connect( $dbhost, $dbuser, $dbpass)
or die( "MySQL connection problem: " . mysql_error());
mysql_set_charset( "utf8");
mysql_select_db( "information_schema", $db) or die( mysql_error());
$sql = "SELECT SCHEMA_NAME FROM SCHEMATA";
$u0 = mysql_query( $sql, $db) or die( mysql_error());
$alldb = array();
while ($u1 = mysql_fetch_row( $u0)) { $alldb[] = $u1[ 0]; }
// select each database found and check for active plugins
foreach( $alldb as $adb) {
$conn = mysql_select_db( $adb, $db);
// get *_options table name
$sql = "SHOW TABLES FROM $adb LIKE '%_options'";
$u0 = mysql_query( $sql, $db); // or continue;
while ($u1 = mysql_fetch_row( $u0)) {
if ($opt = $u1[0]) {
// get active plugins list
$sql = "SELECT * FROM $opt WHERE option_name='active_plugins'";
$u00 = mysql_query( $sql, $db);
if ($u01 = mysql_fetch_array( $u00)) {
$apj = $u01[ 'option_value'];
if ($apj) {
$ap = unserialize( $apj);
foreach( $ap as $apv)
echo "Database: $adb >>> $apv\n";
}
}
}
}
}
mysql_close( $db);
?>
The output of this script is a list of all active plugins, one for each line, so it can be used in a shell script, for example one can find out how many of them are active:
php show_all_active_plugins.php | wc -l
or find out which blogs are using a certain plugin:
php show_all_active_plugins.php | grep akismet
Disclaimer: as usual, this script works for my setup and, for this reason, I'm sharing it here for everyone interested. I hope it will work for anyone else who tries it, but I cannot guarantee it for every possible situation. Visit The Light of the LAMP blog for more...Περισσότερα... »
