diff options
| author | Sem <sembrestels@riseup.net> | 2014-01-22 03:37:52 +0100 | 
|---|---|---|
| committer | Sem <sembrestels@riseup.net> | 2014-01-22 03:37:52 +0100 | 
| commit | 4a2ed114bb18c5363f594a380676c5654f4165a4 (patch) | |
| tree | 3a37094b249c40e3e6bf122691db53115f65f8f0 /mod/messages/start.php | |
| parent | 673932bc46a3918293a28c2c2fc622b3e5ff6bde (diff) | |
| parent | 0dd36c458d41e77521c36ae572fe73114ad4bc5a (diff) | |
| download | elgg-4a2ed114bb18c5363f594a380676c5654f4165a4.tar.gz elgg-4a2ed114bb18c5363f594a380676c5654f4165a4.tar.bz2  | |
Merge tag '1.8.18' of git://github.com/Elgg/Elgg into develop
1.8.18
Conflicts:
	mod/tinymce/vendor/tinymce/jscripts/tiny_mce/langs/en.js
	mod/tinymce/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
Diffstat (limited to 'mod/messages/start.php')
| -rw-r--r-- | mod/messages/start.php | 53 | 
1 files changed, 48 insertions, 5 deletions
diff --git a/mod/messages/start.php b/mod/messages/start.php index e17640098..6d0e82744 100644 --- a/mod/messages/start.php +++ b/mod/messages/start.php @@ -51,6 +51,9 @@ function messages_init() {  	elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'messages_notification_msg');  	register_notification_object('object', 'messages', elgg_echo('messages:new')); +	// delete messages sent by a user when user is deleted +	elgg_register_event_handler('delete', 'user', 'messages_purge'); +  	// ecml  	elgg_register_plugin_hook_handler('get_views', 'ecml', 'messages_ecml_views_hook'); @@ -74,23 +77,30 @@ function messages_init() {   */  function messages_page_handler($page) { +	$current_user = elgg_get_logged_in_user_entity(); +	if (!$current_user) { +		register_error(elgg_echo('noaccess')); +		$_SESSION['last_forward_from'] = current_page_url(); +		forward(''); +	} +  	elgg_load_library('elgg:messages'); -	elgg_push_breadcrumb(elgg_echo('messages'), 'messages/inbox/' . elgg_get_logged_in_user_entity()->username); +	elgg_push_breadcrumb(elgg_echo('messages'), 'messages/inbox/' . $current_user->username);  	if (!isset($page[0])) {  		$page[0] = 'inbox';  	} -	// supporting the old inbox url /messages/<username> -	$user = get_user_by_username($page[0]); -	if ($user) { +	// Support the old inbox url /messages/<username>, but only if it matches the logged in user. +	// Otherwise having a username like "read" on the system could confuse this function. +	if ($current_user->username === $page[0]) {  		$page[1] = $page[0];  		$page[0] = 'inbox';  	}  	if (!isset($page[1])) { -		$page[1] = elgg_get_logged_in_user_entity()->username; +		$page[1] = $current_user->username;  	}  	$base_dir = elgg_get_plugins_path() . 'messages/pages/messages'; @@ -418,6 +428,39 @@ function messages_user_hover_menu($hook, $type, $return, $params) {  	return $return;  } +/** + * Delete messages from a user who is being deleted + * + * @param string   $event Event name + * @param string   $type  Event type + * @param ElggUser $user  User being deleted + */ +function messages_purge($event, $type, $user) { + +	if (!$user->getGUID()) { +		return; +	} + +	// make sure we delete them all +	$entity_disable_override = access_get_show_hidden_status(); +	access_show_hidden_entities(true); +	$ia = elgg_set_ignore_access(true); + +	$options = array( +		'type' => 'object', +		'subtype' => 'messages', +		'metadata_name' => 'fromId', +		'metadata_value' => $user->getGUID(), +		'limit' => 0, +	); +	$batch = new ElggBatch('elgg_get_entities_from_metadata', $options); +	foreach ($batch as $e) { +		$e->delete(); +	} + +	elgg_set_ignore_access($ia); +	access_show_hidden_entities($entity_disable_override); +}  /**   * Register messages with ECML.  | 
