From 5f6435d4c019157b4b63b579f8c71afa6efdfc17 Mon Sep 17 00:00:00 2001
From: stronk7 <stronk7>
Date: Sun, 25 Feb 2007 20:20:35 +0000
Subject: [PATCH] Now the editor detects if the xml file has been locally
 modified since loading it. Second part of MDL-8264

Merged from MOODLE_18_STABLE
---
 admin/xmldb/actions/load_xml_file/load_xml_file.class.php | 3 +++
 admin/xmldb/actions/main_view/main_view.class.php         | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/admin/xmldb/actions/load_xml_file/load_xml_file.class.php b/admin/xmldb/actions/load_xml_file/load_xml_file.class.php
index eb56ad7d87..3b5f88d2b9 100644
--- a/admin/xmldb/actions/load_xml_file/load_xml_file.class.php
+++ b/admin/xmldb/actions/load_xml_file/load_xml_file.class.php
@@ -95,6 +95,9 @@ class load_xml_file extends XMLDBAction {
                 $loaded = $xmldb_file->loadXMLStructure();
                 if ($loaded && $xmldb_file->isLoaded()) {
                     $dbdir->xml_loaded = true;
+                    if (!empty($dbdir->filemtime)) {
+                        $dbdir->filemtime = filemtime($dbdir->path . '/install.xml'); 
+                    }
                 }
                 $dbdir->xml_file = $xmldb_file;
             } else {
diff --git a/admin/xmldb/actions/main_view/main_view.class.php b/admin/xmldb/actions/main_view/main_view.class.php
index 5a9115d557..b290d722cb 100644
--- a/admin/xmldb/actions/main_view/main_view.class.php
+++ b/admin/xmldb/actions/main_view/main_view.class.php
@@ -157,6 +157,13 @@ class main_view extends XMLDBAction {
                     !empty($dbdir->xml_loaded) &&
                     !empty($dbdir->xml_changed)) {
                     $b .= '<a href="index.php?action=save_xml_file&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $key)) . '&amp;time=' . time() . '&amp;postaction=main_view#lastused">[' . $this->str['save'] . ']</a>';
+                /// Check if the file has been manually edited while being modified in the editor
+                    if ($dbdir->filemtime != filemtime($key . '/install.xml')) {
+                    /// File manually modified. Add to errors.
+                        if ($structure =& $dbdir->xml_file->getStructure()) {
+                            $structure->errormsg = 'Warning: File locally modified while using the XMLDB Editor. Saving will overwrite local changes';
+                        }
+                    }
                 } else {
                     $b .= '[' . $this->str['save'] . ']';
                 }
-- 
2.39.5