MediaWiki  REL1_24
ApiQueryBase Class Reference

This is a base class for all Query modules. More...

Inheritance diagram for ApiQueryBase:
Collaboration diagram for ApiQueryBase:

List of all members.

Public Member Functions

 __construct (ApiQuery $queryModule, $moduleName, $paramPrefix= '')
Methods to implement
 getCacheMode ($params)
 Get the cache mode for the data generated by this module.
 requestExtraData ($pageSet)
 Override this method to request extra fields from the pageSet using $pageSet->requestField('fieldName')

Public Attributes

 $fields
 $join_conds
 $mDb
 $options
 $tables
 $where

Private Attributes

 $mQueryModule

Data access

 getQuery ()
 Get the main Query module.
 selectNamedDB ($name, $db, $groups)
 Selects the query database connection with the given name.
 getDB ()
 Get the Query database connection (read-only)
 getPageSet ()
 Get the PageSet object to work on.

Querying

 prepareUrlQuerySearchString ($query=null, $protocol=null)
 showHiddenUsersAddBlockInfo ($showBlockInfo)
 Filters hidden users (where the user doesn't have the right to view them) Also adds relevant block information.
 resetQueryParams ()
 Blank the internal arrays with query parameters.
 addTables ($tables, $alias=null)
 Add a set of tables to the internal array.
 addJoinConds ($join_conds)
 Add a set of JOIN conditions to the internal array.
 addFields ($value)
 Add a set of fields to select to the internal array.
 addFieldsIf ($value, $condition)
 Same as addFields(), but add the fields only if a condition is met.
 addWhere ($value)
 Add a set of WHERE clauses to the internal array.
 addWhereIf ($value, $condition)
 Same as addWhere(), but add the WHERE clauses only if a condition is met.
 addWhereFld ($field, $value)
 Equivalent to addWhere(array($field => $value))
 addWhereRange ($field, $dir, $start, $end, $sort=true)
 Add a WHERE clause corresponding to a range, and an ORDER BY clause to sort in the right direction.
 addTimestampWhereRange ($field, $dir, $start, $end, $sort=true)
 Add a WHERE clause corresponding to a range, similar to addWhereRange, but converts $start and $end to database timestamps.
 addOption ($name, $value=null)
 Add an option such as LIMIT or USE INDEX.
 select ($method, $extraQuery=array())
 Execute a SELECT query based on the values in the internal arrays.

Utility methods

 titlePartToKey ($titlePart, $namespace=NS_MAIN)
 Convert an input title or title prefix into a dbkey.
 getDirectionDescription ($p= '', $extraDirText= '')
 Gets the personalised direction parameter description.
 validateSha1Hash ($hash)
 validateSha1Base36Hash ($hash)
 userCanSeeRevDel ()
 Check whether the current user has permission to view revision-deleted fields.
 addPageSubItems ($pageId, $data)
 Add a sub-element under the page element with the given page ID.
 addPageSubItem ($pageId, $item, $elemname=null)
 Same as addPageSubItems(), but one element of $data at a time.
 setContinueEnumParameter ($paramName, $paramValue)
 Set a query-continue value.
static addTitleInfo (&$arr, $title, $prefix= '')
 Add information (title and namespace) about a Title object to a result array.

Deprecated

 titleToKey ($title)
 Convert a title to a DB key.
 keyToTitle ($key)
 The inverse of titleToKey()
 keyPartToTitle ($keyPart)
 Inverse of titlePartToKey()
 checkRowCount ()
 Estimate the row count for the SELECT query that would be run if we called select() right now, and check if it's acceptable.

Detailed Description

This is a base class for all Query modules.

It provides some common functionality such as constructing various SQL queries.

Definition at line 34 of file ApiQueryBase.php.


Constructor & Destructor Documentation

ApiQueryBase::__construct ( ApiQuery queryModule,
moduleName,
paramPrefix = '' 
)
Parameters:
ApiQuery$queryModule
string$moduleName
string$paramPrefix

Reimplemented in ApiQueryImageInfo.

Definition at line 43 of file ApiQueryBase.php.

References ApiBase\getMain(), and resetQueryParams().


Member Function Documentation

ApiQueryBase::addJoinConds ( join_conds) [protected]

Add a set of JOIN conditions to the internal array.

JOIN conditions are formatted as array( tablename => array(jointype, conditions) e.g. array('page' => array('LEFT JOIN', 'page_id=rev_page')) . conditions may be a string or an addWhere()-style array

Parameters:
array$join_condsJOIN conditions

Definition at line 173 of file ApiQueryBase.php.

References $join_conds, and ApiBase\dieDebug().

Referenced by ApiQueryDeletedrevs\execute(), ApiQueryCategoryInfo\execute(), ApiQueryLogEvents\execute(), ApiQueryContributors\execute(), ApiQueryAllUsers\execute(), ApiQueryRevisions\execute(), ApiQueryUsers\execute(), ApiQueryContributions\prepareQuery(), ApiQueryProtectedTitles\run(), ApiQueryCategories\run(), ApiQueryAllCategories\run(), ApiQueryWatchlist\run(), ApiQueryAllPages\run(), ApiQueryAllImages\run(), ApiQueryRecentChanges\run(), and showHiddenUsersAddBlockInfo().

ApiQueryBase::addPageSubItem ( pageId,
item,
elemname = null 
) [protected]

Same as addPageSubItems(), but one element of $data at a time.

Parameters:
int$pageIdPage ID
array$itemData array à la ApiResult
string$elemnameXML element name. If null, getModuleName() is used
Returns:
bool Whether the element fit in the result

Definition at line 468 of file ApiQueryBase.php.

References $result, array(), ApiBase\getModuleName(), ApiBase\getModulePrefix(), and ApiBase\getResult().

Referenced by ApiQueryExternalLinks\execute(), ApiQueryLangLinks\execute(), ApiQueryIWLinks\execute(), ApiQueryImageInfo\execute(), ApiQueryContributors\execute(), ApiQueryRevisions\execute(), ApiQueryImages\run(), ApiQueryDuplicateFiles\run(), ApiQueryCategories\run(), ApiQueryLinks\run(), and ApiQueryBacklinksprop\run().

ApiQueryBase::addPageSubItems ( pageId,
data 
) [protected]

Add a sub-element under the page element with the given page ID.

Parameters:
int$pageIdPage ID
array$dataData array à la ApiResult
Returns:
bool Whether the element fit in the result

Definition at line 451 of file ApiQueryBase.php.

References $result, array(), ApiBase\getModuleName(), ApiBase\getModulePrefix(), and ApiBase\getResult().

Referenced by ApiQueryCategoryInfo\execute().

ApiQueryBase::addTables ( tables,
alias = null 
) [protected]
ApiQueryBase::addTimestampWhereRange ( field,
dir,
start,
end,
sort = true 
) [protected]

Add a WHERE clause corresponding to a range, similar to addWhereRange, but converts $start and $end to database timestamps.

See also:
addWhereRange
Parameters:
string$field
string$dir
string$start
string$end
bool$sort

Definition at line 307 of file ApiQueryBase.php.

References $dir, $sort, and addWhereRange().

Referenced by ApiQueryDeletedrevs\execute(), ApiQueryBlocks\execute(), ApiQueryLogEvents\execute(), ApiQueryRevisions\execute(), ApiQueryContributions\prepareQuery(), ApiQueryProtectedTitles\run(), ApiQueryCategoryMembers\run(), ApiQueryWatchlist\run(), ApiQueryAllImages\run(), and ApiQueryRecentChanges\run().

ApiQueryBase::addWhere ( value) [protected]

Add a set of WHERE clauses to the internal array.

Clauses can be formatted as 'foo=bar' or array('foo' => 'bar'), the latter only works if the value is a constant (i.e. not another field)

If $value is an empty array, this function does nothing.

For example, array('foo=bar', 'baz' => 3, 'bla' => 'foo') translates to "foo=bar AND baz='3' AND bla='foo'"

Parameters:
string | array$value

Definition at line 219 of file ApiQueryBase.php.

References $value.

Referenced by addWhereIf(), addWhereRange(), ApiQueryExternalLinks\execute(), ApiQueryDeletedrevs\execute(), ApiQueryLangLinks\execute(), ApiQueryIWLinks\execute(), ApiQueryCategoryInfo\execute(), ApiQueryFilearchive\execute(), ApiQueryPageProps\execute(), ApiQueryBlocks\execute(), ApiQueryLogEvents\execute(), ApiQueryAllUsers\execute(), ApiQueryContributors\execute(), ApiQueryRevisions\execute(), ApiQueryInfo\getProtectionInfo(), ApiQueryInfo\getTSIDs(), ApiQueryInfo\getWatchedInfo(), ApiQueryInfo\getWatcherInfo(), ApiQueryContributions\prepareQuery(), ApiQueryProtectedTitles\run(), ApiQueryImages\run(), ApiQueryIWBacklinks\run(), ApiQueryLangBacklinks\run(), ApiQueryWatchlistRaw\run(), ApiQueryExtLinksUsage\run(), ApiQueryCategories\run(), ApiQueryAllCategories\run(), ApiQueryCategoryMembers\run(), ApiQueryPagesWithProp\run(), ApiQueryWatchlist\run(), ApiQueryAllPages\run(), ApiQueryAllImages\run(), ApiQueryLinks\run(), ApiQueryBacklinksprop\run(), ApiQueryAllLinks\run(), ApiQueryRecentChanges\run(), and showHiddenUsersAddBlockInfo().

ApiQueryBase::addWhereIf ( value,
condition 
) [protected]

Same as addWhere(), but add the WHERE clauses only if a condition is met.

Parameters:
string | array$value
bool$conditionIf false, do nothing
Returns:
bool $condition

Definition at line 237 of file ApiQueryBase.php.

References $value, and addWhere().

Referenced by ApiQueryBlocks\execute(), ApiQueryContributors\execute(), ApiQueryContributions\prepareQuery(), ApiQueryWatchlistRaw\run(), ApiQueryWatchlist\run(), ApiQueryBacklinksprop\run(), and ApiQueryRecentChanges\run().

ApiQueryBase::addWhereRange ( field,
dir,
start,
end,
sort = true 
) [protected]

Add a WHERE clause corresponding to a range, and an ORDER BY clause to sort in the right direction.

Parameters:
string$fieldField name
string$dirIf 'newer', sort in ascending order, otherwise sort in descending order
string$startValue to start the list at. If $dir == 'newer' this is the lower boundary, otherwise it's the upper boundary
string$endValue to end the list at. If $dir == 'newer' this is the upper boundary, otherwise it's the lower boundary
bool$sortIf false, don't add an ORDER BY clause

Definition at line 272 of file ApiQueryBase.php.

References $dir, $sort, addOption(), addWhere(), array(), getDB(), and options().

Referenced by addTimestampWhereRange(), ApiQueryDeletedrevs\execute(), ApiQueryFilearchive\execute(), ApiQueryBlocks\execute(), ApiQueryLogEvents\execute(), ApiQueryPagePropNames\execute(), ApiQueryTags\execute(), ApiQueryAllUsers\execute(), ApiQueryRevisions\execute(), ApiQueryRandom\prepareQuery(), ApiQueryContributions\prepareQuery(), ApiQueryProtectedTitles\run(), ApiQueryCategoryMembers\run(), ApiQueryAllCategories\run(), ApiQueryPagesWithProp\run(), ApiQueryWatchlist\run(), ApiQueryAllPages\run(), ApiQueryAllImages\run(), and ApiQueryAllLinks\run().

ApiQueryBase::checkRowCount ( ) [protected]

Estimate the row count for the SELECT query that would be run if we called select() right now, and check if it's acceptable.

Deprecated:
since 1.24
Returns:
bool True if acceptable, false otherwise

Definition at line 578 of file ApiQueryBase.php.

References ContextSource\getConfig(), getDB(), options(), ApiBase\profileDBIn(), ApiBase\profileDBOut(), tables, and wfDeprecated().

ApiQueryBase::getDirectionDescription ( p = '',
extraDirText = '' 
)

Gets the personalised direction parameter description.

Parameters:
string$pModulePrefix
string$extraDirTextAny extra text to be appended on the description
Returns:
array

Definition at line 527 of file ApiQueryBase.php.

References array().

Referenced by ApiQueryProtectedTitles\getParamDescription(), ApiQueryBlocks\getParamDescription(), ApiQueryDeletedrevs\getParamDescription(), ApiQueryWatchlist\getParamDescription(), ApiQueryContributions\getParamDescription(), ApiQueryLogEvents\getParamDescription(), ApiQueryRecentChanges\getParamDescription(), and ApiQueryRevisions\getParamDescription().

Get the main Query module.

Returns:
ApiQuery

Definition at line 89 of file ApiQueryBase.php.

Referenced by ApiQueryUserInfo\getCurrentUserInfo(), getDB(), getPageSet(), and selectNamedDB().

Inverse of titlePartToKey()

Deprecated:
since 1.24, unused and probably never needed
Parameters:
string$keyPartDBkey, with prefix
Returns:
string Key part with underscores

Definition at line 646 of file ApiQueryBase.php.

References keyToTitle(), and wfDeprecated().

The inverse of titleToKey()

Deprecated:
since 1.24, unused and probably never needed
Parameters:
string$keyPage title with underscores
Returns:
string Page title with spaces

Definition at line 625 of file ApiQueryBase.php.

References $key, $t, array(), ApiBase\dieUsageMsg(), Title\newFromDBkey(), and wfDeprecated().

Referenced by keyPartToTitle().

ApiQueryBase::prepareUrlQuerySearchString ( query = null,
protocol = null 
)
Parameters:
string$query
string$protocol
Returns:
null|string

Definition at line 379 of file ApiQueryBase.php.

References $query, ApiBase\dieUsage(), LinkFilter\keepOneWildcard(), and LinkFilter\makeLikeArray().

Referenced by ApiQueryExternalLinks\execute(), and ApiQueryExtLinksUsage\run().

Override this method to request extra fields from the pageSet using $pageSet->requestField('fieldName')

Parameters:
ApiPageSet$pageSet

Reimplemented in ApiQueryInfo.

Definition at line 75 of file ApiQueryBase.php.

ApiQueryBase::select ( method,
extraQuery = array() 
) [protected]

Execute a SELECT query based on the values in the internal arrays.

Parameters:
string$methodFunction the query should be attributed to. You should usually use __METHOD__ here
array$extraQueryQuery data to add but not store in the object Format is array( 'tables' => ..., 'fields' => ..., 'where' => ..., 'options' => ..., 'join_conds' => ... )
Returns:
ResultWrapper

Definition at line 341 of file ApiQueryBase.php.

References $fields, $join_conds, $options, $res, $tables, $where, array(), getDB(), options(), ApiBase\profileDBIn(), ApiBase\profileDBOut(), and tables.

Referenced by ApiQueryDeletedrevs\execute(), ApiQueryExternalLinks\execute(), ApiQueryLangLinks\execute(), ApiQueryIWLinks\execute(), ApiQueryCategoryInfo\execute(), ApiQueryFilearchive\execute(), ApiQueryPageProps\execute(), ApiQueryBlocks\execute(), ApiQueryContributions\execute(), ApiQueryLogEvents\execute(), ApiQueryPagePropNames\execute(), ApiQueryTags\execute(), ApiQueryContributors\execute(), ApiQueryAllUsers\execute(), ApiQueryRevisions\execute(), ApiQueryUsers\execute(), ApiQueryInfo\getDisplayTitle(), ApiQueryInfo\getProtectionInfo(), ApiQueryInfo\getTSIDs(), ApiQueryInfo\getWatchedInfo(), ApiQueryInfo\getWatcherInfo(), ApiQueryIWBacklinks\run(), ApiQueryLangBacklinks\run(), ApiQueryImages\run(), ApiQueryProtectedTitles\run(), ApiQueryWatchlistRaw\run(), ApiQueryExtLinksUsage\run(), ApiQueryCategories\run(), ApiQueryAllCategories\run(), ApiQueryCategoryMembers\run(), ApiQueryPagesWithProp\run(), ApiQueryWatchlist\run(), ApiQueryAllPages\run(), ApiQueryLinks\run(), ApiQueryAllImages\run(), ApiQueryBacklinksprop\run(), ApiQueryAllLinks\run(), ApiQueryRecentChanges\run(), and ApiQueryRandom\runQuery().

ApiQueryBase::selectNamedDB ( name,
db,
groups 
)

Selects the query database connection with the given name.

See ApiQuery::getNamedDB() for more information

Parameters:
string$nameName to assign to the database connection
int$dbOne of the DB_* constants
array$groupsQuery groups
Returns:
DatabaseBase

Definition at line 113 of file ApiQueryBase.php.

References $name, and getQuery().

Referenced by ApiQueryContributions\execute(), ApiQueryWatchlistRaw\run(), and ApiQueryWatchlist\run().

Filters hidden users (where the user doesn't have the right to view them) Also adds relevant block information.

Parameters:
bool$showBlockInfo
Returns:
void

Definition at line 408 of file ApiQueryBase.php.

References addFields(), addJoinConds(), addTables(), addWhere(), array(), and ContextSource\getUser().

Referenced by ApiQueryAllUsers\execute(), and ApiQueryUsers\execute().

ApiQueryBase::titlePartToKey ( titlePart,
namespace = NS_MAIN 
)

Convert an input title or title prefix into a dbkey.

$namespace should always be specified in order to handle per-namespace capitalization settings.

Parameters:
string$titlePartTitle part
int$defaultNamespaceNamespace of the title
Returns:
string DBkey (no namespace prefix)

Definition at line 503 of file ApiQueryBase.php.

References $t, array(), ApiBase\dieUsageMsg(), and Title\makeTitleSafe().

Referenced by ApiQueryDeletedrevs\execute(), ApiQueryFilearchive\execute(), ApiQueryAllCategories\run(), ApiQueryAllPages\run(), ApiQueryAllImages\run(), and ApiQueryAllLinks\run().

Convert a title to a DB key.

Deprecated:
since 1.24, past uses of this were always incorrect and should have used self::titlePartToKey() instead
Parameters:
string$titlePage title with spaces
Returns:
string Page title with underscores

Definition at line 605 of file ApiQueryBase.php.

References $t, $title, array(), ApiBase\dieUsageMsg(), Title\newFromText(), and wfDeprecated().

Check whether the current user has permission to view revision-deleted fields.

Returns:
bool

Definition at line 556 of file ApiQueryBase.php.

References ContextSource\getUser().

Referenced by ApiQueryLogEvents\getCacheMode(), ApiQueryRecentChanges\getCacheMode(), ApiQueryImageInfo\getCacheMode(), and ApiQueryRevisions\getCacheMode().

Parameters:
string$hash
Returns:
bool

Definition at line 547 of file ApiQueryBase.php.

Referenced by ApiQueryFilearchive\execute(), and ApiQueryAllImages\run().

Parameters:
string$hash
Returns:
bool

Definition at line 539 of file ApiQueryBase.php.

Referenced by ApiQueryFilearchive\execute(), and ApiQueryAllImages\run().


Member Data Documentation

ApiQueryBase::$fields

Definition at line 36 of file ApiQueryBase.php.

Referenced by ApiQueryORM\getConditions(), and select().

ApiQueryBase::$join_conds

Definition at line 36 of file ApiQueryBase.php.

Referenced by addJoinConds(), and select().

ApiQueryBase::$mDb

Definition at line 36 of file ApiQueryBase.php.

ApiQueryBase::$mQueryModule [private]

Definition at line 36 of file ApiQueryBase.php.

ApiQueryBase::$options

Definition at line 36 of file ApiQueryBase.php.

Referenced by select().

ApiQueryBase::$tables

Definition at line 36 of file ApiQueryBase.php.

Referenced by addTables(), ApiQueryContributions\prepareQuery(), and select().

ApiQueryBase::$where

Definition at line 36 of file ApiQueryBase.php.

Referenced by ApiQueryDeletedrevs\execute(), ApiQueryBacklinksprop\run(), and select().


The documentation for this class was generated from the following file: