https://www.mediawiki.org/wiki/Special:Code/MediaWiki/115491

Revision: 115491
Author:   kipcool
Date:     2012-06-08 16:46:04 +0000 (Fri, 08 Jun 2012)
Log Message:
-----------
When displaying an Expression: page, search for expressions in the user 
language by default, if no other language is specified

Modified Paths:
--------------
    trunk/extensions/Wikidata/OmegaWiki/OmegaWikiRecordSets.php

Modified: trunk/extensions/Wikidata/OmegaWiki/OmegaWikiRecordSets.php
===================================================================
--- trunk/extensions/Wikidata/OmegaWiki/OmegaWikiRecordSets.php 2012-06-07 
19:20:28 UTC (rev 115490)
+++ trunk/extensions/Wikidata/OmegaWiki/OmegaWikiRecordSets.php 2012-06-08 
16:46:04 UTC (rev 115491)
@@ -439,35 +439,43 @@
 }
 
 function getExpressionsRecordSet( $spelling, ViewInformation $viewInformation, 
$dc = null ) {
+       global $wgLang;
        $dc = wdGetDataSetContext( $dc );
        $o = OmegaWikiAttributes::getInstance();
 
        $dbr = wfGetDB( DB_SLAVE );
-       $sql =
+       $sqlbase =
                "SELECT expression_id, language_id " .
                " FROM {$dc}_expression" .
                " WHERE spelling=BINARY " . $dbr->addQuotes( $spelling ) .
                " AND {$dc}_expression.remove_transaction_id IS NULL " ;
 
        // needed because expression.remove_transaction_id is not updated 
automatically
-       $sql .= " AND EXISTS (" .
+       $sqlbase .= " AND EXISTS (" .
                "SELECT * " .
                " FROM {$dc}_syntrans " .
                " WHERE 
{$dc}_syntrans.expression_id={$dc}_expression.expression_id" .
                " AND {$dc}_syntrans.remove_transaction_id IS NULL " .
                ")";
 
-
+       $queryResult = null;
        if ( $viewInformation->expressionLanguageId != 0 ) {
                // display the expression in that language
-               $sql .= " AND language_id=" . 
$viewInformation->expressionLanguageId ;
+               $sql = $sqlbase . " AND language_id=" . 
$viewInformation->expressionLanguageId ;
+               $queryResult = $dbr->query( $sql );
        } else {
-               // no language is given: display in any language that comes 
first
-               $sql .= " LIMIT 1";
+               // default: is there an expression in the user language?
+               $userLanguageId = getLanguageIdForCode( $wgLang->getCode() ) ;
+               $sql = $sqlbase . " AND language_id=" . $userLanguageId ;
+               $queryResult = $dbr->query( $sql );
+
+               if ( $dbr->numRows( $queryResult ) == 0 ) {
+                       // nothing in the user language, any language will do
+                       $sql = $sqlbase . " LIMIT 1";
+                       $queryResult = $dbr->query( $sql );
+               }
        }
 
-       $queryResult = $dbr->query( $sql );
-       
        $result = new ArrayRecordSet( $o->expressionsStructure, new Structure( 
"expression-id", $o->expressionId ) );
        $languageStructure = new Structure( "language", $o->language );
 


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to