summaryrefslogtreecommitdiff
path: root/includes/specials/SpecialPagesWithProp.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/specials/SpecialPagesWithProp.php')
-rw-r--r--includes/specials/SpecialPagesWithProp.php45
1 files changed, 33 insertions, 12 deletions
diff --git a/includes/specials/SpecialPagesWithProp.php b/includes/specials/SpecialPagesWithProp.php
index e22b42a3..f5b19cc6 100644
--- a/includes/specials/SpecialPagesWithProp.php
+++ b/includes/specials/SpecialPagesWithProp.php
@@ -30,6 +30,7 @@
*/
class SpecialPagesWithProp extends QueryPage {
private $propName = null;
+ private $existingPropNames = null;
function __construct( $name = 'PagesWithProp' ) {
parent::__construct( $name );
@@ -47,18 +48,7 @@ class SpecialPagesWithProp extends QueryPage {
$request = $this->getRequest();
$propname = $request->getVal( 'propname', $par );
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select(
- 'page_props',
- 'pp_propname',
- '',
- __METHOD__,
- array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
- );
- $propnames = array();
- foreach ( $res as $row ) {
- $propnames[$row->pp_propname] = $row->pp_propname;
- }
+ $propnames = $this->getExistingPropNames();
$form = new HTMLForm( array(
'propname' => array(
@@ -89,6 +79,18 @@ class SpecialPagesWithProp extends QueryPage {
}
/**
+ * Return an array of subpages beginning with $search that this special page will accept.
+ *
+ * @param string $search Prefix to search for
+ * @param int $limit Maximum number of results to return
+ * @return string[] Matching subpages
+ */
+ public function prefixSearchSubpages( $search, $limit = 10 ) {
+ $subpages = array_keys( $this->getExistingPropNames() );
+ return self::prefixSearchArray( $search, $limit, $subpages );
+ }
+
+ /**
* Disable RSS/Atom feeds
* @return bool
*/
@@ -150,6 +152,25 @@ class SpecialPagesWithProp extends QueryPage {
return $ret;
}
+ public function getExistingPropNames() {
+ if ( $this->existingPropNames === null ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select(
+ 'page_props',
+ 'pp_propname',
+ '',
+ __METHOD__,
+ array( 'DISTINCT', 'ORDER BY' => 'pp_propname' )
+ );
+ $propnames = array();
+ foreach ( $res as $row ) {
+ $propnames[$row->pp_propname] = $row->pp_propname;
+ }
+ $this->existingPropNames = $propnames;
+ }
+ return $this->existingPropNames;
+ }
+
protected function getGroupName() {
return 'pages';
}