jenkins-bot has submitted this change and it was merged.

Change subject: Export the MathCache table
......................................................................


Export the MathCache table

This is required for testing of texvcjs.

Change-Id: Ib602aba8f73fc18e30ebf0efc609c8fbb2d122ef
---
A maintenance/ExportCache.php
1 file changed, 95 insertions(+), 0 deletions(-)

Approvals:
  Physikerwelt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/maintenance/ExportCache.php b/maintenance/ExportCache.php
new file mode 100644
index 0000000..f40a901
--- /dev/null
+++ b/maintenance/ExportCache.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/../../../maintenance/Maintenance.php' );
+
+class ExportMathCache extends Maintenance {
+       const DEFAULT_TABLE = 'mathoid';
+       const ERROR_CODE_TABLE_NAME = 1;
+       const ERROR_CODE_DB_ERROR = 2;
+       const ERROR_CODE_JSON = 3;
+       private static $allowedTables = array( 'mathoid' , 'mathlatexml');
+       private static $inputColumns = array( 'mathoid' => 'math_input' , 
'mathlatexml' => 'math_inputtex');
+
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Exports a json file that consists of the 
input hashes and the texvc input from the database cache.';
+               $this->addArg( 'table', "The math table to be used (mathoid or 
latexml).", false );
+               $this->addOption( 'offset', "If set the first n equations on 
the table are skipped", false, true, "o" );
+               $this->addOption( 'length', "If set the only n equations are 
exported processed", false, true, "l" );
+               $this->addOption( 'sort' , 'If set the result is sorted 
according to the input', false, false, 's' );
+       }
+
+       /**
+        * @param $table
+        * @param $offset
+        * @param $length
+        * @return bool|ResultWrapper
+        */
+       private static function getMathTagsFromDatabase( $table , $offset , 
$length , $sort ) {
+               $out = array();
+               $dbr = wfGetDB( DB_SLAVE );
+               $inputColumn = self::$inputColumns[ $table ];
+               $options = array(
+                       'OFFSET'   => $offset,
+                       'LIMIT'    => $length );
+               if ( $sort === true ) {
+                       $options['ORDER BY'] = $inputColumn;
+               }
+               $res =  $dbr->select(
+                       $table,
+                       array( 'math_inputhash', $inputColumn ),
+                       ''
+                       , __METHOD__
+                       , $options );
+               if ( $res === false ) return false;
+               // Convert result wrapper to array
+               foreach ( $res as $row ){
+                       $out[] = array(
+                               // the binary encoded input-hash is no valid 
json output
+                               'inputhash' => 
MathObject::dbHash2md5($row->math_inputhash) ,
+                               'input'     => $row->$inputColumn );
+               }
+               return $out;
+       }
+
+       public function execute() {
+               $table = $this->getArg( 0, self::DEFAULT_TABLE );
+               if( !in_array( $table, self::$allowedTables ) ){
+                       $this->error( "Error:  '$table' is not allowed.", 
self::ERROR_CODE_TABLE_NAME );
+               }
+               $offset = $this->getOption( 'offset', 0 );
+               $length = $this->getOption( 'length', PHP_INT_MAX );
+               $sort = $this->hasOption( 'sort' );
+               $allEquations = self::getMathTagsFromDatabase( $table, $offset, 
$length, $sort );
+               if ( !is_array( $allEquations ) ) {
+                       $this->error("Could not get equations from table 
'$table'", self::ERROR_CODE_DB_ERROR );
+               }
+               $out = FormatJson::encode( $allEquations, true );
+               if( $out === false){
+                       $this->error( "Could not encode result as json string 
'$table'", self::ERROR_CODE_JSON );
+               }
+               $this->output( "$out\n" );
+       }
+}
+
+$maintClass = "ExportMathCache";
+require_once( RUN_MAINTENANCE_IF_MAIN );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib602aba8f73fc18e30ebf0efc609c8fbb2d122ef
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MathSearch
Gerrit-Branch: master
Gerrit-Owner: Physikerwelt <w...@physikerwelt.de>
Gerrit-Reviewer: Chad <ch...@wikimedia.org>
Gerrit-Reviewer: Cscott <canan...@wikimedia.org>
Gerrit-Reviewer: Jforrester <jforres...@wikimedia.org>
Gerrit-Reviewer: Physikerwelt <w...@physikerwelt.de>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to