From 4f5d7c0e9d231a9558cf9d4e681351f3bf1b20f2 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 07:14:51 -0400 Subject: cleaned up input views for installation so that no notices are thrown --- views/installation/input/access.php | 11 +++-------- views/installation/input/button.php | 15 +++++++++++---- views/installation/input/checkbox.php | 8 +------- views/installation/input/dropdown.php | 15 ++++++--------- views/installation/input/form.php | 9 ++------- views/installation/input/password.php | 10 +++++----- views/installation/input/text.php | 11 +++-------- 7 files changed, 31 insertions(+), 48 deletions(-) diff --git a/views/installation/input/access.php b/views/installation/input/access.php index 7665d8bca..c3d4713bc 100644 --- a/views/installation/input/access.php +++ b/views/installation/input/access.php @@ -8,12 +8,7 @@ * */ -if (isset($vars['class'])) { - $class = $vars['class']; -} -if (!$class) { - $class = "elgg-input-access"; -} +$class = "elgg-input-access"; if ((!isset($vars['options'])) || (!is_array($vars['options']))) { $vars['options'] = array(); @@ -24,7 +19,7 @@ if (is_array($vars['options']) && sizeof($vars['options']) > 0) { ?> - $option) { @@ -40,4 +35,4 @@ if (is_array($vars['options']) && sizeof($vars['options']) > 0) { - value="" class="" /> \ No newline at end of file + \ No newline at end of file diff --git a/views/installation/input/checkbox.php b/views/installation/input/checkbox.php index 378eae6fd..6fbe25169 100644 --- a/views/installation/input/checkbox.php +++ b/views/installation/input/checkbox.php @@ -5,15 +5,9 @@ * * @uses $var['name'] * @uses $vars['value'] - * @uses $vars['id'] * @uses $vars['class'] */ -if (isset($vars['id'])) { - $id = "id=\"{$vars['id']}\""; -} else { - $id = ''; -} if (isset($vars['class'])) { $id = "class=\"{$vars['class']}\""; @@ -27,4 +21,4 @@ if (!isset($vars['value'])) { ?> - name="" value="" /> \ No newline at end of file + name="" value="" /> \ No newline at end of file diff --git a/views/installation/input/dropdown.php b/views/installation/input/dropdown.php index 46e15c657..cf875492e 100644 --- a/views/installation/input/dropdown.php +++ b/views/installation/input/dropdown.php @@ -10,16 +10,13 @@ * the value displayed on the button. Replaces $vars['options'] when defined. */ +$class = "elgg-input-dropdown"; -$class = $vars['class']; -if (!$class) { - $class = "elgg-input-dropdown"; -} ?> - $option) { +if (isset($vars['options_values'])) { + foreach ($vars['options_values'] as $value => $option) { if ($value != $vars['value']) { echo ""; } else { @@ -27,7 +24,7 @@ if ($vars['options_values']) { } } } else { - foreach($vars['options'] as $option) { + foreach ($vars['options'] as $option) { if ($option != $vars['value']) { echo ""; } else { @@ -36,4 +33,4 @@ if ($vars['options_values']) { } } ?> - \ No newline at end of file + diff --git a/views/installation/input/form.php b/views/installation/input/form.php index f8730b4f5..3556413a8 100644 --- a/views/installation/input/form.php +++ b/views/installation/input/form.php @@ -5,20 +5,15 @@ * @uses $vars['body'] The body of the form (made up of other input/xxx views and html * @uses $vars['action'] URL of the action being called * @uses $vars['method'] Method (default POST) - * @uses $vars['id'] Form id * @uses $vars['name'] Form name */ -if (isset($vars['id'])) { - $id = "id=\"{$vars['id']}\""; -} else { - $id = ''; -} if (isset($vars['name'])) { $name = "name=\"{$vars['name']}\""; } else { $name = ''; } + $body = $vars['body']; $action = $vars['action']; if (isset($vars['method'])) { @@ -30,6 +25,6 @@ if (isset($vars['method'])) { $method = strtolower($method); ?> -
action="" method=""> + action="" method="">
\ No newline at end of file diff --git a/views/installation/input/password.php b/views/installation/input/password.php index 18811109b..2265ab117 100644 --- a/views/installation/input/password.php +++ b/views/installation/input/password.php @@ -8,10 +8,10 @@ * */ -$class = $vars['class']; -if (!$class) { - $class = "input-password"; -} +$class = "input-password"; + +$value = htmlentities($vars['value'], ENT_QUOTES, 'UTF-8'); + ?> - name="" value="" class="" /> + diff --git a/views/installation/input/text.php b/views/installation/input/text.php index ec8233461..375b91c44 100644 --- a/views/installation/input/text.php +++ b/views/installation/input/text.php @@ -6,20 +6,15 @@ * @uses $vars['value'] The current value, if any * @uses $vars['name'] The name of the input field * @uses $vars['class'] CSS class - * @uses $vars['id'] CSS id */ if (isset($vars['class'])) { $class = "class=\"{$vars['class']}\""; } else { - $class = ""; + $class = "elgg-input-text"; } -if (isset($vars['id'])) { - $id = "id=\"{$vars['id']}\""; -} else { - $id = ''; -} +$value = htmlentities($vars['value'], ENT_QUOTES, 'UTF-8'); ?> - /> \ No newline at end of file + /> \ No newline at end of file -- cgit v1.2.3 From 2f2c710cb6027557f5394d34e99b42b4289b5c71 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 07:24:57 -0400 Subject: Fixes #3989 fixed access of non-object property in access lib --- engine/lib/access.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engine/lib/access.php b/engine/lib/access.php index ae64f832a..002413baa 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -981,17 +981,17 @@ function access_init() { */ function elgg_override_permissions($hook, $type, $value, $params) { $user = elgg_extract('user', $params); - if (!$user) { - $user = elgg_get_logged_in_user_entity(); + if ($user) { + $user_guid = $user->getGUID(); + } else { + $user_guid = elgg_get_logged_in_user_guid(); } - // don't do this so ignore access still works. + // don't do this so ignore access still works with no one logged in // if (!$user instanceof ElggUser) { // return false; // } - $user_guid = $user->guid; - // check for admin if ($user_guid && elgg_is_admin_user($user_guid)) { return true; -- cgit v1.2.3 From 8133f364fc689e5068b1c4ca70e7cf4057a5694c Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 07:29:46 -0400 Subject: fixed access of non-object property in entities lib --- engine/lib/entities.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/lib/entities.php b/engine/lib/entities.php index f1352ba8d..1f6434533 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -530,12 +530,12 @@ $container_guid = 0) { $container_guid = $owner_guid; } - $user = elgg_get_logged_in_user_entity(); - if (!can_write_to_container($user->guid, $owner_guid, $type, $subtype)) { + $user_guid = elgg_get_logged_in_user_guid(); + if (!can_write_to_container($user_guid, $owner_guid, $type, $subtype)) { return false; } if ($owner_guid != $container_guid) { - if (!can_write_to_container($user->guid, $container_guid, $type, $subtype)) { + if (!can_write_to_container($user_guid, $container_guid, $type, $subtype)) { return false; } } -- cgit v1.2.3 From 343b52d48e7ca7b2381387198c47d3bb1a2ed6e1 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 07:34:21 -0400 Subject: Fixes #3988 correctly passing user_guid through canEdit for metadata --- engine/classes/ElggMetadata.php | 6 ++++-- engine/lib/entities.php | 7 ++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/engine/classes/ElggMetadata.php b/engine/classes/ElggMetadata.php index ed3f8614f..32e7b32f1 100644 --- a/engine/classes/ElggMetadata.php +++ b/engine/classes/ElggMetadata.php @@ -45,11 +45,13 @@ class ElggMetadata extends ElggExtender { /** * Determines whether or not the user can edit this piece of metadata * + * @param int $user_guid The GUID of the user (defaults to currently logged in user) + * * @return true|false Depending on permissions */ - function canEdit() { + function canEdit($user_guid = 0) { if ($entity = get_entity($this->get('entity_guid'))) { - return $entity->canEditMetadata($this); + return $entity->canEditMetadata($this, $user_guid); } return false; } diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 1f6434533..fcd4544bf 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -1837,7 +1837,12 @@ function can_edit_entity_metadata($entity_guid, $user_guid = 0, $metadata = null $return = can_edit_entity($entity_guid, $user_guid); } - $user = get_entity($user_guid); + if ($user_guid) { + $user = get_entity($user_guid); + } else { + $user = elgg_get_logged_in_user_entity(); + } + $params = array('entity' => $entity, 'user' => $user, 'metadata' => $metadata); $return = elgg_trigger_plugin_hook('permissions_check:metadata', $entity->type, $params, $return); return $return; -- cgit v1.2.3 From 6628e7db7895855784e43fce74c7dec41f01c2dc Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 07:37:10 -0400 Subject: updated ElggSite::disable() to conform to ElggEntity::disable() --- engine/classes/ElggSite.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php index 8708800cf..16b80b9d3 100644 --- a/engine/classes/ElggSite.php +++ b/engine/classes/ElggSite.php @@ -190,18 +190,19 @@ class ElggSite extends ElggEntity { * @note You cannot disable the current site. * * @param string $reason Optional reason for disabling + * @param bool $recursive Recursively disable all contained entities? * * @return bool * @throws SecurityException */ - public function disable($reason = "") { + public function disable($reason = "", $recursive = true) { global $CONFIG; if ($CONFIG->site->getGUID() == $this->guid) { throw new SecurityException('SecurityException:deletedisablecurrentsite'); } - return parent::disable($reason); + return parent::disable($reason, $recursive); } /** @@ -225,7 +226,7 @@ class ElggSite extends ElggEntity { 'offset' => $offset, ); } - + $defaults = array( 'relationship' => 'member_of_site', 'relationship_guid' => $this->getGUID(), -- cgit v1.2.3 From 7ef727bfa242015d3ca7ab22671ec020006f0b4e Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 21:03:37 -0400 Subject: don't set default filestore if we don't have a dataroot --- engine/lib/filestore.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php index a7aa1ff8c..a13d8aa27 100644 --- a/engine/lib/filestore.php +++ b/engine/lib/filestore.php @@ -483,8 +483,10 @@ function filestore_init() { global $CONFIG; // Now register a default filestore - set_default_filestore(new ElggDiskFilestore($CONFIG->dataroot)); - + if (isset($CONFIG->dataroot)) { + set_default_filestore(new ElggDiskFilestore($CONFIG->dataroot)); + } + // Now run this stuff, but only once run_function_once("filestore_run_once"); } -- cgit v1.2.3 From e8c47ee8a098bd4297cbacb6b96ad1768a769628 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 21:09:27 -0400 Subject: Fixes #3994 cleaned up session handling for the installer --- install/ElggInstaller.php | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index c07839065..59ac44dc6 100644 --- a/install/ElggInstaller.php +++ b/install/ElggInstaller.php @@ -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(); -- cgit v1.2.3 From a18ba9dad699ca785e4d8fc37a5fe95a060584e0 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Fri, 21 Oct 2011 21:30:01 -0400 Subject: Fixes #3995 the batch installer now skips the settings file creation step if settings.php already exists --- install/ElggInstaller.php | 21 +++++++++++++++++---- install/cli/sample_installer.php | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index 59ac44dc6..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 @@ -597,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, 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' => '', -- cgit v1.2.3