gwynne          Sat Jul 28 13:22:52 2007 UTC

  Modified files:              
    /phd/setup  CLI.class.php Option_Metadata.inc.php 
                Template_File.class.php setup.messages.php setup.php 
  Log:
  - Revert to {$} form instead of ${} form; I managed to get TextMate to 
recognize it properly.
  - Change to a more consistent method of assigning option values.
  - Change to a more consistent method of making the CLI interface look halfway 
readable.
  - Added the chunking_memory_limit setting.
  
  
http://cvs.php.net/viewvc.cgi/phd/setup/CLI.class.php?r1=1.5&r2=1.6&diff_format=u
Index: phd/setup/CLI.class.php
diff -u phd/setup/CLI.class.php:1.5 phd/setup/CLI.class.php:1.6
--- phd/setup/CLI.class.php:1.5 Fri Jul 27 23:32:11 2007
+++ phd/setup/CLI.class.php     Sat Jul 28 13:22:51 2007
@@ -1,6 +1,6 @@
 <?php
 
-/*  $Id: CLI.class.php,v 1.5 2007/07/27 23:32:11 gwynne Exp $
+/*  $Id: CLI.class.php,v 1.6 2007/07/28 13:22:51 gwynne Exp $
     +-------------------------------------------------------------------------+
     | Copyright(c) 2007                                                       |
     | Authors:                                                                |
@@ -50,14 +50,14 @@
     
     public function errorMessage( $message ) {
         
-        print "ERROR: ${message}\n";
+        print "ERROR: {$message}\n";
         exit( 1 );
     
     }
     
     public function warningMessage( $message ) {
         
-        print "WARNING: ${message}\n";
+        print "WARNING: {$message}\n";
     
     }
     
@@ -76,25 +76,27 @@
             
             foreach ( $OPTIONS_DATA as $optionName => $optionData ) {
 
-                if ( !strncmp( $optionName, '__', 2 ) )
-                    continue;
-                
                 if ( $this->quietMode < 2 ) {
-                    print "${optionData[ 'description' ]}\n";
+                    print "\n{$optionData[ 'description' ]}";
                 }
                 if ( $this->quietMode < 1 ) {
-                    print "${optionData[ 'details' ]}\n";
+                    print "\n{$optionData[ 'details' ]}";
                 }
                 
-                if ( ( $valueList = $optionData[ 'value_list_function' ]() ) 
!== NULL ) {
-                    if ( $valueList !== FALSE ) {
-                        print PhD_Prompts::paramPrompt( 
PhD_Prompts::CLI_AVAILABLE_VALUES,
-                            wordwrap( "\t" . implode( ' ', $valueList ) , 71, 
"\n\t", FALSE ) );
-                    }
-                } else if ( $this->quietMode < 2 ) {
-                    print "\n";
+                $valueList = $optionData[ 'value_list_function' ]();
+                if ( is_null( $valueList ) ) {
+                    print "\n" . PhD_Prompts::paramPrompt( 
PhD_Prompts::CLI_NO_VALUES );
+                } else if ( is_bool( $valueList ) ) {
+                    print "\n" . PhD_Prompts::paramPrompt( 
PhD_Prompts::CLI_BOOLEAN_VALUES );
+                } else if ( is_int( $valueList ) ) {
+                    print "\n" . PhD_Prompts::paramPrompt( 
PhD_Prompts::CLI_NUMBYTES_VALUES );
+                } else {
+                    print "\n" . PhD_Prompts::paramPrompt( 
PhD_Prompts::CLI_AVAILABLE_VALUES,
+                        wordwrap( "\t" . implode( ' ', $valueList ) , 71, 
"\n\t", FALSE ) );
                 }
                 
+                print "\n";
+
                 do {
                     $response = $this->getLine( PhD_Prompts::paramPrompt(
                         PhD_Prompts::CLI_OPTION_PROMPT, $optionData[ 'prompt' 
], $configurator->$optionName ) );
@@ -104,10 +106,10 @@
                     if ( $optionData[ 'validity_check_function' ]( $response ) 
=== TRUE ) {
                         break;
                     }
-                    print $optionData[ 'invalid_message' ]."\n";
+                    print "{$optionData[ 'invalid_message' ]}\n";
                 } while( TRUE );
                 
-                $configurator->$optionName = $valueList === FALSE ? ( substr( 
strtolower( $response ), 0, 1 ) == 'y' ) : $response;
+                $configurator->$optionName = $optionData[ 
'final_value_function' ]( $response );
                 print "\n";
                 
             }
http://cvs.php.net/viewvc.cgi/phd/setup/Option_Metadata.inc.php?r1=1.4&r2=1.5&diff_format=u
Index: phd/setup/Option_Metadata.inc.php
diff -u phd/setup/Option_Metadata.inc.php:1.4 
phd/setup/Option_Metadata.inc.php:1.5
--- phd/setup/Option_Metadata.inc.php:1.4       Fri Jul 27 23:09:28 2007
+++ phd/setup/Option_Metadata.inc.php   Sat Jul 28 13:22:51 2007
@@ -1,6 +1,6 @@
 <?php
 
-/*  $Id: Option_Metadata.inc.php,v 1.4 2007/07/27 23:09:28 gwynne Exp $
+/*  $Id: Option_Metadata.inc.php,v 1.5 2007/07/28 13:22:51 gwynne Exp $
     +-------------------------------------------------------------------------+
     | Copyright(c) 2007                                                       |
     | Authors:                                                                |
@@ -14,97 +14,126 @@
     +-------------------------------------------------------------------------+
 */
 
