🚀 Finish the script

This commit is contained in:
Clement Desmidt 2017-02-28 22:26:09 +01:00
parent 24cee9e4c6
commit 51cf511c23
1 changed files with 82 additions and 120 deletions

View File

@ -7,153 +7,115 @@ error_reporting(E_ALL);
require_once(dirname(__FILE__) . '/Idno/start.php'); require_once(dirname(__FILE__) . '/Idno/start.php');
include 'HTML-To-Markdown.php'; include 'HTML-To-Markdown.php';
$garray = [];
$garray['data'] = array();
$garray['data']['posts'] = array();
$garray['data']['tags'] = array();
$garray['data']['posts_tags'] = array();
$garray['data']['users'] = array();
function metas($garray) { $garray = [];
$garray['meta'] = array( $garray['data'] = [];
'exported_on' => date( 'r' ), $garray['data']['posts'] = [];
'version' => '000', $garray['data']['tags'] = [];
); $garray['data']['posts_tags'] = [];
$garray['data']['users'] = [];
function metas(&$garray) {
$garray['meta'] = [
'exported_on' => date( 'r' ),
'version' => '000',
];
} }
function tags() { function posts(&$garray) {
$all_tags = get_tags();
if ( ! empty( $all_tags ) ) { $posts = Idno\Common\Entity::getFromAll([], [], 99999);
foreach ( $all_tags as $tag ) { $slug_number = 0;
$garray['data']['tags'][] = array( $_post_tags = [];
'id' => intval( $tag->term_id ), $i = 1;
'name' => $tag->name,
'slug' => $tag->slug,
'description' => $tag->description,
);
}
}
// cleanup foreach($posts as $post) {
unset( $all_tags ); if ($post instanceof Idno\Entities\Notification) {
unset( $tag ); continue;
}
// TODO modifier ça pour Known !
// https://github.com/idno/Known/blob/master/Idno/Common/Entity.php
function posts($garray) {
$posts = Idno\Common\Entity::getFromAll([], [], 99999);
$slug_number = 0;
$_post_tags = [];
foreach($posts as $post) {
if ($post instanceof Idno\Entities\Notification) {
continue;
} }
$post_markdown = new HTML_To_Markdown( $post->attributes['body'] ); $post_markdown = new HTML_To_Markdown( $post->attributes['body'] );
$_post_tags[] = []; $_post_tags[] = [];
$garray['data']['posts'][] = array( $garray['data']['posts'][] = array(
//'id' => intval( $post->ID ), 'id' => $i,
'title' => substr( ( empty( $post->attributes['title'] ) ) ? $post->attributes['body'] : $post->attributes['title'], 0, 150 ), 'title' => substr( ( empty( $post->attributes['title'] ) ) ? $post->attributes['body'] : $post->attributes['title'], 0, 150 ),
'slug' => $post->attributes['slug'], 'slug' => $post->attributes['slug'],
'markdown' => $post_markdown->output(), 'markdown' => $post_markdown->output(),
'html' => $post->attributes['body'], 'html' => $post->attributes['body'],
'image' => null, 'image' => null,
'featured' => 0, 'featured' => 0,
'page' => 1, 'page' => 1,
'status' => substr( $post->attributes['publish_status'], 0, 150 ), 'status' => isset($post->attributes['publish_status']) ? substr( $post->attributes['publish_status'], 0, 150 ) : 'published',
'language' => 'fr_FR', 'language' => 'fr_FR',
'meta_title' => null, 'meta_title' => null,
'meta_description' => null, 'meta_description' => null,
'author_id' => 1, 'author_id' => 1,
'created_at' => _get_json_date( $post->post_date ), 'created_at' => _get_json_date( $post->created ),
'created_by' => 1, 'created_by' => 1,
'updated_at' => _get_json_date( $post->post_modified ), 'updated_at' => _get_json_date( $post->updated ),
'updated_by' => 1, 'updated_by' => 1,
'published_at' => _get_json_date( $post->post_date ), 'published_at' => _get_json_date( $post->created ),
'published_by' => 1, 'published_by' => 1,
); );
$slug_number += 1; $slug_number += 1;
} $i++;
}
$garray['data']['posts_tags'] = $_post_tags; $garray['data']['posts_tags'] = $_post_tags;
// cleanup
unset( $posts_args );
unset( $posts );
unset( $slug_number );
unset( $_post_tags );
unset( $tags );
unset( $tag );
unset( $s );
var_dump($garray);
exit;
// cleanup
unset( $posts_args );
unset( $posts );
unset( $slug_number );
unset( $_post_tags );
unset( $tags );
unset( $tag );
unset( $s );
} }
function _get_json_date( $date ) { function _get_json_date( $date ) {
return date( 'r', strtotime( $date ) ); return date( 'r', $date );
} }
function populate_data($garray) { function populate_data(&$garray) {
// if ( $garray !== null ) { // attaches metadata
// return; metas($garray);
// }
// attaches metadata
metas($garray);
// attaches tags // populates posts
// tags(); posts($garray);
// populates posts
posts($garray);
} }
/** /**
* Sends necessary headers and whatnot to allow to download file * Sends necessary headers and whatnot to allow to download file
* @return bin file
*/ */
function download_file($garray) { function download_file($garray) {
// Ensure the user accessing the function actually has permission to do this populate_data($garray);
if ( ! current_user_can('export') ) { $filedir = dirname(__FILE__).'/Uploads';
wp_die( "<p>You are not allowed to do that.</p>", 'Permission error' ); $filename = 'known2ghost_export_' . time() . '.json';
}
populate_data($garray); if ( ! is_writable( $filedir ) ) {
echo ( "<p>Uploads directory is not writable, can't save the Ghost json file :/</p><p>Generated by the Ghost plugin version {$this->version}.</p>");
}
$upload_dir = wp_upload_dir(); $handle = fopen( $filedir . '/' . $filename, 'w' );
$filedir = $upload_dir['path']; $content = json_encode( $garray );
$filename = 'wp2ghost_export_' . time() . '.json'; fwrite( $handle, $content );
fclose( $handle );
header( 'Content-Description: File Transfer' );
header( 'Content-Type: application/octet-stream' );
header( 'Content-Disposition: attachment; filename='.$filename );
header( 'Content-Transfer-Encoding: binary' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate' );
header( 'Pragma: public' );
header( 'Content-Length: ' . filesize( $filedir . '/' . $filename ) );
if ( ! is_writable( $filedir ) ) { flush();
wp_die( "<p>Uploads directory is not writable, can't save the Ghost json file :/</p><p>Generated by the Ghost plugin version {$this->version}.</p>", 'Directory not writable' ); readfile( $filedir . '/' . $filename );
} exit;
$handle = fopen( $filedir . '/' . $filename, 'w' );
$content = $this->get_json( $garray );
fwrite( $handle, $content );
fclose( $handle );
header( 'Content-Description: File Transfer' );
header( 'Content-Type: application/octet-stream' );
header( 'Content-Disposition: attachment; filename='.$filename );
header( 'Content-Transfer-Encoding: binary' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate' );
header( 'Pragma: public' );
header( 'Content-Length: ' . filesize( $filedir . '/' . $filename ) );
flush();
readfile( $filedir . '/' . $filename );
exit;
} }
populate_data($garray); download_file($garray);
/*
//highlight_string("<?php\n\$data =\n" . var_export(Idno\Common\Entity::getFromAll([], [], 99999), true) . ";\n?>");