示例#1
0
/**
 * Get all groups based on the email domain of the user from the group settings
 *
 * @param ElggUser $user      The user used to base the search
 * @param int      $site_guid (optional) the site guid to limit the search to, defaults to current site
 *
 * @return bool|ElggGroup[] false or an array of found groups
 */
function group_tools_get_domain_based_groups(ElggUser $user, $site_guid = 0)
{
    $result = false;
    if (group_tools_domain_based_groups_enabled()) {
        if (empty($site_guid)) {
            $site_guid = elgg_get_site_entity()->getGUID();
        }
        if (!empty($user) && elgg_instanceof($user, "user")) {
            list(, $domain) = explode("@", strtolower($user->email));
            $options = array("type" => "group", "limit" => false, "site_guids" => $site_guid, "private_setting_name_value_pairs" => array("name" => "domain_based", "value" => "%|" . $domain . "|%", "operand" => "LIKE"));
            $groups = elgg_get_entities_from_private_settings($options);
            if (!empty($groups)) {
                $result = $groups;
            }
        }
    }
    return $result;
}
示例#2
0
 /**
  * A hook on the ->canEdit() of a group. This is done to allow e-mail domain users to join a group
  *
  * Note: this is a very hacky way arround a short comming of Elgg core
  *
  * @param string $hook         the name of the hook
  * @param string $type         the type of the hook
  * @param bool   $return_value current return value
  * @param null   $params       supplied params
  *
  * @return void|true
  */
 public static function groupJoinPermission($hook, $type, $return_value, $params)
 {
     if (!empty($return_value)) {
         // already allowed
         return;
     }
     if (!group_tools_domain_based_groups_enabled()) {
         return;
     }
     // domain based groups are enabled, lets check if this user is allowed to join based on that
     $group = elgg_extract('entity', $params);
     $user = elgg_extract('user', $params);
     if (!$group instanceof \ElggGroup || !$user instanceof \ElggUser) {
         return;
     }
     if (!group_tools_check_domain_based_group($group, $user)) {
         return;
     }
     return true;
 }
示例#3
0
<?php

$group = elgg_extract('entity', $vars);
if (!$group instanceof ElggGroup || !$group->canEdit() || !group_tools_domain_based_groups_enabled()) {
    return;
}
$title = elgg_echo('group_tools:domain_based:title');
// build form
$form_body = elgg_format_element('div', ['class' => 'mbm'], elgg_echo('group_tools:domain_based:description'));
$domains = $group->getPrivateSetting('domain_based');
if (!empty($domains)) {
    $domains = explode('|', trim($domains, '|'));
}
$form_body .= elgg_format_element('div', [], elgg_view('input/tags', ['name' => 'domains', 'value' => $domains]));
$form_body .= '<div class="elgg-foot mtm">';
$form_body .= elgg_view('input/hidden', ['name' => 'group_guid', 'value' => $group->getGUID()]);
$form_body .= elgg_view('input/submit', ['value' => elgg_echo('save')]);
$form_body .= '</div>';
// make form
$content = elgg_view('input/form', ['action' => 'action/group_tools/domain_based', 'body' => $form_body]);
// show content
echo elgg_view_module('info', $title, $content);
示例#4
0
文件: hooks.php 项目: lorea/Hydra-dev
/**
 * A hook on the ->canEdit() of a group. This is done to allow e-mail domain users to join a group
 *
 * Note: this is a very hacky way arround a short comming of Elgg core
 *
 * @param string $hook         'permissions_check'
 * @param string $type         'group'
 * @param bool   $return_value is the current user allowed to edit the group
 * @param mixed  $params       passed on params
 *
 * @return bool
 */
function group_tools_permissions_check_groups_join_hook($hook, $type, $return_value, $params)
{
    $result = $return_value;
    if (!$result && group_tools_domain_based_groups_enabled()) {
        // domain based groups are enabled, lets check if this user is allowed to join based on that
        if (!empty($params) && is_array($params)) {
            $group = elgg_extract("entity", $params);
            $user = elgg_extract("user", $params);
            if (!empty($group) && elgg_instanceof($group, "group") && !empty($user) && elgg_instanceof($user, "user")) {
                if (group_tools_check_domain_based_group($group, $user)) {
                    $result = true;
                }
            }
        }
    }
    return $result;
}
示例#5
0
/**
 * Get all groups based on the email domain of the user from the group settings
 *
 * @param ElggUser $user      The user used to base the search
 * @param int      $site_guid (optional) the site guid to limit the search to, defaults to current site
 *
 * @return false|ElggGroup[]
 */
function group_tools_get_domain_based_groups(ElggUser $user, $site_guid = 0)
{
    if (!group_tools_domain_based_groups_enabled()) {
        return false;
    }
    if (!$user instanceof ElggUser) {
        return false;
    }
    $site_guid = sanitize_int($site_guid, false);
    if (empty($site_guid)) {
        $site_guid = elgg_get_site_entity()->getGUID();
    }
    list(, $domain) = explode('@', strtolower($user->email));
    $options = ['type' => 'group', 'limit' => false, 'site_guids' => $site_guid, 'private_setting_name_value_pairs' => ['name' => 'domain_based', 'value' => "%|{$domain}|%", 'operand' => 'LIKE']];
    $groups = elgg_get_entities_from_private_settings($options);
    if (!empty($groups)) {
        return $groups;
    }
    return false;
}
示例#6
0
文件: domain_based.php 项目: n8b/VMN
<?php

$group = elgg_extract("entity", $vars);
if (!empty($group) && elgg_instanceof($group, "group") && group_tools_domain_based_groups_enabled()) {
    $title = elgg_echo("group_tools:domain_based:title");
    $form_body = "<div class='mbm'>" . elgg_echo("group_tools:domain_based:description") . "</div>";
    $domains = $group->getPrivateSetting("domain_based");
    if (!empty($domains)) {
        $domains = explode("|", trim($domains, "|"));
    }
    $form_body .= "<div>";
    $form_body .= elgg_view("input/tags", array("name" => "domains", "value" => $domains));
    $form_body .= "</div>";
    $form_body .= "<div class='elgg-foot mtm'>";
    $form_body .= elgg_view("input/hidden", array("name" => "group_guid", "value" => $group->getGUID()));
    $form_body .= elgg_view("input/submit", array("value" => elgg_echo("save")));
    $form_body .= "</div>";
    $content = elgg_view("input/form", array("action" => "action/group_tools/domain_based", "body" => $form_body));
    echo elgg_view_module("info", $title, $content);
}