-$OPTIONS_DATA = array(
-    '__common_functions' => array(
-        'get_languages_func' => create_function( '', <<<~EOBLOB
+$OPTIONS_DATA_COMMON_FUNCS = array(
+
+    'get_languages_func' => create_function( '', <<<~FUNCTION
+global $OPTIONS_DATA, $OPTIONS;
 static $languages = NULL;
 
-$xvcf = $GLOBALS[ 'OPTIONS_DATA' ][ 'xml_root' ][ 'validity_check_function' ];
-if ( $xvcf( $GLOBALS[ 'OPTIONS' ][ 'xml_root' ] ) ) {
+if ( $OPTIONS_DATA[ 'xml_root' ][ 'validity_check_function' ]( $OPTIONS[ 
'xml_root' ] ) ) {
     if ( is_null( $languages ) ) {
-        $d = $GLOBALS[ 'OPTIONS' ][ 'xml_root' ];
+        $d = $OPTIONS[ 'xml_root' ];
         if ( ( $languageList = @scandir( $d ) ) === FALSE ) {
             PhD_Error( "Unable to scan XML root." );
         }
-        $c = 'return is_dir( "'.$d.'/${v}" ) && !in_array( $v, array( ".", 
"..", "CVS", ".svn" ) );';
+        $c = 'return is_dir( "'.$d.'/{$v}" ) && !in_array( $v, array( ".", 
"..", "CVS", ".svn" ) );';
         $languages = array_filter( $languageList, create_function( '$v', $c ) 
);
     }
     return $languages;
 }
 return NULL;
-EOBLOB
-        ),
-        'boolean_value_list_func' => create_function( '', <<<~EOBLOB
+FUNCTION
+    ),
+    
+    'numbytes_value_list_func' => create_function( '', <<<~FUNCTION
+return 0;
+FUNCTION
+    ),
+    
+    'numbytes_validity_func' => create_function( '$v', <<<~FUNCTION
+return preg_match( '/^(\d+)(?:([KMGTP])B?)?$/iu', $v, $matches ) ? TRUE : 
FALSE;
+FUNCTION
+    ),
+    
+    'numbytes_final_value_func' => create_function( '$v', <<<~FUNCTION
+preg_match( '/^(\d+)(?:([KMGTP])B?)?$/iu', $v, $matches );
+$multipliers = array( '' => 1, 'K' => 1024, 'M' => 1048576, 'G' => 1073741824, 
'T' => 1099511627776, 'P' => 1125899906842620 );
+return ( intval( $matches[ 1 ] ) * $multipliers[ strval( $matches[ 2 ] ) ] );
+FUNCTION
+    ),
+
+    'boolean_value_list_func' => create_function( '', <<<~FUNCTION
 return FALSE;
-EOBLOB
-        ),
-        'boolean_validity_func' => create_function( '$v', <<<~EOBLOB
+FUNCTION
+    ),
+
+    'boolean_validity_func' => create_function( '$v', <<<~FUNCTION
 return in_array( substr( strtolower( $v ), 0, 1 ), array( 1, 0, 'y', 'n' ) ) 
|| $v === TRUE || $v === FALSE;
-EOBLOB
-        ),
-        'unknown_value_list_func' => create_function( '', <<<~EOBLOB
+FUNCTION
+    ),
+    
+    'boolean_final_value_func' => create_function( '$v', <<<~FUNCTION
+return ( substr( strtolower( $v ), 0, 1 ) == 'y' ) ? TRUE : FALSE;
+FUNCTION
+    ),
+    
+    'verbatim_final_value_func' => create_function( '$v', <<<~FUNCTION
+return $v;
+FUNCTION
+    ),
+    
+    'unknown_value_list_func' => create_function( '', <<<~FUNCTION
 return NULL;
-EOBLOB
-        ),
+FUNCTION
     ),
