Changeset 2863
- Timestamp:
- 07/29/08 22:38:06 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/feature-revision-histories/lib/MT/Revisable.pm
r2855 r2863 57 57 $class->install_column('current_revision'); 58 58 $props->{defaults}{current_revision} = 0; 59 60 # To track how many revisions to store for each object, add61 # a meta column in MT::Blog62 # my $blog_class = MT->model('blog');63 # $blog_class->install_meta({ column_defs => {64 # "max_${datasource}_revision" => 'integer'65 # }});66 59 67 60 # Callbacks: clean list of changed columns to only … … 130 123 my ($cb, $app, $obj, $orig) = @_; 131 124 132 my $current_revision = $obj->save_revision(); 133 134 $obj->current_revision($current_revision); 135 $obj->save or return $obj->error($obj->errstr); 125 $obj->save_revision(); 136 126 137 127 return 1; … … 162 152 sub pack_revision { 163 153 my $obj = shift; 154 my $class = ref $obj || $obj; 164 155 my $values = $obj->column_values; 165 156 … … 169 160 } 170 161 162 MT->run_callbacks($class . '::pack_revision', $obj, $values); 163 171 164 return $values; 172 165 } … … 175 168 my $obj = shift; 176 169 my ($packed_obj) = @_; 170 my $class = ref $obj || $obj; 177 171 178 172 $obj->set_values($packed_obj); 179 } 180 181 sub save_revision { _handle(@_); } 173 174 MT->run_callbacks($class . '::unpack_revision', $obj, $packed_obj); 175 } 176 177 sub save_revision { 178 my $obj = shift; 179 my $class = ref $obj || $obj; 180 181 my $filter_result = MT->run_callbacks( $class . '::save_revision_filter', $obj ); 182 return if !$filter_result; 183 184 MT->run_callbacks( $class . '::pre_save_revision', $obj ); 185 186 my $current_revision = _handle($obj); 187 $obj->current_revision($current_revision); 188 $obj->save or return $obj->error($obj->errstr); 189 190 MT->run_callbacks( $class . '::post_save_revision', $obj, $current_revision ); 191 192 1; 193 } 194 182 195 sub object_from_revision { _handle(@_); } 183 196 sub load_revision { _handle(@_); }
