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 | |
| parent | f1be73852439f5eb7a9f6fdf1e9587f7b2346f69 (diff) | |
| parent | a18ba9dad699ca785e4d8fc37a5fe95a060584e0 (diff) | |
| download | elgg-5d38476faf775ce6c639d20bc685a7117d29b8f5.tar.gz elgg-5d38476faf775ce6c639d20bc685a7117d29b8f5.tar.bz2  | |
Merge branch 'master' of github.com:Elgg/Elgg
| -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  | 
