__( '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() {
?>