Current File : /home/inlingua/www/dev/wp-content/plugins/advanced-import/includes/functions-advanced-import.php |
<?php
function advanced_import_allowed_html( $input ) {
$allowed_html = wp_kses_allowed_html( 'post' );
$output = wp_kses( $input, $allowed_html );
return $output;
}
function advanced_import_current_url() {
global $pagenow;
$current_url = $pagenow == 'tools.php' ? admin_url( 'tools.php?page=advanced-import-tool' ) : admin_url( 'themes.php?page=advanced-import' );
return apply_filters( 'advanced_import_current_url', $current_url, $pagenow );
}
function advanced_import_get_current_theme_author() {
$current_theme = wp_get_theme();
return $current_theme->get( 'Author' );
}
function advanced_import_get_current_theme_slug() {
$current_theme = wp_get_theme();
return $current_theme->stylesheet;
}
function advanced_import_get_theme_screenshot() {
$current_theme = wp_get_theme();
return $current_theme->get_screenshot();
}
function advanced_import_get_theme_name() {
$current_theme = wp_get_theme();
return $current_theme->get( 'Name' );
}
function advanced_import_update_option( $option, $value = '' ) {
$option = apply_filters( 'advanced_import_update_option_' . $option, $option, $value );
$value = apply_filters( 'advanced_import_update_value_' . $option, $value, $option );
update_option( $option, $value );
}
function advanced_import_add_installed_time() {
$helper_options = json_decode( get_option( 'advanced_import_settings_options' ), true );
if ( ! isset( $helper_options['installed_time'] ) || ! $helper_options['installed_time'] ) {
$helper_options['installed_time'] = time();
update_option(
'advanced_import_settings_options',
wp_json_encode( $helper_options )
);
}
}
function advanced_import_add_log( $entry, $file = 'advanced-import.log', $mode = 'default' ) {
// Get WordPress uploads directory.
$upload_dir = wp_upload_dir();
$upload_dir = $upload_dir['basedir'];
// If the entry is array, json_encode.
if ( is_array( $entry ) ) {
$entry = json_encode( $entry );
}
// Write the log file.
$file = $upload_dir . '/' . $file;
if ( 'default' === $mode ) {
if ( file_exists( $file ) ) {
$mode = 'a';
} else {
$mode = 'w';
}
}
$file = fopen( $file, $mode );
$bytes = fwrite( $file, $entry . "\n" );
fclose( $file );
return $bytes;
}
function advanced_import_get_post_by_title( $title, $post_type = 'page' ) {
$args = array(
'post_type' => $post_type,
'post_status' => 'publish',
'posts_per_page' => 1,
'title' => $title,
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
$query->the_post();
$post = get_post();
wp_reset_postdata();
return $post;
}
return false;
}
if ( ! function_exists( 'advanced_import_is_plugin_active' ) ) {
/**
* Checks if a given plugin is active.
*
* @since 1.0.0
*
* @param string $plugin Plugin folder with main file e.g., my-plugin/my-plugin.php.
* @return bool True if the plugin is active, otherwise false.
*/
function advanced_import_is_plugin_active( $plugin ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
return is_plugin_active( $plugin );
}
}
if ( ! function_exists( 'advanced_import_install_plugin' ) ) {
/**
* Install and activate a WordPress plugin.
*
* @param array $plugin_info Plugin information array containing 'name', 'slug', 'plugin', and 'source'(optional).
* @return array Associative array with 'success' boolean and 'message' string.
*/
function advanced_import_install_plugin( $plugin_info ) {
if ( ! isset( $plugin_info ['name'] ) || ! isset( $plugin_info ['slug'] ) || ! isset( $plugin_info ['plugin'] ) ) {
// Not enough plugin info.
return array(
'code' => 203,
'success' => false,
'message' => sprintf(
/* translators: %s the plugin info */
esc_html__( 'Not enough information about plugin. Plugin info %s', 'advanced-import' ),
esc_html( wp_json_encode( $plugin_info ) )
),
);
}
$name = sanitize_text_field( $plugin_info['name'] );
$slug = sanitize_key( $plugin_info['slug'] );
$plugin = sanitize_text_field( $plugin_info['plugin'] );
$source = isset( $plugin_info['source'] ) ? esc_url_raw( $plugin_info['source'] ) : '';
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
include_once ABSPATH . 'wp-admin/includes/plugin.php';
if ( advanced_import_is_plugin_active( $plugin ) ) {
// Plugin is already active.
return array(
'code' => 200,
'success' => true,
'message' => sprintf(
/* translators: %s is the plugin name */
esc_html__( 'Plugin "%s" is already active.', 'advanced-import' ),
esc_html( $name )
),
);
}
// The plugin is installed, but not active.
if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin ) ) {
$plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
if ( advanced_import_is_plugin_active( $plugin ) ) {
// Plugin is already active.
return array(
'code' => 200,
'success' => true,
'message' => sprintf(
/* translators: %s is the plugin name */
esc_html__( 'Plugin "%s" is already active.', 'advanced-import' ),
esc_html( $name )
),
);
}
if ( current_user_can( 'activate_plugin', $plugin ) ) {
$result = activate_plugin( $plugin );
if ( is_wp_error( $result ) ) {
// Plugin is already active.
return array(
'code' => $result->get_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error activating plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $result->get_error_message() )
),
);
}
return array(
'code' => 200,
'success' => true,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'Plugin "%s" activated successfully.', 'advanced-import' ),
esc_html( $name ),
),
);
} else {
return array(
'code' => 403,
'success' => false,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'You don\'t have permission to activate the plugin "%s".', 'advanced-import' ),
esc_html( $name ),
),
);
}
}
if ( ! current_user_can( 'install_plugins' ) ) {
return array(
'code' => 403,
'success' => false,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'You don\'t have permission to install the plugin "%s".', 'advanced-import' ),
esc_html( $name ),
),
);
}
if ( $source ) {
// Install plugin from external source.
$download_link = $source;
} else {
// Install plugin from WordPress repository.
$api = plugins_api(
'plugin_information',
array(
'slug' => $slug,
'fields' => array( 'sections' => false ),
)
);
if ( is_wp_error( $api ) ) {
return array(
'code' => $api->get_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error retrieving information for plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $result->get_error_message() )
),
);
}
$name = ! $name ? $api->name : $name;
$download_link = $api->download_link;
}
$skin = new WP_Ajax_Upgrader_Skin();
$upgrader = new Plugin_Upgrader( $skin );
$result = $upgrader->install( $download_link );
if ( is_wp_error( $result ) ) {
return array(
'code' => $result->get_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error installing plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $result->get_error_message() )
),
);
} elseif ( is_wp_error( $skin->result ) ) {
return array(
'code' => $skin->result->get_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error installing plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $skin->result->get_error_message() )
),
);
} elseif ( $skin->get_errors()->get_error_code() ) {
return array(
'code' => $skin->et_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error installing plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $skin->get_error_messages() )
),
);
} elseif ( is_null( $result ) ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
WP_Filesystem();
global $wp_filesystem;
$error_message = __( 'Unable to connect to the filesystem. Please confirm your credentials.', 'advanced-import' );
if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->get_error_code() ) {
$error_message = $wp_filesystem->errors->get_error_message();
}
return array(
'code' => 501,
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error installing plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $error_message )
),
);
}
if ( advanced_import_is_plugin_active( $plugin ) ) {
// Plugin is already active.
return array(
'code' => 200,
'success' => true,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'Plugin "%s" activated successfully.', 'advanced-import' ),
esc_html( $name ),
),
);
}
if ( current_user_can( 'activate_plugin', $plugin ) ) {
$result = activate_plugin( $plugin );
if ( is_wp_error( $result ) ) {
return array(
'code' => $result->get_error_code(),
'success' => false,
'message' => sprintf(
/* translators: %1$s is the plugin name, %2$s is error message */
esc_html__( 'Error activating plugin "%1$s": %2$s', 'advanced-import' ),
esc_html( $name ),
esc_html( $result->get_error_message() )
),
);
}
} else {
return array(
'code' => 401,
'success' => false,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'You don\'t have permission to activate the plugin "%s".', 'advanced-import' ),
esc_html( $name ),
),
);
}
return array(
'success' => true,
'code' => 200,
'message' => sprintf(
/* translators: %s is the plugin name.*/
esc_html__( 'Plugin "%s" installed and activated successfully.', 'advanced-import' ),
esc_html( $name ),
),
);
}
}