BlueSpice MediaWiki REL1_27
 All Classes Namespaces Files Functions Variables Groups Pages
QueryPage Class Reference
Inheritance diagram for QueryPage:
Collaboration diagram for QueryPage:

Public Member Functions

 setListoutput ($bool)
 
 getQueryInfo ()
 
 getSQL ()
 
 getOrderFields ()
 
 usesTimestamps ()
 
 sortDescending ()
 
 isExpensive ()
 
 isCacheable ()
 
 isCached ()
 
 isSyndicated ()
 
 formatResult ($skin, $result)
 
 getPageHeader ()
 
 linkParameters ()
 
 tryLastResult ()
 
 recache ($limit, $ignoreErrors=true)
 
 getRecacheDB ()
 
 reallyDoQuery ($limit, $offset=false)
 
 doQuery ($offset=false, $limit=false)
 
 fetchFromCache ($limit, $offset=false)
 
 getCachedTimestamp ()
 
 execute ($par)
 
 openList ($offset)
 
 closeList ()
 
 preprocessResults ($db, $res)
 
 feedResult ($row)
 
 feedItemDesc ($row)
 
 feedItemAuthor ($row)
 
 feedTitle ()
 
 feedDesc ()
 
 feedUrl ()
 
- Public Member Functions inherited from SpecialPage
 __construct ($name= '', $restriction= '', $listed=true, $function=false, $file= '', $includable=false)
 
 getName ()
 
 getRestriction ()
 
 isListed ()
 
 setListed ($listed)
 
 listed ($x=null)
 
 isIncludable ()
 
 including ($x=null)
 
 getLocalName ()
 
 isExpensive ()
 
 isCached ()
 
 isRestricted ()
 
 userCanExecute (User $user)
 
 displayRestrictionError ()
 
 checkPermissions ()
 
 checkReadOnly ()
 
 requireLogin ($reasonMsg= 'exception-nologin-text', $titleMsg= 'exception-nologin')
 
 prefixSearchSubpages ($search, $limit, $offset)
 
 setHeaders ()
 
 run ($subPage)
 
 execute ($subPage)
 
 outputHeader ($summaryMessageKey= '')
 
 getDescription ()
 
 getTitle ($subpage=false)
 
 getPageTitle ($subpage=false)
 
 setContext ($context)
 
 getContext ()
 
 getRequest ()
 
 getOutput ()
 
 getUser ()
 
 getSkin ()
 
 getLanguage ()
 
 getConfig ()
 
 getFullTitle ()
 
 msg ()
 
 addHelpLink ($to, $overrideBaseUrl=false)
 
 getFinalGroupName ()
 
 doesWrites ()
 

Static Public Member Functions

static getPages ()
 
- Static Public Member Functions inherited from SpecialPage
static getTitleFor ($name, $subpage=false, $fragment= '')
 
static getSafeTitleFor ($name, $subpage=false)
 

Protected Member Functions

 showEmptyText ()
 
 getLimitOffset ()
 
 getDBLimit ($uiLimit, $uiOffset)
 
 getMaxResults ()
 
 outputResults ($out, $skin, $dbr, $res, $num, $offset)
 
- Protected Member Functions inherited from SpecialPage
 getLoginSecurityLevel ()
 
 checkLoginSecurityLevel ($level=null)
 
 getSubpagesForPrefixSearch ()
 
 prefixSearchString ($search, $limit, $offset)
 
 beforeExecute ($subPage)
 
 afterExecute ($subPage)
 
 getRobotPolicy ()
 
 addFeedLinks ($params)
 
 getGroupName ()
 
 useTransactionalTimeLimit ()
 

Protected Attributes

 $listoutput = false
 
 $offset = 0
 
 $limit = 0
 
 $numRows
 
 $cachedTimestamp = null
 
 $shownavigation = true
 
- Protected Attributes inherited from SpecialPage
 $mName
 
 $mRestriction
 
 $mIncluding
 
 $mIncludable
 
 $mContext
 

Additional Inherited Members

- Static Protected Member Functions inherited from SpecialPage
static prefixSearchArray ($search, $limit, array $subpages, $offset)
 

Detailed Description

This is a class for doing query pages; since they're almost all the same, we factor out some of the functionality into a superclass, and let subclasses derive from it.

Member Function Documentation

QueryPage::closeList ( )
Returns
string
QueryPage::doQuery (   $offset = false,
  $limit = false 
)

Somewhat deprecated, you probably want to be using execute()

Parameters
int | bool$offset
int | bool$limit
Returns
ResultWrapper
QueryPage::execute (   $par)

This is the actual workhorse. It does everything needed to make a real, honest-to-gosh query page.

Parameters
string$par
QueryPage::feedResult (   $row)

Override for custom handling. If the titles/links are ok, just do feedItemDesc()

Parameters
object$row
Returns
FeedItem|null
QueryPage::fetchFromCache (   $limit,
  $offset = false 
)

Fetch the query results from the query cache

Parameters
int | bool$limitNumerical limit or false for no limit
int | bool$offsetNumerical offset or false for no offset
Returns
ResultWrapper
Since
1.18
QueryPage::formatResult (   $skin,
  $result 
)
abstract

Formats the results of the query for display. The skin is the current skin; you can use it for making links. The result is a single row of result data. You should be able to grab SQL results off of it. If the function returns false, the line output will be skipped.

Parameters
Skin$skin
object$resultResult row
Returns
string|bool String or false to skip
QueryPage::getDBLimit (   $uiLimit,
  $uiOffset 
)
protected

What is limit to fetch from DB

Used to make it appear the DB stores less results then it actually does

