示例#1
0
function db_point_get_next_rank_point4rank_id($c_rank_id)
{
    $pre_point = db_point_get_rank_point4rank_id($c_rank_id);
    $sql = 'SELECT point FROM c_rank WHERE point > ? ORDER BY point';
    $params = array(intval($pre_point));
    return db_get_one($sql, $params);
}
示例#2
0
/**
 * PNE_POINT によるメンバーIDリスト絞り込み
 *
 * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
 *
 * @return array
 */
function db_admin_c_member_id_list4cond_pne_point($ids, $cond_list)
{
    $s_point = null;
    $e_point = null;
    $sql = 'SELECT c_member_id' . ' FROM c_member_profile' . ' INNER JOIN c_profile USING (c_profile_id)' . ' WHERE name = ?';
    $params = array('PNE_POINT');
    if ($cond_list['s_rank']) {
        $s_point = db_point_get_rank_point4rank_id($cond_list['s_rank']);
        $sql .= ' AND value >= ?';
        $params[] = (int) $s_point;
    }
    if ($cond_list['e_rank']) {
        $e_point = db_point_get_next_rank_point4rank_id($cond_list['e_rank']);
        if (!is_null($e_point)) {
            $sql .= ' AND value < ?';
            $params[] = (int) $e_point;
        }
    }
    $point_ids = db_get_col($sql, $params);
    // s_point が 0 以下もしくは未定義であり、 e_point が未定義もしくは 0 を超過する場合、 c_member_profile に PNE_POINT が存在しないメンバーも結果に含める
    if ((is_null($s_point) || $s_point <= 0) && (is_null($e_point) || $e_point > 0)) {
        $sql = 'SELECT c_member_id FROM c_member_profile' . ' INNER JOIN c_profile USING (c_profile_id)' . ' WHERE name = ?';
        $params = array('PNE_POINT');
        $have_point_ids = db_get_col($sql, $params);
        // この関数に渡されたメンバーIDの配列と、PNE_POINTが存在するすべてのメンバーIDの配列の差分を結果に追加する
        $point_ids = array_merge($point_ids, array_diff($ids, $have_point_ids));
    }
    return array_intersect($ids, $point_ids);
}