Jens Ohlig has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/94909


Change subject: (bug 54324) sequence in Lua should start with 1
......................................................................

(bug 54324) sequence in Lua should start with 1

Change-Id: Ieeaca61a027e7461bb91477243c9bce76e221f97
---
M client/includes/WikibaseLibrary.php
1 file changed, 22 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/09/94909/1

diff --git a/client/includes/WikibaseLibrary.php 
b/client/includes/WikibaseLibrary.php
index 91be67b..a2203b4 100644
--- a/client/includes/WikibaseLibrary.php
+++ b/client/includes/WikibaseLibrary.php
@@ -45,7 +45,26 @@
                        'getGlobalSiteId' => array( $this, 'getGlobalSiteId' )
                );
                $this->getEngine()->registerInterface( dirname( __FILE__ ) . 
'/../resources/' . 'mw.wikibase.lua', $lib, array() );
-       }
+    }
+
+       /**
+     * Recursively renumber a serialized array in place, so it is indexed at 
1, not 0.
+     * Just like Lua wants it.
+        *
+        * @since 0.5
+        *
+        * @param array &$entityArr
+     */
+    public function renumber( &$entityArr ) {
+        foreach( $entityArr as $key => &$value ) {
+            if ( is_array( $value ) ) {
+                if ( array_key_exists( 0, $value ) ) {
+                    $value = array_combine( range( 1, count( $value ) ), 
array_values( $value ) );
+                }
+                $this->renumber( $value );
+            }
+        }
+    }
 
        /**
         * Get entity from prefixed ID (e.g. "Q23") and return it as serialized 
array.
@@ -104,7 +123,8 @@
 
                try {
                        $entityArr = $serializer->getSerialized( $entityObject 
);
-                       return array( $entityArr );
+            $this->renumber( $entityArr ); // Renumber the array
+            return array( $entityArr );
                } catch ( \Exception $e ) {
                        throw $this->getEngine()->newException( 
'wikibase-error-serialize-error' );
                }

-- 
To view, visit https://gerrit.wikimedia.org/r/94909
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieeaca61a027e7461bb91477243c9bce76e221f97
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Jens Ohlig <jens.oh...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to