diff options
| -rw-r--r-- | engine/lib/widgets.php | 40 | ||||
| -rw-r--r-- | views/default/layouts/widgets.php | 2 | 
2 files changed, 32 insertions, 10 deletions
| diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index 1646c18d4..f5b473fd9 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -16,6 +16,7 @@   *   * @param int    $user_guid The owner user GUID   * @param string $context   The context (profile, dashboard, etc) + *    * @return array|false An 2D array of ElggWidget objects or false   * @since 1.8.0   */ @@ -53,6 +54,7 @@ function elgg_get_widgets($user_guid, $context) {   * @param int    $entity_guid GUID of entity that owns this widget   * @param string $handler     The handler for this widget   * @param int    $access_id   If not specified, it is set to the default access level + *    * @return int|false Widget GUID or false on failure   * @since 1.8   */ @@ -94,6 +96,7 @@ function elgg_create_widget($owner_guid, $handler, $access_id = null) {   *   * @param int   $guid   The GUID of the widget   * @param array $params An array of name => value parameters + *    * @return bool   * @since 1.8.0   */ @@ -125,22 +128,37 @@ function elgg_save_widget_settings($guid, $params) {  }  /** - * Can the user edit the widgets + * Can the user edit the widget layout + * + * Triggers a 'permissions_check', 'widget_layout' plugin hook + * + * @param string $context   The widget context + * @param int    $user_guid The GUID of the user (0 for logged in user)   * - * @param int $user_guid The GUID of the user or 0 for logged in user   * @return bool + * @since 1.8.0   */ -function elgg_can_edit_widgets($user_guid = 0) { +function elgg_can_edit_widget_layout($context, $user_guid = 0) { + +	$user = get_entity((int)$user_guid); +	if (!$user) { +		$user = get_loggedin_user(); +	} +  	$return = false;  	if (isadminloggedin()) {  		$return = true;  	} -	if (elgg_get_page_owner_guid() == get_loggedin_userid()) { +	if (elgg_get_page_owner_guid() == $user->guid) {  		$return = true;  	} -	// @todo add plugin hook -	return $return; +	$params = array( +		'user' => $user, +		'context' => $context, +		'page_owner' => elgg_get_page_owner() +	); +	return elgg_trigger_plugin_hook('permissions_check', 'widget_layout', $params, $return);  }  /** @@ -154,7 +172,8 @@ function elgg_can_edit_widgets($user_guid = 0) {   * @param string $context     A comma-separated list of contexts where this   *                            widget is allowed (default: 'all')   * @param bool   $multiple    Whether or not multiple instances of this widget - *                            are allowed on a single dashboard (default: false) + *                            are allowed in a single layout (default: false) + *    * @return bool   * @since 1.8.0   */ @@ -188,6 +207,7 @@ function elgg_add_widget_type($handler, $name, $description, $context = "all", $   * Remove a widget type   *   * @param string $handler The identifier for the widget + *    * @return void   * @since 1.8.0   */ @@ -208,10 +228,11 @@ function elgg_remove_widget_type($handler) {  }  /** - * Determines whether or not widgets with the specified handler have been defined + * Has a widget type with the specified handler been registered   *   * @param string $handler The widget handler identifying string - * @return bool Whether or not those widgets exist + *  + * @return bool Whether or not that widget type exists   * @since 1.8.0   */  function elgg_is_widget_type($handler) { @@ -234,6 +255,7 @@ function elgg_is_widget_type($handler) {   * The widget types are stdClass objects.   *   * @param string context The widget context or empty string for current context + *    * @return array   * @since 1.8.0   */ diff --git a/views/default/layouts/widgets.php b/views/default/layouts/widgets.php index 692d01acc..149e3d327 100644 --- a/views/default/layouts/widgets.php +++ b/views/default/layouts/widgets.php @@ -17,7 +17,7 @@ elgg_push_context('widgets');  $widgets = elgg_get_widgets($owner->guid, $context); -if (elgg_can_edit_widgets()) { +if (elgg_can_edit_widget_layout($context)) {  	if ($show_add_widgets) {  		echo elgg_view('widgets/add_button');  	} | 
