[ Index ]
 

Code source de WordPress 2.1.2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

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

   1  <?php
   2  
   3  class LJ_Import {
   4  
   5      var $file;
   6  
   7  	function header() {
   8          echo '<div class="wrap">';
   9          echo '<h2>'.__('Import LiveJournal').'</h2>';
  10      }
  11  
  12  	function footer() {
  13          echo '</div>';
  14      }
  15  
  16  	function unhtmlentities($string) { // From php.net for < 4.3 compat
  17          $trans_tbl = get_html_translation_table(HTML_ENTITIES);
  18          $trans_tbl = array_flip($trans_tbl);
  19          return strtr($string, $trans_tbl);
  20      }
  21  
  22  	function greet() {
  23          echo '<div class="narrow">';
  24          echo '<p>'.__('Howdy! Upload your LiveJournal XML export file and we&#8217;ll import the posts into this blog.').'</p>';
  25          echo '<p>'.__('Choose a LiveJournal XML file to upload, then click Upload file and import.').'</p>';
  26          wp_import_upload_form("admin.php?import=livejournal&amp;step=1");
  27          echo '</div>';
  28      }
  29  
  30  	function import_posts() {
  31          global $wpdb, $current_user;
  32  
  33          set_magic_quotes_runtime(0);
  34          $importdata = file($this->file); // Read the file into an array
  35          $importdata = implode('', $importdata); // squish it
  36          $importdata = str_replace(array ("\r\n", "\r"), "\n", $importdata);
  37  
  38          preg_match_all('|<entry>(.*?)</entry>|is', $importdata, $posts);
  39          $posts = $posts[1];
  40          unset($importdata);
  41          echo '<ol>';
  42          foreach ($posts as $post) {
  43              preg_match('|<subject>(.*?)</subject>|is', $post, $post_title);
  44              $post_title = $wpdb->escape(trim($post_title[1]));
  45              if ( empty($post_title) ) {
  46                  preg_match('|<itemid>(.*?)</itemid>|is', $post, $post_title);
  47                  $post_title = $wpdb->escape(trim($post_title[1]));
  48              }
  49  
  50              preg_match('|<eventtime>(.*?)</eventtime>|is', $post, $post_date);
  51              $post_date = strtotime($post_date[1]);
  52              $post_date = gmdate('Y-m-d H:i:s', $post_date);
  53  
  54              preg_match('|<event>(.*?)</event>|is', $post, $post_content);
  55              $post_content = str_replace(array ('<![CDATA[', ']]>'), '', trim($post_content[1]));
  56              $post_content = $this->unhtmlentities($post_content);
  57  
  58              // Clean up content
  59              $post_content = preg_replace('|<(/?[A-Z]+)|e', "'<' . strtolower('$1')", $post_content);
  60              $post_content = str_replace('<br>', '<br />', $post_content);
  61              $post_content = str_replace('<hr>', '<hr />', $post_content);
  62              $post_content = $wpdb->escape($post_content);
  63  
  64              $post_author = $current_user->ID;
  65              $post_status = 'publish';
  66  
  67              echo '<li>';
  68              if ($post_id = post_exists($post_title, $post_content, $post_date)) {
  69                  printf(__('Post <i>%s</i> already exists.'), stripslashes($post_title));
  70              } else {
  71                  printf(__('Importing post <i>%s</i>...'), stripslashes($post_title));
  72                  $postdata = compact('post_author', 'post_date', 'post_content', 'post_title', 'post_status');
  73                  $post_id = wp_insert_post($postdata);
  74                  if (!$post_id) {
  75                      _e("Couldn't get post ID");
  76                      echo '</li>';
  77                      break;
  78                  }
  79              }
  80  
  81              preg_match_all('|<comment>(.*?)</comment>|is', $post, $comments);
  82              $comments = $comments[1];
  83  
  84              if ( $comments ) {
  85                  $comment_post_ID = $post_id;
  86                  $num_comments = 0;
  87                  foreach ($comments as $comment) {
  88                      preg_match('|<event>(.*?)</event>|is', $comment, $comment_content);
  89                      $comment_content = str_replace(array ('<![CDATA[', ']]>'), '', trim($comment_content[1]));
  90                      $comment_content = $this->unhtmlentities($comment_content);
  91  
  92                      // Clean up content
  93                      $comment_content = preg_replace('|<(/?[A-Z]+)|e', "'<' . strtolower('$1')", $comment_content);
  94                      $comment_content = str_replace('<br>', '<br />', $comment_content);
  95                      $comment_content = str_replace('<hr>', '<hr />', $comment_content);
  96                      $comment_content = $wpdb->escape($comment_content);
  97  
  98                      preg_match('|<eventtime>(.*?)</eventtime>|is', $comment, $comment_date);
  99                      $comment_date = trim($comment_date[1]);
 100                      $comment_date = date('Y-m-d H:i:s', strtotime($comment_date));
 101  
 102                      preg_match('|<name>(.*?)</name>|is', $comment, $comment_author);
 103                      $comment_author = $wpdb->escape(trim($comment_author[1]));
 104  
 105                      preg_match('|<email>(.*?)</email>|is', $comment, $comment_author_email);
 106                      $comment_author_email = $wpdb->escape(trim($comment_author_email[1]));
 107  
 108                      $comment_approved = 1;
 109                      // Check if it's already there
 110                      if (!comment_exists($comment_author, $comment_date)) {
 111                          $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_date', 'comment_content', 'comment_approved');
 112                          $commentdata = wp_filter_comment($commentdata);
 113                          wp_insert_comment($commentdata);
 114                          $num_comments++;
 115                      }
 116                  }
 117              }
 118              if ( $num_comments ) {
 119                  echo ' ';
 120                  printf(__('(%s comments)'), $num_comments);
 121              }
 122              echo '</li>';
 123          }
 124          echo '</ol>';
 125      }
 126  
 127  	function import() {
 128          $file = wp_import_handle_upload();
 129          if ( isset($file['error']) ) {
 130              echo $file['error'];
 131              return;
 132          }
 133  
 134          $this->file = $file['file'];
 135          $this->import_posts();
 136          wp_import_cleanup($file['id']);
 137  
 138          echo '<h3>';
 139          printf(__('All done. <a href="%s">Have fun!</a>'), get_option('home'));
 140          echo '</h3>';
 141      }
 142  
 143  	function dispatch() {
 144          if (empty ($_GET['step']))
 145              $step = 0;
 146          else
 147              $step = (int) $_GET['step'];
 148  
 149          $this->header();
 150  
 151          switch ($step) {
 152              case 0 :
 153                  $this->greet();
 154                  break;
 155              case 1 :
 156                  $this->import();
 157                  break;
 158          }
 159  
 160          $this->footer();
 161      }
 162  
 163  	function LJ_Import() {
 164          // Nothing.
 165      }
 166  }
 167  
 168  $livejournal_import = new LJ_Import();
 169  
 170  register_importer('livejournal', __('LiveJournal'), __('Import posts from a LiveJournal XML export file'), array ($livejournal_import, 'dispatch'));
 171  ?>


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7