diff --git a/public/dumplite/index.php b/public/dumplite/index.php new file mode 100644 index 0000000..cc70757 --- /dev/null +++ b/public/dumplite/index.php @@ -0,0 +1,132 @@ +enableExceptions(true); + +// tables +$sqlite->exec('CREATE TABLE "fm_blog_posts" ("post_id" INTEGER NOT NULL, "user_id" INTEGER DEFAULT NULL, "post_created" INTEGER NOT NULL, "post_published" INTEGER DEFAULT NULL, "post_updated" INTEGER DEFAULT NULL, "post_deleted" INTEGER DEFAULT NULL, "post_safe" INTEGER DEFAULT 0, "post_title" TEXT NOT NULL, "post_text" TEXT NOT NULL, "post_new_url" TEXT DEFAULT NULL);'); +$sqlite->exec('CREATE TABLE "fm_blog_tags" ("tag_id" INTEGER NOT NULL, "tag_name" TEXT NOT NULL, "tag_slug" TEXT NOT NULL UNIQUE, "tag_description" TEXT, "tag_created" INTEGER NOT NULL, PRIMARY KEY("tag_id" AUTOINCREMENT));'); +$sqlite->exec('CREATE TABLE "fm_blog_posts_tags" ("post_id" INTEGER NOT NULL, "tag_id" INTEGER NOT NULL, PRIMARY KEY("tag_id","post_id"), FOREIGN KEY("post_id") REFERENCES "fm_blog_posts"("post_id") ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY("post_id") REFERENCES "fm_blog_posts" ("post_id") ON UPDATE CASCADE ON DELETE CASCADE);'); +$sqlite->exec('CREATE TABLE "fm_blog_wordpress" ("post_id" INTEGER NOT NULL, "wordpress_id" INTEGER NOT NULL UNIQUE, "wordpress_name" TEXT NOT NULL UNIQUE, FOREIGN KEY("post_id") REFERENCES "fm_blog_posts"("post_id") ON UPDATE CASCADE ON DELETE CASCADE, PRIMARY KEY("post_id"));'); +$sqlite->exec('CREATE TABLE "fm_proglangs" ("language_id" INTEGER NOT NULL, "language_name" TEXT NOT NULL UNIQUE, "language_colour" INTEGER DEFAULT NULL, PRIMARY KEY("language_id" AUTOINCREMENT));'); +$sqlite->exec('CREATE TABLE "fm_projects" ("project_id" INTEGER NOT NULL, "project_name" TEXT NOT NULL UNIQUE, "project_name_clean" TEXT DEFAULT NULL UNIQUE, "project_summary" TEXT DEFAULT NULL, "project_description" TEXT DEFAULT NULL, "project_order" INTEGER NOT NULL DEFAULT 0, "project_type" TEXT NOT NULL DEFAULT \'Project\', "project_featured" INTEGER NOT NULL, "project_colour" INTEGER DEFAULT NULL, "project_homepage" TEXT DEFAULT NULL, "project_repository" TEXT DEFAULT NULL, "project_forum" TEXT DEFAULT NULL, "project_created" INTEGER NOT NULL, "project_deleted" INTEGER DEFAULT NULL, "project_archived" INTEGER DEFAULT NULL, PRIMARY KEY("project_id" AUTOINCREMENT));'); +$sqlite->exec('CREATE TABLE "fm_projects_proglangs" ("project_id" INTEGER NOT NULL, "language_id" INTEGER NOT NULL, "priority" INTEGER NOT NULL DEFAULT 0, FOREIGN KEY("project_id") REFERENCES "fm_projects"("project_id") ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY("language_id") REFERENCES "fm_proglangs"("language_id") ON UPDATE CASCADE ON DELETE CASCADE, PRIMARY KEY("project_id","language_id"));'); + +// indices +$sqlite->exec('CREATE INDEX "blog_posts_user_foreign" ON "fm_blog_posts" ("user_id");'); +$sqlite->exec('CREATE INDEX "post_published" ON "fm_blog_posts" ("post_published");'); +$sqlite->exec('CREATE INDEX "post_safe" ON "fm_blog_posts" ("post_safe");'); +$sqlite->exec('CREATE UNIQUE INDEX "blog_tags_slug_unique" ON "fm_blog_tags" ("tag_slug");'); +$sqlite->exec('CREATE UNIQUE INDEX "blog_post_tag_unique" ON "fm_blog_posts_tags" ("post_id", "tag_id");'); +$sqlite->exec('CREATE INDEX "blog_post_tag_foreign" ON "fm_blog_posts_tags" ("tag_id");'); +$sqlite->exec('CREATE UNIQUE INDEX "blog_wordpress_post_foreign" ON "fm_blog_wordpress" ("post_id");'); +$sqlite->exec('CREATE UNIQUE INDEX "blog_wordpress_id_unique" ON "fm_blog_wordpress" ("wordpress_id");'); +$sqlite->exec('CREATE UNIQUE INDEX "blog_wordpress_name_unique" ON "fm_blog_wordpress" ("wordpress_name");'); +$sqlite->exec('CREATE UNIQUE INDEX "language_name" ON "fm_proglangs" ("language_name");'); +$sqlite->exec('CREATE UNIQUE INDEX "project_name" ON "fm_projects" ("project_name");'); +$sqlite->exec('CREATE UNIQUE INDEX "project_name_clean" ON "fm_projects" ("project_name_clean");'); +$sqlite->exec('CREATE INDEX "project_order" ON "fm_projects" ("project_order");'); +$sqlite->exec('CREATE INDEX "project_type" ON "fm_projects" ("project_type");'); +$sqlite->exec('CREATE INDEX "project_archived" ON "fm_projects" ("project_archived");'); +$sqlite->exec('CREATE INDEX "project_deleted" ON "fm_projects" ("project_deleted");'); +$sqlite->exec('CREATE INDEX "project_created" ON "fm_projects" ("project_created");'); +$sqlite->exec('CREATE INDEX "project_featured" ON "fm_projects" ("project_featured");'); +$sqlite->exec('CREATE UNIQUE INDEX "projects_proglangs_unique" ON "fm_projects_proglangs" ("project_id", "language_id");'); +$sqlite->exec('CREATE INDEX "projects_proglangs_language_foreign" ON "fm_projects_proglangs" ("language_id");'); +$sqlite->exec('CREATE INDEX "projects_proglangs_priority_index" ON "fm_projects_proglangs" ("priority");'); + +$rows = $pdo->query('SELECT *, UNIX_TIMESTAMP(`post_created`) AS `post_created`, UNIX_TIMESTAMP(`post_published`) AS `post_published`, UNIX_TIMESTAMP(`post_deleted`) AS `post_deleted` FROM `fm_blog_posts`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_blog_posts` (`post_id`, `user_id`, `post_created`, `post_published`, `post_updated`, `post_deleted`, `post_safe`, `post_title`, `post_text`, `post_new_url`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->post_id); + $insert->bindValue(2, $row->user_id); + $insert->bindValue(3, $row->post_created); + $insert->bindValue(4, $row->post_published); + $insert->bindValue(5, $row->post_updated); + $insert->bindValue(6, $row->post_deleted); + $insert->bindValue(7, $row->post_safe); + $insert->bindValue(8, $row->post_title); + $insert->bindValue(9, $row->post_text); + $insert->bindValue(10, $row->post_new_url); + $insert->execute(); +} + +$rows = $pdo->query('SELECT *, UNIX_TIMESTAMP(`tag_created`) AS `tag_created` FROM `fm_blog_tags`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_blog_tags` (`tag_id`, `tag_name`, `tag_slug`, `tag_description`, `tag_created`) VALUES (?, ?, ?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->tag_id); + $insert->bindValue(2, $row->tag_name); + $insert->bindValue(3, $row->tag_slug); + $insert->bindValue(4, $row->tag_description); + $insert->bindValue(5, $row->tag_created); + $insert->execute(); +} + +$rows = $pdo->query('SELECT * FROM `fm_blog_posts_tags`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_blog_posts_tags` (`post_id`, `tag_id`) VALUES (?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->post_id); + $insert->bindValue(2, $row->tag_id); + $insert->execute(); +} + +$rows = $pdo->query('SELECT * FROM `fm_blog_wordpress`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_blog_wordpress` (`post_id`, `wordpress_id`, `wordpress_name`) VALUES (?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->post_id); + $insert->bindValue(2, $row->wordpress_id); + $insert->bindValue(3, $row->wordpress_name); + $insert->execute(); +} + +$rows = $pdo->query('SELECT * FROM `fm_proglangs`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_proglangs` (`language_id`, `language_name`, `language_colour`) VALUES (?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->language_id); + $insert->bindValue(2, $row->language_name); + $insert->bindValue(3, $row->language_colour); + $insert->execute(); +} + +$rows = $pdo->query('SELECT *, UNIX_TIMESTAMP(`project_created`) AS `project_created`, UNIX_TIMESTAMP(`project_archived`) AS `project_archived`, UNIX_TIMESTAMP(`project_deleted`) AS `project_deleted` FROM `fm_projects`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_projects` (`project_id`, `project_name`, `project_name_clean`, `project_summary`, `project_description`, `project_order`, `project_type`, `project_featured`, `project_colour`, `project_homepage`, `project_repository`, `project_forum`, `project_created`, `project_deleted`, `project_archived`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->project_id); + $insert->bindValue(2, $row->project_name); + $insert->bindValue(3, $row->project_name_clean); + $insert->bindValue(4, $row->project_summary); + $insert->bindValue(5, $row->project_description); + $insert->bindValue(6, $row->project_order); + $insert->bindValue(7, $row->project_type); + $insert->bindValue(8, $row->project_featured); + $insert->bindValue(9, $row->project_colour); + $insert->bindValue(10, $row->project_homepage); + $insert->bindValue(11, $row->project_repository); + $insert->bindValue(12, $row->project_forum); + $insert->bindValue(13, $row->project_created); + $insert->bindValue(14, $row->project_deleted); + $insert->bindValue(15, $row->project_archived); + $insert->execute(); +} + +$rows = $pdo->query('SELECT * FROM `fm_projects_proglangs`')->fetchAll(PDO::FETCH_OBJ); +$insert = $sqlite->prepare('INSERT INTO `fm_projects_proglangs` (`project_id`, `language_id`, `priority`) VALUES (?, ?, ?)'); +foreach($rows as $row) { + $insert->bindValue(1, $row->project_id); + $insert->bindValue(2, $row->language_id); + $insert->bindValue(3, $row->priority); + $insert->execute(); +} + +$sqlite->close(); + +header('Content-Type: application/vnd.sqlite3'); +header('Content-Disposition: attachment; filename="v4.db"'); + +echo file_get_contents($dbName);