bbp_edit_topic_tag_handler( string $action = '' )
Handles the front end tag management (renaming, merging, destroying)
Description Description
Parameters Parameters
- $action
-
(Optional) The requested action to compare this function to
Default value: ''
Source Source
File: includes/topics/functions.php
function bbp_edit_topic_tag_handler( $action = '' ) { // Bail if required POST actions aren't passed if ( empty( $_POST['tag-id'] ) ) { return; } // Setup possible get actions $possible_actions = array( 'bbp-update-topic-tag', 'bbp-merge-topic-tag', 'bbp-delete-topic-tag' ); // Bail if actions aren't meant for this function if ( ! in_array( $action, $possible_actions, true ) ) { return; } // Setup vars $tag_id = (int) $_POST['tag-id']; $tag = get_term( $tag_id, bbp_get_topic_tag_tax_id() ); // Tag does not exist if ( is_wp_error( $tag ) && $tag->get_error_message() ) { bbp_add_error( 'bbp_manage_topic_invalid_tag', sprintf( __( '<strong>ERROR</strong>: The following problem(s) have been found while getting the tag: %s', 'bbpress' ), $tag->get_error_message() ) ); return; } // What action are we trying to perform? switch ( $action ) { // Update tag case 'bbp-update-topic-tag' : // Nonce check if ( ! bbp_verify_nonce_request( 'update-tag_' . $tag_id ) ) { bbp_add_error( 'bbp_manage_topic_tag_update_nonce', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); return; } // Can user edit topic tags? if ( ! current_user_can( 'edit_topic_tag', $tag_id ) ) { bbp_add_error( 'bbp_manage_topic_tag_update_permission', __( '<strong>ERROR</strong>: You do not have permission to edit the topic tags.', 'bbpress' ) ); return; } // No tag name was provided if ( empty( $_POST['tag-name'] ) || ! $name = $_POST['tag-name'] ) { bbp_add_error( 'bbp_manage_topic_tag_update_name', __( '<strong>ERROR</strong>: You need to enter a tag name.', 'bbpress' ) ); return; } // Attempt to update the tag $slug = ! empty( $_POST['tag-slug'] ) ? $_POST['tag-slug'] : ''; $description = ! empty( $_POST['tag-description'] ) ? $_POST['tag-description'] : ''; $tag = wp_update_term( $tag_id, bbp_get_topic_tag_tax_id(), array( 'name' => $name, 'slug' => $slug, 'description' => $description ) ); // Cannot update tag if ( is_wp_error( $tag ) && $tag->get_error_message() ) { bbp_add_error( 'bbp_manage_topic_tag_update_error', sprintf( __( '<strong>ERROR</strong>: The following problem(s) have been found while updating the tag: %s', 'bbpress' ), $tag->get_error_message() ) ); return; } // Redirect $redirect = get_term_link( $tag_id, bbp_get_topic_tag_tax_id() ); // Update counts, etc... do_action( 'bbp_update_topic_tag', $tag_id, $tag, $name, $slug, $description ); break; // Merge two tags case 'bbp-merge-topic-tag' : // Nonce check if ( ! bbp_verify_nonce_request( 'merge-tag_' . $tag_id ) ) { bbp_add_error( 'bbp_manage_topic_tag_merge_nonce', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); return; } // Can user edit topic tags? if ( ! current_user_can( 'edit_topic_tags' ) ) { bbp_add_error( 'bbp_manage_topic_tag_merge_permission', __( '<strong>ERROR</strong>: You do not have permission to edit the topic tags.', 'bbpress' ) ); return; } // No tag name was provided if ( empty( $_POST['tag-existing-name'] ) || ! $name = $_POST['tag-existing-name'] ) { bbp_add_error( 'bbp_manage_topic_tag_merge_name', __( '<strong>ERROR</strong>: You need to enter a tag name.', 'bbpress' ) ); return; } // If term does not exist, create it if ( ! $tag = term_exists( $name, bbp_get_topic_tag_tax_id() ) ) { $tag = wp_insert_term( $name, bbp_get_topic_tag_tax_id() ); } // Problem inserting the new term if ( is_wp_error( $tag ) && $tag->get_error_message() ) { bbp_add_error( 'bbp_manage_topic_tag_merge_error', sprintf( __( '<strong>ERROR</strong>: The following problem(s) have been found while merging the tags: %s', 'bbpress' ), $tag->get_error_message() ) ); return; } // Merging in to... $to_tag = $tag['term_id']; // Attempting to merge a tag into itself if ( $tag_id === $to_tag ) { bbp_add_error( 'bbp_manage_topic_tag_merge_same', __( '<strong>ERROR</strong>: The tags which are being merged can not be the same.', 'bbpress' ) ); return; } // Delete the old term $tag = wp_delete_term( $tag_id, bbp_get_topic_tag_tax_id(), array( 'default' => $to_tag, 'force_default' => true ) ); // Error merging the terms if ( is_wp_error( $tag ) && $tag->get_error_message() ) { bbp_add_error( 'bbp_manage_topic_tag_merge_error', sprintf( __( '<strong>ERROR</strong>: The following problem(s) have been found while merging the tags: %s', 'bbpress' ), $tag->get_error_message() ) ); return; } // Redirect $redirect = get_term_link( (int) $to_tag, bbp_get_topic_tag_tax_id() ); // Update counts, etc... do_action( 'bbp_merge_topic_tag', $tag_id, $to_tag, $tag ); break; // Delete tag case 'bbp-delete-topic-tag' : // Nonce check if ( ! bbp_verify_nonce_request( 'delete-tag_' . $tag_id ) ) { bbp_add_error( 'bbp_manage_topic_tag_delete_nonce', __( '<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress' ) ); return; } // Can user delete topic tags? if ( ! current_user_can( 'delete_topic_tag', $tag_id ) ) { bbp_add_error( 'bbp_manage_topic_tag_delete_permission', __( '<strong>ERROR</strong>: You do not have permission to delete the topic tags.', 'bbpress' ) ); return; } // Attempt to delete term $tag = wp_delete_term( $tag_id, bbp_get_topic_tag_tax_id() ); // Error deleting term if ( is_wp_error( $tag ) && $tag->get_error_message() ) { bbp_add_error( 'bbp_manage_topic_tag_delete_error', sprintf( __( '<strong>ERROR</strong>: The following problem(s) have been found while deleting the tag: %s', 'bbpress' ), $tag->get_error_message() ) ); return; } // We don't have any other place to go other than home! Or we may die because of the 404 disease $redirect = bbp_get_forums_url(); // Update counts, etc... do_action( 'bbp_delete_topic_tag', $tag_id, $tag ); break; } /** Successful Moderation *************************************************/ // Redirect back $redirect = ( ! empty( $redirect ) && ! is_wp_error( $redirect ) ) ? $redirect : home_url(); bbp_redirect( $redirect ); }
Changelog Changelog
Version | Description |
---|---|
2.0.0 | Introduced. |