diff options
Diffstat (limited to 'serialized/serialize.php')
-rw-r--r-- | serialized/serialize.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/serialized/serialize.php b/serialized/serialize.php new file mode 100644 index 00000000..0eaf0b14 --- /dev/null +++ b/serialized/serialize.php @@ -0,0 +1,75 @@ +<?php + +if ( !defined( 'MEDIAWIKI' ) ) { + $wgNoDBParam = true; + $optionsWithArgs = array( 'o' ); + require_once( dirname(__FILE__).'/../maintenance/commandLine.inc' ); + + $stderr = fopen( 'php://stderr', 'w' ); + if ( !isset( $args[0] ) ) { + fwrite( $stderr, "No input file specified\n" ); + exit( 1 ); + } + if ( wfIsWindows() ) { + $files = array(); + foreach ( $args as $arg ) { + $files = array_merge( $files, glob( $arg ) ); + } + if ( !$files ) { + fwrite( $stderr, "No files found\n" ); + } + } else { + $files = $args; + } + + if ( isset( $options['o'] ) ) { + $out = fopen( $options['o'], 'wb' ); + if ( !$out ) { + fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" ); + exit( 1 ); + } + } else { + $out = fopen( 'php://stdout', 'wb' ); + } + + $vars = array(); + foreach ( $files as $inputFile ) { + $vars = array_merge( $vars, getVars( $inputFile ) ); + } + fwrite( $out, serialize( $vars ) ); + fclose( $out ); + exit( 0 ); +} + +//---------------------------------------------------------------------------- + +function getVars( $_gv_filename ) { + require( $_gv_filename ); + $vars = get_defined_vars(); + unset( $vars['_gv_filename'] ); + + # Clean up line endings + if ( wfIsWindows() ) { + $vars = unixLineEndings( $vars ); + } + return $vars; +} + +function unixLineEndings( $var ) { + static $recursionLevel = 0; + if ( $recursionLevel > 50 ) { + global $stderr; + fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" ); + exit( 2 ); + } + + if ( is_array( $var ) ) { + ++$recursionLevel; + $var = array_map( 'unixLineEndings', $var ); + --$recursionLevel; + } elseif ( is_string( $var ) ) { + $var = str_replace( "\r\n", "\n", $var ); + } + return $var; +} +?> |