function friend_request_init() { // extend css elgg_extend_view("css/elgg", "css/friend_request/site"); // Page handlers // unregister friendsof elgg_unregister_page_handler("friendsof"); //This will let users view their friend requests elgg_register_page_handler('friend_request', 'friend_request_page_handler'); // Events // unregister default elgg friend handler elgg_unregister_event_handler("create", "friend", "relationship_notification_hook"); // Handle our add action event elgg_register_event_handler("create", "friendrequest", "friend_request_event_create_friendrequest"); // Plugin hooks elgg_register_plugin_hook_handler("register", "menu:user_hover", "friend_request_user_menu_handler"); elgg_register_plugin_hook_handler("register", "menu:entity", "friend_request_entity_menu_handler"); // Actions // This overwrites the original friend requesting stuff. elgg_register_action("friends/add", dirname(__FILE__) . "/actions/friends/add.php"); // We need to override the friend remove action to remove the relationship we created elgg_register_action("friends/remove", dirname(__FILE__) . "/actions/friends/removefriend.php"); // friend request actions elgg_register_action("friend_request/approve", dirname(__FILE__) . "/actions/approve.php"); elgg_register_action("friend_request/decline", dirname(__FILE__) . "/actions/decline.php"); elgg_register_action("friend_request/revoke", dirname(__FILE__) . "/actions/revoke.php"); }
/** * AllFriends * * @package AllFriends */ function allfriends_init() { // Register handler for adding friends elgg_register_event_handler('create', 'user', 'allfriends_friendall'); // Prevent users from getting flooded with "new friend" notifications elgg_unregister_event_handler('create', 'relationship', '_elgg_send_friend_notification'); }
/** * Gets called during system initialization * * @return void */ function friend_request_init() { // extend css elgg_extend_view('css/elgg', 'css/friend_request/site'); // Page handlers // unregister friendsof elgg_unregister_page_handler('friendsof'); // This will let users view their friend requests elgg_register_page_handler('friend_request', '\\ColdTrick\\FriendRequest\\PageHandler::friendRequest'); // Events // unregister default elgg friend handler elgg_unregister_event_handler('create', 'friend', '_elgg_send_friend_notification'); // Handle our add action event elgg_register_event_handler('create', 'relationship', '\\ColdTrick\\FriendRequest\\Relationships::createFriendRequest'); // Plugin hooks elgg_register_plugin_hook_handler('register', 'menu:topbar', '\\ColdTrick\\FriendRequest\\TopbarMenu::register'); elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\FriendRequest\\PageMenu::registerCleanup'); elgg_register_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\FriendRequest\\PageMenu::register'); elgg_register_plugin_hook_handler('register', 'menu:user_hover', '\\ColdTrick\\FriendRequest\\Users::registerUserHoverMenu'); elgg_register_plugin_hook_handler('register', 'menu:entity', '\\ColdTrick\\FriendRequest\\Users::registerEntityMenu'); // Actions // This overwrites the original friend requesting stuff. elgg_register_action('friends/add', dirname(__FILE__) . '/actions/friends/add.php'); // We need to override the friend remove action to remove the relationship we created elgg_register_action('friends/remove', dirname(__FILE__) . '/actions/friends/removefriend.php'); // friend request actions elgg_register_action('friend_request/approve', dirname(__FILE__) . '/actions/approve.php'); elgg_register_action('friend_request/decline', dirname(__FILE__) . '/actions/decline.php'); elgg_register_action('friend_request/revoke', dirname(__FILE__) . '/actions/revoke.php'); }
/** * Initialize the GV groups plugin. */ function gvgroups_init() { // override the groups library elgg_register_library('elgg:groups', elgg_get_plugins_path() . "gvgroups/lib/groups.php"); elgg_register_library('elgg:discussion', elgg_get_plugins_path() . 'gvgroups/lib/discussion.php'); // add admin menu elgg_register_admin_menu_item('administer', 'createlocal', 'groups'); elgg_register_admin_menu_item('administer', 'deletelocal', 'groups'); // unregister the sidebar menu (my groups, group that I own, ...) elgg_unregister_event_handler('pagesetup', 'system', 'groups_setup_sidebar_menus'); // add some page handler elgg_register_plugin_hook_handler("route", "groups", "gvgroups_route_groups_handler"); elgg_register_plugin_hook_handler("route", "discussion", "gvgroups_route_discussion_handler"); // override some actions $action_base = elgg_get_plugins_path() . 'gvgroups/actions'; elgg_register_action("gvgroups/edit", "{$action_base}/gvgroups/edit.php"); // register some new actions elgg_register_action("admin/createlocal", "{$action_base}/admin/createlocal.php"); elgg_register_action("admin/deletelocal", "{$action_base}/admin/deletelocal.php"); // add a hook to transform group menu item in a dropdown menu elgg_register_plugin_hook_handler('register', 'menu:site', 'gvgroups_custom_sitemenu_setup'); // add an event handler to add the user in local groups, according to his profile elgg_register_event_handler('profileupdate', 'user', 'gvgroups_profileupdate'); // manage some specific subscribing (town groups) elgg_register_event_handler('create', 'member', 'gvgroups_join_group'); // add "my groups" menu to the topbar elgg_register_menu_item('topbar', array('name' => 'mygroups', 'href' => "groups/member/{$user->username}", 'text' => elgg_echo('gvgroups:mygroups'), 'section' => 'alt')); // extend CSS view elgg_extend_view('css/elgg', 'gvgroups/css'); elgg_register_plugin_hook_handler('register', 'menu:entity', 'gvgroups_entity_menu_setup'); // check groups subscription at login elgg_register_event_handler('login', 'user', 'gvgroups_profileupdate'); }
/** * Initialize the plugin * @return void */ function user_friends_init() { elgg_extend_view('elgg.css', 'user/format/friend.css'); elgg_register_page_handler('friends', 'user_friends_page_handler'); elgg_register_plugin_hook_handler('route', 'friend_request', 'user_friends_route_friend_request'); elgg_register_plugin_hook_handler('route', 'collections', 'user_friends_route_collections'); elgg_unregister_plugin_hook_handler('register', 'menu:page', '\\ColdTrick\\FriendRequest\\PageMenu::register'); elgg_unregister_plugin_hook_handler('register', 'menu:topbar', '\\ColdTrick\\FriendRequest\\TopbarMenu::register'); elgg_unregister_event_handler('pagesetup', 'system', '_elgg_friends_page_setup'); elgg_unregister_event_handler('pagesetup', 'system', '_elgg_setup_collections_menu'); elgg_register_plugin_hook_handler('register', 'menu:friendship', 'user_friends_friendship_menu_setup'); elgg_register_plugin_hook_handler('register', 'menu:topbar', 'user_friends_topbar_menu_setup'); if (elgg_is_active_plugin('invitefriends')) { elgg_register_plugin_hook_handler('route', 'invite', 'user_friends_route_invite'); elgg_unregister_menu_item('page', 'invite'); } elgg_register_plugin_hook_handler('view', 'widgets/friends/content', 'user_friends_friends_widget_access'); // Custom friend request notifications elgg_unregister_event_handler('create', 'relationship', '_elgg_send_friend_notification'); elgg_unregister_event_handler('create', 'relationship', '\\ColdTrick\\FriendRequest\\Relationships::createFriendRequest'); elgg_register_event_handler('create', 'relationship', 'user_friends_friend_request_notification'); elgg_register_plugin_hook_handler('get_templates', 'notifications', 'user_friends_notification_templates'); elgg_register_action('friend_request/approve', __DIR__ . '/actions/approve.php'); elgg_register_action('friend_request/decline', __DIR__ . '/actions/decline.php'); }
/** * Gets called during system initialization * * @return void */ function advanced_notifications_init() { // default object notifications elgg_register_event_handler("create", "object", "advanced_notifications_create_object_event_handler"); elgg_register_event_handler("publish", "object", "advanced_notifications_create_object_event_handler"); // for blog as of Elgg 1.8.14 elgg_register_event_handler("notify", "album", "advanced_notifications_create_object_event_handler"); // for TidyPics elgg_unregister_event_handler("create", "object", "object_notifications"); elgg_unregister_event_handler("publish", "object", "object_notifications"); // for blog as of Elgg 1.8.14 elgg_unregister_event_handler("notify", "album", "object_notifications"); // for TidyPics // group forum topic notifications elgg_register_event_handler("create", "annotation", "advanced_notifications_create_annotation_event_handler"); elgg_unregister_event_handler("create", "annotation", "discussion_reply_notifications"); // for Elgg versions >= 1.8.6 elgg_unregister_event_handler("annotate", "all", "group_object_notifications"); // older versions of Elgg < 1.8.6 elgg_register_plugin_hook_handler("notify:annotation:subject", "group_topic_post", "advanced_notifications_discussion_reply_subject_hook"); elgg_register_plugin_hook_handler("notify:entity:subject", "object", "advanced_notifications_discussion_subject_hook"); // replace the email notification body elgg_register_plugin_hook_handler("notify:entity:message", "object", "advanced_notifications_email_body_hook", 99999); elgg_register_plugin_hook_handler("notify:annotation:message", "group_topic_post", "advanced_notifications_email_body_hook", 99999); elgg_register_plugin_hook_handler("action", "comments/add", "advanced_notifications_comment_action_hook"); // unregister some stuff from messages elgg_unregister_plugin_hook_handler("notify:entity:message", "object", "messages_notification_msg"); advanced_notifications_unregister_notification_object("object", "messages"); // thewire elgg_unregister_plugin_hook_handler("notify:entity:message", "object", "thewire_notify_message"); // replace site notifications elgg_register_plugin_hook_handler("register", "menu:filter", "advanced_notifications_filter_menu_hook"); elgg_register_plugin_hook_handler("route", "activity", "advanced_notifications_route_hook"); }
/** * Increments edit counter for description editing * * @param string $event Event name * @param string $object_type Event type * @param ElggObject $object Group that is being edited * * @return void */ public static function descriptionIncrement($event, $object_type, $object) { if (elgg_instanceof($object, "group")) { $count = (int) $object->getPrivateSetting("profile_manager_description_edit_count"); $object->setPrivateSetting("profile_manager_description_edit_count", $count + 1); } // only do this once elgg_unregister_event_handler("update", "group", "\\ColdTrick\\ProfileManager\\Groups::descriptionIncrement"); }
function delete_group($e, $t, $group) { remember_delete_group($group); if (!$GLOBALS['shutdown_flag']) { // unregister first so we don't end up with multiple firings of the event elgg_unregister_event_handler('shutdown', 'system', __NAMESPACE__ . '\\process_group_deletion'); elgg_register_event_handler('shutdown', 'system', __NAMESPACE__ . '\\process_group_deletion'); } else { process_group_deletion(); } }
/** * Initialize the plugin * @return void */ function group_list_init() { elgg_extend_view('elgg.css', 'group/format/membership.css'); elgg_extend_view('admin.css', 'group/format/membership.css'); elgg_register_plugin_hook_handler('route', 'groups', 'group_list_router', 999); elgg_register_plugin_hook_handler('register', 'menu:entity', 'group_list_entity_menu_setup'); elgg_register_plugin_hook_handler('register', 'menu:membership', 'group_list_membership_group_menu_setup'); elgg_unregister_event_handler('pagesetup', 'system', 'groups_setup_sidebar_menus'); elgg_register_plugin_hook_handler('view_vars', 'group/elements/summary', 'group_list_filter_listing_subtitle'); elgg_register_plugin_hook_handler('view', 'widgets/a_users_groups/content', 'group_list_users_groups_widget_access'); elgg_register_plugin_hook_handler('register', 'menu:filter', 'group_list_setup_filter_menu', 999); }
public function testModifiedAttributesAreAvailableDuringUpdateNotAfter() { $this->entity->title = 'Foo'; $this->entity->description = 'Bar'; $this->entity->container_guid = elgg_get_site_entity()->guid; $calls = 0; $handler = function ($event, $type, \ElggObject $object) use(&$calls) { $calls++; $this->assertEqual($object->getOriginalAttributes(), ['title' => null, 'description' => null, 'container_guid' => elgg_get_logged_in_user_guid()]); }; elgg_register_event_handler('update', 'object', $handler); elgg_register_event_handler('update:after', 'object', $handler); $this->entity->save(); $this->assertEqual($calls, 2); elgg_unregister_event_handler('update', 'object', $handler); elgg_unregister_event_handler('update:after', 'object', $handler); $this->assertEqual($this->entity->getOriginalAttributes(), []); }
/** * Initialize the plugin * @return void */ function user_settings_init() { elgg_unregister_page_handler('settings', '_elgg_user_settings_page_handler'); elgg_register_page_handler('settings', 'user_settings_page_handler'); elgg_unregister_event_handler('pagesetup', 'system', '_elgg_user_settings_menu_setup'); if (!elgg_get_plugin_setting('show_language', 'user_settings', true)) { elgg_unregister_plugin_hook_handler('usersettings:save', 'user', '_elgg_set_user_language'); elgg_unextend_view('forms/account/settings', 'core/settings/account/language'); } if (elgg_is_active_plugin('notifications')) { elgg_register_plugin_hook_handler('route', 'notifications', 'user_settings_notifications_router'); } elgg_register_plugin_hook_handler('route', 'profile', 'user_settings_profile_router'); elgg_register_plugin_hook_handler('route', 'avatar', 'user_settings_avatar_router'); elgg_unregister_event_handler('pagesetup', 'system', 'notifications_plugin_pagesetup'); elgg_extend_view('elgg.css', 'elements/tables/notifications.css'); elgg_register_action('notificationsettings/save', __DIR__ . '/actions/notificationsettings/save.php'); }
/** * Elgg Metatags generator plugin * This plugin make the metatags for content. * * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 * @author Gerard Kanters * Website: https://www.centillien.com */ function metatagsgen_init() { elgg_extend_view('page/elements/head', 'metatagsgen/metatags'); elgg_extend_view("object/blog", "metatagsgen/track_page_entity", 400); if (elgg_is_active_plugin("market")) { elgg_extend_view("object/market", "metatagsgen/track_page_entity"); } if (elgg_is_active_plugin("anypage")) { elgg_extend_view("object/anypage", "metatagsgen/track_page_entity"); } //Static caching of icons $cloudflare = elgg_get_plugin_setting("cloudflare", "metatags"); if ($cloudflare == "yes") { elgg_register_plugin_hook_handler('entity:icon:url', 'user', 'user_icon_url_override'); elgg_register_plugin_hook_handler('entity:icon:url', 'group', 'group_icon_url_override'); } //Unregister systemlog since it is not very usefull elgg_unregister_event_handler('log', 'systemlog', 'system_log_default_logger'); }
/** * Initialize the community groups extension plugin */ function community_groups_init() { $action_path = elgg_get_plugins_path() . 'community_groups/actions'; elgg_extend_view('css/elgg', 'community_groups/css'); // admin controls use a lightbox if (elgg_in_context('discussion') && elgg_is_admin_logged_in()) { elgg_load_js('lightbox'); elgg_load_css('lightbox'); } // group tabs if (elgg_in_context('groups')) { elgg_register_plugin_hook_handler('register', 'menu:filter', 'community_groups_filter_menu'); } elgg_register_plugin_hook_handler('route', 'groups', 'community_groups_router'); elgg_register_plugin_hook_handler('route', 'discussion', 'community_discussions_router'); // do not need normal sidebar menu in community site elgg_unregister_event_handler('pagesetup', 'system', 'groups_setup_sidebar_menus'); // only admins can create groups elgg_register_plugin_hook_handler('register', 'menu:title', 'community_groups_restrict_group_add_button'); elgg_register_plugin_hook_handler('action', 'groups/edit', 'community_groups_restrict_group_edit_action'); // attempt to join a group on first post elgg_register_plugin_hook_handler('action', 'discussion/save', 'community_groups_discussion_save_handler'); // groups administration elgg_register_menu_item('page', array('name' => 'groups', 'href' => 'admin/groups/main', 'text' => elgg_echo('admin:groups'), 'context' => 'admin', 'priority' => 200, 'section' => 'administer')); elgg_register_action('groups/combine', "{$action_path}/groups/combine.php", 'admin'); elgg_register_action('groups/categorize', "{$action_path}/groups/categorize.php", 'admin'); elgg_register_action("groups/delete", elgg_get_plugins_path() . "groups/actions/groups/delete.php", 'admin'); elgg_register_action("groups/saveblogsettings", "{$action_path}/groups/saveblogsettings.php", 'admin'); elgg_register_action("groups/change_owner", "{$action_path}/groups/change_owner.php", 'admin'); // set up site menu for discussion $item = new ElggMenuItem('discussion', elgg_echo('discussion'), 'discussion/all'); elgg_register_menu_item('site', $item); // modify the menus on discussion posts if (elgg_is_admin_logged_in()) { elgg_register_plugin_hook_handler('register', 'menu:cg:moderator', 'community_groups_moderator_menu'); elgg_extend_view('object/discussion', 'community_groups/discussion/controls'); elgg_extend_view('object/discussion_reply', 'community_groups/discussion/controls'); elgg_register_ajax_view('community_groups/discussion/offtopic'); } elgg_register_plugin_hook_handler('register', 'menu:entity', 'community_groups_limit_editing'); elgg_register_action('discussion/remove_ad', "{$action_path}/discussion/remove_ad.php", 'admin'); elgg_register_action('discussion/offtopic', "{$action_path}/discussion/offtopic.php", 'admin'); }
/** * Run the upgrade process * * @return array */ public function run() { $result = array('failure' => false, 'reason' => ''); // prevent someone from running the upgrade script in parallel (see #4643) if (!$this->getUpgradeMutex()) { $result['failure'] = true; $result['reason'] = elgg_echo('upgrade:locked'); return $result; } // disable the system log for upgrades to avoid exceptions when the schema changes. elgg_unregister_event_handler('log', 'systemlog', 'system_log_default_logger'); elgg_unregister_event_handler('all', 'all', 'system_log_listener'); // turn off time limit set_time_limit(0); if ($this->getUnprocessedUpgrades()) { $this->processUpgrades(); } elgg_trigger_event('upgrade', 'system', null); elgg_invalidate_simplecache(); elgg_reset_system_cache(); $this->releaseUpgradeMutex(); return $result; }
/** * Init plugin */ function init() { if (!elgg_is_admin_logged_in()) { return; } // Make sure roles plugin is active if (!is_callable('roles_init')) { register_error(elgg_echo(PLUGIN_ID . ':plugin_dependancy_error')); disable_plugin(PLUGIN_ID); forward('admin/plugins'); } elgg_unregister_event_handler('ready', 'system', 'roles_check_update'); // Register actions elgg_register_action('roles/edit', __DIR__ . '/actions/edit.php', 'admin'); elgg_register_action('roles/permissions', __DIR__ . '/actions/permissions.php', 'admin'); elgg_register_action('roles/set', __DIR__ . '/actions/set.php', 'admin'); // Register JS and CSS elgg_register_simplecache_view('css/roles/ui/admin'); elgg_register_css('roles.ui.admin', elgg_get_simplecache_url('css', 'roles/ui/admin')); elgg_register_simplecache_view('css/roles/ui/set'); elgg_register_css('roles.ui.set', elgg_get_simplecache_url('css', 'roles/ui/set')); elgg_register_simplecache_view('js/roles/ui/admin'); elgg_register_js('roles.ui.admin', elgg_get_simplecache_url('js', 'roles/ui/admin')); elgg_register_simplecache_view('js/roles/ui/set'); elgg_register_js('roles.ui.set', elgg_get_simplecache_url('js', 'roles/ui/set')); // Override roles config once roles specified by other plugins have been created //elgg_register_plugin_hook_handler('roles:config', 'role', __NAMESPACE__ . '\\get_roles_config'); // Pretty URL for roles elgg_register_entity_url_handler('object', 'role', __NAMESPACE__ . '\\url_handler'); // Register admin menu items elgg_register_event_handler('pagesetup', 'system', __NAMESPACE__ . '\\menu_setup'); // Allow admins to set the role from user hover menu elgg_register_plugin_hook_handler('register', 'menu:user_hover', __NAMESPACE__ . '\\user_hover_menu_setup'); // Register an ajax view to pull up a roles form elgg_extend_view('navigation/menu/user_hover', 'roles/ui/user_hover'); elgg_register_ajax_view('roles/ajax/set'); }
public function test_update_handlers_can_change_attributes() { $object = new \ElggObject(); $object->subtype = 'issue6225'; $object->access_id = ACCESS_PUBLIC; $object->save(); $guid = $object->guid; elgg_register_event_handler('update', 'object', array('\\ElggCoreRegressionBugsTest', 'handleUpdateForIssue6225test')); $object->save(); elgg_unregister_event_handler('update', 'object', array('\\ElggCoreRegressionBugsTest', 'handleUpdateForIssue6225test')); _elgg_invalidate_cache_for_entity($guid); $object = get_entity($guid); $this->assertEqual($object->access_id, ACCESS_PRIVATE); $object->delete(); }
function build_acl_from_guids($guids) { $site = elgg_get_site_entity(); $token = get_token_from_guids($guids); $ia = elgg_set_ignore_access(true); $granular_access = new ElggObject(); $granular_access->subtype = 'granular_access'; $granular_access->access_id = ACCESS_PUBLIC; $granular_access->owner_guid = $site->guid; $granular_access->container_guid = $site->guid; $granular_access->token = $token; $granular_access->access_list = $guids; $guid = $granular_access->save(); if (!$guid) { elgg_set_ignore_access($ia); return false; } // check, if this is a single group, lets use the acl from that if (count($guids) == 1) { $entity = get_entity($guids[0]); if (elgg_instanceof($entity, 'group') && $entity->group_acl) { $granular_access->acl_id = $entity->group_acl; $granular_access->single_group = 1; // flag for use later to tell that this is using groups default acl // no need to populate elgg_set_ignore_access($ia); return $entity->group_acl; } } $id = create_access_collection('granular_access:' . $token, $site->guid); $granular_access->acl_id = $id; elgg_set_ignore_access($ia); // actually populating the acl can take a long time, so we save that for vroom // make it happen on the shutdown event // add our guid to a list to populate register_new_granular_access($guid); if (!$GLOBALS['shutdown_flag']) { // unregister first so we don't end up with multiple firings of the event elgg_unregister_event_handler('shutdown', 'system', __NAMESPACE__ . '\\populate_acls'); elgg_register_event_handler('shutdown', 'system', __NAMESPACE__ . '\\populate_acls'); } else { populate_acls(); } return $id; }
/** * Unregisters a function to a particular kind of event * * @deprecated 1.8 Use elgg_unregister_event_handler instead * * @param string $event The event type * @param string $object_type The object type * @param string $function The function name * @since 1.7.0 */ function unregister_elgg_event_handler($event, $object_type, $callback) { elgg_deprecated_notice('unregister_elgg_event_handler => elgg_unregister_event_handler', 1.8); elgg_unregister_event_handler($event, $object_type, $callback); }
/** * Load remaining engine libraries and complete bootstraping (see start.php) * * @param string $step Which step to boot strap for. Required because * boot strapping is different until the DB is populated. * * @return void */ protected function finishBootstraping($step) { $dbIndex = array_search('database', $this->getSteps()); $settingsIndex = array_search('settings', $this->getSteps()); $adminIndex = array_search('admin', $this->getSteps()); $completeIndex = array_search('complete', $this->getSteps()); $stepIndex = array_search($step, $this->getSteps()); // To log in the user, we need to use the Elgg core session handling. // Otherwise, use default php session handling $useElggSession = $stepIndex == $adminIndex && $this->isAction || $stepIndex == $completeIndex; if (!$useElggSession) { session_name('Elgg_install'); session_start(); elgg_unregister_event_handler('boot', 'system', 'session_init'); } if ($stepIndex > $dbIndex) { // once the database has been created, load rest of engine global $CONFIG; $lib_dir = $CONFIG->path . 'engine/lib/'; $this->loadSettingsFile(); $lib_files = array('database.php', 'actions.php', 'admin.php', 'annotations.php', 'cron.php', 'entities.php', 'extender.php', 'filestore.php', 'group.php', 'location.php', 'mb_wrapper.php', 'memcache.php', 'metadata.php', 'metastrings.php', 'navigation.php', 'notification.php', 'objects.php', 'opendd.php', 'pagehandler.php', 'pam.php', 'plugins.php', 'private_settings.php', 'relationships.php', 'river.php', 'sites.php', 'statistics.php', 'tags.php', 'user_settings.php', 'users.php', 'upgrade.php', 'web_services.php', 'widgets.php', 'xml.php', 'deprecated-1.7.php', 'deprecated-1.8.php', 'deprecated-1.9.php'); foreach ($lib_files as $file) { $path = $lib_dir . $file; if (!(include_once $path)) { $msg = elgg_echo('InstallationException:MissingLibrary', array($file)); throw new InstallationException($msg); } } setup_db_connections(); register_translations(dirname(dirname(__FILE__)) . "/languages/"); if ($stepIndex > $settingsIndex) { $CONFIG->site_guid = (int) datalist_get('default_site'); $CONFIG->site_id = $CONFIG->site_guid; $CONFIG->site = get_entity($CONFIG->site_guid); $CONFIG->dataroot = datalist_get('dataroot'); _elgg_session_boot(NULL, NULL, NULL); } elgg_trigger_event('init', 'system'); } }
/** * rollback all the access * @param string $func_name */ public static function removeAccess($func_name = 'izap_access_over_ride') { elgg_unregister_event_handler("enable", "all", $func_name); elgg_unregister_plugin_hook_handler("permissions_check", "all", $func_name); elgg_unregister_plugin_hook_handler("container_permissions_check", "all", $func_name); elgg_unregister_plugin_hook_handler("permissions_check:metadata", "all", $func_name); }
/** * * Processes event permissions from the role configuration array. Triggered by the 'ready', 'system' event. * This is to make sure that all plugins' init functions have been executed, and all event handlers have already been initialized * * @param string $event Equals 'ready' * @param string $event_type Equals 'system' * @param mixed $object Not in use for this specific listener * @return boolean */ function roles_events_permissions($event, $type, $object) { $role = roles_get_role(); if (elgg_instanceof($role, 'object', 'role')) { $role_perms = roles_get_role_permissions($role, 'events'); if (is_array($role_perms) && !empty($role_perms)) { foreach ($role_perms as $event => $perm_details) { list($event_name, $type) = explode('::', $event); if (!$type) { $type = 'all'; } switch ($perm_details['rule']) { case 'deny': $params = $perm_details['event']; if (is_array($params)) { $handler = $params['handler']; elgg_unregister_event_handler($event_name, $type, $handler); } else { global $CONFIG; unset($CONFIG->events[$event_name][$type]); } break; case 'extend': $params = $perm_details['event']; $handler = $params['handler']; $priority = isset($params['priority']) ? $params['priority'] : 500; elgg_register_event_handler($event_name, $type, $handler, $priority); break; case 'replace': $params = $perm_details['hook']; $old_handler = $params['old_handler']; $new_handler = $params['new_handler']; $priority = isset($params['priority']) ? $params['priority'] : 500; elgg_unregister_event_handler($event_name, $type, $old_handler); elgg_register_event_handler($event_name, $type, $new_handler, $priority); break; case 'allow': default: break; } } } } return true; }
/** * Load remaining engine libraries and complete bootstraping (see start.php) * * @param string $step Which step to boot strap for. Required because * boot strapping is different until the DB is populated. * * @return void */ protected function finishBootstraping($step) { $dbIndex = array_search('database', $this->getSteps()); $settingsIndex = array_search('settings', $this->getSteps()); $stepIndex = array_search($step, $this->getSteps()); if ($stepIndex <= $settingsIndex) { // install has its own session handling before the db created and set up session_name('Elgg'); session_start(); elgg_unregister_event_handler('boot', 'system', 'session_init'); } else { if (!$this->isAction && $stepIndex == $settingsIndex + 1) { // now using Elgg session handling so need to pass forward the system messages // this is called on the GET of the next step session_name('Elgg'); session_start(); $messages = $_SESSION['msg']; } } if ($stepIndex > $dbIndex) { // once the database has been created, load rest of engine global $CONFIG; $lib_dir = $CONFIG->path . 'engine/lib/'; $this->loadSettingsFile(); $lib_files = array('database.php', 'actions.php', 'admin.php', 'annotations.php', 'calendar.php', 'cron.php', 'entities.php', 'extender.php', 'filestore.php', 'group.php', 'location.php', 'mb_wrapper.php', 'memcache.php', 'metadata.php', 'metastrings.php', 'navigation.php', 'notification.php', 'objects.php', 'opendd.php', 'pagehandler.php', 'pageowner.php', 'pam.php', 'plugins.php', 'private_settings.php', 'relationships.php', 'river.php', 'sites.php', 'statistics.php', 'tags.php', 'user_settings.php', 'users.php', 'upgrade.php', 'web_services.php', 'widgets.php', 'xml.php', 'xml-rpc.php', 'deprecated-1.7.php', 'deprecated-1.8.php'); foreach ($lib_files as $file) { $path = $lib_dir . $file; if (!(include_once $path)) { $msg = elgg_echo('InstallationException:MissingLibrary', array($file)); throw new InstallationException($msg); } } set_default_config(); elgg_trigger_event('boot', 'system'); elgg_trigger_event('init', 'system'); // @hack finish the process of pushing system messages into new session if (!$this->isAction && $stepIndex == $settingsIndex + 1) { $_SESSION['msg'] = $messages; } } }
/** * Change the access of all file in a folder * * @param ElggObject $folder the folder to change the file access for * * @return void */ function file_tools_change_files_access($folder) { if (!elgg_instanceof($folder, 'object', FILE_TOOLS_SUBTYPE)) { return; } // change access on files in this folder $files = new ElggBatch('elgg_get_entities_from_relationship', ['type' => 'object', 'subtype' => 'file', 'container_guid' => $folder->getContainerGUID(), 'limit' => false, 'relationship' => FILE_TOOLS_RELATIONSHIP, 'relationship_guid' => $folder->getGUID()]); // need to unregister an event listener elgg_unregister_event_handler('update', 'object', '\\ColdTrick\\FileTools\\ElggFile::update'); /* @var $file ElggFile */ foreach ($files as $file) { $file->access_id = $folder->access_id; $file->save(); } }
<?php /** * Set validation metadata on unvalidated users to false rather than * not existing. This is needed because of the change in how validation is * being handled. */ // turn off system log because of all the metadata this can create elgg_unregister_event_handler('all', 'all', 'system_log_listener'); elgg_unregister_event_handler('log', 'systemlog', 'system_log_default_logger'); $ia = elgg_set_ignore_access(TRUE); $hidden_entities = access_get_show_hidden_status(); access_show_hidden_entities(TRUE); $validated_id = elgg_get_metastring_id('validated'); $one_id = elgg_get_metastring_id(1); $query = "SELECT guid FROM {$CONFIG->dbprefix}entities e\n\t\t\tWHERE e.type = 'user' AND e.enabled = 'no' AND\n\t\t\tNOT EXISTS (\n\t\t\t\tSELECT 1 FROM {$CONFIG->dbprefix}metadata md\n\t\t\t\tWHERE md.entity_guid = e.guid\n\t\t\t\tAND md.name_id = {$validated_id}\n\t\t\t\tAND md.value_id = {$one_id})"; $user_guids = mysql_query($query); while ($user_guid = mysql_fetch_object($user_guids)) { create_metadata($user_guid->guid, 'validated', false, '', 0, ACCESS_PUBLIC, false); } access_show_hidden_entities($hidden_entities); elgg_set_ignore_access($ia);
public function testPreventRelationshipOnEntityDelete() { $this->assertTrue(add_entity_relationship($this->entity1->guid, 'test_relationship', $this->entity2->guid)); $this->assertTrue(add_entity_relationship($this->entity2->guid, 'test_relationship', $this->entity1->guid)); $guid = $this->entity1->guid; elgg_register_event_handler('delete', 'relationship', 'Elgg\\Values::getFalse'); $this->assertTrue($this->entity1->delete()); elgg_unregister_event_handler('delete', 'relationship', 'Elgg\\Values::getFalse'); // relationships should still be gone as there is no entity // despite the fact we have a handler trying to prevent it $this->assertFalse(check_entity_relationship($guid, 'test_relationship', $this->entity2->guid)); $this->assertFalse(check_entity_relationship($this->entity2->guid, 'test_relationship', $guid)); }
/** * Setup events for a given role * * @param ElggRole $role Role object * @return void */ function setupEvents(\ElggRole $role) { $role_perms = $this->getPermissions($role, 'events'); foreach ($role_perms as $event => $perm_details) { list($event_name, $type) = explode('::', $event); if (!$type) { $type = 'all'; } switch ($perm_details['rule']) { case self::DENY: $params = elgg_extract('event', $perm_details); if (isset($params['handler'])) { $handler = $params['handler']; elgg_unregister_event_handler($event_name, $type, $handler); } else { // @TODO: Update when https://github.com/Elgg/Elgg/issues/9113 is fixed $handlers = _elgg_services()->events->getOrderedHandlers($event_name, $type); foreach ($handlers as $handler) { elgg_unregister_event_handler($event_name, $type, $handler); } } break; case self::EXTEND: $params = elgg_extract('event', $perm_details); $handler = $params['handler']; $priority = isset($params['priority']) ? $params['priority'] : 500; elgg_register_event_handler($event_name, $type, $handler, $priority); break; case self::REPLACE: $params = elgg_extract('event', $perm_details); $old_handler = $params['old_handler']; $new_handler = $params['new_handler']; $priority = isset($params['priority']) ? $params['priority'] : 500; elgg_unregister_event_handler($event_name, $type, $old_handler); elgg_register_event_handler($event_name, $type, $new_handler, $priority); break; case self::ALLOW: default: break; } } }
} function widget_index_activity_url($hook_name, $entity_type, $return_value, $params) { $result = $return_value; $widget = $params["entity"]; if (empty($result) && $widget instanceof ElggWidget && $widget->handler == "index_activity") { $result = "/activity"; } return $result; } elgg_register_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); if (isset($_SESSION['role'])) { switch ($_SESSION['role']) { case "learner": elgg_unregister_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); break; case "instructor": elgg_unregister_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); break; case "developer": elgg_unregister_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); break; case "trainingmgr": elgg_unregister_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); break; default: elgg_register_event_handler("widgets_init", "widget_manager", "widget_index_activity_init"); break; } $role = $_SESSION['role']; }
/** * Undo some extension to view by other plugins * * @param bool $refresh */ function digest_prepare_run($refresh = false) { global $CONFIG; static $run_once; if (!isset($run_once) || $refresh === true) { // add views and css to digest handling digest_message_css(); // let other plugins know they need to add their views/css elgg_trigger_event("prepare", "digest"); // undo likes extension elgg_unregister_event_handler("pagesetup", "system", "likes_setup"); // undo river_comments extensions elgg_unregister_event_handler("pagesetup", "system", "river_comments_setup"); // undo more extensions // trigger pagesetup elgg_view_title("dummy"); // check for more extensions if (isset($CONFIG->views->extensions)) { foreach ($CONFIG->views->extensions as $view => $extensions) { if (stristr($view, "river/")) { unset($CONFIG->views->extensions[$view]); } } } // undo registrations on menu hooks if (isset($CONFIG->hooks["register"])) { if (isset($CONFIG->hooks["register"]["menu:user_hover"])) { $CONFIG->hooks["register"]["menu:user_hover"] = array(); } if (isset($CONFIG->hooks["register"]["menu:river"])) { $CONFIG->hooks["register"]["menu:river"] = array(); } if (isset($CONFIG->hooks["register"]["menu:entity"])) { $CONFIG->hooks["register"]["menu:entity"] = array(); } } if (isset($CONFIG->hooks["prepare"])) { if (isset($CONFIG->hooks["prepare"]["menu:user_hover"])) { $CONFIG->hooks["prepare"]["menu:user_hover"] = array(); } if (isset($CONFIG->hooks["prepare"]["menu:river"])) { $CONFIG->hooks["prepare"]["menu:river"] = array(); } if (isset($CONFIG->hooks["prepare"]["menu:entity"])) { $CONFIG->hooks["prepare"]["menu:entity"] = array(); } } // set alternate view location for some views elgg_set_view_location("icon/user/default", dirname(dirname(__FILE__)) . "/views_alt/", "default"); elgg_set_view_location("river/elements/body", dirname(dirname(__FILE__)) . "/views_alt/", "default"); // only let this happen once $run_once = true; } }
/** * Change the access of all file in a folder * * @param ElggObject $folder the folder to change the file access for * * @return void */ function file_tools_change_files_access($folder) { if (!empty($folder) && $folder instanceof ElggObject) { if ($folder->getSubtype() == FILE_TOOLS_SUBTYPE) { // change access on files in this folder $options = array("type" => "object", "subtype" => "file", "container_guid" => $folder->getContainerGUID(), "limit" => false, "relationship" => FILE_TOOLS_RELATIONSHIP, "relationship_guid" => $folder->getGUID()); if ($files = elgg_get_entities_from_relationship($options)) { // need to unregister an event listener elgg_unregister_event_handler("update", "object", "file_tools_object_handler"); foreach ($files as $file) { $file->access_id = $folder->access_id; $file->save(); } } } } }
/** * Increments edit counter for description editing * * @param string $event Event name * @param string $object_type Event type * @param ElggObject $object Group that is being edited * * @return void */ function profile_manager_description_edit_increment($event, $object_type, $object) { if (elgg_instanceof($object, "group")) { $count = (int) $object->getPrivateSetting("profile_manager_description_edit_count"); $object->setPrivateSetting("profile_manager_description_edit_count", $count + 1); } // only do this once elgg_unregister_event_handler("update", "group", "profile_manager_description_edit_increment"); }