die('You are not allowed to call this page directly.'); } $action_status = array('message' => '', 'status' => 'ok'); if (isset($_POST['tag_action'])) { //TODO:Include nonce field if ($_POST['tag_action'] == 'renametag') { $oldtag = isset($_POST['renametag_old']) ? $_POST['renametag_old'] : ''; $newtag = isset($_POST['renametag_new']) ? $_POST['renametag_new'] : ''; $action_status = nggTags::rename_tags($oldtag, $newtag); } elseif ($_POST['tag_action'] == 'deletetag') { $todelete = isset($_POST['deletetag_name']) ? $_POST['deletetag_name'] : ''; $action_status = nggTags::delete_tags($todelete); } elseif ($_POST['tag_action'] == 'editslug') { $matchtag = isset($_POST['tagname_match']) ? $_POST['tagname_match'] : ''; $newslug = isset($_POST['tagslug_new']) ? $_POST['tagslug_new'] : ''; $action_status = nggTags::edit_tag_slug($matchtag, $newslug); } } // Som useful variables $admin_base_url = admin_url() . 'admin.php?page='; $nb_tags = 50; // Number of tags to show on a single page // Manage URL $sort_order = isset($_GET['tag_sortorder']) ? esc_attr(stripslashes($_GET['tag_sortorder'])) : 'desc'; $search_url = isset($_GET['search']) ? '&search=' . stripslashes($_GET['search']) : ''; $action_url = $admin_base_url . esc_attr(stripslashes($_GET['page'])) . '&tag_sortorder=' . $sort_order . $search_url; // Tags Filters $order_array = array('desc' => __('Most popular', 'nggallery'), 'asc' => __('Least used', 'nggallery'), 'natural' => __('Alphabetical', 'nggallery')); // Build Tags Param $param = 'hide_empty=false'; switch ($sort_order) {
/** * Rename tags */ function rename_tags($old = '', $new = '') { $return_value = array('status' => 'ok', 'message' => ''); if (trim(str_replace(',', '', stripslashes($new))) == '') { $return_value['message'] = __('No new tag specified!', 'nggallery'); $return_value['status'] = 'error'; return $return_value; } // String to array $old_tags = explode(',', $old); $new_tags = explode(',', $new); // Remove empty element and trim $old_tags = array_filter($old_tags, 'nggtags_delete_empty_element'); $new_tags = array_filter($new_tags, 'nggtags_delete_empty_element'); // If old/new tag are empty => exit ! if (empty($old_tags) || empty($new_tags)) { $return_value['message'] = __('No new/old valid tag specified!', 'nggallery'); $return_value['status'] = 'error'; return $return_value; } $counter = 0; if (count($old_tags) == count($new_tags)) { // Rename only foreach ((array) $old_tags as $i => $old_tag) { $new_name = $new_tags[$i]; // Get term by name $term = get_term_by('name', $old_tag, 'ngg_tag'); if (!$term) { continue; } // Get objects from term ID $objects_id = get_objects_in_term($term->term_id, 'ngg_tag', array('fields' => 'all_with_object_id')); // Delete old term wp_delete_term($term->term_id, 'ngg_tag'); // Set objects to new term ! (Append no replace) foreach ((array) $objects_id as $object_id) { wp_set_object_terms($object_id, $new_name, 'ngg_tag', true); } // Clean cache clean_object_term_cache($objects_id, 'ngg_tag'); clean_term_cache($term->term_id, 'ngg_tag'); // Increment $counter++; } if ($counter == 0) { $return_value['message'] = __('No tag renamed.', 'nggallery'); } else { $return_value['message'] = sprintf(__('Renamed tag(s) «%1$s» to «%2$s»', 'nggallery'), $old, $new); } } elseif (count($new_tags) == 1) { // Merge // Set new tag $new_tag = $new_tags[0]; if (empty($new_tag)) { $return_value['message'] = __('No valid new tag.', 'nggallery'); $return_value['status'] = 'error'; return $return_value; } // Get terms ID from old terms names $terms_id = array(); foreach ((array) $old_tags as $old_tag) { $term = get_term_by('name', addslashes($old_tag), 'ngg_tag'); $terms_id[] = (int) $term->term_id; } // Get objects from terms ID $objects_id = get_objects_in_term($terms_id, 'ngg_tag', array('fields' => 'all_with_object_id')); // No objects ? exit ! if (!$objects_id) { $return_value['message'] = __('No objects (post/page) found for specified old tags.', 'nggallery'); $return_value['status'] = 'error'; return $return_value; } // Delete old terms foreach ((array) $terms_id as $term_id) { wp_delete_term($term_id, 'ngg_tag'); } // Set objects to new term ! (Append no replace) foreach ((array) $objects_id as $object_id) { wp_set_object_terms($object_id, $new_tag, 'ngg_tag', true); $counter++; } // Test if term is also a category if (term_exists($new_tag, 'category')) { // Edit the slug to use the new term $slug = sanitize_title($new_tag); nggTags::edit_tag_slug($new_tag, $slug); unset($slug); } // Clean cache clean_object_term_cache($objects_id, 'ngg_tag'); clean_term_cache($terms_id, 'ngg_tag'); if ($counter == 0) { $return_value['message'] = __('No tag merged.', 'nggallery'); } else { $return_value['message'] = sprintf(__('Merge tag(s) «%1$s» to «%2$s». %3$s objects edited.', 'nggallery'), $old, $new, $counter); } } else { // Error $return_value['message'] = sprintf(__('Error. Not enough tags provided to rename or merge.', 'nggallery'), $old); $return_value['status'] = 'error'; } do_action('ngg_manage_tags', $new_tags); return $return_value; }