diff options
-rw-r--r-- | engine/classes/ElggMetadata.php | 6 | ||||
-rw-r--r-- | engine/classes/ElggSite.php | 7 | ||||
-rw-r--r-- | engine/lib/access.php | 10 | ||||
-rw-r--r-- | engine/lib/entities.php | 13 | ||||
-rw-r--r-- | engine/lib/filestore.php | 6 | ||||
-rw-r--r-- | install/ElggInstaller.php | 54 | ||||
-rw-r--r-- | install/cli/sample_installer.php | 1 | ||||
-rw-r--r-- | views/installation/input/access.php | 11 | ||||
-rw-r--r-- | views/installation/input/button.php | 15 | ||||
-rw-r--r-- | views/installation/input/checkbox.php | 8 | ||||
-rw-r--r-- | views/installation/input/dropdown.php | 15 | ||||
-rw-r--r-- | views/installation/input/form.php | 9 | ||||
-rw-r--r-- | views/installation/input/password.php | 10 | ||||
-rw-r--r-- | views/installation/input/text.php | 11 |
14 files changed, 92 insertions, 84 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/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(), 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; diff --git a/engine/lib/entities.php b/engine/lib/entities.php index f1352ba8d..fcd4544bf 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; } } @@ -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; 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"); } 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' => '', 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) { ?> - <select name="<?php echo $vars['name']; ?>" <?php if ((isset($vars['disabled'])) && ($vars['disabled'])) echo ' disabled="yes" '; ?> class="<?php echo $class; ?>"> + <select name="<?php echo $vars['name']; ?>" class="<?php echo $class; ?>"> <?php foreach($vars['options'] as $key => $option) { @@ -40,4 +35,4 @@ if (is_array($vars['options']) && sizeof($vars['options']) > 0) { <?php -}
\ No newline at end of file +} diff --git a/views/installation/input/button.php b/views/installation/input/button.php index 29a37dd55..ec90fed9d 100644 --- a/views/installation/input/button.php +++ b/views/installation/input/button.php @@ -7,11 +7,18 @@ * @uses $vars['type'] submit or button. */ -$class = $vars['class']; -if (!$class) { +if (isset($vars['class'])) { + $class = $vars['class']; +} else { $class = "elgg-button-submit"; } +if (isset($vars['name'])) { + $name = $vars['name']; +} else { + $name = ''; +} + if (isset($vars['type'])) { $type = strtolower($vars['type']); } else { @@ -28,6 +35,6 @@ switch ($type) { } $value = htmlentities($vars['value'], ENT_QUOTES, 'UTF-8'); -$name = $vars['name']; + ?> -<input type="<?php echo $type; ?>" <?php if (isset($vars['id'])) echo "id=\"{$vars['id']}\"";?> value="<?php echo $value; ?>" class="<?php echo $class; ?>" />
\ No newline at end of file +<input type="<?php echo $type; ?>" value="<?php echo $value; ?>" class="<?php echo $class; ?>" />
\ 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'])) { ?> -<input type="checkbox" <?php echo $id; ?> <?php echo $class; ?> name="<?php echo $vars['name']; ?>" value="<?php echo $vars['value']; ?>" />
\ No newline at end of file +<input type="checkbox" <?php echo $class; ?> name="<?php echo $vars['name']; ?>" value="<?php echo $vars['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"; -} ?> -<select name="<?php echo $vars['name']; ?>" <?php if ($vars['disabled']) echo ' disabled="yes" '; ?> class="<?php echo $class; ?>"> +<select name="<?php echo $vars['name']; ?>" class="<?php echo $class; ?>"> <?php -if ($vars['options_values']) { - foreach($vars['options_values'] as $value => $option) { +if (isset($vars['options_values'])) { + foreach ($vars['options_values'] as $value => $option) { if ($value != $vars['value']) { echo "<option value=\"$value\">{$option}</option>"; } 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 "<option>{$option}</option>"; } else { @@ -36,4 +33,4 @@ if ($vars['options_values']) { } } ?> -</select>
\ No newline at end of file +</select> 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); ?> -<form <?php echo "$id $name"; ?> action="<?php echo $action; ?>" method="<?php echo $method; ?>"> +<form <?php echo $name; ?> action="<?php echo $action; ?>" method="<?php echo $method; ?>"> <?php echo $body; ?> </form>
\ 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'); + ?> -<input type="password" <?php if ($vars['disabled']) echo ' disabled="yes" '; ?> name="<?php echo $vars['name']; ?>" <?php if (isset($vars['id'])) echo "id=\"{$vars['id']}\""; ?> value="<?php echo htmlentities($vars['value'], ENT_QUOTES, 'UTF-8'); ?>" class="<?php echo $class; ?>" /> +<input type="password" name="<?php echo $vars['name']; ?>" value="<?php echo $value; ?>" class="<?php echo $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'); ?> -<input type="text" name="<?php echo $vars['name']; ?>" value="<?php echo htmlentities($vars['value'], ENT_QUOTES, 'UTF-8'); ?>" <?php echo $class; ?> <?php echo $id; ?>/>
\ No newline at end of file +<input type="text" name="<?php echo $vars['name']; ?>" value="<?php echo $value; ?>" <?php echo $class; ?> />
\ No newline at end of file |