After a lot of goggling I came to a conclusion that there are scripts for migrating drupal 5 db to drupal 6 db. In fact drupal itself provides upgrading mechanism for druapal 5 -> drupal 6. But somehow neither drupal nor someone else has provided any way to migrate drupal book from d5 to d6.
Drupal 5 book is fairly simple in managing its hierarchy as it manages entire hierarchy using parent and weight etc fields but drupal 6 is little tough to understand , specifically menu_link table, which has p1,p2,p3 for managing book hierarchy, this table is introduced in D6 only..
After investing quite a few quality hours , we (our team) have created a script which can migrate d5 book to d6 book. Logically it can be improved , I mean few loops can be reduced, naming conventions can be made better but idea behind this script was to use it one time as a migration engine , so those points were ignored for now. If possible we will upload new version with polished logic, but I hope this would solve some ones concern and thus our work will come handy to drupal community,
Please find following for the scirpt..
<?php
/**
* This script is for drupal 5 to drupal 6 data migration of book.
* @author Virtueinfo web technologies Pvt.Ltd.(India).
* http://www.drupaldevelopment.in
*
/**
* used for database connection.
*/
$ss__Mysqlserver = "localhost"; // Server name
$ss__MysqluserName = "<Put database Username here>";
$ss__MysqlPassword = "<Put database Password here>";
$connection = mysql_connect($ss__Mysqlserver,$ss__MysqluserName,$ss__MysqlPassword);
$sn__query = "SELECT DISTINCT(nid) FROM book";
$count = 0;
$sn__result = mysql_db_query('<Put Drupal5 database name here>', $sn__query) or die(mysql_error() . "<br />" . $sn__query);
while($sn__row = mysql_fetch_array($sn__result))
{
$parentNodeArray[$sn__row['nid']] = getLevel($sn__row['nid'], 0,$sn__row['nid']);
}
mysql_free_result($sn__result);
/**
*
* Array variables
*/
global $as__taxonomyTermArray;
global $as__arrayMain,$an__arrayParent,$as__childNodeArray,$as__childNodeArrayFinal,
$as__newChildParentArray,$an__arrayForHasChildren;
static $arrayContent = array();
static $arrayContent1 = array();
static $parentData = array();
$aDepth = array();
$as__taxonomyTermArray = array();
$arrayMy = array();
$depthArray = array();
$as__arrayMain = array();
$an__arrayParent = array();
$depthArrayFinal = array();
$as__newChildParentArray = array();
$an__arrayForHasChildren = array();
$alreadyInserted = array();
/**
* Function to get book level.
*
* This function is used to get level of all book pages for hierarchy.
*
* @param
* $sn__id sn__id used for book node id.
* @param
* $sn__lvl sn__lvl used for book level.
* @param
* $sn__lastNodeID sn__lastNodeID to get ID of last node.
* @return
* levels of book.
*/
function getLevel($sn__id, $sn__lvl,$sn__lastNodeID)
{
$sn__lvl++;
$sn__query = "SELECT parent FROM book WHERE nid = '" . $sn__id . "' ORDER BY vid DESC LIMIT 1";
$sn__result = mysql_db_query('<Put Drupal5 database name here>', $sn__query) or die(mysql_error() . "<br />" . $sn__query);
$sn__parent = 0;
if ( $sn__row = mysql_fetch_array($sn__result) )
{
$sn__parent = $sn__row['parent'];
}
if ($sn__parent == 0) return $sn__lvl;
return getLevel($sn__parent, $sn__lvl,$sn__lastNodeID);
}
mysql_query("SET NAMES UTF8");
//delete any previously added data
$sn__queryForSelectedNodeTypes = mysql_query("SELECT n.nid FROM <Put Drupal6 database name here>.node AS n WHERE n.type IN('book')");
while($sn__dataNodeTypes = mysql_fetch_row($sn__queryForSelectedNodeTypes))
{
removeAllNodeData($sn__dataNodeTypes[0]);
}
/**
* Function used for remove all old data.
*
* This function is used to delete previously added data.
*
* @param
* $sn__nodeId sn__nodeId to get id of node.
*/
function removeAllNodeData($sn__nodeId)
{
$query = "DELETE FROM <Put Drupal6 database name here>.book WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.node WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.node_revisions WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.node_comment_statistics WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.term_node WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.page_title WHERE nid = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.nodewords WHERE id = $sn__nodeId";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.menu_links WHERE module IN('book')";
mysql_query($query);
$query = "DELETE FROM <Put Drupal6 database name here>.content_type_book WHERE nid = $sn__nodeId";
mysql_query($query);
}
$ss__query = "SELECT
b.nid,
GROUP_CONCAT(DISTINCT bc.nid ORDER BY bc.nid)
FROM
<Put Drupal5 database name here>.book AS b
LEFT JOIN
<Put Drupal5 database name here>.book AS bc
ON
b.nid = bc.parent
GROUP BY
b.nid";
$ss__getAllNodes = mysql_query($ss__query);
$count = 0;
$sn__Count = 0;
$ss_childString = "";
$ssMain = "";
while ($an__row = mysql_fetch_array($ss__getAllNodes))
{
$an__arrayParent[] = $an__row[0];
$ssMain .= $an__row[1].",";
$as__arrayMain[] = $an__row;
$as__childNodeArrayFinal[$an__row[0]][0] = NULL;
$ss_childString .= $an__row[1].",";
$tempArray = explode(",",trim($an__row[1],","));
if($an__row[1] != NULL)
{
$an__arrayForHasChildren[] = $an__row[0];
}
foreach($tempArray as $childLocal)
{
$as__childNodeArrayFinal[$an__row[0]][$childLocal] = NULL;
$as__newChildParentArray[$childLocal] = $an__row[0];
}
}
$as__childNodeArray = explode(",",trim($ss_childString,","));
$depthArray = explode(",",$ssMain);
//For parent of book.
foreach($as__arrayMain as $an__row)
{
$sn__bookParentId = $an__row[0];
$as__childId = explode(",",$an__row[1]);
$sn__Count += substr_count($an__row[1],",");
$as__bookParentData = getBookDataForParent($sn__bookParentId);
$as__bookBody = getBookBody($sn__bookParentId);
$as__bookTeaser = getBookTeaser($sn__bookParentId);
$as__bookParentWeight = getBookWeight($sn__bookParentId);
$as__pageTitle = getBookPageTitle($sn__bookParentId);
$as__bookMete = getBookMetaTags($sn__bookParentId);
// First Insert the Parents to node and book table
$sn__newParentNodeMLid = 0;
if(!in_array($sn__bookParentId,$as__childNodeArray))
{
//Put parent here...
$arrayContent[] = $sn__bookParentId;
$parentData[$sn__bookParentId] = 0;
$sn__newParentNodeId = insertIntoNodeTable($sn__bookParentId,$as__bookParentData,
$as__bookBody,$as__bookTeaser,$as__pageTitle,$as__bookMete);
$as__childNodeArrayFinal[$sn__bookParentId][0] = $sn__newParentNodeId;
$sn__newMlid = insertInMenuLinkTable($sn__newParentNodeId , $as__bookParentData,FALSE,$sn__bookParentId,$as__bookParentWeight);
insertInBookTable($sn__newMlid, $sn__newParentNodeId);
$parentData[$sn__bookParentId] = $sn__newParentNodeId;
$sn__newParentNodeMLid = $sn__newMlid;
$count ++;
}
if(!in_array($as__childId,$parentData) )
{
// For child of book.
if (is_array($as__childId))
{
foreach ($as__childId as $sn__bookChlidId)
{
$arrayContent = array();
$arrayContent[] = $sn__bookChlidId;
$as__bookChildData = getBookDataForChild($sn__bookChlidId);
$as__bookChildBody = getBookBody($sn__bookChlidId);
$as__teaserBook = getBookTeaser($sn__bookChlidId);
$as__bookChildWeight = getBookWeight($sn__bookChlidId);
$as__pageTitle = getBookPageTitle($sn__bookChlidId);
$as__bookMete = getBookMetaTags($sn__bookChlidId);
$parentData[$sn__bookChlidId] = 0;
$cntr = 0;
foreach($as__bookChildData as $as__bookChilds)
{
$sn__newChildNodeId = insertIntoChildNodeTable($sn__bookChlidId,$as__bookChilds,
$as__bookChildBody,$as__teaserBook,$as__pageTitle,$as__bookMete);
$alreadyInserted[] = $sn__bookChlidId;
$as__childNodeArrayFinal[$as__newChildParentArray[$sn__bookChlidId]][$sn__bookChlidId] = $sn__newChildNodeId;
if(array_key_exists($sn__bookChlidId,$as__childNodeArrayFinal))
{
$as__childNodeArrayFinal[$sn__bookChlidId][0] = $sn__newChildNodeId;
}
$sn__newMlid = insertInMenuChildLinkTable($sn__newChildNodeId , $as__bookChilds,$sn__newParentNodeId,$sn__bookChlidId,
$sn__newParentNodeMLid,$as__bookChildWeight);
insertInBookTable($sn__newMlid, $sn__newChildNodeId,$sn__newParentNodeId);
$parentData[$sn__bookChlidId] = $sn__newChildNodeId;
$count++;
}
}
}
}
}
/**************************node complete***********************************/
/* for p series in menulink update*/
$sn__query = "select mlid from <Put Drupal6 database name here>.menu_links where module = 'book' order by mlid";
$sn__result = mysql_query($sn__query);
while($sn__data = mysql_fetch_array($sn__result))
{
getPseries($sn__data[0]);
}
/**
* Function to get book weight.
*
* This function is used to get book weight.
*
* @param
* $sn__oldNodeId sn__oldNodeId to get ID of old node id.
* @return
* resultsn__resultDataforWeight.
*/
function getBookWeight($sn__oldNodeId)
{
$sn__query = mysql_query("SELECT
b.weight
FROM
<Put Drupal5 database name here>.book AS b
WHERE
b.nid =$sn__oldNodeId
ORDER BY
b.vid DESC
LIMIT 0,1");
$sn__resultDataforWeight = @mysql_fetch_row($sn__query);
return $sn__resultDataforWeight[0];
}
/**
* Function used to insert parentdata into node table
*
* This function is used to insert data into node table.
*
* @param
* $sn__nodeId id of book node.
* @param
* array $as__arrayNodeDetailArray array of node details.
* @param
* $nodeRevisionData data bout node revision.
* @param
* $as__nodeRevisionData array to get teaser value.
* @param
* $as__bookArray array of book.
* @param
* $as__bookTags to get book tags.
* @return integer $o__nodeId.
*/
function insertIntoNodeTable($sn__nodeId, $as__arrayNodeDetailArray,$as__nodeRevisionData,
$as__teaserArray,$as__bookArray,$as__bookTags)
{
$sn__tempVidSql = "select max(vid) from <Put Drupal6 database name here>.node_revisions";
$sn__recVid = mysql_query($sn__tempVidSql);
$sn__dataVid = mysql_fetch_row($sn__recVid);
$sn__vid = $sn__dataVid[0] + 1;
$ss__type = $as__arrayNodeDetailArray[0][1];
$ss__title = pretext($as__arrayNodeDetailArray[0][2]);
$sn__created = $as__arrayNodeDetailArray[0][5];
$sn__changed = $as__arrayNodeDetailArray[0][6];
$ss__body = pretext($as__nodeRevisionData[0]);
$ss__teaser = pretext($as__nodeRevisionData[1]);
$ss__teaserBook = pretext($as__teaserArray[0]);
$ss__pageTitleBook = pretext($as__bookArray[0]);
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.node (type,vid,title,uid,status,created,changed)
VALUES
('$ss__type',$sn__vid,'$ss__title',1,1,$sn__created,$sn__changed) ";
mysql_query($sm__nodeQuery);
$sn__nodeQuery1 = "SELECT nid FROM <Put Drupal6 database name here>.node ORDER BY nid DESC LIMIT 0,1";
$sn__nodeQuery1 = mysql_query($sn__nodeQuery1);
while($o__nodeData = mysql_fetch_object($sn__nodeQuery1))
{$o__nodeId = $o__nodeData;}
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.node_revisions (nid,uid,title,body,teaser,format)
VALUES
($o__nodeId->nid,1,'$ss__title','$ss__body','$ss__teaser',1)";
mysql_query($sm__nodeQuery);
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.content_type_book (nid,vid,field_teaser_value)
VALUES
($o__nodeId->nid,$sn__vid,'$ss__teaserBook')";
mysql_query($sm__nodeQuery);
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.page_title (type,id,page_title)
VALUES
('node',$o__nodeId->nid,'$ss__pageTitleBook')";
mysql_query($sm__nodeQuery);
$ss__bookMeteData = array();
foreach ($as__bookTags as $sn__key => $ss__value)
{
$sn__bookKeys = $sn__key;
$ss__bookMeteData['value'] = $ss__value;
$ss__bookMetaTags = pretext(serialize($ss__bookMeteData));
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.nodewords
(type,id,name,content)
VALUES
(5,$o__nodeId->nid,'$sn__bookKeys','$ss__bookMetaTags')";
mysql_query($sm__nodeQuery);
}
$sn__nodeQuery4 = "SELECT vid FROM <Put Drupal6 database name here>.node_revisions ORDER BY nid DESC LIMIT 0,1";
$sn__nodeQuery4 = mysql_query($sn__nodeQuery4);
while($o__objects = mysql_fetch_object($sn__nodeQuery4))
{
$sn__nodeQuery = "UPDATE <Put Drupal6 database name here>.node SET vid = ".$o__objects->vid." WHERE nid =".$o__nodeId->nid;
mysql_query($sn__nodeQuery);
}
$sn__nodeForwardStatisticsQuery = "INSERT INTO <Put Drupal6 database name here>.forward_statistics (nid) VALUES ($o__nodeId->nid)";
mysql_query($sn__nodeForwardStatisticsQuery);
$time = time();
$sn__nodenodeCommentStatisticsQuery = "INSERT INTO
<Put Drupal6 database name here>.node_comment_statistics
(nid,last_comment_timestamp)
VALUES
($o__nodeId->nid,$time)";
mysql_query($sn__nodenodeCommentStatisticsQuery);
$sn__nodeHistoryQuery = "INSERT INTO <Put Drupal6 database name here>.history (uid,nid,timestamp) VALUES (1,$o__nodeId->nid,$time)";
mysql_query($sn__nodeHistoryQuery);
return $o__nodeId->nid;
}
/**
* used to insert data into bookchild node table
* This function is used to insert data into child node table.
*
* @param
* $sn__nodeId id of book node.
* @param
* $as__arrayNodeDetailArray array of node details.
* @param
* $as__nodeRevisionData data bout node revision.
* @param
* $as__teaserArray array to get teaser value.
* @param
* $as__bookArray array of book.
* @param
* $bookTags to get book tags.
* @return integer $o__nodeId.
*/
function insertIntoChildNodeTable($sn__nodeId, $as__arrayNodeDetailArray,$as__nodeRevisionData,
$as__teaserArray,$as__bookArray,$as__bookTags)
{
$sn__tempVidSql = "select max(vid) from <Put Drupal6 database name here>.node_revisions";
$sn__recVid = mysql_query($sn__tempVidSql);
$sn__dataVid = mysql_fetch_row($sn__recVid);
$sn__vid = $sn__dataVid[0] + 1;
$ss__type = $as__arrayNodeDetailArray[1];
$ss__title = pretext($as__arrayNodeDetailArray[2]);
$sn__created = $as__arrayNodeDetailArray[5];
$sn__changed = $as__arrayNodeDetailArray[6];
$ss__body = pretext($as__nodeRevisionData[0]);
$ss__teaser = pretext($as__nodeRevisionData[1]);
$ss__teaserBook = pretext($as__teaserArray[0]);
$ss__pageTitleBook = pretext($as__bookArray[0]);
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.node
(type,vid,title,uid,status,created,changed)
VALUES
('$ss__type',$sn__vid,'$ss__title',1,1,$sn__created,$sn__changed) ";
$sn__recNid = mysql_query($sm__nodeQuery);
$sn__nodeQuery1 = "SELECT nid FROM <Put Drupal6 database name here>.node ORDER BY nid DESC LIMIT 0,1";
$sn__nodeQuery1 = mysql_query($sn__nodeQuery1);
while($o__nodeData = mysql_fetch_object($sn__nodeQuery1))
{$o__nodeId = $o__nodeData;}
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.node_revisions
(nid,uid,title,body,teaser,format)
VALUES
($o__nodeId->nid,1,'$ss__title','$ss__body','$ss__teaser',1)";
mysql_query($sm__nodeQuery);
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.content_type_book (nid,vid,field_teaser_value) VALUES ($o__nodeId->nid,$sn__vid,'$ss__teaserBook')";
mysql_query($sm__nodeQuery);
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.page_title (type,id,page_title) VALUES ('node',$o__nodeId->nid,'$ss__pageTitleBook')";
mysql_query($sm__nodeQuery);
$ss__bookMeteData = array();
foreach ($as__bookTags as $sn__key => $ss__value)
{
$sn__bookKeys = $sn__key;
$ss__bookMeteData['value'] = $ss__value;
$ss__bookMetaTags = pretext(serialize($ss__bookMeteData));
$sm__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.nodewords (type,id,name,content) VALUES (5,$o__nodeId->nid,'$sn__bookKeys','$ss__bookMetaTags')";
mysql_query($sm__nodeQuery);
}
$sn__nodeQuery4 = "SELECT vid FROM <Put Drupal6 database name here>.node_revisions ORDER BY nid DESC LIMIT 0,1";
$sn__nodeQuery4 = mysql_query($sn__nodeQuery4);
while($o__objects = mysql_fetch_object($sn__nodeQuery4))
{
$nodeQuery = "UPDATE <Put Drupal6 database name here>.node SET vid = ".$o__objects->vid." WHERE nid =".$o__nodeId->nid;
mysql_query($nodeQuery);
}
$sn__nodeForwardStatisticsQuery = "INSERT INTO <Put Drupal6 database name here>.forward_statistics (nid) VALUES ($o__nodeId->nid)";
mysql_query($sn__nodeForwardStatisticsQuery);
$time = time();
$sn__nodenodeCommentStatisticsQuery = "INSERT INTO <Put Drupal6 database name here>.node_comment_statistics
(nid,last_comment_timestamp)
VALUES
($o__nodeId->nid,$time)";
mysql_query($sn__nodenodeCommentStatisticsQuery);
$sn__nodeHistoryQuery = "INSERT INTO <Put Drupal6 database name here>.history (uid,nid,timestamp) VALUES (1,$o__nodeId->nid,$time)";
mysql_query($sn__nodeHistoryQuery);
return $o__nodeId->nid;
}
/**
* used for insert data parent menulink.
*
* This function is used to insert data into menu link table.
*
* @param
* $sn__newNodeId new node id of book.
* @param
* array $as__arrayNodeDetail node detail array.
* @param
* $sn__newParentNodeId defauld false.
* @param
* $sn__oldNodeId old node id of book.
* @param
* $sn__weight weight of book defauld 0.
* return integer mlid.
*/
function insertInMenuLinkTable($sn__newNodeId, $as__arrayNodeDetail,$sn__newParentNodeId = false,$sn__oldNodeId = false,$sn__weight=0)
{
global $an__arrayParent,$parentNodeArray,$an__arrayForHasChildren;
$sm__menuName = "book-toc-".$sn__newNodeId;
$sn__plid = $sn__newNodeId;
$ss__link_Title = pretext($as__arrayNodeDetail[0][2]);
$ss__link_path = "node/$sn__newNodeId";
$ss__router_path = "node/%";
$ss__options = "a:0:{}";
$sn__depth = $parentNodeArray[$sn__oldNodeId];
$has_children = (in_array($sn__oldNodeId,$an__arrayForHasChildren)) ? 1 : 0 ;
$p1 = "";
$ss__module = 'book';
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.menu_links
(menu_name,plid,link_path,router_path,
link_title,options,module,depth,has_children,weight)
VALUES
('$sm__menuName',0,'$ss__link_path','$ss__router_path','$ss__link_Title',
'$ss__options','$ss__module',$sn__depth,$has_children,$sn__weight) ";
mysql_query($sm__nodeQuery);
$sn__nodeQuery1 = "SELECT mlid FROM <Put Drupal6 database name here>.menu_links ORDER BY mlid DESC LIMIT 0,1";
$sn__mlidQuery = mysql_query($sn__nodeQuery1);
while($o__menuLinkData = mysql_fetch_object($sn__mlidQuery))
{$o__nodeId = $o__menuLinkData;}
return $o__nodeId->mlid;
}
/**
* used to insert data in child menulink table
*
* This function is used for inserting data into child menulink table.
*
* @param
* $sn__newNodeId new node id of book.
* @param
* $as__arrayNodeDetail node detail array.
* @param
* $sn__newParentNodeId new book node id default false.
* @param
* $sn__oldNodeId old book node id default false.
* @param
* $sn__parentMenuLinkId parent menulink id default false.
* @param
* $sn__weight weight of book defauld 0.
* @return integer mlid.
*/
function insertInMenuChildLinkTable($sn__newNodeId, $as__arrayNodeDetail,$sn__newParentNodeId = false,$sn__oldNodeId = false,$sn__parentMenuLinkId = false,$sn__weight=0)
{
global $an__arrayParent,$parentNodeArray,$as__newChildParentArray,
$as__childNodeArrayFinal,$an__arrayForHasChildren;
$sm__menuName = "book-toc-".$sn__newParentNodeId;
$sn__plidRow = $as__newChildParentArray[$sn__oldNodeId];
$sn__plidRow = $as__childNodeArrayFinal[$sn__plidRow][0];
$sn__sqlMl = "select mlid from <Put Drupal6 database name here>.menu_links where link_path = 'node/".$sn__plidRow."' LIMIT 1";
$sn__recMl = mysql_query($sn__sqlMl);
$sn__dataMl = mysql_fetch_row($sn__recMl);
$sn__plid = $sn__dataMl[0];
$as__link_Title = pretext($as__arrayNodeDetail[2]);
$ss__link_path = "node/".$sn__newNodeId;
$ss__router_path = "node/%";
$ss__options = "a:0:{}";
$sn__depth = $parentNodeArray[$sn__oldNodeId];
$has_children = (in_array($sn__oldNodeId,$an__arrayForHasChildren)) ? 1 : 0 ;
$ss__module = 'book';
$sm__nodeQuery = "INSERT INTO
<Put Drupal6 database name here>.menu_links
(menu_name,plid,link_path,router_path,link_title,
options,module,depth,has_children,weight)
VALUES
('$sm__menuName',$sn__plid,'$ss__link_path','$ss__router_path',
'$as__link_Title','$ss__options','$ss__module',$sn__depth,$has_children,$sn__weight) ";
mysql_query($sm__nodeQuery);
$sn__nodeQuery1 = "SELECT mlid FROM <Put Drupal6 database name here>.menu_links ORDER BY mlid DESC LIMIT 0,1";
$sn__mlidQuery = mysql_query($sn__nodeQuery1);
while($o__menuLinkData = mysql_fetch_object($sn__mlidQuery))
{$o__nodeId = $o__menuLinkData;}
return $o__nodeId->mlid;
}
/**
* used to insert data into book table.
*
* This function is used to insert data into book table.
*
* @param
* $sn__newMlid new menu link id of menulink table.
* @param
* $sn__newNodeId new node id.
* @param
* $sn__newParentNodeId new parent node id defauly false.
* @return
*/
function insertInBookTable($sn__newMlid, $sn__newNodeId,$sn__newParentNodeId = false)
{
if($sn__newParentNodeId)
{
$sn__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.book
(mlid,nid,bid)
VALUES
($sn__newMlid,$sn__newNodeId,$sn__newParentNodeId)";
}
else
{
$sn__nodeQuery = "INSERT INTO <Put Drupal6 database name here>.book
(mlid,nid,bid)
VALUES
($sn__newMlid,$sn__newNodeId,$sn__newNodeId)";
}
mysql_query($sn__nodeQuery);
return;
}
/**
* used to get book data of child
*
* This function is used to get book data for child.
*
* @param
* $sn__nid id of book node.
* @return string am__childData.
*/
function getBookDataForChild ($sn__nid)
{
$sm__query = "SELECT
DISTINCT(n.nid),
n.type,
n.title,
n.uid,
n.status,
n.created,
n.changed
FROM
<Put Drupal5 database name here>.node as n
INNER JOIN
<Put Drupal5 database name here>.book as b
ON
n.nid = b.nid
WHERE
n.type='book'
AND
b.nid='".$sn__nid."' ORDER BY n.nid ASC";
$sm__getAllNodes = mysql_query($sm__query);
$am__childData = array();
while ($am__row = mysql_fetch_array($sm__getAllNodes))
$am__childData[] = $am__row;
return $am__childData;
}
/**
* used to get parent book data.
*
* This function is used to get book data for parent.
*
* @param
* $sn__parentId parent id.
* @return integer am__parentData.
*/
function getBookDataForParent ($sn__parentId)
{
$sm__query = "SELECT
DISTINCT(n.nid),
n.type,
n.title,
n.uid,
n.status,
n.created,
n.changed
FROM
<Put Drupal5 database name here>.node as n
INNER JOIN
<Put Drupal5 database name here>.book as b
ON
n.nid = '".$sn__parentId."'
WHERE
n.type='book' ORDER BY n.nid ASC";
$sm__getAllNodes = mysql_query($sm__query);
$am__parentData = array();
while ($am__row = mysql_fetch_row($sm__getAllNodes))
$am__parentData[] = $am__row;
return $am__parentData;
}
/**
* to get mlid.
*
* This function is used to get mlid of book table.
*
* @param
* $sn__mlid menulink id.
* @param array $an__resultArray array to get mlid.
*/
function getPseries($sn__mlid,$an__resultArray = array())
{
$sn__query = "select plid from <Put Drupal6 database name here>.menu_links where mlid=$sn__mlid";;
$sn__rec = mysql_query($sn__query);
$an__resultArray[] = $sn__mlid;
$sn__data = mysql_fetch_row($sn__rec);
if($sn__data[0] != 0)
{
$an__resultArray[] = $sn__data[0];
getPseries($sn__data[0],$an__resultArray);
}
else
{
$an__resultArray = array_unique($an__resultArray);
$sn__query = "UPDATE <Put Drupal6 database name here>.menu_links SET ";
$sn__countI = count($an__resultArray);
foreach($an__resultArray as $sn__result)
{
$sn__query .= "p$sn__countI = ". $sn__result.",";
$sn__countI--;
}
$sn__query = trim($sn__query,",");
$sn__query .= " WHERE mlid = ".$an__resultArray[0];
if(count($an__resultArray) > 0)
{
mysql_query($sn__query);
}
}
}
/**
* This function is used for special characters.
*
* @param
* string $ss__text special characters.
* @return string ss__titletext.
*/
function pretext ($ss__text)
{
/* Remove all PHP code from the text */
$ss__text = preg_replace('@<(\?(php)?|%)(.+?)(\?|%)>@se', "''", $ss__text);
$ss__titletext = addslashes($ss__text);
return $ss__titletext;
}
/**
* Function to get book body data.
* @access public.
* @param
* $sn__id book id.
* @return string ss__parentData.
*/
function getBookBody($sn__id)
{
$ss__query = "SELECT
body,teaser
FROM
<Put Drupal5 database name here>.node_revisions
WHERE
nid = '".$sn__id."'
ORDER BY
vid DESC LIMIT 0,1";
$ss__getAllNodes = mysql_query($ss__query);
$ss__row = mysql_fetch_row($ss__getAllNodes);
$ss__parentData = $ss__row;
return $ss__parentData;
}
/**
* Function to get book teaser data.
*
* @param
* $sn__id book id.
* @return string ss__teaserData.
*/
function getBookTeaser($sn__id)
{
$ss__query = "SELECT
teaser
FROM
<Put Drupal5 database name here>.nodeteaser
WHERE
nid = '".$sn__id."'";
$ss__getAllNodes = mysql_query($ss__query);
$ss__row = mysql_fetch_row($ss__getAllNodes);
$ss__teaserData = $ss__row;
return $ss__teaserData;
}
/**
* Function to get book page title.
*
* @param
* $sn__id book id.
* @return string ss__pageTitleData.
*/
function getBookPageTitle($sn__id)
{
$ss__query = "SELECT
page_title
FROM
<Put Drupal5 database name here>.page_title
WHERE
nid = '".$sn__id."'";
$ss__getAllNodes = mysql_query($ss__query);
$ss__row = mysql_fetch_row($ss__getAllNodes);
$ss__pageTitleData = $ss__row;
return $ss__pageTitleData;
}
/**
* Function to get book meta tags.
*
* @param
* $sn__id book id.
* @return string ss__bookMetaData.
*/
function getBookMetaTags($sn__id)
{
$ss__query = "SELECT
name,content
FROM
<Put Drupal5 database name here>.nodewords
WHERE
id = '".$sn__id."'";
$ss__getAllNodes = mysql_query($ss__query);
$ss__bookMetaData = array();
while ($as__row = mysql_fetch_array($ss__getAllNodes))
{
$ss__bookMetaData[$as__row[0]] = $as__row[1];
}
return $ss__bookMetaData;
}
Comments
*_*
First of all, thanks for sharing the code.
This is really a great idea and should be a contrib module. This will make the Drupal 5.x -> 6.x migration more easy.
Regards.
Regards.
🪷 Beautifulmind