menu_slug, array( $this, 'html_carcase' ), 2 ); } /** * Get plugin status. * * @param string $plugin_path Plugin path. */ public function get_plugin_status( $plugin_path ) { if ( ! current_user_can( 'install_plugins' ) ) { return; } if ( ! file_exists( WP_PLUGIN_DIR . '/' . $plugin_path ) ) { return 'not_installed'; } elseif ( in_array( $plugin_path, (array) get_option( 'active_plugins', array() ), true ) || is_plugin_active_for_network( $plugin_path ) ) { return 'active'; } else { return 'inactive'; } } /** * Demos * * @param array $demos The demos. */ public function set_demos( $demos ) { /** * The csco_register_demos_list hook. * * @since 1.0.0 */ $this->demos = apply_filters( 'csco_register_demos_list', $this->demos ); } /** * Html Import Data */ public function html_import_data() { global $wpdb; check_ajax_referer( 'nonce', 'nonce' ); $demo_id = isset( $_POST['demo_id'] ) ? sanitize_text_field( $_POST['demo_id'] ) : false; if ( $demo_id ) { if ( ! isset( $this->demos[ $demo_id ] ) ) { wp_send_json_error( esc_html__( 'Invalid demo content id.', 'revision' ) ); wp_die(); } // Reset import data. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( 'csco_importer_data_' ) . '%' ) ); // db call ok; no-cache ok. $demo_data = $this->demos[ $demo_id ]; ob_start(); $demo_plugins = isset( $demo_data['plugins'] ) ? $demo_data['plugins'] : array(); if ( $demo_plugins ) { foreach ( $demo_plugins as $key => $plugin ) { if ( ! isset( $plugin['name'] ) ) { unset( $demo_plugins[ $key ] ); continue; } if ( ! isset( $plugin['slug'] ) ) { unset( $demo_plugins[ $key ] ); continue; } if ( ! isset( $plugin['path'] ) ) { unset( $demo_plugins[ $key ] ); continue; } if ( 'active' === $this->get_plugin_status( $plugin['path'] ) ) { unset( $demo_plugins[ $key ] ); continue; } } } ?>