diff options
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/lib/entities.php | 19 | ||||
| -rw-r--r-- | engine/lib/relationships.php | 4 | ||||
| -rw-r--r-- | engine/lib/upgrades/2010071001.php | 48 | ||||
| -rw-r--r-- | engine/lib/upgrades/2010071002.php | 48 | 
4 files changed, 109 insertions, 10 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 1750f12e1..e6c2baa8e 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -801,7 +801,9 @@ abstract class ElggEntity implements  			$this->attributes['subtype'] = get_subtype_id($this->attributes['type'], $this->attributes['subtype']);  			// Cache object handle -			if ($this->attributes['guid']) cache_entity($this); +			if ($this->attributes['guid']) { +				cache_entity($this); +			}  			return $this->attributes['guid'];  		} @@ -1693,21 +1695,24 @@ function entity_row_to_elggstar($row) {  			if (!($new_entity instanceof ElggEntity)) {  				throw new ClassException(sprintf(elgg_echo('ClassException:ClassnameNotClass'), $classname, 'ElggEntity'));  			} -		} -		else { +		} else {  			error_log(sprintf(elgg_echo('ClassNotFoundException:MissingClass'), $classname));  		}  	}  	else {  		switch ($row->type) {  			case 'object' : -				$new_entity = new ElggObject($row); break; +				$new_entity = new ElggObject($row); +				break;  			case 'user' : -				$new_entity = new ElggUser($row); break; +				$new_entity = new ElggUser($row); +				break;  			case 'group' : -				$new_entity = new ElggGroup($row); break; +				$new_entity = new ElggGroup($row); +				break;  			case 'site' : -				$new_entity = new ElggSite($row); break; +				$new_entity = new ElggSite($row); +				break;  			default:  				throw new InstallationException(sprintf(elgg_echo('InstallationException:TypeNotSupported'), $row->type));  		} diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php index f1d119452..dd59b8d3f 100644 --- a/engine/lib/relationships.php +++ b/engine/lib/relationships.php @@ -625,9 +625,7 @@ $count = false, $site_guid = 0) {  		$options['owner_guid'] = $owner_guid;  	} -	if ($limit) { -		$options['limit'] = $limit; -	} +	$options['limit'] = $limit;  	if ($offset) {  		$options['offset'] = $offset; diff --git a/engine/lib/upgrades/2010071001.php b/engine/lib/upgrades/2010071001.php new file mode 100644 index 000000000..4df044cff --- /dev/null +++ b/engine/lib/upgrades/2010071001.php @@ -0,0 +1,48 @@ +<?php +/** + *	Change profile image names to use guid rather than username + */ + +function user_file_matrix_2010071001($guid) { +	// lookup the entity +	$user = get_entity($guid); +	if ($user->type != 'user') { +		// only to be used for user directories +		return FALSE; +	} + +	if (!$user->time_created) { +		// no idea where this user has its files +		return FALSE; +	} + +	$time_created = date('Y/m/d', $user->time_created); +	return "$time_created/$user->guid/"; +} + +$sizes = array('large', 'medium', 'small', 'tiny', 'master', 'topbar'); + +global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG; +$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity WHERE username != ''"); +while ($user = mysql_fetch_object($users)) { +	$DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array(); + +	$user_directory = user_file_matrix_2010071001($user->guid); +	if (!$user_directory) { +		continue; +	} +	$profile_directory = $CONFIG->dataroot . $user_directory . "profile/"; +	if (!file_exists($profile_directory)) { +		continue; +	} + +	foreach ($sizes as $size) { +		$old_filename = "$profile_directory{$user->username}{$size}.jpg"; +		$new_filename = "$profile_directory{$user->guid}{$size}.jpg"; +		if (file_exists($old_filename)) { +			if (!rename($old_filename, $new_filename)) { +				error_log("Failed to rename profile photo for $user->username"); +			} +		} +	} +} diff --git a/engine/lib/upgrades/2010071002.php b/engine/lib/upgrades/2010071002.php new file mode 100644 index 000000000..cdf08c830 --- /dev/null +++ b/engine/lib/upgrades/2010071002.php @@ -0,0 +1,48 @@ +<?php +/** + * Update the notifications based on all friends and access collections + */ + +// loop through all users checking collections and notifications +global $DB_QUERY_CACHE, $DB_PROFILE, $ENTITY_CACHE, $CONFIG; +global $NOTIFICATION_HANDLERS; +$users = mysql_query("SELECT guid, username FROM {$CONFIG->dbprefix}users_entity WHERE username != ''"); +while ($user = mysql_fetch_object($users)) { +	$DB_QUERY_CACHE = $DB_PROFILE = $ENTITY_CACHE = array(); + +	$user = get_entity($user->guid); +	foreach ($NOTIFICATION_HANDLERS as $method => $foo) { +		$notify = "notify$method"; +		$metaname = "collections_notifications_preferences_$method"; +		$collections_preferences = $user->$metaname; +		if (!$collections_preferences) { +			continue; +		} +		if (!is_array($collections_preferences)) { +			$collections_preferences = array($collections_preferences); +		} +		foreach ($collections_preferences as $collection_id) { +			// check the all friends notifications +			if ($collection_id == -1) { +				$options = array( +					'relationship' => 'friend',  +					'relationship_guid' => $user->guid, +					'limit' => 0 +				); +				$friends = elgg_get_entities_from_relationship($options); +				foreach ($friends as $friend) { +					if (!check_entity_relationship($user->guid, $notify, $friend->guid)) { +						add_entity_relationship($user->guid, $notify, $friend->guid); +					} +				} +			} else { +				$members = get_members_of_access_collection($collection_id, TRUE); +				foreach ($members as $member) { +					if (!check_entity_relationship($user->guid, $notify, $members)) { +						add_entity_relationship($user->guid, $notify, $member); +					} +				} +			} +		} +	} +}  | 
