home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Blogs / wordpress2.6.exe / wordpress2.6 / wp-admin / import / utw.php < prev    next >
Encoding:
PHP Script  |  2008-02-28  |  6.5 KB  |  277 lines

  1. <?php
  2.  
  3. class UTW_Import {
  4.  
  5.     function header()  {
  6.         echo '<div class="wrap">';
  7.         echo '<h2>'.__('Import Ultimate Tag Warrior').'</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 Ultimate Tag Warrior 3 into WordPress tags.').'</p>';
  18.         echo '<p>'.__('This has not been tested on any other versions of Ultimate Tag Warrior. 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 5-step program to help you kick that nasty UTW habit. Just keep clicking along and we will let you know when you are in the clear!').'</p>';
  20.         echo '<p><strong>'.__('Don’t be stupid - backup your database before proceeding!').'</strong></p>';
  21.         echo '<form action="admin.php?import=utw&step=1" method="post">';
  22.         echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 1').'" /></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.         if ( $step > 1 )
  36.             check_admin_referer('import-utw');
  37.  
  38.         // load the header
  39.         $this->header();
  40.  
  41.         switch ( $step ) {
  42.             case 0 :
  43.                 $this->greet();
  44.                 break;
  45.             case 1 :
  46.                 $this->import_tags();
  47.                 break;
  48.             case 2 :
  49.                 $this->import_posts();
  50.                 break;
  51.             case 3:
  52.                 $this->import_t2p();
  53.                 break;
  54.             case 4:
  55.                 $this->cleanup_import();
  56.                 break;
  57.         }
  58.  
  59.         // load the footer
  60.         $this->footer();
  61.     }
  62.  
  63.  
  64.     function import_tags ( ) {
  65.         echo '<div class="narrow">';
  66.         echo '<p><h3>'.__('Reading UTW Tags…').'</h3></p>';
  67.  
  68.         $tags = $this->get_utw_tags();
  69.  
  70.         // if we didn't get any tags back, that's all there is folks!
  71.         if ( !is_array($tags) ) {
  72.             echo '<p>' . __('No Tags Found!') . '</p>';
  73.             return false;
  74.         }
  75.         else {
  76.  
  77.             // if there's an existing entry, delete it
  78.             if ( get_option('utwimp_tags') ) {
  79.                 delete_option('utwimp_tags');
  80.             }
  81.  
  82.             add_option('utwimp_tags', $tags);
  83.  
  84.  
  85.             $count = count($tags);
  86.  
  87.             echo '<p>' . sprintf( __ngettext('Done! <strong>%s</strong> tag were read.', 'Done! <strong>%s</strong> tags were read.', $count), $count ) . '<br /></p>';
  88.             echo '<p>' . __('The following tags were found:') . '</p>';
  89.  
  90.             echo '<ul>';
  91.  
  92.             foreach ( $tags as $tag_id => $tag_name ) {
  93.  
  94.                 echo '<li>' . $tag_name . '</li>';
  95.  
  96.             }
  97.  
  98.             echo '</ul>';
  99.  
  100.             echo '<br />';
  101.  
  102.             echo '<p>' . __('If you don’t want to import any of these tags, you should delete them from the UTW tag management page and then re-run this import.') . '</p>';
  103.  
  104.  
  105.         }
  106.  
  107.         echo '<form action="admin.php?import=utw&step=2" method="post">';
  108.         wp_nonce_field('import-utw');
  109.         echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 2').'" /></p>';
  110.         echo '</form>';
  111.         echo '</div>';
  112.     }
  113.  
  114.  
  115.     function import_posts ( ) {
  116.         echo '<div class="narrow">';
  117.         echo '<p><h3>'.__('Reading UTW Post Tags…').'</h3></p>';
  118.  
  119.         // read in all the UTW tag -> post settings
  120.         $posts = $this->get_utw_posts();
  121.  
  122.         // if we didn't get any tags back, that's all there is folks!
  123.         if ( !is_array($posts) ) {
  124.             echo '<p>' . __('No posts were found to have tags!') . '</p>';
  125.             return false;
  126.         }
  127.         else {
  128.  
  129.             // if there's an existing entry, delete it
  130.             if ( get_option('utwimp_posts') ) {
  131.                 delete_option('utwimp_posts');
  132.             }
  133.  
  134.             add_option('utwimp_posts', $posts);
  135.  
  136.  
  137.             $count = count($posts);
  138.  
  139.             echo '<p>' . sprintf( __ngettext('Done! <strong>%s</strong> tag to post relationships were read.', 'Done! <strong>%s</strong> tags to post relationships were read.', $count), $count ) . '<br /></p>';
  140.  
  141.         }
  142.  
  143.         echo '<form action="admin.php?import=utw&step=3" method="post">';
  144.         wp_nonce_field('import-utw');
  145.         echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 3').'" /></p>';
  146.         echo '</form>';
  147.         echo '</div>';
  148.  
  149.     }
  150.  
  151.  
  152.     function import_t2p ( ) {
  153.  
  154.         echo '<div class="narrow">';
  155.         echo '<p><h3>'.__('Adding Tags to Posts…').'</h3></p>';
  156.  
  157.         // run that funky magic!
  158.         $tags_added = $this->tag2post();
  159.  
  160.         echo '<p>' . sprintf( __ngettext( 'Done! <strong>%s</strong> tag were added!', 'Done! <strong>%s</strong> tags were added!', $tags_added ), $tags_added ) . '<br /></p>';
  161.  
  162.         echo '<form action="admin.php?import=utw&step=4" method="post">';
  163.         wp_nonce_field('import-utw');
  164.         echo '<p class="submit"><input type="submit" name="submit" value="'.__('Step 4').'" /></p>';
  165.         echo '</form>';
  166.         echo '</div>';
  167.  
  168.     }
  169.  
  170.  
  171.     function get_utw_tags ( ) {
  172.  
  173.         global $wpdb;
  174.  
  175.         // read in all the tags from the UTW tags table: should be wp_tags
  176.         $tags_query = "SELECT tag_id, tag FROM " . $wpdb->prefix . "tags";
  177.  
  178.         $tags = $wpdb->get_results($tags_query);
  179.  
  180.         // rearrange these tags into something we can actually use
  181.         foreach ( $tags as $tag ) {
  182.  
  183.             $new_tags[$tag->tag_id] = $tag->tag;
  184.  
  185.         }
  186.  
  187.         return $new_tags;
  188.  
  189.     }
  190.  
  191.     function get_utw_posts ( ) {
  192.  
  193.         global $wpdb;
  194.  
  195.         // read in all the posts from the UTW post->tag table: should be wp_post2tag
  196.         $posts_query = "SELECT tag_id, post_id FROM " . $wpdb->prefix . "post2tag";
  197.  
  198.         $posts = $wpdb->get_results($posts_query);
  199.  
  200.         return $posts;
  201.  
  202.     }
  203.  
  204.  
  205.     function tag2post ( ) {
  206.  
  207.         // get the tags and posts we imported in the last 2 steps
  208.         $tags = get_option('utwimp_tags');
  209.         $posts = get_option('utwimp_posts');
  210.  
  211.         // null out our results
  212.         $tags_added = 0;
  213.  
  214.         // loop through each post and add its tags to the db
  215.         foreach ( $posts as $this_post ) {
  216.  
  217.             $the_post = (int) $this_post->post_id;
  218.             $the_tag = (int) $this_post->tag_id;
  219.  
  220.             // what's the tag name for that id?
  221.             $the_tag = $tags[$the_tag];
  222.  
  223.             // screw it, just try to add the tag
  224.             wp_add_post_tags($the_post, $the_tag);
  225.  
  226.             $tags_added++;
  227.  
  228.         }
  229.  
  230.         // that's it, all posts should be linked to their tags properly, pending any errors we just spit out!
  231.         return $tags_added;
  232.  
  233.  
  234.     }
  235.  
  236.  
  237.     function cleanup_import ( ) {
  238.  
  239.         delete_option('utwimp_tags');
  240.         delete_option('utwimp_posts');
  241.  
  242.         $this->done();
  243.  
  244.     }
  245.  
  246.  
  247.     function done ( ) {
  248.  
  249.         echo '<div class="narrow">';
  250.         echo '<p><h3>'.__('Import Complete!').'</h3></p>';
  251.  
  252.         echo '<p>' . __('OK, so we lied about this being a 5-step program! You’re done!') . '</p>';
  253.  
  254.         echo '<p>' . __('Now wasn’t that easy?') . '</p>';
  255.  
  256.         echo '</div>';
  257.  
  258.     }
  259.  
  260.  
  261.     function UTW_Import ( ) {
  262.  
  263.         // Nothing.
  264.  
  265.     }
  266.  
  267. }
  268.  
  269.  
  270. // create the import object
  271. $utw_import = new UTW_Import();
  272.  
  273. // add it to the import page!
  274. register_importer('utw', 'Ultimate Tag Warrior', __('Import Ultimate Tag Warrior tags into WordPress tags.'), array($utw_import, 'dispatch'));
  275.  
  276. ?>
  277.