Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
integration
prechecker
Commits
76f2fcde
Commit
76f2fcde
authored
Jan 27, 2013
by
Petr Škoda
Browse files
MDL-37726 stop using PREVIOUS/NEXT in install.xml files
parent
c6cbc3c7
Changes
10
Hide whitespace changes
Inline
Side-by-side
config-dist.php
View file @
76f2fcde
...
...
@@ -498,17 +498,8 @@ $CFG->admin = 'admin';
// Divert all outgoing emails to this address to test and debug emailing features
// $CFG->divertallemailsto = 'root@localhost.local'; // NOT FOR PRODUCTION SERVERS!
//
// special magic evil developer only wanting to edit the xmldb files manually
// AND don't use the XMLDBEditor nor the prev/next stuff at all (Mahara and others)
// Uncomment these if you're lazy like Penny
// Uncomment if you want to allow empty comments when modifying install.xml files.
// $CFG->xmldbdisablecommentchecking = true; // NOT FOR PRODUCTION SERVERS!
// $CFG->xmldbdisablenextprevchecking = true; // NOT FOR PRODUCTION SERVERS!
//
// Special magic - evil developer only wanting to edit xmldb files manually
// AND allowing the XMLDBEditor to reconstruct the prev/next elements every
// time one file is loaded and saved (Moodle).
// Uncomment this if you're lazy like Petr
// $CFG->xmldbreconstructprevnext = true; // NOT FOR PRODUCTION SERVERS!
//
// Since 2.0 sql queries are not shown during upgrade by default.
// Please note that this setting may produce very long upgrade page on large sites.
...
...
lib/ddl/tests/ddl_test.php
View file @
76f2fcde
...
...
@@ -1400,12 +1400,6 @@ class ddl_testcase extends database_driver_testcase {
$this
->
assertTrue
(
$e
instanceof
moodle_exception
);
}
// Real file but invalid xml file
$devhack
=
false
;
if
(
!
empty
(
$CFG
->
xmldbdisablenextprevchecking
))
{
$CFG
->
xmldbdisablenextprevchecking
=
false
;
$devhack
=
true
;
}
try
{
$dbman
->
delete_tables_from_xmldb_file
(
__DIR__
.
'/fixtures/invalid.xml'
);
$this
->
assertTrue
(
false
);
...
...
@@ -1413,9 +1407,6 @@ class ddl_testcase extends database_driver_testcase {
$this
->
resetDebugging
();
$this
->
assertTrue
(
$e
instanceof
moodle_exception
);
}
if
(
$devhack
)
{
$CFG
->
xmldbdisablenextprevchecking
=
true
;
}
// Check that the table has not been deleted from DB
$this
->
assertTrue
(
$dbman
->
table_exists
(
'test_table1'
));
...
...
@@ -1441,12 +1432,6 @@ class ddl_testcase extends database_driver_testcase {
$this
->
assertTrue
(
$e
instanceof
moodle_exception
);
}
// Real but invalid xml file
$devhack
=
false
;
if
(
!
empty
(
$CFG
->
xmldbdisablenextprevchecking
))
{
$CFG
->
xmldbdisablenextprevchecking
=
false
;
$devhack
=
true
;
}
try
{
$dbman
->
install_from_xmldb_file
(
__DIR__
.
'/fixtures/invalid.xml'
);
$this
->
assertTrue
(
false
);
...
...
@@ -1454,9 +1439,6 @@ class ddl_testcase extends database_driver_testcase {
$this
->
resetDebugging
();
$this
->
assertTrue
(
$e
instanceof
moodle_exception
);
}
if
(
$devhack
)
{
$CFG
->
xmldbdisablenextprevchecking
=
true
;
}
// Check that the table has not yet been created in DB
$this
->
assertFalse
(
$dbman
->
table_exists
(
'test_table1'
));
...
...
lib/ddl/tests/fixtures/invalid.xml
View file @
76f2fcde
...
...
@@ -3,7 +3,7 @@
<TABLES>
<TABLE
NAME=
"test_table1"
COMMENT=
"Just a test table"
>
<FIELDS>
<FIELD
NAME=
"id"
TYPE=
"int"
LENGTH=
"10"
NOTNULL=
"true"
SEQUENCE=
"true"
NEXT=
"incorrect_next_field"
/>
<!--
invalid because of NEXT value
-->
<FIELD
NAME=
"id"
LENGTH=
"10"
NOTNULL=
"true"
SEQUENCE=
"true"
NEXT=
"incorrect_next_field"
/>
<!--
missing TYPE
-->
<FIELD
NAME=
"course"
TYPE=
"int"
LENGTH=
"10"
NOTNULL=
"true"
SEQUENCE=
"false"
PREVIOUS=
"id"
NEXT=
"name"
/>
<FIELD
NAME=
"name"
TYPE=
"char"
LENGTH=
"30"
NOTNULL=
"false"
SEQUENCE=
"false"
DEFAULT=
"Moodle"
PREVIOUS=
"course"
NEXT=
"secondname"
/>
<FIELD
NAME=
"secondname"
TYPE=
"char"
LENGTH=
"30"
NOTNULL=
"true"
SEQUENCE=
"false"
PREVIOUS=
"name"
NEXT=
"intro"
/>
...
...
lib/xmldb/xmldb.xsd
View file @
76f2fcde
...
...
@@ -67,6 +67,7 @@
<xs:attribute
name=
"UNSIGNED"
type=
"trueFalse"
use=
"optional"
/>
<xs:attribute
name=
"DEFAULT"
type=
"xs:string"
use=
"optional"
/>
<xs:attribute
name=
"COMMENT"
type=
"xs:string"
use=
"optional"
/>
<!-- TODO: Moodle 2.6 - Drop ignored PREVIOUS/NEXT attributes -->
<xs:attribute
name=
"PREVIOUS"
type=
"fieldName"
use=
"optional"
/>
<xs:attribute
name=
"NEXT"
type=
"fieldName"
use=
"optional"
/>
</xs:complexType>
...
...
@@ -87,6 +88,7 @@
<xs:attribute
name=
"FIELDS"
type=
"fieldsList"
use=
"required"
/>
<xs:attribute
name=
"HINTS"
type=
"xs:string"
use=
"optional"
/>
<xs:attribute
name=
"COMMENT"
type=
"xs:string"
use=
"optional"
/>
<!-- TODO: Moodle 2.6 - Drop ignored PREVIOUS/NEXT attributes -->
<xs:attribute
name=
"PREVIOUS"
type=
"xs:NMTOKEN"
use=
"optional"
/>
<xs:attribute
name=
"NEXT"
type=
"xs:NMTOKEN"
use=
"optional"
/>
</xs:complexType>
...
...
@@ -108,6 +110,7 @@
<xs:attribute
name=
"REFTABLE"
type=
"tableName"
use=
"optional"
/>
<xs:attribute
name=
"REFFIELDS"
type=
"fieldsList"
use=
"optional"
/>
<xs:attribute
name=
"COMMENT"
type=
"xs:string"
use=
"optional"
/>
<!-- TODO: Moodle 2.6 - Drop ignored PREVIOUS/NEXT attributes -->
<xs:attribute
name=
"PREVIOUS"
type=
"xs:NMTOKEN"
use=
"optional"
/>
<xs:attribute
name=
"NEXT"
type=
"xs:NMTOKEN"
use=
"optional"
/>
</xs:complexType>
...
...
@@ -144,6 +147,7 @@
</xs:sequence>
<xs:attribute
name=
"NAME"
type=
"tableName"
use=
"required"
/>
<xs:attribute
name=
"COMMENT"
type=
"xs:string"
use=
"optional"
/>
<!-- TODO: Moodle 2.6 - Drop ignored PREVIOUS/NEXT attributes -->
<xs:attribute
name=
"PREVIOUS"
type=
"tableName"
use=
"optional"
/>
<xs:attribute
name=
"NEXT"
type=
"tableName"
use=
"optional"
/>
</xs:complexType>
...
...
lib/xmldb/xmldb_field.php
View file @
76f2fcde
...
...
@@ -394,14 +394,6 @@ class xmldb_field extends xmldb_object {
$this
->
comment
=
trim
(
$xmlarr
[
'@'
][
'COMMENT'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'PREVIOUS'
]))
{
$this
->
previous
=
trim
(
$xmlarr
[
'@'
][
'PREVIOUS'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'NEXT'
]))
{
$this
->
next
=
trim
(
$xmlarr
[
'@'
][
'NEXT'
]);
}
// Set some attributes
if
(
$result
)
{
$this
->
loaded
=
true
;
...
...
@@ -533,12 +525,6 @@ class xmldb_field extends xmldb_object {
if
(
$this
->
comment
)
{
$o
.
=
' COMMENT="'
.
htmlspecialchars
(
$this
->
comment
)
.
'"'
;
}
if
(
$this
->
previous
)
{
$o
.
=
' PREVIOUS="'
.
$this
->
previous
.
'"'
;
}
if
(
$this
->
next
)
{
$o
.
=
' NEXT="'
.
$this
->
next
.
'"'
;
}
$o
.
=
'/>'
.
"
\n
"
;
return
$o
;
...
...
lib/xmldb/xmldb_index.php
View file @
76f2fcde
...
...
@@ -209,14 +209,6 @@ class xmldb_index extends xmldb_object {
$this
->
comment
=
trim
(
$xmlarr
[
'@'
][
'COMMENT'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'PREVIOUS'
]))
{
$this
->
previous
=
trim
(
$xmlarr
[
'@'
][
'PREVIOUS'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'NEXT'
]))
{
$this
->
next
=
trim
(
$xmlarr
[
'@'
][
'NEXT'
]);
}
// Set some attributes
if
(
$result
)
{
$this
->
loaded
=
true
;
...
...
@@ -258,12 +250,6 @@ class xmldb_index extends xmldb_object {
if
(
$this
->
comment
)
{
$o
.
=
' COMMENT="'
.
htmlspecialchars
(
$this
->
comment
)
.
'"'
;
}
if
(
$this
->
previous
)
{
$o
.
=
' PREVIOUS="'
.
$this
->
previous
.
'"'
;
}
if
(
$this
->
next
)
{
$o
.
=
' NEXT="'
.
$this
->
next
.
'"'
;
}
$o
.
=
'/>'
.
"
\n
"
;
return
$o
;
...
...
lib/xmldb/xmldb_key.php
View file @
76f2fcde
...
...
@@ -271,14 +271,6 @@ class xmldb_key extends xmldb_object {
$this
->
comment
=
trim
(
$xmlarr
[
'@'
][
'COMMENT'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'PREVIOUS'
]))
{
$this
->
previous
=
trim
(
$xmlarr
[
'@'
][
'PREVIOUS'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'NEXT'
]))
{
$this
->
next
=
trim
(
$xmlarr
[
'@'
][
'NEXT'
]);
}
// Set some attributes
if
(
$result
)
{
$this
->
loaded
=
true
;
...
...
@@ -384,12 +376,6 @@ class xmldb_key extends xmldb_object {
if
(
$this
->
comment
)
{
$o
.
=
' COMMENT="'
.
htmlspecialchars
(
$this
->
comment
)
.
'"'
;
}
if
(
$this
->
previous
)
{
$o
.
=
' PREVIOUS="'
.
$this
->
previous
.
'"'
;
}
if
(
$this
->
next
)
{
$o
.
=
' NEXT="'
.
$this
->
next
.
'"'
;
}
$o
.
=
'/>'
.
"
\n
"
;
return
$o
;
...
...
lib/xmldb/xmldb_object.php
View file @
76f2fcde
...
...
@@ -239,11 +239,6 @@ class xmldb_object {
* @return bool true if $arr modified
*/
public
function
fixPrevNext
(
&
$arr
)
{
global
$CFG
;
if
(
empty
(
$CFG
->
xmldbreconstructprevnext
))
{
return
false
;
}
$tweaked
=
false
;
$prev
=
null
;
...
...
@@ -267,113 +262,6 @@ class xmldb_object {
return
$tweaked
;
}
/**
* This function will check that all the elements in one array
* have a consistent info in their previous/next fields
* @param array $arr
* @return bool true means ok, false invalid prev/next present
*/
public
function
checkPreviousNextValues
(
$arr
)
{
global
$CFG
;
if
(
!
empty
(
$CFG
->
xmldbdisablenextprevchecking
))
{
return
true
;
}
$result
=
true
;
// Check that only one element has the previous not set
if
(
$arr
)
{
$counter
=
0
;
foreach
(
$arr
as
$element
)
{
if
(
!
$element
->
getPrevious
())
{
$counter
++
;
}
}
if
(
$counter
!=
1
)
{
debugging
(
'The number of objects with previous not set is different from 1'
,
DEBUG_DEVELOPER
);
$result
=
false
;
}
}
// Check that only one element has the next not set
if
(
$result
&&
$arr
)
{
$counter
=
0
;
foreach
(
$arr
as
$element
)
{
if
(
!
$element
->
getNext
())
{
$counter
++
;
}
}
if
(
$counter
!=
1
)
{
debugging
(
'The number of objects with next not set is different from 1'
,
DEBUG_DEVELOPER
);
$result
=
false
;
}
}
// Check that all the previous elements are existing elements
if
(
$result
&&
$arr
)
{
foreach
(
$arr
as
$element
)
{
if
(
$element
->
getPrevious
())
{
$i
=
$this
->
findObjectInArray
(
$element
->
getPrevious
(),
$arr
);
if
(
$i
===
null
)
{
debugging
(
'Object '
.
$element
->
getName
()
.
' says PREVIOUS="'
.
$element
->
getPrevious
()
.
'" but that other object does not exist.'
,
DEBUG_DEVELOPER
);
$result
=
false
;
}
}
}
}
// Check that all the next elements are existing elements
if
(
$result
&&
$arr
)
{
foreach
(
$arr
as
$element
)
{
if
(
$element
->
getNext
())
{
$i
=
$this
->
findObjectInArray
(
$element
->
getNext
(),
$arr
);
if
(
$i
===
null
)
{
debugging
(
'Object '
.
$element
->
getName
()
.
' says NEXT="'
.
$element
->
getNext
()
.
'" but that other object does not exist.'
,
DEBUG_DEVELOPER
);
$result
=
false
;
}
}
}
}
// Check that there aren't duplicates in the previous values
if
(
$result
&&
$arr
)
{
$existarr
=
array
();
foreach
(
$arr
as
$element
)
{
if
(
in_array
(
$element
->
getPrevious
(),
$existarr
))
{
$result
=
false
;
debugging
(
'Object '
.
$element
->
getName
()
.
' says PREVIOUS="'
.
$element
->
getPrevious
()
.
'" but another object has already said that!'
,
DEBUG_DEVELOPER
);
}
else
{
$existarr
[]
=
$element
->
getPrevious
();
}
}
}
// Check that there aren't duplicates in the next values
if
(
$result
&&
$arr
)
{
$existarr
=
array
();
foreach
(
$arr
as
$element
)
{
if
(
in_array
(
$element
->
getNext
(),
$existarr
))
{
$result
=
false
;
debugging
(
'Object '
.
$element
->
getName
()
.
' says NEXT="'
.
$element
->
getNext
()
.
'" but another object has already said that!'
,
DEBUG_DEVELOPER
);
}
else
{
$existarr
[]
=
$element
->
getNext
();
}
}
}
// Check that there aren't next values pointing to themselves
if
(
$result
&&
$arr
)
{
foreach
(
$arr
as
$element
)
{
if
(
$element
->
getNext
()
==
$element
->
getName
())
{
$result
=
false
;
debugging
(
'Object '
.
$element
->
getName
()
.
' says NEXT="'
.
$element
->
getNext
()
.
'" and that is wrongly recursive!'
,
DEBUG_DEVELOPER
);
}
}
}
// Check that there aren't prev values pointing to themselves
if
(
$result
&&
$arr
)
{
foreach
(
$arr
as
$element
)
{
if
(
$element
->
getPrevious
()
==
$element
->
getName
())
{
$result
=
false
;
debugging
(
'Object '
.
$element
->
getName
()
.
' says PREVIOUS="'
.
$element
->
getPrevious
()
.
'" and that is wrongly recursive!'
,
DEBUG_DEVELOPER
);
}
}
}
return
$result
;
}
/**
* This function will order all the elements in one array, following
* the previous/next rules
...
...
@@ -381,11 +269,8 @@ class xmldb_object {
* @return array|bool
*/
public
function
orderElements
(
$arr
)
{
global
$CFG
;
$result
=
true
;
if
(
!
empty
(
$CFG
->
xmldbdisablenextprevchecking
))
{
return
$arr
;
}
// Create a new array
$newarr
=
array
();
if
(
!
empty
(
$arr
))
{
...
...
@@ -411,9 +296,7 @@ class xmldb_object {
// Compare number of elements between original and new array
if
(
$result
&&
count
(
$arr
)
!=
count
(
$newarr
))
{
$result
=
false
;
}
// Check that previous/next is ok (redundant but...)
if
(
$this
->
checkPreviousNextValues
(
$newarr
))
{
}
else
if
(
$newarr
)
{
$result
=
$newarr
;
}
else
{
$result
=
false
;
...
...
lib/xmldb/xmldb_structure.php
View file @
76f2fcde
...
...
@@ -278,13 +278,8 @@ class xmldb_structure extends xmldb_object {
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// C
heck previous & next are ok (duplicates and existing tables)
// C
ompute prev/next.
$this
->
fixPrevNext
(
$this
->
tables
);
if
(
$result
&&
!
$this
->
checkPreviousNextValues
(
$this
->
tables
))
{
$this
->
errormsg
=
'Some TABLES previous/next values are incorrect'
;
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// Order tables
if
(
$result
&&
!
$this
->
orderTables
(
$this
->
tables
))
{
$this
->
errormsg
=
'Error ordering the tables'
;
...
...
lib/xmldb/xmldb_table.php
View file @
76f2fcde
...
...
@@ -511,12 +511,6 @@ class xmldb_table extends xmldb_object {
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
if
(
isset
(
$xmlarr
[
'@'
][
'PREVIOUS'
]))
{
$this
->
previous
=
trim
(
$xmlarr
[
'@'
][
'PREVIOUS'
]);
}
if
(
isset
(
$xmlarr
[
'@'
][
'NEXT'
]))
{
$this
->
next
=
trim
(
$xmlarr
[
'@'
][
'NEXT'
]);
}
// Iterate over fields
if
(
isset
(
$xmlarr
[
'#'
][
'FIELDS'
][
'0'
][
'#'
][
'FIELD'
]))
{
...
...
@@ -548,13 +542,8 @@ class xmldb_table extends xmldb_object {
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// C
heck previous & next are ok (duplicates and existing fields)
// C
ompute prev/next.
$this
->
fixPrevNext
(
$this
->
fields
);
if
(
$result
&&
!
$this
->
checkPreviousNextValues
(
$this
->
fields
))
{
$this
->
errormsg
=
'Some FIELDS previous/next values are incorrect'
;
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// Order fields
if
(
$result
&&
!
$this
->
orderFields
(
$this
->
fields
))
{
$this
->
errormsg
=
'Error ordering the fields'
;
...
...
@@ -593,13 +582,8 @@ class xmldb_table extends xmldb_object {
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// C
heck previous & next are ok (duplicates and existing keys)
// C
ompute prev/next.
$this
->
fixPrevNext
(
$this
->
keys
);
if
(
$result
&&
!
$this
->
checkPreviousNextValues
(
$this
->
keys
))
{
$this
->
errormsg
=
'Some KEYS previous/next values are incorrect'
;
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// Order keys
if
(
$result
&&
!
$this
->
orderKeys
(
$this
->
keys
))
{
$this
->
errormsg
=
'Error ordering the keys'
;
...
...
@@ -637,13 +621,8 @@ class xmldb_table extends xmldb_object {
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// C
heck previous & next are ok (duplicates and existing INDEXES)
// C
ompute prev/next.
$this
->
fixPrevNext
(
$this
->
indexes
);
if
(
$result
&&
!
$this
->
checkPreviousNextValues
(
$this
->
indexes
))
{
$this
->
errormsg
=
'Some INDEXES previous/next values are incorrect'
;
$this
->
debug
(
$this
->
errormsg
);
$result
=
false
;
}
// Order indexes
if
(
$result
&&
!
$this
->
orderIndexes
(
$this
->
indexes
))
{
$this
->
errormsg
=
'Error ordering the indexes'
;
...
...
@@ -734,13 +713,7 @@ class xmldb_table extends xmldb_object {
if
(
$this
->
comment
)
{
$o
.
=
' COMMENT="'
.
htmlspecialchars
(
$this
->
comment
)
.
'"'
;
}
if
(
$this
->
previous
)
{
$o
.
=
' PREVIOUS="'
.
$this
->
previous
.
'"'
;
}
if
(
$this
->
next
)
{
$o
.
=
' NEXT="'
.
$this
->
next
.
'"'
;
}
$o
.
=
'>'
.
"
\n
"
;
$o
.
=
'>'
.
"
\n
"
;
// Now the fields
if
(
$this
->
fields
)
{
$o
.
=
' <FIELDS>'
.
"
\n
"
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment