Changeset 2814
- Timestamp:
- 07/18/08 19:54:28 (5 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/feature-revision-histories/lib/MT/Revisable.pm
r2808 r2814 14 14 my $pkg = shift; 15 15 my ($class) = @_; 16 my $datasource = $class->datasource; 16 my $props = $class->properties; 17 18 $props->{column_defs}{current_revision} = { 19 label => 'Revision Number', 20 type => 'integer', 21 not_null => 1 22 }; 23 $class->install_column('current_revision'); 24 $props->{defaults}{current_revision} = 0; 17 25 18 26 MT->add_callback( 'api_pre_save.entry', 1, undef, … … 20 28 MT->add_callback( 'cms_pre_save.entry', 1, undef, 21 29 \&mt_remove_unchanged_cols ); 30 31 $class->add_trigger( pre_save => \&increment_revision ); 22 32 $class->add_trigger( post_save => \&save_revision ); 23 33 } … … 45 55 $obj_id => 'integer not null', 46 56 $obj_ds => 'blob not null', 57 rev_number => 'integer not null', 47 58 changed => 'string(255) not null' 48 59 }, … … 50 61 $obj_id => 1 51 62 }, 63 defaults => { 64 rev_number => 0 65 }, 66 audit => 1, 52 67 primary_key => 'id', 53 68 datasource => $class->datasource . '_rev' … … 172 187 } 173 188 174 sub mt_save_revision { 175 my ($cb, $mt, $obj, $orig) = @_; 176 177 $obj->save_revision($orig); 189 sub increment_revision { 190 my $obj = shift; 191 my ($orig) = @_; 192 193 # We default current_revision to 0 so we can always increment 194 # Initial save = rev 1 195 my $current_revision = $obj->current_revision; 196 $obj->current_revision(++$current_revision); 178 197 } 179 198 … … 195 214 changed => join ',', $obj->changed_cols 196 215 }); 216 $revision->rev_number($obj->current_revision); 197 217 $revision->save or return; 198 218 … … 211 231 $rev_obj->unpack_revision($$packed_obj); 212 232 233 # Here we cheat since audit columns aren't revisioned 234 $rev_obj->modified_by($rev->created_by); 235 $rev_obj->modified_on($rev->modified_on); 236 213 237 my @changed = split ',', $rev->changed; 214 238 215 return [ $rev_obj, \@changed ];239 return [ $rev_obj, \@changed, $rev->rev_number]; 216 240 } 217 241
