| 35 | |
| 36 | // Add extra reply actions before the Submit button. |
| 37 | add_action( 'bbp_theme_before_reply_form_submit_wrapper', array( $this, 'add_extra_reply_actions' ) ); |
| 38 | |
| 39 | // Process extra reply fields submission. |
| 40 | add_action( 'bbp_new_reply', array( $this, 'handle_extra_reply_actions' ), 10, 2 ); |
| 41 | add_action( 'bbp_edit_reply', array( $this, 'handle_extra_reply_actions' ), 10, 2 ); |
| 183 | /** |
| 184 | * Add extra reply actions before the Submit button. |
| 185 | */ |
| 186 | public function add_extra_reply_actions() { |
| 187 | if ( class_exists( 'WordPressdotorg\Forums\Topic_Resolution\Plugin' ) ) : |
| 188 | if ( Topic_Resolution\Plugin::get_instance()->user_can_resolve( get_current_user_id(), bbp_get_topic_id() ) ) : ?> |
| 189 | <p> |
| 190 | <input name="bbp_reply_mark_resolved" id="bbp_reply_mark_resolved" type="checkbox" value="yes" /> |
| 191 | <label for="bbp_reply_mark_resolved"><?php esc_html_e( 'Reply and mark as resolved', 'wporg-forums' ); ?></label> |
| 192 | </p> |
| 193 | <?php |
| 194 | endif; |
| 195 | endif; |
| 196 | |
| 197 | if ( current_user_can( 'moderate', bbp_get_topic_id() ) ) : ?> |
| 198 | <p> |
| 199 | <input name="bbp_reply_close_topic" id="bbp_reply_close_topic" type="checkbox" value="yes" /> |
| 200 | <label for="bbp_reply_close_topic"><?php esc_html_e( 'Reply and close the topic', 'wporg-forums' ); ?></label> |
| 201 | </p> |
| 202 | <?php |
| 203 | endif; |
| 204 | } |
| 205 | |
| 206 | /** |
| 207 | * Process extra reply fields submission. |
| 208 | * |
| 209 | * @param int $reply_id Reply ID. |
| 210 | * @param int $topic_id Topic ID. |
| 211 | */ |
| 212 | public function handle_extra_reply_actions( $reply_id, $topic_id ) { |
| 213 | // Handle "Reply and mark as resolved" checkbox |
| 214 | if ( isset( $_POST['bbp_reply_mark_resolved'] ) && 'yes' === $_POST['bbp_reply_mark_resolved'] ) { |
| 215 | if ( class_exists( 'WordPressdotorg\Forums\Topic_Resolution\Plugin' ) ) { |
| 216 | $topic_resolution_plugin = Topic_Resolution\Plugin::get_instance(); |
| 217 | |
| 218 | $plugin_enabled = $topic_resolution_plugin->is_enabled_on_forum( bbp_get_topic_forum_id( $topic_id ) ); |
| 219 | $user_can_resolve = $topic_resolution_plugin->user_can_resolve( get_current_user_id(), $topic_id ); |
| 220 | |
| 221 | if ( $plugin_enabled && $user_can_resolve ) { |
| 222 | $topic_resolution_plugin->set_topic_resolution( array( |
| 223 | 'id' => $topic_id, |
| 224 | 'resolution' => 'yes', |
| 225 | ) ); |
| 226 | } |
| 227 | } |
| 228 | } |
| 229 | |
| 230 | // Handle "Reply and close the topic" checkbox |
| 231 | if ( isset( $_POST['bbp_reply_close_topic'] ) && 'yes' === $_POST['bbp_reply_close_topic'] ) { |
| 232 | if ( current_user_can( 'moderate', $topic_id ) && bbp_is_topic_open( $topic_id ) ) { |
| 233 | bbp_close_topic( $topic_id ); |
| 234 | } |
| 235 | } |
| 236 | } |
| 237 | |