ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 6520


Ignore:
Timestamp:
Apr 11, 2008, 3:08:30 PM (14 years ago)
Author:
ebihara
Message:

#2061:メンバーリスト絞り込み・ソート用DB関数リファクタリング(c_member テーブル内データを使ってのメンバーIDリスト取得部分を別関数として分離)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/webapp/modules/admin/lib/db_admin.php

    r6519 r6520  
    551551
    552552/**
    553  * メンバーIDリスト取得(絞り込み対応)
     553 * c_member テーブル内データによるメンバーIDリスト取得
     554 *
     555 * @return array
    554556 */
    555 function _db_admin_c_member_id_list($cond_list, $order = null)
    556 {
    557     $sql = 'SELECT c_member_id'.
    558            ' FROM c_member';
    559 
     557function db_admin_c_member_id_list4cond_c_member($cond_list, $order = null)
     558{
     559    $sql = 'SELECT c_member_id FROM c_member';
    560560    $wheres = array();
    561561
    562     //開始年
     562    // 開始年
    563563    if (!empty($cond_list['s_year'])) {
    564564        $wheres[] = 'birth_year >= ?';
    565565        $params[] = $cond_list['s_year'];
    566566    }
    567     //終了年
     567    // 終了年
    568568    if (!empty($cond_list['e_year'])) {
    569569        $wheres[] = 'birth_year <= ?';
     
    578578    //最終ログイン時間で絞り込み
    579579    if (isset($cond_list['last_login'])) {
    580         //期間で分ける
    581580        switch($cond_list['last_login']) {
    582         case 1: //3日以内
     581        case 1 : // 3日以内
    583582            $wheres[] = 'access_date >= ?';
    584583            $params[] = date('Y-m-d', strtotime('-3 day'));
    585584            break;
    586         case 2: //3~7日以内
     585        case 2 : // 3~7日以内
    587586            $wheres[] = 'access_date >= ? AND access_date < ?';
    588587            $params[] = date('Y-m-d', strtotime('-7 day'));
    589588            $params[] = date('Y-m-d', strtotime('-3 day'));
    590589            break;
    591         case 3: //7~30日以内
     590        case 3 : // 7~30日以内
    592591            $wheres[] = 'access_date >= ? AND access_date < ?';
    593592            $params[] = date('Y-m-d', strtotime('-30 day'));
    594593            $params[] = date('Y-m-d', strtotime('-7 day'));
    595594            break;
    596         case 4: //30日以上
     595        case 4 : // 30日以上
    597596            $wheres[] = 'access_date > ? AND access_date < ?';
    598597            $params[] = '0000-00-00 00:00:00';
    599598            $params[] = date('Y-m-d', strtotime('-30 day'));
    600599            break;
    601         case 5: //未ログイン
     600        case 5 : // 未ログイン
    602601            $wheres[] = 'access_date = ?';
    603602            $params[] = '0000-00-00 00:00:00';
     
    607606
    608607    if ($wheres) {
    609         $where = ' WHERE ' . implode(' AND ', $wheres);
    610     } else {
    611         $where = '';
    612     }
    613     $sql .= $where;
     608        $sql .= ' WHERE ' . implode(' AND ', $wheres);
     609    }
    614610   
    615611    // --- ソートオーダーここから
     
    617613    // $orderの例:id_1 , id_2
    618614    // 「-」の前が項目名であとが1なら昇順 2なら降順
    619     $type = explode("-",$order);
    620 
     615    $type = explode('-', $order);
     616
     617    $is_order = false;
     618    if ($order) {
     619        $is_order = true;
     620
     621        switch ($type[0]) {
     622        case "c_member_id":
     623            $sql .= ' ORDER BY c_member_id';
     624            break;
     625        case "nickname":
     626            $sql .= ' ORDER BY nickname';
     627            break;
     628        case "image_filename":
     629            $sql .= ' ORDER BY image_filename';
     630            break;
     631        case "c_member_id_invite":
     632            $sql .= ' ORDER BY c_member_id_invite';
     633            break;
     634        case "access_date":
     635            $sql .= ' ORDER BY access_date';
     636            break;
     637        case "r_date":
     638            $sql .= ' ORDER BY r_date';
     639            break;
     640        case "birth":
     641            // 降順指定
     642            if ($type[1] == "2") {
     643                $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
     644            } else {
     645                $sql .= ' ORDER BY birth_year, birth_month, birth_day';
     646            }
     647            break;
     648        default :
     649            $is_order = false;
     650        }
     651
     652        // 降順指定
     653        if ($is_order && $type[1] == "2") {
     654            $sql .= ' DESC';
     655        }
     656
     657    }
     658
     659    // --- ソートオーダーここまで
     660
     661    return db_get_col($sql, $params);
     662}
     663
     664/**
     665 * メンバーIDリスト取得(絞り込み対応)
     666 */
     667function _db_admin_c_member_id_list($cond_list, $order = null)
     668{
     669    $ids = db_admin_c_member_id_list4cond_c_member($cond_list, $order);
     670
     671    $type = explode('-', $order);
    621672    //ランクでソートとポイントでソートは同等
    622673    if ($type[0] == 'RANK') {
    623674        $type[0] = 'PNE_POINT';
    624675    }
    625 
    626     $is_order = false;
    627     if ($order) {
    628         $is_order = true;
    629 
    630         switch ($type[0]) {
    631             case "c_member_id":
    632                 $sql .= ' ORDER BY c_member_id';
    633             break;
    634             case "nickname":
    635                 $sql .= ' ORDER BY nickname';
    636             break;
    637             case "image_filename":
    638                 $sql .= ' ORDER BY image_filename';
    639             break;
    640             case "c_member_id_invite":
    641                 $sql .= ' ORDER BY c_member_id_invite';
    642             break;
    643 
    644             case "access_date":
    645                 $sql .= ' ORDER BY access_date';
    646             break;
    647 
    648             case "r_date":
    649                 $sql .= ' ORDER BY r_date';
    650             break;
    651             case "birth":
    652                 //降順指定
    653                 if ($type[1] == "2") {
    654                     $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
    655                 } else {
    656                     $sql .= ' ORDER BY birth_year, birth_month, birth_day';
    657                 }
    658             break;
    659             default :
    660                 $is_order = false;
    661 
    662         }
    663 
    664         //降順指定
    665         if ($is_order && $type[1] == "2") {
    666             $sql .= ' DESC';
    667         }
    668 
    669     }
    670     // --- ソートオーダーここまで
    671 
    672     $ids = db_get_col($sql, $params);
    673676
    674677    // --- ポイントで絞り込み ここから
Note: See TracChangeset for help on using the changeset viewer.