. * * @category Offline backup * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ if (!defined('STATUSNET')) { // This check helps protect against security problems; // your code file can't be executed directly from the web. exit(1); } /** * Offline backup queue handler * * @category General * @package StatusNet * @author Evan Prodromou * @copyright 2011 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://status.net/ */ class OfflineBackupQueueHandler extends QueueHandler { function transport() { return 'backoff'; } function handle($object) { $userId = $object; $user = User::staticGet($userId); $fileName = $this->makeBackupFile($user); $this->notifyBackupFile($user, $fileName); return true; } function makeBackupFile($user) { $fileName = File::filename($user->getProfile(), "backup", "application/atom+xml"); $fullPath = File::path($fileName); // XXX: this is pretty lose-y; try another way $actstr = new UserActivityStream($user, true, UserActivityStream::OUTPUT_RAW); file_put_contents($fullPath, $actstr->getString()); return $fileName; } function notifyBackupFile($user, $fileName) { $fileUrl = File::url($fileName); $body = sprintf(_m("The backup file you requested is ready for download.\n\n". "%s\n". "Thanks for your time,\n", "%s\n"), $fileUrl, common_config('site', 'name')); $headers = _mail_prepare_headers('offlinebackup', $user->nickname, $user->nickname); mail_to_user($user, _('Backup file ready for download'), $body, $headers); } }