Пример #1
0
    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) {
Пример #2
0
 /**
  * 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;
 }