public static function deactivatePlugin($pluginName)
{
$activePlugins = self::getActivePluginNames();
if (!in_array($pluginName, $activePlugins)) {
//already deactivated
return true;
}
$pluginRecord = self::getPluginRecord($pluginName);
if (!$pluginRecord) {
//already deactivated
return true;
}
self::executeSqlIfExists(ipFile('Plugin/' . esc($pluginName) . '/Setup/deactivate.sql'));
$workerClass = 'Plugin\\' . $pluginName . '\\Setup\\Worker';
if (class_exists($workerClass) && method_exists($workerClass, 'deactivate')) {
$worker = new $workerClass($pluginRecord['version']);
$worker->deactivate();
}
$sql = '
UPDATE
' . ipTable('plugin') . '
SET
`isActive` = 0
WHERE
`name` = ?
';
ipDb()->execute($sql, array($pluginName));
ipLog()->info('Ip.pluginDeactivated: {plugin} {version} deactivated.', array('plugin' => $pluginName, 'version' => $pluginRecord['version']));
// TODO remove plugin event listeners
ipEvent('ipPluginDeactivated', array('name' => $pluginName, 'version' => $pluginRecord['version']));
return null;
}