X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseMssql.php;h=8f3cab831486e2203a3fdc3ffa12c9c6f7fde46f;hb=178bada116bc5aa336191f4867fec5cae2258cd6;hp=c736cc79ae8719d86daed64c7376dbc9629c8e11;hpb=6c81cf528d442d0cb10d0339440e8b104450df41;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/rdbms/database/DatabaseMssql.php b/includes/libs/rdbms/database/DatabaseMssql.php index c736cc79ae..8f3cab8314 100644 --- a/includes/libs/rdbms/database/DatabaseMssql.php +++ b/includes/libs/rdbms/database/DatabaseMssql.php @@ -717,11 +717,12 @@ class DatabaseMssql extends Database { * @param string $fname * @param array $insertOptions * @param array $selectOptions + * @param array $selectJoinConds * @return null|ResultWrapper * @throws Exception */ public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__, - $insertOptions = [], $selectOptions = [] + $insertOptions = [], $selectOptions = [], $selectJoinConds = [] ) { $this->mScrollableCursor = false; try { @@ -732,7 +733,8 @@ class DatabaseMssql extends Database { $conds, $fname, $insertOptions, - $selectOptions + $selectOptions, + $selectJoinConds ); } catch ( Exception $e ) { $this->mScrollableCursor = true; @@ -1110,27 +1112,11 @@ class DatabaseMssql extends Database { * @param string $s * @return string */ - protected function escapeLikeInternal( $s ) { - return addcslashes( $s, '\%_[]^' ); - } - - /** - * MS SQL requires specifying the escape character used in a LIKE query - * or using Square brackets to surround characters that are to be escaped - * https://msdn.microsoft.com/en-us/library/ms179859.aspx - * Here we take the Specify-Escape-Character approach since it's less - * invasive, renders a query that is closer to other DB's and better at - * handling square bracket escaping - * - * @return string Fully built LIKE statement - */ - public function buildLike() { - $params = func_get_args(); - if ( count( $params ) > 0 && is_array( $params[0] ) ) { - $params = $params[0]; - } - - return parent::buildLike( $params ) . " ESCAPE '\' "; + protected function escapeLikeInternal( $s, $escapeChar = '`' ) { + return str_replace( [ $escapeChar, '%', '_', '[', ']', '^' ], + [ "{$escapeChar}{$escapeChar}", "{$escapeChar}%", "{$escapeChar}_", + "{$escapeChar}[", "{$escapeChar}]", "{$escapeChar}^" ], + $s ); } /**