web/wp-admin/import/wp-cat2tag.php
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
<?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
 * WordPress Categories to Tags Converter.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
 * @package WordPress
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
 * @subpackage Importer
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
/**
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
 * WordPress categories to tags converter class.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
 * Will convert WordPress categories to tags, removing the category after the
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
 * process is complete and updating all posts to switch to the tag.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
 *
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
 * @since unknown
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
 */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
class WP_Categories_to_Tags {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
	var $categories_to_convert = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
	var $all_categories = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
	var $tags_to_convert = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
	var $all_tags = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
	var $hybrids_ids = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
	function header() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
		echo '<div class="wrap">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
		if ( ! current_user_can('manage_categories') ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
			echo '<div class="narrow">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
			echo '<p>' . __('Cheatin&#8217; uh?') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
			echo '</div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
		} else { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
			<div class="tablenav"><p style="margin:4px"><a style="display:inline;" class="button-secondary" href="admin.php?import=wp-cat2tag"><?php _e( "Categories to Tags" ); ?></a>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
			<a style="display:inline;" class="button-secondary" href="admin.php?import=wp-cat2tag&amp;step=3"><?php _e( "Tags to Categories" ); ?></a></p></div>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
<?php	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
	function footer() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
		echo '</div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
	function populate_cats() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
		$categories = get_categories('get=all');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
		foreach ( $categories as $category ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
			$this->all_categories[] = $category;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
			if ( is_term( $category->slug, 'post_tag' ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
				$this->hybrids_ids[] = $category->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
	function populate_tags() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
		$tags = get_terms( array('post_tag'), 'get=all' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
		foreach ( $tags as $tag ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
			$this->all_tags[] = $tag;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
			if ( is_term( $tag->slug, 'category' ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
				$this->hybrids_ids[] = $tag->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
	function categories_tab() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
		$this->populate_cats();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
		$cat_num = count($this->all_categories);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
		echo '<br class="clear" />';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
		if ( $cat_num > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
			screen_icon();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
			echo '<h2>' . sprintf( _n( 'Convert Category to Tag.', 'Convert Categories (%d) to Tags.', $cat_num ), $cat_num ) . '</h2>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
			echo '<div class="narrow">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
			echo '<p>' . __('Hey there. Here you can selectively convert existing categories to tags. To get started, check the categories you wish to be converted, then click the Convert button.') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
			echo '<p>' . __('Keep in mind that if you convert a category with child categories, the children become top-level orphans.') . '</p></div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
			$this->categories_form();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
			echo '<p>'.__('You have no categories to convert!').'</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
	function categories_form() { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
<script type="text/javascript">
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
/* <![CDATA[ */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
var checkflag = "false";
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
function check_all_rows() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
	field = document.catlist;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
	if ( 'false' == checkflag ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
		for ( i = 0; i < field.length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
			if ( 'cats_to_convert[]' == field[i].name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
				field[i].checked = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		checkflag = 'true';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
		return '<?php _e('Uncheck All') ?>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
		for ( i = 0; i < field.length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
			if ( 'cats_to_convert[]' == field[i].name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
				field[i].checked = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
		checkflag = 'false';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
		return '<?php _e('Check All') ?>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
/* ]]> */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
</script>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
<form name="catlist" id="catlist" action="admin.php?import=wp-cat2tag&amp;step=2" method="post">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
<p><input type="button" class="button-secondary" value="<?php esc_attr_e('Check All'); ?>" onclick="this.value=check_all_rows()" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
<?php wp_nonce_field('import-cat2tag'); ?></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
<ul style="list-style:none">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
<?php	$hier = _get_term_hierarchy('category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
		foreach ($this->all_categories as $category) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
			$category = sanitize_term( $category, 'category', 'display' );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
			if ( (int) $category->parent == 0 ) { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
	<li><label><input type="checkbox" name="cats_to_convert[]" value="<?php echo intval($category->term_id); ?>" /> <?php echo $category->name . ' (' . $category->count . ')'; ?></label><?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
				 if ( in_array( intval($category->term_id),  $this->hybrids_ids ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
				 	echo ' <a href="#note"> * </a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
				if ( isset($hier[$category->term_id]) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
					$this->_category_children($category, $hier); ?></li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
<?php		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
		} ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
</ul>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
<?php	if ( ! empty($this->hybrids_ids) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
			echo '<p><a name="note"></a>' . __('* This category is also a tag. Converting it will add that tag to all posts that are currently in the category.') . '</p>'; ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
<p class="submit"><input type="submit" name="submit" class="button" value="<?php esc_attr_e('Convert Categories to Tags'); ?>" /></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
</form>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
<?php }
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
	function tags_tab() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
		$this->populate_tags();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
		$tags_num = count($this->all_tags);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
		echo '<br class="clear" />';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
		if ( $tags_num > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
			screen_icon();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
			echo '<h2>' . sprintf( _n( 'Convert Tag to Category.', 'Convert Tags (%d) to Categories.', $tags_num ), $tags_num ) . '</h2>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
			echo '<div class="narrow">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
			echo '<p>' . __('Here you can selectively convert existing tags to categories. To get started, check the tags you wish to be converted, then click the Convert button.') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
			echo '<p>' . __('The newly created categories will still be associated with the same posts.') . '</p></div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
			$this->tags_form();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
			echo '<p>'.__('You have no tags to convert!').'</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
	function tags_form() { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
<script type="text/javascript">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
/* <![CDATA[ */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
var checktags = "false";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
function check_all_tagrows() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
	field = document.taglist;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
	if ( 'false' == checktags ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
		for ( i = 0; i < field.length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
			if ( 'tags_to_convert[]' == field[i].name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
				field[i].checked = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
		checktags = 'true';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
		return '<?php _e('Uncheck All') ?>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
		for ( i = 0; i < field.length; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
			if ( 'tags_to_convert[]' == field[i].name )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
				field[i].checked = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
		checktags = 'false';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
		return '<?php _e('Check All') ?>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
/* ]]> */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
</script>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
<form name="taglist" id="taglist" action="admin.php?import=wp-cat2tag&amp;step=4" method="post">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
<p><input type="button" class="button-secondary" value="<?php esc_attr_e('Check All'); ?>" onclick="this.value=check_all_tagrows()" />
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
<?php wp_nonce_field('import-cat2tag'); ?></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
<ul style="list-style:none">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
<?php	foreach ( $this->all_tags as $tag ) { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
	<li><label><input type="checkbox" name="tags_to_convert[]" value="<?php echo intval($tag->term_id); ?>" /> <?php echo esc_attr($tag->name) . ' (' . $tag->count . ')'; ?></label><?php if ( in_array( intval($tag->term_id),  $this->hybrids_ids ) ) echo ' <a href="#note"> * </a>'; ?></li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
<?php	} ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
</ul>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
<?php	if ( ! empty($this->hybrids_ids) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
			echo '<p><a name="note"></a>' . __('* This tag is also a category. When converted, all posts associated with the tag will also be in the category.') . '</p>'; ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
<p class="submit"><input type="submit" name="submit_tags" class="button" value="<?php esc_attr_e('Convert Tags to Categories'); ?>" /></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
</form>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
<?php }
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
	function _category_children($parent, $hier) { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
		<ul style="list-style:none">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
<?php	foreach ($hier[$parent->term_id] as $child_id) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
			$child =& get_category($child_id); ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
		<li><label><input type="checkbox" name="cats_to_convert[]" value="<?php echo intval($child->term_id); ?>" /> <?php echo $child->name . ' (' . $child->count . ')'; ?></label><?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
			if ( in_array( intval($child->term_id), $this->hybrids_ids ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
				echo ' <a href="#note"> * </a>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
			if ( isset($hier[$child->term_id]) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
				$this->_category_children($child, $hier); ?></li>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
<?php	} ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
		</ul><?php
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
	function _category_exists($cat_id) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
		$cat_id = (int) $cat_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
		$maybe_exists = category_exists($cat_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
		if ( $maybe_exists ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
			return true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
			return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
	function convert_categories() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
		global $wpdb;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
		if ( (!isset($_POST['cats_to_convert']) || !is_array($_POST['cats_to_convert'])) && empty($this->categories_to_convert)) { ?>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
			<div class="narrow">
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
			<p><?php printf(__('Uh, oh. Something didn&#8217;t work. Please <a href="%s">try again</a>.'), 'admin.php?import=wp-cat2tag'); ?></p>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
			</div>
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
<?php		return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
		if ( empty($this->categories_to_convert) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
			$this->categories_to_convert = $_POST['cats_to_convert'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
		$hier = _get_term_hierarchy('category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
		$hybrid_cats = $clear_parents = $parents = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
		$clean_term_cache = $clean_cat_cache = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
		$default_cat = get_option('default_category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
		echo '<ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
		foreach ( (array) $this->categories_to_convert as $cat_id) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
			$cat_id = (int) $cat_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
			if ( ! $this->_category_exists($cat_id) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
				echo '<li>' . sprintf( __('Category %s doesn&#8217;t exist!'),  $cat_id ) . "</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
				$category =& get_category($cat_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
				echo '<li>' . sprintf(__('Converting category <strong>%s</strong> ... '),  $category->name);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
				// If the category is the default, leave category in place and create tag.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
				if ( $default_cat == $category->term_id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
					if ( ! ($id = is_term( $category->slug, 'post_tag' ) ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
						$id = wp_insert_term($category->name, 'post_tag', array('slug' => $category->slug));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
					$id = $id['term_taxonomy_id'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
					$posts = get_objects_in_term($category->term_id, 'category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
					$term_order = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
					foreach ( $posts as $post ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
						$values[] = $wpdb->prepare( "(%d, %d, %d)", $post, $id, $term_order);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
						clean_post_cache($post);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
					if ( $values ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
						$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'post_tag'", $category->count, $category->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
					echo __('Converted successfully.') . "</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
					continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
				// if tag already exists, add it to all posts in the category
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
				if ( $tag_ttid = $wpdb->get_var( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'post_tag'", $category->term_id) ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
					$objects_ids = get_objects_in_term($category->term_id, 'category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
					$tag_ttid = (int) $tag_ttid;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
					$term_order = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
					foreach ( $objects_ids as $object_id )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
						$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tag_ttid, $term_order);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
					if ( $values ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
						$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tag_ttid) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
						$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'post_tag'", $count, $category->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
					echo __('Tag added to all posts in this category.') . " *</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
					$hybrid_cats = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
					$clean_term_cache[] = $category->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
					$clean_cat_cache[] = $category->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
					continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
				$tt_ids = $wpdb->get_col( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'category'", $category->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
				if ( $tt_ids ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   308
					$posts = $wpdb->get_col("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN (" . join(',', $tt_ids) . ") GROUP BY object_id");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   309
					foreach ( (array) $posts as $post )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   310
						clean_post_cache($post);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   311
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   312
0d28b7c10758 First commit
ymh
parents:
diff changeset
   313
				// Change the category to a tag.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   314
				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET taxonomy = 'post_tag' WHERE term_id = %d AND taxonomy = 'category'", $category->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   315
0d28b7c10758 First commit
ymh
parents:
diff changeset
   316
				// Set all parents to 0 (root-level) if their parent was the converted tag
0d28b7c10758 First commit
ymh
parents:
diff changeset
   317
				$parents = $wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET parent = 0 WHERE parent = %d AND taxonomy = 'category'", $category->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   318
0d28b7c10758 First commit
ymh
parents:
diff changeset
   319
				if ( $parents ) $clear_parents = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   320
				$clean_cat_cache[] = $category->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   321
				echo __('Converted successfully.') . "</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   322
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   323
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   324
		echo '</ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   325
0d28b7c10758 First commit
ymh
parents:
diff changeset
   326
		if ( ! empty($clean_term_cache) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   327
			$clean_term_cache = array_unique(array_values($clean_term_cache));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   328
			clean_term_cache($clean_term_cache, 'post_tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   329
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   330
0d28b7c10758 First commit
ymh
parents:
diff changeset
   331
		if ( ! empty($clean_cat_cache) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   332
			$clean_cat_cache = array_unique(array_values($clean_cat_cache));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   333
			clean_term_cache($clean_cat_cache, 'category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   334
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   335
0d28b7c10758 First commit
ymh
parents:
diff changeset
   336
		if ( $clear_parents ) delete_option('category_children');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   337
0d28b7c10758 First commit
ymh
parents:
diff changeset
   338
		if ( $hybrid_cats )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   339
			echo '<p>' . sprintf( __('* This category is also a tag. The converter has added that tag to all posts currently in the category. If you want to remove it, please confirm that all tags were added successfully, then delete it from the <a href="%s">Manage Categories</a> page.'), 'categories.php') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   340
		echo '<p>' . sprintf( __('We&#8217;re all done here, but you can always <a href="%s">convert more</a>.'), 'admin.php?import=wp-cat2tag' ) . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   341
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   342
0d28b7c10758 First commit
ymh
parents:
diff changeset
   343
	function convert_tags() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   344
		global $wpdb;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   345
0d28b7c10758 First commit
ymh
parents:
diff changeset
   346
		if ( (!isset($_POST['tags_to_convert']) || !is_array($_POST['tags_to_convert'])) && empty($this->tags_to_convert)) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   347
			echo '<div class="narrow">';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   348
			echo '<p>' . sprintf(__('Uh, oh. Something didn&#8217;t work. Please <a href="%s">try again</a>.'), 'admin.php?import=wp-cat2tag&amp;step=3') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   349
			echo '</div>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   350
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   351
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   352
0d28b7c10758 First commit
ymh
parents:
diff changeset
   353
		if ( empty($this->tags_to_convert) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   354
			$this->tags_to_convert = $_POST['tags_to_convert'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   355
0d28b7c10758 First commit
ymh
parents:
diff changeset
   356
		$hybrid_tags = $clear_parents = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   357
		$clean_cat_cache = $clean_term_cache = array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   358
		$default_cat = get_option('default_category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   359
		echo '<ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   360
0d28b7c10758 First commit
ymh
parents:
diff changeset
   361
		foreach ( (array) $this->tags_to_convert as $tag_id) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   362
			$tag_id = (int) $tag_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   363
0d28b7c10758 First commit
ymh
parents:
diff changeset
   364
			if ( $tag = get_term( $tag_id, 'post_tag' ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   365
				printf('<li>' . __('Converting tag <strong>%s</strong> ... '),  $tag->name);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   366
0d28b7c10758 First commit
ymh
parents:
diff changeset
   367
				if ( $cat_ttid = $wpdb->get_var( $wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'category'", $tag->term_id) ) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   368
					$objects_ids = get_objects_in_term($tag->term_id, 'post_tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   369
					$cat_ttid = (int) $cat_ttid;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   370
					$term_order = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   371
0d28b7c10758 First commit
ymh
parents:
diff changeset
   372
					foreach ( $objects_ids as $object_id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   373
						$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $cat_ttid, $term_order);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   374
						clean_post_cache($object_id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   375
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   376
0d28b7c10758 First commit
ymh
parents:
diff changeset
   377
					if ( $values ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   378
						$wpdb->query("INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join(',', $values) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   379
0d28b7c10758 First commit
ymh
parents:
diff changeset
   380
						if ( $default_cat != $tag->term_id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   381
							$count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tag->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   382
							$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET count = %d WHERE term_id = %d AND taxonomy = 'category'", $count, $tag->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   383
						}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   384
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   385
0d28b7c10758 First commit
ymh
parents:
diff changeset
   386
					$hybrid_tags = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   387
					$clean_term_cache[] = $tag->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   388
					$clean_cat_cache[] = $tag->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   389
					echo __('All posts were added to the category with the same name.') . " *</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   390
0d28b7c10758 First commit
ymh
parents:
diff changeset
   391
					continue;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   392
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   393
0d28b7c10758 First commit
ymh
parents:
diff changeset
   394
				// Change the tag to a category.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   395
				$parent = $wpdb->get_var( $wpdb->prepare("SELECT parent FROM $wpdb->term_taxonomy WHERE term_id = %d AND taxonomy = 'post_tag'", $tag->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   396
				if ( 0 == $parent || (0 < (int) $parent && $this->_category_exists($parent)) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   397
					$reset_parent = '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   398
					$clear_parents = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   399
				} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   400
					$reset_parent = ", parent = '0'";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   401
0d28b7c10758 First commit
ymh
parents:
diff changeset
   402
				$wpdb->query( $wpdb->prepare("UPDATE $wpdb->term_taxonomy SET taxonomy = 'category' $reset_parent WHERE term_id = %d AND taxonomy = 'post_tag'", $tag->term_id) );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   403
0d28b7c10758 First commit
ymh
parents:
diff changeset
   404
				$clean_term_cache[] = $tag->term_id;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   405
				$clean_cat_cache[] = $cat['term_id'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   406
				echo __('Converted successfully.') . "</li>\n";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   407
0d28b7c10758 First commit
ymh
parents:
diff changeset
   408
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   409
				printf( '<li>' . __('Tag #%s doesn&#8217;t exist!') . "</li>\n",  $tag_id );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   410
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   411
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   412
0d28b7c10758 First commit
ymh
parents:
diff changeset
   413
		if ( ! empty($clean_term_cache) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   414
			$clean_term_cache = array_unique(array_values($clean_term_cache));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   415
			clean_term_cache($clean_term_cache, 'post_tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   416
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   417
0d28b7c10758 First commit
ymh
parents:
diff changeset
   418
		if ( ! empty($clean_cat_cache) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   419
			$clean_cat_cache = array_unique(array_values($clean_cat_cache));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   420
			clean_term_cache($clean_term_cache, 'category');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   421
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   422
0d28b7c10758 First commit
ymh
parents:
diff changeset
   423
		if ( $clear_parents ) delete_option('category_children');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   424
0d28b7c10758 First commit
ymh
parents:
diff changeset
   425
		echo '</ul>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   426
		if ( $hybrid_tags )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   427
			echo '<p>' . sprintf( __('* This tag is also a category. The converter has added all posts from it to the category. If you want to remove it, please confirm that all posts were added successfully, then delete it from the <a href="%s">Manage Tags</a> page.'), 'edit-tags.php') . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   428
		echo '<p>' . sprintf( __('We&#8217;re all done here, but you can always <a href="%s">convert more</a>.'), 'admin.php?import=wp-cat2tag&amp;step=3' ) . '</p>';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   429
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   430
0d28b7c10758 First commit
ymh
parents:
diff changeset
   431
	function init() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   432
0d28b7c10758 First commit
ymh
parents:
diff changeset
   433
		$step = (isset($_GET['step'])) ? (int) $_GET['step'] : 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   434
0d28b7c10758 First commit
ymh
parents:
diff changeset
   435
		$this->header();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   436
0d28b7c10758 First commit
ymh
parents:
diff changeset
   437
		if ( current_user_can('manage_categories') ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   438
0d28b7c10758 First commit
ymh
parents:
diff changeset
   439
			switch ($step) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   440
				case 1 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   441
					$this->categories_tab();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   442
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   443
0d28b7c10758 First commit
ymh
parents:
diff changeset
   444
				case 2 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   445
					check_admin_referer('import-cat2tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   446
					$this->convert_categories();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   447
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   448
0d28b7c10758 First commit
ymh
parents:
diff changeset
   449
				case 3 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   450
					$this->tags_tab();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   451
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   452
0d28b7c10758 First commit
ymh
parents:
diff changeset
   453
				case 4 :
0d28b7c10758 First commit
ymh
parents:
diff changeset
   454
					check_admin_referer('import-cat2tag');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   455
					$this->convert_tags();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   456
				break;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   457
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   458
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   459
0d28b7c10758 First commit
ymh
parents:
diff changeset
   460
		$this->footer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   461
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   462
0d28b7c10758 First commit
ymh
parents:
diff changeset
   463
	function WP_Categories_to_Tags() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   464
		// Do nothing.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   465
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   466
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   467
0d28b7c10758 First commit
ymh
parents:
diff changeset
   468
$wp_cat2tag_importer = new WP_Categories_to_Tags();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   469
0d28b7c10758 First commit
ymh
parents:
diff changeset
   470
register_importer('wp-cat2tag', __('Categories and Tags Converter'), __('Convert existing categories to tags or tags to categories, selectively.'), array(&$wp_cat2tag_importer, 'init'));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   471
0d28b7c10758 First commit
ymh
parents:
diff changeset
   472
?>