add_action( 'mainwp_ui_save_widgets_layout', array( $this, 'ajax_save_widgets_layout' ) ); MainWP_Post_Handler::instance()->add_action( 'mainwp_ui_load_widgets_layout', array( $this, 'ajax_load_widgets_layout' ) ); MainWP_Post_Handler::instance()->add_action( 'mainwp_ui_delete_widgets_layout', array( $this, 'ajax_delete_widgets_layout' ) ); } /** * Method render_edit_layout(). * * @param string $screen_id Current screen id. */ public static function render_edit_layout( $screen_id ) { $screen_slug = strtolower( $screen_id ); $saved_segments = static::set_get_widgets_layout( false, array(), $screen_slug ); ?> ID ) ) { if ( $set_val ) { update_user_option( $current_user->ID, $field, $saved_segments ); } else { $values = get_user_option( $field, array() ); if ( ! is_array( $values ) ) { $values = array(); } return $values; } } return array(); } /** * Method ajax_save_widgets_layout() * * Post handler for save layout. */ public function ajax_save_widgets_layout() { //phpcs:ignore -- NOSONAR - complex. MainWP_Post_Handler::instance()->check_security( 'mainwp_ui_save_widgets_layout' ); //phpcs:disable WordPress.Security.NonceVerification.Missing $seg_id = ! empty( $_POST['seg_id'] ) ? sanitize_text_field( wp_unslash( $_POST['seg_id'] ) ) : time(); $wgids = is_array( $_POST['wgids'] ) ? $_POST['wgids'] : array(); // phpcs:ignore -- NOSONAR - ok. $items = is_array( $_POST['order'] ) ? $_POST['order'] : array(); // phpcs:ignore -- NOSONAR - ok. $slug = isset( $_POST['settings_slug'] ) ? sanitize_text_field( wp_unslash($_POST['settings_slug'] )) : 'overview'; // phpcs:ignore -- NOSONAR - ok. if ( empty( $slug ) ) { $slug = 'overview'; } $layout_items = array(); if ( is_array( $wgids ) && is_array( $items ) ) { foreach ( $wgids as $idx => $wgid ) { if ( isset( $items[ $idx ] ) ) { $pre = 'widget-'; // compatible with #compatible-widgetid. if ( 0 === strpos( $wgid, $pre ) ) { $wgid = substr( $wgid, strlen( $pre ) ); } $layout_items[ $wgid ] = $items[ $idx ]; } } } $save_layout = array( 'name' => isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : 'N/A', 'layout' => $layout_items, ); //phpcs:enable WordPress.Security.NonceVerification.Missing $saved_segments = static::set_get_widgets_layout( false, array(), $slug ); if ( ! is_array( $saved_segments ) ) { $saved_segments = array(); } $saved_segments[ $seg_id ] = $save_layout; static::set_get_widgets_layout( true, $saved_segments, $slug ); die( wp_json_encode( array( 'result' => 'SUCCESS' ) ) ); } /** * Method ajax_load_widgets_layout() * * Post handler for save segment. */ public function ajax_load_widgets_layout() { MainWP_Post_Handler::instance()->check_security( 'mainwp_ui_load_widgets_layout' ); $slug = isset( $_POST['settings_slug'] ) ? sanitize_text_field( wp_unslash($_POST['settings_slug'] )) : 'overview'; // phpcs:ignore -- NOSONAR - ok. if ( empty( $slug ) ) { $slug = 'overview'; } $saved_segments = static::set_get_widgets_layout( false, array(), $slug ); $list_segs = ''; if ( is_array( $saved_segments ) && ! empty( $saved_segments ) ) { $list_segs .= ''; } die( wp_json_encode( array( 'result' => $list_segs ) ) ); //phpcs:ignore -- ok. } /** * Method ajax_delete_widgets_layout() * * Post handler for save segment. */ public function ajax_delete_widgets_layout() { MainWP_Post_Handler::instance()->check_security( 'mainwp_ui_delete_widgets_layout' ); $seg_id = ! empty( $_POST['seg_id'] ) ? sanitize_text_field( wp_unslash( $_POST['seg_id'] ) ) : 0; //phpcs:ignore -- ok. $slug = ! empty( $_POST['settings_slug'] ) ? sanitize_text_field( wp_unslash( $_POST['settings_slug'] ) ) : 'overview'; //phpcs:ignore -- ok. $saved_segments = static::set_get_widgets_layout( false, array(), $slug ); if ( ! empty( $seg_id ) && is_array( $saved_segments ) && isset( $saved_segments[ $seg_id ] ) ) { unset( $saved_segments[ $seg_id ] ); static::set_get_widgets_layout( true, $saved_segments, $slug ); die( wp_json_encode( array( 'result' =>'SUCCESS' ) ) ); //phpcs:ignore -- ok. } die( wp_json_encode( array( 'error' => esc_html__( 'Layout not found. Please try again.', 'mainwp' ) ) ) ); //phpcs:ignore -- ok. } /** * Method render_modal_save_layout() * * Render modal window. * * @return void */ public static function render_modal_save_layout() { ?>