array(
'last_updated' => true,
'icons' => true,
'active_installs' => true,
),
);
$api = plugins_api( 'query_plugins', $args );
if ( is_wp_error( $api ) ) {
$this->error = $api;
return;
}
$this->items = $api->plugins;
}
/**
* Method render_widget()
*
* Build Plugins Widget
*
* @uses \MainWP\Dashboard\MainWP_DB::query()
* @uses \MainWP\Dashboard\MainWP_DB::get_sql_website_by_id()
* @uses \MainWP\Dashboard\MainWP_DB::fetch_object()
* @uses \MainWP\Dashboard\MainWP_DB::free_result()
* @uses \MainWP\Dashboard\MainWP_System_Utility::get_current_wpid()
*/
public static function render_widget() {
$current_wpid = MainWP_System_Utility::get_current_wpid();
if ( empty( $current_wpid ) ) {
return;
}
$sql = MainWP_DB::instance()->get_sql_website_by_id( $current_wpid );
$websites = MainWP_DB::instance()->query( $sql );
$allPlugins = array();
if ( $websites ) {
$website = MainWP_DB::fetch_object( $websites );
if ( $website && '' !== $website->plugins ) {
$plugins = json_decode( $website->plugins, 1 );
if ( is_array( $plugins ) && 0 != count( $plugins ) ) {
foreach ( $plugins as $plugin ) {
if ( isset( $plugin['mainwp'] ) && ( 'T' === $plugin['mainwp'] ) ) {
continue;
}
$allPlugins[] = $plugin;
}
}
}
MainWP_DB::free_result( $websites );
}
self::render_html_widget( $website, $allPlugins );
}
/**
* Method render_html_widget().
*
* Render HTML plugins widget for current site
*
* @param object $website Object containing the child site info.
* @param array $allPlugins Array containing all detected plugins data.
*
* @uses \MainWP\Dashboard\MainWP_Utility::get_sub_array_having()
* @uses \MainWP\Dashboard\MainWP_Utility::sortmulti()
*/
public static function render_html_widget( $website, $allPlugins ) {
$actived_plugins = MainWP_Utility::get_sub_array_having( $allPlugins, 'active', 1 );
$actived_plugins = MainWP_Utility::sortmulti( $actived_plugins, 'name', 'asc' );
$inactive_plugins = MainWP_Utility::get_sub_array_having( $allPlugins, 'active', 0 );
$inactive_plugins = MainWP_Utility::sortmulti( $inactive_plugins, 'name', 'asc' );
?>
__( 'Plugin has been activated!', 'mainwp' ) ) ) );
}
/**
* Method deactivate_plugin()
*
* Fire off action deactivate & display result
*/
public static function deactivate_plugin() {
self::action( 'deactivate' );
die( wp_json_encode( array( 'result' => __( 'Plugin has been deactivated!', 'mainwp' ) ) ) );
}
/**
* Method delete_plugin()
*
* Fire off action delete & display result
*/
public static function delete_plugin() {
self::action( 'delete' );
die( wp_json_encode( array( 'result' => __( 'Plugin has been permanently deleted!', 'mainwp' ) ) ) );
}
/**
* Method action()
*
* Initiate try catch for chosen Action
*
* @param mixed $action Plugin Action.
*
* @throws \Exception Error message.
*
* @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
* @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message()
* @uses \MainWP\Dashboard\MainWP_Exception
* @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
* @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
*/
public static function action( $action ) {
$plugin = isset( $_POST['plugin'] ) ? wp_unslash( $_POST['plugin'] ) : '';
$websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false;
if ( empty( $plugin ) || empty( $websiteId ) ) {
die( wp_json_encode( array( 'error' => __( 'Plugin or site ID not found. Please, reload the page and try again.', 'mainwp' ) ) ) );
}
$website = MainWP_DB::instance()->get_website_by_id( $websiteId );
if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
die( wp_json_encode( array( 'error' => __( 'You cannot edit this website.', 'mainwp' ) ) ) );
}
try {
/**
* Action: mainwp_before_plugin_action
*
* Fires before plugin activate/deactivate/delete actions.
*
* @since 4.1
*/
do_action( 'mainwp_before_plugin_action', $action, $plugin, $website );
$information = MainWP_Connect::fetch_url_authed(
$website,
'plugin_action',
array(
'action' => $action,
'plugin' => $plugin,
)
);
/**
* Action: mainwp_after_plugin_action
*
* Fires after plugin activate/deactivate/delete actions.
*
* @since 4.1
*/
do_action( 'mainwp_after_plugin_action', $information, $action, $plugin, $website );
} catch ( MainWP_Exception $e ) {
die( wp_json_encode( array( 'error' => MainWP_Error_Helper::get_error_message( $e ) ) ) );
}
if ( ! isset( $information['status'] ) || ( 'SUCCESS' !== $information['status'] ) ) {
die( wp_json_encode( array( 'error' => __( 'Unexpected error occurred. Please try again.', 'mainwp' ) ) ) );
}
}
}