# premmerce/1.3.12/src/Admin/Handlers/PluginsHandler.php

Premmerce, version 1.3.12. 75 lines.

- Page: https://pluginprobe.com/plugins/premmerce/1.3.12/code/src/Admin/Handlers/PluginsHandler.php
- Raw: https://pluginprobe.com/plugins/premmerce/1.3.12/raw/src/Admin/Handlers/PluginsHandler.php
- Modified: 2018-11-14T16:28:54+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/premmerce/1.3.12/code/src/Admin/Handlers/PluginsHandler.php#L10-L20`.

```php
<?php namespace Premmerce\Premmerce\Admin\Handlers;

use Premmerce\Premmerce\Api\PluginApi;
use Premmerce\SDK\V2\FileManager\FileManager;

class PluginsHandler
{
    /**
     * @var PluginApi
     */
    private $api;

    /**
     * @var FileManager
     */
    private $fileManager;

    public function __construct(PluginApi $dep, FileManager $fileManager)
    {
        $this->api         = $dep;
        $this->fileManager = $fileManager;
    }

    /**
     * Run bulk or single action
     *
     * @return void
     */
    public function runAction()
    {
        $option = isset($_REQUEST['option'])? $_REQUEST['option'] : null;
        $plugin = isset($_REQUEST['value'])? $_REQUEST['value'] : null;


        if ($option && $plugin) {
            $plugin = urldecode($plugin);

            switch ($option) {
                case 'activate':
                    $callback = array($this->api, 'activatePlugin');
                    break;
                case 'install':
                    $callback = array($this->api, 'installPlugin');
                    break;
                case 'deactivate':
                    $callback = array($this->api, 'deactivatePlugin');
                    break;
                case 'activate_theme':
                    $callback = array($this->api, 'activateTheme');
                    break;
                default:
                    $callback = array();
            }

            if (is_callable($callback)) {
                $result = call_user_func($callback, $plugin);

                if (!$result) {
                    $response['success']      = false;
                    $response['errorMessage'] = __('Plugin installation failed.');
                } elseif ($result instanceof \WP_Error) {
                    $response['success']      = false;
                    $response['errorMessage'] = $result->get_error_message();
                } else {
                    $response['success'] = true;
                }

                echo json_encode($response);

                wp_die();
            }
        }
    }
}

```
