/** * Add friends if invite code was set * * @param string $hook Hook name * @param string $type Hook type * @param bool $result Whether to allow registration * @param array $params Hook params * @return void */ function invitefriends_add_friends($hook, $type, $result, $params) { $user = $params['user']; /* @var ElggUser $user */ $friend_guid = $params['friend_guid']; $invite_code = $params['invitecode']; // If $friend_guid has been set, make mutual friends if ($friend_guid) { if ($friend_user = get_user($friend_guid)) { if (elgg_validate_invite_code($friend_user->username, $invite_code)) { $user->addFriend($friend_guid, true); $friend_user->addFriend($user->guid, true); } } } }
/** * Add friends if invite code was set * * @param string $hook Hook name * @param string $type Hook type * @param bool $result Whether to allow registration * @param array $params Hook params * @return void */ function invitefriends_add_friends($hook, $type, $result, $params) { $user = elgg_extract('user', $params); if (!$user instanceof \ElggUser) { return; } $friend_guid = elgg_extract('friend_guid', $params); $invite_code = elgg_extract('invitecode', $params); if (!$friend_guid) { return; } $friend_user = get_user($friend_guid); if (!$friend_user instanceof \ElggUser) { return; } if (!elgg_validate_invite_code($friend_user->username, $invite_code)) { return; } // Make mutual friends $user->addFriend($friend_guid, true); $friend_user->addFriend($user->guid, true); }
function siteaccess_validate_invitecode($params) { $valid = false; $friend_guid = $params['friend_guid']; $invite_code = $params['invitecode']; if ($friend_guid) { if ($friend_user = get_user($friend_guid)) { if (elgg_validate_invite_code($friend_user->username, $invite_code)) { $valid = true; } } } return $valid; }
<?php /** * Make elgg invite only. * * @see Readme.md for details * * @licence GNU Public License version 2 * @link https://github.com/mapkyca/elgg-invite-only * @link http://www.marcus-povey.co.uk * @author Marcus Povey <*****@*****.**> */ elgg_register_event_handler('init', 'system', function () { elgg_register_page_handler('register', function ($pages) { // Get invite code details $friend_guid = (int) get_input('friend_guid', 0); $friend = get_entity($friend_guid); $invitecode = get_input('invitecode'); // Validate if ($friend && $invitecode && elgg_validate_invite_code($friend->username, $invitecode)) { require_once dirname(dirname(dirname(__FILE__))) . '/pages/account/register.php'; } else { elgg_unregister_action('register'); require_once dirname(__FILE__) . '/pages/denied.php'; } return true; }); });