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 }