Parameters
int$uiLimitLimit from UI
int$uiOffsetOffset from UI
Returns
int Limit to use for DB (not including extra row to see if at end)
QueryPage::getLimitOffset ( )
protected

Returns limit and offset, as returned by $this->getRequest()->getLimitOffset(). Subclasses may override this to further restrict or modify limit and offset.

Note
Restricts the offset parameter, as most query pages have inefficient paging

Its generally expected that the returned limit will not be 0, and the returned offset will be less than the max results.

Since
1.26
Returns
int[] list( $limit, $offset )
QueryPage::getMaxResults ( )
protected

Get max number of results we can return in miser mode.

Most QueryPage subclasses use inefficient paging, so limit the max amount we return This matters for uncached query pages that might otherwise accept an offset of 3 million

Since
1.27
Returns
int
QueryPage::getOrderFields ( )

Subclasses return an array of fields to order by here. Don't append DESC to the field names, that'll be done automatically if sortDescending() returns true.

Returns
array
Since
1.18
QueryPage::getPageHeader ( )

The content returned by this function will be output before any result

Returns
string
static QueryPage::getPages ( )
static

Get a list of query page classes and their associated special pages, for periodic updates.

DO NOT CHANGE THIS LIST without testing that maintenance/updateSpecialPages.php still works.

Returns
array
QueryPage::getQueryInfo ( )

Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s) for passing to Database::select() fields => Field(s) for passing to Database::select(), may be * conds => WHERE conditions options => options join_conds => JOIN conditions

Note that the query itself should return the following three columns: 'namespace', 'title', and 'value'. 'value' is used for sorting.

These may be stored in the querycache table for expensive queries, and that cached data will be returned sometimes, so the presence of extra fields can't be relied upon. The cached 'value' column will be an integer; non-numeric values are useful only for sorting the initial query (except if they're timestamps, see usesTimestamps()).

Don't include an ORDER or LIMIT clause, they will be added.

If this function is not overridden or returns something other than an array, getSQL() will be used instead. This is for backwards compatibility only and is strongly deprecated.

Returns
array
Since
1.18
QueryPage::getRecacheDB ( )

Get a DB connection to be used for slow recache queries

Returns
IDatabase
QueryPage::getSQL ( )

For back-compat, subclasses may return a raw SQL query here, as a string. This is strongly deprecated; getQueryInfo() should be overridden instead.

Exceptions
MWException
Returns
string
QueryPage::isCacheable ( )

Is the output of this query cacheable? Non-cacheable expensive pages will be disabled in miser mode and will not have their results written to the querycache table.

Returns
bool
Since
1.18
QueryPage::isCached ( )

Whether or not the output of the page in question is retrieved from the database cache.

Returns
bool
QueryPage::isExpensive ( )

Is this query expensive (for some definition of expensive)? Then we don't let it run in miser mode. $wgDisableQueryPages causes all query pages to be declared expensive. Some query pages are always expensive.

Returns
bool
QueryPage::isSyndicated ( )

Sometime we don't want to build rss / atom feeds.

Returns
bool
QueryPage::linkParameters ( )

If using extra form wheely-dealies, return a set of parameters here as an associative array. They will be encoded and added to the paging links (prev/next/lengths).

Returns
array
QueryPage::openList (   $offset)
Parameters
int$offset
Returns
string
QueryPage::outputResults (   $out,
  $skin,
  $dbr,
  $res,
  $num,
  $offset 
)
protected

Format and output report results using the given information plus OutputPage

Parameters
OutputPage$outOutputPage to print to
Skin$skinUser skin to use
IDatabase$dbrDatabase (read) connection to use
ResultWrapper$resResult pointer
int$numNumber of available result rows
int$offsetPaging offset
QueryPage::preprocessResults (   $db,
  $res 
)

Do any necessary preprocessing of the result object.

Parameters
IDatabase$db
ResultWrapper$res
QueryPage::reallyDoQuery (   $limit,
  $offset = false 
)

Run the query and return the result

Parameters
int | bool$limitNumerical limit or false for no limit
int | bool$offsetNumerical offset or false for no offset
Returns
ResultWrapper
Since
1.18
QueryPage::recache (   $limit,
  $ignoreErrors = true 
)

Clear the cache and save new results

Parameters
int | bool$limitLimit for SQL statement
bool$ignoreErrorsWhether to ignore database errors
Exceptions
DBError|Exception
Returns
bool|int
QueryPage::setListoutput (   $bool)

A mutator for $this->listoutput;

Parameters
bool$bool
QueryPage::showEmptyText ( )
protected

Outputs some kind of an informative message (via OutputPage) to let the user know that the query returned nothing and thus there's nothing to show.

Since
1.26
QueryPage::sortDescending ( )

Override to sort by increasing values

Returns
bool
QueryPage::tryLastResult ( )

Some special pages (for example SpecialListusers used to) might not return the current object formatted, but return the previous one instead. Setting this to return true will ensure formatResult() is called one more time to make sure that the very last result is formatted as well.

Deprecated:
since 1.27
Returns
bool
QueryPage::usesTimestamps ( )

Does this query return timestamps rather than integers in its 'value' field? If true, this class will convert 'value' to a UNIX timestamp for caching. NOTE: formatRow() may get timestamps in TS_MW (mysql), TS_DB (pgsql) or TS_UNIX (querycache) format, so be sure to always run them through wfTimestamp()

Returns
bool
Since
1.18

Member Data Documentation

QueryPage::$numRows
protected

The number of rows returned by the query. Reading this variable only makes sense in functions that are run after the query has been done, such as preprocessResults() and formatRow().

QueryPage::$shownavigation = true
protected

Whether to show prev/next links


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