source: trunk/services/versions.php @ 20

Last change on this file since 20 was 20, checked in by scdev, 19 years ago

Tons of little updates and bugfixes. CSS updates to templates and core css files. File upload ability to module_maker. Remade Upload interface to use setParam/getParam.

File size: 4.5 KB
Line 
1<?php
2/**
3 * versions.php
4 * Code by Strangecode :: www.strangecode.com :: This document contains copyrighted information
5 */
6
7// require_once dirname(__FILE__) . '/_config.inc.php';
8
9$auth->requireLogin();
10App::sslOn();
11
12require_once 'codebase/lib/RecordVersion.inc.php';
13require_once 'codebase/lib/RecordLock.inc.php';
14
15/******************************************************************************
16 * CODE CONFIG
17 *****************************************************************************/
18
19$version = RecordVersion::getInstance($GLOBALS['auth']);
20
21// Query arguments to retain their values between page requests.
22App::carryQuery('record_table');
23App::carryQuery('record_key');
24App::carryQuery('record_val');
25App::carryQuery('version_title');
26
27// Titles and navigation header.
28$nav->addPage(_("Versions"), $_SERVER['PHP_SELF']);
29
30/******************************************************************************
31 * MAIN
32 *****************************************************************************/
33
34// Request arguments.
35$version_id = getFormData('version_id');
36$record_table = getFormData('record_table');
37$record_key = getFormData('record_key');
38$record_val = getFormData('record_val');
39
40if ('' == $version_id && ('' == $record_table || '' == $record_key || '' == $record_val)) {
41    App::raiseMsg(_("Record not specified for versioning."), MSG_WARNING, __FILE__, __LINE__);
42    App::logMsg('Record not specified for versioning.', LOG_WARNING, __FILE__, __LINE__);
43    App::dieBoomerangURL();
44}
45
46if (getFormData('boomerang', false) && isset($_SERVER['HTTP_REFERER'])) {
47    // We remember which page we came from so we can go back there.
48    App::setBoomerangURL($_SERVER['HTTP_REFERER'], 'versions');
49}
50
51// What action to take.
52switch (getFormData('op')) {
53
54case _("Cancel") :
55    App::dieBoomerangURL('versions', false);
56    break;
57
58case 'view' :
59    $data = $version->getData($version_id);
60    $versionrecord = $version->getVerson($version_id);
61    $nav->addPage(sprintf(_("View <em>%s</em> version %s (%s)"), $versionrecord['version_title'], $version_id, $versionrecord['version_datetime']));
62    $main_template = 'versions_view.ihtml';
63    break;
64
65case 'diff' :
66    $data = $version->getData($version_id);
67    $versionrecord = $version->getVerson($version_id);
68    $current = $version->getCurrent($record_table, $record_key, $record_val);
69    if (serialize($data) == serialize($current)) {
70        App::raiseMsg(sprintf(_("Version <strong>%s</strong> is identical to the current record"), $version_id), MSG_NOTICE, __FILE__, __LINE__);
71    }
72    $nav->addPage(sprintf(_("Difference between version %s (%s) and current record."), $version_id, $versionrecord['version_datetime']));
73    $main_template = 'versions_diff.ihtml';
74    break;
75
76case 'restore' :
77    $lock =& RecordLock::getInstance($GLOBALS['auth']);
78    $lock->select($record_table, $record_key, $record_val);
79    if ($lock->isLocked() && !$lock->isMine()) {
80        $lock->dieErrorPage();
81    } else {
82        if ($v = $version->restore($version_id)) {
83            // Create version of this restored record as the "current" version.
84            $version->create($record_table, $record_key, $record_val, $v['version_title']);
85            App::raiseMsg(sprintf(_("The record <strong>%s</strong> has been replaced with <strong>%s</strong> version <strong>%s</strong> from <strong>%s</strong>."), getFormData('version_title'), $v['version_title'], $version_id, $v['version_datetime']), MSG_SUCCESS, __FILE__, __LINE__);
86            App::dieBoomerangURL('versions', array('break_list_cache'=>'true', false));
87        } else {
88            App::raiseMsg(_("Version restoration failed."), MSG_ERR, __FILE__, __LINE__);
89            App::dieURL($_SERVER['PHP_SELF']);
90        }
91    }
92    break;
93
94default :
95    $versions = $version->getList($record_table, $record_key, $record_val);
96    $_POST['version_title'] = $versions[0]['version_title'];
97    if (is_array($versions) && !empty($versions)) {
98        $nav->addPage(sprintf(_("%s versions of record <em>%s</em>"), sizeof($versions), $versions[0]['version_title']));
99        $main_template = 'versions_list.ihtml';
100    } else {
101        App::raiseMsg(sprintf(_("No saved versions available for this record"), null), MSG_NOTICE, __FILE__, __LINE__);
102        App::dieBoomerangURL('versions');
103    }
104}
105
106
107/******************************************************************************
108 * TEMPLATE INITIALIZATION
109 *****************************************************************************/
110 
111include 'header.ihtml';
112include 'codebase/services/templates/' . $main_template;
113include 'footer.ihtml';
114
115?>
Note: See TracBrowser for help on using the repository browser.