1
<?php
2
/*
3
 * StatusNet - the distributed open-source microblogging tool
4
 * Copyright (C) 2010 StatusNet, Inc.
5
 *
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU Affero General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU Affero General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Affero General Public License
17
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
20
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
21
22
$shortoptions = 'i:n:f:';
23
$longoptions = array('id=', 'nickname=', 'file=');
24
25
$helptext = <<<END_OF_RESTOREUSER_HELP
26
restoreuser.php [options]
27
Restore a backed-up user file to the database. If
28
neither ID or name provided, will create a new user.
29
30
  -i --id       ID of user to export
31
  -n --nickname nickname of the user to export
32
  -f --file     file to read from (STDIN by default)
33
34
END_OF_RESTOREUSER_HELP;
35
36
require_once INSTALLDIR.'/scripts/commandline.inc';
37
require_once INSTALLDIR.'/extlib/htmLawed/htmLawed.php';
38
39
40
function getActivityStreamDocument()
41
{
42
    $filename = get_option_value('f', 'file');
43
44
    if (empty($filename)) {
45
        show_help();
46
        exit(1);
47
    }
48
49
    if (!file_exists($filename)) {
50
        throw new Exception("No such file '$filename'.");
51
    }
52
53
    if (!is_file($filename)) {
54
        throw new Exception("Not a regular file: '$filename'.");
55
    }
56
57
    if (!is_readable($filename)) {
58
        throw new Exception("File '$filename' not readable.");
59
    }
60
61
    // TRANS: Commandline script output. %s is the filename that contains a backup for a user.
62
    printfv(_("Getting backup from file '%s'.")."\n",$filename);
63
64
65
    $xml = file_get_contents($filename);
66
67
    return $xml;
68
}
69
70
71
try {
72
    try {
73
        $user = getUser();
74
    } catch (NoUserArgumentException $noae) {
75
        $user = null;
76
    }
77
    $xml = getActivityStreamDocument();
78
    $qm = QueueManager::get();
79
    $qm->enqueue(array($user, $xml, true), 'feedimp');
80
} catch (Exception $e) {
81
    print $e->getMessage()."\n";
82
    exit(1);
83
}