Ejemplo n.º 1
0
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");
}
Ejemplo n.º 2
0
/**
 * 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');
}
Ejemplo n.º 3
0
/**
 * 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');
}
Ejemplo n.º 4
0
/**
 * 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');
}
Ejemplo n.º 5
0
/**
 * 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');
}
Ejemplo n.º 6
0
/**
 * 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");
}
Ejemplo n.º 7
0
 /**
  * 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");
 }
Ejemplo n.º 8
0
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();
    }
}
Ejemplo n.º 9
0
/**
 * 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);
}
Ejemplo n.º 10
0
 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(), []);
 }
Ejemplo n.º 11
0
/**
 * 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');
}
Ejemplo n.º 12
0
/**
 * 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');
}
Ejemplo n.º 13
0
/**
 * 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');
}
Ejemplo n.º 14
0
 /**
  * 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;
 }
Ejemplo n.º 15
0
/**
 * 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');
}
Ejemplo n.º 16
0
 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();
 }
Ejemplo n.º 17
0
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;
}
Ejemplo n.º 18
0
/**
 * 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);
}
Ejemplo n.º 19
0
 /**
  * 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');
     }
 }
Ejemplo n.º 20
0
 /**
  * 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);
 }
Ejemplo n.º 21
0
/**
 *
 * 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;
}
Ejemplo n.º 22
0
 /**
  * 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;
         }
     }
 }
Ejemplo n.º 23
0
/**
 * 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();
    }
}
Ejemplo n.º 24
0
<?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);
Ejemplo n.º 25
0
 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));
 }
Ejemplo n.º 26
0
 /**
  * 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;
         }
     }
 }
Ejemplo n.º 27
0
}
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'];
}
Ejemplo n.º 28
0
/**
 * 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;
    }
}
Ejemplo n.º 29
0
/**
 * 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();
                }
            }
        }
    }
}
Ejemplo n.º 30
0
Archivo: events.php Proyecto: n8b/VMN
/**
 * 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");
}