[ Index ]

PHP Cross Reference of Wordpress 2.9.1

title

Body

[close]

/wp-admin/import/ -> dotclear.php (source)

   1  <?php
   2  /**
   3   * DotClear Importer
   4   *
   5   * @package WordPress
   6   * @subpackage Importer
   7   * @author Thomas Quinot
   8   * @link http://thomas.quinot.org/
   9   */
  10  
  11  /**
  12      Add These Functions to make our lives easier
  13  **/
  14  
  15  if(!function_exists('get_comment_count'))
  16  {
  17      /**
  18       * Get the comment count for posts.
  19       *
  20       * @package WordPress
  21       * @subpackage Dotclear_Import
  22       *
  23       * @param int $post_ID Post ID
  24       * @return int
  25       */
  26  	function get_comment_count($post_ID)
  27      {
  28          global $wpdb;
  29          return $wpdb->get_var( $wpdb->prepare("SELECT count(*) FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID) );
  30      }
  31  }
  32  
  33  if(!function_exists('link_exists'))
  34  {
  35      /**
  36       * Check whether link already exists.
  37       *
  38       * @package WordPress
  39       * @subpackage Dotclear_Import
  40       *
  41       * @param string $linkname
  42       * @return int
  43       */
  44  	function link_exists($linkname)
  45      {
  46          global $wpdb;
  47          return $wpdb->get_var( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_name = %s", $linkname) );
  48      }
  49  }
  50  
  51  /**
  52   * Convert from dotclear charset to utf8 if required
  53   *
  54   * @package WordPress
  55   * @subpackage Dotclear_Import
  56   *
  57   * @param string $s
  58   * @return string
  59   */
  60  function csc ($s) {
  61      if (seems_utf8 ($s)) {
  62          return $s;
  63      } else {
  64          return iconv(get_option ("dccharset"),"UTF-8",$s);
  65      }
  66  }
  67  
  68  /**
  69   * @package WordPress
  70   * @subpackage Dotclear_Import
  71   *
  72   * @param string $s
  73   * @return string
  74   */
  75  function textconv ($s) {
  76      return csc (preg_replace ('|(?<!<br />)\s*\n|', ' ', $s));
  77  }
  78  
  79  /**
  80   * Dotclear Importer class
  81   *
  82   * Will process the WordPress eXtended RSS files that you upload from the export
  83   * file.
  84   *
  85   * @package WordPress
  86   * @subpackage Importer
  87   *
  88   * @since unknown
  89   */
  90  class Dotclear_Import {
  91  
  92  	function header()
  93      {
  94          echo '<div class="wrap">';
  95          screen_icon();
  96          echo '<h2>'.__('Import DotClear').'</h2>';
  97          echo '<p>'.__('Steps may take a few minutes depending on the size of your database. Please be patient.').'</p>';
  98      }
  99  
 100  	function footer()
 101      {
 102          echo '</div>';
 103      }
 104  
 105  	function greet()
 106      {
 107          echo '<div class="narrow"><p>'.__('Howdy! This importer allows you to extract posts from a DotClear database into your blog.  Mileage may vary.').'</p>';
 108          echo '<p>'.__('Your DotClear Configuration settings are as follows:').'</p>';
 109          echo '<form action="admin.php?import=dotclear&amp;step=1" method="post">';
 110          wp_nonce_field('import-dotclear');
 111          $this->db_form();
 112          echo '<p class="submit"><input type="submit" name="submit" class="button" value="'.esc_attr__('Import Categories').'" /></p>';
 113          echo '</form></div>';
 114      }
 115  
 116  	function get_dc_cats()
 117      {
 118          global $wpdb;
 119          // General Housekeeping
 120          $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
 121          set_magic_quotes_runtime(0);
 122          $dbprefix = get_option('dcdbprefix');
 123  
 124          // Get Categories
 125          return $dcdb->get_results('SELECT * FROM '.$dbprefix.'categorie', ARRAY_A);
 126      }
 127  
 128  	function get_dc_users()
 129      {
 130          global $wpdb;
 131          // General Housekeeping
 132          $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
 133          set_magic_quotes_runtime(0);
 134          $dbprefix = get_option('dcdbprefix');
 135  
 136          // Get Users
 137  
 138          return $dcdb->get_results('SELECT * FROM '.$dbprefix.'user', ARRAY_A);
 139      }
 140  
 141  	function get_dc_posts()
 142      {
 143          // General Housekeeping
 144          $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
 145          set_magic_quotes_runtime(0);
 146          $dbprefix = get_option('dcdbprefix');
 147  
 148          // Get Posts
 149          return $dcdb->get_results('SELECT '.$dbprefix.'post.*, '.$dbprefix.'categorie.cat_libelle_url AS post_cat_name
 150                          FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'categorie
 151                          ON '.$dbprefix.'post.cat_id = '.$dbprefix.'categorie.cat_id', ARRAY_A);
 152      }
 153  
 154  	function get_dc_comments()
 155      {
 156          global $wpdb;
 157          // General Housekeeping
 158          $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
 159          set_magic_quotes_runtime(0);
 160          $dbprefix = get_option('dcdbprefix');
 161  
 162          // Get Comments
 163          return $dcdb->get_results('SELECT * FROM '.$dbprefix.'comment', ARRAY_A);
 164      }
 165  
 166  	function get_dc_links()
 167      {
 168          //General Housekeeping
 169          $dcdb = new wpdb(get_option('dcuser'), get_option('dcpass'), get_option('dcname'), get_option('dchost'));
 170          set_magic_quotes_runtime(0);
 171          $dbprefix = get_option('dcdbprefix');
 172  
 173          return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY position', ARRAY_A);
 174      }
 175  
 176  	function cat2wp($categories='')
 177      {
 178          // General Housekeeping
 179          global $wpdb;
 180          $count = 0;
 181          $dccat2wpcat = array();
 182          // Do the Magic
 183          if(is_array($categories))
 184          {
 185              echo '<p>'.__('Importing Categories...').'<br /><br /></p>';
 186              foreach ($categories as $category)
 187              {
 188                  $count++;
 189                  extract($category);
 190  
 191                  // Make Nice Variables
 192                  $name = $wpdb->escape($cat_libelle_url);
 193                  $title = $wpdb->escape(csc ($cat_libelle));
 194                  $desc = $wpdb->escape(csc ($cat_desc));
 195  
 196                  if($cinfo = category_exists($name))
 197                  {
 198                      $ret_id = wp_insert_category(array('cat_ID' => $cinfo, 'category_nicename' => $name, 'cat_name' => $title, 'category_description' => $desc));
 199                  }
 200                  else
 201                  {
 202                      $ret_id = wp_insert_category(array('category_nicename' => $name, 'cat_name' => $title, 'category_description' => $desc));
 203                  }
 204                  $dccat2wpcat[$id] = $ret_id;
 205              }
 206  
 207              // Store category translation for future use
 208              add_option('dccat2wpcat',$dccat2wpcat);
 209              echo '<p>'.sprintf(_n('Done! <strong>%1$s</strong> category imported.', 'Done! <strong>%1$s</strong> categories imported.', $count), $count).'<br /><br /></p>';
 210              return true;
 211          }
 212          echo __('No Categories to Import!');
 213          return false;
 214      }
 215  
 216  	function users2wp($users='')
 217      {
 218          // General Housekeeping
 219          global $wpdb;
 220          $count = 0;
 221          $dcid2wpid = array();
 222  
 223          // Midnight Mojo
 224          if(is_array($users))
 225          {
 226              echo '<p>'.__('Importing Users...').'<br /><br /></p>';
 227              foreach($users as $user)
 228              {
 229                  $count++;
 230                  extract($user);
 231  
 232                  // Make Nice Variables
 233                  $name = $wpdb->escape(csc ($name));
 234                  $RealName = $wpdb->escape(csc ($user_pseudo));
 235  
 236                  if($uinfo = get_userdatabylogin($name))
 237                  {
 238  
 239                      $ret_id = wp_insert_user(array(
 240                                  'ID'        => $uinfo->ID,
 241                                  'user_login'    => $user_id,
 242                                  'user_nicename'    => $Realname,
 243                                  'user_email'    => $user_email,
 244                                  'user_url'    => 'http://',
 245                                  'display_name'    => $Realname)
 246                                  );
 247                  }
 248                  else
 249                  {
 250                      $ret_id = wp_insert_user(array(
 251                                  'user_login'    => $user_id,
 252                                  'user_nicename'    => csc ($user_pseudo),
 253                                  'user_email'    => $user_email,
 254                                  'user_url'    => 'http://',
 255                                  'display_name'    => $Realname)
 256                                  );
 257                  }
 258                  $dcid2wpid[$user_id] = $ret_id;
 259  
 260                  // Set DotClear-to-WordPress permissions translation
 261  
 262                  // Update Usermeta Data
 263                  $user = new WP_User($ret_id);
 264                  $wp_perms = $user_level + 1;
 265                  if(10 == $wp_perms) { $user->set_role('administrator'); }
 266                  else if(9  == $wp_perms) { $user->set_role('editor'); }
 267                  else if(5  <= $wp_perms) { $user->set_role('editor'); }
 268                  else if(4  <= $wp_perms) { $user->set_role('author'); }
 269                  else if(3  <= $wp_perms) { $user->set_role('contributor'); }
 270                  else if(2  <= $wp_perms) { $user->set_role('contributor'); }
 271                  else                     { $user->set_role('subscriber'); }
 272  
 273                  update_usermeta( $ret_id, 'wp_user_level', $wp_perms);
 274                  update_usermeta( $ret_id, 'rich_editing', 'false');
 275                  update_usermeta( $ret_id, 'first_name', csc ($user_prenom));
 276                  update_usermeta( $ret_id, 'last_name', csc ($user_nom));
 277              }// End foreach($users as $user)
 278  
 279              // Store id translation array for future use
 280              add_option('dcid2wpid',$dcid2wpid);
 281  
 282  
 283              echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> users imported.'), $count).'<br /><br /></p>';
 284              return true;
 285          }// End if(is_array($users)
 286  
 287          echo __('No Users to Import!');
 288          return false;
 289  
 290      }// End function user2wp()
 291  
 292  	function posts2wp($posts='')
 293      {
 294          // General Housekeeping
 295          global $wpdb;
 296          $count = 0;
 297          $dcposts2wpposts = array();
 298          $cats = array();
 299  
 300          // Do the Magic
 301          if(is_array($posts))
 302          {
 303              echo '<p>'.__('Importing Posts...').'<br /><br /></p>';
 304              foreach($posts as $post)
 305              {
 306                  $count++;
 307                  extract($post);
 308  
 309                  // Set DotClear-to-WordPress status translation
 310                  $stattrans = array(0 => 'draft', 1 => 'publish');
 311                  $comment_status_map = array (0 => 'closed', 1 => 'open');
 312  
 313                  //Can we do this more efficiently?
 314                  $uinfo = ( get_userdatabylogin( $user_id ) ) ? get_userdatabylogin( $user_id ) : 1;
 315                  $authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
 316  
 317                  $Title = $wpdb->escape(csc ($post_titre));
 318                  $post_content = textconv ($post_content);
 319                  $post_excerpt = "";
 320                  if ($post_chapo != "") {
 321                      $post_excerpt = textconv ($post_chapo);
 322                      $post_content = $post_excerpt ."\n<!--more-->\n".$post_content;
 323                  }
 324                  $post_excerpt = $wpdb->escape ($post_excerpt);
 325                  $post_content = $wpdb->escape ($post_content);
 326                  $post_status = $stattrans[$post_pub];
 327  
 328                  // Import Post data into WordPress
 329  
 330                  if($pinfo = post_exists($Title,$post_content))
 331                  {
 332                      $ret_id = wp_insert_post(array(
 333                              'ID'            => $pinfo,
 334                              'post_author'        => $authorid,
 335                              'post_date'        => $post_dt,
 336                              'post_date_gmt'        => $post_dt,
 337                              'post_modified'        => $post_upddt,
 338                              'post_modified_gmt'    => $post_upddt,
 339                              'post_title'        => $Title,
 340                              'post_content'        => $post_content,
 341                              'post_excerpt'        => $post_excerpt,
 342                              'post_status'        => $post_status,
 343                              'post_name'        => $post_titre_url,
 344                              'comment_status'    => $comment_status_map[$post_open_comment],
 345                              'ping_status'        => $comment_status_map[$post_open_tb],
 346                              'comment_count'        => $post_nb_comment + $post_nb_trackback)
 347                              );
 348                      if ( is_wp_error( $ret_id ) )
 349                          return $ret_id;
 350                  }
 351                  else
 352                  {
 353                      $ret_id = wp_insert_post(array(
 354                              'post_author'        => $authorid,
 355                              'post_date'        => $post_dt,
 356                              'post_date_gmt'        => $post_dt,
 357                              'post_modified'        => $post_modified_gmt,
 358                              'post_modified_gmt'    => $post_modified_gmt,
 359                              'post_title'        => $Title,
 360                              'post_content'        => $post_content,
 361                              'post_excerpt'        => $post_excerpt,
 362                              'post_status'        => $post_status,
 363                              'post_name'        => $post_titre_url,
 364                              'comment_status'    => $comment_status_map[$post_open_comment],
 365                              'ping_status'        => $comment_status_map[$post_open_tb],
 366                              'comment_count'        => $post_nb_comment + $post_nb_trackback)
 367                              );
 368                      if ( is_wp_error( $ret_id ) )
 369                          return $ret_id;
 370                  }
 371                  $dcposts2wpposts[$post_id] = $ret_id;
 372  
 373                  // Make Post-to-Category associations
 374                  $cats = array();
 375                  $category1 = get_category_by_slug($post_cat_name);
 376                  $category1 = $category1->term_id;
 377  
 378                  if($cat1 = $category1) { $cats[1] = $cat1; }
 379  
 380                  if(!empty($cats)) { wp_set_post_categories($ret_id, $cats); }
 381              }
 382          }
 383          // Store ID translation for later use
 384          add_option('dcposts2wpposts',$dcposts2wpposts);
 385  
 386          echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> posts imported.'), $count).'<br /><br /></p>';
 387          return true;
 388      }
 389  
 390  	function comments2wp($comments='')
 391      {
 392          // General Housekeeping
 393          global $wpdb;
 394          $count = 0;
 395          $dccm2wpcm = array();
 396          $postarr = get_option('dcposts2wpposts');
 397  
 398          // Magic Mojo
 399          if(is_array($comments))
 400          {
 401              echo '<p>'.__('Importing Comments...').'<br /><br /></p>';
 402              foreach($comments as $comment)
 403              {
 404                  $count++;
 405                  extract($comment);
 406  
 407                  // WordPressify Data
 408                  $comment_ID = (int) ltrim($comment_id, '0');
 409                  $comment_post_ID = (int) $postarr[$post_id];
 410                  $comment_approved = "$comment_pub";
 411                  $name = $wpdb->escape(csc ($comment_auteur));
 412                  $email = $wpdb->escape($comment_email);
 413                  $web = "http://".$wpdb->escape($comment_site);
 414                  $message = $wpdb->escape(textconv ($comment_content));
 415  
 416                  $comment = array(
 417                              'comment_post_ID'    => $comment_post_ID,
 418                              'comment_author'    => $name,
 419                              'comment_author_email'    => $email,
 420                              'comment_author_url'    => $web,
 421                              'comment_author_IP'    => $comment_ip,
 422                              'comment_date'        => $comment_dt,
 423                              'comment_date_gmt'    => $comment_dt,
 424                              'comment_content'    => $message,
 425                              'comment_approved'    => $comment_approved);
 426                  $comment = wp_filter_comment($comment);
 427  
 428                  if ( $cinfo = comment_exists($name, $comment_dt) ) {
 429                      // Update comments
 430                      $comment['comment_ID'] = $cinfo;
 431                      $ret_id = wp_update_comment($comment);
 432                  } else {
 433                      // Insert comments
 434                      $ret_id = wp_insert_comment($comment);
 435                  }
 436                  $dccm2wpcm[$comment_ID] = $ret_id;
 437              }
 438              // Store Comment ID translation for future use
 439              add_option('dccm2wpcm', $dccm2wpcm);
 440  
 441              // Associate newly formed categories with posts
 442              get_comment_count($ret_id);
 443  
 444  
 445              echo '<p>'.sprintf(__('Done! <strong>%1$s</strong> comments imported.'), $count).'<br /><br /></p>';
 446              return true;
 447          }
 448          echo __('No Comments to Import!');
 449          return false;
 450      }
 451  
 452  	function links2wp($links='')
 453      {
 454          // General Housekeeping
 455          global $wpdb;
 456          $count = 0;
 457  
 458          // Deal with the links
 459          if(is_array($links))
 460          {
 461              echo '<p>'.__('Importing Links...').'<br /><br /></p>';
 462              foreach($links as $link)
 463              {
 464                  $count++;
 465                  extract($link);
 466  
 467                  if ($title != "") {
 468                      if ($cinfo = is_term(csc ($title), 'link_category')) {
 469                          $category = $cinfo['term_id'];
 470                      } else {
 471                          $category = wp_insert_term($wpdb->escape (csc ($title)), 'link_category');
 472                          $category = $category['term_id'];
 473                      }
 474                  } else {
 475                      $linkname = $wpdb->escape(csc ($label));
 476                      $description = $wpdb->escape(csc ($title));
 477  
 478                      if($linfo = link_exists($linkname)) {
 479                          $ret_id = wp_insert_link(array(
 480                                      'link_id'        => $linfo,
 481                                      'link_url'        => $href,
 482                                      'link_name'        => $linkname,
 483                                      'link_category'        => $category,
 484                                      'link_description'    => $description)
 485                                      );
 486                      } else {
 487                          $ret_id = wp_insert_link(array(
 488                                      'link_url'        => $url,
 489                                      'link_name'        => $linkname,
 490                                      'link_category'        => $category,
 491                                      'link_description'    => $description)
 492                                      );
 493                      }
 494                      $dclinks2wplinks[$link_id] = $ret_id;
 495                  }
 496              }
 497              add_option('dclinks2wplinks',$dclinks2wplinks);
 498              echo '<p>';
 499              printf(_n('Done! <strong>%s</strong> link or link category imported.', 'Done! <strong>%s</strong> links or link categories imported.', $count), $count);
 500              echo '<br /><br /></p>';
 501              return true;
 502          }
 503          echo __('No Links to Import!');
 504          return false;
 505      }
 506  
 507  	function import_categories()
 508      {
 509          // Category Import
 510          $cats = $this->get_dc_cats();
 511          $this->cat2wp($cats);
 512          add_option('dc_cats', $cats);
 513  
 514  
 515  
 516          echo '<form action="admin.php?import=dotclear&amp;step=2" method="post">';
 517          wp_nonce_field('import-dotclear');
 518          printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Users'));
 519          echo '</form>';
 520  
 521      }
 522  
 523  	function import_users()
 524      {
 525          // User Import
 526          $users = $this->get_dc_users();
 527          $this->users2wp($users);
 528  
 529          echo '<form action="admin.php?import=dotclear&amp;step=3" method="post">';
 530          wp_nonce_field('import-dotclear');
 531          printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Posts'));
 532          echo '</form>';
 533      }
 534  
 535  	function import_posts()
 536      {
 537          // Post Import
 538          $posts = $this->get_dc_posts();
 539          $result = $this->posts2wp($posts);
 540          if ( is_wp_error( $result ) )
 541              return $result;
 542  
 543          echo '<form action="admin.php?import=dotclear&amp;step=4" method="post">';
 544          wp_nonce_field('import-dotclear');
 545          printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Comments'));
 546          echo '</form>';
 547      }
 548  
 549  	function import_comments()
 550      {
 551          // Comment Import
 552          $comments = $this->get_dc_comments();
 553          $this->comments2wp($comments);
 554  
 555          echo '<form action="admin.php?import=dotclear&amp;step=5" method="post">';
 556          wp_nonce_field('import-dotclear');
 557          printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Import Links'));
 558          echo '</form>';
 559      }
 560  
 561  	function import_links()
 562      {
 563          //Link Import
 564          $links = $this->get_dc_links();
 565          $this->links2wp($links);
 566          add_option('dc_links', $links);
 567  
 568          echo '<form action="admin.php?import=dotclear&amp;step=6" method="post">';
 569          wp_nonce_field('import-dotclear');
 570          printf('<p class="submit"><input type="submit" name="submit" class="button" value="%s" /></p>', esc_attr__('Finish'));
 571          echo '</form>';
 572      }
 573  
 574  	function cleanup_dcimport()
 575      {
 576          delete_option('dcdbprefix');
 577          delete_option('dc_cats');
 578          delete_option('dcid2wpid');
 579          delete_option('dccat2wpcat');
 580          delete_option('dcposts2wpposts');
 581          delete_option('dccm2wpcm');
 582          delete_option('dclinks2wplinks');
 583          delete_option('dcuser');
 584          delete_option('dcpass');
 585          delete_option('dcname');
 586          delete_option('dchost');
 587          delete_option('dccharset');
 588          do_action('import_done', 'dotclear');
 589          $this->tips();
 590      }
 591  
 592  	function tips()
 593      {
 594          echo '<p>'.__('Welcome to WordPress.  We hope (and expect!) that you will find this platform incredibly rewarding!  As a new WordPress user coming from DotClear, there are some things that we would like to point out.  Hopefully, they will help your transition go as smoothly as possible.').'</p>';
 595          echo '<h3>'.__('Users').'</h3>';
 596          echo '<p>'.sprintf(__('You have already setup WordPress and have been assigned an administrative login and password.  Forget it.  You didn&#8217;t have that login in DotClear, why should you have it here?  Instead we have taken care to import all of your users into our system.  Unfortunately there is one downside.  Because both WordPress and DotClear uses a strong encryption hash with passwords, it is impossible to decrypt it and we are forced to assign temporary passwords to all your users.  <strong>Every user has the same username, but their passwords are reset to password123.</strong>  So <a href="%1$s">Log in</a> and change it.'), '/wp-login.php').'</p>';
 597          echo '<h3>'.__('Preserving Authors').'</h3>';
 598          echo '<p>'.__('Secondly, we have attempted to preserve post authors.  If you are the only author or contributor to your blog, then you are safe.  In most cases, we are successful in this preservation endeavor.  However, if we cannot ascertain the name of the writer due to discrepancies between database tables, we assign it to you, the administrative user.').'</p>';
 599          echo '<h3>'.__('Textile').'</h3>';
 600          echo '<p>'.__('Also, since you&#8217;re coming from DotClear, you probably have been using Textile to format your comments and posts.  If this is the case, we recommend downloading and installing <a href="http://www.huddledmasses.org/category/development/wordpress/textile/">Textile for WordPress</a>.  Trust me&#8230; You&#8217;ll want it.').'</p>';
 601          echo '<h3>'.__('WordPress Resources').'</h3>';
 602          echo '<p>'.__('Finally, there are numerous WordPress resources around the internet.  Some of them are:').'</p>';
 603          echo '<ul>';
 604          echo '<li>'.__('<a href="http://www.wordpress.org">The official WordPress site</a>').'</li>';
 605          echo '<li>'.__('<a href="http://wordpress.org/support/">The WordPress support forums</a>').'</li>';
 606          echo '<li>'.__('<a href="http://codex.wordpress.org">The Codex (In other words, the WordPress Bible)</a>').'</li>';
 607          echo '</ul>';
 608          echo '<p>'.sprintf(__('That&#8217;s it! What are you waiting for? Go <a href="%1$s">log in</a>!'), '../wp-login.php').'</p>';
 609      }
 610  
 611  	function db_form()
 612      {
 613          echo '<table class="form-table">';
 614          printf('<tr><th><label for="dbuser">%s</label></th><td><input type="text" name="dbuser" id="dbuser" /></td></tr>', __('DotClear Database User:'));
 615          printf('<tr><th><label for="dbpass">%s</label></th><td><input type="password" name="dbpass" id="dbpass" /></td></tr>', __('DotClear Database Password:'));
 616          printf('<tr><th><label for="dbname">%s</label></th><td><input type="text" name="dbname" id="dbname" /></td></tr>', __('DotClear Database Name:'));
 617          printf('<tr><th><label for="dbhost">%s</label></th><td><input type="text" name="dbhost" id="dbhost" value="localhost" /></td></tr>', __('DotClear Database Host:'));
 618          printf('<tr><th><label for="dbprefix">%s</label></th><td><input type="text" name="dbprefix" id="dbprefix" value="dc_"/></td></tr>', __('DotClear Table prefix:'));
 619          printf('<tr><th><label for="dccharset">%s</label></th><td><input type="text" name="dccharset" id="dccharset" value="ISO-8859-15"/></td></tr>', __('Originating character set:'));
 620          echo '</table>';
 621      }
 622  
 623  	function dispatch()
 624      {
 625  
 626          if (empty ($_GET['step']))
 627              $step = 0;
 628          else
 629              $step = (int) $_GET['step'];
 630          $this->header();
 631  
 632          if ( $step > 0 )
 633          {
 634              check_admin_referer('import-dotclear');
 635  
 636              if($_POST['dbuser'])
 637              {
 638                  if(get_option('dcuser'))
 639                      delete_option('dcuser');
 640                  add_option('dcuser', sanitize_user($_POST['dbuser'], true));
 641              }
 642              if($_POST['dbpass'])
 643              {
 644                  if(get_option('dcpass'))
 645                      delete_option('dcpass');
 646                  add_option('dcpass', sanitize_user($_POST['dbpass'], true));
 647              }
 648  
 649              if($_POST['dbname'])
 650              {
 651                  if(get_option('dcname'))
 652                      delete_option('dcname');
 653                  add_option('dcname', sanitize_user($_POST['dbname'], true));
 654              }
 655              if($_POST['dbhost'])
 656              {
 657                  if(get_option('dchost'))
 658                      delete_option('dchost');
 659                  add_option('dchost', sanitize_user($_POST['dbhost'], true));
 660              }
 661              if($_POST['dccharset'])
 662              {
 663                  if(get_option('dccharset'))
 664                      delete_option('dccharset');
 665                  add_option('dccharset', sanitize_user($_POST['dccharset'], true));
 666              }
 667              if($_POST['dbprefix'])
 668              {
 669                  if(get_option('dcdbprefix'))
 670                      delete_option('dcdbprefix');
 671                  add_option('dcdbprefix', sanitize_user($_POST['dbprefix'], true));
 672              }
 673  
 674  
 675          }
 676  
 677          switch ($step)
 678          {
 679              default:
 680              case 0 :
 681                  $this->greet();
 682                  break;
 683              case 1 :
 684                  $this->import_categories();
 685                  break;
 686              case 2 :
 687                  $this->import_users();
 688                  break;
 689              case 3 :
 690                  $result = $this->import_posts();
 691                  if ( is_wp_error( $result ) )
 692                      echo $result->get_error_message();
 693                  break;
 694              case 4 :
 695                  $this->import_comments();
 696                  break;
 697              case 5 :
 698                  $this->import_links();
 699                  break;
 700              case 6 :
 701                  $this->cleanup_dcimport();
 702                  break;
 703          }
 704  
 705          $this->footer();
 706      }
 707  
 708  	function Dotclear_Import()
 709      {
 710          // Nothing.
 711      }
 712  }
 713  
 714  $dc_import = new Dotclear_Import();
 715  
 716  register_importer('dotclear', __('DotClear'), __('Import categories, users, posts, comments, and links from a DotClear blog.'), array ($dc_import, 'dispatch'));
 717  
 718  ?>


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7