rendered paste body<?php/* * History foundation * Provides a simple revision system for a scaffold */class foundation_revision extends foundation_base{ static $implements = array ( 'edit_commit', 'delete_commit' ); static $function_edit_commit = array ( 'callable' => true, ); public function edit_commit($id) { pra('hooked'); $id = $this->_foundation_dispatch('edit_commit',array($id),'scaffold'); $rev_id = self::add_revision($id); pra($rev_id); app()->export('revision_id',$rev_id); return $id; } static $function_delete_commit = array ( 'callable' => true, ); public function delete_commit($id) { pra('hooked'); $this->_foundation_dispatch('delete_commit',array($id),'scaffold'); self::add_revision($id); return $id; } /** * Add the current state of content_id as a revision */ protected function add_revision($content_id) { $id = $content_id; #Get the data for the item just added/edited $mname = $this->model; $model = m()->$mname; $model->find($model->_primary,$id); $model->set_overload(false); $item = $model->get(); $item = $item[0]; $mname = $this->model_revision; $model = m()->$mname; foreach($model->_ignore_revision as $column) { unset($item[$column]); } $save = serialize($item); #Get the last revision data $model->find('content_id',$id); $model->order('revision','DESC'); $model->limit(1); $model->set_overload(false); $last = $model->get(); $last = $last[0]; $revision = $last['revision'] + 1; $model->reset(); $model->set('content_id',$id); $model->set('revision',$revision); $model->set('user_id',app()->user()->id()); $model->set('added',db_sql::NOW); $model->set('content',$save); $model->set('_SERVER',serialize($_SERVER)); $model->save(); $rev_id = $model->inserted(); return $rev_id; }}?>