From 4.2 to 4.3

Deprecation of rel=”toggle” and rel=”popup”

If you are using rel="toggle" or rel="popup" for showing some hidden content you will need to update your code. The correct javascript will automatically be loaded if you draw content using output/url (directly or indirectly) and pass the class elgg-popup or elgg-toggle. If you need popup/toggle features on your own elements, you will need to set the correct class and require the correct javascript (elgg/popup or elgg/toggle).

PAM handlers

PAM handlers, which handle authentication, have been reworked. The registration now uses a DI service instead of a static variable in a class.

Because of the rework PAM handlers can now also be invokable classes and Elgg core (including the Webservices plugin) is using this. If as a developer you unregistered certain PAM handlers please check the new code.

Deprecated APIs

Lib functions

  • add_entity_relationship() use \ElggEntity->addRelationship()
  • add_translation() use elgg()->translator->addTranslation()
  • add_user_to_access_collection() use \ElggAccessCollection->addMember()
  • can_edit_access_collection() use \ElggAccessCollection->canEdit()
  • check_entity_relationship() use \ElggEntity->hasRelationship() or \ElggEntity->getRelationship()
  • check_rate_limit_exceeded() use elgg_is_authentication_failure_limit_reached()
  • create_access_collection() use elgg_create_access_collection()
  • current_page_url() use elgg_get_current_url()
  • delete_access_collection() use \ElggAccessCollection->delete()
  • delete_relationship() use \ElggRelationship->delete()
  • elgg_authenticate() use elgg_pam_authenticate()
  • elgg_clear_sticky_value()
  • elgg_delete_metadata_by_id() use \ElggMetadata->delete()()
  • elgg_get_engine_path()
  • elgg_get_loaded_external_files() use elgg_get_loaded_external_resources()
  • elgg_register_external_view() use elgg_register_ajax_view() and elgg_register_simplecache_view()
  • elgg_unregister_external_view() use elgg_unregister_ajax_view()
  • execute_new_password_request() use elgg_save_new_password()
  • filter_tags() use elgg_sanitize_input()
  • find_active_users() use elgg_get_entities()
  • force_user_password_reset() use \ElggUser->setPassword()
  • generate_invite_code() use elgg_generate_invite_code()
  • generate_random_cleartext_password() use elgg_generate_password()
  • get_access_array() use elgg_get_access_array()
  • get_access_collection() use elgg_get_access_collection()
  • get_current_language() use elgg_get_current_language()
  • get_default_access() use elgg_get_default_access()
  • get_dir_size()
  • get_entity_relationships() use elgg_get_relationships()
  • get_entity_statistics() use elgg_get_entity_statistics()
  • get_members_of_access_collection() use \ElggAccessCollection->getMembers()
  • get_online_users() use elgg_list_entities()
  • get_readable_access_level() use elgg_get_readable_access_level()
  • get_relationship() use elgg_get_relationship()
  • get_write_access_array() use elgg_get_write_access_array()
  • has_access_to_entity() use \ElggEnity->hasAccess() or elgg_has_access_to_entity()
  • is_email_address() use elgg_is_valid_email()
  • log_login_failure() use elgg_register_authentication_failure()
  • login() use elgg_login()
  • logout() use elgg_logout()
  • parse_urls() use elgg_parse_urls()
  • register_pam_handler() use elgg_register_pam_handler()
  • register_user() use elgg_register_user()
  • remove_entity_relationship() use \ElggEntity->removeRelationship()
  • remove_entity_relationships() use \ElggEntity->removeAllRelationships()
  • remove_user_from_access_collection() use \ElggAccessCollection->removeMember()
  • reset_login_failure_count() use elgg_reset_authentication_failures()
  • send_new_password_request() use elgg_request_new_password()
  • string_to_tag_array() use elgg_string_to_array()
  • unregister_pam_handler() use elgg_unregister_pam_handler()

Class functions

  • \ElggEntity->deleteRelationships() use \ElggEntity->removeAllRelationships()
  • \ElggUser->getFriends() use \ElggUser->getEntitiesFromRelationship()
  • \ElggUser->getFriendsObjects() use \ElggUser->getEntitiesFromRelationship()
  • \ElggUser->getFriendsOf() use \ElggUser->getEntitiesFromRelationship()
  • \ElggUser->isFriend() use \ElggUser->isFriendOf()


  • 'annotate', '{$entity->getType()}' use the 'create', 'annotate' event


  • 'action_gatekeeper:upload_exceeded_msg', 'all'
  • 'classes', 'icon' use the 'view_vars', 'output/icon' hook
  • 'fail', 'auth'
  • 'file:icon:url', 'override' use the 'entity:icon:url', 'object' hook
  • 'find_active_users', 'system'
  • 'form:values', 'blog'
  • 'is_member', 'group' use the 'gatekeeper', 'all' hook
  • 'page_owner', 'system' use route definitions
  • 'status', 'user' use the 'create', 'object' event
  • 'validate', 'input' use the 'sanitize', 'input' hook


  • \ElggPAM use elgg_pam_authenticate()

Notable function parameters

  • Passing order_by_metadata or order_by_annotation to elgg_get_entities is deprecated. Use sort_by instead.

Deprecated Config values

  • elgg_settings_file
  • path use elgg_get_root_path()
  • pluginspath use elgg_get_plugins_path()
  • site_guid use elgg_get_site_entity()->guid
  • sitedescription use elgg_get_site_entity()->description
  • sitename use elgg_get_site_entity()->getDisplayName()
  • url use elgg_get_site_url()