diff options
Diffstat (limited to 'start.php')
| -rw-r--r-- | start.php | 35 | 
1 files changed, 18 insertions, 17 deletions
@@ -63,6 +63,10 @@ function tidypics_init() {  	// RSS extensions for embedded media  	elgg_extend_view('extensions/xmlns', 'extensions/photos/xmlns'); +	// allow group members add photos to group albums +	elgg_register_plugin_hook_handler('container_permissions_check', 'object', 'tidypics_group_permission_override'); +	elgg_register_plugin_hook_handler('permissions_check:metadata', 'object', 'tidypics_group_permission_override'); +  /* @@ -71,11 +75,6 @@ function tidypics_init() {  	//register_elgg_event_handler('pagesetup', 'system', 'tidypics_submenus'); - -	if (get_plugin_setting('grp_perm_override', 'tidypics') != "disabled") { -		register_plugin_hook('permissions_check', 'object', 'tidypics_permission_override'); -	} -  	// Register for notifications  	register_notification_object('object', 'album', elgg_echo('tidypics:newalbum'));  	register_plugin_hook('notify:entity:message', 'object', 'tidypics_notify_message'); @@ -327,7 +326,10 @@ function tidypics_entity_menu_setup($hook, $type, $return, $params) {  }  /** - * Override permissions for group albums and images + * Override permissions for group albums + * + * 1. To write to a container (album) you must be able to write to the owner of the container (odd) + * 2. We also need to change metadata on the album   *   * @param string $hook   * @param string $type @@ -335,18 +337,17 @@ function tidypics_entity_menu_setup($hook, $type, $return, $params) {   * @param array  $params   * @return mixed   */ -function tidypics_permission_override($hook, $type, $result, $params) { -	$entity = $params['entity']; -	$user   = $params['user']; - -	if ($entity->subtype == get_subtype_id('object', 'album')) { -		// test that the user can edit the container -		return can_write_to_container(0, $entity->container_guid); -	} +function tidypics_group_permission_override($hook, $type, $result, $params) { +	if (get_input('action') == 'photos/image/upload') { +		if (isset($params['container'])) { +			$album = $params['container']; +		} else { +			$album = $params['entity']; +		} -	if ($entity->subtype == get_subtype_id('object', 'image')) { -		// test that the user can edit the container -		return can_write_to_container(0, $entity->container_guid); +		if (elgg_instanceof($album, 'object', 'album')) { +			return $album->getContainerEntity()->canWriteToContainer(); +		}  	}  }  | 
