コード例 #1
0
ファイル: ocf_groups.php プロジェクト: erico-deh/ocPortal
/**
 * Get the best value of all values of a property for a list of usergroups.
 *
 * @param  array		The list of usergroups.
 * @param  ID_TEXT	The identifier of the property.
 * @return mixed		The best property value ('best' is dependant on the property we are looking at).
 */
function ocf_get_best_group_property($groups, $property)
{
    $big_is_better = array('gift_points_per_day', 'gift_points_base', 'enquire_on_new_ips', 'is_super_admin', 'is_super_moderator', 'max_daily_upload_mb', 'max_attachments_per_post', 'max_avatar_width', 'max_avatar_height', 'max_post_length_comcode', 'max_sig_length_comcode');
    //$small_and_perfectly_formed=array('flood_control_submit_secs','flood_control_access_secs'); Not needed by elimination, but nice to have here as a note
    $go_super_size = in_array($property, $big_is_better);
    global $USER_GROUPS_CACHED;
    ocf_ensure_groups_cached($groups);
    $best_value_so_far = 0;
    // Initialise type to integer
    $best_value_so_far = NULL;
    foreach ($groups as $group) {
        $this_value = $USER_GROUPS_CACHED[$group]['g_' . $property];
        if (is_null($best_value_so_far) || $best_value_so_far < $this_value && $go_super_size || $best_value_so_far > $this_value && !$go_super_size) {
            $best_value_so_far = $this_value;
        }
    }
    return $best_value_so_far;
}
コード例 #2
0
ファイル: ocf_topicview.php プロジェクト: erico-deh/ocPortal
/**
 * Mass-load details for a list of members into memory, to reduce queries when we access it later.
 *
 * @param  array			List of members.
 */
function ocf_cache_member_details($members)
{
    require_code('ocf_members');
    $member_or_list = '';
    foreach ($members as $member) {
        if ($member_or_list != '') {
            $member_or_list .= ' OR ';
        }
        $member_or_list .= 'm.id=' . strval((int) $member);
    }
    if ($member_or_list != '') {
        $member_rows = $GLOBALS['FORUM_DB']->query('SELECT m.*,text_parsed AS signature FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_members m LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'translate t ON ' . db_string_equal_to('language', user_lang()) . ' AND m.m_signature=t.id WHERE ' . $member_or_list);
        global $TABLE_LANG_FIELDS;
        $member_rows_2 = $GLOBALS['FORUM_DB']->query('SELECT f.* FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_member_custom_fields f WHERE ' . str_replace('m.id', 'mf_member_id', $member_or_list), NULL, NULL, false, false, array_key_exists('f_member_custom_fields', $TABLE_LANG_FIELDS) ? $TABLE_LANG_FIELDS['f_member_custom_fields'] : array());
        $member_rows_3 = $GLOBALS['FORUM_DB']->query('SELECT gm_group_id,gm_member_id FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_group_members WHERE gm_validated=1 AND (' . str_replace('m.id', 'gm_member_id', $member_or_list) . ')');
        global $MEMBER_CACHE_FIELD_MAPPINGS, $GROUP_MEMBERS_CACHE, $SIGNATURES_CACHE;
        $found_groups = array();
        foreach ($member_rows as $row) {
            $GLOBALS['OCF_DRIVER']->MEMBER_ROWS_CACHED[$row['id']] = $row;
            if (!ocf_is_ldap_member($row['id'])) {
                // Primary
                $pg = $GLOBALS['OCF_DRIVER']->get_member_row_field($row['id'], 'm_primary_group');
                $found_groups[$pg] = 1;
                $GROUP_MEMBERS_CACHE[$row['id']][false][false] = array($pg => 1);
            }
            // Signature
            if (get_page_name() != 'search' && !is_null($row['signature']) && $row['signature'] != '' && $row['m_signature'] != 0) {
                $SIGNATURES_CACHE[$row['id']] = new ocp_tempcode();
                if (!$SIGNATURES_CACHE[$row['id']]->from_assembly($row['signature'], true)) {
                    unset($SIGNATURES_CACHE[$row['id']]);
                }
            }
        }
        foreach ($member_rows_2 as $row) {
            $MEMBER_CACHE_FIELD_MAPPINGS[$row['mf_member_id']] = $row;
        }
        foreach ($member_rows_3 as $row) {
            if (!ocf_is_ldap_member($row['gm_member_id'])) {
                $GROUP_MEMBERS_CACHE[$row['gm_member_id']][false][false][$row['gm_group_id']] = 1;
                $found_groups[$row['gm_group_id']] = 1;
            }
        }
        require_code('ocf_groups');
        ocf_ensure_groups_cached(array_keys($found_groups));
    }
}
コード例 #3
0
ファイル: ocf_ldap.php プロジェクト: erico-deh/ocPortal
/**
 * Find the named LDAP usergroup for an OCF ID. Note that the returned MAY NOT ACTUALLY EXIST!
 *
 * @param  GROUP			The OCF ID.
 * @return ?SHORT_TEXT	The named LDAP usergroup (NULL: none).
 */
function ocf_group_ocfid_to_ldapcn($id)
{
    if ($id == db_get_first_id() + 1) {
        return get_mapped_admin_group();
    }
    if ($id == get_first_default_group()) {
        return get_mapped_users_group();
    }
    ocf_ensure_groups_cached(array($id));
    global $USER_GROUPS_CACHED;
    return $USER_GROUPS_CACHED[$id]['g__name'];
}