<?php

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

function seopress_sanitize_options_fields($input){
    $seopress_sanitize_fields = [
        'seopress_social_facebook_img_attachment_id',
        'seopress_social_facebook_img_attachment_width',
        'seopress_social_facebook_img_attachment_height',
        'seopress_titles_sep',
        'seopress_titles_home_site_title',
        'seopress_titles_home_site_title_alt',
        'seopress_titles_home_site_desc',
        'seopress_titles_archives_author_title',
        'seopress_titles_archives_author_desc',
        'seopress_titles_archives_date_title',
        'seopress_titles_archives_date_desc',
        'seopress_titles_archives_search_title',
        'seopress_titles_archives_search_desc',
        'seopress_titles_archives_404_title',
        'seopress_titles_archives_404_desc',
        'seopress_xml_sitemap_html_exclude',
        'seopress_xml_sitemap_html_mapping',
        'seopress_social_knowledge_name',
        'seopress_social_knowledge_img',
        'seopress_social_knowledge_desc',
        'seopress_social_knowledge_email',
        'seopress_social_knowledge_phone',
        'seopress_social_knowledge_tax_id',
        'seopress_social_accounts_facebook',
        'seopress_social_accounts_twitter',
        'seopress_social_accounts_pinterest',
        'seopress_social_accounts_instagram',
        'seopress_social_accounts_youtube',
        'seopress_social_accounts_linkedin',
        'seopress_social_accounts_extra',
        'seopress_social_facebook_link_ownership_id',
        'seopress_social_facebook_admin_id',
        'seopress_social_facebook_app_id',
        'seopress_social_fv_creator',
        'seopress_google_analytics_ga4',
        'seopress_google_analytics_download_tracking',
        'seopress_google_analytics_opt_out_msg',
        'seopress_google_analytics_opt_out_msg_ok',
        'seopress_google_analytics_opt_out_msg_close',
        'seopress_google_analytics_opt_out_msg_edit',
        'seopress_google_analytics_other_tracking',
        'seopress_google_analytics_other_tracking_body',
        'seopress_google_analytics_other_tracking_footer',
        'seopress_google_analytics_ads',
        'seopress_google_analytics_matomo_id',
        'seopress_google_analytics_matomo_site_id',
        'seopress_google_analytics_matomo_cross_domain_sites',
        'seopress_google_analytics_cb_backdrop_bg',
        'seopress_google_analytics_cb_exp_date',
        'seopress_google_analytics_cb_bg',
        'seopress_google_analytics_cb_txt_col',
        'seopress_google_analytics_cb_lk_col',
        'seopress_google_analytics_cb_btn_bg',
        'seopress_google_analytics_cb_btn_col',
        'seopress_google_analytics_cb_btn_bg_hov',
        'seopress_google_analytics_cb_btn_col_hov',
        'seopress_google_analytics_cb_btn_sec_bg',
        'seopress_google_analytics_cb_btn_sec_col',
        'seopress_google_analytics_cb_btn_sec_bg_hov',
        'seopress_google_analytics_cb_btn_sec_col_hov',
        'seopress_google_analytics_cb_width',
        'seopress_instant_indexing_bing_api_key',
        'seopress_instant_indexing_manual_batch',
        'seopress_google_analytics_clarity_project_id',
        'seopress_google_analytics_matomo_widget_auth_token',
        //'seopress_instant_indexing_google_api_key',
    ];

    $seopress_sanitize_site_verification = [
        'seopress_advanced_advanced_google',
        'seopress_advanced_advanced_bing',
        'seopress_advanced_advanced_pinterest',
        'seopress_advanced_advanced_yandex',
        'seopress_advanced_advanced_baidu',
    ];

    $newOptions = ['seopress_social_facebook_img_attachment_id', 'seopress_social_facebook_img_height', 'seopress_social_facebook_img_width'];

    foreach ($newOptions as $key => $value) {
        if(!isset($input[$value]) && isset($_POST[$value])){
            $input[$value] = $_POST[$value];
        }
    }

    foreach ($seopress_sanitize_fields as $value) {
        if ( ! empty($input['seopress_google_analytics_matomo_widget_auth_token']) && 'seopress_google_analytics_matomo_widget_auth_token' === $value) {
            $options = get_option('seopress_google_analytics_option_name');

            $token = isset($options['seopress_google_analytics_matomo_widget_auth_token']) ? $options['seopress_google_analytics_matomo_widget_auth_token'] : null;

            $input[$value] = $input[$value] ==='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ? $token : sanitize_text_field($input[$value]);
        } elseif ( ! empty($input['seopress_google_analytics_opt_out_msg']) && 'seopress_google_analytics_opt_out_msg' === $value) {
            $args = [
                    'strong' => [],
                    'em'     => [],
                    'br'     => [],
                    'a'      => [
                        'href'   => [],
                        'target' => [],
                    ],
            ];
            $input[$value] = wp_kses($input[$value], $args);
        } elseif (( ! empty($input['seopress_google_analytics_other_tracking']) && 'seopress_google_analytics_other_tracking' === $value) || ( ! empty($input['seopress_google_analytics_other_tracking_body']) && 'seopress_google_analytics_other_tracking_body' === $value) || ( ! empty($input['seopress_google_analytics_other_tracking_footer']) && 'seopress_google_analytics_other_tracking_footer' === $value)) {
            if (current_user_can('unfiltered_html')) {
                $input[$value] = $input[$value]; //No sanitization for this field
            } else {
                $options = get_option('seopress_google_analytics_option_name');
                $input[$value] = isset($options[$value]) ? $options[$value] : '';
            }
        } elseif (( ! empty($input['seopress_instant_indexing_manual_batch']) && 'seopress_instant_indexing_manual_batch' === $value) || (!empty($input['seopress_social_accounts_extra']) && 'seopress_social_accounts_extra' === $value )) {
            $input[$value] = sanitize_textarea_field($input[$value]);
        } elseif (( ! empty ($input['seopress_social_accounts_facebook']) && 'seopress_social_accounts_facebook' === $value) || (! empty ($input['seopress_social_accounts_pinterest']) && 'seopress_social_accounts_pinterest' === $value) || (! empty ($input['seopress_social_accounts_instagram']) && 'seopress_social_accounts_instagram' === $value) || (! empty ($input['seopress_social_accounts_youtube']) && 'seopress_social_accounts_youtube' === $value) || (! empty ($input['seopress_social_accounts_linkedin']) && 'seopress_social_accounts_linkedin' === $value)) {
            $input[$value] = sanitize_url($input[$value]);
        } elseif (( ! empty ($input['seopress_social_knowledge_email']) && 'seopress_social_knowledge_email' === $value)) {
            $input[$value] = sanitize_email($input[$value]);
        } elseif ( ! empty($input[$value])) {
            $input[$value] = sanitize_text_field($input[$value]);
        }
    }

    foreach ($seopress_sanitize_site_verification as $value) {
        if ( ! empty($input[$value])) {
            if (preg_match('#content=\'([^"]+)\'#', $input[$value], $m)) {
                $input[$value] = esc_attr($m[1]);
            } elseif (preg_match('#content="([^"]+)"#', $input[$value], $m)) {
                $input[$value] = esc_attr($m[1]);
            } else {
                $input[$value] = esc_attr($input[$value]);
            }
        }
    }

    return $input;
}

