Status: offline

kermit

Forum User
Junior
Registered: 03/27/04
Posts: 18
awake
great, i just fixed something, i have to carry on, i will post my result shortly

Status: offline

kermit

Forum User
Junior
Registered: 03/27/04
Posts: 18
happy
Blaine,

I don't know how to thank you, the script is now working.
I have learned something today, I have modified the script to import only the stories at the present moment.

and IT WORKS.
So I shall carry on and get the all script working.
Now that I understand it, I will try to get the script done to import the all postnuke.

thanks a lot again
keep upi the good work dude.

Regards
stephane

mcangeli

Anonymous
curious
Kermit,

How far have you gotten on this? I have a huge postnuke site that I would like to at least move the Users (and the phpbb forums) to the geeklog site.

Thanks,

Mark

SAYnoTOpostNUKE

Anonymous
Hi, I am running into the same problem that Stephane said that she was having at the beggining of the topic forum. I was wondering if anyone came with a solution to his problem. I have an old site in postnuke that I want to convert to geeklog.

This is the problem that Im having:

uid [0]
insert into gl_users (nuke_uid, username, fullname, passwd, email, regdate ) values (0, '', '', '5f4dcc3b5aa765d61d8327deb882cf99', '', '2004-07-27 02:40:07')

Warning: query failed: [insert into gl_users (nuke_uid, username, fullname, passwd, email, regdate ) values (0, '', '', '5f4dcc3b5aa765d61d8327deb882cf99', '', '2004-07-27 02:40:07')] in /var/www/html/sites/geeklog/public_html/postnuke-gl.php on line 82
[ ] EXIST NOT


Any help on this situation will be greatly apreciated.

Text Formatted Code

