Exemple #1
0
function subgroups_get_group_from_url($group_url)
{
    $matches = subgroups_group_url_matches($group_url);
    $group_guid = $matches['group_guid'];
    $group_alias = $matches['group_alias'];
    $group = get_entity($group_guid);
    if (!$group && elgg_is_active_plugin('group_alias')) {
        $group = get_group_from_group_alias($group_alias);
    }
    if ($group && $group->getURL() == $group_url) {
        return $group;
    } else {
        return false;
    }
}
Exemple #2
0
/**
 * Dispatcher for group alias.
 * URLs take the form of
 *  All groups:       g/
 *  Group profile:    g/<alias>
 *  Group Tools:      g/<alias>/<handler> => <handler>/group/<guid>
 *
 * @param array $page
 * @return bool
 */
function group_alias_page_handler($page)
{
    elgg_set_context('groups');
    if (!isset($page[0])) {
        groups_page_handler(array('all'), 'groups');
        return true;
    }
    $group = get_group_from_group_alias($page[0]);
    if ($group && !isset($page[1])) {
        groups_page_handler(array('profile', $group->guid));
    } elseif ($group && isset($page[1])) {
        forward("{$page['1']}/group/{$group->guid}");
    } else {
        groups_page_handler($page);
    }
    return true;
}
Exemple #3
0
foreach ($CONFIG->group as $shortname => $valuetype) {
    // another work around for Elgg's encoding problems: #561, #1963
    $input[$shortname] = get_input($shortname);
    if (is_array($input[$shortname])) {
        array_walk_recursive($input[$shortname], 'profile_array_decoder');
    } else {
        $input[$shortname] = html_entity_decode($input[$shortname], ENT_COMPAT, 'UTF-8');
    }
    if ($valuetype == 'tags') {
        $input[$shortname] = string_to_tag_array($input[$shortname]);
    }
    if ($shortname == 'alias') {
        if (!get_input('group_guid')) {
            try {
                validate_username($input[$shortname]);
                if (!get_input('group_guid') && get_group_from_group_alias($input[$shortname])) {
                    throw new Exception(elgg_echo('groups:alias:already_token'));
                }
            } catch (Exception $e) {
                register_error($e->getMessage());
                forward(REFERER);
            }
        } else {
            unset($input[$shortname]);
        }
    }
}
$input['name'] = get_input('name');
$input['name'] = html_entity_decode($input['name'], ENT_COMPAT, 'UTF-8');
$user = elgg_get_logged_in_user_entity();
$group_guid = (int) get_input('group_guid');
Exemple #4
0
/**
 * Markup callback
 *
 * Generate HTML markup from linkup patterns, for a single matched
 * pattern. It is used as a regular expression callback.
 *
 * It also takes care of permissions and entity validity, so that no
 * link will be made to unauthorized or non-existing entities.
 * 
 * @return String, the resulting markup
 */
function linkup_markup($matches)
{
    $prefix = $matches[1];
    $marker = $matches[2];
    $subject = $matches[3];
    $text = "{$marker}{$subject}";
    switch ($marker) {
        case "@":
            // user
            if (preg_match("/^[a-z][\\w\\.-]+/i", $subject)) {
                $entity = get_user_by_username($subject);
                $text = linkup_markup_user($entity, $text);
                // TODO elgg_trigger_plugin_hook('mention', 'user');
            }
            break;
        case "!":
            // group
            if (preg_match("/^[0-9]+\$/", $subject)) {
                // Get group by GUID
                $entity = get_entity($subject);
                // TODO if user can access group
            } else {
                if (preg_match("/^[a-z][\\w+-]+\$/i", $subject)) {
                    // Get group by alias
                    if (!elgg_is_active_plugin('group_alias')) {
                        break;
                    }
                    $entity = get_group_from_group_alias($subject);
                }
            }
            $text = linkup_markup_group($entity, $text);
            break;
        case "#":
            // hashtag or task
            if (preg_match("/^[0-9]+\$/", $subject) && elgg_is_active_plugin('tasks')) {
                // Get task by GUID
                $entity = get_entity($subject);
                if (elgg_instanceof($entity, 'object', 'task') || elgg_instanceof($entity, 'object', 'tasklist') || elgg_instanceof($entity, 'object', 'tasklist_top')) {
                    // Linkup task
                    $text = linkup_markup_task($entity, $text);
                    break;
                }
            }
            // Linkup hashtag
            $text = linkup_link($text, "hashtag", "/tag/{$subject}");
            break;
        case "*":
            // entity
            // Check that the subject is a GUID and current user can access
            // the corresponding entity
            if (!preg_match("/^[0-9]+\$/", $subject)) {
                break;
            }
            $entity = get_entity($subject);
            if (elgg_instanceof($entity, 'user')) {
                $text = linkup_markup_user($entity);
            } else {
                if (elgg_instanceof($entity, 'group')) {
                    $text = linkup_markup_group($entity);
                } else {
                    if (elgg_instanceof($entity, 'object', 'task') || elgg_instanceof($entity, 'object', 'tasklist') || elgg_instanceof($entity, 'object', 'tasklist_top')) {
                        $text = linkup_markup_task($entity, $text);
                    } else {
                        if (elgg_instanceof($entity, 'object')) {
                            // get subtype, check permissions, linkup
                            if (!elgg_trigger_plugin_hook('linkup', "object:{$entity->getSubtype()}", array('entity' => $entity))) {
                                // Default object view
                                $text = linkup_markup_object($entity);
                            }
                        }
                    }
                }
            }
            break;
    }
    return "{$prefix}{$text}";
}
<?php

/**
 * Group Alias activation script
 * It sets an alias if group hasn't.
 */
foreach (elgg_get_entities(array('type' => 'group')) as $group) {
    if (!$group->alias) {
        $alias = elgg_get_friendly_title($group->name);
        $alias = preg_replace("/-/", "_", $alias);
        // If alias is token
        if (get_group_from_group_alias($alias)) {
            $alias .= $group->guid;
        }
        $group->alias = $alias;
        $group->save();
    }
}