]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - serialized/serialize.php
MediaWiki 1.17.4-scripts
[autoinstallsdev/mediawiki.git] / serialized / serialize.php
1 <?php
2
3 if ( !defined( 'MEDIAWIKI' ) ) {
4         $wgNoDBParam = true;
5         $optionsWithArgs = array( 'o' );
6         require_once( dirname(__FILE__).'/../maintenance/commandLine.inc' );
7
8         $stderr = fopen( 'php://stderr', 'w' );
9         if ( !isset( $args[0] ) ) {
10                 fwrite( $stderr, "No input file specified\n" );
11                 exit( 1 );
12         }
13         if ( wfIsWindows() ) {
14                 $files = array();
15                 foreach ( $args as $arg ) {
16                         $files = array_merge( $files, glob( $arg ) );
17                 }
18                 if ( !$files ) {
19                         fwrite( $stderr, "No files found\n" );
20                 }
21         } else {
22                 $files = $args;
23         }
24
25         if ( isset( $options['o'] ) ) {
26                 $out = fopen( $options['o'], 'wb' );
27                 if ( !$out ) {
28                         fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" );
29                         exit( 1 );
30                 }
31         } else {
32                 $out = fopen( 'php://stdout', 'wb' );
33         }
34
35         $vars = array();
36         foreach ( $files as $inputFile ) {
37                 $vars = array_merge( $vars, getVars( $inputFile ) );
38         }
39         fwrite( $out, serialize( $vars ) );
40         fclose( $out );
41         exit( 0 );
42 }
43
44 //----------------------------------------------------------------------------
45
46 function getVars( $_gv_filename ) {
47         require( $_gv_filename );
48         $vars = get_defined_vars();
49         unset( $vars['_gv_filename'] );
50
51         # Clean up line endings
52         if ( wfIsWindows() ) {
53                 $vars = unixLineEndings( $vars );
54         }
55         return $vars;
56 }
57
58 function unixLineEndings( $var ) {
59         static $recursionLevel = 0;
60         if ( $recursionLevel > 50 ) {
61                 global $stderr;
62                 fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" );
63                 exit( 2 );
64         }
65         
66         if ( is_array( $var ) ) {
67                 ++$recursionLevel;
68                 $var = array_map( 'unixLineEndings', $var );
69                 --$recursionLevel;
70         } elseif ( is_string( $var ) ) {
71                 $var = str_replace( "\r\n", "\n", $var );
72         }
73         return $var;
74 }
75