Beispiel #1
0
 /**
  * @depends test_diff
  */
 function test_history()
 {
     // test history
     $history = Versions::history(self::$foo);
     $this->assertEquals(count($history), 2);
     $modified = Versions::diff($history[0], $history[1]);
     $this->assertEquals($modified[0], 'name');
     // get a count with class name (groups by pkey, so one result)
     $history = Versions::history('Foobar', true);
     $this->assertEquals($history, 1);
     // get a count with object (all for the item, so two results)
     $history = Versions::history(self::$foo, true);
     $this->assertEquals($history, 2);
     // get history from class name (groups by pkey, so one result)
     $history = Versions::history('Foobar');
     $this->assertEquals(count($history), 1);
 }
Beispiel #2
0
<?php

/**
 * Compares a previous version of a Model object to the
 * current version, allowing you to restore the previous
 * version if desired.
 */
$page->layout = 'admin';
if (!User::require_admin()) {
    $this->redirect('/admin');
}
$ver = new Versions($_GET['id']);
$old = $ver->restore();
$class = $ver->class;
$cur = new $class($ver->pkey);
if ($cur->error) {
    // deleted item
    foreach (json_decode($ver->serialized) as $key => $value) {
        $cur->{$key} = $value;
    }
}
$diff = Versions::diff($old, $cur);
$data = array();
foreach ((array) $cur->orig() as $key => $value) {
    $data[$key] = array('cur' => $value, 'old' => $old->{$key}, 'diff' => in_array($key, $diff) ? true : false);
}
$page->title = i18n_get('Comparing') . ' ' . $ver->class . ' / ' . $ver->pkey;
echo $tpl->render('admin/compare', array('fields' => $data, 'class' => $ver->class, 'pkey' => $ver->pkey, 'ts' => $ver->ts));