| 1 | # Movable Type (r) Open Source (C) 2005-2008 Six Apart, Ltd. |
|---|
| 2 | # This program is distributed under the terms of the |
|---|
| 3 | # GNU General Public License, version 2. |
|---|
| 4 | # |
|---|
| 5 | # $Id: BackupRestoreSample.pl 1174 2008-01-08 21:02:50Z bchoate $ |
|---|
| 6 | |
|---|
| 7 | package MT::Plugin::BackupRestoreSample; |
|---|
| 8 | |
|---|
| 9 | use strict; |
|---|
| 10 | use base 'MT::Plugin'; |
|---|
| 11 | use vars qw($VERSION); |
|---|
| 12 | $VERSION = '0.1'; |
|---|
| 13 | |
|---|
| 14 | use BackupRestoreSample::Object; |
|---|
| 15 | |
|---|
| 16 | my $plugin; |
|---|
| 17 | my $ns = 'urn:sixapart.com:ns:pluginsample'; |
|---|
| 18 | $plugin = MT::Plugin::BackupRestoreSample->new({ |
|---|
| 19 | name => "BackupRestoreSample", |
|---|
| 20 | version => $VERSION, |
|---|
| 21 | description => "<MT_TRANS phrase=\"This plugin is to test out the backup restore callback.\">", |
|---|
| 22 | author_name => "Fumiaki Yoshimatsu", |
|---|
| 23 | author_link => "http://www.sixapart.com/", |
|---|
| 24 | #l10n_class => 'BackupRestore::L10N', |
|---|
| 25 | object_classes => [ |
|---|
| 26 | 'BackupRestoreSample::Object' |
|---|
| 27 | ], |
|---|
| 28 | schema_version => '0.1', |
|---|
| 29 | }); |
|---|
| 30 | MT->add_plugin($plugin); |
|---|
| 31 | MT->add_callback('Backup', 9, $plugin, \&backup); |
|---|
| 32 | MT->add_callback("Restore.backup_restore_sample_object:$ns", 9, $plugin, \&restore); |
|---|
| 33 | |
|---|
| 34 | sub backup { |
|---|
| 35 | my ($cb, $blog_ids, $progress) = @_; |
|---|
| 36 | my $xml; |
|---|
| 37 | my $terms = {}; |
|---|
| 38 | $terms->{blog_id} = $blog_ids if defined($blog_ids) && (0 < scalar(@$blog_ids)); |
|---|
| 39 | my @objects = BackupRestoreSample::Object->load($terms); |
|---|
| 40 | for my $object (@objects) { |
|---|
| 41 | $xml .= $object->to_xml($ns); |
|---|
| 42 | } |
|---|
| 43 | $progress->('BackupRestoreSampleObject is backed up.', 'BackupRestoreSample::Object'); |
|---|
| 44 | return $xml; |
|---|
| 45 | } |
|---|
| 46 | |
|---|
| 47 | sub restore { |
|---|
| 48 | my ($cb, $data, $objects, $deferred, $progress) = @_; |
|---|
| 49 | return 0 if $ns ne $data->{NamespaceURI}; |
|---|
| 50 | |
|---|
| 51 | my $attrs = $data->{Attributes}; |
|---|
| 52 | my %column_data = map { $attrs->{$_}->{LocalName} => $attrs->{$_}->{Value} } |
|---|
| 53 | grep { $attrs->{$_}->{Value} ne $ns } keys(%$attrs); |
|---|
| 54 | my $obj = BackupRestoreSample::Object->new; |
|---|
| 55 | $obj->set_values(\%column_data); |
|---|
| 56 | $progress->('BackupRestoreSampleObject is restored.', 'BackupRestoreSample::Object'); |
|---|
| 57 | return $obj; |
|---|
| 58 | } |
|---|
| 59 | |
|---|
| 60 | 1; |
|---|