forked from GNUsocial/gnu-social
		
	Fix for ticket #2828: apostrophe in site name set in installer created a broken config.php.
Now running values through var_export() before putting them into the config.php, ensuring strings will be properly quoted.
This commit is contained in:
		@@ -391,6 +391,30 @@ abstract class Installer
 | 
				
			|||||||
        return $db;
 | 
					        return $db;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Return a parseable PHP literal for the given value.
 | 
				
			||||||
 | 
					     * This will include quotes for strings, etc.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param mixed $val
 | 
				
			||||||
 | 
					     * @return string
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    function phpVal($val)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return var_export($val, true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Return an array of parseable PHP literal for the given values.
 | 
				
			||||||
 | 
					     * These will include quotes for strings, etc.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param mixed $val
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    function phpVals($map)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return array_map(array($this, 'phpVal'), $map);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Write a stock configuration file.
 | 
					     * Write a stock configuration file.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -400,24 +424,32 @@ abstract class Installer
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    function writeConf()
 | 
					    function writeConf()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $vals = $this->phpVals(array(
 | 
				
			||||||
 | 
					            'sitename' => $this->sitename,
 | 
				
			||||||
 | 
					            'server' => $this->server,
 | 
				
			||||||
 | 
					            'path' => $this->path,
 | 
				
			||||||
 | 
					            'db_database' => $this->db['database'],
 | 
				
			||||||
 | 
					            'db_type' => $this->db['type'],
 | 
				
			||||||
 | 
					        ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // assemble configuration file in a string
 | 
					        // assemble configuration file in a string
 | 
				
			||||||
        $cfg =  "<?php\n".
 | 
					        $cfg =  "<?php\n".
 | 
				
			||||||
                "if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }\n\n".
 | 
					                "if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }\n\n".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // site name
 | 
					                // site name
 | 
				
			||||||
                "\$config['site']['name'] = '{$this->sitename}';\n\n".
 | 
					                "\$config['site']['name'] = {$vals['sitename']};\n\n".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // site location
 | 
					                // site location
 | 
				
			||||||
                "\$config['site']['server'] = '{$this->server}';\n".
 | 
					                "\$config['site']['server'] = {$vals['server']};\n".
 | 
				
			||||||
                "\$config['site']['path'] = '{$this->path}'; \n\n".
 | 
					                "\$config['site']['path'] = {$vals['path']}; \n\n".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // checks if fancy URLs are enabled
 | 
					                // checks if fancy URLs are enabled
 | 
				
			||||||
                ($this->fancy ? "\$config['site']['fancy'] = true;\n\n":'').
 | 
					                ($this->fancy ? "\$config['site']['fancy'] = true;\n\n":'').
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // database
 | 
					                // database
 | 
				
			||||||
                "\$config['db']['database'] = '{$this->db['database']}';\n\n".
 | 
					                "\$config['db']['database'] = {$vals['db_database']};\n\n".
 | 
				
			||||||
                ($this->db['type'] == 'pgsql' ? "\$config['db']['quote_identifiers'] = true;\n\n":'').
 | 
					                ($this->db['type'] == 'pgsql' ? "\$config['db']['quote_identifiers'] = true;\n\n":'').
 | 
				
			||||||
                "\$config['db']['type'] = '{$this->db['type']}';\n\n";
 | 
					                "\$config['db']['type'] = {$vals['db_type']};\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Normalize line endings for Windows servers
 | 
					        // Normalize line endings for Windows servers
 | 
				
			||||||
        $cfg = str_replace("\n", PHP_EOL, $cfg);
 | 
					        $cfg = str_replace("\n", PHP_EOL, $cfg);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user