WordPress.org

Make WordPress Core


Ignore:
Timestamp:
09/25/2006 02:38:55 AM (15 years ago)
Author:
ryan
Message:

i18n fixes from nbachiyski. fixes #3109

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.0/wp-admin/import/greymatter.php

    r3096 r4239  
     1<?php
     2
     3class GM_Import {
     4
     5    var $gmnames = array ();
     6
     7    function header() {
     8        echo '<div class="wrap">';
     9        echo '<h2>'.__('Import Greymatter').'</h2>';
     10    }
     11
     12    function footer() {
     13        echo '</div>';
     14    }
     15
     16    function greet() {
     17        $this->header();
     18?>
     19<p><?php _e('This is a basic GreyMatter to WordPress import script.') ?></p>
     20<p><?php _e('What it does:') ?></p>
     21<ul>
     22<li><?php _e('Parses gm-authors.cgi to import (new) authors. Everyone is imported at level 1.') ?></li>
     23<li><?php _e('Parses the entries cgi files to import posts, comments, and karma on posts (although karma is not used on WordPress yet).<br />If authors are found not to be in gm-authors.cgi, imports them at level 0.') ?></li>
     24<li><?php _e("Detects duplicate entries or comments. If you don't import everything the first time, or this import should fail in the middle, duplicate entries will not be made when you try again.") ?></li>
     25</ul>
     26<p><?php _e('What it does not:') ?></p>
     27<ul>
     28<li><?php _e('Parse gm-counter.cgi, gm-banlist.cgi, gm-cplog.cgi (you can make a CP log hack if you really feel like it, but I question the need of a CP log).') ?></li>
     29<li><?php _e('Import gm-templates.') ?></li>
     30<li><?php _e("Doesn't keep entries on top.")?></li>
     31</ul>
     32<p>&nbsp;</p>
     33
     34<form name="stepOne" method="get">
     35<input type="hidden" name="import" value="greymatter" />
     36<input type="hidden" name="step" value="1" />
     37<h3><?php _e('Second step: GreyMatter details:') ?></h3>
     38<p><table cellpadding="0">
     39<tr>
     40<td><?php _e('Path to GM files:') ?></td>
     41<td><input type="text" style="width:300px" name="gmpath" value="/home/my/site/cgi-bin/greymatter/" /></td>
     42</tr>
     43<tr>
     44<td><?php _e('Path to GM entries:') ?></td>
     45<td><input type="text" style="width:300px" name="archivespath" value="/home/my/site/cgi-bin/greymatter/archives/" /></td>
     46</tr>
     47<tr>
     48<td colspan="2"><br /><?php _e("This importer will search for files 00000001.cgi to 000-whatever.cgi,<br />so you need to enter the number of the last GM post here.<br />(if you don't know that number, just log into your FTP and look it out<br />in the entries' folder)") ?></td>
     49</tr>
     50<tr>
     51<td><?php _e("Last entry's number:") ?></td>
     52<td><input type="text" name="lastentry" value="00000001" /></td>
     53</tr>
     54</table>
     55</p>
     56<p><?php _e("When you're ready, click OK to start importing: ") ?><input type="submit" name="submit" value="<?php _e('OK') ?>" class="search" /></p>
     57</form>
     58<p>&nbsp</p>
     59<?php
     60        $this->footer();
     61    }
     62
     63
     64
     65    function gm2autobr($string) { // transforms GM's |*| into b2's <br />\n
     66        $string = str_replace("|*|","<br />\n",$string);
     67        return($string);
     68    }
     69   
     70    function import() {
     71        global $wpdb;
     72   
     73        $wpvarstoreset = array('gmpath', 'archivespath', 'lastentry');
     74        for ($i=0; $i<count($wpvarstoreset); $i += 1) {
     75            $wpvar = $wpvarstoreset[$i];
     76            if (!isset($$wpvar)) {
     77                if (empty($_POST["$wpvar"])) {
     78                    if (empty($_GET["$wpvar"])) {
     79                        $$wpvar = '';
     80                    } else {
     81                        $$wpvar = $_GET["$wpvar"];
     82                    }
     83                } else {
     84                    $$wpvar = $_POST["$wpvar"];
     85                }
     86            }
     87        }
     88
     89        if (!chdir($archivespath))
     90            die(sprintf(__("Wrong path, %s\ndoesn't exist\non the server"), $archivespath));
     91
     92        if (!chdir($gmpath))
     93            die(sprintf(__("Wrong path, %s\ndoesn't exist\non the server"), $gmpath));
     94           
     95        $this->header();
     96?>
     97<p><?php _e('The importer is running...') ?></p>
     98<ul>
     99<li><?php _e('importing users...') ?><ul><?php
     100
     101    chdir($gmpath);
     102    $userbase = file("gm-authors.cgi");
     103
     104    foreach($userbase as $user) {
     105        $userdata=explode("|", $user);
     106
     107        $user_ip="127.0.0.1";
     108        $user_domain="localhost";
     109        $user_browser="server";
     110
     111        $s=$userdata[4];
     112        $user_joindate=substr($s,6,4)."-".substr($s,0,2)."-".substr($s,3,2)." 00:00:00";
     113
     114        $user_login=$wpdb->escape($userdata[0]);
     115        $pass1=$wpdb->escape($userdata[1]);
     116        $user_nickname=$wpdb->escape($userdata[0]);
     117        $user_email=$wpdb->escape($userdata[2]);
     118        $user_url=$wpdb->escape($userdata[3]);
     119        $user_joindate=$wpdb->escape($user_joindate);
     120
     121        $user_id = username_exists($user_login);
     122        if ($user_id) {
     123            printf('<li>'.__('user %s').'<strong>'.__('Already exists').'</strong></li>', "<em>$user_login</em>");
     124            $this->gmnames[$userdata[0]] = $user_id;
     125            continue;
     126        }
     127
     128        $user_info = array("user_login"=>"$user_login", "user_pass"=>"$pass1", "user_nickname"=>"$user_nickname", "user_email"=>"$user_email", "user_url"=>"$user_url", "user_ip"=>"$user_ip", "user_domain"=>"$user_domain", "user_browser"=>"$user_browser", "dateYMDhour"=>"$user_joindate", "user_level"=>"1", "user_idmode"=>"nickname");
     129        $user_id = wp_insert_user($user_info);
     130        $this->gmnames[$userdata[0]] = $user_id;
     131       
     132        printf('<li>'.__('user %s...').' <strong>'.__('Done').'</strong></li>', "<em>$user_login</em>");
     133    }
     134
     135?></ul><strong><?php _e('Done') ?></strong></li>
     136<li><?php _e('importing posts, comments, and karma...') ?><br /><ul><?php
     137
     138    chdir($archivespath);
     139   
     140    for($i = 0; $i <= $lastentry; $i = $i + 1) {
     141       
     142        $entryfile = "";
     143       
     144        if ($i<10000000) {
     145            $entryfile .= "0";
     146            if ($i<1000000) {
     147                $entryfile .= "0";
     148                if ($i<100000) {
     149                    $entryfile .= "0";
     150                    if ($i<10000) {
     151                        $entryfile .= "0";
     152                        if ($i<1000) {
     153                            $entryfile .= "0";
     154                            if ($i<100) {
     155                                $entryfile .= "0";
     156                                if ($i<10) {
     157                                    $entryfile .= "0";
     158        }}}}}}}
     159
     160        $entryfile .= "$i";
     161
     162        if (is_file($entryfile.".cgi")) {
     163
     164            $entry=file($entryfile.".cgi");
     165            $postinfo=explode("|",$entry[0]);
     166            $postmaincontent=$this->gm2autobr($entry[2]);
     167            $postmorecontent=$this->gm2autobr($entry[3]);
     168
     169            $post_author=trim($wpdb->escape($postinfo[1]));
     170
     171            $post_title=$this->gm2autobr($postinfo[2]);
     172            printf('<li>'.__('entry # %s : %s : by %s'), $entryfile, $post_title, $postinfo[1]);
     173            $post_title=$wpdb->escape($post_title);
     174
     175            $postyear=$postinfo[6];
     176            $postmonth=zeroise($postinfo[4],2);
     177            $postday=zeroise($postinfo[5],2);
     178            $posthour=zeroise($postinfo[7],2);
     179            $postminute=zeroise($postinfo[8],2);
     180            $postsecond=zeroise($postinfo[9],2);
     181
     182            if (($postinfo[10]=="PM") && ($posthour!="12"))
     183                $posthour=$posthour+12;
     184
     185            $post_date="$postyear-$postmonth-$postday $posthour:$postminute:$postsecond";
     186
     187            $post_content=$postmaincontent;
     188            if (strlen($postmorecontent)>3)
     189                $post_content .= "<!--more--><br /><br />".$postmorecontent;
     190            $post_content=$wpdb->escape($post_content);
     191
     192            $post_karma=$postinfo[12];
     193
     194            $post_status = 'publish'; //in greymatter, there are no drafts
     195            $comment_status = 'open';
     196            $ping_status = 'closed';
     197           
     198            if ($post_ID = post_exists($post_title, '', $post_date)) {
     199                echo ' ';
     200                _e('(already exists)');
     201            } else {
     202                //just so that if a post already exists, new users are not created by checkauthor
     203                // we'll check the author is registered, or if it's a deleted author
     204                $user_id = username_exists($post_author);
     205                if (!$user_id) {    // if deleted from GM, we register the author as a level 0 user
     206                    $user_ip="127.0.0.1";
     207                    $user_domain="localhost";
     208                    $user_browser="server";
     209                    $user_joindate="1979-06-06 00:41:00";
     210                    $user_login=$wpdb->escape($post_author);
     211                    $pass1=$wpdb->escape("password");
     212                    $user_nickname=$wpdb->escape($post_author);
     213                    $user_email=$wpdb->escape("user@deleted.com");
     214                    $user_url=$wpdb->escape("");
     215                    $user_joindate=$wpdb->escape($user_joindate);
     216                   
     217                    $user_info = array("user_login"=>$user_login, "user_pass"=>$pass1, "user_nickname"=>$user_nickname, "user_email"=>$user_email, "user_url"=>$user_url, "user_ip"=>$user_ip, "user_domain"=>$user_domain, "user_browser"=>$user_browser, "dateYMDhour"=>$user_joindate, "user_level"=>0, "user_idmode"=>"nickname");
     218                    $user_id = wp_insert_user($user_info);
     219                    $this->gmnames[$postinfo[1]] = $user_id;
     220                   
     221                    echo ': ';
     222                    printf(__('registered deleted user %s at level 0 '), "<em>$user_login</em>");
     223                }
     224           
     225                if (array_key_exists($postinfo[1], $this->gmnames)) {
     226                    $post_author = $this->gmnames[$postinfo[1]];
     227                } else {
     228                    $post_author = $user_id;
     229                }
     230           
     231                $postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_modified', 'post_modified_gmt');
     232                $post_ID = wp_insert_post($postdata);
     233            }
     234
     235            $c=count($entry);
     236            if ($c>4) {
     237                $numAddedComments = 0;
     238                $numComments = 0;
     239                for ($j=4;$j<$c;$j++) {
     240                    $entry[$j]=$this->gm2autobr($entry[$j]);
     241                    $commentinfo=explode("|",$entry[$j]);
     242                    $comment_post_ID=$post_ID;
     243                    $comment_author=$wpdb->escape($commentinfo[0]);
     244                    $comment_author_email=$wpdb->escape($commentinfo[2]);
     245                    $comment_author_url=$wpdb->escape($commentinfo[3]);
     246                    $comment_author_IP=$wpdb->escape($commentinfo[1]);
     247
     248                    $commentyear=$commentinfo[7];
     249                    $commentmonth=zeroise($commentinfo[5],2);
     250                    $commentday=zeroise($commentinfo[6],2);
     251                    $commenthour=zeroise($commentinfo[8],2);
     252                    $commentminute=zeroise($commentinfo[9],2);
     253                    $commentsecond=zeroise($commentinfo[10],2);
     254                    if (($commentinfo[11]=="PM") && ($commenthour!="12"))
     255                        $commenthour=$commenthour+12;
     256                    $comment_date="$commentyear-$commentmonth-$commentday $commenthour:$commentminute:$commentsecond";
     257
     258                    $comment_content=$wpdb->escape($commentinfo[12]);
     259
     260                    if (!comment_exists($comment_author, $comment_date)) {
     261                        $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', 'comment_author_IP', 'comment_date', 'comment_content', 'comment_approved');
     262                        $commentdata = wp_filter_comment($commentdata);
     263                        wp_insert_comment($commentdata);
     264                        $numAddedComments++;
     265                    }
     266                    $numComments++;
     267                }
     268                if ($numAddedComments > 0) {
     269                    echo ': ';
     270                    printf(__('imported %d comment(s)'), $numAddedComments);
     271                }
     272                $preExisting = $numComments - numAddedComments;
     273                if ($preExisting > 0) {
     274                    echo ' ';
     275                    printf(__('ignored %d pre-existing comments'), $preExisting);
     276                }
     277            }
     278            echo '... <strong>'.__('Done').'</strong></li>';
     279        }
     280    }
     281    ?>
     282</ul><strong><?php _e('Done') ?></strong></li></ul>
     283<p>&nbsp;</p>
     284<p><?php _e('Completed Greymatter import!') ?></p>
     285<?php
     286    $this->footer();
     287    }
     288
     289    function dispatch() {
     290        if (empty ($_GET['step']))
     291            $step = 0;
     292        else
     293            $step = (int) $_GET['step'];
     294
     295        switch ($step) {
     296            case 0 :
     297                $this->greet();
     298                break;
     299            case 1:
     300                $this->import();
     301                break;
     302        }
     303    }
     304
     305    function GM_Import() {
     306        // Nothing.
     307    }
     308}
     309
     310$gm_import = new GM_Import();
     311
     312register_importer('greymatter', __('Greymatter'), __('Import posts and comments from your Greymatter blog'), array ($gm_import, 'dispatch'));
     313?>
Note: See TracChangeset for help on using the changeset viewer.