<?php
/**
 * Document settings section
 *
 * @package Elementor
 */

namespace WPSeoPressElementorAddon\Admin;

defined( 'ABSPATH' ) || exit( 'Please don&rsquo;t call the plugin directly. Thanks :)' );

/**
 * Document settings section
 */
class Document_Settings_Section {
	use \WPSeoPressElementorAddon\Singleton;

	/**
	 * Initialize class.
	 *
	 * @return void
	 */
	private function _initialize() {
		add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'check_security' ) );
		add_action( 'elementor/documents/register_controls', array( $this, 'add_wp_seopress_section_to_document_settings' ), 20 );
		add_action( 'elementor/document/after_save', array( $this, 'on_save' ), 99, 2 );
		add_action( 'seopress/page-builders/elementor/save_meta', array( $this, 'on_seopress_meta_save' ), 99 );
		add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'register_elements_assets' ), 9999 );
	}

	/**
	 * Is the current user allowed to view metaboxes?
	 *
	 * @param bool $metabox Metabox.
	 *
	 * @return boolean
	 */
	public function check_security( $metabox ) {
		if ( is_bool( $metabox ) ) {
			return true;
		}

		if ( is_super_admin() ) {
			return true;
		}

		global $wp_roles;

		// Get current user role.
		if ( isset( wp_get_current_user()->roles[0] ) ) {
			$seopress_user_role = wp_get_current_user()->roles[0];
			// If current user role matchs values from Security settings then apply.
			if ( empty( $metabox ) ) {
				return true;
			}
			if ( ! array_key_exists( $seopress_user_role, $metabox ) ) {
				return true;
			}

			return false;
		}
	}

	/**
	 * Register elements assets.
	 *
	 * @return void
	 */
	public function register_elements_assets() {
		wp_register_script(
			'seopress-elementor-base-script',
			SEOPRESS_ELEMENTOR_ADDON_URL . 'assets/js/base.js',
			array( 'jquery' ),
			SEOPRESS_VERSION,
			true
		);

		if ( get_current_user_id() ) {
			if ( get_user_meta( get_current_user_id(), 'elementor_preferences', true ) ) {
				$settings = get_user_meta( get_current_user_id(), 'elementor_preferences', true );

				if ( ! empty( $settings ) && isset( $settings['ui_theme'] ) && 'dark' == $settings['ui_theme'] ) {
					wp_enqueue_style(
						'sp-el-dark-mode-style',
						SEOPRESS_ELEMENTOR_ADDON_URL . 'assets/css/dark-mode.css',
						array(),
						SEOPRESS_VERSION
					);
				}
			}
		}

		global $post;

		$term      = '';
		$origin    = '';
		$post_type = '';
		$post_id   = '';
		$keywords  = '';

		if ( is_archive() ) {
			$origin = 'term';
		}

		if ( is_singular() ) {
			$post_id   = $post->ID;
			$post_type = $post->post_type;
			$origin    = 'post';
			$keywords  = get_post_meta( $post_id, '_seopress_analysis_target_kw', true );
			if ( class_exists( '\Elementor\Plugin' ) && \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
				$is_elementor = true;
			}
		}

		$seopress_real_preview = array(
			'seopress_nonce'        => wp_create_nonce( 'seopress_real_preview_nonce' ),
			'seopress_real_preview' => admin_url( 'admin-ajax.php' ),
			'post_id'               => $post_id,
			'i18n'                  => array( 'progress' => __( 'Analysis in progress...', 'wp-seopress' ) ),
			'post_type'             => $post_type,
			'post_tax'              => $term,
			'origin'                => $origin,
			'keywords'              => $keywords,
			'is_elementor'          => $is_elementor,
		);

		wp_localize_script( 'seopress-elementor-base-script', 'seopressElementorBase', $seopress_real_preview );
	}

	/**
	 * Add WP SEOPress section under document settings.
	 *
	 * @return void
	 */
	public function add_wp_seopress_section_to_document_settings( \Elementor\Core\Base\Document $document ) {
		$post_id = $document->get_main_id();

		$seo_metabox = seopress_get_service( 'AdvancedOption' )->getSecurityMetaboxRole() ? seopress_get_service( 'AdvancedOption' )->getSecurityMetaboxRole() : true;
		$ca_metabox  = seopress_get_service( 'AdvancedOption' )->getSecurityMetaboxRoleContentAnalysis() ? seopress_get_service( 'AdvancedOption' )->getSecurityMetaboxRoleContentAnalysis() : true;

		if ( $this->check_security( $seo_metabox ) === true ) {
			$this->_add_title_section( $document, $post_id );
			$this->_add_advanced_section( $document, $post_id );
			$this->_add_social_section( $document, $post_id );
			$this->_add_redirection_section( $document, $post_id );
		}

		if ( $this->check_security( $ca_metabox ) === true ) {
			$this->_add_content_analysis_section( $document, $post_id );
		}
	}

	/**
	 * Add title section.
	 *
	 * @param \Elementor\Core\Base\Document $document Document.
	 * @param int                           $post_id
	 *
	 * @return void
	 */
	private function _add_title_section( $document, $post_id ) {
		$document->start_controls_section(
			'seopress_title_settings',
			array(
				'label' => __( 'SEO Title / Description', 'wp-seopress' ),
				'tab'   => \Elementor\Controls_Manager::TAB_SETTINGS,
			)
		);

		$s_title = get_post_meta( $post_id, '_seopress_titles_title', true );
		$s_desc  = get_post_meta( $post_id, '_seopress_titles_desc', true );

		$original_desc = substr( wp_strip_all_tags( get_the_content( null, true, $post_id ) ), 0, 140 );

		$desc  = $s_desc ? $s_desc : $original_desc;
		$title = ! empty( $s_title ) ? $s_title : get_the_title( $post_id );

		$document->add_control(
			'_seopress_titles_title',
			array(
				'label'       => __( 'Title', 'wp-seopress' ),
				'type'        => 'seopresstextlettercounter',
				'field_type'  => 'text',
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $s_title ? $s_title : '',
			)
		);

		$document->add_control(
			'_seopress_titles_desc',
			array(
				'label'       => __( 'Meta Description', 'wp-seopress' ),
				'type'        => 'seopresstextlettercounter',
				'field_type'  => 'textarea',
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $s_desc ? $s_desc : '',
			)
		);

		$document->add_control(
			'social_preview_google',
			array(
				'label'       => __( 'Google Snippet Preview', 'wp-seopress' ),
				'type'        => 'seopress-social-preview',
				'label_block' => true,
				'separator'   => 'none',
				'network'     => 'google',
				'title'       => $title ? $title : '',
				'description' => $desc ? $desc : '',
				'link'        => get_permalink( $post_id ),
				'post_id'     => $post_id,
				'origin'      => is_singular() ? 'post' : 'term',
				'post_type'   => get_post_status( $post_id ),
			)
		);

		$document->end_controls_section();
	}

	/**
	 * Add advanced section.
	 *
	 * @param \Elementor\Core\Base\Document $document Document.
	 * @param int                           $post_id
	 *
	 * @return void
	 */
	private function _add_advanced_section( $document, $post_id ) {
		$document->start_controls_section(
			'_seopress_advanced_settings',
			array(
				'label' => __( 'SEO Advanced', 'wp-seopress' ),
				'tab'   => \Elementor\Controls_Manager::TAB_SETTINGS,
			)
		);

		$robots_index       = get_post_meta( $post_id, '_seopress_robots_index', true );
		$robots_follow      = get_post_meta( $post_id, '_seopress_robots_follow', true );
		$robots_imageindex  = get_post_meta( $post_id, '_seopress_robots_imageindex', true );
		$robots_snippet     = get_post_meta( $post_id, '_seopress_robots_snippet', true );
		$robots_canonical   = get_post_meta( $post_id, '_seopress_robots_canonical', true );
		$robots_primary_cat = get_post_meta( $post_id, '_seopress_robots_primary_cat', true );
		$robots_breadcrumbs = get_post_meta( $post_id, '_seopress_robots_breadcrumbs', true );

		$document->add_control(
			'_seopress_robots_index',
			array(
				'label'       => __( 'Don\'t display this page in search engine results / XML - HTML sitemaps (noindex)', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SWITCHER,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => 'yes' === $robots_index ? 'yes' : '',
			)
		);

		$document->add_control(
			'_seopress_robots_follow',
			array(
				'label'       => __( 'Don\'t follow links for this page (nofollow)', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SWITCHER,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => 'yes' === $robots_follow ? 'yes' : '',
			)
		);

		$document->add_control(
			'_seopress_robots_imageindex',
			array(
				'label'       => __( 'Don\'t index images for this page (noimageindex)', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SWITCHER,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => 'yes' === $robots_imageindex ? 'yes' : '',
			)
		);

		$document->add_control(
			'_seopress_robots_snippet',
			array(
				'label'       => __( 'Don\'t display a description in search results for this page (nosnippet)', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SWITCHER,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => 'yes' === $robots_snippet ? 'yes' : '',
			)
		);

		$document->add_control(
			'_seopress_robots_canonical',
			array(
				'label'       => __( 'Canonical URL', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXT,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $robots_canonical ? $robots_canonical : '',
			)
		);

		global $typenow;
		global $pagenow;
		if ( ( 'post' == $typenow || 'product' == $typenow ) && ( 'post.php' == $pagenow || 'post-new.php' == $pagenow ) ) {
			$cats = get_categories();

			if ( 'product' == $typenow ) {
				$cats = get_the_terms( $post_id, 'product_cat' );
			}

			$cats = apply_filters( 'seopress_primary_category_list', $cats );

			if ( ! empty( $cats ) ) {
				$options = array();

				foreach ( $cats as $category ) {
					$options[ $category->term_id ] = $category->name;
				}
				$options['none'] = __( 'None (will disable this feature)', 'wp-seopress' );
			}

			if ( ! empty( $options ) ) {
				$document->add_control(
					'_seopress_robots_primary_cat',
					array(
						'label'       => __( 'Select a primary category', 'wp-seopress' ),
						'description' => /* translators: category permalink structure */ wp_kses_post( sprintf( __( 'Set the category that gets used in the %s permalink and in our breadcrumbs if you have multiple categories.', 'wp-seopress' ), '<code>%category%</code>' ) ),
						'type'        => \Elementor\Controls_Manager::SELECT,
						'label_block' => true,
						'separator'   => 'none',
						'options'     => $options,
						'default'     => $robots_primary_cat ? (int) $robots_primary_cat : 'none',
					)
				);
			}
		}

		if ( is_plugin_active( 'wp-seopress-pro/seopress-pro.php' ) ) {
			$document->add_control(
				'_seopress_robots_breadcrumbs',
				array(
					'label'       => __( 'Custom breadcrumbs', 'wp-seopress' ),
					'description' => __( 'Enter a custom value, useful if your title is too long', 'wp-seopress' ),
					'type'        => \Elementor\Controls_Manager::TEXT,
					'label_block' => true,
					'separator'   => 'none',
					'default'     => $robots_breadcrumbs ? $robots_breadcrumbs : '',
				)
			);
		}

		$document->end_controls_section();
	}

	/**
	 * Add social section.
	 *
	 * @param \Elementor\Core\Base\Document $document Document.
	 * @param int                           $post_id
	 *
	 * @return void
	 */
	private function _add_social_section( $document, $post_id ) {
		$document->start_controls_section(
			'_seopress_social_settings',
			array(
				'label' => __( 'SEO Social', 'wp-seopress' ),
				'tab'   => \Elementor\Controls_Manager::TAB_SETTINGS,
			)
		);

		$fb_title      = get_post_meta( $post_id, '_seopress_social_fb_title', true );
		$fb_desc       = get_post_meta( $post_id, '_seopress_social_fb_desc', true );
		$fb_image      = get_post_meta( $post_id, '_seopress_social_fb_img', true );
		$twitter_title = get_post_meta( $post_id, '_seopress_social_twitter_title', true );
		$twitter_desc  = get_post_meta( $post_id, '_seopress_social_twitter_desc', true );
		$twitter_image = get_post_meta( $post_id, '_seopress_social_twitter_img', true );

		$default_preview_title = get_the_title( $post_id );
		$default_preview_desc  = substr( wp_strip_all_tags( get_the_content( null, true, $post_id ) ), 0, 140 );

		$document->add_control(
			'_seopress_social_note',
			array(
				// 'label' => __( 'Important Note', 'wp-seopress' ),
				'type' => \Elementor\Controls_Manager::RAW_HTML,
				'raw'  => '<p class="elementor-control-field-description"><a href="https://developers.facebook.com/tools/debug/sharing/?q=' . esc_url( get_permalink( get_the_id() ) ) . '" target="_blank">' . __( 'Ask Facebook to update its cache', 'wp-seopress' ) . '</a><span class="dashicons dashicons-external"></span></p>',
				// 'content_classes' => 'your-class',
			)
		);

		$document->add_control(
			'_seopress_social_note_2',
			array(
				// 'label' => __( 'Important Note', 'wp-seopress' ),
				'type' => \Elementor\Controls_Manager::RAW_HTML,
				'raw'  => '<p class="elementor-control-field-description">' . wp_kses_post( __( '<strong>Did you know?</strong> LinkedIn, Instagram and Pinterest use the same social metadata as Facebook. X does the same if no X Cards tags are defined below.', 'wp-seopress' ) ) . '</p>',
				// 'content_classes' => 'your-class',
			)
		);

		$document->add_control(
			'_seopress_social_fb_title',
			array(
				'label'       => __( 'Facebook Title', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXT,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $fb_title ? $fb_title : '',
			)
		);

		$document->add_control(
			'_seopress_social_fb_desc',
			array(
				'label'       => __( 'Facebook description', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXTAREA,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $fb_desc ? $fb_desc : '',
			)
		);

		$document->add_control(
			'_seopress_social_fb_img',
			array(
				'label'       => __( 'Facebook Thumbnail', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::MEDIA,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => array(
					'url' => $fb_image ? $fb_image : '',
				),
			)
		);

		$document->add_control(
			'social_preview_facebook',
			array(
				'label'       => __( 'Facebook Preview', 'wp-seopress' ),
				'type'        => 'seopress-social-preview',
				'label_block' => true,
				'separator'   => 'none',
				'network'     => 'facebook',
				'image'       => $fb_image ? $fb_image : '',
				'title'       => $fb_title ? $fb_title : $default_preview_title,
				'description' => $fb_desc ? $fb_desc : $default_preview_desc,
			)
		);

		$document->add_control(
			'_seopress_social_twitter_title',
			array(
				'label'       => __( 'X Title', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXT,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $twitter_title ? $twitter_title : '',
			)
		);

		$document->add_control(
			'_seopress_social_twitter_desc',
			array(
				'label'       => __( 'X Description', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXTAREA,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $twitter_desc ? $twitter_desc : '',
			)
		);

		$document->add_control(
			'_seopress_social_twitter_img',
			array(
				'label'       => __( 'X Thumbnail', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::MEDIA,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => array(
					'url' => $twitter_image ? $twitter_image : '',
				),
			)
		);

		$document->add_control(
			'social_preview_twitter',
			array(
				'label'       => __( 'X Preview', 'wp-seopress' ),
				'type'        => 'seopress-social-preview',
				'label_block' => true,
				'separator'   => 'none',
				'network'     => 'twitter',
				'image'       => $twitter_image ? $twitter_image : '',
				'title'       => $twitter_title ? $twitter_title : $default_preview_title,
				'description' => $twitter_desc ? $twitter_desc : $default_preview_desc,
			)
		);

		$document->end_controls_section();
	}

	/**
	 * Add redirection section.
	 *
	 * @param \Elementor\Core\Base\Document $document
	 * @param int                           $post_id
	 *
	 * @return void
	 */
	private function _add_redirection_section( $document, $post_id ) {
		$document->start_controls_section(
			'seopress_redirection_settings',
			array(
				'label' => __( 'SEO Redirection', 'wp-seopress' ),
				'tab'   => \Elementor\Controls_Manager::TAB_SETTINGS,
			)
		);

		$redirections_enabled = get_post_meta( $post_id, '_seopress_redirections_enabled', true );
		$redirections_type    = get_post_meta( $post_id, '_seopress_redirections_type', true );
		$redirections_value   = get_post_meta( $post_id, '_seopress_redirections_value', true );

		$document->add_control(
			'_seopress_redirections_enabled',
			array(
				'label'       => __( 'Enable redirection?', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SWITCHER,
				'label_block' => false,
				'separator'   => 'none',
				'default'     => 'yes' === $redirections_enabled ? 'yes' : '',
			)
		);

		$document->add_control(
			'_seopress_redirections_type',
			array(
				'label'       => __( 'URL redirection', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::SELECT,
				'label_block' => true,
				'separator'   => 'none',
				'options'     => array(
					301 => __( '301 Moved Permanently', 'wp-seopress' ),
					302 => __( '302 Found / Moved Temporarily', 'wp-seopress' ),
					307 => __( '307 Moved Temporarily', 'wp-seopress' ),
				),
				'default'     => $redirections_type ? (int) $redirections_type : 301,
			)
		);

		$document->add_control(
			'_seopress_redirections_value',
			array(
				'label'       => __( 'Enter your new URL in absolute (e.g. https://www.example.com/)', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXT,
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $redirections_value ? $redirections_value : '',
			)
		);

		$document->end_controls_section();
	}

	/**
	 * Add Content analysis section.
	 *
	 * @param \Elementor\Core\Base\Document $document Document.
	 * @param int                           $post_id Post ID.
	 *
	 * @return void
	 */
	private function _add_content_analysis_section( $document, $post_id ) {
		$document->start_controls_section(
			'seopress_content_analysis_settings',
			array(
				'label' => __( 'SEO Content Analysis', 'wp-seopress' ),
				'tab'   => \Elementor\Controls_Manager::TAB_SETTINGS,
			)
		);

		$keywords = get_post_meta( $post_id, '_seopress_analysis_target_kw', true );

		$document->add_control(
			'_seopress_analysis_note',
			array(
				// 'label' => __( 'Important Note', 'wp-seopress' ),
				'type' => \Elementor\Controls_Manager::RAW_HTML,
				'raw'  => '<p class="elementor-control-field-description">' . __( 'Enter a few keywords for analysis to help you write optimized content.', 'wp-seopress' ) . '</p>',
				// 'content_classes' => 'your-class',
			)
		);

		$document->add_control(
			'_seopress_analysis_target_kw',
			array(
				'label'       => __( 'Target keywords', 'wp-seopress' ),
				'type'        => \Elementor\Controls_Manager::TEXT,
				'description' => __( 'Separate target keywords with commas. Do not use spaces after the commas, unless you want to include them', 'wp-seopress' ),
				'label_block' => true,
				'separator'   => 'none',
				'default'     => $keywords ? $keywords : '',
			)
		);

		if ( is_plugin_active( 'wp-seopress-pro/seopress-pro.php' ) ) {
			$document->add_control(
				'seopress_google_suggest_kw',
				array(
					'label'       => __( 'Google suggestions', 'wp-seopress' ),
					'description' => __( 'Enter a keyword, or a phrase, to find the top 10 Google suggestions instantly. This is useful if you want to work with the long tail technique.', 'wp-seopress' ),
					'type'        => 'seopress-google-suggestions',
					'label_block' => true,
					'separator'   => 'none',
				)
			);
		}

		$document->add_control(
			'seopress_content_analyses',
			array(
				'label'       => '',
				'type'        => 'seopress-content-analysis',
				'description' => __( 'To get the most accurate analysis, save your post first. We analyze all of your source code as a search engine would.', 'wp-seopress' ),
				'label_block' => true,
				'separator'   => 'none',
			)
		);

		$document->end_controls_section();
	}

	/**
	 * Before saving of the values in elementor.
	 *
	 * @param array $data Data.
	 *
	 * @return void
	 */
	public function on_save( \Elementor\Core\Base\Document $document, $data ) {
		$settings = ! empty( $data['settings'] ) ? $data['settings'] : array();

		if ( empty( $settings ) ) {
			return;
		}

		$post_id = $document->get_main_id();

		if ( ! $post_id ) {
			return;
		}

		$seopress_settings = array_filter(
			$settings,
			function ( $key ) {
				return in_array( $key, $this->get_allowed_meta_keys(), true );
			},
			ARRAY_FILTER_USE_KEY
		);

		if ( empty( $seopress_settings ) ) {
			return;
		}

		if ( isset( $seopress_settings['_seopress_social_fb_img'] ) ) {
			$seopress_settings['_seopress_social_fb_img'] = $seopress_settings['_seopress_social_fb_img']['url'];
		}

		if ( isset( $seopress_settings['_seopress_social_twitter_img'] ) ) {
			$seopress_settings['_seopress_social_twitter_img'] = $seopress_settings['_seopress_social_twitter_img']['url'];
		}

		$seopress_settings = array_map( 'sanitize_text_field', $seopress_settings );

		$post_id = wp_update_post(
			array(
				'ID'         => $post_id,
				'meta_input' => $seopress_settings,
			)
		);

		if ( is_wp_error( $post_id ) ) {
			throw new \Exception( esc_html( $post_id->get_error_message() ) );
		}
	}

	/**
	 * Save seopress meta to elementor.
	 *
	 * @param int $post_id Post ID.
	 *
	 * @return void
	 */
	public function on_seopress_meta_save( $post_id ) {
		if ( ! class_exists( '\Elementor\Core\Settings\Manager' ) ) {
			return;
		}

		if ( class_exists( '\Elementor\Plugin' ) && \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
			$meta = get_post_meta( $post_id );

			$seopress_meta = array_filter(
				$meta,
				function ( $key ) {
					return in_array( $key, $this->get_allowed_meta_keys(), true );
				},
				ARRAY_FILTER_USE_KEY
			);

			if ( empty( $seopress_meta ) ) {
				return;
			}

			$settings = array();

			foreach ( $seopress_meta as $key => $sm ) {
				$settings[ $key ] = maybe_unserialize( ! empty( $sm[0] ) ? $sm[0] : '' );
			}

			$seo_data['settings'] = $settings;

			$page_settings = get_metadata( 'post', $post_id, \Elementor\Core\Settings\Page\Manager::META_KEY, true );
			$settings      = array_merge( $page_settings, $settings );

			remove_action( 'seopress/page-builders/elementor/save_meta', array( $this, 'on_seopress_meta_save' ), 99 );
			$page_settings_manager = \Elementor\Core\Settings\Manager::get_settings_managers( 'page' );
			$page_settings_manager->ajax_before_save_settings( $settings, $post_id );
			$page_settings_manager->save_settings( $settings, $post_id );
			add_action( 'seopress/page-builders/elementor/save_meta', array( $this, 'on_seopress_meta_save' ), 99 );
		}
	}

	/**
	 * Get allowed meta keys.
	 *
	 * @return array
	 */
	public function get_allowed_meta_keys() {
		return seopress_get_meta_helper()->get_meta_fields();
	}
}
