<?php if (!defined('ABSPATH')) {
    die;
} // Cannot access directly.
/**
 *
 * Get icons from admin ajax
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!function_exists('csf_get_icons')) {
    function csf_get_icons($responseObj)
    {
        $nonce = (!empty($_POST['nonce'])) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';

        if (!wp_verify_nonce($nonce, 'csf_icon_nonce')) {
            wp_send_json_error($responseObj, array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
        }

        ob_start();

        $icon_library = (apply_filters('csf_fa4', false)) ? 'fa4' : 'fa5';

        CSF::include_plugin_file('fields/icon/' . $icon_library . '-icons.php');

        $icon_lists = apply_filters('csf_field_icon_add_icons', csf_get_default_icons());

        if (!empty($icon_lists)) {

            foreach ($icon_lists as $list) {

                echo (count($icon_lists) >= 2) ? '<div class="csf-icon-title">' . esc_attr($list['title']) . '</div>' : '';

                foreach ($list['icons'] as $icon) {
                    echo '<i title="' . esc_attr($icon) . '" class="' . esc_attr($icon) . '"></i>';
                }

            }

        } else {

            echo '<div class="csf-error-text">' . esc_html__('No data available.', 'csf') . '</div>';

        }

        $content = ob_get_clean();

        wp_send_json_success($responseObj, array('content' => $content));

    }
//  add_action( 'wp_ajax_csf-get-icons', 'csf_get_icons' );
}

/**
 *
 * Export
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!function_exists('csf_export')) {
    function csf_export($responseObj)
    {

        $nonce = (!empty($_GET['nonce'])) ? sanitize_text_field(wp_unslash($_GET['nonce'])) : '';
        $unique = (!empty($_GET['unique'])) ? sanitize_text_field(wp_unslash($_GET['unique'])) : '';

        if (!wp_verify_nonce($nonce, 'csf_backup_nonce')) {
            die(esc_html__('Error: Invalid nonce verification.', 'csf'));
        }

        if (empty($unique)) {
            die(esc_html__('Error: Invalid key.', 'csf'));
        }

        // Export
        header('Content-Type: application/json');
        header('Content-disposition: attachment; filename=backup-' . gmdate('d-m-Y') . '.json');
        header('Content-Transfer-Encoding: binary');
        header('Pragma: no-cache');
        header('Expires: 0');

        echo json_encode(get_option($unique));

        die();

    }
//  add_action( 'wp_ajax_csf-export', 'csf_export' );
}

/**
 *
 * Import Ajax
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!function_exists('csf_import')) {
    function csf_import($responseObj)
    {

        $nonce = (!empty($_POST['nonce'])) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
        $unique = (!empty($_POST['unique'])) ? sanitize_text_field(wp_unslash($_POST['unique'])) : '';
        $data = (!empty($_POST['data'])) ? wp_kses_post_deep(json_decode((trim($_POST['data'])), true)) : array(); //wp_unslash
        if (!wp_verify_nonce($nonce, 'csf_backup_nonce')) {
            wp_send_json_error($responseObj, array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
        }

        if (empty($unique)) {
            wp_send_json_error($responseObj, array('error' => esc_html__('Error: Invalid key.', 'csf')));
        }

        if (empty($data) || !is_array($data)) {
            wp_send_json_error($responseObj, array('error' => esc_html__('Error: The response is not a valid JSON response.', 'csf')));
        }

        // Success
        update_option($unique, $data);

        wp_send_json_success($responseObj);

    }
//  add_action( 'wp_ajax_csf-import', 'csf_import_ajax' );
}

/**
 *
 * Reset Ajax
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!function_exists('csf_reset')) {
    function csf_reset($responseObj)
    {

        $nonce = (!empty($_POST['nonce'])) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
        $unique = (!empty($_POST['unique'])) ? sanitize_text_field(wp_unslash($_POST['unique'])) : '';

        if (!wp_verify_nonce($nonce, 'csf_backup_nonce')) {
            wp_send_json_error($responseObj,array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
        }

        // Success
        delete_option($unique);

        wp_send_json_success($responseObj);

    }
//  add_action( 'wp_ajax_csf-reset', 'csf_reset_ajax' );
}

/**
 *
 * Chosen Ajax
 *
 * @since 1.0.0
 * @version 1.0.0
 *
 */
if (!function_exists('csf_chosen')) {
    function csf_chosen($responseObj)
    {

        $nonce = (!empty($_POST['nonce'])) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
        $type = (!empty($_POST['type'])) ? sanitize_text_field(wp_unslash($_POST['type'])) : '';
        $term = (!empty($_POST['term'])) ? sanitize_text_field(wp_unslash($_POST['term'])) : '';
        $query = (!empty($_POST['query_args'])) ? wp_kses_post_deep($_POST['query_args']) : array();

        if (!wp_verify_nonce($nonce, 'csf_chosen_ajax_nonce')) {
            wp_send_json_error(array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
        }

        if (empty($type) || empty($term)) {
            wp_send_json_error(array('error' => esc_html__('Error: Invalid term ID.', 'csf')));
        }

        // todo: author capability
//    $capability = apply_filters( 'csf_chosen_ajax_capability', 'manage_options' );
//
//    if ( ! current_user_can( $capability ) ) {
//      wp_send_json_error( array( 'error' => esc_html__( 'Error: You do not have permission to do that.', 'csf' ) ) );
//    }

        // Success
        $options = CSF_Fields::field_data($type, $term, $query);

        wp_send_json_success($responseObj, $options);

    }
//  add_action( 'wp_ajax_csf-chosen', 'csf_chosen_ajax' );
}

if (!function_exists('wp_link_ajax')) {
    function wp_link_ajax($responseObj)
    {
        check_ajax_referer('internal-linking', '_ajax_linking_nonce');

        $args = array();

        if (isset($_POST['search'])) {
            $args['s'] = wp_unslash($_POST['search']);
        }

        if (isset($_POST['term'])) {
            $args['s'] = wp_unslash($_POST['term']);
        }

        $args['pagenum'] = !empty($_POST['page']) ? absint($_POST['page']) : 1;
        // todo:

//        if ( ! class_exists( '_WP_Editors', false ) ) {
//            require ABSPATH . WPINC . '/class-wp-editor.php';
//        }
//
//        $results = _WP_Editors::wp_link_query( $args );
//
//        if ( ! isset( $results ) ) {
//            wp_die( 0 );
//        }
//
//        echo wp_json_encode( $results );
        echo "\n";

        die();
    }

}
