diff options
| author | Brett Profitt <brett.profitt@gmail.com> | 2011-10-23 10:53:26 -0700 | 
|---|---|---|
| committer | Brett Profitt <brett.profitt@gmail.com> | 2011-10-23 10:53:26 -0700 | 
| commit | 5d38476faf775ce6c639d20bc685a7117d29b8f5 (patch) | |
| tree | 80d28d69e5a066ba5f2e10d108175813d9432c0f /install | |
| parent | f1be73852439f5eb7a9f6fdf1e9587f7b2346f69 (diff) | |
| parent | a18ba9dad699ca785e4d8fc37a5fe95a060584e0 (diff) | |
| download | elgg-5d38476faf775ce6c639d20bc685a7117d29b8f5.tar.gz elgg-5d38476faf775ce6c639d20bc685a7117d29b8f5.tar.bz2  | |
Merge branch 'master' of github.com:Elgg/Elgg
Diffstat (limited to 'install')
| -rw-r--r-- | install/ElggInstaller.php | 54 | ||||
| -rw-r--r-- | install/cli/sample_installer.php | 1 | 
2 files changed, 35 insertions, 20 deletions
diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index c07839065..657f0907f 100644 --- a/install/ElggInstaller.php +++ b/install/ElggInstaller.php @@ -39,6 +39,7 @@ class ElggInstaller {  		);  	protected $status = array( +		'config' => FALSE,  		'database' => FALSE,  		'settings' => FALSE,  		'admin' => FALSE, @@ -119,6 +120,9 @@ class ElggInstaller {  	 * account. If it fails, an exception is thrown. It does not check any of  	 * the requirements as the multiple step web installer does.  	 * +	 * If the settings.php file exists, it will use that rather than the parameters +	 * passed to this function. +	 *  	 * @param array $params         Array of key value pairs  	 * @param bool  $createHtaccess Should .htaccess be created  	 * @@ -169,15 +173,22 @@ class ElggInstaller {  			}  		} -		if (!$this->createSettingsFile($params)) { -			throw new InstallationException(elgg_echo('install:error:settings')); +		$this->setInstallStatus(); + +		if (!$this->status['config']) { +			if (!$this->createSettingsFile($params)) { +				throw new InstallationException(elgg_echo('install:error:settings')); +			}  		}  		if (!$this->connectToDatabase()) {  			throw new InstallationException(elgg_echo('install:error:databasesettings'));  		} -		if (!$this->installDatabase()) { -			throw new InstallationException(elgg_echo('install:error:cannotloadtables')); + +		if (!$this->status['database']) { +			if (!$this->installDatabase()) { +				throw new InstallationException(elgg_echo('install:error:cannotloadtables')); +			}  		}  		// load remaining core libraries @@ -562,7 +573,12 @@ class ElggInstaller {  	 * @return string  	 */  	protected function getNextStep($currentStep) { -		return $this->steps[1 + array_search($currentStep, $this->steps)]; +		$index = 1 + array_search($currentStep, $this->steps); +		if (isset($this->steps[$index])) { +			return $this->steps[$index]; +		} else { +			return null; +		}  	}  	/** @@ -592,6 +608,8 @@ class ElggInstaller {  		$this->loadSettingsFile(); +		$this->status['config'] = TRUE; +  		// must be able to connect to database to jump install steps  		$dbSettingsPass = $this->checkDatabaseSettings(  				$CONFIG->dbuser, @@ -735,20 +753,18 @@ class ElggInstaller {  	protected function finishBootstraping($step) {  		$dbIndex = array_search('database', $this->getSteps()); -		$settingsIndex = array_search('settings', $this->getSteps()); +		$adminIndex = array_search('admin', $this->getSteps()); +		$completeIndex = array_search('complete', $this->getSteps());  		$stepIndex = array_search($step, $this->getSteps()); -		if ($stepIndex <= $settingsIndex) { -			// install has its own session handling before the db created and set up -			session_name('Elgg'); +		// To log in the user, we need to use the Elgg core session handling. +		// Otherwise, use default php session handling +		$useElggSession = ($stepIndex == $adminIndex && $this->isAction) || +				$stepIndex == $completeIndex; +		if (!$useElggSession) { +			session_name('Elgg_install');  			session_start();  			elgg_unregister_event_handler('boot', 'system', 'session_init'); -		} else if (!$this->isAction && $stepIndex == ($settingsIndex + 1)) { -			// now using Elgg session handling so need to pass forward the system messages -			// this is called on the GET of the next step -			session_name('Elgg'); -			session_start(); -			$messages = $_SESSION['msg'];  		}  		if ($stepIndex > $dbIndex) { @@ -789,11 +805,6 @@ class ElggInstaller {  			elgg_trigger_event('boot', 'system');  			elgg_trigger_event('init', 'system'); - -			// @hack finish the process of pushing system messages into new session -			if (!$this->isAction && $stepIndex == ($settingsIndex + 1)) { -				$_SESSION['msg'] = $messages; -			}  		}  	} @@ -811,6 +822,8 @@ class ElggInstaller {  		$CONFIG->wwwroot = $this->getBaseUrl();  		$CONFIG->url = $CONFIG->wwwroot;  		$CONFIG->path = dirname(dirname(__FILE__)) . '/'; +		$CONFIG->lastcache = 0; +		$CONFIG->context = array();  	}  	/** @@ -1398,6 +1411,7 @@ class ElggInstaller {  		set_config('default_access', $submissionVars['siteaccess'], $site->getGUID());  		set_config('allow_registration', TRUE, $site->getGUID());  		set_config('walled_garden', FALSE, $site->getGUID()); +		set_config('allow_user_default_access', '', $site->getGUID());  		$this->enablePlugins(); diff --git a/install/cli/sample_installer.php b/install/cli/sample_installer.php index 10838b562..954169a6a 100644 --- a/install/cli/sample_installer.php +++ b/install/cli/sample_installer.php @@ -15,6 +15,7 @@ $params = array(  	// site settings  	'sitename' => '', +	'siteemail' => '',  	'wwwroot' => '',  	'dataroot' => '',  | 
