]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #3994 cleaned up session handling for the installer
authorCash Costello <cash.costello@gmail.com>
Sat, 22 Oct 2011 01:09:27 +0000 (21:09 -0400)
committerCash Costello <cash.costello@gmail.com>
Sat, 22 Oct 2011 01:09:27 +0000 (21:09 -0400)
install/ElggInstaller.php

index c07839065b12f55c39655b081c86317f12ea9974..59ac44dc689389c881cf4afe4550b1af5a61f5ee 100644 (file)
@@ -562,7 +562,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;
+               }
        }
 
        /**
@@ -735,20 +740,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 +792,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 +809,8 @@ class ElggInstaller {
                $CONFIG->wwwroot = $this->getBaseUrl();
                $CONFIG->url = $CONFIG->wwwroot;
                $CONFIG->path = dirname(dirname(__FILE__)) . '/';
+               $CONFIG->lastcache = 0;
+               $CONFIG->context = array();
        }
 
        /**
@@ -1398,6 +1398,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();