-
Notifications
You must be signed in to change notification settings - Fork 0
/
export.php
121 lines (99 loc) · 3.47 KB
/
export.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once(dirname(__FILE__) . '/Idno/start.php');
include 'HTML-To-Markdown.php';
$garray = [];
$garray['data'] = [];
$garray['data']['posts'] = [];
$garray['data']['tags'] = [];
$garray['data']['posts_tags'] = [];
$garray['data']['users'] = [];
function metas(&$garray) {
$garray['meta'] = [
'exported_on' => date( 'r' ),
'version' => '000',
];
}
function posts(&$garray) {
$posts = Idno\Common\Entity::getFromAll([], [], 99999);
$slug_number = 0;
$_post_tags = [];
$i = 1;
foreach($posts as $post) {
if ($post instanceof Idno\Entities\Notification) {
continue;
}
$post_markdown = new HTML_To_Markdown( $post->attributes['body'] );
$_post_tags[] = [];
$garray['data']['posts'][] = array(
'id' => $i,
'title' => substr( ( empty( $post->attributes['title'] ) ) ? $post->attributes['body'] : $post->attributes['title'], 0, 150 ),
'slug' => $post->attributes['slug'],
'markdown' => $post_markdown->output(),
'html' => $post->attributes['body'],
'image' => null,
'featured' => 0,
'page' => 0,
'status' => isset($post->attributes['publish_status']) ? substr( $post->attributes['publish_status'], 0, 150 ) : 'published',
'language' => 'fr_FR',
'meta_title' => null,
'meta_description' => null,
'author_id' => 1,
'created_at' => _get_json_date( $post->created ),
'created_by' => 1,
'updated_at' => _get_json_date( $post->updated ),
'updated_by' => 1,
'published_at' => _get_json_date( $post->created ),
'published_by' => 1,
);
$slug_number += 1;
$i++;
}
$garray['data']['posts_tags'] = $_post_tags;
// cleanup
unset( $posts_args );
unset( $posts );
unset( $slug_number );
unset( $_post_tags );
unset( $tags );
unset( $tag );
unset( $s );
}
function _get_json_date( $date ) {
return date( 'r', $date );
}
function populate_data(&$garray) {
// attaches metadata
metas($garray);
// populates posts
posts($garray);
}
/**
* Sends necessary headers and whatnot to allow to download file
*/
function download_file($garray) {
populate_data($garray);
$filedir = dirname(__FILE__).'/Uploads';
$filename = 'known2ghost_export_' . time() . '.json';
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>");
}
$handle = fopen( $filedir . '/' . $filename, 'w' );
$content = json_encode( $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;
}
download_file($garray);