roles ) ) { $pass = true; } } // Verify user permission if ( ! $pass ) { //wp_send_json_error( 'You do not have permission to perform this action.' ); die( __( 'You do not have permission to perform this action.', 'actus-deep-schema' ) ); } } // SAVE SCHEMA // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_save_schema', 'acsc_save_schema'); function acsc_save_schema() { // Security checks acsc_security(); // Save DATA if ( isset( $_POST['data'] ) ) { $data = map_deep( wp_unslash( $_POST['data'] ), 'sanitize_text_field' ); update_option('ACSC_data', $data, false ); } // Save SCHEMA $schema_name = ""; $schema = ""; if ( isset( $_POST['schemaname'] ) ) { $schema_name = sanitize_text_field( wp_unslash( $_POST['schemaname'] ) ); $schema = map_deep( wp_unslash( $_POST['schema'] ), 'sanitize_text_field' ); update_option('ACSC-' . wp_unslash( $schema_name ), $schema, false ); } // return output to ajax call wp_send_json(array( $data, $schema_name, $schema )); wp_die(); } // SAVE OPTIONS // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_save_options', 'acsc_save_options'); function acsc_save_options() { $sanitized = array(); // Security checks acsc_security(); // Save OPTIONS if ( isset( $_POST['options'] ) ) { $saved = get_option('ACSC-options'); $sanitized = map_deep( wp_unslash( $_POST['options'] ), 'sanitize_text_field' ); $sanitized['license'] = $saved['license']; update_option('ACSC-options', $sanitized, false ); } // return output to ajax call wp_send_json( $sanitized ); wp_die(); } // GET OPTION // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_get_option', 'acsc_get_option'); function acsc_get_option() { $result = ""; // Security checks acsc_security( true ); // Save OPTIONS if ( isset( $_POST['name'] ) ) { $name = sanitize_text_field( wp_unslash( $_POST['name'] ) ); $result = get_option( $name ); } // return output to ajax call if ( $result ) wp_send_json( $result ); wp_die(); } // SET OPTION // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_set_option', 'acsc_set_option'); function acsc_set_option() { // Security checks acsc_security(); // Save OPTIONS if ( isset( $_POST['name'] ) && isset( $_POST['value'] ) ) { // Sanitize input data $name = sanitize_text_field( wp_unslash( $_POST['name'] ) ); if ( is_array( $_POST['value'] ) ) $value = map_deep( wp_unslash( $_POST['value'] ), 'sanitize_text_field' ); else $value = sanitize_text_field( wp_unslash( $_POST['value'] ) ); // update option update_option( $name, $value, false ); } // return output to ajax call wp_send_json(array( $name, $value )); wp_die(); } // DELETE OPTION // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_del_option', 'acsc_del_option'); function acsc_del_option() { // Security checks acsc_security(); // DELETE OPTION if ( isset( $_POST['name'] ) ) { // Sanitize input data $name = sanitize_text_field( wp_unslash( $_POST['name'] ) ); // delete option delete_option( $name ); } // return output to ajax call wp_send_json( $name ); wp_die(); } // DELETE EDIT LOCK // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_del_edit_lock', 'acsc_del_edit_lock'); function acsc_del_edit_lock() { // Security checks acsc_security(); // delete OPTION if ( isset( $_POST['idx'] ) ) { // Sanitize input data $name = sanitize_text_field( wp_unslash( $_POST['idx'] ) ); $user = sanitize_text_field( wp_unslash( $_POST['user'] ) ); $name = "edit-lock-$name"; $result = get_option( $name ); if ( is_array($result) && $result['user'] == $user ){ // delete option delete_option( $name ); } } // return output to ajax call wp_send_json( $name ); wp_die(); } // SAVE DATA // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_save_data', 'acsc_save_data'); function acsc_save_data() { // Security checks acsc_security(); // Save DATA if ( isset( $_POST['data'] ) ) { $sanitized = map_deep( wp_unslash( $_POST['data'] ), 'sanitize_text_field' ); update_option('ACSC_data', $sanitized, false ); } // return output to ajax call wp_send_json(array( $sanitized)); wp_die(); } // DELETE SCHEMA // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_delete_schema', 'acsc_delete_schema'); function acsc_delete_schema() { // Security checks acsc_security(); // Delete SCHEMA if ( $_POST['schemaname'] ) delete_option( 'ACSC-' . sanitize_text_field( wp_unslash( $_POST['schemaname'] ) )); // Save DATA if ( isset( $_POST['data'] ) ) { $sanitized = map_deep( wp_unslash( $_POST['data'] ), 'sanitize_text_field' ); update_option( 'ACSC_data', $sanitized, false ); } die(); } // SEARCH PAGE // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_search_page', 'acsc_search_page'); //add_action( 'wp_ajax_nopriv_search_page', 'acsc_search_page' ); function acsc_search_page() { // Security checks acsc_security(); $post_type = sanitize_title( wp_unslash( $_POST['posttype'] ) ); if ( $post_type == 'both' ) $post_type = array('post', 'page'); $keyword = sanitize_text_field( wp_unslash( $_POST['keyword'] ) ); $query = new WP_Query(array( 'posts_per_page' => -1, //'s' => esc_attr( $_POST['keyword'] ), 's' => $keyword, 'post_type' => $post_type )); if( $query->have_posts() ) : while( $query->have_posts() ): $query->the_post(); $link = get_permalink( $query->post->ID ); ?>
'; the_title(); echo ' ('.esc_html($query->post->ID).')'; ?>
$row){ if ( $row->publicly_queryable == true && $key != 'attachment' ) $post_type[] = $key; } } if ( $post_type == 'posts' ) $post_type = 'post'; if ( $post_type == 'pages' ) $post_type = 'page'; $keyword = sanitize_text_field( wp_unslash( $_POST['keyword'] ) ); $query = new WP_Query(array( 'posts_per_page' => -1, //'s' => esc_attr( $_POST['keyword'] ), 's' => $keyword, 'post_type' => $post_type, )); $posts = $query->posts; if ( ! $posts ) $posts = array(); foreach ($posts as $idx => $row){ $posts[$idx]->url = get_permalink( $row->ID ); } wp_send_json( $posts ); wp_die(); } // SEARCH USER // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_search_user', 'acsc_search_user'); //add_action( 'wp_ajax_nopriv_search_page', 'acsc_search_page' ); function acsc_search_user() { // Security checks acsc_security(); $search = sanitize_text_field( wp_unslash( $_POST['search'] ) ); $args = array( 'search' => "*$search*", 'search_columns' => array( 'user_login', 'user_nicename', 'user_email' ) ); $user_query = new WP_User_Query( $args ); $users_found = $user_query->get_results(); if ( ! $users_found ) $users_found = array(); /* $return['total'] = $user_query->get_total(); $return['pages'] = ceil( $return['total'] / $query['number'] ); */ $result = array(); foreach( $users_found as $user ){ unset( $user->data->user_pass ); $result[] = $user->data; } wp_send_json( $result ); wp_die(); } // GET USER // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_get_user', 'acsc_get_user'); //add_action( 'wp_ajax_nopriv_search_page', 'acsc_search_page' ); function acsc_get_user() { // Security checks acsc_security(); $uid = sanitize_text_field( wp_unslash( $_POST['uid'] ) ); if ( ! $uid ) return array(); /* $user_query = new WP_User_Query(array('id' => $uid)); $result = (array) $user_query->results; $user = $result[0]->data; */ $user = get_user_by('ID', $uid); unset( $user->data->user_pass ); unset( $user->data->user_activation_key ); $user->data->description = get_user_meta( $user->ID, 'description', true ); $user->data->social = get_user_meta( $user->ID, 'autodescription-user-settings', true ); $user->data->roles = $user->caps; $user->data->avatar = get_avatar_url( $user->ID, array('default' => '', 'force_default' => true) ); $user = $user->data; wp_send_json( $user ); wp_die(); } // SAVE JSON to file for validating / debugging // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action( 'wp_ajax_acsc_save_json', 'acsc_save_json' ); function acsc_save_json() { // Security checks acsc_security(); $data = sanitize_text_field( wp_unslash( $_POST['data'] ) ); $myFile = site_url() . "/schema_debug.json"; $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, $data); fclose($fh); echo "OK"; wp_die(); } // Get page content // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action( 'wp_ajax_acsc_get_page_content', 'acsc_get_page_content' ); function acsc_get_page_content() { // Security checks acsc_security(); if ( isset( $_POST['acsc_pid'] ) ) { $post = get_post( sanitize_text_field( wp_unslash( $_POST['acsc_pid'] ) ) ); $content = $post->post_content; $content = apply_filters('the_content', $content); $content = do_shortcode( $content ); echo wp_kses_post($content); wp_die(); } wp_die(); } // Create page // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action( 'wp_ajax_acsc_create_page', 'acsc_create_page' ); function acsc_create_page( $args ) { if ( wp_doing_ajax() ) { // Security checks acsc_security(); if ( $_POST['args'] ) $args = map_deep( wp_unslash( $_POST['args'] ), 'sanitize_text_field' ); } $date = date('Y-m-d'); $defaults = array( 'comment_status' => 'close', 'ping_status' => 'close', 'post_author' => get_current_user_id(), 'post_title' => '', 'post_name' => '', 'post_status' => 'publish', 'post_content' => '', 'post_type' => 'page', 'post_parent' => NULL, 'post_date' => date("Y-m-d H:i:s", strtotime ('-1 day' , strtotime($date)) ) ); $args = array_merge($defaults, $args); $args['post_name'] = sanitize_title( $args['post_name'] ); $page = get_page_by_path( $args['post_name'] ); if( $page ) { echo esc_html($page->post_name); wp_die(); } $page_id = wp_insert_post( $args ); update_post_meta( $page_id, '_wp_page_template', 'ads-view.php' ); echo esc_html($args['post_name']); wp_die(); } // GET TARGET IDS // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ add_action('wp_ajax_acsc_get_target_ids', 'acsc_get_target_ids'); function acsc_get_target_ids() { $result = array(); // Security checks acsc_security(); // Save OPTIONS if ( isset( $_POST['targets'] ) ) { $targets = map_deep( wp_unslash( $_POST['targets'] ), 'sanitize_text_field' ); // Get the default template $default_template = get_option('template'); $default_template = 'page.php'; foreach( $targets as $idx => $target ){ // by template if ( $target['type'] == 'template' ){ $args = array( 'post_type' => 'page', 'posts_per_page' => 10, 'fields' => 'ids', 'meta_query' => array( 'relation' => 'OR', array( 'key' => '_wp_page_template', 'value' => $target['value'] ) ) ); // If the target value is the default template, add condition to get pages with default template if ($target['value'] == $default_template) { $args['meta_query'][] = array( 'key' => '_wp_page_template', 'compare' => 'NOT EXISTS' ); } $page_ids = get_posts($args); $result = array_merge( $result, $page_ids ); } // by parent if ( $target['type'] == 'parent' ){ $args = array( 'post_type' => 'page', 'posts_per_page' => 10, 'fields' => 'ids', 'post_parent' => $target['value'][0] ); $page_ids = get_posts($args); $result = array_merge( $result, $page_ids ); } // by author if ( $target['type'] == 'author' ){ $args = array( 'post_type' => 'page', 'posts_per_page' => 10, 'fields' => 'ids', 'author' => $target['value'] ); $page_ids = get_posts($args); $result = array_merge( $result, $page_ids ); } } } // return output to ajax call if ( $result ) wp_send_json( $result ); wp_die(); } // ≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣≣ // Sanitize multidimensional array and other data function acsc_sanitize( $data ) { $data = wp_unslash( $data ); // Check if the input is an array if ( is_array( $data ) ) { // Initialize a new array $res = array(); // Loop through each item in the array foreach ( $data as $key => $value ) { // Sanitize the key //$sanitized_key = sanitize_key( $key ); // If the value is another array, recursively call this function to sanitize it if ( is_array( $value ) ) { $res[ $key ] = acsc_sanitize( $value ); } else { // Otherwise, sanitize the value $res[ $key ] = wp_kses( $value, array( 'a' => array( 'href' => array(), 'title' => array() ), 'br' => array(), 'em' => array(), 'strong' => array(), 'span' => array(), ) ); } } // Return the sanitized array return $res; } else { // If the input is not an array, sanitize it return wp_kses( $data, array( 'a' => array( 'href' => array(), 'title' => array() ), 'br' => array(), 'em' => array(), 'strong' => array(), 'span' => array(), ) ); } } // Set filename for save backup function acsc_setFilename( $fileName, $acsc_upload_dir ){ $name = substr( $fileName, 0, -4); $ext = substr($fileName, -3); if ( substr( $fileName, -5, 1 ) == '.' ) { $name = substr( $fileName, 0, -5); $ext = substr($fileName, -4); } if ( file_exists( $acsc_upload_dir . $fileName ) ) $fileName = $name . '-' . acsc_generateRandomString() . '.' . $ext; return $fileName; } // Generate Random String function acsc_generateRandomString($length = 3) { // ********************************************************** $characters = 'abcdefghijklmnopqrstuvwxyz'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[wp_rand(0, strlen($characters) - 1)]; } return $randomString; } // ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ ?>