#!/usr/bin/php -q
 <?php
 
 /**
 * Convert Nuke-type database to GeekLog
 * quick hack
 */
 
 require_once '/var/www/html/sites/geeklog/system/pear/PEAR.php'; // why am i doing this?!
 
 $dbhost = 'localhost';
 $dbuser = 'tester';
 $dbpass = 'test123';
 $gl_dbname = 'cadena'; // new GL
 $nuke_dbname = 'ccnet'; // old Nuke
 
 $gl_usertable = 'gl_users';
 $gl_topictable = 'gl_topics';
 $gl_storytable = 'gl_stories';
 $gl_commenttable = 'gl_comments';
 
 $nuke_usertable = 'nuke_users'; // change this for maxt_man db
 $nuke_topictable = 'nuke_topics';
 $nuke_storytable = 'nuke_stories';
 $nuke_commenttable = 'nuke_comments';
 
 
 $dbh = connect_db($dbhost, $dbuser, $dbpass);;
 if ( PEAR::isError($dbh) ) {
 trigger_error($dbh->getMessage(), E_USER_ERROR);
 } else {
 print "DB connection [ OK ]n";
 }
 
 
 // CONVERT USERS
 // get existing GL user names
 mysql_select_db($gl_dbname, $dbh);
 $sql = "select uid, username from $gl_usertable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $gl_users = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $gl_users[$row["username"]] = $row["uid"];
 }
 mysql_free_result($res);
 print_r($gl_users);
 
 // now get nuke users
 mysql_select_db($nuke_dbname, $dbh);
 $sql = "select * from $nuke_usertable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $nuke_users = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $nuke_users[] = $row;
 }
 mysql_free_result($res);
 print_r($nuke_users);
 
 $common_pass = md5("password");
 print "pass = $common_passn";
 $regdate = date("Y-m-d H:i:s"); // don't preserve regdate
 
 $uids = array();
 mysql_select_db($gl_dbname, $dbh); // back to GL database
 foreach ( $nuke_users as $key => $hash ) {
 if ( in_array($hash["uname"], array_keys($gl_users)) ) {
 printf("[%-15s] EXISTSn", $hash['uname']);
 // update nuke_uid
 $sql = "update $gl_usertable set nuke_uid = {$hash['uid']} where uid = {$gl_users[$hash['uname']]}";
 } else {
 printf("[%-15s] EXIST NOTn", $hash['uname']);
 // insert user
 $sql = "insert into $gl_usertable (nuke_uid, username, fullname, passwd, email, regdate ) values ";
 $sql .= sprintf("(%d, '%s', '%s', '%s', '%s', '%s')",
 $hash['uid'], $hash['uname'], $hash['name'], $common_pass, $hash['email'], $regdate);
 
 
 }
 $uids[] = $gl_users[$hash["uname"]];
 printf("uid [%d]n", $gl_users[$hash["uname"]]);
 print "$sqln";
 ( mysql_query($sql, $dbh) ) or trigger_error("query failed: [$sql]", E_USER_WARNING);
 }
 
 // now cascade to all user* tables
 // usercomment
 // userindex
 // userinfo
 // userprefs
 
 mysql_select_db($gl_dbname, $dbh); //make sure you're back to GL database
 foreach ( $uids as $id ) {
 $sqls = array();
 $sqls[] = "replace into usercomment (uid) values ($id)";
 $sqls[] = "replace into userindex (uid) values ($id)";
 $sqls[] = "replace into userinfo (uid) values ($id)";
 $sqls[] = "replace into userprefs (uid) values ($id)";
 foreach ($sqls as $statement) {
 ( mysql_query($statement, $dbh) ) or trigger_error("query failed: [$statement]", E_USER_WARNING);
 }
 }
 
 
 // *** CONVERT TOPICS
 // get existing GL topic ids ( in GL they are varchars )
 mysql_select_db($gl_dbname, $dbh);
 $sql = "select tid from $gl_topictable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $gl_topics = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $gl_topics[] = $row["tid"];
 }
 mysql_free_result($res);
 print "GL existing topics:n";
 foreach ( $gl_topics as $key => $topic ) {
  printf("t%2d %sn", ($key + 1), $topic);
 }
 
 // now get nuke topics
 mysql_select_db($nuke_dbname, $dbh);
 $sql = "select * from $nuke_topictable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $nuke_topics = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $nuke_topics[] = $row;
 }
 mysql_free_result($res);
 print "nNUKE topics:n";
 foreach ( $nuke_topics as $key => $hash ) {
 printf("t%2d %sn", ++$key, strtolower($hash["topicname"]) );
 }
 
 // make comparison case-insensitive
 my_array_map("strtolower_wrapper", $gl_topics);
 print "nGL existing topics:n";
 foreach ( $gl_topics as $key => $topic ) {
 printf("t%2d %sn", ($key + 1), $topic);
 }
 // back to GL database
 mysql_select_db($gl_dbname, $dbh);
 $imagepath = '/images/topics/';
 $i = 0;
 foreach ( $nuke_topics as $key => $hash ) {
 if ( ! $hash["topicname"] ) continue;
 $topicname = space_to_underscore(strtolower($hash["topicname"]));
 if ( in_array($topicname, $gl_topics) ) {
 printf("%2d [%-20s] EXISTSn", ++$i, $topicname);
 // update nuke_uid
 $sql = "update $gl_topictable set nuke_tid = {$hash['topicid']} where LOWER(tid) = '$topicname'";
 } else {
 printf("%2d [%-20s] EXIST NOTn", ++$i, $topicname);
 // insert user
 $sql = "insert into $gl_topictable (tid, nuke_tid, topic, imageurl) values ";
 $sql .= sprintf("('%s', %d, '%s', '%s')",
 $topicname, $hash['topicid'], $hash['topictext'],
 ($hash['topicimage']) ? $imagepath . $hash['topicimage'] : '' );
 
 }
 print "$sqln";
 ( mysql_query($sql, $dbh) ) or trigger_error("query failed: [$sql]", E_USER_WARNING);
 }
 
 
 // CONVERT STORIES
 $aid_to_username = array(
 'god' => 'admin',
 'iano' => 'iano',
 'simon' => 'slord'
 );
 // now get nuke stories
 mysql_select_db($nuke_dbname, $dbh);
 $sql = "select * from $nuke_storytable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $nuke_stories = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $nuke_stories[] = $row;
 }
 mysql_free_result($res);
 print "nNUKE stories:n";
 foreach ( $nuke_stories as $key => $hash ) {
  printf("%3d %3d %-10s %-80sn", ++$key, $hash['sid'], $hash["aid"], $hash['title'] );
 }
 // back to GL database
 mysql_select_db($gl_dbname, $dbh);
 // get GL users
 $sql = "select username, uid from $gl_usertable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $gl_users = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $gl_users[$row['username']] = $row['uid'];
 }
 print "nGL users:n";
 foreach ( $gl_users as $uname => $uid ) {
  printf("%-10s %3dn", $uname, $uid );
 }
 foreach ( $nuke_stories as $key => $hash ) {
 // sleep(1) to make sure that a unique $gl_sid is generated
 // quick hack ( not good if there are many records to convert )
 sleep(1);
 $gl_sid = COM_makesid();
 printf("sid => %-20s ", $gl_sid);
 $gl_uid = aid_to_gl_uid($hash['aid'], $aid_to_username, $gl_users);
 printf("uid => %3d ", $gl_uid);
 $gl_tid = get_gl_tid($hash['topic'], $dbh);
 printf("tid => %-20sn", $gl_tid);
 
 $sql = "insert into $gl_storytable (sid, nuke_sid, uid, tid, date, title, introtext, bodytext) values ";
 $sql .= sprintf("('%s', %d, %d, '%s', '%s', '%s', '%s', '%s')",
 $gl_sid,
 $hash['sid'],
 $gl_uid,
 $gl_tid,
 $hash['time'],
 addslashes($hash['title']),
 addslashes($hash['hometext']),
 addslashes($hash['bodytext'])
 );
 
 print "$sqln";
 ( mysql_query($sql, $dbh) ) or trigger_error("query failed: [$sql]", E_USER_WARNING);
 }
 
 
 // CONVERT COMMENTS
 // now get nuke comments
 mysql_select_db($nuke_dbname, $dbh);
 $sql = "select * from $nuke_commenttable";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $nuke_comments = array();
 while ( $row = mysql_fetch_assoc($res) ) {
 $nuke_comments[] = $row;
 }
 mysql_free_result($res);
 print_r($nuke_comments);
 print("total comments: " . count($nuke_comments) . "n");
 
 // back to GL database
 $comment_count = array();
 mysql_select_db($gl_dbname, $dbh);
 foreach ( $nuke_comments as $key => $hash ) {
 $gl_sid = get_gl_sid($hash['sid']);
 if ( ! $gl_sid ) continue;
 $gl_uid = get_gl_uid($hash['name']);
 
 printf("sid => %-20s ", $gl_sid);
 printf("uid => %3d n", $gl_uid);
 
 $comment_count[$gl_sid]++;
 
 $sql = "insert into $gl_commenttable (nuke_cid, sid, date, title, comment, score, reason, uid) values ";
 $sql .= sprintf("(%d, '%s', '%s', '%s', '%s', %d, %d, %d)",
 $hash['tid'],
 $gl_sid,
 $hash['date'],
 addslashes($hash['subject']),
 addslashes($hash['comment']),
 $hash['score'],
 $hash['reason'],
 $gl_uid
 );
 
 print "$sqln";
 ( mysql_query($sql, $dbh) ) or trigger_error("query failed: [$sql]", E_USER_WARNING);
 }
 // update stories.comments field in GL database
 print_r($comment_count);
 foreach ( $comment_count as $sid => $count ) {
 $sql = "update $gl_storytable set comments = $count where sid = '$sid'";
 print $sql . "n";
 ( mysql_query($sql, $dbh) ) or trigger_error("query failed: [$sql]", E_USER_WARNING);
 }
 
 print "oops, done :o)n";
 
 // **************************************** */
 
 
 function get_gl_uid ($username)
 {
 global $dbh, $gl_dbname, $gl_usertable;
 mysql_select_db($gl_dbname, $dbh);
 $sql = "select uid from $gl_usertable where LOWER(username) = '"
 . strtolower($username) . "'";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $rv = @mysql_result($res, 0, 0);
 $rv = trim($rv);
 
 return (($rv) ? $rv : 1 ); // default 1 => Anonymous
 }
 
 function get_gl_sid ($nuke_sid)
 {
 global $dbh, $gl_dbname, $gl_storytable;
 mysql_select_db($gl_dbname, $dbh);
 $sql = "select sid from $gl_storytable where nuke_sid = '$nuke_sid'";
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 
 return ( @mysql_result($res, 0, 0) );
 }
 
 function get_gl_tid ($nuke_tid, $dbh)
 {
 global $gl_dbname, $gl_topictable;
 $sql = "select tid from $gl_topictable where nuke_tid = '$nuke_tid'";
 
 mysql_select_db($gl_dbname, $dbh);
 $res = mysql_query($sql, $dbh) or die("query failed [$sql]n");
 $gl_tid = @mysql_result($res, 0,0);
 
 return ($gl_tid) ? $gl_tid : 'General';
 }
 
 function aid_to_gl_uid ($aid, $aid_to_username, $gl_users)
 {
 $rv = 1; // default for maxtinternal.stories.uid
 $username = $aid_to_username[strtolower($aid)];
 printf("username => %-10s ", $username);
 foreach ( $gl_users as $uname => $uid ) {
 if ( strtolower($username) == strtolower($uname) ) {
 $rv = $uid;
 break;
 }
 }
 
 return $rv;
 }
 
 function space_to_underscore ($str)
 {
 $rv = NULL;
 for ( $i = 0; $i < strlen($str); $i++ ) {
 $char = $str[$i];
 if (ord($char) == 32) { $char = '_'; } // space
 $rv .= $char;
 }
 return $rv;
 }
 
 function my_array_map ($func, &$ary)
 {
 settype($ary, "array");
 for ($i = 0; $i < count($ary); $i++) {
 $ary[$i] = $func($ary[$i]);
 }
 }
 
 function strtolower_wrapper ($str)
 {
 return strtolower($str);
 }
 
 function connect_db ($dbhost, $dbuser, $dbpass)
 {
 $dbh = mysql_pconnect($dbhost, $dbuser, $dbpass);
 if ( !is_resource($dbh) ) {
 return new PEAR_Error('DB connection failed');
 }
 
 return $dbh;
 }
 
 function COM_makesid ()
 {
 $sid = date("YmdHis");
 srand((double)microtime()*1000000);
 $sid .= rand(0,999);
 
 return $sid;
 }
 
 ?>

 

