function beforeUpdate($old, $request,$roo)
{
if(!empty($request['_restore'])){
- $this->restore();
+ $this->restore($roo);
}
}
return $file;
}
+
+ function restore($roo)
+ {
+ $file = $this->retrieveEventLog();
+
+ if(empty($file) || !file_exists($file)){
+ $roo->jerr('Could not retrieve the event log file');
+ }
+
+ $log = json_decode(file_get_contents($file), true);
+
+ if(empty($log['POST']) || empty($log['POST']['_delete']) || empty($log['DELETED_DATAOBJECTS'])){
+ $roo->jerr('Invalid url');
+ }
+
+ $restored = array();
+
+ foreach ($log['DELETED_DATAOBJECTS'] as $d){
+ if(
+ empty($d['id']) ||
+ empty($d['_table']) ||
+ (
+ !empty($restored[$d['_table']]) &&
+ in_array($d['id'], $restored[$d['_table']])
+ )
+ ){
+ continue;
+ }
+
+ if(!isset($restored[$d['_table']])){
+ $restored[$d['_table']] = array();
+ }
+
+ $restored[$d['_table']][] = $d['id'];
+
+ $table = DB_DataObject::factory($d['_table']);
+
+ if (!is_a($table,'DB_DataObject')) {
+ continue;
+ }
+
+ unset($d['_table']);
+
+ $table->setFrom($d);
+
+ /*
+ * need to use the old id
+ */
+ $table->id = $d['id'];
+
+ $table->sequenceKey(false,false);
+
+ $table->insert();
+ }
+
+ $roo->jok('RESTORE');
+ }
}