provide any single year of exported items

This commit is contained in:
redmatrix 2015-07-16 20:20:42 -07:00
parent 4299ae65a4
commit 3c60a0c22c
3 changed files with 48 additions and 6 deletions

View File

@ -583,8 +583,14 @@ function identity_basic_export($channel_id, $items = false) {
/** @warning this may run into memory limits on smaller systems */
$r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d",
intval($channel_id)
/** export one year of posts. If you want to export and import all posts you have to start with
* the first year and export/import them in ascending order.
*/
$r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created > %s - INTERVAL %s",
intval($channel_id),
db_utcnow(),
db_quoteinterval('1 YEAR')
);
if($r) {
$ret['item'] = array();
@ -598,6 +604,33 @@ function identity_basic_export($channel_id, $items = false) {
}
function identity_export_year($channel_id,$year) {
if(! $year)
return array();
$ret = array();
$mindate = datetime_convert('UTC','UTC',$year . '-01-01 00:00:00');
$maxdate = datetime_convert('UTC','UTC',$year+1 . '-01-01 00:00:00');
$r = q("select * from item where item_wall = 1 and item_deleted = 0 and uid = %d and created >= '%s' and created < '%s' ",
intval($channel_id),
dbesc($mindate),
dbesc($maxdate)
);
if($r) {
$ret['item'] = array();
xchan_query($r);
$r = fetch_post_tags($r,true);
foreach($r as $rr)
$ret['item'][] = encode_item($rr,true);
}
return $ret;
}
/**
* @brief Loads a profile into the App structure.
*

View File

@ -4389,7 +4389,6 @@ function first_post_date($uid,$wall = false) {
$r = q("select id, created from item
where uid = %d and id = parent $item_normal $wall_sql
order by created asc limit 1",
intval(ITEM_VISIBLE),
intval($uid)
);

View File

@ -9,9 +9,17 @@ function uexport_init(&$a) {
require_once('include/identity.php');
header('content-type: application/octet_stream');
header('content-disposition: attachment; filename="' . $channel['channel_address'] . '.json"' );
if(argc() > 1 && intval(argv(1)) > 1900) {
$year = intval(argv(1));
}
header('content-type: application/octet_stream');
header('content-disposition: attachment; filename="' . $channel['channel_address'] . (($year) ? '-' . $year : '') . '.json"' );
if($year) {
echo json_encode(identity_export_year(local_channel(),$year));
killme();
}
if(argc() > 1 && argv(1) === 'basic') {
echo json_encode(identity_basic_export(local_channel()));
@ -34,7 +42,9 @@ function uexport_content(&$a) {
'$basictitle' => t('Export Channel'),
'$basic' => t('Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but does not contain your content.'),
'$fulltitle' => t('Export Content'),
'$full' => t('Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin.')
'$full' => t('Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and the last year of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin.'),
'$by_year' => t('Export your posts from a given year.'),
));
return $o;
}