Status: offline

Blaine

Forum User
Moderator
Registered: 07/16/02
Posts: 1232
Why are those Nuke values 0 or null ?
nuke_uid is 0
username and fullname are ''
Geeklog components by PortalParts -- www.portalparts.com

SAYnoTOpostNUKE

Anonymous
No sure why but in the nuke_user table there is not pn_uid with the value 0 or NULL

SAYnoTOpostNUKE

Anonymous
Here are the 36 field names from a nuke_users table in a postnuke DB. Im not sure if the fact that they have the prefix pn is the problem. Im not even sure now if the script that I got is for postnuke or for phpnuke. Anyway Im still trying to move from postnuke to geeklog but have not been able to do it yet.
pn_uid
pn_name
pn_uname
pn_email
pn_femail
pn_url
pn_user_avatar
pn_user_regdate
pn_user_icq
pn_user_occ
pn_user_from
pn_user_intrest
pn_user_sig
pn_user_viewemail
pn_user_theme
pn_user_aim
pn_user_yim
pn_user_msnm
pn_pass
pn_storynum
pn_umode
pn_uorder
pn_thold
pn_noscore
pn_bio
pn_ublockon
pn_ublock
pn_theme
pn_commentmax
pn_counter
pn_timezone_offset
user_group_cp
user_group_list_cp
user_active_cp
user_lastvisit_cp
user_regdate_cp

Status: offline

bigdaddy

Forum User
Newbie
Registered: 11/20/04
Posts: 3
Well this thread just died. Has anyone gotten an successful conversation from php-nuke to GL ? If so, do you have a script that working?
Take care,
Tim (Surf-Bits.com)

Page navigation