From 2f8eea3415a710e85abcf93902aab0a19ad2368b Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sat, 4 Sep 2010 14:23:50 +0000 Subject: [PATCH] MDL-24079 finally the sql_ilike() is deprecated --- lib/dml/moodle_database.php | 4 ++-- lib/dml/pgsql_native_moodle_database.php | 2 +- lib/dml/simpletest/testdml.php | 19 +++++++++++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/dml/moodle_database.php b/lib/dml/moodle_database.php index bf9f82cdb14..335d60de3d1 100644 --- a/lib/dml/moodle_database.php +++ b/lib/dml/moodle_database.php @@ -1749,7 +1749,7 @@ abstract class moodle_database { */ public function sql_like($fieldname, $param, $casesensitive = true, $accentsensitive = true, $escapechar = '\\') { if (strpos($param, '%') !== false) { - debugging('Potential SQL injection detected, sql_ilike() expects bound parameters (? or :named)'); + debugging('Potential SQL injection detected, sql_like() expects bound parameters (? or :named)'); } // by default ignore any sensitiveness - each database does it in a different way return "$fieldname LIKE $param ESCAPE '$escapechar'"; @@ -1778,7 +1778,7 @@ abstract class moodle_database { * @return string */ public function sql_ilike() { - //TODO: debugging('sql_ilike() is deprecated, please use sql_like() instead'); + debugging('sql_ilike() is deprecated, please use sql_like() instead'); return 'LIKE'; } diff --git a/lib/dml/pgsql_native_moodle_database.php b/lib/dml/pgsql_native_moodle_database.php index e903ad0725a..60cabb2af4f 100644 --- a/lib/dml/pgsql_native_moodle_database.php +++ b/lib/dml/pgsql_native_moodle_database.php @@ -1067,7 +1067,7 @@ class pgsql_native_moodle_database extends moodle_database { } public function sql_ilike() { - //TODO: debugging('sql_ilike() is deprecated, please use sql_like() instead'); + debugging('sql_ilike() is deprecated, please use sql_like() instead'); return 'ILIKE'; } diff --git a/lib/dml/simpletest/testdml.php b/lib/dml/simpletest/testdml.php index 5e5d6a4cd0b..6e57738b17c 100755 --- a/lib/dml/simpletest/testdml.php +++ b/lib/dml/simpletest/testdml.php @@ -2207,6 +2207,9 @@ class dml_test extends UnitTestCase { } function test_sql_ilike() { + global $CFG; + + // note: this is deprecated, just make sure it does not throw error $DB = $this->tdb; $dbman = $DB->get_manager(); @@ -2223,10 +2226,22 @@ class dml_test extends UnitTestCase { $DB->insert_record($tablename, array('name'=>'NoDupor')); $DB->insert_record($tablename, array('name'=>'ouch')); + // make sure it prints debug message + $olddebug = $CFG->debug; // Save current debug settings + $olddisplay = $CFG->debugdisplay; + $CFG->debug = DEBUG_DEVELOPER; + $CFG->debugdisplay = true; + ob_start(); // hide debug warning $sql = "SELECT * FROM {".$tablename."} WHERE name ".$DB->sql_ilike()." ?"; $params = array("%dup_r%"); - $records = $DB->get_records_sql($sql, $params); - $this->assertEqual(count($records), 2, 'DB->sql_ilike() is deprecated, ignore this problem.'); + ob_end_clean(); + $debuginfo = ob_get_contents(); + $CFG->debug = $olddebug; // Restore original debug settings + $CFG->debugdisplay = $olddisplay; + $this->assertFalse($debuginfo === ''); + + // following must not throw exception, we ignore result + $DB->get_records_sql($sql, $params); } function test_sql_concat() {