diff options
193 files changed, 1375 insertions, 709 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 2df4d2637..fb5870700 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,80 @@ +Version 1.8.1b +(October 11, 2011 from git://github.com/Elgg/Elgg.git) + + Enhancements: + * New group activity widget for user dashboard. + * Added more sprites. + * version.php information cached instead of loaded 100s of times. + * Added class elgg-autofocus to add focus on inputs when the page loads. + * Admins can edit user avatars again. + * Added a filter for non-bundled plugins in plugin admin. + * Improvements to admin area theme. + + Bugfixes: + * Fixed site dropdown menu for IE. + * ElggEntity->deleteMetadata() no longer deletes all metadata ever if + called on an unsaved entity. + * Fixed Embed plugin. + * Fixed activate and deactivate all plugins. + * Fixed URL for group membership request in notification email. + * Fixed log browser plugin's admin area display. + * Fixed RSS icon not showing up on some pages. + * Fixed river entries for forum posts that were lost if upgrading from 1.7. + * Better displaying of errors when activating, deactivating, or + reordering plugins. + * Fixed Developer Plugin's inspection tool. + * Fixed avatar cropping on IE 7. + * Bookmarks plugin accepts URLs with dashes. + * "More" menu item on site menu hidden if items are manually specified. + * Fixed hover menu floating if unrestrained. + * JS init, system fired when DOM and languages are read. + * Fixed the date picker input view. + * Fixed stack overflow when calling elgg_view() from a pagesetup + event. + * Menu links no longer have empty titles and confirm attributes. + * Fixed crash when attempting to change password to an invalid value. + * Fixed "More groups" link for groups widget. + * Fixed output/confirmlink to use a default question if not specified. + * Added missing language strings. Also added "new", "add", and "create". + * Registered security token refresh page as external to avoid token refresh + problems on Walled Garden sites. + * Displaying more accurate message if uploading an avatar fails. + * "Leave group" button doesn't display for group owners. + * Request group membership button displays only when logged in. + * Fixed the number of displayed items for Bookmarks widget. + * Fixed fallback to deprecated views for widgets. + + API changes: + * Menus names must be unique to the entire menu, not just section. + * Input views that encode text use the option 'encode_text'. + * Added ElggPlugin->getFriendlyName(). + * elgg_view_icon() accepts a class. + * Added hook output:before, page. + * Added hook output:before, layout. + * elgg_get_entities() and related functions return false if passed + valid options with invalid values. + * Can disable the user hover menu by passing hover => false to + elgg_view_icon(). Previously it was override => true. + * Embed plugin uses menu system. See readme for embed plugin. + * Manifest attributes are no longer translated via elgg_echo(). + * Fixed livesearch ajax endpoint. + * Fixed site unit test. + * Unit tests tidy up after themselves better. + * forward() throws an exception if headers are already sent. + * Better errors if adding a user through admin area fails. + * Localized profile fields. + * Added 'is_trusted' parameter output/url to avoid escaping and filtering. + Defaults to false. + * Added elgg_unregister_action() + * Fixed ElggPriorityList::rewind(). + * Fixed forwarding after login for login-protected pages. + * get_site_by_url() respects class inheritance for subclassing ElggSite. + + Internal changes: + * Updated deprecated uses of internalname/id. + * Using wwwroot instead of www_root because of inconsistencies. + + Version 1.8.0 (Jackie) (September 5th, 2011 from git://github.com/Elgg/Elgg.git) diff --git a/actions/admin/plugins/simple_update_states.php b/actions/admin/plugins/simple_update_states.php deleted file mode 100644 index 7601013a7..000000000 --- a/actions/admin/plugins/simple_update_states.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/** - * Bulk activate/deactivate for plugins appearing in the "simple" interface. - * - * Plugins marked as using the "simple" interface can be activated/deactivated - * en masse by passing the plugins to activate as an array of their plugin guids - * in $_REQUEST['enabled_plugins']. All "simple" plugins not in this array will be - * deactivated. - * - * Simplecache and views cache are reset. - * - * @uses array $_REQUEST['activated_plugin_guids'] Array of plugin guids to activate. - * - * @since 1.8 - * @package Elgg.Core - * @subpackage Administration.Plugins - */ - -$active_plugin_guids = get_input('active_plugin_guids', array()); -$installed_plugins = elgg_get_plugins('any'); -$success = TRUE; - -foreach ($installed_plugins as $plugin) { - // this is only for simple plugins. - if ($plugin->getManifest()->getAdminInterface() != 'simple') { - continue; - } - - // only effect changes to plugins not already in that state. - if ($plugin->isActive() && !in_array($plugin->guid, $active_plugin_guids)) { - $success = $success && $plugin->deactivate(); - } elseif (!$plugin->isActive() && in_array($plugin->guid, $active_plugin_guids)) { - $success = $success && $plugin->activate(); - } -} - -if ($success) { - //system_message(elgg_echo('admin:plugins:simple_simple_success')); -} else { - register_error(elgg_echo('admin:plugins:simple_simple_fail')); -} - -// don't regenerate the simplecache because the plugin won't be -// loaded until next run. Just invalidate and let it regnerate as needed -elgg_invalidate_simplecache(); -elgg_filepath_cache_reset(); - -forward(REFERER);
\ No newline at end of file diff --git a/actions/useradd.php b/actions/useradd.php index be08b4be5..3df41af79 100644 --- a/actions/useradd.php +++ b/actions/useradd.php @@ -37,7 +37,7 @@ try { if ($guid) { $new_user = get_entity($guid); - if (($guid) && ($admin)) { + if ($uew_user && $admin && elgg_is_admin_logged_in()) { $new_user->makeAdmin(); } diff --git a/actions/widgets/save.php b/actions/widgets/save.php index 0a2de0c4d..dad48b30b 100644 --- a/actions/widgets/save.php +++ b/actions/widgets/save.php @@ -16,7 +16,12 @@ $widget = get_entity($guid); if ($widget && $widget->saveSettings($params)) { elgg_set_page_owner_guid($widget->getContainerGUID()); if (!$default_widgets) { - $view = "widgets/$widget->handler/content"; + if (elgg_view_exists("widgets/$widget->handler/content")) { + $view = "widgets/$widget->handler/content"; + } else { + elgg_deprecated_notice("widgets use content as the display view", 1.8); + $view = "widgets/$widget->handler/view"; + } echo elgg_view($view, array('entity' => $widget)); } } else { diff --git a/documentation/examples/plugins/manifest.xml b/documentation/examples/plugins/manifest.xml index 1602a7358..2a8a2bd5c 100644 --- a/documentation/examples/plugins/manifest.xml +++ b/documentation/examples/plugins/manifest.xml @@ -32,10 +32,6 @@ <category>admin</category> <category>api</category> - <on_enable>setup_function</on_enable> - <on_disable>teardown_function</on_disable> - <admin_interface>simple</admin_interface> - <requires> <type>php_extension</type> <name>gd</name> diff --git a/engine/classes/ElggAnnotation.php b/engine/classes/ElggAnnotation.php index 78d29ee7f..511b5151f 100644 --- a/engine/classes/ElggAnnotation.php +++ b/engine/classes/ElggAnnotation.php @@ -78,7 +78,7 @@ class ElggAnnotation extends ElggExtender { * @return bool */ function delete() { - remove_from_river_by_annotation($this->id); + elgg_delete_river(array('annotation_id' => $this->id)); return elgg_delete_metastring_based_object_by_id($this->id, 'annotations'); } diff --git a/engine/classes/ElggMenuItem.php b/engine/classes/ElggMenuItem.php index b9c81fd78..8ddb1ecd8 100644 --- a/engine/classes/ElggMenuItem.php +++ b/engine/classes/ElggMenuItem.php @@ -549,6 +549,10 @@ class ElggMenuItem { } } + if (!isset($vars['rel']) && !isset($vars['is_trusted'])) { + $vars['is_trusted'] = true; + } + if ($this->confirm) { $vars['confirm'] = $this->confirm; return elgg_view('output/confirmlink', $vars); diff --git a/engine/classes/ElggPlugin.php b/engine/classes/ElggPlugin.php index 4aee1e898..c4d6ec034 100644 --- a/engine/classes/ElggPlugin.php +++ b/engine/classes/ElggPlugin.php @@ -264,8 +264,6 @@ class ElggPlugin extends ElggObject { /** * Returns a plugin setting * - * @todo These need to be namespaced - * * @param string $name The setting name * @return mixed */ @@ -318,7 +316,6 @@ class ElggPlugin extends ElggObject { * Set a plugin setting for the plugin * * @todo This will only work once the plugin has a GUID. - * @todo These need to be namespaced. * * @param string $name The name to set * @param string $value The value to set @@ -329,13 +326,6 @@ class ElggPlugin extends ElggObject { if (!$this->guid) { return false; } - // Hook to validate setting - $value = elgg_trigger_plugin_hook('setting', 'plugin', array( - 'plugin_id' => $this->pluginID, - 'plugin' => $this, - 'name' => $name, - 'value' => $value - ), $value); return $this->set($name, $value); } @@ -902,7 +892,9 @@ class ElggPlugin extends ElggObject { } /** - * Save a value to private settings. + * Save a value as private setting or attribute. + * + * Attributes include title and description. * * @param string $name Name * @param mixed $value Value @@ -920,6 +912,14 @@ class ElggPlugin extends ElggObject { return true; } else { + // Hook to validate setting + $value = elgg_trigger_plugin_hook('setting', 'plugin', array( + 'plugin_id' => $this->pluginID, + 'plugin' => $this, + 'name' => $name, + 'value' => $value + ), $value); + return $this->setPrivateSetting($name, $value); } } diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php index 0e47f388d..eacc16455 100644 --- a/engine/classes/ElggPluginManifest.php +++ b/engine/classes/ElggPluginManifest.php @@ -555,24 +555,6 @@ class ElggPluginManifest { /** * Returns the admin interface to use. * - * @return string simple or advanced - */ - public function getAdminInterface() { - $interface = $this->parser->getAttribute('admin_interface'); - - switch ($interface) { - case 'simple': - case 'advanced': - return $interface; - - default: - return 'advanced'; - } - } - - /** - * Returns the admin interface to use. - * * @return bool */ public function getActivateOnInstall() { diff --git a/engine/classes/ElggPluginManifestParser18.php b/engine/classes/ElggPluginManifestParser18.php index db8b3dc6a..554e28c02 100644 --- a/engine/classes/ElggPluginManifestParser18.php +++ b/engine/classes/ElggPluginManifestParser18.php @@ -16,7 +16,7 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser { 'name', 'author', 'version', 'blurb', 'description', 'website', 'copyright', 'license', 'requires', 'suggests', 'screenshot', 'category', 'conflicts', 'provides', - 'admin_interface', 'activate_on_install' + 'activate_on_install' ); /** @@ -46,7 +46,6 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser { case 'website': case 'copyright': case 'license': - case 'admin_interface': case 'activate_on_install': $parsed[$element->name] = $element->content; break; diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php index 145f71fcd..d240af477 100644 --- a/engine/classes/ElggPluginPackage.php +++ b/engine/classes/ElggPluginPackage.php @@ -33,7 +33,9 @@ class ElggPluginPackage { */ private $textFiles = array( 'README.txt', 'CHANGES.txt', - 'INSTALL.txt', 'COPYRIGHT.txt', 'LICENSE.txt' + 'INSTALL.txt', 'COPYRIGHT.txt', 'LICENSE.txt', + + 'README', 'README.md', 'README.markdown' ); /** diff --git a/engine/classes/ElggPriorityList.php b/engine/classes/ElggPriorityList.php index aa33831ff..8a3b836a8 100644 --- a/engine/classes/ElggPriorityList.php +++ b/engine/classes/ElggPriorityList.php @@ -303,7 +303,7 @@ class ElggPriorityList */ public function rewind() { $this->sortIfUnsorted(); - return rewind($this->elements); + return reset($this->elements); } /** diff --git a/engine/classes/ElggSite.php b/engine/classes/ElggSite.php index 40bfca060..8708800cf 100644 --- a/engine/classes/ElggSite.php +++ b/engine/classes/ElggSite.php @@ -371,6 +371,7 @@ class ElggSite extends ElggEntity { elgg_register_plugin_hook_handler('index', 'system', 'elgg_walled_garden_index', 1); if (!$this->isPublicPage()) { + $_SESSION['last_forward_from'] = current_page_url(); register_error(elgg_echo('loggedinrequired')); forward(); } @@ -413,6 +414,8 @@ class ElggSite extends ElggEntity { 'resetpassword', 'action/user/requestnewpassword', 'action/user/passwordreset', + 'action/security/refreshtoken', + 'ajax/view/js/languages', 'upgrade\.php', 'xml-rpc\.php', 'mt/mt-xmlrpc\.cgi', diff --git a/engine/lib/access.php b/engine/lib/access.php index 1fe21861d..ae64f832a 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -1,9 +1,9 @@ <?php /** - * Primary function for Elgg's entity and metadata access systems. + * Functions for Elgg's access system for entities, metadata, and annotations. * * Access is generally saved in the database as access_id. This corresponds to - * one of the ACCESS_* constants defined in {@link elgglib.php}, or the ID of an + * one of the ACCESS_* constants defined in {@link elgglib.php} or the ID of an * access collection. * * @package Elgg.Core @@ -16,15 +16,16 @@ * * @uses get_access_array * - * @return string A list of access collections suitable for injection in an SQL call * @link http://docs.elgg.org/Access * @see get_access_array() * * @param int $user_id User ID; defaults to currently logged in user * @param int $site_id Site ID; defaults to current site - * @param bool $flush If set to true, will refresh the access list from the database + * @param bool $flush If set to true, will refresh the access list from the + * database rather than using this function's cache. * - * @return string + * @return string A list of access collections suitable for using in an SQL call + * @access private */ function get_access_list($user_id = 0, $site_id = 0, $flush = false) { global $CONFIG, $init_finished; @@ -56,20 +57,30 @@ function get_access_list($user_id = 0, $site_id = 0, $flush = false) { /** * Returns an array of access IDs a user is permitted to see. * - * Can be overridden with the access:collections:read, user plugin hook. + * Can be overridden with the 'access:collections:read', 'user' plugin hook. + * + * This returns a list of all the collection ids a user owns or belongs + * to plus public and logged in access levels. If the user is an admin, it includes + * the private access level. + * + * @internal this is only used in core for creating the SQL where clause when + * retrieving content from the database. The friends access level is handled by + * get_access_sql_suffix(). * - * @param int $user_id User ID; defaults to currently logged in user - * @param int $site_id Site ID; defaults to current site - * @param boolean $flush If set to true, will refresh the access list from the database + * @see get_write_access_array() for the access levels that a user can write to. + * + * @param int $user_id User ID; defaults to currently logged in user + * @param int $site_id Site ID; defaults to current site + * @param bool $flush If set to true, will refresh the access ids from the + * database rather than using this function's cache. * * @return array An array of access collections ids - * @see get_access_list() */ function get_access_array($user_id = 0, $site_id = 0, $flush = false) { global $CONFIG, $init_finished; // @todo everything from the db is cached. - // this cache might be redundant. But cache is flushed on every db write. + // this cache might be redundant. But db cache is flushed on every db write. static $access_array; if (!isset($access_array) || (!isset($init_finished)) || (!$init_finished)) { @@ -103,7 +114,7 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) { if ($collections = get_data($query)) { foreach ($collections as $collection) { if (!empty($collection->access_collection_id)) { - $tmp_access_array[] = $collection->access_collection_id; + $tmp_access_array[] = (int)$collection->access_collection_id; } } } @@ -115,7 +126,7 @@ function get_access_array($user_id = 0, $site_id = 0, $flush = false) { if ($collections = get_data($query)) { foreach ($collections as $collection) { if (!empty($collection->id)) { - $tmp_access_array[] = $collection->id; + $tmp_access_array[] = (int)$collection->id; } } } @@ -180,11 +191,9 @@ $ENTITY_SHOW_HIDDEN_OVERRIDE = false; /** * Show or hide disabled entities. * - * @access private - * * @param bool $show_hidden Show disabled entities. - * * @return void + * @access private */ function access_show_hidden_entities($show_hidden) { global $ENTITY_SHOW_HIDDEN_OVERRIDE; @@ -194,8 +203,8 @@ function access_show_hidden_entities($show_hidden) { /** * Return current status of showing disabled entities. * - * @access private * @return bool + * @access private */ function access_get_show_hidden_status() { global $ENTITY_SHOW_HIDDEN_OVERRIDE; @@ -203,48 +212,11 @@ function access_get_show_hidden_status() { } /** - * Add annotation restriction - * - * Returns an SQL fragment that is true (or optionally false) if the given user has - * added an annotation with the given name to the given entity. - * - * @todo This is fairly generic so perhaps it could be moved to annotations.php - * - * @param string $annotation_name Name of the annotation - * @param string $entity_guid SQL GUID of entity the annotation is attached to. - * @param string $owner_guid SQL string that evaluates to the GUID of the annotation owner - * @param boolean $exists If true, returns BOOL if the annotation exists - * - * @return string An SQL fragment suitable for inserting into a WHERE clause - * @todo Document and maybe even remove. At least rename to something that makes sense. - */ -function get_annotation_sql($annotation_name, $entity_guid, $owner_guid, $exists) { - global $CONFIG; - - if ($exists) { - $not = ''; - } else { - $not = 'NOT'; - } - - $sql = <<<END -$not EXISTS (SELECT * FROM {$CONFIG->dbprefix}annotations a -INNER JOIN {$CONFIG->dbprefix}metastrings ms ON (a.name_id = ms.id) -WHERE ms.string = '$annotation_name' -AND a.entity_guid = $entity_guid -AND a.owner_guid = $owner_guid) -END; - return $sql; -} - -/** * Returns the SQL where clause for a table with a access_id and enabled columns. * - * This handles returning where clauses for ACCESS_FRIENDS, and the currently - * unused block and filter lists. - * - * @warning If an admin is logged in or {@link elgg_set_ignore_access()} is true, - * this will return blank. + * This handles returning where clauses for ACCESS_FRIENDS and the currently + * unused block and filter lists in addition to using get_access_list() for + * access collections and the standard access levels. * * @param string $table_prefix Optional table. prefix for the access code. * @param int $owner The guid to check access for. Defaults to logged in user. @@ -260,7 +232,7 @@ function get_access_sql_suffix($table_prefix = '', $owner = null) { $enemies_bit = ""; if ($table_prefix) { - $table_prefix = sanitise_string($table_prefix) . "."; + $table_prefix = sanitise_string($table_prefix) . "."; } if (!isset($owner)) { @@ -277,6 +249,7 @@ function get_access_sql_suffix($table_prefix = '', $owner = null) { if ($ignore_access) { $sql = " (1 = 1) "; } else if ($owner != -1) { + // we have an entity's guid and auto check for friend relationships $friends_bit = "{$table_prefix}access_id = " . ACCESS_FRIENDS . " AND {$table_prefix}owner_guid IN ( SELECT guid_one FROM {$CONFIG->dbprefix}entity_relationships @@ -285,14 +258,15 @@ function get_access_sql_suffix($table_prefix = '', $owner = null) { $friends_bit = '(' . $friends_bit . ') OR '; + // @todo untested and unsupported at present if ((isset($CONFIG->user_block_and_filter_enabled)) && ($CONFIG->user_block_and_filter_enabled)) { // check to see if the user is in the entity owner's block list // or if the entity owner is in the user's filter list // if so, disallow access - $enemies_bit = get_annotation_sql('elgg_block_list', "{$table_prefix}owner_guid", $owner, false); + $enemies_bit = get_access_restriction_sql('elgg_block_list', "{$table_prefix}owner_guid", $owner, false); $enemies_bit = '(' . $enemies_bit - . ' AND ' . get_annotation_sql('elgg_filter_list', $owner, "{$table_prefix}owner_guid", false) + . ' AND ' . get_access_restriction_sql('elgg_filter_list', $owner, "{$table_prefix}owner_guid", false) . ')'; } } @@ -319,19 +293,59 @@ function get_access_sql_suffix($table_prefix = '', $owner = null) { } /** - * Can $user access $entity. + * Get the where clause for an access restriction based on annotations + * + * Returns an SQL fragment that is true (or optionally false) if the given user has + * added an annotation with the given name to the given entity. + * + * @warning this is a private function for an untested capability and will likely + * be removed from a future version of Elgg. + * + * @param string $annotation_name Name of the annotation + * @param string $entity_guid SQL GUID of entity the annotation is attached to. + * @param string $owner_guid SQL string that evaluates to the GUID of the annotation owner + * @param boolean $exists If true, returns BOOL if the annotation exists + * + * @return string An SQL fragment suitable for inserting into a WHERE clause + * @access private + */ +function get_access_restriction_sql($annotation_name, $entity_guid, $owner_guid, $exists) { + global $CONFIG; + + if ($exists) { + $not = ''; + } else { + $not = 'NOT'; + } + + $sql = <<<END +$not EXISTS (SELECT * FROM {$CONFIG->dbprefix}annotations a +INNER JOIN {$CONFIG->dbprefix}metastrings ms ON (a.name_id = ms.id) +WHERE ms.string = '$annotation_name' +AND a.entity_guid = $entity_guid +AND a.owner_guid = $owner_guid) +END; + return $sql; +} + +/** + * Can a user access an entity. * * @warning If a logged in user doesn't have access to an entity, the * core engine will not load that entity. * - * @tip This is mostly useful for checking if a 3rd user has access - * to an entity that is currently loaded. + * @tip This is mostly useful for checking if a user other than the logged in + * user has access to an entity that is currently loaded. + * + * @todo This function would be much more useful if we could pass the guid of the + * entity to test access for. We need to be able to tell whether the entity exists + * and whether the user has access to the entity. * * @param ElggEntity $entity The entity to check access for. * @param ElggUser $user Optionally user to check access for. Defaults to - * logged in user (which doesn't make sense). + * logged in user (which is a useless default). * - * @return boolean True if the user can access the entity + * @return bool * @link http://docs.elgg.org/Access */ function has_access_to_entity($entity, $user = null) { @@ -354,12 +368,27 @@ function has_access_to_entity($entity, $user = null) { } /** - * Returns an array of access permissions that the user is allowed to save objects with. - * Permissions are of the form ('id' => 'Description') + * Returns an array of access permissions that the user is allowed to save content with. + * Permissions returned are of the form (id => 'name'). + * + * Example return value in English: + * array( + * 0 => 'Private', + * -2 => 'Friends', + * 1 => 'Logged in users', + * 2 => 'Public', + * 34 => 'My favorite friends', + * ); + * + * Plugin hook of 'access:collections:write', 'user' + * + * @warning this only returns access collections that the user owns plus the + * standard access levels. It does not return access collections that the user + * belongs to such as the access collection for a group. * * @param int $user_id The user's GUID. * @param int $site_id The current site. - * @param bool $flush If this is set to true, this will ignore any cached version + * @param bool $flush If this is set to true, this will ignore a cached access array * * @return array List of access permissions * @link http://docs.elgg.org/Access @@ -384,15 +413,18 @@ function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) { $query = "SELECT ag.* FROM {$CONFIG->dbprefix}access_collections ag "; $query .= " WHERE (ag.site_guid = {$site_id} OR ag.site_guid = 0)"; $query .= " AND (ag.owner_guid = {$user_id})"; + // ACCESS_PRIVATE through ACCESS_PUBLIC take 0 through 2 + // @todo this AND clause is unnecessary because of id starts at 3 for table $query .= " AND ag.id >= 3"; $tmp_access_array = array( - ACCESS_PRIVATE => elgg_echo("PRIVATE"), - ACCESS_FRIENDS => elgg_echo("access:friends:label"), - ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"), - ACCESS_PUBLIC => elgg_echo("PUBLIC") - ); - if ($collections = get_data($query)) { + ACCESS_PRIVATE => elgg_echo("PRIVATE"), + ACCESS_FRIENDS => elgg_echo("access:friends:label"), + ACCESS_LOGGED_IN => elgg_echo("LOGGED_IN"), + ACCESS_PUBLIC => elgg_echo("PUBLIC") + ); + $collections = get_data($query); + if ($collections) { foreach ($collections as $collection) { $tmp_access_array[$collection->id] = $collection->name; } @@ -410,11 +442,11 @@ function get_write_access_array($user_id = 0, $site_id = 0, $flush = false) { return $tmp_access_array; } - /** - * Can the user write to the access collection? + * Can the user change this access collection? * - * Hook into the access:collections:write, user to change this. + * Use the plugin hook of 'access:collections:write', 'user' to change this. + * @see get_write_access_array() for details on the hook. * * Respects access control disabling for admin users and {@see elgg_set_ignore_access()} * @@ -428,7 +460,7 @@ function can_edit_access_collection($collection_id, $user_guid = null) { if ($user_guid) { $user = get_entity((int) $user_guid); } else { - $user = get_loggedin_user(); + $user = elgg_get_logged_in_user_entity(); } $collection = get_access_collection($collection_id); @@ -453,6 +485,8 @@ function can_edit_access_collection($collection_id, $user_guid = null) { * Access colletions allow plugins and users to create granular access * for entities. * + * Triggers plugin hook 'access:collections:addcollection', 'collection' + * * @internal Access collections are stored in the access_collections table. * Memberships to collections are in access_collections_membership. * @@ -460,7 +494,7 @@ function can_edit_access_collection($collection_id, $user_guid = null) { * @param int $owner_guid The GUID of the owner (default: currently logged in user). * @param int $site_guid The GUID of the site (default: current site). * - * @return int|false Depending on success (the collection ID if successful). + * @return int|false The collection ID if successful and false on failure. * @link http://docs.elgg.org/Access/Collections * @see update_access_collection() * @see delete_access_collection() @@ -485,7 +519,8 @@ function create_access_collection($name, $owner_guid = 0, $site_guid = 0) { SET name = '{$name}', owner_guid = {$owner_guid}, site_guid = {$site_guid}"; - if (!$id = insert_data($q)) { + $id = insert_data($q); + if (!$id) { return false; } @@ -504,7 +539,7 @@ function create_access_collection($name, $owner_guid = 0, $site_guid = 0) { * Updates the membership in an access collection. * * @warning Expects a full list of all members that should - * be part o the access collection + * be part of the access collection * * @note This will run all hooks associated with adding or removing * members to access collections. @@ -512,7 +547,7 @@ function create_access_collection($name, $owner_guid = 0, $site_guid = 0) { * @param int $collection_id The ID of the collection. * @param array $members Array of member GUIDs * - * @return true|false Depending on success + * @return bool * @link http://docs.elgg.org/Access/Collections * @see add_user_to_access_collection() * @see remove_user_from_access_collection() @@ -585,6 +620,8 @@ function delete_access_collection($collection_id) { * @note This doesn't return the members of an access collection, * just the database row of the actual collection. * + * @see get_members_of_access_collection() + * * @param int $collection_id The collection ID * * @return object|false @@ -602,15 +639,15 @@ function get_access_collection($collection_id) { /** * Adds a user to an access collection. * - * Emits the access:collections:add_user, collection plugin hook. + * Triggers the 'access:collections:add_user', 'collection' plugin hook. * * @param int $user_guid The GUID of the user to add * @param int $collection_id The ID of the collection to add them to * - * @return true|false Depending on success - * @link http://docs.elgg.org/Access/Collections + * @return bool * @see update_access_collection() * @see remove_user_from_access_collection() + * @link http://docs.elgg.org/Access/Collections */ function add_user_to_access_collection($user_guid, $collection_id) { global $CONFIG; @@ -635,27 +672,25 @@ function add_user_to_access_collection($user_guid, $collection_id) { return false; } - try { - $q = "INSERT INTO {$CONFIG->dbprefix}access_collection_membership - SET access_collection_id = {$collection_id}, - user_guid = {$user_guid}"; - insert_data($q); - } catch (DatabaseException $e) { - return false; - } + $q = "INSERT INTO {$CONFIG->dbprefix}access_collection_membership + SET access_collection_id = {$collection_id}, user_guid = {$user_guid}"; + $result = insert_data($q); - return true; + return $result !== false; } /** * Removes a user from an access collection. * - * Emits the access:collections:remove_user, collection plugin hook. + * Triggers the 'access:collections:remove_user', 'collection' plugin hook. * * @param int $user_guid The user GUID * @param int $collection_id The access collection ID * - * @return true|false Depending on success + * @return bool + * @see update_access_collection() + * @see remove_user_from_access_collection() + * @link http://docs.elgg.org/Access/Collections */ function remove_user_from_access_collection($user_guid, $collection_id) { global $CONFIG; @@ -751,32 +786,13 @@ function get_members_of_access_collection($collection, $idonly = FALSE) { } /** - * Displays a user's access collections, using the core/friends/collections view - * - * @param int $owner_guid The GUID of the owning user - * - * @return string A formatted rendition of the collections - * @todo Move to the friends/collection.php page. - */ -function elgg_view_access_collections($owner_guid) { - if ($collections = get_user_access_collections($owner_guid)) { - foreach ($collections as $key => $collection) { - $collections[$key]->members = get_members_of_access_collection($collection->id, true); - $collections[$key]->entities = get_user_friends($owner_guid, "", 9999); - } - } - - return elgg_view('core/friends/collections', array('collections' => $collections)); -} - -/** * Return entities based upon access id. * - * @param array $options Any options accepted by {@link elgg_get_entities()} and: + * @param array $options Any options accepted by {@link elgg_get_entities()} and * access_id => int The access ID of the entity. * * @see elgg_get_entities() - * @return mixed if count, int. if not count, array or false if no entities. false also on errors. + * @return mixed if count, int. if not count, array. false on errors. * @since 1.7.0 */ function elgg_get_entities_from_access_id(array $options = array()) { @@ -809,7 +825,7 @@ function elgg_get_entities_from_access_id(array $options = array()) { * @see elgg_list_entities() * @see elgg_get_entities_from_access_id() * - * @return str + * @return string */ function elgg_list_entities_from_access_id(array $options = array()) { return elgg_list_entities($options, 'elgg_get_entities_from_access_id'); @@ -821,15 +837,15 @@ function elgg_list_entities_from_access_id(array $options = array()) { * * @warning This function probably doesn't work how it's meant to. * - * @param int $entity_accessid The entity's access id + * @param int $entity_access_id The entity's access id * - * @return string e.g. Public, Private etc + * @return string 'Public', 'Private', etc. or false if error. * @since 1.7.0 * @todo I think this probably wants get_access_array() instead of get_write_access_array(), * but those two functions return different types of arrays. */ -function get_readable_access_level($entity_accessid) { - $access = (int) $entity_accessid; +function get_readable_access_level($entity_access_id) { + $access = (int) $entity_access_id; //get the access level for object in readable string $options = get_write_access_array(); @@ -851,13 +867,13 @@ function get_readable_access_level($entity_accessid) { * The access system will not return entities in any getter * functions if the user doesn't have access. * - * @internal For performance reasons this is done at the database level. + * @internal For performance reasons this is done at the database access clause level. * * @tip Use this to access entities in automated scripts * when no user is logged in. * - * @warning This will not show disabled entities. Use {@link $ENTITY_SHOW_HIDDEN_OVERRIDE} - * for that. + * @warning This will not show disabled entities. + * Use {@link access_show_hidden_entities()} to access disabled entities. * * @param bool $ignore If true, disables all access checks. * @@ -884,17 +900,20 @@ function elgg_get_ignore_access() { } /** - * Decides if the access system is being ignored. + * Decides if the access system should be ignored for a user. * - * The access system can be ignored if 1) an admin user is logged in - * or 2) {@link elgg_set_ignore_access()} was called with true. + * Returns true (meaning ignore access) if either of these 2 conditions are true: + * 1) an admin user guid is passed to this function. + * 2) {@link elgg_get_ignore_access()} returns true. * - * @param mixed $user_guid The user to check against. Defaults to logged in. + * @see elgg_set_ignore_access() + * + * @param int $user_guid The user to check against. * * @return bool * @since 1.7.0 */ -function elgg_check_access_overrides($user_guid = null) { +function elgg_check_access_overrides($user_guid = 0) { if (!$user_guid || $user_guid <= 0) { $is_admin = false; } else { @@ -907,6 +926,7 @@ function elgg_check_access_overrides($user_guid = null) { /** * Returns the ElggAccess object. * + * // @todo comment is incomplete * This is used to * * @return ElggAccess @@ -946,16 +966,20 @@ function access_init() { } /** - * Check if the access system should be overridden. + * Overrides the access system if appropriate. * * Allows admin users and calls after {@link elgg_set_ignore_access} to - * by pass the access system. + * bypass the access system. + * + * Registered for the 'permissions_check', 'all' and the + * 'container_permissions_check', 'all' plugin hooks. + * + * Returns true to override the access system or null if no change is needed. * * @return true|null - * @since 1.7.0 - * @elgg_event_handler permissions_check all + * @access private */ -function elgg_override_permissions_hook($hook, $type, $value, $params) { +function elgg_override_permissions($hook, $type, $value, $params) { $user = elgg_extract('user', $params); if (!$user) { $user = elgg_get_logged_in_user_entity(); @@ -984,6 +1008,7 @@ function elgg_override_permissions_hook($hook, $type, $value, $params) { /** * Runs unit tests for the entities object. + * @access private */ function access_test($hook, $type, $value, $params) { global $CONFIG; @@ -995,7 +1020,7 @@ function access_test($hook, $type, $value, $params) { elgg_register_event_handler('init', 'system', 'access_init', 9999); // For overrided permissions -elgg_register_plugin_hook_handler('permissions_check', 'all', 'elgg_override_permissions_hook'); -elgg_register_plugin_hook_handler('container_permissions_check', 'all', 'elgg_override_permissions_hook'); +elgg_register_plugin_hook_handler('permissions_check', 'all', 'elgg_override_permissions'); +elgg_register_plugin_hook_handler('container_permissions_check', 'all', 'elgg_override_permissions'); elgg_register_plugin_hook_handler('unit_test', 'system', 'access_test');
\ No newline at end of file diff --git a/engine/lib/actions.php b/engine/lib/actions.php index 99e22e104..f415842ab 100644 --- a/engine/lib/actions.php +++ b/engine/lib/actions.php @@ -2,21 +2,23 @@ /** * Elgg Actions * - * Actions are the primary controllers (The C in MVC) in Elgg. They are - * registered by {@link register_elgg_action()} and are called either by URL - * http://elggsite.org/action/action_name or {@link action($action_name}. For - * URLs, a rewrite rule in .htaccess passes the action name to - * engine/handlers/action_handler.php, which dispatches the action. + * Actions are one of the primary controllers (The C in MVC) in Elgg. They are + * registered by {@link register_elgg_action()} and are called by URL + * http://elggsite.org/action/action_name. For URLs, a rewrite rule in + * .htaccess passes the action name to engine/handlers/action_handler.php, + * which dispatches the request for the action. * - * An action name should be registered to exactly one file in the system, usually under - * the actions/ directory. + * An action name must be registered to a file in the system. Core actions are + * found in /actions/ and plugin actions are usually under /mod/<plugin>/actions/. + * It is recommended that actions be namespaced to avoid collisions. * * All actions require security tokens. Using the {@elgg_view input/form} view - * will automatically add tokens as hidden inputs. To manually add hidden inputs, - * use the {@elgg_view input/securitytoken} view. + * will automatically add tokens as hidden inputs as will the elgg_view_form() + * function. To manually add hidden inputs, use the {@elgg_view input/securitytoken} view. * * To include security tokens for actions called via GET, use - * {@link elgg_add_security_tokens_to_url()}. + * {@link elgg_add_security_tokens_to_url()} or specify is_action as true when + * using {@lgg_view output/url}. * * Action tokens can be manually generated by using {@link generate_action_token()}. * @@ -31,30 +33,30 @@ */ /** -* Perform an action. -* -* This function executes the action with name $action as -* registered by {@link elgg_register_action()}. -* -* The plugin hook action, $action_name will be emitted before -* the action is executed. If a handler returns false, it will -* prevent the action from being called. -* -* @note If an action isn't registered in the system or is registered -* to an unavailable file the user will be forwarded to the site front -* page and an error will be emitted via {@link register_error()}. -* -* @warning All actions require {@link http://docs.elgg.org/Actions/Tokens Action Tokens}. -* @warning Most plugin shouldn't call this manually. -* -* @param string $action The requested action -* @param string $forwarder Optionally, the location to forward to -* -* @link http://docs.elgg.org/Actions -* @see elgg_register_action() -* -* @return void -*/ + * Perform an action. + * + * This function executes the action with name $action as registered + * by {@link elgg_register_action()}. + * + * The plugin hook 'action', $action_name will be triggered before the action + * is executed. If a handler returns false, it will prevent the action script + * from being called. + * + * @note If an action isn't registered in the system or is registered + * to an unavailable file the user will be forwarded to the site front + * page and an error will be emitted via {@link register_error()}. + * + * @warning All actions require {@link http://docs.elgg.org/Actions/Tokens Action Tokens}. + * + * @param string $action The requested action + * @param string $forwarder Optionally, the location to forward to + * + * @link http://docs.elgg.org/Actions + * @see elgg_register_action() + * + * @return void + * @access private + */ function action($action, $forwarder = "") { global $CONFIG; @@ -123,9 +125,8 @@ function action($action, $forwarder = "") { /** * Registers an action. * - * Actions are registered to a single file in the system and are executed - * either by the URL http://elggsite.org/action/action_name or by calling - * {@link action()}. + * Actions are registered to a script in the system and are executed + * either by the URL http://elggsite.org/action/action_name/. * * $filename must be the full path of the file to register, or a path relative * to the core actions/ dir. @@ -137,8 +138,7 @@ function action($action, $forwarder = "") { * * @tip Put action files under the actions/<plugin_name> directory of your plugin. * - * @tip You don't need to include engine/start.php, call {@link gatekeeper()}, - * or call {@link admin_gatekeeper()}. + * @tip You don't need to include engine/start.php in your action files. * * @internal Actions are saved in $CONFIG->actions as an array in the form: * <code> @@ -151,13 +151,13 @@ function action($action, $forwarder = "") { * @param string $action The name of the action (eg "register", "account/settings/save") * @param string $filename Optionally, the filename where this action is located. If not specified, * will assume the action is in elgg/actions/<action>.php - * @param string $access Who is allowed to execute this action: admin, public, or logged_in. + * @param string $access Who is allowed to execute this action: public, logged_in, admin. * (default: logged_in) * * @see action() * @see http://docs.elgg.org/Actions * - * @return true + * @return bool */ function elgg_register_action($action, $filename = "", $access = 'logged_in') { global $CONFIG; @@ -187,16 +187,31 @@ function elgg_register_action($action, $filename = "", $access = 'logged_in') { } /** + * Unregisters an action + * + * @param string $action Action name + * @return bool + * @since 1.8.1 + */ +function elgg_unregister_action($action) { + global $CONFIG; + + if (isset($CONFIG->actions[$action])) { + unset($CONFIG->actions[$action]); + return true; + } else { + return false; + } +} + +/** * Validate an action token. * - * Calls to actions will automatically validate tokens. - * If tokens are not present or invalid, the action will be - * denied and the user will be redirected to the front page. + * Calls to actions will automatically validate tokens. If tokens are not + * present or invalid, the action will be denied and the user will be redirected. * * Plugin authors should never have to manually validate action tokens. * - * @access private - * * @param bool $visibleerrors Emit {@link register_error()} errors on failure? * @param mixed $token The token to test against. Default: $_REQUEST['__elgg_token'] * @param mixed $ts The time stamp to test against. Default: $_REQUEST['__elgg_ts'] @@ -204,6 +219,7 @@ function elgg_register_action($action, $filename = "", $access = 'logged_in') { * @return bool * @see generate_action_token() * @link http://docs.elgg.org/Actions/Tokens + * @access private */ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL) { global $CONFIG; @@ -265,17 +281,17 @@ function validate_action_token($visibleerrors = TRUE, $token = NULL, $ts = NULL) } /** -* Validates the presence of action tokens. -* -* This function is called for all actions. If action tokens are missing, -* the user will be forwarded to the site front page and an error emitted. -* -* This function verifies form input for security features (like a generated token), and forwards -* the page if they are invalid. -* -* @access private -* @return mixed True if valid, or redirects to front page and exists. -*/ + * Validates the presence of action tokens. + * + * This function is called for all actions. If action tokens are missing, + * the user will be forwarded to the site front page and an error emitted. + * + * This function verifies form input for security features (like a generated token), + * and forwards if they are invalid. + * + * @return mixed True if valid or redirects. + * @access private + */ function action_gatekeeper() { if (validate_action_token()) { return TRUE; @@ -301,6 +317,7 @@ function action_gatekeeper() { * @example actions/manual_tokens.php * * @return string|false + * @access private */ function generate_action_token($timestamp) { $site_secret = get_site_secret(); @@ -352,7 +369,7 @@ function get_site_secret() { } /** - * Check if an action is registered and its file exists. + * Check if an action is registered and its script exists. * * @param string $action Action name * @@ -366,21 +383,10 @@ function elgg_action_exists($action) { } /** - * Initialize some ajaxy actions features - */ -function actions_init() { - elgg_register_action('security/refreshtoken', '', 'public'); - - elgg_register_simplecache_view('js/languages/en'); - - elgg_register_plugin_hook_handler('action', 'all', 'ajax_action_hook'); - elgg_register_plugin_hook_handler('forward', 'all', 'ajax_forward_hook'); -} - -/** * Checks whether the request was requested via ajax * * @return bool whether page was requested via ajax + * @since 1.8.0 */ function elgg_is_xhr() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) @@ -409,7 +415,8 @@ function elgg_is_xhr() { * @param string $type * @param string $reason * @param array $params - * + * @return void + * @access private */ function ajax_forward_hook($hook, $type, $reason, $params) { if (elgg_is_xhr()) { @@ -464,6 +471,8 @@ function ajax_forward_hook($hook, $type, $reason, $params) { /** * Buffer all output echo'd directly in the action for inclusion in the returned JSON. + * @return void + * @access private */ function ajax_action_hook() { if (elgg_is_xhr()) { @@ -471,4 +480,17 @@ function ajax_action_hook() { } } +/** + * Initialize some ajaxy actions features + * @access private + */ +function actions_init() { + elgg_register_action('security/refreshtoken', '', 'public'); + + elgg_register_simplecache_view('js/languages/en'); + + elgg_register_plugin_hook_handler('action', 'all', 'ajax_action_hook'); + elgg_register_plugin_hook_handler('forward', 'all', 'ajax_forward_hook'); +} + elgg_register_event_handler('init', 'system', 'actions_init'); diff --git a/engine/lib/admin.php b/engine/lib/admin.php index 93ee43008..ae6429baf 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -212,8 +212,8 @@ function elgg_register_admin_menu_item($section, $menu_id, $parent_id = NULL, $p /** * Initialize the admin backend. - * * @return void + * @access private */ function admin_init() { elgg_register_action('admin/user/ban', '', 'admin'); @@ -230,8 +230,6 @@ function admin_init() { elgg_register_action('admin/delete_admin_notice', '', 'admin'); - elgg_register_action('admin/plugins/simple_update_states', '', 'admin'); - elgg_register_action('profile/fields/reset', '', 'admin'); elgg_register_action('profile/fields/add', '', 'admin'); elgg_register_action('profile/fields/edit', '', 'admin'); @@ -366,6 +364,7 @@ function elgg_admin_add_plugin_settings_menu() { * * @return void * @since 1.8.0 + * @access private */ function elgg_admin_sort_page_menu($hook, $type, $return, $params) { $configure_items = $return['configure']; @@ -429,6 +428,7 @@ function admin_pagesetup() { * @param array $page Array of pages * * @return void + * @access private */ function admin_settings_page_handler($page) { @@ -486,6 +486,7 @@ function admin_settings_page_handler($page) { * * @param array $pages The pages array * @return true + * @access private */ function admin_plugin_screenshot_page_handler($pages) { // only admins can use this for security @@ -540,6 +541,7 @@ function admin_plugin_screenshot_page_handler($pages) { * * LICENSE.txt * * @param type $page + * @access private */ function admin_markdown_page_handler($pages) { admin_gatekeeper(); @@ -600,6 +602,7 @@ function admin_markdown_page_handler($pages) { * Adds default admin widgets to the admin dashboard. * * @return void + * @access private */ function elgg_add_admin_widgets($event, $type, $user) { elgg_set_ignore_access(true); diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php index 14893aee6..66c6454c3 100644 --- a/engine/lib/annotations.php +++ b/engine/lib/annotations.php @@ -13,6 +13,7 @@ * @param stdClass $row Db row result object * * @return ElggAnnotation + * @access private */ function row_to_elggannotation($row) { if (!($row instanceof stdClass)) { @@ -55,14 +56,14 @@ function elgg_delete_annotation_by_id($id) { * @param int $entity_guid Entity Guid * @param string $name Name of annotation * @param string $value Value of annotation - * @param string $value_type Type of value - * @param int $owner_guid Owner of annotation + * @param string $value_type Type of value (default is auto detection) + * @param int $owner_guid Owner of annotation (default is logged in user) * @param int $access_id Access level of annotation * * @return int|bool id on success or false on failure */ -function create_annotation($entity_guid, $name, $value, $value_type, -$owner_guid, $access_id = ACCESS_PRIVATE) { +function create_annotation($entity_guid, $name, $value, $value_type = '', +$owner_guid = 0, $access_id = ACCESS_PRIVATE) { global $CONFIG; $result = false; @@ -213,7 +214,7 @@ function elgg_get_annotations(array $options = array()) { * * @param array $options An options array. {@See elgg_get_annotations()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_delete_annotations(array $options) { if (!elgg_is_valid_options_for_batch_operation($options, 'annotations')) { @@ -231,7 +232,7 @@ function elgg_delete_annotations(array $options) { * * @param array $options An options array. {@See elgg_get_annotations()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_disable_annotations(array $options) { if (!elgg_is_valid_options_for_batch_operation($options, 'annotations')) { @@ -249,7 +250,7 @@ function elgg_disable_annotations(array $options) { * * @param array $options An options array. {@See elgg_get_annotations()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_enable_annotations(array $options) { if (!$options || !is_array($options)) { @@ -267,7 +268,7 @@ function elgg_enable_annotations(array $options) { * {@see elgg_get_annotations()} and {@see elgg_list_entities()}. * * @return string The list of entities - * @since 1.8 + * @since 1.8.0 */ function elgg_list_annotations($options) { $defaults = array( @@ -288,7 +289,7 @@ function elgg_list_annotations($options) { * Returns entities based upon annotations. Also accepts all options available * to elgg_get_entities() and elgg_get_entities_from_metadata(). * - * Entity creation time is selected as max_time. To sort based upon + * Entity creation time is selected as maxtime. To sort based upon * this, pass 'order_by' => 'maxtime asc' || 'maxtime desc' * * @see elgg_get_entities @@ -377,7 +378,7 @@ function elgg_get_entities_from_annotations(array $options = array()) { * @see elgg_get_entities_from_annotations() * @see elgg_list_entities() * - * @return str + * @return string */ function elgg_list_entities_from_annotations($options = array()) { return elgg_list_entities($options, 'elgg_get_entities_from_annotations'); @@ -449,6 +450,7 @@ function elgg_list_entities_from_annotation_calculation($options) { * @elgg_plugin_hook export all * * @return mixed + * @access private */ function export_annotation_plugin_hook($hook, $entity_type, $returnvalue, $params) { // Sanity check values @@ -545,6 +547,7 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'annotations_test'); /** * Register annotation unit tests + * @access private */ function annotations_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 11c95e78a..2bd3b2349 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -89,7 +89,7 @@ function elgg_filepath_cache_load($type) { * Uses the 'viewpath_cache_enabled' datalist with a boolean value. * Resets the views paths cache. * - * @return null + * @return void */ function elgg_enable_filepath_cache() { global $CONFIG; @@ -105,7 +105,7 @@ function elgg_enable_filepath_cache() { * Uses the 'viewpath_cache_enabled' datalist with a boolean value. * Resets the views paths cache. * - * @return null + * @return void */ function elgg_disable_filepath_cache() { global $CONFIG; @@ -325,4 +325,3 @@ function elgg_invalidate_simplecache() { return $return; } - diff --git a/engine/lib/calendar.php b/engine/lib/calendar.php index a882aedbe..9a06c5292 100644 --- a/engine/lib/calendar.php +++ b/engine/lib/calendar.php @@ -16,6 +16,7 @@ * @param int $year Year * * @return int + * @access private */ function get_day_start($day = null, $month = null, $year = null) { return mktime(0, 0, 0, $month, $day, $year); @@ -29,6 +30,7 @@ function get_day_start($day = null, $month = null, $year = null) { * @param int $year Year * * @return int + * @access private */ function get_day_end($day = null, $month = null, $year = null) { return mktime(23, 59, 59, $month, $day, $year); @@ -50,6 +52,7 @@ function get_day_end($day = null, $month = null, $year = null) { * @param mixed $container_guid Container or containers to get entities from (default: any). * * @return array|false + * @access private */ function get_notable_entities($start_time, $end_time, $type = "", $subtype = "", $owner_guid = 0, $order_by = "asc", $limit = 10, $offset = 0, $count = false, $site_guid = 0, @@ -197,6 +200,7 @@ $container_guid = null) { * @param bool $count If true, returns count instead of entities. (Default: false) * * @return int|array A list of entities, or a count if $count is set to true + * @access private */ function get_notable_entities_from_metadata($start_time, $end_time, $meta_name, $meta_value = "", $entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", @@ -326,6 +330,7 @@ $site_guid = 0, $count = false) { * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any * * @return array|int|false An array of entities, or the number of entities, or false on failure + * @access private */ function get_noteable_entities_from_relationship($start_time, $end_time, $relationship, $relationship_guid, $inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0, @@ -435,6 +440,7 @@ $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) { * @param mixed $container_guid Container(s) to get entities from (default: any). * * @return array|false + * @access private */ function get_todays_entities($type = "", $subtype = "", $owner_guid = 0, $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null) { @@ -461,6 +467,7 @@ $limit = 10, $offset = 0, $count = false, $site_guid = 0, $container_guid = null * @param bool $count If true, returns count instead of entities. (Default: false) * * @return int|array A list of entities, or a count if $count is set to true + * @access private */ function get_todays_entities_from_metadata($meta_name, $meta_value = "", $entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", $site_guid = 0, @@ -491,6 +498,7 @@ $count = false) { * @param int $site_guid Site to get entities for. Default 0 = current site. -1 = any * * @return array|int|false An array of entities, or the number of entities, or false on failure + * @access private */ function get_todays_entities_from_relationship($relationship, $relationship_guid, $inverse_relationship = false, $type = "", $subtype = "", $owner_guid = 0, @@ -520,6 +528,7 @@ $order_by = "", $limit = 10, $offset = 0, $count = false, $site_guid = 0) { * @param boolean $navigation Display pagination? Default: true * * @return string A viewable list of entities + * @access private */ function list_notable_entities($start_time, $end_time, $type= "", $subtype = "", $owner_guid = 0, $limit = 10, $fullview = true, $listtypetoggle = false, $navigation = true) { @@ -549,6 +558,7 @@ $limit = 10, $fullview = true, $listtypetoggle = false, $navigation = true) { * @param boolean $navigation Display pagination? Default: true * * @return string A viewable list of entities + * @access private */ function list_todays_entities($type= "", $subtype = "", $owner_guid = 0, $limit = 10, $fullview = true, $listtypetoggle = false, $navigation = true) { diff --git a/engine/lib/configuration.php b/engine/lib/configuration.php index 3a2364057..c6db515e8 100644 --- a/engine/lib/configuration.php +++ b/engine/lib/configuration.php @@ -168,6 +168,7 @@ function elgg_save_config($name, $value, $site_guid = 0) { * * @throws InstallationException * @return void + * @access private */ function verify_installation() { global $CONFIG; @@ -212,6 +213,7 @@ $DATALIST_CACHE = array(); * * @param string $name The name of the datalist * @return string|null|false String if value exists, null if doesn't, false on error + * @access private */ function datalist_get($name) { global $CONFIG, $DATALIST_CACHE; @@ -272,6 +274,7 @@ function datalist_get($name) { * @param string $value The new value * * @return bool + * @access private */ function datalist_set($name, $value) { global $CONFIG, $DATALIST_CACHE; @@ -402,6 +405,7 @@ function unset_config($name, $site_guid = 0) { * @todo Use "INSERT ... ON DUPLICATE KEY UPDATE" instead of trying to delete then add. * @see unset_config() * @see get_config() + * @access private */ function set_config($name, $value, $site_guid = 0) { global $CONFIG; @@ -443,6 +447,7 @@ function set_config($name, $value, $site_guid = 0) { * @return mixed|null * @see set_config() * @see unset_config() + * @access private */ function get_config($name, $site_guid = 0) { global $CONFIG; @@ -504,6 +509,7 @@ function get_config($name, $site_guid = 0) { * @param int $site_guid Optionally, the GUID of the site (current site is assumed by default) * * @return bool + * @access private */ function get_all_config($site_guid = 0) { global $CONFIG; @@ -531,6 +537,7 @@ function get_all_config($site_guid = 0) { * loads them into $CONFIG. * * @return true + * @access private */ function set_default_config() { global $CONFIG; @@ -577,6 +584,7 @@ function set_default_config() { * * @elgg_event boot system * @return true|null + * @access private */ function configuration_boot() { global $CONFIG; diff --git a/engine/lib/cron.php b/engine/lib/cron.php index 2a0b1d665..8c0b62a53 100644 --- a/engine/lib/cron.php +++ b/engine/lib/cron.php @@ -10,6 +10,7 @@ * Cron initialization * * @return void + * @access private */ function cron_init() { // Register a pagehandler for cron @@ -25,6 +26,7 @@ function cron_init() { * @param array $page Pages * * @return void + * @access private */ function cron_page_handler($page) { global $CONFIG; @@ -72,6 +74,7 @@ function cron_page_handler($page) { * @param mixed $params Params * * @return array + * @access private */ function cron_public_pages($hook, $type, $return_value, $params) { $return_value[] = 'cron/minute'; diff --git a/engine/lib/database.php b/engine/lib/database.php index f12b50079..b5ad7897f 100644 --- a/engine/lib/database.php +++ b/engine/lib/database.php @@ -72,6 +72,7 @@ $dbcalls = 0; * resource. eg "read", "write", or "readwrite". * * @return void + * @access private */ function establish_db_link($dblinkname = "readwrite") { // Get configuration, and globalise database link @@ -130,6 +131,7 @@ function establish_db_link($dblinkname = "readwrite") { * links up separately; otherwise just create the one database link. * * @return void + * @access private */ function setup_db_connections() { global $CONFIG, $dblink; @@ -146,6 +148,7 @@ function setup_db_connections() { * Display profiling information about db at NOTICE debug level upon shutdown. * * @return void + * @access private */ function db_profiling_shutdown_hook() { global $dbcalls; @@ -158,6 +161,7 @@ function db_profiling_shutdown_hook() { * Execute any delayed queries upon shutdown. * * @return void + * @access private */ function db_delayedexecution_shutdown_hook() { global $DB_DELAYED_QUERIES; @@ -191,6 +195,7 @@ function db_delayedexecution_shutdown_hook() { * * @return true * @elgg_event_handler boot system + * @access private */ function init_db() { register_shutdown_function('db_delayedexecution_shutdown_hook'); @@ -209,6 +214,7 @@ function init_db() { * @param string $dblinktype The type of link we want: "read", "write" or "readwrite". * * @return object Database link + * @access private */ function get_db_link($dblinktype) { global $dblink; @@ -230,6 +236,7 @@ function get_db_link($dblinktype) { * @param mixed $link The database link resource to user. * * @return mixed An object of the query's result, or FALSE + * @access private */ function explain_query($query, $link) { if ($result = execute_query("explain " . $query, $link)) { @@ -253,6 +260,7 @@ function explain_query($query, $link) { * * @return The result of mysql_query() * @throws DatabaseException + * @access private */ function execute_query($query, $dblink) { global $CONFIG, $dbcalls; @@ -283,6 +291,7 @@ function execute_query($query, $dblink) { * @param string $handler A callback function to pass the results array to * * @return true + * @access private */ function execute_delayed_query($query, $dblink, $handler = "") { global $DB_DELAYED_QUERIES; @@ -315,6 +324,7 @@ function execute_delayed_query($query, $dblink, $handler = "") { * @return true * @uses execute_delayed_query() * @uses get_db_link() + * @access private */ function execute_delayed_write_query($query, $handler = "") { return execute_delayed_query($query, 'write', $handler); @@ -329,6 +339,7 @@ function execute_delayed_write_query($query, $handler = "") { * @return true * @uses execute_delayed_query() * @uses get_db_link() + * @access private */ function execute_delayed_read_query($query, $handler = "") { return execute_delayed_query($query, 'read', $handler); @@ -348,6 +359,7 @@ function execute_delayed_read_query($query, $handler = "") { * * @return array An array of database result objects or callback function results. If the query * returned nothing, an empty array. + * @access private */ function get_data($query, $callback = "") { return elgg_query_runner($query, $callback, false); @@ -364,6 +376,7 @@ function get_data($query, $callback = "") { * @param string $callback A callback function * * @return mixed A single database result object or the result of the callback function. + * @access private */ function get_data_row($query, $callback = "") { return elgg_query_runner($query, $callback, true); @@ -382,6 +395,7 @@ function get_data_row($query, $callback = "") { * @return array An array of database result objects or callback function results. If the query * returned nothing, an empty array. * @since 1.8.0 + * @access private */ function elgg_query_runner($query, $callback = null, $single = false) { global $CONFIG, $DB_QUERY_CACHE; @@ -447,6 +461,7 @@ function elgg_query_runner($query, $callback = null, $single = false) { * * @return int|false The database id of the inserted row if a AUTO_INCREMENT field is * defined, 0 if not, and false on failure. + * @access private */ function insert_data($query) { global $CONFIG, $DB_QUERY_CACHE; @@ -477,7 +492,8 @@ function insert_data($query) { * * @param string $query The query to run. * - * @return Bool + * @return bool + * @access private */ function update_data($query) { global $CONFIG, $DB_QUERY_CACHE; @@ -508,6 +524,7 @@ function update_data($query) { * @param string $query The SQL query to run * * @return int|false The number of affected rows or false on failure + * @access private */ function delete_data($query) { global $CONFIG, $DB_QUERY_CACHE; @@ -537,6 +554,7 @@ function delete_data($query) { * * @return array|false List of tables or false on failure * @static array $tables Tables found matching the database prefix + * @access private */ function get_db_tables() { global $CONFIG; @@ -579,6 +597,7 @@ function get_db_tables() { * @param string $table The name of the table to optimise * * @return bool + * @access private */ function optimize_table($table) { $table = sanitise_string($table); @@ -591,6 +610,7 @@ function optimize_table($table) { * @param resource $dblink The DB link * * @return string Database error message + * @access private */ function get_db_error($dblink) { return mysql_error($dblink); @@ -615,6 +635,7 @@ function get_db_error($dblink) { * * @return void * @throws DatabaseException + * @access private */ function run_sql_script($scriptlocation) { if ($script = file_get_contents($scriptlocation)) { @@ -659,6 +680,7 @@ function run_sql_script($scriptlocation) { * * @param string $query Query string * @return string + * @access private */ function elgg_format_query($query) { // remove newlines and extra spaces so logs are easier to read diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 5c9479f74..53a15ba7a 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -18,6 +18,7 @@ elgg_register_classes(dirname(dirname(__FILE__)) . '/classes'); * * @return void * @throws Exception + * @access private */ function _elgg_autoload($class) { global $CONFIG; @@ -414,6 +415,7 @@ function elgg_get_loaded_external_files($type, $location) { * Bootstraps the externals data structure in $CONFIG. * * @param string $type The type of external, js or css. + * @access private */ function elgg_bootstrap_externals_data_structure($type) { global $CONFIG; @@ -422,7 +424,7 @@ function elgg_bootstrap_externals_data_structure($type) { $CONFIG->externals = array(); } - if (!$CONFIG->externals[$type] instanceof ElggPriorityList) { + if (!isset($CONFIG->externals[$type]) || !$CONFIG->externals[$type] instanceof ElggPriorityList) { $CONFIG->externals[$type] = new ElggPriorityList(); } @@ -987,6 +989,7 @@ function elgg_trigger_plugin_hook($hook, $type, $params = null, $returnvalue = n * @param Exception $exception The exception being handled * * @return void + * @access private */ function _elgg_php_exception_handler($exception) { error_log("*** FATAL EXCEPTION *** : " . $exception); @@ -1035,6 +1038,7 @@ function _elgg_php_exception_handler($exception) { * @param array $vars An array that points to the active symbol table where error occurred * * @return true + * @access private */ function _elgg_php_error_handler($errno, $errmsg, $filename, $linenum, $vars) { $error = date("Y-m-d H:i:s (T)") . ": \"$errmsg\" in file $filename (line $linenum)"; @@ -1669,9 +1673,9 @@ function is_not_null($string) { * @param array $options The options array. $options['keys'] = 'values'; * @param array $singulars A list of singular words to pluralize by adding 's'. * - * @access private * @return array * @since 1.7.0 + * @access private */ function elgg_normalise_plural_options_array($options, $singulars) { foreach ($singulars as $singular) { @@ -1709,6 +1713,7 @@ function elgg_normalise_plural_options_array($options, $singulars) { * * @return void * @see register_shutdown_hook() + * @access private */ function _elgg_shutdown_hook() { global $START_MICROTIME; @@ -1737,6 +1742,7 @@ function _elgg_shutdown_hook() { * * @return void * @elgg_pagehandler js + * @access private */ function elgg_js_page_handler($page) { return elgg_cacheable_view_page_handler($page, 'js'); @@ -1751,6 +1757,7 @@ function elgg_js_page_handler($page) { * * @return void * @elgg_pagehandler ajax + * @access private */ function elgg_ajax_page_handler($page) { if (is_array($page) && sizeof($page)) { @@ -1783,6 +1790,7 @@ function elgg_ajax_page_handler($page) { * * @return void * @elgg_pagehandler css + * @access private */ function elgg_css_page_handler($page) { if (!isset($page[0])) { @@ -1802,6 +1810,7 @@ function elgg_css_page_handler($page) { * @param string $type The type: js or css * * @return mixed + * @access private */ function elgg_cacheable_view_page_handler($page, $type) { @@ -1855,6 +1864,7 @@ function elgg_cacheable_view_page_handler($page, $type) { * @param string $order_by An order by clause * @access private * @return string + * @access private */ function elgg_sql_reverse_order_by_clause($order_by) { $order_by = strtolower($order_by); @@ -1877,8 +1887,8 @@ function elgg_sql_reverse_order_by_clause($order_by) { * Used as a callback for ElggBatch. * * @param object $object The object to enable - * @access private * @return bool + * @access private */ function elgg_batch_enable_callback($object) { // our db functions return the number of rows affected... @@ -1891,8 +1901,8 @@ function elgg_batch_enable_callback($object) { * Used as a callback for ElggBatch. * * @param object $object The object to disable - * @access private * @return bool + * @access private */ function elgg_batch_disable_callback($object) { // our db functions return the number of rows affected... @@ -1905,8 +1915,8 @@ function elgg_batch_disable_callback($object) { * Used as a callback for ElggBatch. * * @param object $object The object to disable - * @access private * @return bool + * @access private */ function elgg_batch_delete_callback($object) { // our db functions return the number of rows affected... @@ -1920,6 +1930,7 @@ function elgg_batch_delete_callback($object) { * @param array $options Options array * @param string $type Options type: metadata or annotations * @return bool + * @access private */ function elgg_is_valid_options_for_batch_operation($options, $type) { if (!$options || !is_array($options)) { @@ -1973,7 +1984,8 @@ function elgg_is_valid_options_for_batch_operation($options, $type) { * * @link http://docs.elgg.org/Tutorials/WalledGarden * @elgg_plugin_hook index system - * @return boolean + * @return bool + * @access private */ function elgg_walled_garden_index() { elgg_register_css('elgg.walled_garden', '/css/walled_garden.css'); @@ -1999,6 +2011,7 @@ function elgg_walled_garden_index() { * @elgg_event_handler init system * @link http://docs.elgg.org/Tutorials/WalledGarden * @return void + * @access private */ function elgg_walled_garden() { global $CONFIG; @@ -2016,6 +2029,7 @@ function elgg_walled_garden() { * * @elgg_event_handler init system * @return void + * @access private */ function elgg_init() { global $CONFIG; @@ -2070,6 +2084,7 @@ function elgg_init() { * * @elgg_plugin_hook unit_tests system * @return void + * @access private */ function elgg_api_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 927be4b1d..f1352ba8d 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -452,8 +452,10 @@ function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'al $container_guid = elgg_get_page_owner_guid(); } + $return = false; + if (!$container_guid) { - $return = TRUE; + $return = true; } $container = get_entity($container_guid); @@ -461,16 +463,16 @@ function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'al if ($container) { // If the user can edit the container, they can also write to it if ($container->canEdit($user_guid)) { - $return = TRUE; + $return = true; } // Basics, see if the user is a member of the group. // @todo this should be moved to the groups plugin/library if ($user && $container instanceof ElggGroup) { if (!$container->isMember($user)) { - $return = FALSE; + $return = false; } else { - $return = TRUE; + $return = true; } } } @@ -507,8 +509,8 @@ function can_write_to_container($user_guid = 0, $container_guid = 0, $type = 'al * * @return int|false The new entity's GUID, or false on failure * @throws InvalidParameterException - * @access private * @link http://docs.elgg.org/DataModel/Entities + * @access private */ function create_entity($type, $subtype, $owner_guid, $access_id, $site_guid = 0, $container_guid = 0) { @@ -1358,9 +1360,9 @@ $order_by = 'time_created') { * @param bool $recursive Recursively disable all entities owned or contained by $guid? * * @return bool - * @access private * @see access_show_hidden_entities() * @link http://docs.elgg.org/Entities + * @access private */ function disable_entity($guid, $reason = "", $recursive = true) { global $CONFIG; @@ -1472,8 +1474,8 @@ function enable_entity($guid) { * @param bool $recursive If true (default) then all entities which are * owned or contained by $guid will also be deleted. * - * @access private * @return bool + * @access private */ function delete_entity($guid, $recursive = true) { global $CONFIG, $ENTITY_CACHE; @@ -1505,7 +1507,11 @@ function delete_entity($guid, $recursive = true) { or site_guid=$guid", 'entity_row_to_elggstar'); if ($sub_entities) { foreach ($sub_entities as $e) { - $e->delete(true); + // check for equality so that an entity that is its own + // owner or container does not cause infinite loop + if ($e->guid != $guid) { + $e->delete(true); + } } } @@ -1566,7 +1572,7 @@ function delete_entity($guid, $recursive = true) { * @param string $returnvalue Return value from previous hook * @param array $params The parameters, passed 'guid' and 'varname' * - * @return null + * @return void * @elgg_plugin_hook_handler volatile metadata * @todo investigate more. * @access private @@ -1610,6 +1616,7 @@ function volatile_data_export_plugin_hook($hook, $entity_type, $returnvalue, $pa * * @elgg_event_handler export all * @return mixed + * @access private */ function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) { // Sanity check values @@ -1651,6 +1658,7 @@ function export_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) { * * @return ElggEntity the unsaved entity which should be populated by items. * @todo Remove this. + * @access private */ function oddentity_to_elggentity(ODDEntity $element) { $class = $element->getAttribute('class'); @@ -1721,7 +1729,7 @@ function oddentity_to_elggentity(ODDEntity $element) { * @return mixed * @elgg_plugin_hook_handler import all * @todo document - * + * @access private */ function import_entity_plugin_hook($hook, $entity_type, $returnvalue, $params) { $element = $params['element']; @@ -2058,6 +2066,7 @@ function is_registered_entity_type($type, $subtype = null) { * * @return void * @elgg_page_handler view + * @access private */ function entities_page_handler($page) { if (isset($page[0])) { @@ -2138,10 +2147,10 @@ function elgg_list_registered_entities(array $options = array()) { * If an entity is deleted recursively, a permissions override is required to allow * contained or owned entities to be removed. * - * @access private * @return bool * @elgg_plugin_hook_handler permissions_check all * @elgg_plugin_hook_handler permissions_check:metadata all + * @access private */ function recursive_delete_permissions_check() { static $__RECURSIVE_DELETE_TOKEN; @@ -2190,8 +2199,6 @@ function elgg_instanceof($entity, $type = NULL, $subtype = NULL, $class = NULL) /** * Update the last_action column in the entities table for $guid. * - * This determines the sort order of 1.8's default river. - * * @warning This is different to time_updated. Time_updated is automatically set, * while last_action is only set when explicitly called. * @@ -2199,7 +2206,8 @@ function elgg_instanceof($entity, $type = NULL, $subtype = NULL, $class = NULL) * @param int $posted Timestamp of last action * * @return bool - **/ + * @access private + */ function update_entity_last_action($guid, $posted = NULL) { global $CONFIG; $guid = (int)$guid; @@ -2228,6 +2236,7 @@ function update_entity_last_action($guid, $posted = NULL) { * * @return void * @elgg_plugin_hook_handler gc system + * @access private */ function entities_gc() { global $CONFIG; @@ -2249,6 +2258,7 @@ function entities_gc() { * @param mixed $params Params * * @return array + * @access private */ function entities_test($hook, $type, $value, $params) { global $CONFIG; @@ -2261,6 +2271,7 @@ function entities_test($hook, $type, $value, $params) { * * @return void * @elgg_event_handler init system + * @access private */ function entities_init() { elgg_register_page_handler('view', 'entities_page_handler'); diff --git a/engine/lib/export.php b/engine/lib/export.php index f81bee2fe..ae9be95ce 100644 --- a/engine/lib/export.php +++ b/engine/lib/export.php @@ -111,6 +111,7 @@ $IMPORTED_OBJECT_COUNTER = 0; * @param ODD $odd The odd element to process * * @return bool + * @access private */ function _process_element(ODD $odd) { global $IMPORTED_DATA, $IMPORTED_OBJECT_COUNTER; @@ -140,6 +141,7 @@ function _process_element(ODD $odd) { * * @return array * @throws ExportException + * @access private */ function exportAsArray($guid) { $guid = (int)$guid; @@ -167,6 +169,7 @@ function exportAsArray($guid) { * * @return xml * @see ElggEntity for an example of its usage. + * @access private */ function export($guid) { $odd = new ODDDocument(exportAsArray($guid)); @@ -182,6 +185,7 @@ function export($guid) { * * @return bool * @throws Exception if there was a problem importing the data. + * @access private */ function import($xml) { global $IMPORTED_DATA, $IMPORTED_OBJECT_COUNTER; @@ -210,6 +214,7 @@ function import($xml) { * Register the OpenDD import action * * @return void + * @access private */ function export_init() { global $CONFIG; diff --git a/engine/lib/extender.php b/engine/lib/extender.php index 50b05579b..51fc62c30 100644 --- a/engine/lib/extender.php +++ b/engine/lib/extender.php @@ -44,6 +44,7 @@ function detect_extender_valuetype($value, $value_type = "") { * @param ODDMetaData $element The OpenDD element * * @return bool + * @access private */ function oddmetadata_to_elggextender(ElggEntity $entity, ODDMetaData $element) { // Get the type of extender (metadata, type, attribute etc) diff --git a/engine/lib/filestore.php b/engine/lib/filestore.php index 1e257c8b0..70b8bfb4c 100644 --- a/engine/lib/filestore.php +++ b/engine/lib/filestore.php @@ -465,6 +465,7 @@ function set_default_filestore(ElggFilestore $filestore) { * ElggFile. * * @return void + * @access private */ function filestore_run_once() { // Register a class @@ -476,6 +477,7 @@ function filestore_run_once() { * Listens to system boot and registers any appropriate file types and classes * * @return void + * @access private */ function filestore_init() { global $CONFIG; @@ -496,6 +498,7 @@ function filestore_init() { * @param mixed $params Params * * @return array + * @access private */ function filestore_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/group.php b/engine/lib/group.php index 7fa188cd6..29330eeca 100644 --- a/engine/lib/group.php +++ b/engine/lib/group.php @@ -14,6 +14,7 @@ * @param int $guid GUID for a group * * @return array|false + * @access private */ function get_group_entity_as_row($guid) { global $CONFIG; diff --git a/engine/lib/input.php b/engine/lib/input.php index f2cefc3e5..4900817a5 100644 --- a/engine/lib/input.php +++ b/engine/lib/input.php @@ -16,7 +16,7 @@ * * Note: this function does not handle nested arrays (ex: form input of param[m][n]) * because of the filtering done in htmlawed from the filter_tags call. - * @todo Is this ^ still? + * @todo Is this ^ still true? * * @param string $variable The variable we want to return. * @param mixed $default A default value for the variable if it is not found. @@ -234,6 +234,7 @@ function elgg_clear_sticky_value($form_name, $variable) { * limit int default is 10 * * @return string JSON string is returned and then exit + * @access private */ function input_livesearch_page_handler($page) { global $CONFIG; @@ -431,6 +432,7 @@ function input_livesearch_page_handler($page) { * Register input functions and sanitize input * * @return void + * @access private */ function input_init() { // register an endpoint for live search / autocomplete. diff --git a/engine/lib/metadata.php b/engine/lib/metadata.php index e5389df38..0220e6c1f 100644 --- a/engine/lib/metadata.php +++ b/engine/lib/metadata.php @@ -13,6 +13,7 @@ * @param stdClass $row An object from the database * * @return stdClass or ElggMetadata + * @access private */ function row_to_elggmetadata($row) { if (!($row instanceof stdClass)) { @@ -302,7 +303,7 @@ function elgg_get_metadata(array $options = array()) { * * @param array $options An options array. {@See elgg_get_metadata()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_delete_metadata(array $options) { if (!elgg_is_valid_options_for_batch_operation($options, 'metadata')) { @@ -320,7 +321,7 @@ function elgg_delete_metadata(array $options) { * * @param array $options An options array. {@See elgg_get_metadata()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_disable_metadata(array $options) { if (!elgg_is_valid_options_for_batch_operation($options, 'metadata')) { @@ -338,7 +339,7 @@ function elgg_disable_metadata(array $options) { * * @param array $options An options array. {@See elgg_get_metadata()} * @return mixed - * @since 1.8 + * @since 1.8.0 */ function elgg_enable_metadata(array $options) { if (!$options || !is_array($options)) { @@ -448,6 +449,7 @@ function elgg_get_entities_from_metadata(array $options = array()) { * * @return FALSE|array False on fail, array('joins', 'wheres') * @since 1.7.0 + * @access private */ function elgg_get_entity_metadata_where_sql($e_table, $n_table, $names = NULL, $values = NULL, $pairs = NULL, $pair_operator = 'AND', $case_sensitive = TRUE, $order_by_metadata = NULL, @@ -716,6 +718,7 @@ function elgg_list_entities_from_metadata($options) { * @param mixed $params Params * * @return array + * @access private */ function export_metadata_plugin_hook($hook, $entity_type, $returnvalue, $params) { // Sanity check values @@ -896,6 +899,7 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'metadata_test'); * @param mixed $params Params * * @return array + * @access private */ function metadata_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/metastrings.php b/engine/lib/metastrings.php index 8c00fb2ad..9dccec700 100644 --- a/engine/lib/metastrings.php +++ b/engine/lib/metastrings.php @@ -161,6 +161,7 @@ function add_metastring($string, $case_sensitive = true) { * Delete any orphaned entries in metastrings. This is run by the garbage collector. * * @return bool + * @access private */ function delete_orphaned_metastrings() { global $CONFIG; @@ -504,6 +505,7 @@ function elgg_get_metastring_based_objects($options) { * @param bool $case_sensitive Should name and values be case sensitive? * * @return array + * @access private */ function elgg_get_metastring_sql($table, $names = null, $values = null, $pairs = null, $ids = null, $case_sensitive = false) { @@ -611,9 +613,9 @@ function elgg_get_metastring_sql($table, $names = null, $values = null, * corresponding metastrings name. * * @param array $options An options array - * @since 1.8 - * @access private + * @since 1.8.0 * @return array + * @access private */ function elgg_normalize_metastrings_options(array $options = array()) { @@ -665,7 +667,7 @@ function elgg_normalize_metastrings_options(array $options = array()) { * @param string $type The type of table to use: metadata or anntations * * @return bool - * @since 1.8 + * @since 1.8.0 * @access private */ function elgg_set_metastring_based_object_enabled_by_id($id, $enabled, $type) { @@ -718,8 +720,8 @@ function elgg_set_metastring_based_object_enabled_by_id($id, $enabled, $type) { * @param array $options An options array. {@See elgg_get_metastring_based_objects()} * @param string $callback The callback to pass each result through * @return mixed + * @since 1.8.0 * @access private - * @since 1.8 */ function elgg_batch_metastring_based_objects(array $options, $callback) { if (!$options || !is_array($options)) { @@ -739,7 +741,7 @@ function elgg_batch_metastring_based_objects(array $options, $callback) { * @param string $type The type: annotation or metadata * @return mixed * - * @since 1.8 + * @since 1.8.0 * @access private */ function elgg_get_metastring_based_object_from_id($id, $type) { @@ -769,7 +771,7 @@ function elgg_get_metastring_based_object_from_id($id, $type) { * @param string $type The object's metastring type: annotation or metadata * @return bool * - * @since 1.8 + * @since 1.8.0 * @access private */ function elgg_delete_metastring_based_object_by_id($id, $type) { @@ -827,6 +829,7 @@ function elgg_delete_metastring_based_object_by_id($id, $type) { * * @return array * @since 1.7.0 + * @access private */ function elgg_entities_get_metastrings_options($type, $options) { $valid_types = array('metadata', 'annotation'); @@ -891,6 +894,7 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'metastrings_test'); * @param mixed $params Params * * @return array + * @access private */ function metastrings_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php index 3f3a8ecd5..aaf9fb544 100644 --- a/engine/lib/navigation.php +++ b/engine/lib/navigation.php @@ -255,6 +255,7 @@ function elgg_get_breadcrumbs() { * @param array $return Menu array * @param array $params * @return array + * @access private */ function elgg_site_menu_setup($hook, $type, $return, $params) { @@ -305,6 +306,7 @@ function elgg_site_menu_setup($hook, $type, $return, $params) { /** * Add the comment and like links to river actions menu + * @access private */ function elgg_river_menu_setup($hook, $type, $return, $params) { if (elgg_is_logged_in()) { @@ -332,6 +334,7 @@ function elgg_river_menu_setup($hook, $type, $return, $params) { /** * Entity menu is list of links and info on any entity + * @access private */ function elgg_entity_menu_setup($hook, $type, $return, $params) { if (elgg_in_context('widgets')) { @@ -379,6 +382,7 @@ function elgg_entity_menu_setup($hook, $type, $return, $params) { /** * Adds a delete link to "generic_comment" annotations + * @access private */ function elgg_annotation_menu_setup($hook, $type, $return, $params) { $annotation = $params['annotation']; @@ -404,6 +408,7 @@ function elgg_annotation_menu_setup($hook, $type, $return, $params) { /** * Navigation initialization + * @access private */ function elgg_nav_init() { elgg_register_plugin_hook_handler('prepare', 'menu:site', 'elgg_site_menu_setup'); diff --git a/engine/lib/notification.php b/engine/lib/notification.php index 0754d683a..eb7e594c6 100644 --- a/engine/lib/notification.php +++ b/engine/lib/notification.php @@ -236,6 +236,7 @@ function set_user_notification_setting($user_guid, $method, $value) { * @param array $params Optional parameters (none taken in this instance) * * @return bool + * @access private */ function email_notify_handler(ElggEntity $from, ElggUser $to, $subject, $message, array $params = NULL) { @@ -359,6 +360,7 @@ function elgg_send_email($from, $to, $subject, $body, array $params = NULL) { * Correctly initialise notifications and register the email handler. * * @return void + * @access private */ function notification_init() { // Register a notification handler for the default email method @@ -375,6 +377,7 @@ function notification_init() { * * @return void * @todo why can't this call action(...)? + * @access private */ function notification_user_settings_save() { global $CONFIG; @@ -447,6 +450,7 @@ function remove_notification_interest($user_guid, $author_guid) { * @param mixed $object The object created * * @return void + * @access private */ function object_notifications($event, $object_type, $object) { // We only want to trigger notification events for ElggEntities diff --git a/engine/lib/objects.php b/engine/lib/objects.php index b138d6888..63d0f5cef 100644 --- a/engine/lib/objects.php +++ b/engine/lib/objects.php @@ -13,6 +13,7 @@ * @param int $guid The guid to retreive * * @return bool + * @access private */ function get_object_entity_as_row($guid) { global $CONFIG; @@ -109,6 +110,7 @@ function get_object_sites($object_guid, $limit = 10, $offset = 0) { * @param mixed $params Params * * @return array + * @access private */ function objects_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/opendd.php b/engine/lib/opendd.php index 69977d1d9..f00ea6aab 100644 --- a/engine/lib/opendd.php +++ b/engine/lib/opendd.php @@ -13,6 +13,7 @@ * @param XmlElement $element The element(s) * * @return mixed An ODD object if the element can be handled, or false. + * @access private */ function ODD_factory (XmlElement $element) { $name = $element->name; @@ -57,6 +58,7 @@ function ODD_factory (XmlElement $element) { * @param string $xml The XML ODD. * * @return ODDDocument + * @access private */ function ODD_Import($xml) { // Parse XML to an array @@ -96,6 +98,7 @@ function ODD_Import($xml) { * @param ODDDocument $document The Document. * * @return string + * @access private */ function ODD_Export(ODDDocument $document) { return "$document"; diff --git a/engine/lib/output.php b/engine/lib/output.php index 9479fee53..37ebbb4aa 100644 --- a/engine/lib/output.php +++ b/engine/lib/output.php @@ -198,6 +198,7 @@ function elgg_format_attributes(array $attrs) { * @param array $vars The raw $vars array with all it's dirtiness (config, url, etc.) * * @return array The array, ready to be used in elgg_format_attributes(). + * @access private */ function elgg_clean_vars(array $vars = array()) { unset($vars['config']); @@ -242,13 +243,32 @@ function elgg_clean_vars(array $vars = array()) { * @return string The absolute url */ function elgg_normalize_url($url) { - // 'http://example.com', 'https://example.com', '//example.com' - // '#target', '?query=string' - if (preg_match("#^(\#|\?|(https?:)?//)#i", $url)) { + // see https://bugs.php.net/bug.php?id=51192 + // from the bookmarks save action. + $php_5_2_13_and_below = version_compare(PHP_VERSION, '5.2.14', '<'); + $php_5_3_0_to_5_3_2 = version_compare(PHP_VERSION, '5.3.0', '>=') && + version_compare(PHP_VERSION, '5.3.3', '<'); + + $validated = false; + if ($php_5_2_13_and_below || $php_5_3_0_to_5_3_2) { + $tmp_address = str_replace("-", "", $url); + $validated = filter_var($tmp_address, FILTER_VALIDATE_URL); + } else { + $validated = filter_var($url, FILTER_VALIDATE_URL); + } + + if ($validated) { + // all normal URLs including mailto: return $url; + } elseif (preg_match("#^(\#|\?|//)#i", $url)) { + // '//example.com' (Shortcut for protocol.) + // '?query=test', #target + return $url; + } elseif (stripos($url, 'javascript:') === 0) { // 'javascript:' + // Not covered in FILTER_VALIDATE_URL return $url; } elseif (preg_match("#^[^/]*\.php(\?.*)?$#i", $url)) { diff --git a/engine/lib/pagehandler.php b/engine/lib/pagehandler.php index 31d73b18c..0d5e5f89b 100644 --- a/engine/lib/pagehandler.php +++ b/engine/lib/pagehandler.php @@ -15,6 +15,7 @@ * @param array $page The parameters to the page, as an array (exploded by '/' slashes) * * @return true|false Depending on whether a registered page handler was found + * @access private */ function page_handler($handler, $page) { global $CONFIG; @@ -127,6 +128,7 @@ function elgg_unregister_page_handler($handler) { * @param string $handler The base handler * * @return true|false Depending on success + * @access private */ function default_page_handler($page, $handler) { global $CONFIG; diff --git a/engine/lib/pageowner.php b/engine/lib/pageowner.php index 504d34a4e..d1010fda6 100644 --- a/engine/lib/pageowner.php +++ b/engine/lib/pageowner.php @@ -82,6 +82,7 @@ function elgg_set_page_owner_guid($guid) { * @param array $params no parameters * * @return int GUID + * @access private */ function default_page_owner_handler($hook, $entity_type, $returnvalue, $params) { @@ -259,6 +260,7 @@ function elgg_in_context($context) { * @note This is on the 'boot, system' event so that the context is set up quickly. * * @return void + * @access private */ function page_owner_boot() { global $CONFIG; @@ -266,7 +268,10 @@ function page_owner_boot() { elgg_register_plugin_hook_handler('page_owner', 'system', 'default_page_owner_handler'); $CONFIG->context = array(); - // @todo Ew... hacky + + // Bootstrap the context stack by setting its first entry to the handler. + // This is the first segment of the URL and the handler is set by the rewrite rules. + // @todo this does not work for actions $handler = get_input('handler', FALSE); if ($handler) { elgg_set_context($handler); diff --git a/engine/lib/pam.php b/engine/lib/pam.php index e335b7e52..4f9f44278 100644 --- a/engine/lib/pam.php +++ b/engine/lib/pam.php @@ -71,4 +71,3 @@ function unregister_pam_handler($handler, $policy = "user") { unset($_PAM_HANDLERS[$policy][$handler]); } - diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 365ef6fdf..a9e8b21bc 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -54,6 +54,8 @@ define('ELGG_PLUGIN_INTERNAL_PREFIX', 'elgg:internal:'); * @param string $dir A dir to scan for plugins. Defaults to config's plugins_path. * * @return array + * @since 1.8.0 + * @access private */ function elgg_get_plugin_ids_in_dir($dir = null) { if (!$dir) { @@ -85,6 +87,8 @@ function elgg_get_plugin_ids_in_dir($dir = null) { * * @todo Crappy name? * @return bool + * @since 1.8.0 + * @access private */ function elgg_generate_plugin_entities() { $site = get_config('site'); @@ -173,6 +177,7 @@ function elgg_generate_plugin_entities() { * * @param string $plugin_id The id (dir name) of the plugin. NOT the guid. * @return mixed ElggPlugin or false. + * @since 1.8.0 */ function elgg_get_plugin_from_id($plugin_id) { $plugin_id = sanitize_string($plugin_id); @@ -203,6 +208,7 @@ function elgg_get_plugin_from_id($plugin_id) { * {@link elgg_generate_plugin_objects()} first. * * @param string $id The plugin ID. + * @since 1.8.0 * @return bool */ function elgg_plugin_exists($id) { @@ -215,6 +221,8 @@ function elgg_plugin_exists($id) { * Returns the highest priority of the plugins * * @return int + * @since 1.8.0 + * @access private */ function elgg_get_max_plugin_priority() { $db_prefix = get_config('dbprefix'); @@ -241,6 +249,7 @@ function elgg_get_max_plugin_priority() { * * @param string $plugin_id The plugin ID * @param int $site_guid The site guid + * @since 1.8.0 * @return bool */ function elgg_is_active_plugin($plugin_id, $site_guid = null) { @@ -271,6 +280,8 @@ function elgg_is_active_plugin($plugin_id, $site_guid = null) { * that was too slow. * * @return bool + * @since 1.8.0 + * @access private */ function elgg_load_plugins() { global $CONFIG; @@ -336,6 +347,8 @@ function elgg_load_plugins() { * @param string $status The status of the plugins. active, inactive, or all. * @param mixed $site_guid Optional site guid * @return array + * @since 1.8.0 + * @access private */ function elgg_get_plugins($status = 'active', $site_guid = null) { $db_prefix = get_config('dbprefix'); @@ -393,6 +406,8 @@ function elgg_get_plugins($status = 'active', $site_guid = null) { * * @param array $order An array of plugin ids in the order to set them * @return bool + * @since 1.8.0 + * @access private */ function elgg_set_plugin_priorities(array $order) { $name = elgg_namespace_plugin_private_setting('internal', 'priority'); @@ -446,6 +461,8 @@ function elgg_set_plugin_priorities(array $order) { * * @todo Can this be done in a single sql command? * @return bool + * @since 1.8.0 + * @access private */ function elgg_reindex_plugin_priorities() { return elgg_set_plugin_priorities(array()); @@ -458,6 +475,8 @@ function elgg_reindex_plugin_priorities() { * @param string $name The name to namespace. * @param string $id The plugin's ID to namespace with. Required for user_setting. * @return string + * @since 1.8.0 + * @access private */ function elgg_namespace_plugin_private_setting($type, $name, $id = null) { switch ($type) { @@ -490,9 +509,9 @@ function elgg_namespace_plugin_private_setting($type, $name, $id = null) { * context from the main script filename called by * the browser. Default = false. * - * @since 1.8 - * * @return string|false Plugin name, or false if no plugin name was called + * @since 1.8.0 + * @access private */ function elgg_get_calling_plugin_id($mainfilename = false) { if (!$mainfilename) { @@ -538,7 +557,8 @@ function elgg_get_calling_plugin_id($mainfilename = false) { * @param string $name A specific provided name to return. Requires $provide_type. * * @return array - * @since 1.8 + * @since 1.8.0 + * @access private */ function elgg_get_plugins_provides($type = null, $name = null) { static $provides = null; @@ -594,7 +614,8 @@ function elgg_get_plugins_provides($type = null, $name = null) { * 'status' => bool Does the provide exist?, * 'value' => string The version provided * ) - * @since 1.8 + * @since 1.8.0 + * @access private */ function elgg_check_plugins_provides($type, $name, $version = null, $comparison = 'ge') { if (!$provided = elgg_get_plugins_provides($type, $name)) { @@ -630,6 +651,8 @@ function elgg_check_plugins_provides($type, $name, $version = null, $comparison * * @param array $dep An ElggPluginPackage dependency array * @return array + * @since 1.8.0 + * @access private */ function elgg_get_plugin_dependency_strings($dep) { $dep_system = elgg_extract('type', $dep); @@ -739,7 +762,8 @@ function elgg_get_plugin_dependency_strings($dep) { * Returns the ElggPlugin entity of the last plugin called. * * @return mixed ElggPlugin or false - * @since 1.8 + * @since 1.8.0 + * @access private */ function elgg_get_calling_plugin_entity() { $plugin_id = elgg_get_calling_plugin_id(); @@ -759,8 +783,7 @@ function elgg_get_calling_plugin_entity() { * @param bool $return_obj Return settings as an object? This can be used to in reusable * views where the settings are passed as $vars['entity']. * @return array - * - * @since 1.8 + * @since 1.8.0 */ function elgg_get_all_plugin_user_settings($user_guid = null, $plugin_id = null, $return_obj = false) { if ($plugin_id) { @@ -798,6 +821,7 @@ function elgg_get_all_plugin_user_settings($user_guid = null, $plugin_id = null, * is detected from where you are calling from. * * @return bool + * @since 1.8.0 */ function elgg_set_plugin_user_setting($name, $value, $user_guid = null, $plugin_id = null) { if ($plugin_id) { @@ -820,7 +844,8 @@ function elgg_set_plugin_user_setting($name, $value, $user_guid = null, $plugin_ * @param int $user_guid Defaults to logged in user * @param str $plugin_id Defaults to contextual plugin name * - * @return bool Success + * @return bool + * @since 1.8.0 */ function elgg_unset_plugin_user_setting($name, $user_guid = null, $plugin_id = null) { if ($plugin_id) { @@ -845,6 +870,7 @@ function elgg_unset_plugin_user_setting($name, $user_guid = null, $plugin_id = n * it is detected from where you are calling. * * @return mixed + * @since 1.8.0 */ function elgg_get_plugin_user_setting($name, $user_guid = null, $plugin_id = null) { if ($plugin_id) { @@ -868,7 +894,8 @@ function elgg_get_plugin_user_setting($name, $user_guid = null, $plugin_id = nul * @param string $plugin_id Optional plugin name, if not specified * then it is detected from where you are calling from. * - * @return int|false + * @return bool + * @since 1.8.0 */ function elgg_set_plugin_setting($name, $value, $plugin_id = null) { if ($plugin_id) { @@ -892,6 +919,7 @@ function elgg_set_plugin_setting($name, $value, $plugin_id = null) { * then it is detected from where you are calling from. * * @return mixed + * @since 1.8.0 */ function elgg_get_plugin_setting($name, $plugin_id = null) { if ($plugin_id) { @@ -915,6 +943,7 @@ function elgg_get_plugin_setting($name, $plugin_id = null) { * then it is detected from where you are calling from. * * @return bool + * @since 1.8.0 */ function elgg_unset_plugin_setting($name, $plugin_id = null) { if ($plugin_id) { @@ -937,7 +966,7 @@ function elgg_unset_plugin_setting($name, $plugin_id = null) { * then it is detected from where you are calling from. * * @return bool - * @since 1.8 + * @since 1.8.0 */ function elgg_unset_all_plugin_settings($plugin_id = null) { if ($plugin_id) { @@ -1026,7 +1055,8 @@ function elgg_get_entities_from_plugin_user_settings(array $options = array()) { /** * Register object, plugin entities as ElggPlugin classes * - * @return void + * @return void + * @access private */ function plugin_run_once() { add_subtype("object", "plugin", "ElggPlugin"); @@ -1041,6 +1071,7 @@ function plugin_run_once() { * @param mixed $params Params * * @return array + * @access private */ function plugins_test($hook, $type, $value, $params) { global $CONFIG; @@ -1053,6 +1084,7 @@ function plugins_test($hook, $type, $value, $params) { * Listens to system boot and registers any appropriate file types and classes * * @return void + * @access private */ function plugin_init() { run_function_once("plugin_run_once"); diff --git a/engine/lib/private_settings.php b/engine/lib/private_settings.php index d7d819e1c..95b1afa57 100644 --- a/engine/lib/private_settings.php +++ b/engine/lib/private_settings.php @@ -95,6 +95,7 @@ function elgg_get_entities_from_private_settings(array $options = array()) { * @param string $name_prefix A string to prefix all names with * @return array * @since 1.8.0 + * @access private */ function elgg_get_entity_private_settings_where_sql($table, $names = NULL, $values = NULL, $pairs = NULL, $pair_operator = 'AND', $name_prefix = '') { @@ -334,7 +335,7 @@ function get_all_private_settings($entity_guid) { * @param string $name The name of the setting * @param string $value The value of the setting * - * @return mixed The setting ID, or false on failure + * @return bool * @see get_private_setting() * @see get_all_private_settings() * @see remove_private_setting() @@ -357,10 +358,8 @@ function set_private_setting($entity_guid, $name, $value) { (entity_guid, name, value) VALUES ($entity_guid, '$name', '$value') ON DUPLICATE KEY UPDATE value='$value'"); - if ($result === 0) { - return true; - } - return $result; + + return $result !== false; } /** @@ -369,7 +368,7 @@ function set_private_setting($entity_guid, $name, $value) { * @param int $entity_guid The Entity GUID * @param string $name The name of the setting * - * @return true|false depending on success + * @return bool * @see get_private_setting() * @see get_all_private_settings() * @see set_private_setting() @@ -389,8 +388,8 @@ function remove_private_setting($entity_guid, $name) { $name = sanitise_string($name); return delete_data("DELETE from {$CONFIG->dbprefix}private_settings - where name = '{$name}' - and entity_guid = {$entity_guid}"); + WHERE name = '{$name}' + AND entity_guid = {$entity_guid}"); } /** @@ -398,7 +397,7 @@ function remove_private_setting($entity_guid, $name) { * * @param int $entity_guid The Entity GUID * - * @return true|false depending on success + * @return bool * @see get_private_setting() * @see get_all_private_settings() * @see set_private_setting() @@ -416,5 +415,5 @@ function remove_all_private_settings($entity_guid) { } return delete_data("DELETE from {$CONFIG->dbprefix}private_settings - where entity_guid = {$entity_guid}"); + WHERE entity_guid = {$entity_guid}"); } diff --git a/engine/lib/relationships.php b/engine/lib/relationships.php index ede5ca1eb..1a5833732 100644 --- a/engine/lib/relationships.php +++ b/engine/lib/relationships.php @@ -13,6 +13,7 @@ * @param stdClass $row Database row from the relationship table * * @return stdClass or ElggMetadata + * @access private */ function row_to_elggrelationship($row) { if (!($row instanceof stdClass)) { @@ -310,6 +311,7 @@ function elgg_get_entities_from_relationship($options) { * * @return mixed * @since 1.7.0 + * @access private */ function elgg_get_entity_relationship_where_sql($column, $relationship = NULL, $relationship_guid = NULL, $inverse_relationship = FALSE) { @@ -472,7 +474,8 @@ function get_relationship_url($id) { * @param int $guid_two This is the object trying to attach to $guid_one * * @return bool - **/ + * @access private + */ function already_attached($guid_one, $guid_two) { if ($attached = check_entity_relationship($guid_one, "attached", $guid_two)) { return true; @@ -488,7 +491,8 @@ function already_attached($guid_one, $guid_two) { * @param string $type The type of object to return e.g. 'file', 'friend_of' etc * * @return an array of objects -**/ + * @access private + */ function get_attachments($guid, $type = "") { $options = array( 'relationship' => 'attached', @@ -514,7 +518,8 @@ function get_attachments($guid, $type = "") { * @param int $guid_two This is the object to remove from $guid_one * * @return void -**/ + * @access private + */ function remove_attachment($guid_one, $guid_two) { if (already_attached($guid_one, $guid_two)) { remove_entity_relationship($guid_one, "attached", $guid_two); @@ -528,7 +533,8 @@ function remove_attachment($guid_one, $guid_two) { * @param int $guid_two This is the object trying to attach to $guid_one * * @return true|void -**/ + * @access private + */ function make_attachment($guid_one, $guid_two) { if (!(already_attached($guid_one, $guid_two))) { if (add_entity_relationship($guid_one, "attached", $guid_two)) { @@ -546,7 +552,7 @@ function make_attachment($guid_one, $guid_two) { * @param mixed $params Array of params * * @return mixed - * + * @access private */ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $params) { $element = $params['element']; @@ -571,6 +577,7 @@ function import_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par * * @elgg_event_handler export all * @return mixed + * @access private */ function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $params) { global $CONFIG; @@ -605,6 +612,7 @@ function export_relationship_plugin_hook($hook, $entity_type, $returnvalue, $par * @param mixed $object Object * * @return bool + * @access private */ function relationship_notification_hook($event, $type, $object) { diff --git a/engine/lib/river.php b/engine/lib/river.php index e283c0595..f430eb224 100644 --- a/engine/lib/river.php +++ b/engine/lib/river.php @@ -586,6 +586,7 @@ function update_river_access_by_object($object_guid, $access_id) { * Page handler for activiy * * @param array $page + * @access private */ function elgg_river_page_handler($page) { global $CONFIG; @@ -609,6 +610,7 @@ function elgg_river_page_handler($page) { /** * Initialize river library + * @access private */ function elgg_river_init() { elgg_register_page_handler('activity', 'elgg_river_page_handler'); diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php index ae42956a9..97a05e2e8 100644 --- a/engine/lib/sessions.php +++ b/engine/lib/sessions.php @@ -133,6 +133,7 @@ function elgg_is_admin_user($user_guid) { * @param string $password The password * * @return true|string True or an error message on failure + * @access private */ function elgg_authenticate($username, $password) { $pam = new ElggPAM('user'); @@ -154,6 +155,7 @@ function elgg_authenticate($username, $password) { * * @return bool * @throws LoginException + * @access private */ function pam_auth_userpass(array $credentials = array()) { @@ -183,7 +185,7 @@ function pam_auth_userpass(array $credentials = array()) { * * @param int $user_guid User GUID * - * @return bool on success + * @return bool */ function log_login_failure($user_guid) { $user_guid = (int)$user_guid; @@ -375,6 +377,7 @@ function logout() { * @param mixed $object Object * * @return bool + * @access private */ function session_init($event, $object_type, $object) { global $DB_PREFIX, $CONFIG; @@ -499,6 +502,7 @@ function admin_gatekeeper() { * * @return true * @todo Document + * @access private */ function _elgg_session_open($save_path, $session_name) { global $sess_save_path; @@ -514,6 +518,7 @@ function _elgg_session_open($save_path, $session_name) { * @todo document * * @return true + * @access private */ function _elgg_session_close() { return true; @@ -525,6 +530,7 @@ function _elgg_session_close() { * @param string $id The session ID * * @return string + * @access private */ function _elgg_session_read($id) { global $DB_PREFIX; @@ -558,6 +564,7 @@ function _elgg_session_read($id) { * @param mixed $sess_data Session data * * @return bool + * @access private */ function _elgg_session_write($id, $sess_data) { global $DB_PREFIX; @@ -597,6 +604,7 @@ function _elgg_session_write($id, $sess_data) { * @param string $id Session ID * * @return bool + * @access private */ function _elgg_session_destroy($id) { global $DB_PREFIX; @@ -623,6 +631,7 @@ function _elgg_session_destroy($id) { * @param int $maxlifetime Max age of a session * * @return bool + * @access private */ function _elgg_session_gc($maxlifetime) { global $DB_PREFIX; diff --git a/engine/lib/sites.php b/engine/lib/sites.php index 5fed29822..337b2d180 100644 --- a/engine/lib/sites.php +++ b/engine/lib/sites.php @@ -31,6 +31,7 @@ function elgg_get_site_entity($site_guid = 0) { * @param int $guid The site GUID * * @return mixed + * @access private */ function get_site_entity_as_row($guid) { global $CONFIG; @@ -204,7 +205,7 @@ function get_site_by_url($url) { $row = get_data_row("SELECT * from {$CONFIG->dbprefix}sites_entity where url='$url'"); if ($row) { - return new ElggSite($row); + return get_entity($row->guid); } return false; @@ -243,6 +244,7 @@ function get_site_domain($guid) { * @param null $object Event API required parameter * * @return true + * @access private */ function sites_boot($event, $object_type, $object) { global $CONFIG; @@ -274,6 +276,7 @@ elgg_register_plugin_hook_handler('unit_test', 'system', 'sites_test'); * @param mixed $params Params * * @return array + * @access private */ function sites_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/statistics.php b/engine/lib/statistics.php index 1232c6128..7c170f3bb 100644 --- a/engine/lib/statistics.php +++ b/engine/lib/statistics.php @@ -112,6 +112,7 @@ function get_online_users() { * Initialise the statistics admin page. * * @return void + * @access private */ function statistics_init() { elgg_extend_view('core/settings/statistics', 'core/settings/statistics/online'); diff --git a/engine/lib/system_log.php b/engine/lib/system_log.php index d6c746af1..fd5644135 100644 --- a/engine/lib/system_log.php +++ b/engine/lib/system_log.php @@ -270,6 +270,7 @@ function system_log_default_logger($event, $object_type, $object) { * @param Loggable $object Object to log * * @return true + * @access private */ function system_log_listener($event, $object_type, $object) { if (($object_type != 'systemlog') && ($event != 'log')) { diff --git a/engine/lib/tags.php b/engine/lib/tags.php index 64feed5b2..6275d653c 100644 --- a/engine/lib/tags.php +++ b/engine/lib/tags.php @@ -17,6 +17,7 @@ * @param int $buckets The number of buckets * * @return int + * @access private */ function calculate_tag_size($min, $max, $number_of_tags, $buckets = 6) { $delta = (($max - $min) / $buckets); @@ -48,6 +49,7 @@ function calculate_tag_size($min, $max, $number_of_tags, $buckets = 6) { * @param int $buckets The number of buckets * * @return An associated array of tags with a weighting, this can then be mapped to a display class. + * @access private */ function generate_tag_cloud(array $tags, $buckets = 6) { $cloud = array(); @@ -320,6 +322,7 @@ function elgg_get_registered_tag_metadata_names() { * @param array $page Page array * * @return void + * @access private */ function elgg_tagcloud_page_handler($page) { switch ($page[0]) { @@ -339,6 +342,9 @@ function elgg_tagcloud_page_handler($page) { } } +/** + * @access private + */ function elgg_tags_init() { // register the standard tags metadata name elgg_register_tag_metadata_name('tags'); diff --git a/engine/lib/upgrade.php b/engine/lib/upgrade.php index dc1213187..f0874a483 100644 --- a/engine/lib/upgrade.php +++ b/engine/lib/upgrade.php @@ -14,6 +14,7 @@ * @param bool $quiet Suppress errors. Don't use this. * * @return bool + * @access private */ function upgrade_code($version, $quiet = FALSE) { global $CONFIG; @@ -89,6 +90,7 @@ function upgrade_code($version, $quiet = FALSE) { * @param array $processed_upgrades An array of processed upgrade filenames * (not the path, just the file) * @return bool + * @access private */ function elgg_set_processed_upgrades(array $processed_upgrades) { $processed_upgrades = array_unique($processed_upgrades); @@ -99,6 +101,7 @@ function elgg_set_processed_upgrades(array $processed_upgrades) { * Gets a list of processes upgrades * * @return mixed Array of processed upgrade filenames or false + * @access private */ function elgg_get_processed_upgrades() { $upgrades = datalist_get('processed_upgrades'); @@ -111,7 +114,8 @@ function elgg_get_processed_upgrades() { * * @param string $filename The upgrade filename. No full path. * @return int|false - * @since 1.8 + * @since 1.8.0 + * @access private */ function elgg_get_upgrade_file_version($filename) { preg_match('/^([0-9]{10})([\.a-z0-9-_]+)?\.(php)$/i', $filename, $matches); @@ -128,6 +132,7 @@ function elgg_get_upgrade_file_version($filename) { * * @param string $upgrade_path The up * @return array|false + * @access private */ function elgg_get_upgrade_files($upgrade_path = null) { if (!$upgrade_path) { @@ -189,7 +194,8 @@ function get_version($humanreadable = false) { * @param null|array $upgrade_files Optional upgrade files * @param null|array $processed_upgrades Optional processed upgrades * - * @return array() + * @return array + * @access private */ function elgg_get_unprocessed_upgrades($upgrade_files = null, $processed_upgrades = null) { if ($upgrade_files === null) { @@ -210,7 +216,8 @@ function elgg_get_unprocessed_upgrades($upgrade_files = null, $processed_upgrade /** * Determines whether or not the database needs to be upgraded. * - * @return true|false Depending on whether or not the db version matches the code version + * @return bool Depending on whether or not the db version matches the code version + * @access private */ function version_upgrade_check() { $dbversion = (int) datalist_get('version'); @@ -227,7 +234,7 @@ function version_upgrade_check() { * Upgrades Elgg Database and code * * @return bool - * + * @access private */ function version_upgrade() { // It's possible large upgrades could exceed the max execution time. @@ -269,6 +276,7 @@ function version_upgrade() { * 1.8 upgrades, regardless of filename convention. * * @return bool + * @access private */ function elgg_upgrade_bootstrap_17_to_18() { $db_version = (int) datalist_get('version'); diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php index 29415f6ba..bb5d8d6c4 100644 --- a/engine/lib/user_settings.php +++ b/engine/lib/user_settings.php @@ -15,6 +15,7 @@ * @note This is a handler for the 'usersettings:save', 'user' plugin hook * * @return void + * @access private */ function users_settings_save() { elgg_set_user_language(); @@ -29,20 +30,21 @@ function users_settings_save() { * * @return bool * @since 1.8.0 + * @access private */ function elgg_set_user_password() { $current_password = get_input('current_password'); $password = get_input('password'); $password2 = get_input('password2'); - $user_id = get_input('guid'); + $user_guid = get_input('guid'); - if (!$user_id) { + if (!$user_guid) { $user = elgg_get_logged_in_user_entity(); } else { - $user = get_entity($user_id); + $user = get_entity($user_guid); } - if (($user) && ($password != "")) { + if ($user && $password) { // let admin user change anyone's password without knowing it except his own. if (!elgg_is_admin_logged_in() || elgg_is_admin_logged_in() && $user->guid == elgg_get_logged_in_user_guid()) { $credentials = array( @@ -50,13 +52,22 @@ function elgg_set_user_password() { 'password' => $current_password ); - if (!pam_auth_userpass($credentials)) { - register_error(elgg_echo('user:password:fail:incorrect_current_password')); + try { + pam_auth_userpass($credentials); + } catch (LoginException $e) { + register_error(elgg_echo('LoginException:ChangePasswordFailure')); return false; } } - if (strlen($password) >= 4) { + try { + $result = validate_password($password); + } catch (RegistrationException $e) { + register_error($e->getMessage()); + return false; + } + + if ($result) { if ($password == $password2) { $user->salt = generate_random_cleartext_password(); // Reset the salt $user->password = generate_user_password($user, $password); @@ -76,6 +87,7 @@ function elgg_set_user_password() { // no change return null; } + return false; } @@ -84,6 +96,7 @@ function elgg_set_user_password() { * * @return bool * @since 1.8.0 + * @access private */ function elgg_set_user_name() { $name = strip_tags(get_input('name')); @@ -124,6 +137,7 @@ function elgg_set_user_name() { * * @return bool * @since 1.8.0 + * @access private */ function elgg_set_user_language() { $language = get_input('language'); @@ -159,6 +173,7 @@ function elgg_set_user_language() { * * @return bool * @since 1.8.0 + * @access private */ function elgg_set_user_email() { $email = get_input('email'); @@ -206,6 +221,7 @@ function elgg_set_user_email() { * * @return bool * @since 1.8.0 + * @access private */ function elgg_set_user_default_access() { @@ -246,6 +262,7 @@ function elgg_set_user_default_access() { * Set up the menu for user settings * * @return void + * @access private */ function usersettings_pagesetup() { if (elgg_get_context() == "settings" && elgg_get_logged_in_user_guid()) { @@ -278,6 +295,7 @@ function usersettings_pagesetup() { * @param array $page Pages array * * @return void + * @access private */ function usersettings_page_handler($page) { global $CONFIG; @@ -318,6 +336,7 @@ function usersettings_page_handler($page) { * Initialize the user settings library * * @return void + * @access private */ function usersettings_init() { elgg_register_page_handler('settings', 'usersettings_page_handler'); @@ -327,6 +346,5 @@ function usersettings_init() { elgg_register_action("usersettings/save"); } -/// Register init function elgg_register_event_handler('init', 'system', 'usersettings_init'); elgg_register_event_handler('pagesetup', 'system', 'usersettings_pagesetup'); diff --git a/engine/lib/users.php b/engine/lib/users.php index ce1b409f6..55ebddd3a 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -21,6 +21,7 @@ $CODE_TO_GUID_MAP_CACHE = array(); * @param int $guid The ElggUser guid * * @return mixed + * @access private */ function get_user_entity_as_row($guid) { global $CONFIG; @@ -1027,6 +1028,7 @@ function elgg_get_user_validation_status($user_guid) { * Adds collection submenu items * * @return void + * @access private */ function collections_submenu_items() { @@ -1045,6 +1047,7 @@ function collections_submenu_items() { * @param array $page_elements Page elements * * @return void + * @access private */ function friends_page_handler($page_elements) { if (isset($page_elements[0]) && $user = get_user_by_username($page_elements[0])) { @@ -1062,6 +1065,7 @@ function friends_page_handler($page_elements) { * @param array $page_elements Page elements * * @return void + * @access private */ function friends_of_page_handler($page_elements) { elgg_set_context('friends'); @@ -1080,6 +1084,7 @@ function friends_of_page_handler($page_elements) { * @param array $page_elements Page elements * * @return void + * @access private */ function collections_page_handler($page_elements) { elgg_set_context('friends'); @@ -1109,6 +1114,7 @@ function collections_page_handler($page_elements) { * @param string $handler The handler string * * @return void + * @access private */ function elgg_user_account_page_handler($page_elements, $handler) { @@ -1134,6 +1140,7 @@ function elgg_user_account_page_handler($page_elements, $handler) { * * @return void * @todo finish + * @access private */ function elgg_user_login_page_handler() { $login_box = elgg_view('core/account/login_box'); @@ -1165,7 +1172,7 @@ function set_last_action($user_guid) { * * @param int $user_guid The user GUID * - * @return boid + * @return void */ function set_last_login($user_guid) { $user_guid = (int) $user_guid; @@ -1186,6 +1193,7 @@ function set_last_login($user_guid) { * @param ElggUser $object User object * * @return bool + * @access private */ function user_create_hook_add_site_relationship($event, $object_type, $object) { global $CONFIG; @@ -1201,6 +1209,7 @@ function user_create_hook_add_site_relationship($event, $object_type, $object) { * @param string $returnvalue * @param array $params * @return string + * @access private */ function user_avatar_hook($hook, $entity_type, $returnvalue, $params) { $user = $params['entity']; @@ -1215,6 +1224,7 @@ function user_avatar_hook($hook, $entity_type, $returnvalue, $params) { /** * Setup the default user hover menu + * @access private */ function elgg_user_hover_menu($hook, $type, $return, $params) { $user = $params['entity']; @@ -1286,6 +1296,12 @@ function elgg_user_hover_menu($hook, $type, $return, $params) { return $return; } +/** + * Setup the menu shown with an entity + * + * @return array + * @access private + */ function elgg_users_setup_entity_menu($hook, $type, $return, $params) { if (elgg_in_context('widgets')) { return $return; @@ -1327,6 +1343,7 @@ function elgg_users_setup_entity_menu($hook, $type, $return, $params) { * * Note: This is a secondary system:init call and is run at a super low priority to guarantee that it is called after all * other plugins have initialised. + * @access private */ function elgg_profile_fields_setup() { global $CONFIG; @@ -1383,6 +1400,7 @@ function elgg_profile_fields_setup() { * /avatar/view/<username>/<size>/<icontime> * * @param array $page + * @access private */ function elgg_avatar_page_handler($page) { global $CONFIG; @@ -1404,6 +1422,7 @@ function elgg_avatar_page_handler($page) { * Profile page handler * * @param array $page + * @access private */ function elgg_profile_page_handler($page) { global $CONFIG; @@ -1420,6 +1439,7 @@ function elgg_profile_page_handler($page) { * Sets up user-related menu items * * @return void + * @access private */ function users_pagesetup() { @@ -1503,6 +1523,7 @@ function users_pagesetup() { * Users initialisation function, which establishes the page handler * * @return void + * @access private */ function users_init() { @@ -1561,6 +1582,7 @@ function users_init() { * @param mixed $params Params * * @return array + * @access private */ function users_test($hook, $type, $value, $params) { global $CONFIG; diff --git a/engine/lib/views.php b/engine/lib/views.php index a18118f32..89ed98bdc 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -140,6 +140,7 @@ function elgg_register_viewtype($view_type) { * * @return bool * @since 1.7.2 + * @access private */ function elgg_is_valid_view_type($view_type) { global $CONFIG; @@ -1328,6 +1329,26 @@ function elgg_view_icon($name, $class = '') { } /** + * Displays a user's access collections, using the core/friends/collections view + * + * @param int $owner_guid The GUID of the owning user + * + * @return string A formatted rendition of the collections + * @todo Move to the friends/collection.php page. + * @access private + */ +function elgg_view_access_collections($owner_guid) { + if ($collections = get_user_access_collections($owner_guid)) { + foreach ($collections as $key => $collection) { + $collections[$key]->members = get_members_of_access_collection($collection->id, true); + $collections[$key]->entities = get_user_friends($owner_guid, "", 9999); + } + } + + return elgg_view('core/friends/collections', array('collections' => $collections)); +} + +/** * Registers a function to handle templates. * * Alternative template handlers can be registered to handle @@ -1369,6 +1390,7 @@ function set_template_handler($function_name) { * @since 1.7.0 * @todo Why isn't this used anywhere else but in elgg_view_tree()? * Seems like a useful function for autodiscovery. + * @access private */ function elgg_get_views($dir, $base) { $return = array(); @@ -1404,6 +1426,7 @@ function elgg_get_views($dir, $base) { * * @return array A list of view names underneath that root view * @todo This is used once in the deprecated get_activity_stream_data() function. + * @access private */ function elgg_view_tree($view_root, $viewtype = "") { global $CONFIG; @@ -1465,6 +1488,7 @@ function elgg_view_tree($view_root, $viewtype = "") { * @since 1.7.0 * @see elgg_set_view_location() * @todo This seems overly complicated. + * @access private */ function autoregister_views($view_base, $folder, $base_location_path, $viewtype) { if (!isset($i)) { @@ -1506,6 +1530,7 @@ function autoregister_views($view_base, $folder, $base_location_path, $viewtype) * Add the rss link to the extras when if needed * * @return void + * @access private */ function elgg_views_add_rss_link() { global $autofeed; @@ -1531,7 +1556,7 @@ function elgg_views_add_rss_link() { * Registers deprecated views to avoid making some pages from older plugins * completely empty. * - * @private + * @access private */ function elgg_views_handle_deprecated_views() { $location = elgg_get_view_location('page_elements/contentwrapper'); diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php index 8e312209b..1c77b757e 100644 --- a/engine/lib/web_services.php +++ b/engine/lib/web_services.php @@ -154,6 +154,7 @@ function unexpose_function($method) { * @return true or throws an exception * @throws APIException * @since 1.7.0 + * @access private */ function authenticate_method($method) { global $API_METHODS; @@ -192,6 +193,7 @@ function authenticate_method($method) { * * @return GenericResult The result of the execution. * @throws APIException, CallException + * @access private */ function execute_method($method) { global $API_METHODS, $CONFIG; @@ -257,6 +259,7 @@ function execute_method($method) { * Get the request method. * * @return string HTTP request method + * @access private */ function get_call_method() { return $_SERVER['REQUEST_METHOD']; @@ -271,6 +274,7 @@ function get_call_method() { * @param string $method The method * * @return array containing parameters as key => value + * @access private */ function get_parameters_for_method($method) { global $API_METHODS; @@ -300,6 +304,7 @@ function get_parameters_for_method($method) { * Since this is called through a handler, we need to manually get the post data * * @return POST data as string encoded as multipart/form-data + * @access private */ function get_post_data() { @@ -317,6 +322,7 @@ function get_post_data() { * @return true on success or exception * @throws APIException * @since 1.7.0 + * @access private */ function verify_parameters($method, $parameters) { global $API_METHODS; @@ -354,6 +360,7 @@ function verify_parameters($method, $parameters) { * @return string or exception * @throws APIException * @since 1.7.0 + * @access private */ function serialise_parameters($method, $parameters) { global $API_METHODS; @@ -438,6 +445,7 @@ function serialise_parameters($method, $parameters) { * @return mixed * @throws APIException * @since 1.7.0 + * @access private */ function api_auth_key() { global $CONFIG; @@ -468,6 +476,7 @@ function api_auth_key() { * * @throws SecurityException * @since 1.7.0 + * @access private */ function api_auth_hmac() { global $CONFIG; @@ -532,6 +541,7 @@ function api_auth_hmac() { * * @return stdClass Containing all the values. * @throws APIException Detailing any error. + * @access private */ function get_and_validate_api_headers() { $result = new stdClass; @@ -604,6 +614,7 @@ function get_and_validate_api_headers() { * * @return string The php algorithm * @throws APIException if an algorithm is not supported. + * @access private */ function map_api_hash($algo) { $algo = strtolower(sanitise_string($algo)); @@ -636,6 +647,7 @@ function map_api_hash($algo) { * @param string $post_hash Optional sha1 hash of the post data. * * @return string The HMAC signature + * @access private */ function calculate_hmac($algo, $time, $nonce, $api_key, $secret_key, $get_variables, $post_hash = "") { @@ -666,6 +678,7 @@ $get_variables, $post_hash = "") { * @param string $algo The algorithm used. * * @return string The hash. + * @access private */ function calculate_posthash($postdata, $algo) { $ctx = hash_init(map_api_hash($algo)); @@ -682,6 +695,7 @@ function calculate_posthash($postdata, $algo) { * @param string $hmac The hmac string. * * @return bool True if replay detected, false if not. + * @access private */ function cache_hmac_check_replay($hmac) { // cache lifetime is 25 hours (this should be related to the time drift @@ -779,6 +793,7 @@ function remove_api_user($site_guid, $api_key) { * session code of Elgg, that user will be logged out of all other sessions. * * @return bool + * @access private */ function pam_auth_usertoken() { global $CONFIG; @@ -823,6 +838,7 @@ function pam_auth_usertoken() { * See if the user has a valid login sesson * * @return bool + * @access private */ function pam_auth_session() { return elgg_is_logged_in(); @@ -968,6 +984,7 @@ function remove_expired_user_tokens() { * @param array $headers The array of headers "key" => "value" * * @return string + * @access private */ function serialise_api_headers(array $headers) { $headers_str = ""; @@ -1123,6 +1140,7 @@ function get_standard_api_key_array($secret_key, $api_key) { * Simple api to return a list of all api's installed on the system. * * @return array + * @access private */ function list_all_apis() { global $API_METHODS; @@ -1144,6 +1162,7 @@ function list_all_apis() { * * @return string Token string or exception * @throws SecurityException + * @access private */ function auth_gettoken($username, $password) { if (authenticate($username, $password)) { @@ -1174,6 +1193,7 @@ $ERRORS = array(); * @param array $vars Vars * * @return void + * @access private */ function _php_api_error_handler($errno, $errmsg, $filename, $linenum, $vars) { global $ERRORS; @@ -1211,6 +1231,7 @@ function _php_api_error_handler($errno, $errmsg, $filename, $linenum, $vars) { * @param Exception $exception Exception * * @return void + * @access private */ function _php_api_exception_handler($exception) { @@ -1233,6 +1254,7 @@ function _php_api_exception_handler($exception) { * @param array $request Request string * * @return void + * @access private */ function service_handler($handler, $request) { global $CONFIG; @@ -1310,6 +1332,7 @@ function unregister_service_handler($handler) { * REST API handler * * @return void + * @access private */ function rest_handler() { global $CONFIG; @@ -1370,6 +1393,7 @@ function rest_handler() { * @param mixed $params Params * * @return array + * @access private */ function api_unit_test($hook, $type, $value, $params) { global $CONFIG; @@ -1381,6 +1405,7 @@ function api_unit_test($hook, $type, $value, $params) { * Initialise the API subsystem. * * @return void + * @access private */ function api_init() { // Register a page handler, so we can have nice URLs diff --git a/engine/lib/widgets.php b/engine/lib/widgets.php index cc3cf20e4..5d18a16b0 100644 --- a/engine/lib/widgets.php +++ b/engine/lib/widgets.php @@ -257,6 +257,7 @@ function elgg_get_widget_types($context = "", $exact = false) { * Regsiter entity of object, widget as ElggWidget objects * * @return void + * @access private */ function elgg_widget_run_once() { add_subtype("object", "widget", "ElggWidget"); @@ -266,6 +267,7 @@ function elgg_widget_run_once() { * Function to initialize widgets functionality * * @return void + * @access private */ function elgg_widgets_init() { elgg_register_action('widgets/save'); @@ -281,7 +283,26 @@ function elgg_widgets_init() { * Gets a list of events to create default widgets for and * register menu items for default widgets with the admin section. * + * A plugin that wants to register a new context for default widgets should + * register for the plugin hook 'get_list', 'default_widgets'. The handler + * can register the new type of default widgets by adding an associate array to + * the return value array like this: + * array( + * 'name' => elgg_echo('profile'), + * 'widget_context' => 'profile', + * 'widget_columns' => 3, + * + * 'event' => 'create', + * 'entity_type' => 'user', + * 'entity_subtype' => ELGG_ENTITIES_ANY_VALUE, + * ); + * + * The first set of keys define information about the new type of default + * widgets and the second set determine what event triggers the creation of the + * new widgets. + * * @return void + * @access private */ function elgg_default_widgets_init() { global $CONFIG; @@ -296,35 +317,42 @@ function elgg_default_widgets_init() { elgg_register_plugin_hook_handler('container_permissions_check', 'object', 'elgg_default_widgets_permissions_override'); foreach ($default_widgets as $info) { - elgg_register_event_handler($info['event'], $info['entity_type'], 'elgg_default_widgets_hook'); + elgg_register_event_handler($info['event'], $info['entity_type'], 'elgg_create_default_widgets'); } } } /** - * Checks for plugins who have registered default widgets and - * hooks into events to save. + * Creates default widgets + * + * This plugin hook handler is registered for events based on what kinds of + * default widgets have been registered. See elgg_default_widgets_init() for + * information on registering new default widget contexts. * * @param string $event The event * @param string $type The type of object - * @param object $object The object + * @param object $entity The entity being created * @return null + * @access private */ -function elgg_default_widgets_hook($event, $type, $object) { +function elgg_create_default_widgets($event, $type, $entity) { $default_widget_info = elgg_get_config('default_widget_info'); - if (!$default_widget_info) { + if (!$default_widget_info || !$entity) { return null; } - $subtype = $object->getSubtype(); + $type = $entity->getType(); + $subtype = $entity->getSubtype(); // event is already guaranteed by the hook registration. // need to check subtype and type. foreach ($default_widget_info as $temp) { - if ($temp['entity_type'] == $type && $temp['entity_subtype'] == $subtype) { - $info = $temp; - break; + if ($temp['entity_type'] == $type) { + if ($temp['entity_subtype'] == ELGG_ENTITIES_ANY_VALUE || $temp['entity_subtype'] == $subtype) { + $info = $temp; + break; + } } } @@ -339,7 +367,7 @@ function elgg_default_widgets_hook($event, $type, $object) { 'subtype' => 'widget', 'owner_guid' => elgg_get_site_entity()->guid, 'private_setting_name' => 'context', - 'private_setting_value' => $info['context'], + 'private_setting_value' => $info['widget_context'], 'limit' => 0 ); @@ -348,8 +376,8 @@ function elgg_default_widgets_hook($event, $type, $object) { foreach ($widgets as $widget) { // change the container and owner $new_widget = clone $widget; - $new_widget->container_guid = $object->guid; - $new_widget->owner_guid = $object->guid; + $new_widget->container_guid = $entity->guid; + $new_widget->owner_guid = $entity->guid; // pull in settings $settings = get_all_private_settings($widget->guid); @@ -376,6 +404,7 @@ function elgg_default_widgets_hook($event, $type, $object) { * @param string $return Value * @param mixed $params Params * @return true|null + * @access private */ function elgg_default_widgets_permissions_override($hook, $type, $return, $params) { if ($type == 'object' && $params['subtype'] == 'widget') { @@ -387,4 +416,4 @@ function elgg_default_widgets_permissions_override($hook, $type, $return, $param elgg_register_event_handler('init', 'system', 'elgg_widgets_init'); // register default widget hooks from plugins -elgg_register_event_handler('ready', 'system', 'elgg_default_widgets_init');
\ No newline at end of file +elgg_register_event_handler('ready', 'system', 'elgg_default_widgets_init'); diff --git a/engine/lib/xml-rpc.php b/engine/lib/xml-rpc.php index b63d626df..bfe1a8645 100644 --- a/engine/lib/xml-rpc.php +++ b/engine/lib/xml-rpc.php @@ -15,6 +15,7 @@ * @param array $parameters An array of params * * @return array + * @access private */ function xmlrpc_parse_params($parameters) { $result = array(); @@ -32,6 +33,7 @@ function xmlrpc_parse_params($parameters) { * @param XMLObject $object And object * * @return mixed + * @access private */ function xmlrpc_scalar_value($object) { if ($object->name == 'param') { @@ -110,6 +112,7 @@ function register_xmlrpc_handler($method, $handler) { * @param XMLRPCCall $parameters The call and parameters. * * @return XMLRPCCall + * @access private */ function trigger_xmlrpc_handler(XMLRPCCall $parameters) { global $XML_RPC_HANDLERS; @@ -148,6 +151,7 @@ function trigger_xmlrpc_handler(XMLRPCCall $parameters) { * @param array $vars Vars * * @return void + * @access private */ function _php_xmlrpc_error_handler($errno, $errmsg, $filename, $linenum, $vars) { $error = date("Y-m-d H:i:s (T)") . ": \"" . $errmsg . "\" in file " @@ -177,6 +181,7 @@ function _php_xmlrpc_error_handler($errno, $errmsg, $filename, $linenum, $vars) * @param Exception $exception The exception * * @return void + * @access private */ function _php_xmlrpc_exception_handler($exception) { diff --git a/engine/tests/api/access_collections.php b/engine/tests/api/access_collections.php index 1e61c45bb..0c37fa779 100644 --- a/engine/tests/api/access_collections.php +++ b/engine/tests/api/access_collections.php @@ -194,7 +194,7 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest { return $value; } - register_plugin_hook('access:collections:write', 'all', 'test_acl_access_hook'); + elgg_register_plugin_hook_handler('access:collections:write', 'all', 'test_acl_access_hook'); // enable security since we usually run as admin $ia = elgg_set_ignore_access(false); @@ -202,14 +202,16 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest { $this->assertTrue($result); $ia = elgg_set_ignore_access($ia); - unregister_plugin_hook('access:collections:write', 'all', 'test_acl_access_hook'); + elgg_unregister_plugin_hook_handler('access:collections:write', 'all', 'test_acl_access_hook'); + + delete_access_collection($acl_id); } // groups interface // only runs if the groups plugin is enabled because implementation is split between // core and the plugin. public function testCreateDeleteGroupACL() { - if (!is_plugin_enabled('groups')) { + if (!elgg_is_active_plugin('groups')) { return; } @@ -231,7 +233,7 @@ class ElggCoreAccessCollectionsTest extends ElggCoreUnitTest { } public function testJoinLeaveGroupACL() { - if (!is_plugin_enabled('groups')) { + if (!elgg_is_active_plugin('groups')) { return; } diff --git a/engine/tests/api/entity_getter_functions.php b/engine/tests/api/entity_getter_functions.php index 59b48999c..e7906d3c8 100644 --- a/engine/tests/api/entity_getter_functions.php +++ b/engine/tests/api/entity_getter_functions.php @@ -855,7 +855,7 @@ class ElggCoreEntityGetterFunctionsTest extends ElggCoreUnitTest { public function testElggApiGettersEntityNoSubtype() { // create an entity we can later delete. - // order by time created and limit by 1 should == this entity. + // order by guid and limit by 1 should == this entity. $e = new ElggObject(); $e->save(); diff --git a/engine/tests/api/helpers.php b/engine/tests/api/helpers.php index 36d680d54..f48f91faf 100644 --- a/engine/tests/api/helpers.php +++ b/engine/tests/api/helpers.php @@ -63,6 +63,8 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest { $this->assertFalse(elgg_instanceof($bad_entity)); $this->assertFalse(elgg_instanceof($bad_entity, 'object')); $this->assertFalse(elgg_instanceof($bad_entity, 'object', 'test_subtype')); + + remove_subtype('object', 'test_subtype'); } /** @@ -72,7 +74,13 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest { $conversions = array( 'http://example.com' => 'http://example.com', 'https://example.com' => 'https://example.com', + 'http://example-time.com' => 'http://example-time.com', + '//example.com' => '//example.com', + 'ftp://example.com/file' => 'ftp://example.com/file', + 'mailto:brett@elgg.org' => 'mailto:brett@elgg.org', + 'javascript:alert("test")' => 'javascript:alert("test")', + 'app://endpoint' => 'app://endpoint', 'example.com' => 'http://example.com', 'example.com/subpage' => 'http://example.com/subpage', @@ -166,7 +174,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest { $this->assertFalse(isset($CONFIG->externals_map['js']['id1'])); foreach ($elements as $element) { - $this->assertFalse($element->name == 'id1'); + if (isset($element->name)) { + $this->assertFalse($element->name == 'id1'); + } } $result = elgg_unregister_js('id1'); @@ -180,7 +190,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest { $this->assertFalse(isset($CONFIG->externals_map['js']['id2'])); foreach ($elements as $element) { - $this->assertFalse($element->name == 'id2'); + if (isset($element->name)) { + $this->assertFalse($element->name == 'id2'); + } } $this->assertTrue(isset($CONFIG->externals_map['js']['id3'])); diff --git a/engine/tests/api/metadata.php b/engine/tests/api/metadata.php index d9113b68a..7897b8d47 100644 --- a/engine/tests/api/metadata.php +++ b/engine/tests/api/metadata.php @@ -75,16 +75,9 @@ class ElggCoreMetadataAPITest extends ElggCoreUnitTest { $this->assertIdentical($case_true, $case_false); - // check deprecated get_entities_from_metadata() function - $deprecated = get_entities_from_metadata('metaUnitTest', 'tested', '', '', 0, 10, 0, '', 0, FALSE, TRUE); - $this->assertIdentical($deprecated, $case_true); - - // check entity list - //$this->dump(list_entities_from_metadata('metaUnitTest', 'Tested', '', '', 0, 10, TRUE, TRUE, TRUE, FALSE)); - // clean up - $this->delete_metastrings(); $this->object->delete(); + $this->delete_metastrings(); } public function testElggGetMetadataCount() { diff --git a/engine/tests/api/plugins.php b/engine/tests/api/plugins.php index 72092b688..8f5f5dd1e 100644 --- a/engine/tests/api/plugins.php +++ b/engine/tests/api/plugins.php @@ -105,7 +105,6 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest { array('type' => 'plugin', 'name' => 'facebook_connect', 'version' => 1.0), ), - 'admin_interface' => 'simple', 'activate_on_install' => true ); @@ -265,10 +264,6 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest { $this->assertEqual($this->manifest17->getConflicts(), array()); } - public function testElggPluginManifestGetAdminInterface() { - $this->assertEqual($this->manifest18->getAdminInterface(), 'simple'); - } - public function testElggPluginManifestGetActivateOnInstall() { $this->assertEqual($this->manifest18->getActivateOnInstall(), true); } diff --git a/engine/tests/objects/entities.php b/engine/tests/objects/entities.php index c04bc60ff..c13b4c731 100644 --- a/engine/tests/objects/entities.php +++ b/engine/tests/objects/entities.php @@ -125,7 +125,7 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->assertIdentical(FALSE, elgg_get_annotations(array('guid' => $this->entity->getGUID(), 'type' => 'site', 'subtype' => 'fail'))); // clear annotation - $this->assertTrue($this->entity->clearAnnotations()); + $this->assertTrue($this->entity->deleteAnnotations()); $this->assertEqual($this->entity->countAnnotations('non_existent'), 0); $this->assertIdentical(array(), elgg_get_annotations(array('guid' => $this->entity->getGUID()))); @@ -134,6 +134,7 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { // clean up $this->assertTrue($this->entity->delete()); + remove_subtype('site', 'testing'); } public function testElggEntityCache() { @@ -226,8 +227,8 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { } public function testElggEntityMetadata() { - // let's delte a non-existent metadata - $this->assertFalse($this->entity->clearMetaData('important')); + // let's delete a non-existent metadata + $this->assertFalse($this->entity->deleteMetadata('important')); // let's add the meatadata $this->assertTrue($this->entity->important = 'indeed!'); @@ -236,16 +237,16 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { // test deleting incorrectly // @link http://trac.elgg.org/ticket/2273 - $this->assertFalse($this->entity->clearMetaData('impotent')); + $this->assertFalse($this->entity->deleteMetadata('impotent')); $this->assertEqual($this->entity->important, 'indeed!'); // get rid of one metadata $this->assertEqual($this->entity->important, 'indeed!'); - $this->assertTrue($this->entity->clearMetaData('important')); + $this->assertTrue($this->entity->deleteMetadata('important')); $this->assertEqual($this->entity->important, ''); // get rid of all metadata - $this->assertTrue($this->entity->clearMetaData()); + $this->assertTrue($this->entity->deleteMetadata()); $this->assertEqual($this->entity->less_important, ''); // clean up database @@ -278,6 +279,10 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->entity->$name = $md; $this->assertEqual($md, $this->entity->$name); + + if ($save) { + $this->assertTrue($this->entity->delete()); + } } } @@ -292,6 +297,10 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->entity->$name = $md; $this->assertEqual($md[0], $this->entity->$name); + + if ($save) { + $this->assertTrue($this->entity->delete()); + } } } @@ -307,6 +316,10 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->entity->setMetaData($name, 'test2', '', true); $this->assertEqual(array('test', 'test2'), $this->entity->$name); + + if ($save) { + $this->assertTrue($this->entity->delete()); + } } } @@ -322,6 +335,10 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->entity->setMetaData($name, array('test2'), '', true); $this->assertEqual(array('test', 'test2'), $this->entity->$name); + + if ($save) { + $this->assertTrue($this->entity->delete()); + } } } @@ -338,11 +355,14 @@ class ElggCoreEntityTest extends ElggCoreUnitTest { $this->entity->setMetaData($name, $md2, '', true); $this->assertEqual(array_merge($md, $md2), $this->entity->$name); + + if ($save) { + $this->assertTrue($this->entity->delete()); + } } } - protected function save_entity($type='site') - { + protected function save_entity($type='site') { $this->entity->type = $type; $this->assertNotEqual($this->entity->save(), 0); } diff --git a/engine/tests/objects/sites.php b/engine/tests/objects/sites.php index d0d61dcab..e5acbb3f9 100644 --- a/engine/tests/objects/sites.php +++ b/engine/tests/objects/sites.php @@ -18,7 +18,7 @@ class ElggCoreSiteTest extends ElggCoreUnitTest { * Called before each test method. */ public function setUp() { - $this->site = new ElggSiteTest; + $this->site = new ElggSiteTest(); } /** diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php index ba93c2439..d1533c3d2 100644 --- a/engine/tests/objects/users.php +++ b/engine/tests/objects/users.php @@ -220,29 +220,6 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $this->user->delete(); } - // remove in 1.9 - public function testElggUserIsAdminLegacy() { - $this->user->save(); - $this->user->makeAdmin(); - - $this->assertTrue($this->user->admin); - $this->assertTrue($this->user->siteadmin); - - $this->user->removeAdmin(); - $this->user->delete(); - } - - public function testElggUserIsNotAdminLegacy() { - $this->user->save(); - $this->user->removeAdmin(); - - $this->assertFalse($this->user->admin); - $this->assertFalse($this->user->siteadmin); - - $this->user->removeAdmin(); - $this->user->delete(); - } - protected function fetchUser($guid) { global $CONFIG; diff --git a/engine/tests/regression/trac_bugs.php b/engine/tests/regression/trac_bugs.php index 23d6d1dc6..2bfc37558 100644 --- a/engine/tests/regression/trac_bugs.php +++ b/engine/tests/regression/trac_bugs.php @@ -146,9 +146,9 @@ class ElggCoreRegressionBugsTest extends ElggCoreUnitTest { } } - register_plugin_hook('container_permissions_check', 'all', 'can_write_to_container_test_hook'); + elgg_register_plugin_hook_handler('container_permissions_check', 'all', 'can_write_to_container_test_hook'); $this->assertTrue(can_write_to_container($user->guid, $object->guid)); - unregister_plugin_hook('container_permissions_check', 'all', 'can_write_to_container_test_hook'); + elgg_unregister_plugin_hook_handler('container_permissions_check', 'all', 'can_write_to_container_test_hook'); $this->assertFalse(can_write_to_container($user->guid, $group->guid)); $group->join($user); diff --git a/engine/tests/test_files/plugin_18/manifest.xml b/engine/tests/test_files/plugin_18/manifest.xml index 23f0fa0bf..445a41c2e 100644 --- a/engine/tests/test_files/plugin_18/manifest.xml +++ b/engine/tests/test_files/plugin_18/manifest.xml @@ -34,7 +34,6 @@ <category>ServiceAPI</category> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> <requires> diff --git a/engine/tests/ui/submenu.php b/engine/tests/ui/submenu.php deleted file mode 100644 index b401620f6..000000000 --- a/engine/tests/ui/submenu.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php -/** - * 1.8 submenu test. - * - * Submenu needs to be able to support being added out of order. - * Children can be added before parents. - * Children of parents never defined are never shown. - * - * Test against: - * different contexts - * different groups - * old add_submenu_item() wrapper. - * - */ - -/* - * Tests need to be ported to new menu system - * - -require_once('../../start.php'); - -$url = "engine/tests/ui/submenu.php"; - -$items = array( - array( - 'text' => 'Upper level 1', - 'href' => "$url?upper_level_1", - 'id' => 'ul1' - ), - array( - 'text' => 'CD (No link)', - 'parent_id' => 'cup', - 'id' => 'cd', - ), - array( - 'text' => 'Sub CD', - 'href' => "$url?sub_cd", - 'parent_id' => 'cd' - ), - array( - 'text' => 'Cup', - 'href' => "$url?cup", - 'id' => 'cup' - ), - array( - 'text' => 'Phone', - 'href' => "$url?phone", - 'id' => 'phone', - 'parent_id' => 'cup' - ), - array( - 'text' => 'Wallet', - 'href' => "$url?wallet", - 'id' => 'wallet', - 'parent_id' => 'phone' - ), - array( - 'text' => 'Upper level', - 'href' => "$url?upper_level", - 'id' => 'ul' - ), - array( - 'text' => 'Sub Upper level', - 'href' => "$url?sub_upper_level", - 'parent_id' => 'ul' - ), - array( - 'text' => 'Root', - 'href' => $url, - ), - - array( - 'text' => 'I am an orphan', - 'href' => 'http://google.com', - 'parent_id' => 'missing_parent' - ), - - array( - 'text' => 'JS Test', - 'href' => 'http://elgg.org', - 'vars' => array('js' => 'onclick="alert(\'Link to \' + $(this).attr(\'href\') + \'!\'); return false;"') - ) -); - -foreach ($items as $item) { - elgg_add_submenu_item($item, 'main'); -} - -add_submenu_item('Old Onclick Test', 'http://elgg.com', NULL, TRUE); -add_submenu_item('Old Selected Test', 'http://elgg.com', NULL, '', TRUE); - - -elgg_add_submenu_item(array('text' => 'Not Main Test', 'href' => "$url?not_main_test"), 'not_main', 'new_menu'); -elgg_add_submenu_item(array('text' => 'Not Main C Test', 'href' => "$url?not_main_c_test"), 'not_main', 'new_menu'); - -elgg_add_submenu_item(array('text' => 'All test', 'href' => "$url?all"), 'all'); - -//elgg_set_context('not_main'); - -$body = elgg_view_layout('one_sidebar', array('content' => 'Look right.')); -echo elgg_view_page('Submenu Test', $body); - -*/ diff --git a/js/lib/elgglib.js b/js/lib/elgglib.js index 9a372738d..0f17eeced 100644 --- a/js/lib/elgglib.js +++ b/js/lib/elgglib.js @@ -353,6 +353,145 @@ elgg.forward = function(url) { }; /** + * Parse a URL into its parts. Mimicks http://php.net/parse_url + * + * @param {String} url The URL to parse + * @param {Int} component A component to return + * @param {Bool} expand Expand the query into an object? Else it's a string. + * + * @return {Object} The parsed URL + */ +elgg.parse_url = function(url, component, expand) { + // Adapted from http://blog.stevenlevithan.com/archives/parseuri + // which was release under the MIT + // It was modified to fix mailto: and javascript: support. + var + expand = expand || false, + component = component || false, + + re_str = + // scheme (and user@ testing) + '^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?' + // possibly a user[:password]@ + + '((?:(([^:@]*)(?::([^:@]*))?)?@)?' + // host and port + + '([^:/?#]*)(?::(\\d*))?)' + // path + + '(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))' + // query string + + '(?:\\?([^#]*))?' + // fragment + + '(?:#(.*))?)', + keys = { + 'mailto': { + 4: "scheme", + 5: "user", + 6: "host", + 9: "path", + 12: "query", + 13: "fragment" + }, + + 'standard': { + 1: "scheme", + 4: "user", + 5: "pass", + 6: "host", + 7: "port", + 9: "path", + 12: "query", + 13: "fragment" + } + }, + results = {}, + match_keys, + is_mailto = false; + + var re = new RegExp(re_str); + var matches = re.exec(url); + + // if the scheme field is undefined it means we're using a protocol + // without :// and an @. Feel free to fix this in the re if you can >:O + if (matches[1] == undefined) { + match_keys = keys['mailto']; + is_mailto = true; + } else { + match_keys = keys['standard']; + } + + for (var i in match_keys) { + if (matches[i]) { + results[match_keys[i]] = matches[i]; + } + } + + // merge everything to path if not standard + if (is_mailto) { + var path = '', + new_results = {}; + + if (typeof(results['user']) != 'undefined' && typeof(results['host']) != 'undefined') { + path = results['user'] + '@' + results['host']; + delete results['user']; + delete results['host']; + } else if (typeof(results['user'])) { + path = results['user']; + delete results['user']; + } else if (typeof(results['host'])) { + path = results['host']; + delete results['host']; + } + + if (typeof(results['path']) != 'undefined') { + results['path'] = path + results['path']; + } else { + results['path'] = path; + } + + for (var prop in results) { + new_results[prop] = results[prop]; + } + + results = new_results; + } + + if (expand && typeof(results['query']) != 'undefined') { + results['query'] = elgg.parse_str(results['query']); + } + + if (component) { + if (typeof(results[component]) != 'undefined') { + return results[component]; + } else { + return false; + } + } + return results; +} + +/** + * Returns an object with key/values of the parsed query string. + * + * @param {String} string The string to parse + * @return {Object} The parsed object string + */ +elgg.parse_str = function(string) { + var params = {}; + var result, + key, + value, + re = /([^&=]+)=?([^&]*)/g; + + while (result = re.exec(string)) { + key = decodeURIComponent(result[1]) + value = decodeURIComponent(result[2]) + params[key] = value; + } + + return params; +}; + +/** * Returns a jQuery selector from a URL's fragement. Defaults to expecting an ID. * * Examples: @@ -382,6 +521,42 @@ elgg.getSelectorFromUrlFragment = function(url) { }; /** + * Adds child to object[parent] array. + * + * @param {Object} object The object to add to + * @param {String} parent The parent array to add to. + * @param {Mixed} value The value + */ +elgg.push_to_object_array = function(object, parent, value) { + elgg.assertTypeOf('object', object); + elgg.assertTypeOf('string', parent); + + if (!(object[parent] instanceof Array)) { + object[parent] = [] + } + + if (object[parent].indexOf(value) < 0) { + return object[parent].push(value); + } + + return false; +} + +/** + * Tests if object[parent] contains child + * + * @param {Object} object The object to add to + * @param {String} parent The parent array to add to. + * @param {Mixed} value The value + */ +elgg.is_in_object_array = function(object, parent, value) { + elgg.assertTypeOf('object', object); + elgg.assertTypeOf('string', parent); + + return typeof(object[parent]) != 'undefined' && object[parent].indexOf(value) >= 0; +} + +/** * Triggers the init hook when the library is ready * * Current requirements: diff --git a/js/lib/hooks.js b/js/lib/hooks.js index ab3a8a224..edfd28f24 100644 --- a/js/lib/hooks.js +++ b/js/lib/hooks.js @@ -3,13 +3,18 @@ */ elgg.provide('elgg.config.hooks'); +elgg.provide('elgg.config.instant_hooks'); +elgg.provide('elgg.config.triggered_hooks'); /** - * Registers an hook handler with the event system. + * Registers a hook handler with the event system. * * The special keyword "all" can be used for either the name or the type or both * and means to call that handler for all of those hooks. * + * Note that handlers registering for instant hooks will be executed immediately if the instant + * hook has been previously triggered. + * * @param {String} name Name of the plugin hook to register for * @param {String} type Type of the event to register for * @param {Function} handler Handle to call @@ -33,6 +38,11 @@ elgg.register_hook_handler = function(name, type, handler, priority) { priorities[name][type] = new elgg.ElggPriorityList(); } + // call if instant and already triggered. + if (elgg.is_instant_hook(name, type) && elgg.is_triggered_hook(name, type)) { + handler(name, type, null, null); + } + return priorities[name][type].insert(handler, priority); }; @@ -43,7 +53,9 @@ elgg.register_hook_handler = function(name, type, handler, priority) { * Every handler function will always be called, regardless of the return value. * * @warning Handlers take the same 4 arguments in the same order as when calling this function. - * This is different to the PHP version! + * This is different from the PHP version! + * + * @note Instant hooks do not support params or values. * * Hooks are called in this order: * specifically registered (event_name and event_type match) @@ -62,6 +74,9 @@ elgg.trigger_hook = function(name, type, params, value) { elgg.assertTypeOf('string', name); elgg.assertTypeOf('string', type); + // mark as triggered + elgg.set_triggered_hook(name, type); + // default to true if unpassed value = value || true; @@ -101,4 +116,58 @@ elgg.trigger_hook = function(name, type, params, value) { }); return (tempReturnValue !== null) ? tempReturnValue : returnValue; -};
\ No newline at end of file +}; + +/** + * Registers a hook as an instant hook. + * + * After being trigger once, registration of a handler to an instant hook will cause the + * handle to be executed immediately. + * + * @note Instant hooks must be triggered without params or defaults. Any params or default + * passed will *not* be passed to handlers executed upon registration. + * + * @param {String} name The hook name. + * @param {String} type The hook type. + * @return {Int} + */ +elgg.register_instant_hook = function(name, type) { + elgg.assertTypeOf('string', name); + elgg.assertTypeOf('string', type); + + return elgg.push_to_object_array(elgg.config.instant_hooks, name, type); +} + +/** + * Is this hook registered as an instant hook? + * + * @param {String} name The hook name. + * @param {String} type The hook type. + */ +elgg.is_instant_hook = function(name, type) { + return elgg.is_in_object_array(elgg.config.instant_hooks, name, type); +} + +/** + * Records that a hook has been triggered. + * + * @param {String} name The hook name. + * @param {String} type The hook type. + */ +elgg.set_triggered_hook = function(name, type) { + return elgg.push_to_object_array(elgg.config.triggered_hooks, name, type); +} + +/** + * Has this hook been triggered yet? + * + * @param {String} name The hook name. + * @param {String} type The hook type. + */ +elgg.is_triggered_hook = function(name, type) { + return elgg.is_in_object_array(elgg.config.triggered_hooks, name, type); +} + +elgg.register_instant_hook('init', 'system'); +elgg.register_instant_hook('ready', 'system'); +elgg.register_instant_hook('boot', 'system'); diff --git a/js/lib/security.js b/js/lib/security.js index 486347b88..d14ddff95 100644 --- a/js/lib/security.js +++ b/js/lib/security.js @@ -70,14 +70,22 @@ elgg.security.addToken = function(data) { // 'http://example.com?data=sofar' if (elgg.isString(data)) { - var args = []; - if (data) { - args.push(data); + var args = {}, + base = ''; + + // check for query strings + if (data.indexOf('?') != -1) { + var split = data.split('?'); + base = split[0]; + args = elgg.parse_str(split[1]); + } else { + base = data; } - args.push("__elgg_ts=" + elgg.security.token.__elgg_ts); - args.push("__elgg_token=" + elgg.security.token.__elgg_token); + + args["__elgg_ts"] = elgg.security.token.__elgg_ts; + args["__elgg_token"] = elgg.security.token.__elgg_token; - return args.join('&'); + return base + '?' + jQuery.param(args); } // no input! acts like a getter diff --git a/js/lib/ui.js b/js/lib/ui.js index 7abf7626f..57378a4d6 100644 --- a/js/lib/ui.js +++ b/js/lib/ui.js @@ -19,6 +19,8 @@ elgg.ui.init = function () { $('.elgg-requires-confirmation').live('click', elgg.ui.requiresConfirmation); + $('.elgg-autofocus').focus(); + if ($('.elgg-input-date').length) { elgg.ui.initDatePicker(); } diff --git a/languages/en.php b/languages/en.php index c739d554e..67e447901 100644 --- a/languages/en.php +++ b/languages/en.php @@ -225,6 +225,7 @@ $english = array( 'LoginException:UsernameFailure' => 'We could not log you in. Please check your username and password.', 'LoginException:PasswordFailure' => 'We could not log you in. Please check your username and password.', 'LoginException:AccountLocked' => 'Your account has been locked for too many log in failures.', + 'LoginException:ChangePasswordFailure' => 'Failed current password check.', 'memcache:notinstalled' => 'PHP memcache module not installed, you must install php5-memcache', 'memcache:noservers' => 'No memcache servers defined, please populate the $CONFIG->memcache_servers variable', @@ -379,6 +380,14 @@ $english = array( 'profile:twitter' => "Twitter username", 'profile:saved' => "Your profile was successfully saved.", + 'profile:field:text' => 'Short text', + 'profile:field:longtext' => 'Large text area', + 'profile:field:tags' => 'Tags', + 'profile:field:url' => 'Web address', + 'profile:field:email' => 'Email address', + 'profile:field:location' => 'Location', + 'profile:field:date' => 'Date', + 'admin:appearance:profile_fields' => 'Edit Profile Fields', 'profile:edit:default' => 'Edit profile fields', 'profile:label' => "Profile label", @@ -428,6 +437,7 @@ $english = array( */ 'notifications:usersettings' => "Notification settings", 'notifications:methods' => "Please specify which methods you want to permit.", + 'notification:method:email' => 'Email', 'notifications:usersettings:save:ok' => "Your notification settings were successfully saved.", 'notifications:usersettings:save:fail' => "There was a problem saving your notification settings.", @@ -676,17 +686,12 @@ $english = array( 'admin:plugins:plugin_website' => 'Plugin website', 'admin:plugins:author' => '%s', 'admin:plugins:version' => 'Version %s', - 'admin:plugins:simple' => 'Simple', - 'admin:plugins:advanced' => 'Advanced', 'admin:plugin_settings' => 'Plugin Settings', - 'admin:plugins:simple_simple_fail' => 'Could not save settings.', - 'admin:plugins:simple_simple_success' => 'Settings saved.', - 'admin:plugins:simple:cannot_activate' => 'Cannot activate this plugin. Check the advanced plugin admin area for more information.', 'admin:plugins:warning:unmet_dependencies_active' => 'This plugin is active but has unmet dependencies. You may encounter problems. See "more info" below for details.', 'admin:plugins:dependencies:type' => 'Type', 'admin:plugins:dependencies:name' => 'Name', - 'admin:plugins:dependencies:expected_value' => 'Tested Value', + 'admin:plugins:dependencies:expected_value' => 'Expected Value', 'admin:plugins:dependencies:local_value' => 'Actual value', 'admin:plugins:dependencies:comment' => 'Comment', diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php index f24e6f58d..41924f336 100644 --- a/mod/blog/lib/blog.php +++ b/mod/blog/lib/blog.php @@ -124,6 +124,9 @@ function blog_get_page_content_list($container_guid = NULL) { function blog_get_page_content_friends($user_guid) { $user = get_user($user_guid); + if (!$user) { + forward('blog/all'); + } $return = array(); diff --git a/mod/blog/manifest.xml b/mod/blog/manifest.xml index 991462060..dfbd7a1a6 100644 --- a/mod/blog/manifest.xml +++ b/mod/blog/manifest.xml @@ -15,6 +15,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/blog/views/default/blog/group_module.php b/mod/blog/views/default/blog/group_module.php index d769fbd59..028827178 100644 --- a/mod/blog/views/default/blog/group_module.php +++ b/mod/blog/views/default/blog/group_module.php @@ -12,6 +12,7 @@ if ($group->blog_enable == "no") { $all_link = elgg_view('output/url', array( 'href' => "blog/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); elgg_push_context('widgets'); @@ -33,6 +34,7 @@ if (!$content) { $new_link = elgg_view('output/url', array( 'href' => "blog/add/$group->guid", 'text' => elgg_echo('blog:write'), + 'is_trusted' => true, )); echo elgg_view('groups/profile/module', array( diff --git a/mod/blog/views/default/blog/sidebar/revisions.php b/mod/blog/views/default/blog/sidebar/revisions.php index c23b3b052..cd2e7f3d8 100644 --- a/mod/blog/views/default/blog/sidebar/revisions.php +++ b/mod/blog/views/default/blog/sidebar/revisions.php @@ -39,7 +39,8 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { if ($blog->status == 'published') { $load = elgg_view('output/url', array( 'href' => $load_base_url, - 'text' => elgg_echo('blog:status:published') + 'text' => elgg_echo('blog:status:published'), + 'is_trusted' => true, )); $time = "<span class='elgg-subtext'>" @@ -59,7 +60,8 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { } $load = elgg_view('output/url', array( 'href' => "$load_base_url/$revision->id", - 'text' => $revision_lang + 'text' => $revision_lang, + 'is_trusted' => true, )); $text = "$load: $time"; diff --git a/mod/blog/views/default/object/blog.php b/mod/blog/views/default/object/blog.php index ba08180b1..ab75bd09b 100644 --- a/mod/blog/views/default/object/blog.php +++ b/mod/blog/views/default/object/blog.php @@ -21,6 +21,7 @@ $owner_icon = elgg_view_entity_icon($owner, 'tiny'); $owner_link = elgg_view('output/url', array( 'href' => "blog/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); $tags = elgg_view('output/tags', array('tags' => $blog->tags)); @@ -35,6 +36,7 @@ if ($blog->comments_on != 'Off') { $comments_link = elgg_view('output/url', array( 'href' => $blog->getURL() . '#blog-comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; diff --git a/mod/blog/views/default/widgets/blog/content.php b/mod/blog/views/default/widgets/blog/content.php index 7bbfc3c74..330171662 100644 --- a/mod/blog/views/default/widgets/blog/content.php +++ b/mod/blog/views/default/widgets/blog/content.php @@ -22,6 +22,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $blog_url, 'text' => elgg_echo('blog:moreblogs'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/bookmarks/manifest.xml b/mod/bookmarks/manifest.xml index 72e9af9b0..24969b837 100644 --- a/mod/bookmarks/manifest.xml +++ b/mod/bookmarks/manifest.xml @@ -16,5 +16,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>simple</admin_interface> </plugin_manifest> diff --git a/mod/bookmarks/pages/bookmarks/friends.php b/mod/bookmarks/pages/bookmarks/friends.php index 3491090a5..be164fcec 100644 --- a/mod/bookmarks/pages/bookmarks/friends.php +++ b/mod/bookmarks/pages/bookmarks/friends.php @@ -6,6 +6,9 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$page_owner) { + forward('bookmarks/all'); +} elgg_push_breadcrumb($owner->name, "bookmarks/owner/$owner->username"); elgg_push_breadcrumb(elgg_echo('friends')); diff --git a/mod/bookmarks/pages/bookmarks/owner.php b/mod/bookmarks/pages/bookmarks/owner.php index 679c986be..7f55e08de 100644 --- a/mod/bookmarks/pages/bookmarks/owner.php +++ b/mod/bookmarks/pages/bookmarks/owner.php @@ -6,6 +6,9 @@ */ $page_owner = elgg_get_page_owner_entity(); +if (!$page_owner) { + forward('bookmarks/all'); +} elgg_push_breadcrumb($page_owner->name); diff --git a/mod/bookmarks/views/default/bookmarks/group_module.php b/mod/bookmarks/views/default/bookmarks/group_module.php index 3797de010..60a727819 100644 --- a/mod/bookmarks/views/default/bookmarks/group_module.php +++ b/mod/bookmarks/views/default/bookmarks/group_module.php @@ -14,6 +14,7 @@ if ($group->bookmarks_enable == "no") { $all_link = elgg_view('output/url', array( 'href' => "bookmarks/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); elgg_push_context('widgets'); @@ -35,6 +36,7 @@ if (!$content) { $new_link = elgg_view('output/url', array( 'href' => "bookmarks/add/$group->guid", 'text' => elgg_echo('bookmarks:add'), + 'is_trusted' => true, )); echo elgg_view('groups/profile/module', array( diff --git a/mod/bookmarks/views/default/object/bookmarks.php b/mod/bookmarks/views/default/object/bookmarks.php index ca1f5d312..784263232 100644 --- a/mod/bookmarks/views/default/object/bookmarks.php +++ b/mod/bookmarks/views/default/object/bookmarks.php @@ -17,12 +17,13 @@ $owner_icon = elgg_view_entity_icon($owner, 'tiny'); $container = $bookmark->getContainerEntity(); $categories = elgg_view('output/categories', $vars); -$link = filter_tags(elgg_view('output/url', array('href' => $bookmark->address, 'rel' => 'nofollow'))); +$link = elgg_view('output/url', array('href' => $bookmark->address)); $description = elgg_view('output/longtext', array('value' => $bookmark->description, 'class' => 'pbl')); $owner_link = elgg_view('output/url', array( 'href' => "bookmarks/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); @@ -36,6 +37,7 @@ if ($comments_count != 0) { $comments_link = elgg_view('output/url', array( 'href' => $bookmark->getURL() . '#comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; @@ -104,11 +106,10 @@ HTML; } } - $link = filter_tags(elgg_view('output/url', array( + $link = elgg_view('output/url', array( 'href' => $bookmark->address, 'text' => $display_text, - 'rel' => 'nofollow', - ))); + )); $content = elgg_view_icon('push-pin-alt') . "$link{$excerpt}"; diff --git a/mod/bookmarks/views/default/widgets/bookmarks/content.php b/mod/bookmarks/views/default/widgets/bookmarks/content.php index ea7816345..0b85017fc 100644 --- a/mod/bookmarks/views/default/widgets/bookmarks/content.php +++ b/mod/bookmarks/views/default/widgets/bookmarks/content.php @@ -24,6 +24,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('bookmarks:more'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/bookmarks/views/default/widgets/bookmarks/edit.php b/mod/bookmarks/views/default/widgets/bookmarks/edit.php index 99d65ac8f..ed9c7fd88 100644 --- a/mod/bookmarks/views/default/widgets/bookmarks/edit.php +++ b/mod/bookmarks/views/default/widgets/bookmarks/edit.php @@ -6,13 +6,13 @@ */ // set default value -if (!isset($vars['entity']->max_display)) { - $vars['entity']->max_display = 4; +if (!isset($vars['entity']->num_display)) { + $vars['entity']->num_display = 4; } $params = array( - 'name' => 'params[max_display]', - 'value' => $vars['entity']->max_display, + 'name' => 'params[num_display]', + 'value' => $vars['entity']->num_display, 'options' => array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), ); $dropdown = elgg_view('input/dropdown', $params); diff --git a/mod/categories/manifest.xml b/mod/categories/manifest.xml index 15d7192c1..db6f0324f 100644 --- a/mod/categories/manifest.xml +++ b/mod/categories/manifest.xml @@ -14,5 +14,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/categories/listing.php b/mod/categories/pages/categories/listing.php index abbcf6785..8924506e9 100644 --- a/mod/categories/listing.php +++ b/mod/categories/pages/categories/listing.php @@ -29,6 +29,11 @@ $title = elgg_echo('categories:results', array($category)); $content = elgg_view_title($title); $content .= $objects; -$body = elgg_view_layout('two_column_left_sidebar', '', $content); +$body = elgg_view_layout('content', array( + 'content' => $content, + 'title' => $title, + 'filter' => '', + 'header' => '', +)); echo elgg_view_page($title, $body); diff --git a/mod/categories/start.php b/mod/categories/start.php index 2ccea0d70..b6bc4a55c 100644 --- a/mod/categories/start.php +++ b/mod/categories/start.php @@ -31,7 +31,7 @@ function categories_init() { * */ function categories_page_handler() { - include(dirname(__FILE__) . "/listing.php"); + include(dirname(__FILE__) . "/pages/categories/listing.php"); return TRUE; } diff --git a/mod/custom_index/manifest.xml b/mod/custom_index/manifest.xml index 7bb2a2543..dd00f2c49 100644 --- a/mod/custom_index/manifest.xml +++ b/mod/custom_index/manifest.xml @@ -12,5 +12,4 @@ <type>elgg_version</type> <version>2009030702</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/dashboard/manifest.xml b/mod/dashboard/manifest.xml index b5e9cff2e..7096fc86a 100644 --- a/mod/dashboard/manifest.xml +++ b/mod/dashboard/manifest.xml @@ -12,5 +12,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> -</plugin_manifest>
\ No newline at end of file +</plugin_manifest> diff --git a/mod/developers/manifest.xml b/mod/developers/manifest.xml index 4a7ed82bd..25840e164 100644 --- a/mod/developers/manifest.xml +++ b/mod/developers/manifest.xml @@ -15,7 +15,4 @@ <type>elgg_version</type> <version>2009030802</version> </requires> - - <admin_interface>advanced</admin_interface> - </plugin_manifest> diff --git a/mod/developers/views/default/theme_preview/general.php b/mod/developers/views/default/theme_preview/general.php index 1a0b54c88..35d8ccbfd 100644 --- a/mod/developers/views/default/theme_preview/general.php +++ b/mod/developers/views/default/theme_preview/general.php @@ -17,6 +17,7 @@ 'text' => elgg_echo('theme_preview:breakout'), 'href' => current_page_url(), 'target' => '_parent', + 'is_trusted' => true, )); ?> </p> diff --git a/mod/diagnostics/manifest.xml b/mod/diagnostics/manifest.xml index e85b19aef..5ebd7cf55 100644 --- a/mod/diagnostics/manifest.xml +++ b/mod/diagnostics/manifest.xml @@ -14,5 +14,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/diagnostics/views/default/admin/develop_utilities/diagnostics.php b/mod/diagnostics/views/default/admin/develop_utilities/diagnostics.php index 76f12b0ae..b41907da2 100644 --- a/mod/diagnostics/views/default/admin/develop_utilities/diagnostics.php +++ b/mod/diagnostics/views/default/admin/develop_utilities/diagnostics.php @@ -18,6 +18,7 @@ if (elgg_get_config('debug')) { 'text' => elgg_echo('diagnostics:test:executeall'), 'href' => 'engine/tests/suite.php', 'class' => 'elgg-button elgg-button-submit', + 'is_trusted' => true, ); $unit_tests .= '<p>' . elgg_view('output/url', $params) . '</p>'; } else { diff --git a/mod/embed/manifest.xml b/mod/embed/manifest.xml index 02c012330..27e9b9ada 100644 --- a/mod/embed/manifest.xml +++ b/mod/embed/manifest.xml @@ -18,5 +18,4 @@ <name>file</name> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/externalpages/manifest.xml b/mod/externalpages/manifest.xml index 32528585d..4064ea602 100644 --- a/mod/externalpages/manifest.xml +++ b/mod/externalpages/manifest.xml @@ -12,5 +12,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/file/actions/file/upload.php b/mod/file/actions/file/upload.php index ee2889b4c..3edc87952 100644 --- a/mod/file/actions/file/upload.php +++ b/mod/file/actions/file/upload.php @@ -19,6 +19,11 @@ if ($container_guid == 0) { elgg_make_sticky_form('file'); +// check if upload failed +if (!empty($_FILES['upload']['name']) && $_FILES['upload']['error'] != 0) { + register_error(elgg_echo('file:cannotload')); + forward(REFERER); +} // check whether this is a new file or an edit $new_file = true; @@ -29,7 +34,6 @@ if ($guid > 0) { if ($new_file) { // must have a file if a new file upload if (empty($_FILES['upload']['name'])) { - $error = elgg_echo('file:nofile'); register_error($error); forward(REFERER); diff --git a/mod/file/languages/en.php b/mod/file/languages/en.php index aa30084a9..96fbd1c48 100644 --- a/mod/file/languages/en.php +++ b/mod/file/languages/en.php @@ -100,7 +100,7 @@ $english = array( 'file:downloadfailed' => "Sorry; this file is not available at this time.", 'file:deletefailed' => "Your file could not be deleted at this time.", 'file:noaccess' => "You do not have permissions to change this file", - 'file:cannotload' => "There was an error loading the file", + 'file:cannotload' => "There was an error uploading the file", 'file:nofile' => "You must select a file", ); diff --git a/mod/file/manifest.xml b/mod/file/manifest.xml index aac9c3f6b..8a80e38dc 100644 --- a/mod/file/manifest.xml +++ b/mod/file/manifest.xml @@ -14,6 +14,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/file/pages/file/friends.php b/mod/file/pages/file/friends.php index 0b351efaf..f504bdc1f 100644 --- a/mod/file/pages/file/friends.php +++ b/mod/file/pages/file/friends.php @@ -6,6 +6,9 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('file/all'); +} elgg_push_breadcrumb(elgg_echo('file'), "file/all"); elgg_push_breadcrumb($owner->name, "file/owner/$owner->username"); diff --git a/mod/file/pages/file/owner.php b/mod/file/pages/file/owner.php index 4e2ec89d4..fb87af1b2 100644 --- a/mod/file/pages/file/owner.php +++ b/mod/file/pages/file/owner.php @@ -9,6 +9,9 @@ group_gatekeeper(); $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('file/all'); +} elgg_push_breadcrumb(elgg_echo('file'), "file/all"); elgg_push_breadcrumb($owner->name); diff --git a/mod/file/views/default/file/group_module.php b/mod/file/views/default/file/group_module.php index c37b13927..ad6c58dbb 100644 --- a/mod/file/views/default/file/group_module.php +++ b/mod/file/views/default/file/group_module.php @@ -12,6 +12,7 @@ if ($group->file_enable == "no") { $all_link = elgg_view('output/url', array( 'href' => "file/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); elgg_push_context('widgets'); @@ -33,6 +34,7 @@ if (!$content) { $new_link = elgg_view('output/url', array( 'href' => "file/add/$group->guid", 'text' => elgg_echo('file:add'), + 'is_trusted' => true, )); echo elgg_view('groups/profile/module', array( diff --git a/mod/file/views/default/icon/object/file.php b/mod/file/views/default/icon/object/file.php index 7feba7af3..ff729da94 100644 --- a/mod/file/views/default/icon/object/file.php +++ b/mod/file/views/default/icon/object/file.php @@ -36,6 +36,7 @@ if ($url) { $params = array( 'href' => $url, 'text' => $img, + 'is_trusted' => true, ); if (isset($vars['link_class'])) { $params['class'] = $vars['link_class']; diff --git a/mod/file/views/default/object/file.php b/mod/file/views/default/object/file.php index 95e190d35..fbd585b8a 100644 --- a/mod/file/views/default/object/file.php +++ b/mod/file/views/default/object/file.php @@ -24,6 +24,7 @@ $body = elgg_view('output/longtext', array('value' => $file->description)); $owner_link = elgg_view('output/url', array( 'href' => "file/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); @@ -39,6 +40,7 @@ if ($comments_count != 0) { $comments_link = elgg_view('output/url', array( 'href' => $file->getURL() . '#file-comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; diff --git a/mod/file/views/default/widgets/filerepo/content.php b/mod/file/views/default/widgets/filerepo/content.php index 4288b9e56..f3e152de3 100644 --- a/mod/file/views/default/widgets/filerepo/content.php +++ b/mod/file/views/default/widgets/filerepo/content.php @@ -25,6 +25,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('file:more'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/garbagecollector/manifest.xml b/mod/garbagecollector/manifest.xml index 466e49d61..0da71cd6b 100644 --- a/mod/garbagecollector/manifest.xml +++ b/mod/garbagecollector/manifest.xml @@ -14,5 +14,4 @@ <version>2009030702</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/groups/manifest.xml b/mod/groups/manifest.xml index 4188aa861..542e9de01 100644 --- a/mod/groups/manifest.xml +++ b/mod/groups/manifest.xml @@ -15,5 +15,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>simple</admin_interface> </plugin_manifest> diff --git a/mod/groups/start.php b/mod/groups/start.php index 0425bdea6..1b5b03ce7 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -562,8 +562,10 @@ function groups_user_join_event_listener($event, $object_type, $object) { * Make sure users are added to the access collection */ function groups_access_collection_override($hook, $entity_type, $returnvalue, $params) { - if (elgg_instanceof(get_entity($params['collection']->owner_guid), 'group')) { - return true; + if (isset($params['collection'])) { + if (elgg_instanceof(get_entity($params['collection']->owner_guid), 'group')) { + return true; + } } } diff --git a/mod/groups/views/default/discussion/group_module.php b/mod/groups/views/default/discussion/group_module.php index 3a46e336e..3c9961f82 100644 --- a/mod/groups/views/default/discussion/group_module.php +++ b/mod/groups/views/default/discussion/group_module.php @@ -15,6 +15,7 @@ $group = $vars['entity']; $all_link = elgg_view('output/url', array( 'href' => "discussion/owner/$group->guid", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); elgg_push_context('widgets'); @@ -36,6 +37,7 @@ if (!$content) { $new_link = elgg_view('output/url', array( 'href' => "discussion/add/" . $group->getGUID(), 'text' => elgg_echo('groups:addtopic'), + 'is_trusted' => true, )); echo elgg_view('groups/profile/module', array( diff --git a/mod/groups/views/default/groups/invitationrequests.php b/mod/groups/views/default/groups/invitationrequests.php index 9c2df8b9c..e644b6bdc 100644 --- a/mod/groups/views/default/groups/invitationrequests.php +++ b/mod/groups/views/default/groups/invitationrequests.php @@ -15,6 +15,7 @@ if (!empty($vars['invitations']) && is_array($vars['invitations'])) { $group_title = elgg_view('output/url', array( 'href' => $group->getURL(), 'text' => $group->name, + 'is_trusted' => true, )); $url = elgg_add_action_tokens_to_url(elgg_get_site_url()."action/groups/join?user_guid={$user->guid}&group_guid={$group->guid}"); @@ -22,6 +23,7 @@ if (!empty($vars['invitations']) && is_array($vars['invitations'])) { 'href' => $url, 'text' => elgg_echo('accept'), 'class' => 'elgg-button elgg-button-submit', + 'is_trusted' => true, )); $url = "action/groups/killinvitation?user_guid={$user->getGUID()}&group_guid={$group->getGUID()}"; diff --git a/mod/groups/views/default/groups/membershiprequests.php b/mod/groups/views/default/groups/membershiprequests.php index 7f33b83e0..489d6f5e3 100644 --- a/mod/groups/views/default/groups/membershiprequests.php +++ b/mod/groups/views/default/groups/membershiprequests.php @@ -16,6 +16,7 @@ if (!empty($vars['requests']) && is_array($vars['requests'])) { $user_title = elgg_view('output/url', array( 'href' => $user->getURL(), 'text' => $user->name, + 'is_trusted' => true, )); $url = "action/groups/addtogroup?user_guid={$user->guid}&group_guid={$vars['entity']->guid}"; @@ -24,6 +25,7 @@ if (!empty($vars['requests']) && is_array($vars['requests'])) { 'href' => $url, 'text' => elgg_echo('accept'), 'class' => 'elgg-button elgg-button-submit', + 'is_trusted' => true, )); $url = 'action/groups/killrequest?user_guid=' . $user->guid . '&group_guid=' . $vars['entity']->guid; diff --git a/mod/groups/views/default/groups/profile/activity_module.php b/mod/groups/views/default/groups/profile/activity_module.php index 5e557b443..832ff4a4b 100644 --- a/mod/groups/views/default/groups/profile/activity_module.php +++ b/mod/groups/views/default/groups/profile/activity_module.php @@ -19,6 +19,7 @@ if (!$group) { $all_link = elgg_view('output/url', array( 'href' => "groups/activity/$group->guid", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); diff --git a/mod/groups/views/default/groups/profile/summary.php b/mod/groups/views/default/groups/profile/summary.php index b7ae51070..54abcb1e5 100644 --- a/mod/groups/views/default/groups/profile/summary.php +++ b/mod/groups/views/default/groups/profile/summary.php @@ -28,6 +28,7 @@ $owner = $group->getOwnerEntity(); echo elgg_view('output/url', array( 'text' => $owner->name, 'value' => $owner->getURL(), + 'is_trusted' => true, )); ?> </p> diff --git a/mod/groups/views/default/groups/sidebar/members.php b/mod/groups/views/default/groups/sidebar/members.php index 7249ffbf4..49f14697c 100644 --- a/mod/groups/views/default/groups/sidebar/members.php +++ b/mod/groups/views/default/groups/sidebar/members.php @@ -13,6 +13,7 @@ $limit = elgg_extract('limit', $vars, 10); $all_link = elgg_view('output/url', array( 'href' => 'groups/members/' . $vars['entity']->guid, 'text' => elgg_echo('groups:members:more'), + 'is_trusted' => true, )); $body = elgg_list_entities_from_relationship(array( diff --git a/mod/groups/views/default/object/groupforumtopic.php b/mod/groups/views/default/object/groupforumtopic.php index 22589b84d..f3d5f96d5 100644 --- a/mod/groups/views/default/object/groupforumtopic.php +++ b/mod/groups/views/default/object/groupforumtopic.php @@ -20,6 +20,7 @@ $poster_icon = elgg_view_entity_icon($poster, 'tiny'); $poster_link = elgg_view('output/url', array( 'href' => $poster->getURL(), 'text' => $poster->name, + 'is_trusted' => true, )); $poster_text = elgg_echo('groups:started', array($poster->name)); @@ -42,6 +43,7 @@ if ($num_replies != 0) { $replies_link = elgg_view('output/url', array( 'href' => $topic->getURL() . '#group-replies', 'text' => elgg_echo('group:replies') . " ($num_replies)", + 'is_trusted' => true, )); } diff --git a/mod/groups/views/default/widgets/a_users_groups/content.php b/mod/groups/views/default/widgets/a_users_groups/content.php index 114fd7565..fe1a46e39 100644 --- a/mod/groups/views/default/widgets/a_users_groups/content.php +++ b/mod/groups/views/default/widgets/a_users_groups/content.php @@ -25,6 +25,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('groups:more'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/htmlawed/manifest.xml b/mod/htmlawed/manifest.xml index 0c48bbd28..b176834e5 100644 --- a/mod/htmlawed/manifest.xml +++ b/mod/htmlawed/manifest.xml @@ -14,5 +14,4 @@ <version>2009041701</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/invitefriends/manifest.xml b/mod/invitefriends/manifest.xml index e02c19c36..75a2d17f2 100644 --- a/mod/invitefriends/manifest.xml +++ b/mod/invitefriends/manifest.xml @@ -13,6 +13,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/likes/manifest.xml b/mod/likes/manifest.xml index f63c643a6..946cfd86b 100644 --- a/mod/likes/manifest.xml +++ b/mod/likes/manifest.xml @@ -14,5 +14,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> -</plugin_manifest>
\ No newline at end of file +</plugin_manifest> diff --git a/mod/likes/views/default/annotation/likes.php b/mod/likes/views/default/annotation/likes.php index 2dd01b6cd..314d0790d 100644 --- a/mod/likes/views/default/annotation/likes.php +++ b/mod/likes/views/default/annotation/likes.php @@ -20,6 +20,7 @@ $user_icon = elgg_view_entity_icon($user, 'tiny'); $user_link = elgg_view('output/url', array( 'href' => $user->getURL(), 'text' => $user->name, + 'is_trusted' => true, )); $likes_string = elgg_echo('likes:this'); diff --git a/mod/likes/views/default/likes/button.php b/mod/likes/views/default/likes/button.php index 383e1bb63..3f2f073cc 100644 --- a/mod/likes/views/default/likes/button.php +++ b/mod/likes/views/default/likes/button.php @@ -20,6 +20,7 @@ if (elgg_is_logged_in() && $vars['entity']->canAnnotate(0, 'likes')) { 'text' => elgg_view_icon('thumbs-up'), 'title' => elgg_echo('likes:likethis'), 'is_action' => true, + 'is_trusted' => true, ); $likes_button = elgg_view('output/url', $params); } else { @@ -34,6 +35,7 @@ if (elgg_is_logged_in() && $vars['entity']->canAnnotate(0, 'likes')) { 'text' => elgg_view_icon('thumbs-up-alt'), 'title' => elgg_echo('likes:remove'), 'is_action' => true, + 'is_trusted' => true, ); $likes_button = elgg_view('output/url', $params); } diff --git a/mod/logbrowser/manifest.xml b/mod/logbrowser/manifest.xml index 585288912..846ad155a 100644 --- a/mod/logbrowser/manifest.xml +++ b/mod/logbrowser/manifest.xml @@ -14,5 +14,4 @@ <version>2009030702</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/logbrowser/views/default/logbrowser/table.php b/mod/logbrowser/views/default/logbrowser/table.php index 86c8a1423..b7f6a1f20 100644 --- a/mod/logbrowser/views/default/logbrowser/table.php +++ b/mod/logbrowser/views/default/logbrowser/table.php @@ -24,11 +24,13 @@ $log_entries = $vars['log_entries']; if ($user) { $user_link = elgg_view('output/url', array( 'href' => $user->getURL(), - 'text' => $user->name + 'text' => $user->name, + 'is_trusted' => true, )); $user_guid_link = elgg_view('output/url', array( 'href' => "admin/overview/logbrowser?user_guid=$user->guid", - 'text' => $user->getGUID() + 'text' => $user->getGUID(), + 'is_trusted' => true, )); } else { $user_guid_link = $user_link = ' '; @@ -38,7 +40,8 @@ $log_entries = $vars['log_entries']; if (is_callable(array($object, 'getURL'))) { $object_link = elgg_view('output/url', array( 'href' => $object->getURL(), - 'text' => $entry->object_class + 'text' => $entry->object_class, + 'is_trusted' => true, )); } else { $object_link = $entry->object_class; diff --git a/mod/logrotate/manifest.xml b/mod/logrotate/manifest.xml index ab6250ac0..503bf6cd1 100644 --- a/mod/logrotate/manifest.xml +++ b/mod/logrotate/manifest.xml @@ -14,5 +14,4 @@ <version>2009030702</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/logrotate/views/default/plugins/logrotate/settings.php b/mod/logrotate/views/default/plugins/logrotate/settings.php index d9c4032fe..bef8b308d 100644 --- a/mod/logrotate/views/default/plugins/logrotate/settings.php +++ b/mod/logrotate/views/default/plugins/logrotate/settings.php @@ -6,13 +6,13 @@ */ $period = $vars['entity']->period; -$time = $vars['entity']->time; +$delete = $vars['entity']->delete; if (!$period) { $period = 'monthly'; } -if (!$time) { - $time = 'monthly'; +if (!$delete) { + $delete = 'monthly'; } ?> <div> @@ -26,7 +26,7 @@ if (!$time) { 'monthly' => elgg_echo('logrotate:monthly'), 'yearly' => elgg_echo('logrotate:yearly'), ), - 'value' => $period + 'value' => $period, )); ?> </div> @@ -41,7 +41,7 @@ if (!$time) { 'monthly' => elgg_echo('logrotate:month'), 'yearly' => elgg_echo('logrotate:year'), ), - 'value' => $time + 'value' => $delete, )); ?> </div> diff --git a/mod/members/manifest.xml b/mod/members/manifest.xml index b96684198..f5e95eb41 100644 --- a/mod/members/manifest.xml +++ b/mod/members/manifest.xml @@ -13,5 +13,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> -</plugin_manifest>
\ No newline at end of file +</plugin_manifest> diff --git a/mod/messageboard/manifest.xml b/mod/messageboard/manifest.xml index 25c42ee93..5881c4e46 100644 --- a/mod/messageboard/manifest.xml +++ b/mod/messageboard/manifest.xml @@ -14,5 +14,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>simple</admin_interface> </plugin_manifest> diff --git a/mod/messageboard/views/default/widgets/messageboard/content.php b/mod/messageboard/views/default/widgets/messageboard/content.php index 63f389e6a..35954e7a3 100644 --- a/mod/messageboard/views/default/widgets/messageboard/content.php +++ b/mod/messageboard/views/default/widgets/messageboard/content.php @@ -31,4 +31,5 @@ if ($owner instanceof ElggGroup) { echo elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('messageboard:viewall'), + 'is_trusted' => true, ));
\ No newline at end of file diff --git a/mod/messages/languages/en.php b/mod/messages/languages/en.php index 2002905b7..308c3d519 100644 --- a/mod/messages/languages/en.php +++ b/mod/messages/languages/en.php @@ -39,7 +39,7 @@ $english = array( 'messages:new' => 'New message', - 'notification:method:site' => 'Messages', + 'notification:method:site' => 'Site', 'messages:error' => 'There was a problem saving your message. Please try again.', diff --git a/mod/messages/manifest.xml b/mod/messages/manifest.xml index 66ca4b444..30acc240d 100644 --- a/mod/messages/manifest.xml +++ b/mod/messages/manifest.xml @@ -14,5 +14,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>simple</admin_interface> </plugin_manifest> diff --git a/mod/messages/views/default/object/messages.php b/mod/messages/views/default/object/messages.php index b6f9ed6d5..8c840dd57 100644 --- a/mod/messages/views/default/object/messages.php +++ b/mod/messages/views/default/object/messages.php @@ -24,6 +24,7 @@ if ($message->toId == elgg_get_page_owner_guid()) { $user_link = elgg_view('output/url', array( 'href' => "messages/compose?send_to=$user->guid", 'text' => $user->name, + 'is_trusted' => true, )); } else { $icon = ''; @@ -45,6 +46,7 @@ if ($message->toId == elgg_get_page_owner_guid()) { $user_link = elgg_view('output/url', array( 'href' => "messages/compose?send_to=$user->guid", 'text' => elgg_echo('messages:to_user', array($user->name)), + 'is_trusted' => true, )); } else { $icon = ''; @@ -63,6 +65,7 @@ if (!$full) { $subject_info .= elgg_view('output/url', array( 'href' => $message->getURL(), 'text' => $message->title, + 'is_trusted' => true, )); $delete_link = elgg_view("output/confirmlink", array( diff --git a/mod/notifications/languages/en.php b/mod/notifications/languages/en.php index 586d66892..b29c9df25 100644 --- a/mod/notifications/languages/en.php +++ b/mod/notifications/languages/en.php @@ -13,7 +13,6 @@ $english = array( 'notifications:subscriptions:changesettings' => 'Notifications', 'notifications:subscriptions:changesettings:groups' => 'Group notifications', - 'notification:method:email' => 'Email', 'notifications:subscriptions:title' => 'Notifications per user', 'notifications:subscriptions:description' => 'To receive notifications from your friends (on an individual basis) when they create new content, find them below and select the notification method you would like to use.', diff --git a/mod/notifications/manifest.xml b/mod/notifications/manifest.xml index 16a67cb00..97b88fb75 100644 --- a/mod/notifications/manifest.xml +++ b/mod/notifications/manifest.xml @@ -12,6 +12,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/pages/manifest.xml b/mod/pages/manifest.xml index 4b5e5c747..a91881cab 100644 --- a/mod/pages/manifest.xml +++ b/mod/pages/manifest.xml @@ -14,6 +14,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/pages/pages/pages/friends.php b/mod/pages/pages/pages/friends.php index c55b27466..87ac631c2 100644 --- a/mod/pages/pages/pages/friends.php +++ b/mod/pages/pages/pages/friends.php @@ -7,7 +7,7 @@ $owner = elgg_get_page_owner_entity(); if (!$owner) { - + forward('pages/all'); } elgg_push_breadcrumb($owner->name, "pages/owner/$owner->username"); diff --git a/mod/pages/pages/pages/owner.php b/mod/pages/pages/pages/owner.php index 2ff310ac8..2ff45ae0c 100644 --- a/mod/pages/pages/pages/owner.php +++ b/mod/pages/pages/pages/owner.php @@ -7,7 +7,7 @@ $owner = elgg_get_page_owner_entity(); if (!$owner) { - + forward('pages/all'); } // access check for closed groups diff --git a/mod/pages/views/default/annotation/page.php b/mod/pages/views/default/annotation/page.php index f7a7a78a1..a621b9281 100644 --- a/mod/pages/views/default/annotation/page.php +++ b/mod/pages/views/default/annotation/page.php @@ -21,6 +21,7 @@ if (!$owner) { $owner_link = elgg_view('output/url', array( 'href' => $owner->getURL(), 'text' => $owner->name, + 'is_trusted' => true, )); $date = elgg_view_friendly_time($annotation->time_created); @@ -28,6 +29,7 @@ $date = elgg_view_friendly_time($annotation->time_created); $title_link = elgg_view('output/url', array( 'href' => $annotation->getURL(), 'text' => $page->title, + 'is_trusted' => true, )); $subtitle = elgg_echo('pages:revision:subtitle', array($date, $owner_link)); diff --git a/mod/pages/views/default/object/page_top.php b/mod/pages/views/default/object/page_top.php index 8ba9fc298..0f7b51a0e 100644 --- a/mod/pages/views/default/object/page_top.php +++ b/mod/pages/views/default/object/page_top.php @@ -40,6 +40,7 @@ $editor = get_entity($annotation->owner_guid); $editor_link = elgg_view('output/url', array( 'href' => "pages/owner/$editor->username", 'text' => $editor->name, + 'is_trusted' => true, )); $date = elgg_view_friendly_time($annotation->time_created); @@ -53,6 +54,7 @@ if ($comments_count != 0 && !$revision) { $comments_link = elgg_view('output/url', array( 'href' => $page->getURL() . '#page-comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; diff --git a/mod/pages/views/default/pages/group_module.php b/mod/pages/views/default/pages/group_module.php index 7e2656ca3..0d7df96ac 100644 --- a/mod/pages/views/default/pages/group_module.php +++ b/mod/pages/views/default/pages/group_module.php @@ -15,6 +15,7 @@ if ($group->pages_enable == "no") { $all_link = elgg_view('output/url', array( 'href' => "pages/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); @@ -37,6 +38,7 @@ if (!$content) { $new_link = elgg_view('output/url', array( 'href' => "pages/add/$group->guid", 'text' => elgg_echo('pages:add'), + 'is_trusted' => true, )); echo elgg_view('groups/profile/module', array( diff --git a/mod/pages/views/default/widgets/pages/content.php b/mod/pages/views/default/widgets/pages/content.php index 3ae0b8454..f63777c09 100644 --- a/mod/pages/views/default/widgets/pages/content.php +++ b/mod/pages/views/default/widgets/pages/content.php @@ -24,6 +24,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $url, 'text' => elgg_echo('pages:more'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/profile/manifest.xml b/mod/profile/manifest.xml index d811e373b..a1cff4dc2 100644 --- a/mod/profile/manifest.xml +++ b/mod/profile/manifest.xml @@ -10,7 +10,6 @@ <copyright>See COPYRIGHT.txt</copyright> <license>GNU Public License Version 2</license> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> <requires> <type>elgg_version</type> <version>2011010401</version> diff --git a/mod/reportedcontent/manifest.xml b/mod/reportedcontent/manifest.xml index c51134608..d65b55ca3 100644 --- a/mod/reportedcontent/manifest.xml +++ b/mod/reportedcontent/manifest.xml @@ -13,5 +13,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/reportedcontent/views/default/object/reported_content.php b/mod/reportedcontent/views/default/object/reported_content.php index 6bcbf6e5d..0e733e154 100644 --- a/mod/reportedcontent/views/default/object/reported_content.php +++ b/mod/reportedcontent/views/default/object/reported_content.php @@ -29,6 +29,7 @@ if ($report->state == 'archived') { 'href' => $archive_url, 'text' => elgg_echo('reportedcontent:archive'), 'is_action' => true, + 'is_trusted' => true, 'class' => 'elgg-button elgg-button-action', ); echo elgg_view('output/url', $params); @@ -37,6 +38,7 @@ if ($report->state == 'archived') { 'href' => $delete_url, 'text' => elgg_echo('reportedcontent:delete'), 'is_action' => true, + 'is_trusted' => true, 'class' => 'elgg-button elgg-button-action', ); echo elgg_view('output/url', $params); @@ -46,7 +48,8 @@ if ($report->state == 'archived') { <b><?php echo elgg_echo('reportedcontent:by'); ?>:</b> <?php echo elgg_view('output/url', array( 'href' => $reporter->getURL(), - 'text' => $reporter->name + 'text' => $reporter->name, + 'is_trusted' => true, )); ?>, <?php echo elgg_view_friendly_time($report->time_created); ?> @@ -68,7 +71,8 @@ if ($report->state == 'archived') { <b><?php echo elgg_echo('reportedcontent:objecturl'); ?>:</b> <?php echo elgg_view('output/url', array( 'href' => $report->address, - 'text' => elgg_echo('reportedcontent:visit') + 'text' => elgg_echo('reportedcontent:visit'), + 'is_trusted' => true, )); ?> </p> diff --git a/mod/search/manifest.xml b/mod/search/manifest.xml index 053e22178..b13e127d0 100644 --- a/mod/search/manifest.xml +++ b/mod/search/manifest.xml @@ -13,5 +13,4 @@ <version>2009030702</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/tagcloud/manifest.xml b/mod/tagcloud/manifest.xml index 6fcad14e2..7c64829fc 100644 --- a/mod/tagcloud/manifest.xml +++ b/mod/tagcloud/manifest.xml @@ -13,5 +13,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/thewire/manifest.xml b/mod/thewire/manifest.xml index 27dd5732d..74e811bed 100644 --- a/mod/thewire/manifest.xml +++ b/mod/thewire/manifest.xml @@ -13,6 +13,5 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> </plugin_manifest> diff --git a/mod/thewire/pages/thewire/friends.php b/mod/thewire/pages/thewire/friends.php index 265b73eab..26ad03da6 100644 --- a/mod/thewire/pages/thewire/friends.php +++ b/mod/thewire/pages/thewire/friends.php @@ -4,6 +4,9 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('thewire/all'); +} $title = elgg_echo('thewire:friends'); diff --git a/mod/thewire/pages/thewire/owner.php b/mod/thewire/pages/thewire/owner.php index b6449b217..a95786b0a 100644 --- a/mod/thewire/pages/thewire/owner.php +++ b/mod/thewire/pages/thewire/owner.php @@ -5,6 +5,9 @@ */ $owner = elgg_get_page_owner_entity(); +if (!$owner) { + forward('thewire/all'); +} $title = elgg_echo('thewire:user', array($owner->name)); diff --git a/mod/thewire/views/default/object/thewire.php b/mod/thewire/views/default/object/thewire.php index 2727df60d..134c87243 100644 --- a/mod/thewire/views/default/object/thewire.php +++ b/mod/thewire/views/default/object/thewire.php @@ -26,6 +26,7 @@ $owner_icon = elgg_view_entity_icon($owner, 'tiny'); $owner_link = elgg_view('output/url', array( 'href' => "thewire/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); $date = elgg_view_friendly_time($post->time_created); diff --git a/mod/thewire/views/default/river/object/thewire/create.php b/mod/thewire/views/default/river/object/thewire/create.php index c3c434858..fbf592664 100644 --- a/mod/thewire/views/default/river/object/thewire/create.php +++ b/mod/thewire/views/default/river/object/thewire/create.php @@ -12,12 +12,14 @@ $subject_link = elgg_view('output/url', array( 'href' => $subject->getURL(), 'text' => $subject->name, 'class' => 'elgg-river-subject', + 'is_trusted' => true, )); $object_link = elgg_view('output/url', array( 'href' => "thewire/owner/$subject->username", 'text' => elgg_echo('thewire:wire'), 'class' => 'elgg-river-object', + 'is_trusted' => true, )); $summary = elgg_echo("river:create:object:thewire", array($subject_link, $object_link)); diff --git a/mod/thewire/views/default/thewire/profile_status.php b/mod/thewire/views/default/thewire/profile_status.php index 6ab47bccb..ab20b5341 100644 --- a/mod/thewire/views/default/thewire/profile_status.php +++ b/mod/thewire/views/default/thewire/profile_status.php @@ -28,6 +28,7 @@ if ($latest_wire && count($latest_wire) > 0) { 'text' => elgg_echo('thewire:update'), 'href' => $url_to_wire, 'class' => 'elgg-button elgg-button-action right', + 'is_trusted' => true, )); } diff --git a/mod/thewire/views/default/widgets/thewire/content.php b/mod/thewire/views/default/widgets/thewire/content.php index 835a328b0..7212d4397 100644 --- a/mod/thewire/views/default/widgets/thewire/content.php +++ b/mod/thewire/views/default/widgets/thewire/content.php @@ -22,6 +22,7 @@ if ($content) { $more_link = elgg_view('output/url', array( 'href' => $owner_url, 'text' => elgg_echo('thewire:moreposts'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { diff --git a/mod/tinymce/manifest.xml b/mod/tinymce/manifest.xml index 5e69055d8..2d062d399 100644 --- a/mod/tinymce/manifest.xml +++ b/mod/tinymce/manifest.xml @@ -14,5 +14,4 @@ <version>2010030101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/twitter/manifest.xml b/mod/twitter/manifest.xml index bd7176620..ffb6ccc05 100644 --- a/mod/twitter/manifest.xml +++ b/mod/twitter/manifest.xml @@ -13,5 +13,4 @@ <type>elgg_version</type> <version>2010030101</version> </requires> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/twitter_api/languages/en.php b/mod/twitter_api/languages/en.php index 9d8554a9e..f4b3c7f94 100644 --- a/mod/twitter_api/languages/en.php +++ b/mod/twitter_api/languages/en.php @@ -21,6 +21,8 @@ $english = array( 'twitter_api:usersettings:authorized' => "You have authorized %s to access your Twitter account: @%s.", 'twitter_api:usersettings:revoke' => 'Click <a href="%s">here</a> to revoke access.', + 'twitter_api:usersettings:site_not_configured' => 'An administrator must first configure Twitter before it can be used.', + 'twitter_api:revoke:success' => 'Twitter access has been revoked.', 'twitter_api:login' => 'Allow existing users who have connected their Twitter account to sign in with Twitter?', diff --git a/mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php b/mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php index fdeafd46d..2592013c6 100644 --- a/mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php +++ b/mod/twitter_api/views/default/forms/twitter_api/interstitial_settings.php @@ -58,4 +58,5 @@ echo elgg_view('output/url', array( 'class' => 'right', 'text' => elgg_echo('twitter_api:interstitial:no_thanks'), 'href' => '/', + 'is_trusted' => true, ));
\ No newline at end of file diff --git a/mod/twitter_api/views/default/plugins/twitter_api/usersettings.php b/mod/twitter_api/views/default/plugins/twitter_api/usersettings.php index 65d04b883..edcea2f0d 100644 --- a/mod/twitter_api/views/default/plugins/twitter_api/usersettings.php +++ b/mod/twitter_api/views/default/plugins/twitter_api/usersettings.php @@ -9,6 +9,14 @@ $twitter_name = elgg_get_plugin_user_setting('twitter_name', $user_guid, 'twitte $access_key = elgg_get_plugin_user_setting('access_key', $user_guid, 'twitter_api'); $access_secret = elgg_get_plugin_user_setting('access_secret', $user_guid, 'twitter_api'); +$site_key = elgg_get_plugin_setting('consumer_key', 'twitter_api'); +$site_secret = elgg_get_plugin_setting('consumer_secret', 'twitter_api'); + +if (!($site_key && $site_secret)) { + echo '<div>' . elgg_echo('twitter_api:usersettings:site_not_configured') . '</div>'; + return true; +} + $site_name = elgg_get_site_entity()->name; echo '<div>' . elgg_echo('twitter_api:usersettings:description', array($site_name)) . '</div>'; diff --git a/mod/uservalidationbyemail/manifest.xml b/mod/uservalidationbyemail/manifest.xml index df0a7cb58..3358e1119 100644 --- a/mod/uservalidationbyemail/manifest.xml +++ b/mod/uservalidationbyemail/manifest.xml @@ -14,5 +14,4 @@ <version>2009033101</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php b/mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php index 2872b7a0c..0e1461058 100644 --- a/mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php +++ b/mod/uservalidationbyemail/views/default/forms/uservalidationbyemail/bulk_action.php @@ -52,27 +52,30 @@ $bulk_actions_checkbox = '<label><input type="checkbox" class="unvalidated-users . elgg_echo('uservalidationbyemail:check_all') . '</label>'; $validate = elgg_view('output/url', array( - 'is_action' => TRUE, - 'js' => 'title="' . elgg_echo('uservalidationbyemail:confirm_validate_checked') . '"', - 'href' => $vars['url'] . "action/uservalidationbyemail/validate/", + 'href' => 'action/uservalidationbyemail/validate/', 'text' => elgg_echo('uservalidationbyemail:admin:validate'), + 'title' => elgg_echo('uservalidationbyemail:confirm_validate_checked'), 'class' => 'unvalidated-users-bulk-post', + 'is_action' => true, + 'is_trusted' => true, )); $resend_email = elgg_view('output/url', array( - 'is_action' => TRUE, - 'js' => 'title="' . elgg_echo('uservalidationbyemail:confirm_resend_validation_checked') . '"', - 'href' => $vars['url'] . "action/uservalidationbyemail/resend_validation/", + 'href' => 'action/uservalidationbyemail/resend_validation/', 'text' => elgg_echo('uservalidationbyemail:admin:resend_validation'), + 'title' => elgg_echo('uservalidationbyemail:confirm_resend_validation_checked'), 'class' => 'unvalidated-users-bulk-post', + 'is_action' => true, + 'is_trusted' => true, )); $delete = elgg_view('output/url', array( - 'is_action' => TRUE, - 'js' => 'title="' . elgg_echo('uservalidationbyemail:confirm_delete_checked') . '"', - 'href' => $vars['url'] . "action/uservalidationbyemail/delete/", + 'href' => 'action/uservalidationbyemail/delete/', 'text' => elgg_echo('uservalidationbyemail:admin:delete'), + 'title' => elgg_echo('uservalidationbyemail:confirm_delete_checked'), 'class' => 'unvalidated-users-bulk-post', + 'is_action' => true, + 'is_trusted' => true, )); $bulk_actions = <<<___END diff --git a/mod/zaudio/manifest.xml b/mod/zaudio/manifest.xml index ecbff85fe..423a7e863 100644 --- a/mod/zaudio/manifest.xml +++ b/mod/zaudio/manifest.xml @@ -15,5 +15,4 @@ <version>2010111501</version> </requires> <activate_on_install>true</activate_on_install> - <admin_interface>advanced</admin_interface> </plugin_manifest> diff --git a/version.php b/version.php index d49ce5eb0..5a59b7f83 100644 --- a/version.php +++ b/version.php @@ -14,4 +14,4 @@ $version = 2011092500; // Human-friendly version name -$release = '1.8.0.1'; +$release = '1.8.1b1'; diff --git a/views/default/admin/appearance/default_widgets.php b/views/default/admin/appearance/default_widgets.php index 4416dc8f6..1bf5791ac 100644 --- a/views/default/admin/appearance/default_widgets.php +++ b/views/default/admin/appearance/default_widgets.php @@ -17,6 +17,7 @@ if ($object) { 'text' => elgg_echo('upgrade'), 'href' => 'action/widgets/upgrade', 'is_action' => true, + 'is_trusted' => true, 'class' => 'elgg_button elgg-button-submit', 'title' => 'Upgrade your default widgets to work on Elgg 1.8', )); diff --git a/views/default/admin/appearance/profile_fields/list.php b/views/default/admin/appearance/profile_fields/list.php index 542ab1b6f..f4ff1e986 100644 --- a/views/default/admin/appearance/profile_fields/list.php +++ b/views/default/admin/appearance/profile_fields/list.php @@ -9,15 +9,18 @@ $n = 0; $loaded_defaults = array(); $items = array(); -if ($fieldlist = elgg_get_config('profile_custom_fields')) { +$fieldlist = elgg_get_config('profile_custom_fields'); +if ($fieldlist) { $fieldlistarray = explode(',', $fieldlist); foreach ($fieldlistarray as $listitem) { - if ($translation = elgg_get_config("admin_defined_profile_{$listitem}")) { + $translation = elgg_get_config("admin_defined_profile_$listitem"); + $type = elgg_get_config("admin_defined_profile_type_$listitem"); + if ($translation && $type) { $item = new stdClass; $item->translation = $translation; $item->shortname = $listitem; - $item->name = "admin_defined_profile_{$listitem}"; - $item->type = elgg_get_config("admin_defined_profile_type_{$listitem}"); + $item->name = "admin_defined_profile_$listitem"; + $item->type = elgg_echo("profile:field:$type"); $items[] = $item; } } @@ -36,8 +39,9 @@ foreach ($items as $item) { //$even_odd = ( 'odd' != $even_odd ) ? 'odd' : 'even'; $url = elgg_view('output/url', array( 'href' => "action/profile/fields/delete?id={$item->shortname}", - 'is_action' => TRUE, 'text' => elgg_view_icon('delete-alt'), + 'is_action' => true, + 'is_trusted' => true, )); $type = elgg_echo($item->type); echo <<<HTML diff --git a/views/default/admin/header.php b/views/default/admin/header.php index 3919c017e..331190a88 100644 --- a/views/default/admin/header.php +++ b/views/default/admin/header.php @@ -7,10 +7,12 @@ $admin_title = elgg_get_site_entity()->name . ' ' . elgg_echo('admin'); $view_site = elgg_view('output/url', array( 'href' => elgg_get_site_url(), 'text' => elgg_echo('admin:view_site'), + 'is_trusted' => true, )); $logout = elgg_view('output/url', array( 'href' => 'action/logout', 'text' => elgg_echo('logout'), + 'is_trusted' => true, )); ?> <h1 class="elgg-heading-site"> diff --git a/views/default/core/account/login_box.php b/views/default/core/account/login_box.php index 274172bdb..8c586d425 100644 --- a/views/default/core/account/login_box.php +++ b/views/default/core/account/login_box.php @@ -15,12 +15,3 @@ $title = elgg_echo('login'); $body = elgg_view_form('login', array('action' => "{$login_url}action/login")); echo elgg_view_module('aside', $title, $body); - -?> - - -<script type="text/javascript"> - elgg.register_hook_handler('init', 'system', function() { - $('input[name=username]').focus(); - }); -</script> diff --git a/views/default/core/settings/account/notifications.php b/views/default/core/settings/account/notifications.php index ae5fe40bb..51292b2c9 100644 --- a/views/default/core/settings/account/notifications.php +++ b/views/default/core/settings/account/notifications.php @@ -24,7 +24,7 @@ $notification_settings = get_user_notification_settings(elgg_get_page_owner_guid foreach ($NOTIFICATION_HANDLERS as $k => $v) { ?> <tr> - <td><?php echo elgg_echo($k); ?>: </td> + <td><?php echo elgg_echo("notification:method:$k"); ?>: </td> <td> <?php diff --git a/views/default/css/admin.php b/views/default/css/admin.php index 90d151bc6..72c3692e9 100644 --- a/views/default/css/admin.php +++ b/views/default/css/admin.php @@ -264,8 +264,13 @@ p { -moz-border-radius: 4px; border-radius: 4px; } -.elgg-admin-notices a { +.elgg-admin-notices a.elgg-admin-notice { float: right; + text-decoration: none; +} + +.elgg-admin-notices a { + text-decoration: underline; } /* *************************************** diff --git a/views/default/forms/login.php b/views/default/forms/login.php index 91e9cda42..956b3a87f 100644 --- a/views/default/forms/login.php +++ b/views/default/forms/login.php @@ -9,7 +9,11 @@ <div> <label><?php echo elgg_echo('loginusername'); ?></label> - <?php echo elgg_view('input/text', array('name' => 'username')); ?> + <?php echo elgg_view('input/text', array( + 'name' => 'username', + 'class' => 'elgg-autofocus', + )); + ?> </div> <div> <label><?php echo elgg_echo('password'); ?></label> diff --git a/views/default/forms/profile/fields/add.php b/views/default/forms/profile/fields/add.php index c1d07d2ce..bd58ae381 100644 --- a/views/default/forms/profile/fields/add.php +++ b/views/default/forms/profile/fields/add.php @@ -8,11 +8,13 @@ $type_text = elgg_echo('profile:type'); $label_control = elgg_view('input/text', array('name' => 'label')); $type_control = elgg_view('input/dropdown', array('name' => 'type', 'options_values' => array( - 'text' => elgg_echo('text'), - 'longtext' => elgg_echo('longtext'), - 'tags' => elgg_echo('tags'), - 'url' => elgg_echo('url'), - 'email' => elgg_echo('email') + 'text' => elgg_echo('profile:field:text'), + 'longtext' => elgg_echo('profile:field:longtext'), + 'tags' => elgg_echo('profile:field:tags'), + 'url' => elgg_echo('profile:field:url'), + 'email' => elgg_echo('profile:field:email'), + 'location' => elgg_echo('profile:field:location'), + 'date' => elgg_echo('profile:field:date'), ))); $submit_control = elgg_view('input/submit', array('name' => elgg_echo('add'), 'value' => elgg_echo('add'))); diff --git a/views/default/forms/register.php b/views/default/forms/register.php index 6e18cd53d..411152205 100644 --- a/views/default/forms/register.php +++ b/views/default/forms/register.php @@ -23,6 +23,7 @@ if (elgg_is_sticky_form('register')) { echo elgg_view('input/text', array( 'name' => 'name', 'value' => $name, + 'class' => 'elgg-autofocus', )); ?> </div> @@ -75,9 +76,3 @@ echo elgg_view('input/hidden', array('name' => 'friend_guid', 'value' => $vars[' echo elgg_view('input/hidden', array('name' => 'invitecode', 'value' => $vars['invitecode'])); echo elgg_view('input/submit', array('name' => 'submit', 'value' => elgg_echo('register'))); echo '</div>'; -?> -<script type="text/javascript"> - $(function() { - $('input[name=name]').focus(); - }); -</script>
\ No newline at end of file diff --git a/views/default/forms/user/requestnewpassword.php b/views/default/forms/user/requestnewpassword.php index 22357e728..8a5a18734 100644 --- a/views/default/forms/user/requestnewpassword.php +++ b/views/default/forms/user/requestnewpassword.php @@ -12,15 +12,13 @@ </div> <div> <label><?php echo elgg_echo('username'); ?></label><br /> - <?php echo elgg_view('input/text', array('name' => 'username')); ?> + <?php echo elgg_view('input/text', array( + 'name' => 'username', + 'class' => 'elgg-autofocus', + )); + ?> </div> <?php echo elgg_view('input/captcha'); ?> <div class="elgg-foot"> <?php echo elgg_view('input/submit', array('value' => elgg_echo('request'))); ?> </div> -<?php //@todo JS 1.8: no ?> -<script type="text/javascript"> - $(document).ready(function() { - $('input[name=username]').focus(); - }); -</script>
\ No newline at end of file diff --git a/views/default/icon/default.php b/views/default/icon/default.php index 3abd96b96..533b92c43 100644 --- a/views/default/icon/default.php +++ b/views/default/icon/default.php @@ -39,6 +39,7 @@ if ($url) { echo elgg_view('output/url', array( 'href' => $url, 'text' => $img, + 'is_trusted' => true, )); } else { echo $img; diff --git a/views/default/icon/user/default.php b/views/default/icon/user/default.php index aca03521f..0eb3691bd 100644 --- a/views/default/icon/user/default.php +++ b/views/default/icon/user/default.php @@ -66,6 +66,7 @@ if ($show_menu) { echo elgg_view('output/url', array( 'href' => $user->getURL(), 'text' => $icon, + 'is_trusted' => true, )); ?> </div> diff --git a/views/default/navigation/breadcrumbs.php b/views/default/navigation/breadcrumbs.php index bad73c4b3..88577a8ff 100644 --- a/views/default/navigation/breadcrumbs.php +++ b/views/default/navigation/breadcrumbs.php @@ -30,6 +30,7 @@ if (is_array($breadcrumbs) && count($breadcrumbs) > 0) { $crumb = elgg_view('output/url', array( 'href' => $breadcrumb['link'], 'text' => $breadcrumb['title'], + 'is_trusted' => true, )); } else { $crumb = $breadcrumb['title']; diff --git a/views/default/navigation/menu/user_hover.php b/views/default/navigation/menu/user_hover.php index e32e5ab57..5c89e585c 100644 --- a/views/default/navigation/menu/user_hover.php +++ b/views/default/navigation/menu/user_hover.php @@ -19,6 +19,7 @@ echo '<ul class="elgg-menu elgg-menu-hover">'; $name_link = elgg_view('output/url', array( 'href' => $user->getURL(), 'text' => "<span class=\"elgg-heading-basic\">$user->name</span>@$user->username", + 'is_trusted' => true, )); echo "<li>$name_link</li>"; diff --git a/views/default/navigation/pagination.php b/views/default/navigation/pagination.php index c0cb801dd..4df5cf575 100644 --- a/views/default/navigation/pagination.php +++ b/views/default/navigation/pagination.php @@ -42,10 +42,12 @@ $pages = new stdClass(); $pages->prev = array( 'text' => '« ' . elgg_echo('previous'), 'href' => '', + 'is_trusted' => true, ); $pages->next = array( 'text' => elgg_echo('next') . ' »', 'href' => '', + 'is_trusted' => true, ); $pages->items = array(); diff --git a/views/default/navigation/tabs.php b/views/default/navigation/tabs.php index 0108126ad..e8fde3579 100644 --- a/views/default/navigation/tabs.php +++ b/views/default/navigation/tabs.php @@ -47,7 +47,7 @@ if (isset($vars['tabs']) && is_array($vars['tabs']) && !empty($vars['tabs'])) { $options = array( 'href' => $url, 'title' => $title, - 'text' => $title + 'text' => $title, ); if (isset($info['url_class'])) { @@ -58,6 +58,10 @@ if (isset($vars['tabs']) && is_array($vars['tabs']) && !empty($vars['tabs'])) { $options['id'] = $info['url_id']; } + if (!isset($info['rel']) && !isset($info['is_trusted'])) { + $options['is_trusted'] = true; + } + $link = elgg_view('output/url', $options); echo "<li $class_str $js>$link</li>"; diff --git a/views/default/object/admin_notice.php b/views/default/object/admin_notice.php index 086eddb1f..11524567e 100644 --- a/views/default/object/admin_notice.php +++ b/views/default/object/admin_notice.php @@ -11,7 +11,8 @@ if (isset($vars['entity']) && elgg_instanceof($vars['entity'], 'object', 'admin_ 'href' => "action/admin/delete_admin_notice?guid=$notice->guid", 'text' => '<span class="elgg-icon elgg-icon-delete"></span>', 'is_action' => true, - 'class' => 'elgg-admin-notice' + 'class' => 'elgg-admin-notice', + 'is_trusted' => true, )); echo "<p>$delete$message</p>"; diff --git a/views/default/object/default.php b/views/default/object/default.php index 62c8197f9..110648304 100644 --- a/views/default/object/default.php +++ b/views/default/object/default.php @@ -28,6 +28,7 @@ if ($owner) { $owner_link = elgg_view('output/url', array( 'href' => $owner->getURL(), 'text' => $owner->name, + 'is_trusted' => true, )); } diff --git a/views/default/object/elements/summary.php b/views/default/object/elements/summary.php index 10cf0b148..3ca4de2be 100644 --- a/views/default/object/elements/summary.php +++ b/views/default/object/elements/summary.php @@ -29,6 +29,7 @@ if ($title_link === '') { $params = array( 'text' => $text, 'href' => $entity->getURL(), + 'is_trusted' => true, ); $title_link = elgg_view('output/url', $params); } diff --git a/views/default/object/plugin/advanced.php b/views/default/object/plugin/advanced.php index 1fabaff04..db4e4dbcc 100644 --- a/views/default/object/plugin/advanced.php +++ b/views/default/object/plugin/advanced.php @@ -40,9 +40,10 @@ if ($reordering) { )); $links .= "<li>" . elgg_view('output/url', array( - 'href' => $top_url, - 'text' => elgg_echo('top'), - 'is_action' => true + 'href' => $top_url, + 'text' => elgg_echo('top'), + 'is_action' => true, + 'is_trusted' => true, )) . "</li>"; $up_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( @@ -52,9 +53,10 @@ if ($reordering) { )); $links .= "<li>" . elgg_view('output/url', array( - 'href' => $up_url, - 'text' => elgg_echo('up'), - 'is_action' => true + 'href' => $up_url, + 'text' => elgg_echo('up'), + 'is_action' => true, + 'is_trusted' => true, )) . "</li>"; } @@ -67,9 +69,10 @@ if ($reordering) { )); $links .= "<li>" . elgg_view('output/url', array( - 'href' => $down_url, - 'text' => elgg_echo('down'), - 'is_action' => true + 'href' => $down_url, + 'text' => elgg_echo('down'), + 'is_action' => true, + 'is_trusted' => true, )) . "</li>"; $bottom_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array( @@ -81,7 +84,8 @@ if ($reordering) { $links .= "<li>" . elgg_view('output/url', array( 'href' => $bottom_url, 'text' => elgg_echo('bottom'), - 'is_action' => true + 'is_action' => true, + 'is_trusted' => true, )) . "</li>"; } } else { @@ -93,7 +97,8 @@ if ($reordering) { // always let them deactivate $options = array( - 'is_action' => true + 'is_action' => true, + 'is_trusted' => true, ); if ($active) { $active_class = 'elgg-state-active'; @@ -163,7 +168,8 @@ $author = '<span>' . elgg_echo('admin:plugins:label:author') . '</span>: ' $version = htmlspecialchars($plugin->getManifest()->getVersion()); $website = elgg_view('output/url', array( 'href' => $plugin->getManifest()->getWebsite(), - 'text' => $plugin->getManifest()->getWebsite() + 'text' => $plugin->getManifest()->getWebsite(), + 'is_trusted' => true, )); $copyright = elgg_view('output/text', array('value' => $plugin->getManifest()->getCopyright())); @@ -179,7 +185,8 @@ if ($files) { $url = 'admin_plugin_text_file/' . $plugin->getID() . "/$file"; $link = elgg_view('output/url', array( 'text' => $file, - 'href' => $url + 'href' => $url, + 'is_trusted' => true, )); $docs .= "<li>$link</li>"; diff --git a/views/default/object/plugin/simple.php b/views/default/object/plugin/simple.php index f4cc944f4..4d392e71a 100644 --- a/views/default/object/plugin/simple.php +++ b/views/default/object/plugin/simple.php @@ -49,7 +49,8 @@ foreach ($files as $file => $path) { $url = 'admin_plugin_text_file/' . $plugin->getID() . "/$file"; $link = elgg_view('output/url', array( 'text' => $file, - 'href' => $url + 'href' => $url, + 'is_trusted' => true, )); $plugin_footer .= "<li>$link</li>"; diff --git a/views/default/object/widget/elements/controls.php b/views/default/object/widget/elements/controls.php index abf2154fc..6d06d28bc 100644 --- a/views/default/object/widget/elements/controls.php +++ b/views/default/object/widget/elements/controls.php @@ -24,6 +24,7 @@ if ($widget->canEdit()) { 'title' => elgg_echo('widget:delete', array($widget->getTitle())), 'href' => "action/widgets/delete?guid=$widget->guid", 'is_action' => true, + 'is_trusted' => true, 'class' => 'elgg-widget-delete-button', 'id' => "elgg-widget-delete-button-$widget->guid" ); diff --git a/views/default/output/tag.php b/views/default/output/tag.php index abae9c4b2..3c002a31b 100644 --- a/views/default/output/tag.php +++ b/views/default/output/tag.php @@ -26,5 +26,9 @@ if (isset($vars['value'])) { $type = ""; } $url = elgg_get_site_url() . 'search?q=' . urlencode($vars['value']) . "&search_type=tags{$type}{$subtype}{$object}"; - echo elgg_view('output/url', array('href' => $url, 'text' => $vars['value'], 'rel' => 'tag')); + echo elgg_view('output/url', array( + 'href' => $url, + 'text' => $vars['value'], + 'rel' => 'tag', + )); } diff --git a/views/default/output/url.php b/views/default/output/url.php index 79ab52377..81b02087d 100644 --- a/views/default/output/url.php +++ b/views/default/output/url.php @@ -10,7 +10,7 @@ * @uses string $vars['href'] The unencoded url string * @uses bool $vars['encode_text'] Run $vars['text'] through htmlspecialchars() (false) * @uses bool $vars['is_action'] Is this a link to an action (false) - * + * @uses bool $vars['is_trusted'] Is this link trusted (false) */ $url = elgg_extract('href', $vars, null); @@ -37,11 +37,20 @@ if ($url) { if (elgg_extract('is_action', $vars, false)) { $url = elgg_add_action_tokens_to_url($url, false); - unset($vars['is_action']); + } + + if (!elgg_extract('is_trusted', $vars, false)) { + if (!isset($vars['rel'])) { + $vars['rel'] = 'nofollow'; + $url = strip_tags($url); + } } $vars['href'] = $url; } +unset($vars['is_action']); +unset($vars['is_trusted']); + $attributes = elgg_format_attributes($vars); -echo "<a $attributes>$text</a>";
\ No newline at end of file +echo "<a $attributes>$text</a>"; diff --git a/views/default/page/elements/footer.php b/views/default/page/elements/footer.php index 06fdb84a5..596d17bd3 100644 --- a/views/default/page/elements/footer.php +++ b/views/default/page/elements/footer.php @@ -17,5 +17,6 @@ echo elgg_view('output/url', array( 'href' => 'http://elgg.org', 'text' => "<img src=\"$powered_url\" alt=\"Powered by Elgg\" width=\"106\" height=\"15\" />", 'class' => '', + 'is_trusted' => true, )); echo '</div>'; diff --git a/views/default/page/elements/tagcloud_block.php b/views/default/page/elements/tagcloud_block.php index 8b67c9e37..258951c41 100644 --- a/views/default/page/elements/tagcloud_block.php +++ b/views/default/page/elements/tagcloud_block.php @@ -50,6 +50,7 @@ $cloud .= elgg_view_icon('tag'); $cloud .= elgg_view('output/url', array( 'href' => 'tags', 'text' => elgg_echo('tagcloud:allsitetags'), + 'is_trusted' => true, )); $cloud .= '</p>'; diff --git a/views/default/page/layouts/widgets/add_button.php b/views/default/page/layouts/widgets/add_button.php index 89e83b096..c33a45f99 100644 --- a/views/default/page/layouts/widgets/add_button.php +++ b/views/default/page/layouts/widgets/add_button.php @@ -10,6 +10,7 @@ 'text' => elgg_echo('widgets:add'), 'class' => 'elgg-button elgg-button-action', 'rel' => 'toggle', + 'is_trusted' => true, )); ?> </div> diff --git a/views/default/river/elements/body.php b/views/default/river/elements/body.php index c5a525733..6894b81e2 100644 --- a/views/default/river/elements/body.php +++ b/views/default/river/elements/body.php @@ -27,6 +27,7 @@ if ($summary === false) { 'href' => $subject->getURL(), 'text' => $subject->name, 'class' => 'elgg-river-subject', + 'is_trusted' => true, )); } @@ -52,6 +53,7 @@ if ($container instanceof ElggGroup && $container->guid != elgg_get_page_owner_g $group_link = elgg_view('output/url', array( 'href' => $container->getURL(), 'text' => $container->name, + 'is_trusted' => true, )); $group_string = elgg_echo('river:ingroup', array($group_link)); } diff --git a/views/default/river/elements/responses.php b/views/default/river/elements/responses.php index 8c5be6316..f6c32e142 100644 --- a/views/default/river/elements/responses.php +++ b/views/default/river/elements/responses.php @@ -50,6 +50,7 @@ if ($comments) { $params = array( 'href' => $url, 'text' => elgg_echo('river:comments:more', array($num_more_comments)), + 'is_trusted' => true, ); $link = elgg_view('output/url', $params); echo "<div class=\"elgg-river-more\">$link</div>"; diff --git a/views/default/river/elements/summary.php b/views/default/river/elements/summary.php index 4d80c29a6..84941131f 100644 --- a/views/default/river/elements/summary.php +++ b/views/default/river/elements/summary.php @@ -15,12 +15,14 @@ $subject_link = elgg_view('output/url', array( 'href' => $subject->getURL(), 'text' => $subject->name, 'class' => 'elgg-river-subject', + 'is_trusted' => true, )); $object_link = elgg_view('output/url', array( 'href' => $object->getURL(), 'text' => $object->title ? $object->title : $object->name, 'class' => 'elgg-river-object', + 'is_trusted' => true, )); $action = $item->action_type; @@ -32,6 +34,7 @@ if ($container instanceof ElggGroup) { $params = array( 'href' => $container->getURL(), 'text' => $container->name, + 'is_trusted' => true, ); $group_link = elgg_view('output/url', $params); $group_string = elgg_echo('river:ingroup', array($group_link)); diff --git a/views/default/river/user/default/profileiconupdate.php b/views/default/river/user/default/profileiconupdate.php index c7f691533..90daab1a7 100644 --- a/views/default/river/user/default/profileiconupdate.php +++ b/views/default/river/user/default/profileiconupdate.php @@ -10,6 +10,7 @@ $subject_link = elgg_view('output/url', array( 'href' => $subject->getURL(), 'text' => $subject->name, 'class' => 'elgg-river-subject', + 'is_trusted' => true, )); $string = elgg_echo('river:update:user:avatar', array($subject_link)); @@ -17,5 +18,5 @@ $string = elgg_echo('river:update:user:avatar', array($subject_link)); echo elgg_view('river/item', array( 'item' => $vars['item'], 'summary' => $string, - 'attachments' => elgg_view_entity_icon($subject, 'tiny'), + 'attachments' => elgg_view_entity_icon($subject, 'tiny', array('hover' => false)), )); diff --git a/views/default/river/user/default/profileupdate.php b/views/default/river/user/default/profileupdate.php index a344131d6..69b69b106 100644 --- a/views/default/river/user/default/profileupdate.php +++ b/views/default/river/user/default/profileupdate.php @@ -9,6 +9,7 @@ $subject_link = elgg_view('output/url', array( 'href' => $subject->getURL(), 'text' => $subject->name, 'class' => 'elgg-river-subject', + 'is_trusted' => true, )); $string = elgg_echo('river:update:user:profile', array($subject_link)); diff --git a/views/default/widgets/content_stats/content.php b/views/default/widgets/content_stats/content.php index 6a652166c..56772047d 100644 --- a/views/default/widgets/content_stats/content.php +++ b/views/default/widgets/content_stats/content.php @@ -23,5 +23,6 @@ echo '<div class="mtm">'; echo elgg_view('output/url', array( 'href' => 'admin/statistics/overview', 'text' => elgg_echo('more'), + 'is_trusted' => true, )); echo '</div>'; |