Ip\Internal\Plugins\Model::deactivatePlugin PHP Method

deactivatePlugin() public static method

public static deactivatePlugin ( $pluginName )
    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;
    }