diff options
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/lib/widgets.php | 23 | 
1 files changed, 18 insertions, 5 deletions
diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index bf36cf001..b4ad9bd93 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -82,6 +82,8 @@  					return true;
 +				} else {
 +					register_error($widget->subtype);
  				}
  			}
 @@ -102,13 +104,17 @@  			if ($widgets = get_user_objects_by_metadata($user_guid, "widget", array(
  												'column' => $column,
 -												'location' => $context, 
 +												'context' => $context, 
  																	), 10000)) {
  				$widgetorder = array();
  				foreach($widgets as $widget) {
 -					$widgetorder[$widget->order] = $widget; 
 +					$order = $widget->order;
 +					while(isset($widgetorder[$order])) {
 +						$order++;
 +					}
 +					$widgetorder[$order] = $widget; 
  				}
  				return $widgetorder;
 @@ -148,11 +154,14 @@  			if ($user = get_user($user_guid)) {
  				$widget = new ElggObject;
 +				$widget->subtype = "widget";
  				$widget->handler = $handler;
  				$widget->context = $context;
 +				$widget->column = $column;
  				if (!$widget->save())
  					return false;
 -				return save_widget_location($widget, $order, $column);
 +				save_widget_location($widget, $order, $column);
 +				return true;
  			}
 @@ -244,7 +253,9 @@  			if ($widget = get_entity($widget_guid)) {
 -				if ($widget->subtype != "widget") return false;
 +				$subtype = $widget->getSubtype();
 +				
 +				if ($subtype != "widget") return false;
  				$handler = $widget->handler;
  				if (empty($handler) || !widget_type_exists($handler)) return false;
 @@ -257,6 +268,7 @@  							$widget->$name = $value;
  						}
  					}
 +					$widget->save();
  				}
  				$function = "save_{$handler}_widget";
 @@ -276,9 +288,10 @@  	 * Function to initialise widgets functionality on Elgg init
  	 *
  	 */
 -		function widget_init() {
 +		function widgets_init() {
  			register_action('widgets/save');
 +			register_action('widgets/add');
  		}
  | 
