| @@ -6,9 +6,9 @@ | ||
| 6 | 6 | * @var string $content The block default content. |
| 7 | 7 | * @var WP_Block $block The block instance. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -$instance = wp_parse_args( $attributes, [ | |
| 10 | +$default_instance = [ | |
| 11 | 11 | 'boardid' => 0, |
| 12 | 12 | 'title' => __( 'Recent Topics', 'wpforo' ), |
| 13 | 13 | 'forumids' => [], |
| 14 | 14 | 'orderby' => 'created', |
| @@ -18,9 +18,21 @@ | ||
| 18 | 18 | 'forumids_filter' => false, |
| 19 | 19 | 'current_forumid_filter' => false, |
| 20 | 20 | 'goto_unread' => false, |
| 21 | 21 | 'refresh_interval' => 0, |
| 22 | -] ); | |
| 22 | +]; | |
| 23 | + | |
| 24 | +$allowed_orderby = [ 'created', 'modified', 'posts', 'views' ]; | |
| 25 | +$allowed_order = [ 'DESC', 'ASC', 'RAND' ]; | |
| 26 | + | |
| 27 | +$instance = wp_parse_args( $attributes, $default_instance ); | |
| 28 | + | |
| 29 | +if( ! is_string( $instance['orderby'] ) || ! in_array( $instance['orderby'], $allowed_orderby, true ) ) { | |
| 30 | + $instance['orderby'] = $default_instance['orderby']; | |
| 31 | +} | |
| 32 | +if( ! is_string( $instance['order'] ) || ! in_array( $instance['order'], $allowed_order, true ) ) { | |
| 33 | + $instance['order'] = $default_instance['order']; | |
| 34 | +} | |
| 23 | 35 | |
| 24 | 36 | // wpForo Recent Topics widget logic |
| 25 | 37 | wp_enqueue_script( 'wpforo-widgets-js' ); |
| 26 | 38 | |