balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

PluginController.php (1445B)


      1 <?php
      2 /**
      3  * Controls Plugins
      4  */
      5 
      6 namespace Extendify\ExtendifySdk\Controllers;
      7 
      8 use Extendify\ExtendifySdk\Plugin;
      9 
     10 if (!defined('ABSPATH')) {
     11     die('No direct access.');
     12 }
     13 
     14 /**
     15  * The controller for plugin dependency checking, etc
     16  */
     17 class PluginController
     18 {
     19 
     20     /**
     21      * Return all plugins
     22      *
     23      * @return array
     24      */
     25     public static function index()
     26     {
     27         if (! function_exists('get_plugins')) {
     28             require_once ABSPATH . 'wp-admin/includes/plugin.php';
     29         }
     30 
     31         return \get_plugins();
     32     }
     33 
     34     /**
     35      * List active plugins
     36      *
     37      * @return array
     38      */
     39     public static function active()
     40     {
     41         return \get_option('active_plugins');
     42     }
     43 
     44     /**
     45      * Install plugins
     46      *
     47      * @param \WP_REST_Request $request - The request.
     48      * @return bool
     49      */
     50     public static function install($request)
     51     {
     52         if (!\current_user_can('activate_plugins')) {
     53             return new \WP_Error('not_allowed', \__('You are not allowed to activate plugins on this site.', 'extendify-sdk'));
     54         }
     55 
     56         $requiredPlugins = json_decode($request->get_param('plugins'), true);
     57 
     58         foreach ($requiredPlugins as $plugin) {
     59             $status = Plugin::install_and_activate_plugin($plugin);
     60             if (\is_wp_error($status)) {
     61                 // Return first error encountered.
     62                 return $status;
     63             }
     64         }
     65 
     66         return true;
     67     }
     68 }