kratos/inc/codestar-framework/functions/actions.php

190 lines
5.0 KiB
PHP

<?php if (!defined('ABSPATH')) {
die;
}
/**
*
* Get icons from admin ajax
*
* @since 1.0.0
* @version 1.0.0
*
*/
if (!function_exists('csf_get_icons')) {
function csf_get_icons()
{
$nonce = (!empty($_POST['nonce'])) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
if (!wp_verify_nonce($nonce, 'csf_icon_nonce')) {
wp_send_json_error(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(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()
{
$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_ajax')) {
function csf_import_ajax()
{
$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(wp_unslash(trim($_POST['data'])), true)) : array();
if (!wp_verify_nonce($nonce, 'csf_backup_nonce')) {
wp_send_json_error(array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
}
if (empty($unique)) {
wp_send_json_error(array('error' => esc_html__('Error: Invalid key.', 'csf')));
}
if (empty($data) || !is_array($data)) {
wp_send_json_error(array('error' => esc_html__('Error: The response is not a valid JSON response.', 'csf')));
}
// Success
update_option($unique, $data);
wp_send_json_success();
}
add_action('wp_ajax_csf-import', 'csf_import_ajax');
}
/**
*
* Reset Ajax
*
* @since 1.0.0
* @version 1.0.0
*
*/
if (!function_exists('csf_reset_ajax')) {
function csf_reset_ajax()
{
$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(array('error' => esc_html__('Error: Invalid nonce verification.', 'csf')));
}
// Success
delete_option($unique);
wp_send_json_success();
}
add_action('wp_ajax_csf-reset', 'csf_reset_ajax');
}
/**
*
* Chosen Ajax
*
* @since 1.0.0
* @version 1.0.0
*
*/
if (!function_exists('csf_chosen_ajax')) {
function csf_chosen_ajax()
{
$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')));
}
$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($options);
}
add_action('wp_ajax_csf-chosen', 'csf_chosen_ajax');
}