setup_init();
$this->setup_hook();
}
/**
* Setup Classes
*/
private function setup_init() {
Element::instance();
Asset::instance();
Ajax::instance();
Dashboard::instance();
Template::instance();
Banner::instance();
}
/**
* Setup Hooks
*/
private function setup_hook() {
add_filter( 'body_class', array( $this, 'load_body_class' ) );
add_action( 'in_plugin_update_message-' . JEG_ELEMENTOR_KIT_BASE, array( $this, 'plugin_update_message' ), 10, 2 );
add_action( 'after_setup_theme', array( $this, 'elementor_data_upgrader' ) );
}
/**
* Get class instance
*
* @return Init
*/
public static function instance() {
if ( null === static::$instance ) {
static::$instance = new static();
}
return static::$instance;
}
/**
* Add body class
*
* @param array $classes Body classes.
*/
public function load_body_class( $classes ) {
$classes[] = 'jkit-color-scheme';
return apply_filters( 'jkit_body_classes', $classes );
}
/**
* Custom Plugin Notice Update
*
* @since 2.4.3
*
* @param array $plugin_data An array of plugin metadata. See get_plugin_data()
* and the {@see 'plugin_row_meta'} filter for the list
* of possible values.
* @param object $response {
* An object of metadata about the available plugin update.
*
* @type string $id Plugin ID, e.g. `w.org/plugins/[plugin-name]`.
* @type string $slug Plugin slug.
* @type string $plugin Plugin basename.
* @type string $new_version New plugin version.
* @type string $url Plugin URL.
* @type string $package Plugin update package URL.
* @type string[] $icons An array of plugin icon URLs.
* @type string[] $banners An array of plugin banner URLs.
* @type string[] $banners_rtl An array of plugin RTL banner URLs.
* @type string $requires The version of WordPress which the plugin requires.
* @type string $tested The version of WordPress the plugin is tested against.
* @type string $requires_php The version of PHP which the plugin requires.
*/
public function plugin_update_message( $plugin_data, $response ) {
echo '
' . esc_html__( 'It is recommended that you backup your site before updating the plugin so rollback is possible whenever needed.', 'jeg-elementor-kit' ) . '';
}
/**
* Upgrader Elementor Data from Jeg Elementor Kit due to conflict with Metform plugin
*
* @since 2.5.11
*/
public function elementor_data_upgrader() {
$post_ids = $this->get_header_footer_template_issue_id();
foreach ( $post_ids as $id ) {
$meta = get_post_meta( $id, '_elementor_data', true );
if ( ! is_string( $meta ) ) {
$meta_encode = json_encode( $meta );
update_post_meta( $id, '_elementor_data', wp_slash( $meta_encode ) );
}
}
}
/**
* Get Header Footer Template Issue ID
*
* @since 2.5.11
*
* @return WP_Post|int
*/
private function get_header_footer_template_issue_id() {
$args = array(
'post_type' => array( \Jeg\Elementor_Kit\Dashboard\Dashboard::$jkit_header, \Jeg\Elementor_Kit\Dashboard\Dashboard::$jkit_footer ),
'fields' => 'ids',
);
$post_ids = array();
$query = get_posts( $args );
foreach ( $query as $id ) {
$meta = get_post_meta( $id, '_elementor_data', true );
if ( ! is_string( $meta ) ) {
array_push( $post_ids, $id );
}
}
return $post_ids;
}
}