<?php /** * Do things related with Gutentor settings * * @since 3.0.3 */ if ( ! class_exists( 'Gutentor_Admin_Settings' ) ) { /** * Class Gutentor_Admin_Settings. */ class Gutentor_Admin_Settings { protected static $page_slug = 'gutentor-settings'; public function __construct() { add_action( 'admin_menu', array( __CLASS__, 'admin_pages' ) ); add_action( 'admin_init', array( $this, 'depreciated_settings' ) ); add_filter( 'register_post_type_args', array( $this, 'enable_rest_api' ), 20, 2 ); add_filter( 'use_block_editor_for_post_type', array( $this, 'enable_gutenberg_post_type' ), 999, 2 ); add_action( 'init', array( $this, 'add_page_templates_in_post_types' ), 999 ); } /** * Admin Page Menu and submenu page * * @since 3.0.3 */ public static function admin_pages() { add_submenu_page( 'gutentor', esc_html__( 'Settings', 'gutentor' ), esc_html__( 'Settings', 'gutentor' ), 'manage_options', 'gutentor-settings', array( __CLASS__, 'gutentor_settings_template' ) ); } /** * Render Settings Template * * @since 3.0.3 */ public static function gutentor_settings_template() { require_once GUTENTOR_PATH . 'includes/admin/templates/settings.php'; } /** * All existing Settings * Convert in just one setting * * @since 3.1.2 */ public function depreciated_settings() { $g_options = gutentor_get_options(); if ( isset( $g_options['options_v_0'] ) ) { return false; } $gutentor_get_options = array(); /*Typography*/ $global_typography = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'body', 'button', ); foreach ( $global_typography as $gt ) { $key = 'gutentor-gt-' . esc_attr( $gt ); $gutentor_get_options[ $key ] = gutentor_get_options( $key ); } /*Global Color*/ $global_color = array( 'btn-txt', 'btn-bg', 'heading', 'body', 'link', 'cat-txt-default', 'cat-bg-default', ); foreach ( $global_color as $gc ) { $key = 'gc-' . esc_attr( $gc ); $gutentor_get_options[ $key ] = gutentor_get_options( $key ); } /*Global Width*/ $global_width = array( 'mobile', 'tablet', 'desktop', 'large', ); foreach ( $global_width as $gw ) { $key = 'gutentor-gw-' . esc_attr( $gw ); $gutentor_get_options[ $key ] = gutentor_get_options( $key ); } /*post format*/ $post_formats = gutentor_get_post_formats(); if ( $post_formats && is_array( $post_formats ) ) { foreach ( $post_formats as $post_format ) { $key = 'gutentor-pf-' . esc_attr( $post_format ); $gutentor_get_options[ $key ] = gutentor_get_options( $key ); } } $other_options = array( 'gutentor_disable_wide_width_editor', 'gutentor_map_api', 'gutentor_font_awesome_version', 'gutentor_tax_term_color', 'gutentor_tax_term_image', 'gutentor_dynamic_style_location', 'gutentor_color_palatte_options', 'gutentor_color_palatte', 'gutentor_gt_apply_options', ); foreach ( $other_options as $key ) { $gutentor_get_options[ $key ] = gutentor_get_options( $key ); } /*Enabled Disable Blocks*/ $gutentor_get_options['_GUTENTOR_BLOCKS'] = gutentor_get_options( '_GUTENTOR_BLOCKS' ); /*Gutentor color palatte*/ $gutentor_get_options['gutentor_color_palatte'] = gutentor_get_options( 'gutentor_color_palatte' ); foreach ( $gutentor_get_options as $key => $value ) { delete_option( $key ); if ( 'gutentor_map_api' == $key ) { $key = 'map-api'; } elseif ( 'gutentor_disable_wide_width_editor' == $key ) { $key = 'wide-width-editor'; } elseif ( 'gutentor_tax_term_color' == $key && $gutentor_get_options[ $key ] ) { $key = 'tax-in-color'; $value = array( 'category', 'post_tag', 'product_cat', 'product_tag', 'download_category', 'download_tag', ); } elseif ( 'gutentor_tax_term_image' == $key && $gutentor_get_options[ $key ] ) { $key = 'tax-in-image'; $value = array( 'category', 'post_tag', 'product_cat', 'product_tag', 'download_category', 'download_tag', ); } elseif ( 'gutentor_dynamic_style_location' == $key ) { $key = 'dynamic-res-location'; } elseif ( 'gutentor_gt_apply_options' == $key ) { $key = 'typo-apply-options'; } elseif ( 'gutentor_font_awesome_version' == $key ) { $key = 'fa-version'; } elseif ( 'gutentor_color_palatte_options' == $key ) { $key = 'color-palette-options'; } elseif ( 'gutentor_color_palatte' == $key ) { $key = 'color-palettes'; } elseif ( '_GUTENTOR_BLOCKS' == $key ) { $key = 'off-blocks'; } elseif ( strpos( $key, 'gutentor-pf-' ) !== false ) { $key = str_replace( 'gutentor-pf-', 'pf-', $key ); } elseif ( strpos( $key, 'gutentor-gt-' ) !== false ) { $key = str_replace( 'gutentor-gt-', 'gt-', $key ); } elseif ( strpos( $key, 'gutentor-gw-' ) !== false ) { $key = str_replace( 'gutentor-gw-', 'gw-', $key ); } elseif ( strpos( $key, 'gutentor-gc-' ) !== false ) { $key = str_replace( 'gutentor-gc-', 'gc-', $key ); } $g_options[ $key ] = $value; } if ( isset( $g_options['gutentor_enable_editor_in_pt'] ) ) { $g_options['editor-in-pt'] = $g_options['gutentor_enable_editor_in_pt']; unset( $g_options['gutentor_enable_editor_in_pt'] ); } if ( isset( $g_options['gutentor_enable_page_templates_in_pt'] ) ) { $g_options['page-templates-in-pt'] = $g_options['gutentor_enable_page_templates_in_pt']; unset( $g_options['gutentor_enable_page_templates_in_pt'] ); } if ( isset( $g_options['gutentor_enable_import_block'] ) ) { if ( $g_options['gutentor_enable_import_block'] ) { $g_options['enable-import-block'] = $g_options['gutentor_enable_import_block']; } else { $g_options['enable-import-block'] = true; } unset( $g_options['gutentor_enable_import_block'] ); } if ( isset( $g_options['gutentor_enable_export_block'] ) ) { if ( $g_options['gutentor_enable_export_block'] ) { $g_options['enable-export-block'] = $g_options['gutentor_enable_export_block']; } else { $g_options['enable-export-block'] = true; } unset( $g_options['gutentor_enable_export_block'] ); } if ( isset( $g_options['resource_load'] ) ) { $g_options['resource-load'] = $g_options['resource_load']; unset( $g_options['resource_load'] ); } if ( isset( $g_options['gutentor_enable_edd_demo_url'] ) ) { $g_options['edd-demo-url'] = $g_options['gutentor_enable_edd_demo_url']; unset( $g_options['gutentor_enable_edd_demo_url'] ); } $g_options['options_v_0'] = true; update_option( 'gutentor_settings_options', $g_options ); } /** * Enable rest api post types * * @since 3.0.3 */ public static function enable_rest_api( $args, $post_type ) { $gutentor_settings = gutentor_get_options(); if ( isset( $gutentor_settings['editor-in-pt'] ) ) { $gutenberg_enable_post_types = $gutentor_settings['editor-in-pt']; if ( is_array( $gutenberg_enable_post_types ) && in_array( $post_type, $gutenberg_enable_post_types ) ) { $args['show_in_rest'] = true; } } return $args; } /** * Enable Gutenberg Editor in Post Types * * @since 3.0.3 */ public static function enable_gutenberg_post_type( $can_edit, $post_type ) { $gutentor_settings = gutentor_get_options(); if ( isset( $gutentor_settings['editor-in-pt'] ) ) { $gutenberg_enable_post_types = $gutentor_settings['editor-in-pt']; if ( is_array( $gutenberg_enable_post_types ) && in_array( $post_type, $gutenberg_enable_post_types ) ) { return true; } } return $can_edit; } /** * How to add Page Templates to Post or Custom Post Types * https://www.gutentor.com/documentation/article/how-to-add-page-templates-to-post-or-custom-post-types/ * * @since 3.0.3 */ public function add_page_templates_in_post_types() { $pts = array(); $pts[] = 'page'; $gutentor_settings = gutentor_get_options(); if ( isset( $gutentor_settings['page-templates-in-pt'] ) ) { $pt = maybe_unserialize( $gutentor_settings['page-templates-in-pt'] ); if ( is_array( $pt ) && ! empty( $pt ) ) { foreach ( $pt as $p ) { $pts[] = $p; } } } if ( ! is_array( $pts ) ) { return; } foreach ( $pts as $p ) { add_filter( 'theme_' . $p . '_templates', array( gutentor_hooks(), 'gutentor_add_page_template' ) ); } if ( in_array( 'page', $pts ) ) { add_filter( 'page_template', array( gutentor_hooks(), 'gutentor_redirect_page_template' ), 999 ); } if ( count( array_diff( $pts, array( 'page' ) ) ) > 0 ) { add_filter( 'single_template', array( gutentor_hooks(), 'gutentor_redirect_page_template' ), 999 ); } } } } new Gutentor_Admin_Settings();