X-Git-Url: http://git.cyclocoop.org/%7B%7B%20url_for%28%27admin_vote_del%27%2C%20idvote=vote.voteid%29%20%7D%7D?a=blobdiff_plain;f=includes%2Flibs%2Frdbms%2Fdatabase%2FDatabaseMssql.php;h=8f3cab831486e2203a3fdc3ffa12c9c6f7fde46f;hb=31cb62dd2db05d151a25496367b60ca339f5fec1;hp=c736cc79ae8719d86daed64c7376dbc9629c8e11;hpb=8ca0afde953e905762d549c0b289f7954262e535;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 ); } /**