Submitted by ogi on Fri, 2011-04-01 00:52
Имам блог от преди 7 години и няколко дена. Отначало беше на WordPress, после ужасен от грозния и надупчен като швейцарско сирене код минах на симпатичния Serendipity. Сега е третата миграция към Drupal, който ще използвам за много по-сложни от блог неща. Старите URL-и работят. Не знам дали си струва усилието и замърсяването на пространството на URL-и. Коментарите и категориите също са прехвърлени, като дървовидната им структура е запазена. Ето скриптът, който използвах, като странното форматиране на array е заради Emacs:
<?php
function strip_q($s) {
return str_replace(array('\"'), array('"'), $s);
}
$_SERVER['HTTP_HOST'] = 'fire.tower.3.bg';
$_SERVER['SCRIPT_NAME'] = '/s9y.php';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$user = user_load(1); // for node_object_prepare()
$conn = new PDO('pgsql:host=localhost;dbname=s9y','s9y','s9y');
$categoryid__tid = array();
foreach ($conn->query('SELECT * FROM serendipity_category ORDER BY categoryid') as $row) {
$term = new StdClass;
$term->vid = 1;
$term->name = $row['category_name'];
$term->description = $row['category_description'];
if (!empty($category__term[$row['parentid']])) {
$term->parent = array($categoryid__tid[$row['parentid']]);
}
taxonomy_term_save($term);
$categoryid__tid[$row['categoryid']] = $term->tid;
}
$entryid__tids = array();
foreach ($conn->query('SELECT * FROM serendipity_entrycat') as $row) {
if (!empty($categoryid__tid[$row['categoryid']])) {
$entryid__tids[$row['entryid']][] = $categoryid__tid[$row['categoryid']];
}
}
$entryid__alias = array();
foreach ($conn->query('SELECT * FROM serendipity_permalinks WHERE type=\'entry\'') as $row) {
$entryid__alias[$row['entry_id']] = $row['permalink'];
}
$entryid__nid = array();
foreach ($conn->query('SELECT * FROM serendipity_entries ORDER BY timestamp') as $row) {
$node = new StdClass;
$node->type = 'article';
$node->language = 'bg';
node_object_prepare($node);
$node->created = $row['timestamp']; // back to original publishing date
$node->title = strip_q($row['title']);
$node->body[LANGUAGE_NONE][] =
array('value' => strip_q($row['body']),
'summary' => text_summary(strip_q($row['body'])),
'format' => 'full_html');
foreach ($entryid__tids[$row['id']] as $tid) {
$node->field_tags[LANGUAGE_NONE][]['tid'] = $tid;
}
$node->path = array('alias' => $entryid__alias[$row['id']]);
var_dump($node);
node_save($node);
$entryid__nid[$row['id']] = $node->nid;
}
$commentid__cid = array();
foreach ($conn->query('SELECT * FROM serendipity_comments ORDER BY id') as $row) {
$_SERVER['REMOTE_ADDR'] = $row['ip'];
$comment = new StdClass;
$comment->nid = $entryid__nid[$row['entry_id']];
$comment->mail = $row['email'];
$comment->homepage = $row['url'];
$comment->name = $row['author'];
$comment->status = COMMENT_PUBLISHED;
$comment->created = $row['timestamp'];
$comment->subject = !empty($row['title']) ? strip_q($row['title']) : '(без заглавие)';
$comment->comment_body[LANGUAGE_NONE][] =
array('value' => strip_q($row['body']),
'format' => 'filtered_html');
$comment->language = 'bg';
$comment->uid = drupal_anonymous_user()->uid;
$comment->pid = $commentid__cid[$row['parent_id']];
var_dump($comment);
comment_save($comment);
$commentid__cid[$row['id']] = $comment->cid;
}
- Log in to post comments