__( 'Access denied', 'jet-engine' ) ) ); } $nonce = ! empty( $_REQUEST['nonce'] ) ? $_REQUEST['nonce'] : false; if ( ! $nonce || ! wp_verify_nonce( $nonce, 'jet-engine-data-stores' ) ) { wp_send_json_error( array( 'message' => __( 'Nonce validation failed', 'jet-engine' ) ) ); } $items = ! empty( $_REQUEST['items'] ) ? $_REQUEST['items'] : array(); $table = jet_engine()->db->tables( Module::instance()->data->table, 'name' ); jet_engine()->db->delete( Module::instance()->data->table, array( 'status' => 'data-store' ), array( '%s' ) ); $prepared_items = array(); foreach ( array_reverse( $items ) as $item ) { $slug = ! empty( $item['slug'] ) ? Module::instance()->data->sanitize_slug( $item['slug'] ) : ''; $name = ! empty( $item['name'] ) ? esc_html( wp_unslash( $item['name'] ) ) : ''; $name = str_replace( '\\', '', $name ); // remove the remaining slashes $type = ! empty( $item['type'] ) ? $item['type'] : 'cookies'; $size = ! empty( $item['size'] ) ? absint( $item['size'] ) : 0; $count = ! empty( $item['count_posts'] ) ? $item['count_posts'] : false; $count = filter_var( $count, FILTER_VALIDATE_BOOLEAN ); $is_user = ! empty( $item['is_user'] ) ? $item['is_user'] : false; $is_user = filter_var( $is_user, FILTER_VALIDATE_BOOLEAN ); $store_on_view = ! empty( $item['store_on_view'] ) ? $item['store_on_view'] : false; $store_on_view = filter_var( $store_on_view, FILTER_VALIDATE_BOOLEAN ); $on_post_type = ! empty( $item['on_post_type'] ) ? $item['on_post_type'] : ''; $format = '\'%s\''; $args = apply_filters( 'jet-engine/data-stores/settings/args-to-save', array( 'type' => $type, 'size' => $size, 'count_posts' => $count, 'is_user' => $is_user, 'store_on_view' => $store_on_view, 'on_post_type' => $on_post_type, ), $item ); $prepared_items[] = '(' . implode( ', ', array( 'slug' => sprintf( $format, $slug ), 'status' => sprintf( $format, 'data-store' ), 'labels' => sprintf( $format, maybe_serialize( array( 'name' => $name ) ) ), 'args' => sprintf( $format, maybe_serialize( $args ) ), ) ) . ')'; } $prepared_items = implode( ', ', $prepared_items ); global $wpdb; $wpdb->query( "INSERT INTO $table ( `slug`, `status`, `labels`, `args` ) VALUES $prepared_items;" ); wp_send_json_success( array( 'message' => __( 'Settings saved', 'jet-engine' ) ) ); } /** * Register settings JS file * * @return [type] [description] */ public function register_stores_js() { wp_enqueue_script( 'jet-engine-admin-tools', jet_engine()->plugin_url( 'assets/js/admin/tools.js' ), array(), jet_engine()->get_version(), true ); wp_enqueue_script( 'jet-engine-data-stores', Module::instance()->module_url( 'assets/js/admin/dashboard/data-stores.js' ), array( 'cx-vue-ui' ), jet_engine()->get_version(), true ); $stores = Module::instance()->stores->get_store_types(); $counts_allowed = array(); foreach ( $stores as $store ) { if ( ! $store->is_front_store() ) { $counts_allowed[] = $store->type_id(); } } wp_localize_script( 'jet-engine-data-stores', 'JetEngineDataStores', array( 'items' => $this->get(), 'types' => Module::instance()->stores->get_types_for_js(), 'can_posts_counts' => $counts_allowed, 'post_types' => \Jet_Engine_Tools::get_post_types_for_js(), '_nonce' => wp_create_nonce( 'jet-engine-data-stores' ), ) ); add_action( 'admin_footer', array( $this, 'print_templates' ) ); } /** * Print VU template for maps settings * * @return [type] [description] */ public function print_templates() { ?> stores ) { $this->stores = Module::instance()->data->get_item_for_register(); if ( empty( $this->stores ) ) { $this->stores = array(); } } return $this->stores; } /** * Register settings tab * * @return [type] [description] */ public function register_stores_tab() { ?>