Skip to content

Commit

Permalink
MDL-53495 database xmldb: Use real length restriction.
Browse files Browse the repository at this point in the history
  • Loading branch information
mr-russ committed Jun 8, 2016
1 parent 4ee8ef5 commit 0b768e7
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion admin/tool/xmldb/actions/edit_field/edit_field.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ function invoke() {
$o.= ' <input type="hidden" name ="name" value="' . s($field->getName()) .'" />';
$o.= ' <tr valign="top"><td>Name:</td><td colspan="2">' . s($field->getName()) . '</td></tr>';
} else {
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" maxlength="30" id="name" value="' . s($field->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="'.xmldb_field::NAME_MAX_LENGTH.'" maxlength="'.xmldb_field::NAME_MAX_LENGTH.'" id="name" value="' . s($field->getName()) . '" /></td></tr>';
}
// XMLDB field comment
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td colspan="2"><textarea name="comment" rows="3" cols="80" id="comment">' . s($field->getComment()) . '</textarea></td></tr>';
Expand Down
2 changes: 1 addition & 1 deletion admin/tool/xmldb/actions/edit_index/edit_index.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ function invoke() {
if ($structure->getIndexUses($table->getName(), $index->getName())) {
$disabled = ' disabled="disabled " ';
}
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . ' value="' . s($index->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="'.xmldb_field::NAME_MAX_LENGTH.'" id="name"' . $disabled . ' value="' . s($index->getName()) . '" /></td></tr>';
// XMLDB key comment
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td colspan="2"><textarea name="comment" rows="3" cols="80" id="comment">' . s($index->getComment()) . '</textarea></td></tr>';
// xmldb_index Type
Expand Down
2 changes: 1 addition & 1 deletion admin/tool/xmldb/actions/edit_key/edit_key.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ function invoke() {
if ($structure->getKeyUses($table->getName(), $key->getName())) {
$disabled = ' disabled="disabled " ';
}
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . ' value="' . s($key->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="'.xmldb_field::NAME_MAX_LENGTH.'" id="name"' . $disabled . ' value="' . s($key->getName()) . '" /></td></tr>';
// XMLDB key comment
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td colspan="2"><textarea name="comment" rows="3" cols="80" id="comment">' . s($key->getComment()) . '</textarea></td></tr>';
// xmldb_key Type
Expand Down
2 changes: 1 addition & 1 deletion admin/tool/xmldb/actions/edit_table/edit_table.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ function invoke() {
if ($structure->getTableUses($table->getName())) {
$o.= ' <tr valign="top"><td>Name:</td><td><input type="hidden" name ="name" value="' . s($table->getName()) . '" />' . s($table->getName()) .'</td></tr>';
} else {
$o.= ' <tr valign="top"><td><label for="name" accesskey="p">Name:</label></td><td><input name="name" type="text" size="28" maxlength="28" id="name" value="' . s($table->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="p">Name:</label></td><td><input name="name" type="text" size="'.xmldb_table::NAME_MAX_LENGTH.'" maxlength="'.xmldb_table::NAME_MAX_LENGTH.'" id="name" value="' . s($table->getName()) . '" /></td></tr>';
}
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td><textarea name="comment" rows="3" cols="80" id="comment">' . s($table->getComment()) . '</textarea></td></tr>';
$o.= ' <tr valign="top"><td>&nbsp;</td><td><input type="submit" value="' .$this->str['change'] . '" /></td></tr>';
Expand Down
11 changes: 7 additions & 4 deletions lib/ddl/tests/ddl_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ public function test_table_exists() {
* Test behaviour of create_table()
*/
public function test_create_table() {

$DB = $this->tdb; // Do not use global $DB!
$dbman = $this->tdb->get_manager();

Expand Down Expand Up @@ -289,8 +290,9 @@ public function test_create_table() {
$this->assertInstanceOf('ddl_exception', $e);
}

// Long table name names - the largest allowed.
$table = new xmldb_table('test_table0123456789_____xyz');
// Long table name names - the largest allowed by the configuration which exclude the prefix to ensure it's created.
$tablechars = str_repeat('a', xmldb_table::NAME_MAX_LENGTH);
$table = new xmldb_table($tablechars);
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '2');
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
Expand All @@ -302,8 +304,9 @@ public function test_create_table() {
$this->assertTrue($dbman->table_exists($table));
$dbman->drop_table($table);

// Table name is too long.
$table = new xmldb_table('test_table0123456789_____xyz9');
// Table name is too long, ignoring any prefix size set.
$tablechars = str_repeat('a', xmldb_table::NAME_MAX_LENGTH + 1);
$table = new xmldb_table($tablechars);
$table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null);
$table->add_field('course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '2');
$table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
Expand Down
2 changes: 1 addition & 1 deletion lib/xmldb/xmldb_table.php
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 +714,7 @@ public function validateDefinition(xmldb_table $xmldb_table=null) {
// table parameter is ignored
$name = $this->getName();
if (strlen($name) > self::NAME_MAX_LENGTH) {
return 'Invalid table name {'.$name.'}: name is too long. Limit is 28 chars.';
return 'Invalid table name {'.$name.'}: name is too long. Limit is '.self::NAME_MAX_LENGTH.' chars.';
}
if (!preg_match('/^[a-z][a-z0-9_]*$/', $name)) {
return 'Invalid table name {'.$name.'}: name includes invalid characters.';
Expand Down

0 comments on commit 0b768e7

Please sign in to comment.