use common code to update modification details for an article
authorTony Cook <tony@develop-help.com>
Fri, 5 Apr 2013 09:38:39 +0000 (20:38 +1100)
committerTony Cook <tony@develop-help.com>
Mon, 8 Apr 2013 00:54:35 +0000 (10:54 +1000)
site/cgi-bin/modules/Article.pm
site/cgi-bin/modules/BSE/Edit/Article.pm
site/cgi-bin/modules/BSE/Importer/Target/Article.pm

index b55fe4e..75d2136 100644 (file)
@@ -8,7 +8,7 @@ use vars qw/@ISA/;
 @ISA = qw/Squirrel::Row BSE::TB::SiteCommon BSE::TB::TagOwner/;
 use Carp 'confess';
 
-our $VERSION = "1.019";
+our $VERSION = "1.020";
 
 =head1 NAME
 
@@ -598,13 +598,37 @@ sub restricted_method {
   my ($self, $name) = @_;
 
   return $self->SUPER::restricted_method($name)
-    || $name =~ /^(?:update_|remove_|add_)/;
+    || $name =~ /^(?:update_|remove_|add_|mark_modified)/;
 }
 
 sub tableClass {
   return "Articles";
 }
 
+=item mark_modified
+
+Call by admin code to do the things we do when an article is modified.
+
+Parameters:
+
+=over
+
+=item *
+
+actor - an audit log compatible actor.
+
+=back
+
+=cut
+
+sub mark_modified {
+  my ($self, %opts) = @_;
+
+  require BSE::Util::SQL;
+  $self->set_lastModified(BSE::Util::SQL::now_sqldatetime());
+  $self->set_lastModifiedBy(ref $opts{actor} ? $opts{actor}->logon : "");
+}
+
 1;
 
 __END__
index 949c8ad..a64d2b1 100644 (file)
@@ -16,7 +16,7 @@ use List::Util qw(first);
 use constant MAX_FILE_DISPLAYNAME_LENGTH => 255;
 use constant ARTICLE_CUSTOM_FIELDS_CFG => "article custom fields";
 
-our $VERSION = "1.033";
+our $VERSION = "1.034";
 
 =head1 NAME
 
@@ -2169,7 +2169,6 @@ sub save {
   $article->{expire} = sql_date($cgi->param('expire')) || $Constants::D_99
     if defined $cgi->param('expire') && 
       $req->user_can('edit_field_edit_expire', $article);
-  $article->{lastModified} =  now_sqldatetime();
   for my $col (qw/force_dynamic inherit_siteuser_rights/) {
     if ($req->user_can("edit_field_edit_$col", $article)
        && $cgi->param("save_$col")) {
@@ -2177,10 +2176,7 @@ sub save {
     }
   }
 
-# Added by adrian
-  my $user = $req->getuser;
-  $article->{lastModifiedBy} = $user ? $user->{logon} : '';
-# end adrian
+  $article->mark_modified(actor => $req->getuser || "U");
 
   my @save_group_ids = $cgi->param('save_group_id');
   if ($req->user_can('edit_field_edit_group_id')
index 300d439..31ad280 100644 (file)
@@ -214,6 +214,7 @@ sub row {
   }
   if ($leaf) {
     @{$leaf}{keys %$entry} = values %$entry;
+    $leaf->mark_modified(actor => $importer->actor);
     $leaf->save;
     $importer->info("Updated $leaf->{id}: ".$leaf->title);
     if ($self->{reset_images}) {