WordPress.org

Make WordPress Core

Ticket #4247: stp.php.patch

File stp.php.patch, 5.2 KB (added by bloertscher, 11 years ago)
  • wp-admin/import/stp.php

     
     1<?php
     2
     3class STP_Import {
     4       
     5        function header()  {
     6                echo '<div class="wrap">';
     7                echo '<h2>'.__('Import Simple Tagging').'</h2>';
     8                echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'<br /><br /></p>';
     9        }
     10
     11        function footer() {
     12                echo '</div>';
     13        }
     14
     15        function greet() {
     16                echo '<div class="narrow">';
     17                echo '<p>'.__('Howdy! This imports tags from an existing Simple Tagging 1.6.2 installation into this blog using the new WordPress native tagging structure.').'</p>';
     18                echo '<p>'.__('This has not been tested on any other versions of Simple Tagging. Mileage may vary.').'</p>';
     19                echo '<p>'.__('To accommodate larger databases for those tag-crazy authors out there, we have made this into an easy 4-step program to help you kick that nasty Simple Tagging habit. Just keep clicking along and we will let you know when you are in the clear!').'</p>';
     20                echo '<p><strong>'.__('Don&#8217;t be stupid - backup your database before proceeding!').'</strong></p>';
     21                echo '<form action="admin.php?import=stp&amp;step=1" method="post">';
     22                echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 1 &raquo;').'" /></p>';
     23                echo '</form>';
     24                echo '</div>';
     25        }
     26       
     27       
     28        function dispatch () {
     29                if ( empty( $_GET['step'] ) ) {
     30                        $step = 0;
     31                } else {
     32                        $step = (int) $_GET['step'];
     33                }
     34               
     35                // load the header
     36                $this->header();
     37               
     38                switch ( $step ) {
     39                        case 0 :
     40                                $this->greet();
     41                                break;
     42                        case 1 :
     43                                $this->import_posts();
     44                                break;
     45                        case 2:
     46                                $this->import_t2p();
     47                                break;
     48                        case 3:
     49                                $this->cleanup_import();
     50                                break;
     51                }
     52               
     53                // load the footer
     54                $this->footer();
     55        }
     56       
     57       
     58        function import_posts ( ) {
     59                echo '<div class="narrow">';
     60                echo '<p><h3>'.__('Reading STP Post Tags&#8230;').'</h3></p>';
     61
     62                // read in all the STP tag -> post settings
     63                $posts = $this->get_stp_posts();
     64
     65                // if we didn't get any tags back, that's all there is folks!
     66                if ( !is_array($posts) ) {
     67                        echo '<p>' . __('No posts were found to have tags!') . '</p>';
     68                        return false;
     69                }
     70                else {
     71
     72                        // if there's an existing entry, delete it
     73                        if ( get_option('stpimp_posts') ) {
     74                                delete_option('stpimp_posts');
     75                        }
     76
     77                        add_option('stpimp_posts', $posts);
     78                               
     79
     80                        $count = count($posts);
     81                               
     82                        echo '<p>' . sprintf( __('Done! <strong>%s</strong> tag to post relationships were read.'), $count ) . '<br /></p>';
     83                               
     84                }
     85
     86                echo '<form action="admin.php?import=stp&amp;step=2" method="post">';
     87                echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 2 &raquo;').'" /></p>';
     88                echo '</form>';
     89                echo '</div>';
     90
     91        }
     92       
     93       
     94        function import_t2p ( ) {
     95
     96                echo '<div class="narrow">';
     97                echo '<p><h3>'.__('Adding Tags to Posts&#8230;').'</h3></p>';
     98
     99                // run that funky magic!
     100                $tags_added = $this->tag2post();
     101               
     102                echo '<p>' . sprintf( __('Done! <strong>%s</strong> tags where added!'), $tags_added ) . '<br /></p>';
     103
     104                echo '<form action="admin.php?import=stp&amp;step=3" method="post">';
     105                echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 3 &raquo;').'" /></p>';
     106                echo '</form>';
     107                echo '</div>';
     108
     109        }
     110       
     111       
     112        function get_stp_posts ( ) {
     113               
     114                global $wpdb;
     115               
     116                // read in all the posts from the STP post->tag table: should be wp_post2tag
     117                $posts_query = "SELECT post_id, tag_name FROM " . $wpdb->prefix . "stp_tags";
     118               
     119                $posts = $wpdb->get_results($posts_query);
     120               
     121                return $posts;
     122               
     123        }
     124       
     125       
     126        function tag2post ( ) {
     127               
     128                // get the tags and posts we imported in the last 2 steps
     129                $posts = get_option('stpimp_posts');
     130               
     131                // null out our results
     132                $tags_added = 0;
     133               
     134                // loop through each post and add its tags to the db
     135                foreach ( $posts as $this_post ) {
     136                       
     137                        $the_post = (int) $this_post->post_id;
     138                        $the_tag = $this_post->tag_name;
     139
     140                        // try to add the tag
     141                        wp_add_post_tags($the_post, $the_tag);
     142
     143                        $tags_added++;
     144                       
     145                }
     146               
     147                // that's it, all posts should be linked to their tags properly, pending any errors we just spit out!
     148                return $tags_added;
     149               
     150               
     151        }
     152       
     153       
     154        function cleanup_import ( ) {
     155               
     156                delete_option('stpimp_posts');
     157               
     158                $this->done();
     159               
     160        }
     161       
     162       
     163        function done ( ) {
     164               
     165                echo '<div class="narrow">';
     166                echo '<p><h3>'.__('Import Complete!').'</h3></p>';
     167               
     168                echo '<p>' . __('OK, so we lied about this being a 4-step program! You&#8217;re done!') . '</p>';
     169               
     170                echo '<p>' . __('Now wasn&#8217;t that easy?') . '</p>';
     171               
     172                echo '</div>';
     173               
     174        }
     175       
     176
     177        function STP_Import ( ) {
     178               
     179                // Nothing.
     180               
     181        }
     182       
     183}
     184
     185
     186// create the import object
     187$stp_import = new STP_Import();
     188
     189// add it to the import page!
     190register_importer('stp', 'Simple Tagging', __('Import Simple Tagging tags into the new native tagging structure.'), array($stp_import, 'dispatch'));
     191
     192?>