MDL-32003 xmldb: Use action error for filemodified check instead of structure one...
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Tue, 19 Jun 2012 23:26:06 +0000 (01:26 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Wed, 20 Jun 2012 00:04:02 +0000 (02:04 +0200)
admin/tool/xmldb/actions/main_view/main_view.class.php
admin/tool/xmldb/lang/en/tool_xmldb.php

index f0ecc7e..9d4e002 100644 (file)
@@ -58,6 +58,7 @@ class main_view extends XMLDBAction {
             'checkbigints' => 'tool_xmldb',
             'checkoraclesemantics' => 'tool_xmldb',
             'doc' => 'tool_xmldb',
+            'filemodifiedoutfromeditor' => 'tool_xmldb',
             'viewxml' => 'tool_xmldb',
             'pendingchangescannotbesavedreload' => 'tool_xmldb'
         ));
@@ -194,10 +195,8 @@ class main_view extends XMLDBAction {
                     $b .= '<a href="index.php?action=save_xml_file&amp;sesskey=' . sesskey() . '&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';
-                        }
+                        // File manually modified. Add to action error, will be displayed inline.
+                        $this->errormsg = $this->str['filemodifiedoutfromeditor'];
                     }
                 } else {
                     $b .= '[' . $this->str['save'] . ']';
@@ -266,7 +265,12 @@ class main_view extends XMLDBAction {
                 // show errors if they exist
                 if (isset($dbdir->xml_file)) {
                     if ($structure = $dbdir->xml_file->getStructure()) {
-                        if ($errors = $structure->getAllErrors()) {
+                        $errors = !empty($this->errormsg) ? array($this->errormsg) : array();
+                        $structureerrors = $structure->getAllErrors();
+                        if ($structureerrors) {
+                            $errors = array_merge($errors, $structureerrors);
+                        }
+                        if (!empty($errors)) {
                             if ($hithis) {
                                 $o .= '<tr class="highlight"><td class="error cell" colspan="10">' . implode (', ', $errors) . '</td></tr>';
                             } else {
index 17392ec..7b384b2 100644 (file)
@@ -90,6 +90,7 @@ $string['fields'] = 'Fields';
 $string['fieldsnotintable'] = 'Field doesn\'t exist in table';
 $string['fieldsusedinindex'] = 'This field is used as index';
 $string['fieldsusedinkey'] = 'This field is used as key.';
+$string['filemodifiedoutfromeditor'] = 'Warning: File locally modified while using the XMLDB Editor. Saving will overwrite local changes.';
 $string['filenotwriteable'] = 'File not writeable';
 $string['fkviolationdetails'] = 'Foreign key {$a->keyname} on table {$a->tablename} is violated by {$a->numviolations} out of {$a->numrows} rows.';
 $string['floatincorrectdecimals'] = 'Incorrect number of decimals for float field';