function joomla_import in Joomla to Drupal 5
1 string reference to 'joomla_import'
- joomla_menu in ./
joomla.module - Menu callback. Prints a listing of active nodes on the site.
File
- ./
joomla.module, line 155 - The joomla module used for migrate Joomla to Drupal.
Code
function joomla_import($import_type) {
$joomla_database = variable_get('joomla_database', 'joomla');
$joomla_prefix = variable_get('joomla_prefix', 'jos_');
$joomla_update_duplicate = variable_get('joomla_update_duplicate', '0');
$joomla_img_folder = variable_get('joomla_img_folder', '0');
$joomla_path = variable_get('joomla_path', '0');
switch ($import_type) {
case 'user':
$output = "";
$output .= "<h2>Import Joomla Users</h2>";
if (!db_table_exists('{profile_fields}')) {
$output .= "Module Profile not yet installed.";
return $output;
}
//Add Realname to Profile
$results_realname = db_query("SELECT name FROM {profile_fields} WHERE name='profile_realname'");
if (!db_num_rows($results_realname)) {
db_query(" INSERT INTO {profile_fields} (title,name,type,weight) VALUES " . " ('Real Name','profile_realname','textfield','0')");
}
$results_fid = db_query("SELECT fid from {profile_fields} WHERE name='profile_realname'");
$data_fid = db_fetch_object($results_fid);
$fid = $data_fid->fid;
//Check Users
$sql = " SELECT * FROM {$joomla_database}." . $joomla_prefix . "users";
$results = db_query($sql);
$rows = array();
$page = isset($_GET['page']) ? $_GET['page'] : '';
$i = 1 + $page * $items_per_page;
$header = array(
t('#'),
t('Joomla ID'),
t('Username'),
t('Real Name'),
t('Email'),
t('Status'),
t('Register Date'),
t('Import Status'),
);
while ($data = db_fetch_object($results)) {
$id = $data->id;
$username = $data->username;
$realname = addslashes($data->name);
$email = $data->email;
$status = !$data->block;
$registerdate = strtotime($data->registerDate);
$lastvisitdate = strtotime($data->lastvisitDate);
$results_check_user = db_query("SELECT uid,name FROM {users} WHERE name='{$username}'");
$data_user = db_fetch_object($results_check_user);
$uid = $data_user->uid;
$rec_status = 'Exist';
if (!db_num_rows($results_check_user)) {
$rec_status = 'New';
$sql_uid = " SELECT uid FROM {users} ORDER BY uid DESC LIMIT 1";
$results_last_uid = db_query($sql_uid);
$data_last_uid = db_fetch_object($results_last_uid);
$new_uid = $data_last_uid->uid + 1;
$sql_insert = " INSERT INTO {users} (uid,name,mail,status,created,access,language,timezone) " . " values ('{$new_uid}','{$username}','{$email}','{$status}','{$registerdate}','{$lastvisitdate}','en',0)";
db_query($sql_insert);
$uid = $data_last_uid;
}
//Check and Update Realname
$results_profile_values = db_query("SELECT * FROM {profile_values} WHERE fid={$fid} AND uid={$uid}");
if (!db_num_rows($results_profile_values)) {
db_query("INSERT INTO {profile_values} (fid,uid,value) VALUES ({$fid},{$uid},'{$realname}')");
}
$results_last_uid = db_query("SELECT uid from {users} ORDER BY uid DESC LIMIT 1");
$data_last_uid = db_fetch_object($results_last_uid);
$uid = $data_last_uid->uid;
db_query("UPDATE {sequences} SET id={$uid} WHERE name='users_uid' ");
$rows[] = array(
$i++,
$id,
l($username, "user/{$uid}"),
$realname,
$email,
$status,
$registerdate,
$rec_status,
);
}
break;
case 'section':
$output = "";
$output .= "<h2>Import Joomla Sections and Categories</h2>";
$sql = " SELECT * FROM {$joomla_database}." . $joomla_prefix . "sections";
$results = db_query($sql);
$rows = array();
$page = isset($_GET['page']) ? $_GET['page'] : '';
$i = 1 + $page * $items_per_page;
$header = array(
'#',
'ID',
'Section Title',
'Section Name',
'Import Status',
);
//Joomla Sections to Drupal
while ($data = db_fetch_object($results)) {
$sec_id = $data->id;
$sec_title = addslashes($data->title);
$sec_name = addslashes($data->name);
$sql_check = "SELECT name FROM {vocabulary} WHERE name='{$sec_title}'";
$results_check = db_query($sql_check);
$rec_status = 'Exist';
//Insert Sections
if (!db_num_rows($results_check)) {
$rec_status = 'New';
$sql_insert = " INSERT INTO {vocabulary} (name,description,hierarchy,weight) " . " values ('{$sec_title}','{$sec_name}',1,0)";
db_query($sql_insert);
}
//Take Vocabulary ID
$sql_vid = "SELECT vid FROM {vocabulary} WHERE name='{$sec_title}'";
$results_vid = db_query($sql_vid);
$data_vid = db_fetch_object($results_vid);
$vid = $data_vid->vid;
//Retrieve and Insert categories
$sql_cat = " SELECT id,title,name,section FROM {$joomla_database}." . $joomla_prefix . "categories " . " WHERE section='{$sec_id}'";
$results_cat = db_query($sql_cat);
while ($data_cat = db_fetch_object($results_cat)) {
$cat_id = $data_cat->id;
$cat_title = addslashes($data_cat->title);
$cat_name = addslashes($data_cat->name);
//Check if cat exist
$sql_check_cat = "SELECT name FROM {term_data} WHERE name='{$cat_title}'";
$results_check_cat = db_query($sql_check_cat);
if (!db_num_rows($results_check_cat)) {
$sql_insert_cat = " INSERT INTO {term_data} (vid,name,description,weight) " . " values ({$vid},'{$cat_title}','{$cat_name}',0)";
db_query($sql_insert_cat);
//Take Term ID
$sql_tid = "SELECT tid FROM {term_data} WHERE vid={$vid} AND name='{$cat_title}'";
$results_tid = db_query($sql_tid);
$data_tid = db_fetch_object($results_tid);
$tid = $data_tid->tid;
$sql_insert_hierarchy = " INSERT INTO {term_hierarchy} (tid,parent) " . " values ('{$tid}','0')";
db_query($sql_insert_hierarchy);
}
}
//Update id
$results_last_id = db_query("SELECT vid AS last_id from {vocabulary} ORDER BY vid DESC LIMIT 1");
$data_last_id = db_fetch_object($results_last_id);
$last_id = $data_last_id->last_id;
db_query("UPDATE {sequences} SET id={$last_id} WHERE name='vocabulary_vid' ");
$results_last_id = db_query("SELECT tid AS last_id from {term_data} ORDER BY tid DESC LIMIT 1");
$data_last_id = db_fetch_object($results_last_id);
$last_id = $data_last_id->last_id;
db_query("UPDATE {sequences} SET id={$last_id} WHERE name='term_data_tid' ");
$rows[] = array(
$i++,
$sec_id,
$sec_title,
$sec_name,
$rec_status,
);
}
break;
case 'content':
$output = "";
$output .= "<h2>Import Joomla Contents</h2>";
$joomla_input_format = variable_get('joomla_input_format', '1');
if ($joomla_input_format == 0) {
$input_format = 1;
}
else {
$input_format = 3;
}
$table_content = "{$joomla_database}.{$joomla_prefix}" . "content";
$table_user = "{$joomla_database}.{$joomla_prefix}" . "users";
$sql_content = " SELECT * FROM {$table_content} c INNER JOIN {$table_user} u ON c.created_by=u.id";
$results_content = db_query($sql_content);
$rows = array();
$page = isset($_GET['page']) ? $_GET['page'] : '';
$i = 1 + $page * $items_per_page;
$header = array(
'#',
'ID Joomla/Drupal',
'Title',
'Import Status',
);
$images = array();
while ($data_content = db_fetch_object($results_content)) {
//Check if content title already exists
$content_nid = $data_content->id;
$content_title = addslashes($data_content->title);
$content_name = $data_content->username;
//Get uid
$results_get_uid = db_query("SELECT uid from {users} WHERE name= '{$content_name}'");
$data_get_uid = db_fetch_object($results_get_uid);
$content_uid = $data_get_uid->uid;
$content_status = $data_content->state;
$content_created = strtotime($data_content->created);
$content_changed = strtotime($data_content->modified);
$content_comment = 0;
if ($data_content->sectionid == 0) {
$content_type = 'page';
}
else {
$content_type = 'story';
}
$content_moderate = 0;
$content_sticky = 0;
$content_teaser = addslashes($data_content->introtext);
$content_body = $content_teaser . "<p></p>" . addslashes($data_content->fulltext);
$content_body = str_replace("{mospagebreak}", "", $content_body);
//images
$images = array();
if ($data_content->images) {
//$output .= $content_title;
$images = explode("\n", $data_content->images);
//$output .= $images[0]."<br />";
$image_string = '{mosimage}';
//Teaser
$n = 0;
$images_items = array();
while (!(strpos($content_teaser, $image_string) === false)) {
//$output .= "Ada <br />";
$images_items = explode("|", $images[$n]);
if (!file_exists("files/" . $joomla_img_folder)) {
mkdir("files/" . $joomla_img_folder);
}
if (dirname($images_items[0])) {
if (!file_exists("files/" . $joomla_img_folder . "/" . dirname($images_items[0]))) {
mkdir("files/" . $joomla_img_folder . '/' . dirname($images_items[0]));
}
}
copy($joomla_path . "/images/stories/" . $images_items[0], "files/{$joomla_img_folder}/" . $images_items[0]);
$images_replace = '<img src="files/' . $joomla_img_folder . '/' . $images_items[0] . ' align="' . $images_items[1] . '" title="' . $images_items[2] . '" alt="' . $images_items[2] . '">';
$content_teaser = substr_replace($content_teaser, $images_replace, strpos($content_teaser, $image_string), 10);
$n++;
}
//Body
$n = 0;
$images_items = array();
while (!(strpos($content_body, $image_string) === false)) {
$images_items = explode("|", $images[$n]);
if (!file_exists("files/" . $joomla_img_folder)) {
mkdir("files/" . $joomla_img_folder);
}
if (dirname($images_items[0])) {
if (!file_exists("files/" . $joomla_img_folder . "/" . dirname($images_items[0]))) {
mkdir("files/" . $joomla_img_folder . '/' . dirname($images_items[0]));
}
}
copy($joomla_path . "/images/stories/" . $images_items[0], "files/{$joomla_img_folder}/" . $images_items[0]);
$images_replace = '<img src="/files/' . $joomla_img_folder . '/' . $images_items[0] . '" ' . ' align="' . $images_items[1] . '" title="' . $images_items[2] . '" alt="' . $images_items[2] . '">';
//$content_body = str_replace($image_string, $images_replace, $content_body,1);
$content_body = substr_replace($content_body, $images_replace, strpos($content_body, $image_string), 10);
$n++;
}
}
//Check Frontpage
$sql_check_fp = " SELECT content_id FROM {$joomla_database}." . $joomla_prefix . "content_frontpage " . " WHERE content_id='{$content_nid}'";
$results_check_fp = db_query($sql_check_fp);
if (db_num_rows($results_check_fp)) {
$content_promote = 1;
}
else {
$content_promote = 0;
}
//Check content/node exists
$rec_status = 'Ignore';
$sql_check_content = "SELECT title FROM {node} WHERE title='{$content_title}'";
$results_check_content = db_query($sql_check_content);
if (!db_num_rows($results_check_content)) {
$rec_status = 'Insert';
//get last nid
$results_last_id = db_query("SELECT nid AS id from {node} ORDER BY nid DESC LIMIT 1");
$data_last_id = db_fetch_object($results_last_id);
$last_nid = $data_last_id->id + 1;
$sql_insert_content = " INSERT INTO {node} " . "(nid,vid,type,title,uid,status, " . " created,changed,comment,promote,moderate,sticky) " . " values ({$last_nid},{$last_nid},'{$content_type}','{$content_title}','{$content_uid}'," . " '{$content_status}'," . " '{$content_created}','{$content_changed}','{$content_comment}','{$content_promote}', " . " '{$content_moderate}','{$content_sticky}')";
db_query($sql_insert_content);
//Intro and Body
$sql_insert_rev = " INSERT INTO {node_revisions} " . "(nid,vid,uid,title,body,teaser,timestamp,format) " . " values ({$last_nid},{$last_nid},'{$content_uid}','{$content_title}','{$content_body}', " . " '{$content_teaser}'," . " '{$content_changed}','{$input_format}')";
db_query($sql_insert_rev);
$rows[] = array(
$i++,
$content_nid . "/" . $last_nid,
l(t("{$content_title}"), "node/{$last_nid}"),
$rec_status,
);
}
else {
if ($joomla_update_duplicate) {
$rec_status = 'Update';
$results_last_id = db_query("SELECT nid AS id from {node} WHERE title='{$content_title}' ");
$data_last_id = db_fetch_object($results_last_id);
$last_nid = $data_last_id->id;
$sql_update_content = " UPDATE {node} " . " SET type='{$content_type}', uid='{$content_uid}', status='{$content_status}', " . " created='{$content_created}', changed='{$content_changed}' " . " WHERE nid='{$last_nid}'";
db_query($sql_update_content);
//Intro and Body
$sql_update_rev = " UPDATE {node_revisions} " . " SET uid='{$content_uid}', " . " body='{$content_body}', teaser='{$content_teaser}',timestamp='{$content_changed}', " . " format='{$input_format}' " . " WHERE nid='{$last_nid}'";
db_query($sql_update_rev);
$rows[] = array(
$i++,
$content_nid . "/" . $last_nid,
l(t("{$content_title}"), "node/{$last_nid}"),
$rec_status,
);
}
}
}
//Update id
$results_last_id = db_query("SELECT nid AS id from {node} ORDER BY nid DESC LIMIT 1");
$data_last_id = db_fetch_object($results_last_id);
$last_nid = $data_last_id->id;
db_query("UPDATE {sequences} SET id={$last_nid} WHERE name='node_nid' ");
db_query("UPDATE {sequences} SET id={$last_nid} WHERE name='node_revisions_vid' ");
break;
}
$output .= theme('table', $header, $rows);
$output .= theme('pager', NULL, $items_per_page, 0);
return $output;
}