diff options
Diffstat (limited to 'engine/lib/upgrades/2010071002.php')
| -rw-r--r-- | engine/lib/upgrades/2010071002.php | 50 | 
1 files changed, 50 insertions, 0 deletions
| diff --git a/engine/lib/upgrades/2010071002.php b/engine/lib/upgrades/2010071002.php new file mode 100644 index 000000000..52aa15ef5 --- /dev/null +++ b/engine/lib/upgrades/2010071002.php @@ -0,0 +1,50 @@ +<?php +/** + * Update the notifications based on all friends and access collections + */ + +// loop through all users checking collections and notifications +global $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)) { +	$ENTITY_CACHE = array(); +	_elgg_invalidate_query_cache(); + +	$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); +					} +				} +			} +		} +	} +} | 
