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

Reply via email to