(bug 50078) Allow a string other than '*' as condition for DatabaseBase::delete()
authorAlexandre Emsenhuber <ialex.wiki@gmail.com>
Tue, 25 Jun 2013 14:15:45 +0000 (16:15 +0200)
committerAlexandre Emsenhuber <ialex.wiki@gmail.com>
Tue, 25 Jun 2013 14:15:45 +0000 (16:15 +0200)
Currently, either '*' is given as condition meaning "everything" or an array must
be passed since DatabaseBase::makeList() requires an array. Now the parameter is
consistent with one of other similar methods, since a string will be handled
correctly.

Bug: 50078
Change-Id: Id5a8220d21245669f1091a3b5ed1def65b22d375

includes/db/Database.php

index 4b2eae7..e06d80d 100644 (file)
@@ -2712,7 +2712,10 @@ abstract class DatabaseBase implements DatabaseType {
                $sql = "DELETE FROM $table";
 
                if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
+                       if ( is_array( $conds ) ) {
+                               $conds = $this->makeList( $conds, LIST_AND );
+                       }
+                       $sql .= ' WHERE ' . $conds;
                }
 
                return $this->query( $sql, $fname );