<?php /** * Default Values * * @package surerank * @since 0.0.1 */ namespace SureRank\Inc\Functions; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } use SureRank\Inc\API\Onboarding; use SureRank\Inc\Schema\Utils; use SureRank\Inc\Traits\Get_Instance; /** * Default Values * This class will handle all default values. * * @since 1.0.0 */ class Defaults { use Get_Instance; /** * Default values for the global - General. * * @var array<string, mixed> * @since 1.0.0 */ private $global_general_defaults = [ 'separator' => '-', 'page_title' => '%title% - %site_name%', 'auto_generate_description' => true, 'page_description' => '%content%', 'auto_description' => '', 'fallback_image' => '', 'auto_generated_og_image' => '', 'canonical_url' => '', 'focus_keyword' => '', ]; /** * Default values for the global - Homepage. * * @var array<string, mixed> * @since 1.0.0 */ private $feature_management_defaults = [ 'enable_page_level_seo' => true, 'enable_google_console' => true, 'enable_schemas' => true, 'enable_migration' => true, ]; /** * Default values for the global - Homepage. * * @var array<string, mixed> * @since 1.0.0 */ private $global_homepage_defaults = [ 'home_page_title' => '%site_name% - %tagline%', 'home_page_description' => '%tagline%', 'home_page_facebook_image_url' => '', 'home_page_facebook_title' => '', 'home_page_facebook_description' => '', 'home_page_twitter_image_url' => '', 'home_page_twitter_title' => '', 'home_page_twitter_description' => '', 'home_page_robots' => [ 'general' => [], ], 'index_home_page_paginated_pages' => true, ]; /** * Default values for the global - Social. * * @var array<string, mixed> * @since 1.0.0 */ private $global_social_defaults = [ 'open_graph_tags' => true, 'facebook_meta_tags' => true, 'twitter_meta_tags' => true, 'oembeded_scripts' => true, 'oembeded_og_title' => true, 'oembeded_social_images' => true, 'oembeded_remove_author_name' => true, 'facebook_page_url' => '', 'facebook_author_fallback' => '', 'twitter_card_type' => 'summary_large_image', 'twitter_same_as_facebook' => true, 'twitter_profile_username' => '', 'twitter_profile_fallback' => '', ]; /** * Default values for the global - Special Pages. * * @var array<string, mixed> * @since 1.0.0 */ private $global_special_pages_defaults = [ 'author_archive' => false, 'date_archive' => false, 'noindex_paginated_pages' => false, 'paginated_link_relationships' => [ 'homepage', 'pages', 'archives' ], ]; /** * Default values for the global - Advanced - Feeds. * * @var array<string, mixed> * @since 1.0.0 */ private $global_advanced_feeds_default = [ 'addlink_to_source_below_feed_entries' => true, 'remove_global_comments_feed' => false, 'remove_post_authors_feed' => false, 'remove_post_types_feed' => false, 'remove_category_feed' => false, 'remove_tag_feeds' => false, 'remove_custom_taxonomy_feeds' => false, 'remove_search_results_feed' => false, 'remove_atom_rdf_feeds' => false, ]; /** * Default values for the global - Advanced - Sitemaps. * * @var array<string, mixed> * @since 1.0.0 */ private $global_advanced_sitemaps_default = [ 'enable_xml_sitemap' => true, 'enable_xml_image_sitemap' => true, ]; /** * Default values for the global - Advanced - Images. * * @var array<string, mixed> * @since 1.0.0 */ private $global_advanced_images_defaults = [ 'redirect_attachment_pages_to_post_parent' => true, 'auto_set_image_title' => true, 'auto_set_image_alt' => true, ]; /** * Default values for the global - Advanced - Miscellaneous. * * @var array<string, mixed> * @since 1.0.0 */ private $global_advanced_miscellaneous_defaults = [ 'surerank_analytics_optin' => false, ]; /** * Default values for the global - Advanced - Robots. * * @var array<string, mixed> * @since 1.0.0 */ private $global_advanced_robots_default = [ 'no_index' => [ 'post_format', 'attachment', 'author', 'date', 'search', ], 'no_follow' => [], 'no_archive' => [], ]; /** * Default values for the Post/CPT. * * @var array<string, mixed> * @since 1.0.0 */ private $post_defaults = null; /** * Constructor. * * @since 1.0.0 */ public function __construct() { $this->post_defaults = [ 'general' => $this->get_general_defaults(), 'post_no_index' => '', 'post_no_follow' => '', 'post_no_archive' => '', 'social' => array_merge( $this->get_social_defaults(), [ // Facebook. 'facebook_title' => '', 'facebook_description' => '', 'facebook_image_url' => '', 'facebook_image_id' => 0, 'facebook_image_width' => 0, 'facebook_image_height' => 0, // (X) Twitter. 'twitter_title' => '', 'twitter_description' => '', 'twitter_image_url' => '', 'twitter_image_id' => 0, 'twitter_card_type' => 'summary_large_image', 'twitter_same_as_facebook' => true, 'twitter_profile_username' => '', 'twitter_profile_fallback' => '', ] ), 'schemas' => [ 'schemas' => Utils::get_default_schemas(), ], ]; } /** * Default values for the global. * * @param string $key Key. * @return mixed * @since 1.0.0 */ public function get_global_defaults( $key = '' ) { $social_profiles_array = []; foreach ( Onboarding::social_profiles() as $profile ) { $social_profiles_array[ $profile['id'] ] = ''; } $data_settings = apply_filters( 'surerank_global_defaults', array_merge( // General Settings. $this->get_general_defaults(), $this->get_homepage_defaults(), $this->get_social_defaults(), $this->feature_management_defaults(), $this->get_special_pages_defaults(), $this->get_feeds_defaults(), $this->get_sitemap_defaults(), $this->get_robots_defaults(), $this->get_images_defaults(), $this->get_advanced_miscellaneous_defaults(), [ 'schemas' => Utils::get_default_schemas(), ], [ 'social_profiles' => $social_profiles_array, ] ) ); if ( ! empty( $key ) && isset( $data_settings[ $key ] ) ) { return $data_settings[ $key ]; } return $data_settings; } /** * Default values for the Post/CPT. * * @param bool $flat Flat. * @return array<string, mixed> * @since 1.0.0 */ public function get_post_defaults( $flat = true ) { $all_settings = []; if ( ! $flat ) { return apply_filters( 'surerank_post_defaults', $this->post_defaults, ); } foreach ( $this->post_defaults as $option_value ) { if ( ! empty( $option_value ) ) { $all_settings = array_merge( $all_settings, $option_value ); } } return apply_filters( 'surerank_post_defaults', $all_settings, ); } /** * Values for the Post/CPT meta keys. * * @return array<string, mixed>|array<int, array<string, mixed>> * @since 1.0.0 */ public function get_post_meta_keys() { if ( empty( $this->post_defaults ) ) { return []; } return array_keys( $this->post_defaults ); } /** * Default values for the onboarding. * * @return array<string, mixed> * @since 1.0.0 */ public function get_onboarding_defaults() { return apply_filters( 'surerank_onboarding_defaults', [ 'first_name' => '', 'last_name' => '', 'email' => '', 'subscribe' => false, 'agree_to_terms' => false, 'website_type' => [], 'website_name' => '', 'website_owner_name' => '', 'website_owner_phone' => '', 'website_logo' => [], 'about_page' => [], 'contact_page' => [], 'social_profiles' => [ 'facebook' => '', 'twitter' => '', 'instagram' => '', 'youtube' => '', 'linkedin' => '', 'tiktok' => '', 'pinterest' => '', 'reddit' => '', 'snapchat' => '', 'twitch' => '', 'whatsapp' => '', 'telegram' => '', 'vimeo' => '', 'yelp' => '', ], ], ); } /** * Get general defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_general_defaults() { return apply_filters( 'surerank_general_defaults', $this->global_general_defaults ); } /** * Get homepage defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_homepage_defaults() { return apply_filters( 'surerank_homepage_defaults', $this->global_homepage_defaults ); } /** * Get social defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_social_defaults() { return apply_filters( 'surerank_social_defaults', $this->global_social_defaults ); } /** * Get feature management defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function feature_management_defaults() { return apply_filters( 'surerank_feature_management_defaults', $this->feature_management_defaults ); } /** * Get special pages defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_special_pages_defaults() { return apply_filters( 'surerank_special_pages_defaults', $this->global_special_pages_defaults ); } /** * Get feeds defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_feeds_defaults() { return apply_filters( 'surerank_feeds_defaults', $this->global_advanced_feeds_default ); } /** * Get sitemap defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_sitemap_defaults() { return apply_filters( 'surerank_sitemap_defaults', $this->global_advanced_sitemaps_default ); } /** * Get robots defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_robots_defaults() { return apply_filters( 'surerank_robots_defaults', $this->global_advanced_robots_default ); } /** * Get images defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_images_defaults() { return apply_filters( 'surerank_images_defaults', $this->global_advanced_images_defaults ); } /** * Get advanced miscellaneous defaults with filter. * * @return array<string, mixed> * @since 1.2.0 */ private function get_advanced_miscellaneous_defaults() { return apply_filters( 'surerank_advanced_miscellaneous_defaults', $this->global_advanced_miscellaneous_defaults ); } }