directus-migrator/mysql_to_markdown.php

83 lines
2.1 KiB
PHP

<?php
use voku\db\DB;
use Symfony\Component\Yaml\Yaml;
use Cocur\Slugify\Slugify;
require 'vendor/autoload.php';
@mkdir('markdown');
@mkdir('markdown/posts');
$db = DB::getInstance('localhost', 'root', '123456', 'oreolek');
$slugify = new Slugify();
function get_active($draft)
{
if ($draft == '1')
return FALSE;
return TRUE;
}
function import_posts($db)
{
global $slugify;
$result = $db->query("SELECT * FROM tags")->fetchAllArray();
$tags = [];
foreach($result as $row)
{
$tags[$row['id']] = $row['name'];
}
$posts = $db->query("SELECT * FROM posts")->fetchAllArray();
foreach($posts as $post)
{
$tagarray = [];
$id = $post['id'];
$result = $db->query("SELECT * FROM posts_tags WHERE post_id = $id")->fetchAllArray();
foreach($result as $row)
{
$tagarray[] = $tags[$row['tag_id']];
}
echo $post['name'].PHP_EOL;
$metadata = [
'title' => $post['name'],
'active' => get_active($post['is_draft']),
'published_at' => $post['posted_at'],
'password' => $post['password'],
'tags' => $tagarray,
'extends' => '_layouts.post',
'section' => 'content'
];
$slug = $slugify->slugify($post['name']);
$content = '---'.PHP_EOL.Yaml::dump($metadata).'---'
.PHP_EOL.$post['content'];
$date = new \DateTime($post['posted_at']);
$filename = './markdown/posts/'.$date->format('Y-m-d').'-'.$slug.'.md';
$postarray[$post['id']] = $filename;
file_put_contents($filename, $content);
echo $filename.PHP_EOL;
}
}
function import_pages($db)
{
global $slugify;
$pages = $db->query("SELECT * FROM pages")->fetchAllArray();
foreach($pages as $page)
{
echo $page['name'].PHP_EOL;
$metadata = [
'title' => $page['name'],
'active' => get_active($page['is_draft']),
'extends' => '_layouts.page',
'section' => 'content',
];
$slug = $slugify->slugify($page['name']);
$filename = './markdown/'.$slug.'.md';
$content = '---'.PHP_EOL.Yaml::dump($metadata).'---'
.PHP_EOL.$page['content'];
file_put_contents($filename, $content);
}
}
import_posts($db);
import_pages($db);