예제 #1
0
            $members = $data['m'] ? $lang['MEMBERS_IN_GROUP'] . ': ' . $data['m'] : $lang['NO_GROUP_MEMBERS'];
            $candidates = $data['c'] ? $lang['PENDING_MEMBERS'] . ': ' . $data['c'] : $lang['NO_PENDING_GROUP_MEMBERS'];
            $options .= '<li class="pad_2"><a href="' . GROUP_URL . $data['id'] . '" class="med bold">' . $text . '</a></li>';
            $options .= $data['rg'] ? '<ul><li class="med">' . $lang['RELEASE_GROUP'] . '</li>' : '<ul>';
            $options .= '<li class="seedmed">' . $members . '</li>';
            if (IS_AM) {
                $options .= '<li class="leechmed">' . $candidates . '</li>';
            }
            $options .= '</ul>';
        }
        return $options;
    }
    if ($groups) {
        $s_hidden_fields = '';
        foreach ($groups as $type => $grp) {
            $template->assign_block_vars('groups', array('MEMBERSHIP' => $lang["GROUP_MEMBER_{$type}"], 'GROUP_SELECT' => build_group($grp)));
        }
        $template->assign_vars(array('SELECT_GROUP' => true, 'PAGE_TITLE' => $lang['GROUP_CONTROL_PANEL'], 'S_USERGROUP_ACTION' => 'group.php', 'S_HIDDEN_FIELDS' => $s_hidden_fields));
    } else {
        if (IS_ADMIN) {
            redirect('admin/admin_groups.php');
        } else {
            bb_die($lang['NO_GROUPS_EXIST']);
        }
    }
} else {
    if (isset($_POST['joingroup']) && $_POST['joingroup']) {
        if ($group_info['group_type'] != GROUP_OPEN) {
            bb_die($lang['THIS_CLOSED_GROUP']);
        }
        $sql = "SELECT g.group_id, g.group_name, ug.user_id, u.user_email, u.username, u.user_lang\n\t\tFROM " . BB_GROUPS . " g\n\t\tLEFT JOIN " . BB_USERS . " u ON(u.user_id = g.group_moderator)\n\t\tLEFT JOIN " . BB_USER_GROUP . " ug ON(ug.group_id = g.group_id AND ug.user_id = {$userdata['user_id']})\n\t\tWHERE g.group_id = {$group_id}\n\t\t\tAND group_single_user = 0\n\t\t\tAND g.group_type = " . GROUP_OPEN . "\n\t\tLIMIT 1";
예제 #2
0
/**
 * Recursively generates subdivision definitions.
 */
function generate_subdivisions($countryCode, array $parents, $subdivisionPaths, $languages)
{
    $group = build_group($parents);
    $subdivisions = [];
    foreach ($subdivisionPaths as $subdivisionPath) {
        $definition = file_get_contents('raw/' . $subdivisionPath . '.json');
        $definition = json_decode($definition, true);
        // The lname is usable as a latin code when the key is non-latin.
        $code = $definition['key'];
        if (isset($definition['lname'])) {
            $code = $definition['lname'];
        }
        if (!isset($subdivisions[$group])) {
            $subdivisions[$group] = ['country_code' => $countryCode, 'parents' => $parents, 'locale' => ''];
            if (isset($definition['lang']) && isset($definition['lname'])) {
                // Only add the locale if there's a local name.
                $subdivisions[$group]['locale'] = process_locale($definition['lang']);
            }
            if (count($subdivisions[$group]['parents']) < 2) {
                // A single parent is the same as the country code.
                unset($subdivisions[$group]['parents']);
            }
        }
        // (Ab)use the local_name field to hold latin translations. This allows
        // us to support only a single translation, but since our only example
        // here is Canada (with French), it will do.
        $translationLanguage = reset($languages);
        if ($translationLanguage) {
            $translation = file_get_contents('raw/' . $subdivisionPath . '--' . $translationLanguage . '.json');
            $translation = json_decode($translation, true);
            $subdivisions[$group]['locale'] = LocaleHelper::canonicalize($translationLanguage);
            $definition['lname'] = $definition['name'];
            $definition['name'] = $translation['name'];
        }
        // Remove the locale key if it wasn't filled.
        if (empty($subdivisions[$group]['locale'])) {
            unset($subdivisions[$group]['locale']);
        }
        // Generate the subdivision.
        $subdivisions[$group]['subdivisions'][$code] = create_subdivision_definition($countryCode, $definition);
        if (isset($definition['sub_keys'])) {
            $subdivisions[$group]['subdivisions'][$code]['has_children'] = true;
            $subdivisionChildrenPaths = [];
            $subdivisionChildrenKeys = explode('~', $definition['sub_keys']);
            foreach ($subdivisionChildrenKeys as $subdivisionChildrenKey) {
                $subdivisionChildrenPaths[] = $subdivisionPath . '_' . $subdivisionChildrenKey;
            }
            $childParents = array_merge($parents, [$code]);
            $subdivisions += generate_subdivisions($countryCode, $childParents, $subdivisionChildrenPaths, $languages);
        }
    }
    // Apply any found customizations.
    $customizations = get_subdivision_customizations($group);
    $subdivisions[$group] = apply_subdivision_customizations($subdivisions[$group], $customizations);
    // All subdivisions have been removed. Remove the rest of the data.
    if (empty($subdivisions[$group]['subdivisions'])) {
        unset($subdivisions[$group]);
    }
    return $subdivisions;
}