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