+
 );
 
-$OPTIONS_DATA = array_merge( $OPTIONS_DATA,
-    array(
+$OPTIONS_DATA = array(
     'output_format' => array(
         'default_value' => 'xhtml',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The output format for PhD determines the final form of any output it produces.
 Generally, this will be directly related to the medium in which it is used.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 Some possible options are HTML4, XHTML, XML (the identity transformation), CHM,
 WML, PDF, and plaintext. For a full list, see the formats/ folder. The default
 is the builtin XHTML. The selected theme will determine the version and
 conformance of any XML-based format.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => create_function( '', <<<~EOBLOB
+        'value_list_function' => create_function( '', <<<~FUNCTION
 static $formatList = NULL;
 
 if ( is_null( $formatList ) ) {
     $path = dirname( __FILE__ ) . "/../formats";
     if ( ( $formats = @scandir( $path ) ) === FALSE ) {
-        PhD_Error( "The formats directory is missing or unreadable at 
\"${path}\"." );
+        PhD_Error( "The formats directory is missing or unreadable at 
\"{$path}\"." );
     }
     $formatList = array_map( create_function( '$v', 'return substr( $v, 0, -4 
);' ),
-        array_filter( $formats, create_function( '$v', 'return substr( $v, -4 
) == ".php" && is_file( "'.$path.'/${v}" );' ) ) );
+        array_filter( $formats, create_function( '$v', 'return substr( $v, -4 
) == ".php" && is_file( "'.$path.'/{$v}" );' ) ) );
     if ( count( $formatList ) == 0 ) {
         PhD_Error( "No output formats are available." );
     }
 }
 return $formatList;
-EOBLOB
+FUNCTION
         ),
-        'validity_check_function' => create_function( '$format', <<<~EOBLOB
-$vlf = $GLOBALS[ 'OPTIONS_DATA' ][ 'output_format' ][ 'value_list_function' ];
-return in_array( $format, $vlf() );
-EOBLOB
+        'validity_check_function' => create_function( '$format', <<<~FUNCTION
+return in_array( $format, $GLOBALS[ 'OPTIONS_DATA' ][ 'output_format' ][ 
'value_list_function' ]() );
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Choose a format',
         'invalid_message' => 'That is not an available format. Please try 
again.'
     ),
     
     'output_theme' => array(
         'default_value' => 'default',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The output theme for PhD determines site-specific alterations to the selected
 output format.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 The default theme is, simply enough, the builtin "default", which will display
 an error message for all cases. A valid theme must be selected by the
 administrator for the site to function.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => create_function( '', <<<~EOBLOB
+        'value_list_function' => create_function( '', <<<~FUNCTION
 static $themeList = NULL;
 
 if ( is_null( $themeList ) ) {
@@ -113,32 +142,32 @@
         PhD_Error( "The themes directory is missing or unreadable." );
     }
     $themeList = array_filter( $themes,
-        create_function( '$v', 'return is_dir( "'.$path.'/${v}" ) && 
!in_array( $v, array( ".", "..", "CVS" ) );' ) );
+        create_function( '$v', 'return is_dir( "'.$path.'/{$v}" ) && 
!in_array( $v, array( ".", "..", "CVS" ) );' ) );
     if ( count( $themeList ) == 0 ) {
         PhD_Error( "No themes are available." );
     }
 }
 return $themeList;
-EOBLOB
+FUNCTION
         ),
-        'validity_check_function' => create_function( '$theme', <<<~EOBLOB
-$vlf = $GLOBALS[ 'OPTIONS_DATA' ][ 'output_theme' ][ 'value_list_function' ];
-return in_array( $theme, $vlf() );
-EOBLOB
+        'validity_check_function' => create_function( '$theme', <<<~FUNCTION
+return in_array( $theme, $GLOBALS[ 'OPTIONS_DATA' ][ 'output_theme' ][ 
'value_list_function' ]() );
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Choose a theme',
         'invalid_message' => 'That is not an available theme. Please try 
again.'
     ),
     
     'output_encoding' => array(
         'default_value' => 'utf-8',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The output encoding for PDP-E determines the encoding that will be used for all
 output. Input encodings are determined by the XML parser. The output encoding
 can be any encoding supported by libiconv on this system.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 The default is UTF-8. For HTTP-based outputs, an appropriate header() call will
 be made. For all SGML-based outputs, it is up to the output method to output a
 proper encoding declaration. For reasons of safety and consistency, themes and
@@ -146,181 +175,211 @@
 encoding or set of encodings, it must document that requirement and allow the
 system administrator to choose the proper one, and raise an error at runtime
 for an unsupported encoding.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'unknown_value_list_func' ],
-        'validity_check_function' => create_function( '$encoding',
-            'return iconv( $encoding, $encoding, "Test string" ) === "Test 
string";' ),
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'unknown_value_list_func' ],
+        'validity_check_function' => create_function( '$encoding', <<<~FUNCTION
+return iconv( $encoding, $encoding, "Test string" ) === "Test string";
+FUNCTION
+        ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Choose an encoding',
         'invalid_message' => 'That encoding does not appear to be supported by 
your libiconv. Please try another.'
     ),
     
     'xml_root' => array(
         'default_value' => '/INVALID/PATH',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The location of the language trees.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 The XML root tells PhD where to find the XML files it wil be displaying in
 this installation. The expected structure is the same as that used by
 phpdoc-all, e.g. a set of directories named by language code containing the XML
 files and translations laid out by section structure. Tilde expansion is NOT
 done. Symbolic links are resolved at run time.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'unknown_value_list_func' ],
-        'validity_check_function' => create_function( '$root', <<<~EOBLOB
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'unknown_value_list_func' ],
+        'validity_check_function' => create_function( '$root', <<<~FUNCTION
 $rv = realpath( $root );
-return ( $rv !== FALSE && is_dir( $rv ) && is_readable( $rv ) && 
is_executable( $rv ) && is_dir( "${rv}/en" ) );
-EOBLOB
+return ( $rv !== FALSE && is_dir( $rv ) && is_readable( $rv ) && 
is_executable( $rv ) && is_dir( "{$rv}/en" ) );
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Enter the full path to the XML root',
-        'invalid_message' => <<<~EOBLOB
+        'invalid_message' => <<<~MESSAGE
 The path you entered does not exist, is not a directory, is not readable, is
 not searchable, or does not contain an English directory. Please try again.
-EOBLOB
+MESSAGE
     ),
     
     'language' => array(
         'default_value' => 'en',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The language tells PhD which set of translations to use for display. The
 language is a two or four letter language code. It is assumed that
 subdirectories of the XML root are named according to the language code of the
 translations they contain. The language specified here must exist in the XML
 root.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 The default is English. English files are always the final fallback if a
 translated version of a page is not found.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'get_languages_func' ],
-        'validity_check_function' => create_function( '$v', <<<~EOBLOB
-$vlf = $GLOBALS[ 'OPTIONS_DATA' ][ 'language' ][ 'value_list_function' ];
-return in_array( $v, $vlf() );
-EOBLOB
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'get_languages_func' ],
+        'validity_check_function' => create_function( '$v', <<<~FUNCTION
+return in_array( $v, $GLOBALS[ 'OPTIONS_DATA' ][ 'language' ][ 
'value_list_function' ]() );
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Choose a primary language code',
-        'invalid_message' => <<<~EOBLOB
+        'invalid_message' => <<<~MESSAGE
 The language code you entered does not appear to exist, or is not a directory
 in the XML root. Please try again.
-EOBLOB
+MESSAGE
     ),
     
     'fallback_language' => array(
         'default_value' => 'en',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The fallback language is used before English when PhD can not find a translated
 file in the primary language. If it is set to English, PhD immediately falls
 back to English files without any extra overhead. The language specified here
 must exist in the XML root.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 This provides an optional fallback before English if another fallback would
 make more sense for a site. The default is English, causing immediate fallback.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'get_languages_func' ],
-        'validity_check_function' => create_function( '$v', <<<~EOBLOB
-$vlf = $GLOBALS[ 'OPTIONS_DATA' ][ 'language' ][ 'value_list_function' ];
-return in_array( $v, $vlf() );
-EOBLOB
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'get_languages_func' ],
+        'validity_check_function' => create_function( '$v', <<<~FUNCTION
+return in_array( $v, $GLOBALS[ 'OPTIONS_DATA' ][ 'language' ][ 
'value_list_function' ]() );
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Choose a fallback language code',
-        'invalid_message' => <<<~EOBLOB
+        'invalid_message' => <<<~MESSAGE
 The language code you entered does not appear to exist, or is not a directory
 in the XML root. Please try again.
-EOBLOB
+MESSAGE
     ),
     
     'enforce_revisions' => array(
         'default_value' => FALSE,
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 PhD is capable of using either traditional <!-- Revision: --> and
 <!-- EN-Revision: --> tags or the <phd:revision/> tag to specify version
 control information for files and their translated counterparts. If the
 revision control flag is set, PhD will enforce revision matching between
 translated files and English files.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 The processor relies on whatever version control system is in use to provide
 the revision information in its proper place for the tag style in use. Use of
 the <phd:revision/> tag is strongly preferred to the use of XML comments. If a
 reivison mismatch is found, the active theme is given an opportunity to present
 an error or warning to users.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'boolean_value_list_func' ],
-        'validity_check_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'boolean_validity_func' ],
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_value_list_func' ],
+        'validity_check_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_validity_func' ],
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_final_value_func' ],
         'prompt' => 'Type "(Y)es" to enable revision control, or "(N)o" to 
disable it',
         'invalid_message' => 'Please enter "(Y)es" or "(N)o".'
     ),
     
     'database_path' => array(
         'default_value' => '/INVALID/PATH/phd-data.sqlite',
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The database path tells PhD where to store the SQLite 3 database file, used for
 indexing and cache data. Most installations will want to place the database
 file in the same directory as PhD itself.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 This setup will attempt to create a database file in the given location and
 remove it again. The user running PhD must have write and execute permissions
 to the enclosing directory. The file name can be whatever best suits the needs
 of the host system.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'unknown_value_list_func' ],
-        'validity_check_function' => create_function( '$path', <<<~EOBLOB
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'unknown_value_list_func' ],
+        'validity_check_function' => create_function( '$path', <<<~FUNCTION
 try {
     $d = dirname( realpath( $path ) );
     if ( !is_dir( $d ) || !is_writable( $d ) || !is_executable( $d ) ) {
         return FALSE;
     }
-    $p = new PDO( "sqlite:${path}", NULL, NULL, array( PDO::ATTR_ERRMODE => 
PDO::ERRMODE_EXCEPTION ) );
+    $p = new PDO( "sqlite:{$path}", NULL, NULL, array( PDO::ATTR_ERRMODE => 
PDO::ERRMODE_EXCEPTION ) );
     $p = NULL;
     unset( $p );
     return @unlink( $path );
 } catch ( PDOException $e ) {
     return FALSE;
 }
-EOBLOB
+FUNCTION
         ),
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'verbatim_final_value_func' ],
         'prompt' => 'Enter the full path to the database file',
-        'invalid_message' => <<<~EOBLOB
+        'invalid_message' => <<<~MESSAGE
 The path is invalid, you don't have write permission to it, an existing
 database file is in the way, or loading SQLite failed. Please try again.
-EOBLOB
+MESSAGE
+    ),
+    
+    'chunking_memory_limit' => array(
+        'default_value' => ( 100 * 1048576 ),  // 100MB
+        'description' => <<<~MESSAGE
+The chunking memory limit controls how big a single chunk of output data must
+grow for PhD to begin spooling it to disk to avoid memory exhaustion.
+MESSAGE
+        ,
+        'details' => <<<~MESSAGE
+While performing transformations, PhD stores a growing chunk in memory for
+efficiency. However, efficiency will quickly degrade if the chunk is too large.
+This is particularly problematic for output formats and themes which don't do
+any chunking at all. Setting this limit to zero will force PhD to spool for all
+chunks, no matter how small. This is the recommended setting for non-chunking
+outputs; the default is fine for most other installations.
+MESSAGE
+        ,
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'numbytes_value_list_func' ],
+        'validity_check_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'numbytes_validity_func' ],
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'numbytes_final_value_func' ],
+        'prompt' => 'Enter the chunking limit',
+        'invalid_message' => 'You must enter a valid numeric value.'
     ),
     
     'debug' => array(
         'default_value' => FALSE,
-        'description' => <<<~EOBLOB
+        'description' => <<<~MESSAGE
 The debug flag controls whether PhD runs in debug mode. This should NEVER be
 set in a production environment; its intended use is for PhD developers and
 experienced site administrators.
-EOBLOB
+MESSAGE
         ,
-        'details' => <<<~EOBLOB
+        'details' => <<<~MESSAGE
 If set, many extra assertions are enabled and verbose error messages and
 progress information are provided. Please note that debug output is under the
 control of both the output format and the output theme, as a matter of
 consistency. This flag is only provided in the setup interface for ease of
 administration.
-EOBLOB
+MESSAGE
         ,
-        'value_list_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'boolean_value_list_func' ],
-        'validity_check_function' => $OPTIONS_DATA[ '__common_functions' ][ 
'boolean_validity_func' ],
+        'value_list_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_value_list_func' ],
+        'validity_check_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_validity_func' ],
+        'final_value_function' => $OPTIONS_DATA_COMMON_FUNCS[ 
'boolean_final_value_func' ],
         'prompt' => 'Type "(Y)es" to enable debug output, or "(N)o" to disable 
it',
         'invalid_message' => 'Please enter "(Y)es" or "(N)o".'
     ),
-    )
+
 );
 
 function getOptionNames() {
http://cvs.php.net/viewvc.cgi/phd/setup/Template_File.class.php?r1=1.4&r2=1.5&diff_format=u
Index: phd/setup/Template_File.class.php
diff -u phd/setup/Template_File.class.php:1.4 
phd/setup/Template_File.class.php:1.5
--- phd/setup/Template_File.class.php:1.4       Fri Jul 27 23:09:28 2007
+++ phd/setup/Template_File.class.php   Sat Jul 28 13:22:51 2007
@@ -1,6 +1,6 @@
 <?php
 
-/*  $Id: Template_File.class.php,v 1.4 2007/07/27 23:09:28 gwynne Exp $
+/*  $Id: Template_File.class.php,v 1.5 2007/07/28 13:22:51 gwynne Exp $
     +-------------------------------------------------------------------------+
     | Copyright(c) 2007                                                       |
     | Authors:                                                                |
@@ -125,7 +125,7 @@
     protected function doSubstitutions( $substitutions, $template ) {
         
         return str_replace(
-            array_map( create_function( '$v', 'return "@${v}@";' ), 
array_keys( $substitutions ) ),
+            array_map( create_function( '$v', 'return "@{$v}@";' ), 
array_keys( $substitutions ) ),
             array_values( $substitutions ),
             $template );
 
http://cvs.php.net/viewvc.cgi/phd/setup/setup.messages.php?r1=1.4&r2=1.5&diff_format=u
Index: phd/setup/setup.messages.php
diff -u phd/setup/setup.messages.php:1.4 phd/setup/setup.messages.php:1.5
--- phd/setup/setup.messages.php:1.4    Fri Jul 27 23:32:11 2007
+++ phd/setup/setup.messages.php        Sat Jul 28 13:22:51 2007
@@ -1,6 +1,6 @@
 <?php
 
-/*  $Id: setup.messages.php,v 1.4 2007/07/27 23:32:11 gwynne Exp $
+/*  $Id: setup.messages.php,v 1.5 2007/07/28 13:22:51 gwynne Exp $
     +-------------------------------------------------------------------------+
     | Copyright(c) 2007                                                       |
     | Authors:                                                                |
@@ -121,18 +121,28 @@
 
 PROMPTMSG;
 
-    const CLI_BOOLEAN_VALUE = "\n";/*<<<~PROMPTMSG
-This is a flag setting. Type "y" or "yes" to turn it on, or "n" or "no" to turn
-it off.
+    const CLI_NO_VALUES = <<<~PROMPTMSG
+There is no list of possible values available.
 
+PROMPTMSG;
+    
+    const CLI_BOOLEAN_VALUES = <<<~PROMPTMSG
+This is a yes/no setting.
 
-PROMPTMSG;*/
+PROMPTMSG;
     
+    const CLI_NUMBYTES_VALUES = <<<~PROMPTMSG
+This is a value given in number of bytes. For convenience you may use any of
+the following suffixes to multiply the number by the shown factor. By the way,
+if you actually use the P suffix, I pity you.
+    K = 1024, M = K*1024, G = M*1024, T = G*1024, P = T*1024
+
+PROMPTMSG;
+
     const CLI_AVAILABLE_VALUES = <<<~PROMPTMSG
 The available values in this installation are:
 %%%
 
-
 PROMPTMSG;
 
     const CLI_OPTION_PROMPT = <<<~PROMPTMSG
http://cvs.php.net/viewvc.cgi/phd/setup/setup.php?r1=1.3&r2=1.4&diff_format=u
Index: phd/setup/setup.php
diff -u phd/setup/setup.php:1.3 phd/setup/setup.php:1.4
--- phd/setup/setup.php:1.3     Fri Jul 27 23:09:28 2007
+++ phd/setup/setup.php Sat Jul 28 13:22:51 2007
@@ -1,6 +1,6 @@
 <?php
 
-/*  $Id: setup.php,v 1.3 2007/07/27 23:09:28 gwynne Exp $
+/*  $Id: setup.php,v 1.4 2007/07/28 13:22:51 gwynne Exp $
     +-------------------------------------------------------------------------+
     | Copyright(c) 2007                                                       |
     | Authors:                                                                |
@@ -21,7 +21,7 @@
 */
 
 // Used for versioning.
-$REVISION = '$Id: setup.php,v 1.3 2007/07/27 23:09:28 gwynne Exp $';
+$REVISION = '$Id: setup.php,v 1.4 2007/07/28 13:22:51 gwynne Exp $';
 
 // Chosen interface for the setup. Determined from SAPI name at main()-time.
 $chosenInterface = NULL;
@@ -75,9 +75,6 @@
 // Fill in defaults.
 $OPTIONS = array();
 foreach ( $OPTIONS_DATA as $name => $data ) {
-    if ( strncmp( $name, '__', 2 ) == 0 ) {
-        continue;
-    }
     $OPTIONS[ $name ] = $data[ 'default_value' ];
 }
 

Reply via email to