<?php

// phpcs:disable WordPress.Security.NonceVerification.Missing -- Legacy TaxoPress file: keep behavior unchanged while documenting existing PHPCS exceptions.

class SimpleTags_Admin_Post_Settings
{
    /**
     * Constructor
     *
     * @return void
     * @author WebFactory Ltd
     */
    public function __construct()
    {

        if ((1 === (int) SimpleTags_Plugin::get_option_value('active_auto_links')) || (1 === (int) SimpleTags_Plugin::get_option_value('active_auto_terms'))) {
            // Save tags from advanced input
            add_action('save_post', array( __CLASS__, 'save_post' ), 10, 1);
            // Box for advanced tags
            add_action('add_meta_boxes', array( __CLASS__, 'add_meta_boxes' ), 10, 1);
        }
    }

    /**
     * Register a new box for TaxoPress settings
     *
     * @param string $post_type
     *
     * @return void
     * @author WebFactory Ltd
     */
    public static function add_meta_boxes($post_type)
    {

        $autoterm = taxopress_post_type_autoterms();
        $autolink = taxopress_post_type_autolink_autolink();

        if (!is_array($autoterm) && !is_array($autolink)) {
            return;
        }

        // Auto terms for this CPT ?
        add_meta_box('simpletags-settings', __('TaxoPress', 'simple-tags'), array(
            __CLASS__,
            'metabox'
        ), $post_type, 'side', 'low');
    }

    /**
     * Build HTML of form
     *
     * @param object $post
     *
     * @return void
     * @author WebFactory Ltd
     */
    public static function metabox($post)
    {
        if (! isset($post->post_type)) {
            return;
        }

        // Auto terms for this CPT ?
        if (1 === (int) SimpleTags_Plugin::get_option_value('active_auto_terms')) {
            $meta_value = get_post_meta($post->ID, '_exclude_autotags', true);
            echo '<p>' . "\n";
            echo '<label><input type="checkbox" name="exclude_autotags" value="true" ' . checked(esc_attr($meta_value), true, false) . ' /> ' . esc_html__('Disable Auto Terms', 'simple-tags') . '</label><br />' . "\n";
            echo '</p>' . "\n";
            echo '<input type="hidden" name="_meta_autotags" value="true" />';
        }

        if (1 === (int) SimpleTags_Plugin::get_option_value('active_auto_links')) {
            $meta_value = get_post_meta($post->ID, '_exclude_autolinks', true);
            echo '<p>' . "\n";
            echo '<label><input type="checkbox" name="exclude_autolinks" value="true" ' . checked(esc_attr($meta_value), true, false) . ' /> ' . esc_html__('Disable Auto Links', 'simple-tags') . '</label><br />' . "\n";
            echo '</p>' . "\n";
            echo '<input type="hidden" name="_meta_autolink" value="true" />';
        }
    }

    /**
     * Save this settings in post meta, delete if no exclude, clean DB :)
     *
     * @param integer $object_id
     *
     * @return void
     * @author WebFactory Ltd
     */
    public static function save_post($object_id = 0)
    {
        if (isset($_POST['_meta_autotags']) && 'true' === $_POST['_meta_autotags']) {
            if (isset($_POST['exclude_autotags'])) {
                update_post_meta($object_id, '_exclude_autotags', true);
            } else {
                delete_post_meta($object_id, '_exclude_autotags');
            }
        }

        if (isset($_POST['_meta_autolink']) && 'true' === $_POST['_meta_autolink']) {
            if (isset($_POST['exclude_autolinks'])) {
                update_post_meta($object_id, '_exclude_autolinks', true);
            } else {
                delete_post_meta($object_id, '_exclude_autolinks');
            }
        }
    }
}
