Merge "Type hint against LinkTarget in WatchedItemStore"
[lhc/web/wiklou.git] / includes / api / ApiQueryBase.php
index 3070665..ec432d8 100644 (file)
@@ -21,7 +21,7 @@
  */
 
 use Wikimedia\Rdbms\IDatabase;
-use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\IResultWrapper;
 
 /**
  * This is a base class for all Query modules.
@@ -151,22 +151,21 @@ abstract class ApiQueryBase extends ApiBase {
 
        /**
         * Add a set of tables to the internal array
-        * @param string|string[] $tables Table name or array of table names
+        * @param string|array $tables Table name or array of table names
+        *  or nested arrays for joins using parentheses for grouping
         * @param string|null $alias Table alias, or null for no alias. Cannot be
         *  used with multiple tables
         */
        protected function addTables( $tables, $alias = null ) {
                if ( is_array( $tables ) ) {
-                       if ( !is_null( $alias ) ) {
+                       if ( $alias !== null ) {
                                ApiBase::dieDebug( __METHOD__, 'Multiple table aliases not supported' );
                        }
                        $this->tables = array_merge( $this->tables, $tables );
+               } elseif ( $alias !== null ) {
+                       $this->tables[$alias] = $tables;
                } else {
-                       if ( !is_null( $alias ) ) {
-                               $this->tables[$alias] = $tables;
-                       } else {
-                               $this->tables[] = $tables;
-                       }
+                       $this->tables[] = $tables;
                }
        }
 
@@ -253,7 +252,7 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * Equivalent to addWhere(array($field => $value))
+        * Equivalent to addWhere( [ $field => $value ] )
         * @param string $field Field name
         * @param string|string[] $value Value; ignored if null or empty array
         */
@@ -369,7 +368,7 @@ abstract class ApiQueryBase extends ApiBase {
         * @param array|null &$hookData If set, the ApiQueryBaseBeforeQuery and
         *  ApiQueryBaseAfterQuery hooks will be called, and the
         *  ApiQueryBaseProcessRow hook will be expected.
-        * @return ResultWrapper
+        * @return IResultWrapper
         */
        protected function select( $method, $extraQuery = [], array &$hookData = null ) {
                $tables = array_merge(
@@ -425,35 +424,6 @@ abstract class ApiQueryBase extends ApiBase {
                return Hooks::run( 'ApiQueryBaseProcessRow', [ $this, $row, &$data, &$hookData ] );
        }
 
-       /**
-        * @deprecated since 1.33, use LinkFilter::getQueryConditions() instead
-        * @param string|null $query
-        * @param string|null $protocol
-        * @return null|string
-        */
-       public function prepareUrlQuerySearchString( $query = null, $protocol = null ) {
-               wfDeprecated( __METHOD__, '1.33' );
-               $db = $this->getDB();
-               if ( $query !== null && $query !== '' ) {
-                       if ( is_null( $protocol ) ) {
-                               $protocol = 'http://';
-                       }
-
-                       $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
-                       if ( !$likeQuery ) {
-                               $this->dieWithError( 'apierror-badquery' );
-                       }
-
-                       $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
-
-                       return 'el_index ' . $db->buildLike( $likeQuery );
-               } elseif ( !is_null( $protocol ) ) {
-                       return 'el_index ' . $db->buildLike( "$protocol", $db->anyString() );
-               }
-
-               return null;
-       }
-
        /**
         * Filters hidden users (where the user doesn't have the right to view them)
         * Also adds relevant block information
@@ -532,7 +502,7 @@ abstract class ApiQueryBase extends ApiBase {
        /**
         * Same as addPageSubItems(), but one element of $data at a time
         * @param int $pageId Page ID
-        * @param array $item Data array à la ApiResult
+        * @param mixed $item Data à la ApiResult
         * @param string|null $elemname XML element name. If null, getModuleName()
         *  is used
         * @return bool Whether the element fit in the result