PluginProbe
Forumax – AI Powered Advanced Community Forum Plugin / 2.5.0
Forumax – AI Powered Advanced Community Forum Plugin v2.5.0
2.5.1 2.5.0 2.4.4 2.4.3 2.4.2 2.4.1 2.4.0 trunk 1.0.8 1.1.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 All 31 releases
← All changes | includes/features/bbp_voting/helpers.php +49 -32 1.2.3 → 2.5.0 View file →
@@ -3,20 +3,22 @@
3 3 exit; // Exit if accessed directly.
4 4 }
5 5
6 6 if ( ! function_exists( 'bbp_voting_get_plugin_install_link' ) ) {
7 - function bbp_voting_get_plugin_install_link( $plugin, $action = 'install-plugin' ) {
8 - return wp_nonce_url(
9 - add_query_arg(
10 - [
11 - 'action' => $action,
12 - 'plugin' => $plugin,
13 - ],
14 - admin_url( 'update.php' )
15 - ),
16 - $action . '_' . $plugin
17 - );
18 - }
7 + function bbp_voting_get_plugin_install_link( $plugin, $action = 'install-plugin' ) {
8 + return esc_url(
9 + wp_nonce_url(
10 + add_query_arg(
11 + [
12 + 'action' => $action,
13 + 'plugin' => $plugin,
14 + ],
15 + admin_url( 'update.php' )
16 + ),
17 + $action . '_' . $plugin
18 + )
19 + );
20 + }
19 21 }
20 22
21 23
22 24 if ( ! function_exists( 'bbp_voting_get_plugin_activate_link' ) ) {
@@ -33,46 +35,44 @@
33 35
34 36
35 37 if ( ! function_exists( 'bbp_voting_field' ) ) {
36 38 function bbp_voting_field( $key, $name, $label = '', $description = '', $type = 'bool', $pro = false ) {
37 - $name_and_id = 'name="' . $key . '" id="' . $key . '"';
39 + $name_and_id = 'name="' . esc_attr( $key ) . '" id="' . esc_attr( $key ) . '"';
38 40 $teaser = defined( 'BBPVOTINGPRO' ) ? false : $pro;
39 41 $attributes = $teaser ? 'disabled' : $name_and_id;
40 42 ?>
41 43 <tr valign="top">
42 44 <th scope="row">
43 - <?php echo $name; ?>:
45 + <?php echo esc_html( $name ); ?>:
44 46 <?php if ( $pro ) { ?>
45 - <a href="https://wpforthewin.com/product/bbpress-voting-pro/" target="_blank"><span class="bbp-voting-pro-badge bbp-voting-pro-green">Pro</span></a>
47 + <a href="<?php echo esc_url( 'https://wpforthewin.com/product/bbpress-voting-pro/' ); ?>" target="_blank" rel="noopener noreferrer">
48 + <span class="bbp-voting-pro-badge bbp-voting-pro-green">Pro</span>
49 + </a>
46 50 <?php } ?>
47 51 </th>
48 52 <td>
49 - <?php if ( $type == 'bool' ) { ?>
50 - <input type="checkbox" <?php echo $attributes; ?> value="true"
51 - <?php
52 - if ( get_option( $key ) == 'true' ) {
53 - echo 'checked';}
54 - ?>
55 - />
53 + <?php if ( $type === 'bool' ) { ?>
54 + <input type="checkbox" <?php echo wp_kses_post( $attributes ); ?> value="true"
55 + <?php checked( get_option( $key ), 'true' ); ?> />
56 56 <?php } elseif ( is_array( $type ) ) { ?>
57 - <select <?php echo $attributes; ?>>
57 + <select <?php echo wp_kses_post( $attributes ); ?>>
58 58 <?php foreach ( $type as $option ) { ?>
59 - <option value="<?php echo $option; ?>"
60 - <?php
61 - if ( get_option( $key ) == $option ) {
62 - echo ' selected';}
63 - ?>
64 - ><?php echo ucwords( str_replace( '-', ' ', $option ) ); ?></option>
59 + <option value="<?php echo esc_attr( $option ); ?>" <?php selected( get_option( $key ), $option ); ?>>
60 + <?php echo esc_html( ucwords( str_replace( '-', ' ', $option ) ) ); ?>
61 + </option>
65 62 <?php } ?>
66 63 </select>
67 64 <?php } else { ?>
68 - <input type="<?php echo $type; ?>" <?php echo $attributes; ?> value="<?php echo get_option( $key ); ?>" data-lpignore="true" />
65 + <input type="<?php echo esc_attr( $type ); ?>" <?php echo wp_kses_post( $attributes ); ?>
66 + value="<?php echo esc_attr( get_option( $key ) ); ?>" data-lpignore="true" />
69 67 <?php } ?>
68 +
70 69 <?php if ( ! empty( $label ) ) { ?>
71 - <label for="<?php echo $key; ?>"><?php echo $label; ?></label>
70 + <label for="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $label ); ?></label>
72 71 <?php } ?>
72 +
73 73 <?php if ( ! empty( $description ) ) { ?>
74 - <p class="description"><?php echo $description; ?></p>
74 + <p class="description"><?php echo wp_kses_post( $description ); ?></p>
75 75 <?php } ?>
76 76 </td>
77 77 </tr>
78 78 <?php
@@ -152,5 +152,22 @@
152 152
153 153 // Return the parsed results
154 154 return $r;
155 155 }
156 +}
157 +
158 +
159 +if ( ! function_exists( 'forumax_init_voting_scores' ) ) {
160 + /**
161 + * Initialize voting scores for new topics and replies.
162 + *
163 + * @param int $post_id Post ID.
164 + */
165 + function forumax_init_voting_scores( $post_id ) {
166 + update_post_meta( $post_id, 'bbp_voting_score', '0' );
167 + update_post_meta( $post_id, 'bbp_voting_ups', '0' );
168 + update_post_meta( $post_id, 'bbp_voting_downs', '0' );
169 + update_post_meta( $post_id, 'bbp_voting_log', [] );
170 + }
171 + add_action( 'bbp_new_topic', 'forumax_init_voting_scores' );
172 + add_action( 'bbp_new_reply', 'forumax_init_voting_scores' );
156 173 }