MDL-47874 dml: add support for replace_all_text to oracle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Fri, 31 Oct 2014 01:35:46 +0000 (02:35 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Sun, 2 Nov 2014 17:26:18 +0000 (18:26 +0100)
And, at the same time, fix the implementation so all databases
will be using sql_substr() instead of harcoded "SUBSTRING".

lib/dml/moodle_database.php
lib/dml/oci_native_moodle_database.php

index ce28102..80c44b4 100644 (file)
@@ -2288,7 +2288,7 @@ abstract class moodle_database {
             if (core_text::strlen($search) < core_text::strlen($replace)) {
                 $colsize = $column->max_length;
                 $sql = "UPDATE {".$table."}
-                       SET $columnname = SUBSTRING(REPLACE($columnname, ?, ?), 1, $colsize)
+                       SET $columnname = " . $this->sql_substr("REPLACE(" . $columnname . ", ?, ?)", 1, $colsize) . "
                      WHERE $columnname IS NOT NULL";
             }
             $this->execute($sql, array($search, $replace));
index fed5c85..9645c9a 100644 (file)
@@ -1731,6 +1731,16 @@ class oci_native_moodle_database extends moodle_database {
         }
     }
 
+    /**
+     * Does this driver support tool_replace?
+     *
+     * @since Moodle 2.8
+     * @return bool
+     */
+    public function replace_all_text_supported() {
+        return true;
+    }
+
     public function session_lock_supported() {
         return true;
     }