diff options
Diffstat (limited to 'engine/lib')
| -rw-r--r-- | engine/lib/admin.php | 5 | ||||
| -rw-r--r-- | engine/lib/annotations.php | 32 | ||||
| -rw-r--r-- | engine/lib/entities.php | 5 | ||||
| -rw-r--r-- | engine/lib/languages.php | 11 | ||||
| -rw-r--r-- | engine/lib/navigation.php | 50 | ||||
| -rw-r--r-- | engine/lib/output.php | 10 | ||||
| -rw-r--r-- | engine/lib/user_settings.php | 7 | ||||
| -rw-r--r-- | engine/lib/users.php | 9 | ||||
| -rw-r--r-- | engine/lib/views.php | 1 | 
9 files changed, 112 insertions, 18 deletions
diff --git a/engine/lib/admin.php b/engine/lib/admin.php index 3baf2ff61..a191d740b 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -225,6 +225,7 @@ function admin_init() {  	elgg_register_action('admin/site/update_basic', '', 'admin');  	elgg_register_action('admin/site/update_advanced', '', 'admin'); +	elgg_register_action('admin/site/flush_cache', '', 'admin');  	elgg_register_action('admin/menu/save', '', 'admin'); @@ -301,7 +302,7 @@ function admin_init() {  	}  	// widgets -	$widgets = array('online_users', 'new_users', 'content_stats', 'admin_welcome'); +	$widgets = array('online_users', 'new_users', 'content_stats', 'admin_welcome', 'control_panel');  	foreach ($widgets as $widget) {  		elgg_register_widget_type(  				$widget, @@ -616,7 +617,7 @@ function elgg_add_admin_widgets($event, $type, $user) {  	// In the form column => array of handlers in order, top to bottom  	$adminWidgets = array( -		1 => array('admin_welcome'), +		1 => array('control_panel', 'admin_welcome'),  		2 => array('online_users', 'new_users', 'content_stats'),  	); diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index e40ab2e39..bfd40d1e8 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -529,6 +529,20 @@ function elgg_annotation_exists($entity_guid, $annotation_type, $owner_guid = NU  }  /** + * Return the URL for a comment + * + * @param ElggAnnotation $comment The comment object  + * @return string + * @access private + */ +function elgg_comment_url_handler(ElggAnnotation $comment) { +	$entity = $comment->getEntity(); +	if ($entity) { +		return $entity->getURL() . '#item-annotation-' . $comment->id; +	} +} + +/**   * Register an annotation url handler.   *   * @param string $function_name The function. @@ -540,11 +554,6 @@ function elgg_register_annotation_url_handler($extender_name = "all", $function_  	return elgg_register_extender_url_handler('annotation', $extender_name, $function_name);  } -/** Register the hook */ -elgg_register_plugin_hook_handler("export", "all", "export_annotation_plugin_hook", 2); - -elgg_register_plugin_hook_handler('unit_test', 'system', 'annotations_test'); -  /**   * Register annotation unit tests   * @access private @@ -554,3 +563,16 @@ function annotations_test($hook, $type, $value, $params) {  	$value[] = $CONFIG->path . 'engine/tests/api/annotations.php';  	return $value;  } + +/** + * Initialize the annotation library + * @access private + */ +function elgg_annotations_init() { +	elgg_register_annotation_url_handler('generic_comment', 'elgg_comment_url_handler'); + +	elgg_register_plugin_hook_handler("export", "all", "export_annotation_plugin_hook", 2); +	elgg_register_plugin_hook_handler('unit_test', 'system', 'annotations_test'); +} + +elgg_register_event_handler('init', 'system', 'elgg_annotations_init'); diff --git a/engine/lib/entities.php b/engine/lib/entities.php index dbb5ee695..daced6740 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -669,7 +669,10 @@ function get_entity($guid) {  	static $newentity_cache;  	$new_entity = false; -	if (!is_numeric($guid)) { +	// We could also use: if (!(int) $guid) { return FALSE },  +	// but that evaluates to a false positive for $guid = TRUE. +	// This is a bit slower, but more thorough. +	if (!is_numeric($guid) || $guid === 0 || $guid === '0') {  		return FALSE;  	} diff --git a/engine/lib/languages.php b/engine/lib/languages.php index 7607ea3bf..0400843af 100644 --- a/engine/lib/languages.php +++ b/engine/lib/languages.php @@ -301,4 +301,15 @@ function get_missing_language_keys($language) {  	return false;  } +/** + * Initialize the language library + * @access private + */ +function elgg_languages_init() { +	$lang = get_current_language(); +	elgg_register_simplecache_view("cache/js/languages/$lang"); +} + +elgg_register_event_handler('init', 'system', 'elgg_languages_init'); +  register_translations(dirname(dirname(dirname(__FILE__))) . "/languages/"); diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php index 176790188..956ca220a 100644 --- a/engine/lib/navigation.php +++ b/engine/lib/navigation.php @@ -385,6 +385,55 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) {  }  /** + * Widget menu is a set of widget controls + * @access private + */ +function elgg_widget_menu_setup($hook, $type, $return, $params) { + +	$widget = $params['entity']; +	$show_edit = elgg_extract('show_edit', $params, true); + +	$collapse = array( +		'name' => 'collapse', +		'text' => ' ', +		'href' => "#elgg-widget-content-$widget->guid", +		'class' => 'elgg-widget-collapse-button', +		'rel' => 'toggle', +		'priority' => 1 +	); +	$return[] = ElggMenuItem::factory($collapse); + +	if ($widget->canEdit()) { +		$delete = array( +			'name' => 'delete', +			'text' => elgg_view_icon('delete-alt'), +			'title' => elgg_echo('widget:delete', array($widget->getTitle())), +			'href' => "action/widgets/delete?widget_guid=$widget->guid", +			'is_action' => true, +			'class' => 'elgg-widget-delete-button', +			'id' => "elgg-widget-delete-button-$widget->guid", +			'priority' => 900 +		); +		$return[] = ElggMenuItem::factory($delete); + +		if ($show_edit) { +			$edit = array( +				'name' => 'settings', +				'text' => elgg_view_icon('settings-alt'), +				'title' => elgg_echo('widget:edit'), +				'href' => "#widget-edit-$widget->guid", +				'class' => "elgg-widget-edit-button", +				'rel' => 'toggle', +				'priority' => 800, +			); +			$return[] = ElggMenuItem::factory($edit); +		} +	} + +	return $return; +} + +/**   * Adds a delete link to "generic_comment" annotations   * @access private   */ @@ -418,6 +467,7 @@ function elgg_nav_init() {  	elgg_register_plugin_hook_handler('prepare', 'menu:site', 'elgg_site_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:river', 'elgg_river_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:entity', 'elgg_entity_menu_setup'); +	elgg_register_plugin_hook_handler('register', 'menu:widget', 'elgg_widget_menu_setup');  	elgg_register_plugin_hook_handler('register', 'menu:annotation', 'elgg_annotation_menu_setup');  } diff --git a/engine/lib/output.php b/engine/lib/output.php index 60bcc72cd..6554481f5 100644 --- a/engine/lib/output.php +++ b/engine/lib/output.php @@ -234,7 +234,7 @@ function elgg_clean_vars(array $vars = array()) {   *   * @example   * elgg_normalize_url('');                   // 'http://my.site.com/' - * elgg_normalize_url('dashboard');       // 'http://my.site.com/dashboard' + * elgg_normalize_url('dashboard');          // 'http://my.site.com/dashboard'   * elgg_normalize_url('http://google.com/'); // no change   * elgg_normalize_url('//google.com/');      // no change   * @@ -257,6 +257,11 @@ function elgg_normalize_url($url) {  		$validated = filter_var($url, FILTER_VALIDATE_URL);  	} +	// work around for handling absoluate IRIs (RFC 3987) - see #4190 +	if (!$validated && (strpos($url, 'http:') === 0) || (strpos($url, 'https:') === 0)) { +		$validated = true; +	} +  	if ($validated) {  		// all normal URLs including mailto:  		return $url; @@ -306,6 +311,9 @@ function elgg_get_friendly_title($title) {  	}  	//$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title); + +	// use A-Za-z0-9_ instead of \w because \w is locale sensitive +	$title = preg_replace("/[^A-Za-z0-9_ ]/", "", $title);  	$title = preg_replace("/[^\w ]/", "", $title);  	$title = str_replace(" ", "-", $title);  	$title = str_replace("--", "-", $title); diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php index c71670357..af30d8f0d 100644 --- a/engine/lib/user_settings.php +++ b/engine/lib/user_settings.php @@ -346,6 +346,13 @@ function usersettings_init() {  	elgg_register_plugin_hook_handler('usersettings:save', 'user', 'users_settings_save');  	elgg_register_action("usersettings/save"); + +	// extend the account settings form +	elgg_extend_view('forms/account/settings', 'core/settings/account/name', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/password', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/email', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/language', 100); +	elgg_extend_view('forms/account/settings', 'core/settings/account/default_access', 100);  }  elgg_register_event_handler('init', 'system', 'usersettings_init'); diff --git a/engine/lib/users.php b/engine/lib/users.php index 3a86c1faa..1b3cca799 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1021,7 +1021,7 @@ function elgg_get_user_validation_status($user_guid) {  		return;  	} -	if ($md->value) { +	if ($md[0]->value) {  		return true;  	} @@ -1562,13 +1562,6 @@ function users_init() {  	elgg_register_widget_type('friends', elgg_echo('friends'), elgg_echo('friends:widget:description')); -	// extend the account settings form -	elgg_extend_view('forms/account/settings', 'core/settings/account/name', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/password', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/email', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/language', 100); -	elgg_extend_view('forms/account/settings', 'core/settings/account/default_access', 100); -  	// Register the user type  	elgg_register_entity_type('user', ''); diff --git a/engine/lib/views.php b/engine/lib/views.php index d3c9ff551..b938dd60e 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -1598,7 +1598,6 @@ function elgg_views_boot() {  	elgg_load_js('jquery');  	elgg_load_js('jquery-ui'); -	elgg_load_js('jquery.form');  	elgg_load_js('elgg');  	elgg_register_simplecache_view('js/lightbox');  | 
