Changeset 971

Show
Ignore:
Timestamp:
12/21/06 04:09:28 (2 years ago)
Author:
fumiakiy
Message:

Divided log entries for each classes when objects are not restored correctly. BugId: 45879

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/wheeljack/lib/MT/App/CMS.pm

    r967 r971  
    1131411314} 
    1131511315 
    11316 sub restore_file { 
    11317     my $app = shift; 
    11318     my ($fh, $errormsg) = @_; 
    11319     my $q = $app->param; 
    11320  
    11321     require MT::BackupRestore; 
    11322     my $deferred = MT::BackupRestore->restore_file($fh, $errormsg, sub { $app->print(@_); }); 
    11323  
    11324     if (!defined($deferred) || scalar(keys %$deferred)) { 
    11325         my @names = keys %$deferred; 
    11326         my $data = ''; 
    11327         $data .= join(',', splice(@names, 0, 5)) . "\n" while @names; 
    11328         $data = "Objects which were not restored are listed below (#ID is the id value in the backup file):\n" . $data; 
    11329         my $message = $app->translate('Some objects were not restored because their parent objects were not restored.'); 
     11316sub _log_dirty_restore { 
     11317    my $app = shift; 
     11318    my ($deferred) = @_; 
     11319    my %deferred_by_class; 
     11320    for my $key (keys %$deferred) { 
     11321        my ($class, $id) = split('#', $key); 
     11322        if (exists $deferred_by_class{$class}) { 
     11323            push @{$deferred_by_class{$class}}, $id; 
     11324        } else { 
     11325            $deferred_by_class{$class} = [ $id ]; 
     11326         
     11327        } 
     11328    } 
     11329    while (my ($class_name, $ids) = each %deferred_by_class) { 
     11330        my $message = $app->translate('Some [_1] were not restored because their parent objects were not restored.', $class_name); 
    1133011331        $app->log({ 
    1133111332            message => $message, 
     
    1133311334            class => 'system', 
    1133411335            category => 'restore', 
    11335             metadata => $data
     11336            metadata => join(', ', @$ids)
    1133611337        }); 
     11338    } 
     11339    1; 
     11340} 
     11341 
     11342sub restore_file { 
     11343    my $app = shift; 
     11344    my ($fh, $errormsg) = @_; 
     11345    my $q = $app->param; 
     11346 
     11347    require MT::BackupRestore; 
     11348    my $deferred = MT::BackupRestore->restore_file($fh, $errormsg, sub { $app->print(@_); }); 
     11349 
     11350    if (!defined($deferred) || scalar(keys %$deferred)) { 
     11351        $app->_log_dirty_restore($deferred); 
    1133711352        my $log_url = $app->uri(mode => 'view_log', args => {}); 
    11338         $$errormsg = $message . '  ' 
    11339             . $app->translate('Detailed information is in the <a href="[_1]">activity log</a>.', $log_url); 
     11353        $$errormsg = $app->translate('Some objects were not restored because their parent objects were not restored.  Detailed information is in the <a href="[_1]">activity log</a>.', $log_url); 
    1134011354        return 0; 
    1134111355    } 
     
    1139711411 
    1139811412    if (scalar(keys %$deferred)) { 
    11399         my @names = keys %$deferred; 
    11400         my $data = ''; 
    11401         $data .= join(',', splice(@names, 0, 5)) . "\n" while @names; 
    11402         $data = "Objects which were not restored are listed below (#ID is the id value in the backup file):\n" . $data; 
    11403         my $message = $app->translate('Some objects were not restored because their parent objects were not restored.'); 
    11404         $app->log({ 
    11405             message => $message, 
    11406             level => MT::Log::WARNING(), 
    11407             class => 'system', 
    11408             category => 'restore', 
    11409             metadata => $data, 
    11410         }); 
     11413        $app->_log_dirty_restore($deferred); 
    1141111414        my $log_url = $app->uri(mode => 'view_log', args => {}); 
    11412         $$error .= $message . '  ' 
    11413             . $app->translate('Detailed information is in the <a href="[_1]">activity log</a>.', $log_url)
     11415        $$error = $app->translate('Some objects were not restored because their parent objects were not restored.  Detailed information is in the <a href="[_1]">activity log</a>.', $log_url); 
     11416        return 0
    1141411417    } 
    1141511418 
     
    1162311626        $param->{restore_end} = 1; 
    1162411627        if ($param->{is_dirty}) { 
    11625             my @names = keys %$deferred; 
    11626             my $data = ''; 
    11627             $data .= join(',', splice(@names, 0, 5)) . "\n" while @names; 
    11628             $data = "Objects which were not restored are listed below (#ID is the id value in the backup file):\n" . $data; 
    11629             my $message = $app->translate('Some objects were not restored because their parent objects were not restored.'); 
    11630             $app->log({ 
    11631                 message => $message, 
    11632                 level => MT::Log::WARNING(), 
    11633                 class => 'system', 
    11634                 category => 'restore', 
    11635                 metadata => $data, 
    11636             }); 
     11628            $app->_log_dirty_restore($deferred); 
    1163711629            my $log_url = $app->uri(mode => 'view_log', args => {}); 
    11638             $param->{error} = $message
     11630            $param->{error} = $app->translate('Some objects were not restored because their parent objects were not restored.')
    1163911631            $param->{error_url} = $log_url; 
    1164011632        } else { 
     
    1167111663    my $param = { restore_success => 1 }; 
    1167211664    if (defined $deferred && (scalar(keys %$deferred))) { 
    11673         my @names = keys %$deferred; 
    11674         my $data = ''; 
    11675         $data .= join(',', splice(@names, 0, 5)) . "\n" while @names; 
    11676         $data = "Objects which were not restored are listed below (#ID is the id value in the backup file):\n" . $data; 
    11677         my $message = $app->translate('Some objects were not restored because their parent objects were not restored.'); 
    11678         $app->log({ 
    11679             message => $message, 
    11680             level => MT::Log::WARNING(), 
    11681             class => 'system', 
    11682             category => 'restore', 
    11683             metadata => $data, 
    11684         }); 
     11665        $app->_log_dirty_restore($deferred); 
    1168511666        my $log_url = $app->uri(mode => 'view_log', args => {}); 
    1168611667        $param->{restore_success} = 0; 
     11668        my $message = $app->translate('Some objects were not restored because their parent objects were not restored.'); 
    1168711669        $param->{error} = $message . '  ' 
    1168811670            . $app->translate("Detailed information is in the <a href='javascript:void(0)' onclick='closeDialog(\"[_1]\")'>activity log</a>.", $log_url);