https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113474
Revision: 113474
Author: maxsem
Date: 2012-03-09 15:49:28 +0000 (Fri, 09 Mar 2012)
Log Message:
-----------
Plugged MobileFrontend's excerpts into OpenSearchXml
Modified Paths:
--------------
trunk/extensions/MobileFrontend/MobileFrontend.php
trunk/extensions/MobileFrontend/api/ApiQueryExcerpts.php
trunk/extensions/OpenSearchXml/ApiOpenSearchXml.php
Modified: trunk/extensions/MobileFrontend/MobileFrontend.php
===================================================================
--- trunk/extensions/MobileFrontend/MobileFrontend.php 2012-03-09 15:35:04 UTC
(rev 113473)
+++ trunk/extensions/MobileFrontend/MobileFrontend.php 2012-03-09 15:49:28 UTC
(rev 113474)
@@ -121,6 +121,7 @@
$wgHooks['APIAfterExecute'][] = 'ApiParseExtender::onAPIAfterExecute';
$wgHooks['APIGetParamDescription'][] =
'ApiParseExtender::onAPIGetParamDescription';
$wgHooks['APIGetDescription'][] = 'ApiParseExtender::onAPIGetDescription';
+$wgHooks['OpenSearchXml'][] = 'ApiQueryExcerpts::onOpenSearchXml';
function efMobileFrontend_Setup() {
global $wgExtMobileFrontend, $wgHooks;
@@ -160,3 +161,8 @@
$files[] = "$dir/MobileFormatterTest.php";
return true;
}
+
+/**
+ * Whether this extension should provide its excerpts to OpenSearchXml
extension
+ */
+$wgMFExtendOpenSearchXml = false;
Modified: trunk/extensions/MobileFrontend/api/ApiQueryExcerpts.php
===================================================================
--- trunk/extensions/MobileFrontend/api/ApiQueryExcerpts.php 2012-03-09
15:35:04 UTC (rev 113473)
+++ trunk/extensions/MobileFrontend/api/ApiQueryExcerpts.php 2012-03-09
15:49:28 UTC (rev 113474)
@@ -46,6 +46,36 @@
}
/**
+ * OpenSearchXml hook handler
+ * @param array $results
+ */
+ public static function onOpenSearchXml( &$results ) {
+ global $wgMFExtendOpenSearchXml;
+ if ( !$wgMFExtendOpenSearchXml || !count( $results ) ) {
+ return true;
+ }
+ $pageIds = array_keys( $results );
+ $api = new ApiMain( new FauxRequest(
+ array(
+ 'action' => 'query',
+ 'prop' => 'excerpts',
+ 'explaintext' => true,
+ 'exlimit' => count( $results ),
+ 'pageids' => implode( '|', $pageIds ),
+ ) )
+ );
+ $api->execute();
+ $data = $api->getResultData();
+ foreach ( $pageIds as $id ) {
+ if ( isset( $data['query']['pages'][$id]['excerpts'][0]
) ) {
+ $results[$id]['extract'] =
$data['query']['pages'][$id]['excerpts'][0];
+ $results[$id]['extract trimmed'] = false;
+ }
+ }
+ return true;
+ }
+
+ /**
* Returns a processed, but not trimmed excerpt
* @param Title $title
* @return string
@@ -165,8 +195,8 @@
ApiBase::PARAM_DFLT => 1,
ApiBase::PARAM_TYPE => 'limit',
ApiBase::PARAM_MIN => 1,
- ApiBase::PARAM_MAX => 20,
- ApiBase::PARAM_MAX2 => 20,
+ ApiBase::PARAM_MAX => 100,
+ ApiBase::PARAM_MAX2 => 100,
),
'plaintext' => false,
'continue' => array(
Modified: trunk/extensions/OpenSearchXml/ApiOpenSearchXml.php
===================================================================
--- trunk/extensions/OpenSearchXml/ApiOpenSearchXml.php 2012-03-09 15:35:04 UTC
(rev 113473)
+++ trunk/extensions/OpenSearchXml/ApiOpenSearchXml.php 2012-03-09 15:49:28 UTC
(rev 113474)
@@ -168,6 +168,9 @@
if ( is_string( $result['extract'] ) ) {
$extract = $result['extract'];
+ if ( !isset( $result['extract trimmed'] ) ||
!$result['extract trimmed'] ) {
+ $extract = $this->extractStart( $extract );
+ }
}
if ( is_array( $result['image'] ) ) {
$item['Image'] = $result['image'];
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs