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

Changeset 4403


Ignore:
Timestamp:
Oct 16, 2007, 5:56:07 PM (14 years ago)
Author:
ogawa
Message:

PDTでFormat

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/prj/pne-api/OpenPNE-2.10beta1/webapp/lib/OP.php

    r4401 r4403  
    22////////////////////////////////////////////////////////////////////////////////
    33//
    4 //        共通メソッド    OP.php
     4//        共通メソッド    OP
    55//
    66//        2007-09-26    World Communications (Murata)
     
    1616{
    1717
    18 ////////////////////////////////////////////////////////////////////////////////
    19 // lib/OpenPNE/Auth.php
    20 // modules/ktai/auth.inc
    21 // modules/ktai/do/o_login.php よりコピー・修正
    22 ////////////////////////////////////////////////////////////////////////////////
    23 
    24 /**
    25  * メールアドレス、パスワードを元に認証判定を行う
    26  *
    27  * @param   array $requests リクエストパラメータ
    28  * @return  string  sessionid セッションID
    29  */
    30 function op_k_login($requests)
    31 {
    32     require_once 'OpenPNE/Auth.php';
    33 
    34     // --- リクエスト変数
    35     $c_member_id = $requests['c_member_id'];
    36     $address = $requests['address'];
    37     $password = $requests['password'];
    38     $sid = $requests['sid'];
    39     $is_ktai = $requests['is_ktai'];
    40     // ----------
    41 
    42     // --- セッションIDが渡されてきた場合は一旦ログアウト
    43     if (!empty($sid)) {
    44         session_id($sid);
    45         session_start();
    46         $_SESSION = array();
    47         session_destroy();
    48     }
    49 
    50     if ($is_ktai) {
    51         $sess_name = 'OpenPNEktai';
    52         $ei_name = "ktai";
    53     } else {
    54         $sess_name = 'PHPSESSID';
    55         $ei_name = "common";
    56     }
    57     $_POST['username'] = $address;
    58     $_POST['password'] = $password;
    59 
    60     @session_name($sess_name);
    61     @session_start();
    62     @session_regenerate_id();
    63 
    64     $auth_config = get_auth_config($is_ktai);
    65     $auth_config['options']['advancedsecurity'] = false;
    66     $auth = new OpenPNE_Auth($auth_config['storage'], $auth_config['options'], $is_ktai);
    67     $auth->setExpire($GLOBALS['OpenPNE'][$ei_name]['session_lifetime']);
    68     $auth->setIdle($GLOBALS['OpenPNE'][$ei_name]['session_idletime']);
    69 
    70     $auth->logout();
    71 
    72     if (LOGIN_CHECK_ENABLE) {
    73         include_once 'OpenPNE/LoginChecker.php';
    74         $options = array(
     18    ////////////////////////////////////////////////////////////////////////////////
     19    // lib/OpenPNE/Auth.php
     20    // modules/ktai/auth.inc
     21    // modules/ktai/do/o_login.php よりコピー・修正
     22    ////////////////////////////////////////////////////////////////////////////////
     23
     24    /**
     25     * メールアドレス、パスワードを元に認証判定を行う
     26     *
     27     * @param   array $requests リクエストパラメータ
     28     * @return  string  sessionid セッションID
     29     */
     30    function op_k_login($requests)
     31    {
     32        require_once 'OpenPNE/Auth.php';
     33
     34        // --- リクエスト変数
     35        $c_member_id = $requests['c_member_id'];
     36        $address = $requests['address'];
     37        $password = $requests['password'];
     38        $sid = $requests['sid'];
     39        $is_ktai = $requests['is_ktai'];
     40        // ----------
     41
     42        // --- セッションIDが渡されてきた場合は一旦ログアウト
     43        if (!empty($sid)) {
     44            session_id($sid);
     45            session_start();
     46            $_SESSION = array();
     47            session_destroy();
     48        }
     49
     50        if ($is_ktai) {
     51            $sess_name = 'OpenPNEktai';
     52            $ei_name = "ktai";
     53        } else {
     54            $sess_name = 'PHPSESSID';
     55            $ei_name = "common";
     56        }
     57        $_POST['username'] = $address;
     58        $_POST['password'] = $password;
     59
     60        @session_name($sess_name);
     61        @session_start();
     62        @session_regenerate_id();
     63
     64        $auth_config = get_auth_config($is_ktai);
     65        $auth_config['options']['advancedsecurity'] = false;
     66        $auth = new OpenPNE_Auth($auth_config['storage'], $auth_config['options'], $is_ktai);
     67        $auth->setExpire($GLOBALS['OpenPNE'][$ei_name]['session_lifetime']);
     68        $auth->setIdle($GLOBALS['OpenPNE'][$ei_name]['session_idletime']);
     69
     70        $auth->logout();
     71
     72        if (LOGIN_CHECK_ENABLE) {
     73            include_once 'OpenPNE/LoginChecker.php';
     74            $options = array(
    7575            'check_num'   => LOGIN_CHECK_NUM,
    7676            'check_time'  => LOGIN_CHECK_TIME,
    7777            'reject_time' => LOGIN_REJECT_TIME,
    78         );
    79         $lc =& new OpenPNE_LoginChecker($options);
    80         if ($lc->is_rejected() || !$auth->login(false, true, $is_ktai)) {
    81             $lc->fail_login();
     78            );
     79            $lc =& new OpenPNE_LoginChecker($options);
     80            if ($lc->is_rejected() || !$auth->login(false, true, $is_ktai)) {
     81                $lc->fail_login();
     82                return false;
     83            }
     84        } else {
     85            if (!$auth->login(false, true, $is_ktai)) {
     86                return false;
     87            }
     88        }
     89
     90        $_SESSION['c_member_id'] = $c_member_id;
     91
     92        return session_id();
     93    }
     94
     95
     96
     97
     98
     99    ////////////////////////////////////////////////////////////////////////////////
     100    // lib/util/ktai.php
     101    // lib/OpenPNE/KtaiUA.php よりコピー・修正
     102    ////////////////////////////////////////////////////////////////////////////////
     103
     104    /**
     105     * 携帯電話からのアクセスかどうかを User-Agent の値から判定する
     106     *
     107     * @param   string $ua User-Agent
     108     * @return  bool
     109     */
     110    function op_isKtaiUserAgent($ua)
     111    {
     112        // DoCoMo
     113        if (!strncmp($ua, 'DoCoMo', 6)) {
     114            $is_ktai = true;
     115        }
     116
     117        // Vodafone(PDC)
     118        elseif (!strncmp($ua, 'J-PHONE', 7)) {
     119            $is_ktai = true;
     120        }
     121
     122        // Vodafone(3G)
     123        //* Up.Browser を搭載しているものがある(auより先に評価)
     124        elseif (!strncmp($ua, 'Vodafone', 8) || !strncmp($ua, 'MOT', 3)) {
     125            $is_ktai = true;
     126        }
     127
     128        // SoftBank
     129        elseif (!strncmp($ua, 'SoftBank', 8)) {
     130            $is_ktai = true;
     131        }
     132
     133        // au
     134        elseif (!strncmp($ua, 'KDDI', 4) || !strncasecmp($ua, 'up.browser', 10)) {
     135            $is_ktai = true;
     136        }
     137
     138        // WILLCOM / DDIPOCKET
     139        elseif (strpos($ua, 'WILLCOM') !== false || strpos($ua, 'SHARP/WS') !== false || strpos($ua, 'DDIPOCKET') !== false) {
     140            $is_ktai = true;
     141        }
     142
     143        else {
     144            $is_ktai = false;
     145        }
     146
     147        return $is_ktai;
     148    }
     149
     150
     151
     152
     153
     154
     155
     156
     157    ////////////////////////////////////////////////////////////////////////////////
     158    // lib/db/member.php よりコピー・修正
     159    ////////////////////////////////////////////////////////////////////////////////
     160    /**
     161     * PCアドレスからメンバーIDを取得する
     162     *
     163     * @param   string $pc_address PCアドレス
     164     * @return  int    $c_member_id メンバーID
     165     */
     166    function op_member_c_member_id4pc_address($pc_address)
     167    {
     168        return db_member_c_member_id4pc_address($pc_address);
     169    }
     170
     171    /**
     172     * 携帯アドレスからメンバーIDを取得する
     173     *
     174     * @param   string $ktai_address 携帯アドレス
     175     * @return  int    $c_member_id メンバーID
     176     */
     177    function op_member_c_member_id4ktai_address($ktai_address)
     178    {
     179        return db_member_c_member_id4ktai_address($ktai_address);
     180    }
     181
     182    /**
     183     * ログインIDからメンバーIDを取得する
     184     *
     185     * @param   string $username ログインID
     186     * @param   bool $is_ktai 携帯からのアクセスかどうか
     187     * @return  int  $c_member_id メンバーID
     188     */
     189    function op_member_c_member_id4username($username, $is_ktai = false)
     190    {
     191        return db_member_c_member_id4username($username, $is_ktai);
     192    }
     193
     194    /**
     195     * 暗号化されたログインIDからメンバーIDを取得する
     196     * 暗号化されたメールアドレスの場合は復号化する
     197     *
     198     * @param   string $username 暗号化されたログインID
     199     * @param   bool $is_ktai 携帯からのアクセスかどうか
     200     * @return  int  $c_member_id メンバーID
     201     */
     202    function op_member_c_member_id4username_encrypted($username, $is_ktai = false)
     203    {
     204        return db_member_c_member_id4username_encrypted($username, $is_ktai);
     205    }
     206
     207    /**
     208     * ログインIDとパスワードから認証判定を行う(PCアクセス時)
     209     *
     210     * @param   string $address ログインID
     211     * @param   string $password パスワード
     212     * @return  int    $c_member_id メンバーID
     213     */
     214    function op_member_auth_login($address, $password)
     215    {
     216        if (!$address or !$password) {
    82217            return false;
    83218        }
    84     } else {
    85         if (!$auth->login(false, true, $is_ktai)) {
     219        $c_member_id = OP::op_member_c_member_id4username($address, false);
     220        $sql = "SELECT hashed_password FROM c_member_secure ";
     221        $sql.= " WHERE c_member_id = ? ";
     222        if (md5($password) != db_get_one($sql, array($c_member_id))) {
    86223            return false;
    87224        }
    88     }
    89 
    90     $_SESSION['c_member_id'] = $c_member_id;
    91 
    92     return session_id();
    93 }
    94 
    95 
    96 
    97 
    98 
    99 ////////////////////////////////////////////////////////////////////////////////
    100 // lib/util/ktai.php
    101 // lib/OpenPNE/KtaiUA.php よりコピー・修正
    102 ////////////////////////////////////////////////////////////////////////////////
    103 
    104 /**
    105  * 携帯電話からのアクセスかどうかを User-Agent の値から判定する
    106  *
    107  * @param   string $ua User-Agent
    108  * @return  bool
    109  */
    110 function op_isKtaiUserAgent($ua)
    111 {
    112     // DoCoMo
    113     if (!strncmp($ua, 'DoCoMo', 6)) {
    114         $is_ktai = true;
    115     }
    116 
    117     // Vodafone(PDC)
    118     elseif (!strncmp($ua, 'J-PHONE', 7)) {
    119         $is_ktai = true;
    120     }
    121 
    122     // Vodafone(3G)
    123     //* Up.Browser を搭載しているものがある(auより先に評価)
    124     elseif (!strncmp($ua, 'Vodafone', 8) || !strncmp($ua, 'MOT', 3)) {
    125         $is_ktai = true;
    126     }
    127 
    128     // SoftBank
    129     elseif (!strncmp($ua, 'SoftBank', 8)) {
    130         $is_ktai = true;
    131     }
    132 
    133     // au
    134     elseif (!strncmp($ua, 'KDDI', 4) || !strncasecmp($ua, 'up.browser', 10)) {
    135         $is_ktai = true;
    136     }
    137 
    138     // WILLCOM / DDIPOCKET
    139     elseif (strpos($ua, 'WILLCOM') !== false || strpos($ua, 'SHARP/WS') !== false || strpos($ua, 'DDIPOCKET') !== false) {
    140         $is_ktai = true;
    141     }
    142 
    143     else {
    144         $is_ktai = false;
    145     }
    146 
    147     return $is_ktai;
    148 }
    149 
    150 
    151 
    152 
    153 
    154 
    155 
    156 
    157 ////////////////////////////////////////////////////////////////////////////////
    158 // lib/db/member.php よりコピー・修正
    159 ////////////////////////////////////////////////////////////////////////////////
    160 /**
    161  * PCアドレスからメンバーIDを取得する
    162  *
    163  * @param   string $pc_address PCアドレス
    164  * @return  int    $c_member_id メンバーID
    165  */
    166 function op_member_c_member_id4pc_address($pc_address)
    167 {
    168     return db_member_c_member_id4pc_address($pc_address);
    169 }
    170 
    171 /**
    172  * 携帯アドレスからメンバーIDを取得する
    173  *
    174  * @param   string $ktai_address 携帯アドレス
    175  * @return  int    $c_member_id メンバーID
    176  */
    177 function op_member_c_member_id4ktai_address($ktai_address)
    178 {
    179     return db_member_c_member_id4ktai_address($ktai_address);
    180 }
    181 
    182 /**
    183  * ログインIDからメンバーIDを取得する
    184  *
    185  * @param   string $username ログインID
    186  * @param   bool $is_ktai 携帯からのアクセスかどうか
    187  * @return  int  $c_member_id メンバーID
    188  */
    189 function op_member_c_member_id4username($username, $is_ktai = false)
    190 {
    191     return db_member_c_member_id4username($username, $is_ktai);
    192 }
    193 
    194 /**
    195  * 暗号化されたログインIDからメンバーIDを取得する
    196  * 暗号化されたメールアドレスの場合は復号化する
    197  *
    198  * @param   string $username 暗号化されたログインID
    199  * @param   bool $is_ktai 携帯からのアクセスかどうか
    200  * @return  int  $c_member_id メンバーID
    201  */
    202 function op_member_c_member_id4username_encrypted($username, $is_ktai = false)
    203 {
    204     return db_member_c_member_id4username_encrypted($username, $is_ktai);
    205 }
    206 
    207 /**
    208  * ログインIDとパスワードから認証判定を行う(PCアクセス時)
    209  *
    210  * @param   string $address ログインID
    211  * @param   string $password パスワード
    212  * @return  int    $c_member_id メンバーID
    213  */
    214 function op_member_auth_login($address, $password)
    215 {
    216     if (!$address or !$password) {
    217         return false;
    218     }
    219     $c_member_id = OP::op_member_c_member_id4username($address, false);
    220     $sql = "SELECT hashed_password FROM c_member_secure ";
    221     $sql.= " WHERE c_member_id = ? ";
    222     if (md5($password) != db_get_one($sql, array($c_member_id))) {
    223         return false;
    224     }
    225     return $c_member_id;
    226 }
    227 
    228 /**
    229  * ログインIDとパスワードから認証判定を行う(携帯アクセス時)
    230  *
    231  * @param   string $address ログインID
    232  * @param   string $password パスワード
    233  * @return  int    $c_member_id メンバーID
    234  */
    235 function op_member_k_auth_login($address, $password)
    236 {
    237     return db_member_k_auth_login($address, $password);
    238 }
    239 
    240 /**
    241  * メンバーがアクティブメンバーかどうか判定する
    242  *
    243  * @param   int  $c_member_id メンバーID
    244  * @return  bool
    245  */
    246 function op_member_is_active_c_member_id($c_member_id)
    247 {
    248     return db_member_is_active_c_member_id($c_member_id);
    249 }
    250 
    251 /**
    252  * {c_member_id}が{target_...}にアクセスブロックされているかどうか判定する
    253  *
    254  * @param   int  $c_member_id メンバーID
    255  * @param   int  $target_c_member_id アクセスブロック対象のメンバーID
    256  * @return  bool
    257  */
    258 function op_member_is_access_block($c_member_id, $target_c_member_id)
    259 {
    260     return db_member_is_access_block($c_member_id, $target_c_member_id);
    261 }
    262 
    263 /**
    264  * メンバーがログイン停止かどうか判定する
    265  *
    266  * @param   int  $c_member_id メンバーID
    267  * @return  bool
    268  */
    269 function op_member_is_login_rejected($c_member_id)
    270 {
    271     return db_member_is_login_rejected($c_member_id);
    272 }
    273 
    274 /**
    275  * メンバーが忍び足(あしあとをつけない)状態かどうか判定する
    276  *
    277  * @param   int $c_member_id メンバーID
    278  * @return  bool
    279  */
    280 function op_member_is_shinobiashi($c_member_id)
    281 {
    282     return db_member_is_shinobiashi($c_member_id);
    283 }
    284 
    285 /**
    286  * メンバーの基本情報を取得する
    287  *
    288  * @param   int $c_member_id メンバーID
    289  * @return  array メンバー基本情報
    290  */
    291 function op_get_member_data_list($c_member_id)
    292 {
    293     $sql = 'SELECT';
    294     $sql.= ' c_member_id,';
    295     $sql.= ' nickname,';
    296     $sql.= ' birth_year,';
    297     $sql.= ' birth_month,';
    298     $sql.= ' birth_day,';
    299     $sql.= ' public_flag_birth_year';
    300     $sql.= ' FROM c_member';
    301     $sql.= ' WHERE c_member_id = ?';
    302     $params = array(intval($c_member_id));
    303     return db_get_row($sql, $params);
    304 }
    305 
    306 /**
    307  * メンバーのプロフィール情報を取得する
    308  *
    309  * @param   int $c_member_id メンバーID
    310  * @return  array メンバープロフィール情報
    311  */
    312 function op_get_member_profile_list($c_member_id)
    313 {
    314     $sql = 'SELECT';
    315     $sql.= ' cp.name,';
    316     $sql.= ' cp.caption,';
    317     $sql.= ' cp.form_type,';
    318     $sql.= ' cm.value,';
    319     $sql.= ' cm.public_flag';
    320     $sql.= ' FROM c_member_profile as cm, c_profile as cp';
    321     $sql.= ' WHERE cm.c_member_id = ?';
    322     $sql.= ' AND cm.c_profile_id = cp.c_profile_id';
    323     $sql.= ' ORDER BY cp.sort_order, cm.c_member_profile_id';
    324     $params = array(intval($c_member_id));
    325     return db_get_all($sql, $params);
    326 }
    327 
    328 
    329 
    330 
    331 
    332 ////////////////////////////////////////////////////////////////////////////////
    333 // lib/db/diary.php よりコピー・修正
    334 ////////////////////////////////////////////////////////////////////////////////
    335 
    336 /**
    337  * アクセスメンバーID・参照メンバーIDから日記を最新順で取得する
    338  *
    339  * @param   int $target_c_member_id 日記を登録したメンバーID
    340  * @param   int $access_c_member_id アクセスしたメンバーID
    341  * @param   int $count 取得する日記の件数
    342  * @return  array 日記情報
    343  */
    344 function op_diary_get_c_diary($target_c_member_id, $access_c_member_id = 0, $count = 10)
    345 {
    346     if ($target_c_member_id == $access_c_member_id) {
    347         $is_friend = true;
    348         $is_own = true;
    349     } else {
    350         $is_friend = OP::op_friend_is_friend($target_c_member_id, $access_c_member_id);
    351         $is_own = false;
    352     }
    353 
    354     $sql = "SELECT c_diary_id, subject, body, r_datetime";
    355     $sql.= " FROM c_diary";
    356     $sql.= " WHERE c_member_id = ?";
    357     $sql.= " AND (public_flag = 'public'";
    358 
    359     if ($is_friend) {
    360         $sql.= " OR public_flag = 'friend'";
    361     }
    362 
    363     if ($is_own) {
    364         $sql.= " OR public_flag = 'private')";
    365     } else {
    366         $sql.= ")";
    367     }
    368 
    369     $sql.= " ORDER BY r_datetime DESC";
    370     $params = array(intval($target_c_member_id));
    371     $arr = db_get_all_limit($sql, 0, $count, $params);
    372     return $arr;
    373 }
    374 
    375 /**
    376  * 日記IDからその日記を書いたメンバーIDを取得する
    377  *
    378  * @param   int $c_diary_id 日記ID
    379  * @return  int メンバーID
    380  */
    381 function op_diary_get_c_member_id4c_diary_id($c_diary_id)
    382 {
    383     $sql = "SELECT c_member_id";
    384     $sql.= " FROM c_diary";
    385     $sql.= " WHERE c_diary_id = ?";
    386     $params = array(intval($c_diary_id));
    387     return intval(db_get_one($sql, $params));
    388 }
    389 
    390 /**
    391  * 日記IDからその日記の公開範囲を取得する
    392  *
    393  * @param   int $c_diary_id 日記ID
    394  * @return  string  公開範囲
    395  */
    396 function op_diary_get_c_member_id4public_flg($c_diary_id)
    397 {
    398     $sql = "SELECT public_flag";
    399     $sql.= " FROM c_diary";
    400     $sql.= " WHERE  c_diary_id = ?";
    401     $params = array(intval($c_diary_id));
    402     return strval(db_get_one($sql, $params));
    403 }
    404 
    405 /**
    406  * 日記へコメントを追加する
    407  *
    408  * @param  int    $c_member_id メンバーID
    409  * @param  int    $c_diary_id 日記ID
    410  * @param  string $body コメント
    411  * @return int    コメントID
    412  */
    413 function op_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body)
    414 {
    415     return db_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body);
    416 }
    417 
    418 /**
    419  * 日記の未読フラグを書込む
    420  *
    421  * @param  int    $c_diary_id 日記ID
    422  * @return bool
    423  */
    424 function op_diary_c_diary_is_no_checked($c_diary_id)
    425 {
    426     $sql = "SELECT is_checked";
    427     $sql.= " FROM c_diary";
    428     $sql.= " WHERE c_diary_id = ?";
    429     $params = array(intval($c_diary_id));
    430 
    431     if (intval(db_get_one($sql, $params))) {
    432         $data  = array('is_checked' => 0);
    433         $where = array('c_diary_id' => intval($c_diary_id));
    434         return db_update('c_diary', $data, $where);
    435     }
    436     return true;
    437 }
    438 
    439 
    440 
    441 
    442 
    443 ////////////////////////////////////////////////////////////////////////////////
    444 // lib/db/friend.php よりコピー・修正
    445 ////////////////////////////////////////////////////////////////////////////////
    446 /**
    447  * 友達かどうか判定する
    448  *
    449  * @param  int $c_member_id1 メンバーID
    450  * @param  int $c_member_id2 メンバーID
    451  * @return bool
    452  */
    453 function op_friend_is_friend($c_member_id1, $c_member_id2)
    454 {
    455     return db_friend_is_friend($c_member_id1, $c_member_id2);
    456 }
    457 
    458 
    459 
    460 
    461 
    462 ////////////////////////////////////////////////////////////////////////////////
    463 // lib/db/action.php よりコピー・修正
    464 ////////////////////////////////////////////////////////////////////////////////
    465 /**
    466  * アクションIDからポイントを取得する
    467  *
    468  * @param  int $c_action_id アクションID
    469  * @return  int ポイントID
    470  */
    471 function op_action_get_point4c_action_id($c_action_id)
    472 {
    473     return db_action_get_point4c_action_id($c_action_id);
    474 }
    475 
    476 
    477 
    478 
    479 
    480 ////////////////////////////////////////////////////////////////////////////////
    481 // lib/db/point.php よりコピー・修正
    482 ////////////////////////////////////////////////////////////////////////////////
    483 /**
    484  * ポイントを加算する
    485  *
    486  * @param  int $c_member_id メンバーID
    487  * @param  int $point ポイント数
    488  * @return  int 加算後のポイント数
    489  */
    490 function op_point_add_point($c_member_id, $point)
    491 {
    492     return db_point_add_point($c_member_id, $point);
    493 }
    494 
    495 /**
    496  * メンバーIDからポイントを取得する
    497  *
    498  * @param  int $c_member_id メンバーID
    499  * @return  int ポイントID
    500  */
    501 function op_point_get_point($c_member_id)
    502 {
    503     return db_point_get_point($c_member_id);
    504 }
    505 
    506 /**
    507  * ポイントからランクを取得する
    508  *
    509  * @param  int $point ポイント数
    510  * @return  array ランク情報
    511  */
    512 function op_point_get_rank4point($point)
    513 {
    514     return db_point_get_rank4point($point);
    515 }
    516 
    517 
    518 
    519 
    520 
    521 /////////////////////////////////////////////////////////////////////////
    522 // lib/db/ashiato.php参考
    523 /////////////////////////////////////////////////////////////////////////
    524 
    525 /*新規*/
    526 /**
    527  * あしあとの存在するメンバか判定する
    528  * @param $c_member_id メンバーID
    529  * @return bool
    530  */
    531 function op_is_ahiato_member($c_member_id)
    532 {
    533     $sql = 'SELECT COUNT(*)';
    534     $sql.= '  FROM c_ashiato';
    535     $sql.= ' WHERE c_member_id_to = ?';
    536     $params = array(intval($c_member_id));
    537     if( intval(db_get_one($sql, $params)) == 0 ) {
    538         return false;
    539     } else {
     225        return $c_member_id;
     226    }
     227
     228    /**
     229     * ログインIDとパスワードから認証判定を行う(携帯アクセス時)
     230     *
     231     * @param   string $address ログインID
     232     * @param   string $password パスワード
     233     * @return  int    $c_member_id メンバーID
     234     */
     235    function op_member_k_auth_login($address, $password)
     236    {
     237        return db_member_k_auth_login($address, $password);
     238    }
     239
     240    /**
     241     * メンバーがアクティブメンバーかどうか判定する
     242     *
     243     * @param   int  $c_member_id メンバーID
     244     * @return  bool
     245     */
     246    function op_member_is_active_c_member_id($c_member_id)
     247    {
     248        return db_member_is_active_c_member_id($c_member_id);
     249    }
     250
     251    /**
     252     * {c_member_id}が{target_...}にアクセスブロックされているかどうか判定する
     253     *
     254     * @param   int  $c_member_id メンバーID
     255     * @param   int  $target_c_member_id アクセスブロック対象のメンバーID
     256     * @return  bool
     257     */
     258    function op_member_is_access_block($c_member_id, $target_c_member_id)
     259    {
     260        return db_member_is_access_block($c_member_id, $target_c_member_id);
     261    }
     262
     263    /**
     264     * メンバーがログイン停止かどうか判定する
     265     *
     266     * @param   int  $c_member_id メンバーID
     267     * @return  bool
     268     */
     269    function op_member_is_login_rejected($c_member_id)
     270    {
     271        return db_member_is_login_rejected($c_member_id);
     272    }
     273
     274    /**
     275     * メンバーが忍び足(あしあとをつけない)状態かどうか判定する
     276     *
     277     * @param   int $c_member_id メンバーID
     278     * @return  bool
     279     */
     280    function op_member_is_shinobiashi($c_member_id)
     281    {
     282        return db_member_is_shinobiashi($c_member_id);
     283    }
     284
     285    /**
     286     * メンバーの基本情報を取得する
     287     *
     288     * @param   int $c_member_id メンバーID
     289     * @return  array メンバー基本情報
     290     */
     291    function op_get_member_data_list($c_member_id)
     292    {
     293        $sql = 'SELECT';
     294        $sql.= ' c_member_id,';
     295        $sql.= ' nickname,';
     296        $sql.= ' birth_year,';
     297        $sql.= ' birth_month,';
     298        $sql.= ' birth_day,';
     299        $sql.= ' public_flag_birth_year';
     300        $sql.= ' FROM c_member';
     301        $sql.= ' WHERE c_member_id = ?';
     302        $params = array(intval($c_member_id));
     303        return db_get_row($sql, $params);
     304    }
     305
     306    /**
     307     * メンバーのプロフィール情報を取得する
     308     *
     309     * @param   int $c_member_id メンバーID
     310     * @return  array メンバープロフィール情報
     311     */
     312    function op_get_member_profile_list($c_member_id)
     313    {
     314        $sql = 'SELECT';
     315        $sql.= ' cp.name,';
     316        $sql.= ' cp.caption,';
     317        $sql.= ' cp.form_type,';
     318        $sql.= ' cm.value,';
     319        $sql.= ' cm.public_flag';
     320        $sql.= ' FROM c_member_profile as cm, c_profile as cp';
     321        $sql.= ' WHERE cm.c_member_id = ?';
     322        $sql.= ' AND cm.c_profile_id = cp.c_profile_id';
     323        $sql.= ' ORDER BY cp.sort_order, cm.c_member_profile_id';
     324        $params = array(intval($c_member_id));
     325        return db_get_all($sql, $params);
     326    }
     327
     328
     329
     330
     331
     332    ////////////////////////////////////////////////////////////////////////////////
     333    // lib/db/diary.php よりコピー・修正
     334    ////////////////////////////////////////////////////////////////////////////////
     335
     336    /**
     337     * アクセスメンバーID・参照メンバーIDから日記を最新順で取得する
     338     *
     339     * @param   int $target_c_member_id 日記を登録したメンバーID
     340     * @param   int $access_c_member_id アクセスしたメンバーID
     341     * @param   int $count 取得する日記の件数
     342     * @return  array 日記情報
     343     */
     344    function op_diary_get_c_diary($target_c_member_id, $access_c_member_id = 0, $count = 10)
     345    {
     346        if ($target_c_member_id == $access_c_member_id) {
     347            $is_friend = true;
     348            $is_own = true;
     349        } else {
     350            $is_friend = OP::op_friend_is_friend($target_c_member_id, $access_c_member_id);
     351            $is_own = false;
     352        }
     353
     354        $sql = "SELECT c_diary_id, subject, body, r_datetime";
     355        $sql.= " FROM c_diary";
     356        $sql.= " WHERE c_member_id = ?";
     357        $sql.= " AND (public_flag = 'public'";
     358
     359        if ($is_friend) {
     360            $sql.= " OR public_flag = 'friend'";
     361        }
     362
     363        if ($is_own) {
     364            $sql.= " OR public_flag = 'private')";
     365        } else {
     366            $sql.= ")";
     367        }
     368
     369        $sql.= " ORDER BY r_datetime DESC";
     370        $params = array(intval($target_c_member_id));
     371        $arr = db_get_all_limit($sql, 0, $count, $params);
     372        return $arr;
     373    }
     374
     375    /**
     376     * 日記IDからその日記を書いたメンバーIDを取得する
     377     *
     378     * @param   int $c_diary_id 日記ID
     379     * @return  int メンバーID
     380     */
     381    function op_diary_get_c_member_id4c_diary_id($c_diary_id)
     382    {
     383        $sql = "SELECT c_member_id";
     384        $sql.= " FROM c_diary";
     385        $sql.= " WHERE c_diary_id = ?";
     386        $params = array(intval($c_diary_id));
     387        return intval(db_get_one($sql, $params));
     388    }
     389
     390    /**
     391     * 日記IDからその日記の公開範囲を取得する
     392     *
     393     * @param   int $c_diary_id 日記ID
     394     * @return  string  公開範囲
     395     */
     396    function op_diary_get_c_member_id4public_flg($c_diary_id)
     397    {
     398        $sql = "SELECT public_flag";
     399        $sql.= " FROM c_diary";
     400        $sql.= " WHERE  c_diary_id = ?";
     401        $params = array(intval($c_diary_id));
     402        return strval(db_get_one($sql, $params));
     403    }
     404
     405    /**
     406     * 日記へコメントを追加する
     407     *
     408     * @param  int    $c_member_id メンバーID
     409     * @param  int    $c_diary_id 日記ID
     410     * @param  string $body コメント
     411     * @return int    コメントID
     412     */
     413    function op_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body)
     414    {
     415        return db_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body);
     416    }
     417
     418    /**
     419     * 日記の未読フラグを書込む
     420     *
     421     * @param  int    $c_diary_id 日記ID
     422     * @return bool
     423     */
     424    function op_diary_c_diary_is_no_checked($c_diary_id)
     425    {
     426        $sql = "SELECT is_checked";
     427        $sql.= " FROM c_diary";
     428        $sql.= " WHERE c_diary_id = ?";
     429        $params = array(intval($c_diary_id));
     430
     431        if (intval(db_get_one($sql, $params))) {
     432            $data  = array('is_checked' => 0);
     433            $where = array('c_diary_id' => intval($c_diary_id));
     434            return db_update('c_diary', $data, $where);
     435        }
    540436        return true;
    541437    }
    542 }
    543 
    544 /*新規*/
    545 /**
    546  * あしあとを付けたメンバの一覧をメンバプロフィールも含めて取得する
    547  * @param $c_member_id_to  あしあとを付けられたメンバーID
    548  *        $count           取得データの最大数
    549  *        $profile         プロフィール項目
    550  * @return 以下の形式の配列
    551  *         array ( array( prifile1 => value) [, array( profile2 => value), ...]) )
    552  */
    553 function op_ashiato_list_c_member_profile($c_member_id_to, $count, $profile)
    554 {
    555 
    556     //「あしあと」を登録したメンバーIDを「あしあと」登録日の新しいものの順に取得する
    557     $sql = 'SELECT DISTINCT r_date FROM c_ashiato WHERE c_member_id_to = ? ORDER BY r_date DESC';
    558     $params = array(intval($c_member_id_to));
    559     $days = db_get_col_limit($sql, 0, $count, $params);
    560    
    561     if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
    562         $sql = 'SELECT DISTINCT c_member_id_from, to_char(MAX(r_datetime),\'YYYY/MM/DD HH24:MI:SS\') AS r_datetime' .
     438
     439
     440
     441
     442
     443    ////////////////////////////////////////////////////////////////////////////////
     444    // lib/db/friend.php よりコピー・修正
     445    ////////////////////////////////////////////////////////////////////////////////
     446    /**
     447     * 友達かどうか判定する
     448     *
     449     * @param  int $c_member_id1 メンバーID
     450     * @param  int $c_member_id2 メンバーID
     451     * @return bool
     452     */
     453    function op_friend_is_friend($c_member_id1, $c_member_id2)
     454    {
     455        return db_friend_is_friend($c_member_id1, $c_member_id2);
     456    }
     457
     458
     459
     460
     461
     462    ////////////////////////////////////////////////////////////////////////////////
     463    // lib/db/action.php よりコピー・修正
     464    ////////////////////////////////////////////////////////////////////////////////
     465    /**
     466     * アクションIDからポイントを取得する
     467     *
     468     * @param  int $c_action_id アクションID
     469     * @return  int ポイントID
     470     */
     471    function op_action_get_point4c_action_id($c_action_id)
     472    {
     473        return db_action_get_point4c_action_id($c_action_id);
     474    }
     475
     476
     477
     478
     479
     480    ////////////////////////////////////////////////////////////////////////////////
     481    // lib/db/point.php よりコピー・修正
     482    ////////////////////////////////////////////////////////////////////////////////
     483    /**
     484     * ポイントを加算する
     485     *
     486     * @param  int $c_member_id メンバーID
     487     * @param  int $point ポイント数
     488     * @return  int 加算後のポイント数
     489     */
     490    function op_point_add_point($c_member_id, $point)
     491    {
     492        return db_point_add_point($c_member_id, $point);
     493    }
     494
     495    /**
     496     * メンバーIDからポイントを取得する
     497     *
     498     * @param  int $c_member_id メンバーID
     499     * @return  int ポイントID
     500     */
     501    function op_point_get_point($c_member_id)
     502    {
     503        return db_point_get_point($c_member_id);
     504    }
     505
     506    /**
     507     * ポイントからランクを取得する
     508     *
     509     * @param  int $point ポイント数
     510     * @return  array ランク情報
     511     */
     512    function op_point_get_rank4point($point)
     513    {
     514        return db_point_get_rank4point($point);
     515    }
     516
     517
     518
     519
     520
     521    /////////////////////////////////////////////////////////////////////////
     522    // lib/db/ashiato.php参考
     523    /////////////////////////////////////////////////////////////////////////
     524
     525    /*新規*/
     526    /**
     527     * あしあとの存在するメンバか判定する
     528     * @param $c_member_id メンバーID
     529     * @return bool
     530     */
     531    function op_is_ahiato_member($c_member_id)
     532    {
     533        $sql = 'SELECT COUNT(*)';
     534        $sql.= '  FROM c_ashiato';
     535        $sql.= ' WHERE c_member_id_to = ?';
     536        $params = array(intval($c_member_id));
     537        if( intval(db_get_one($sql, $params)) == 0 ) {
     538            return false;
     539        } else {
     540            return true;
     541        }
     542    }
     543
     544    /*新規*/
     545    /**
     546     * あしあとを付けたメンバの一覧をメンバプロフィールも含めて取得する
     547     * @param $c_member_id_to  あしあとを付けられたメンバーID
     548     *        $count           取得データの最大数
     549     *        $profile         プロフィール項目
     550     * @return 以下の形式の配列
     551     *         array ( array( prifile1 => value) [, array( profile2 => value), ...]) )
     552     */
     553    function op_ashiato_list_c_member_profile($c_member_id_to, $count, $profile)
     554    {
     555
     556        //「あしあと」を登録したメンバーIDを「あしあと」登録日の新しいものの順に取得する
     557        $sql = 'SELECT DISTINCT r_date FROM c_ashiato WHERE c_member_id_to = ? ORDER BY r_date DESC';
     558        $params = array(intval($c_member_id_to));
     559        $days = db_get_col_limit($sql, 0, $count, $params);
     560
     561        if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
     562            $sql = 'SELECT DISTINCT c_member_id_from, to_char(MAX(r_datetime),\'YYYY/MM/DD HH24:MI:SS\') AS r_datetime' .
    563563               ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
    564564               ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
    565     } else {
    566         $sql = 'SELECT DISTINCT c_member_id_from, DATE_FORMAT(MAX(r_datetime),\'%Y/%m/%d %H:%i:%s\') AS r_datetime' .
     565        } else {
     566            $sql = 'SELECT DISTINCT c_member_id_from, DATE_FORMAT(MAX(r_datetime),\'%Y/%m/%d %H:%i:%s\') AS r_datetime' .
    567567               ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
    568568               ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
    569     }
    570    
    571     $member_list = array();
    572     foreach ($days as $day) {
    573         $params = array(strval($day), intval($c_member_id_to));
    574         $day_result = db_get_all_limit($sql, 0, intval($count), $params);
    575         $member_list = array_merge($member_list, $day_result);
    576         $count -= count($day_result);
    577         if ($count <= 0) {
    578             break;
    579         }
    580     }
    581 
    582     //プロフィールを取得
    583     $list = array();
    584     foreach ($member_list as $key => $value) {
    585         //メンバ情報の取得   
    586         $c_member = OP::op_get_member_data_list($value['c_member_id_from']);
    587 
    588         //デフォルト項目(メンバId、ニックネーム、登録日)
    589         $list_mem = array(
     569        }
     570
     571        $member_list = array();
     572        foreach ($days as $day) {
     573            $params = array(strval($day), intval($c_member_id_to));
     574            $day_result = db_get_all_limit($sql, 0, intval($count), $params);
     575            $member_list = array_merge($member_list, $day_result);
     576            $count -= count($day_result);
     577            if ($count <= 0) {
     578                break;
     579            }
     580        }
     581
     582        //プロフィールを取得
     583        $list = array();
     584        foreach ($member_list as $key => $value) {
     585            //メンバ情報の取得   
     586            $c_member = OP::op_get_member_data_list($value['c_member_id_from']);
     587
     588            //デフォルト項目(メンバId、ニックネーム、登録日)
     589            $list_mem = array(
    590590                'mid' => $value['c_member_id_from'] ,
    591591                'nickname'    => $c_member['nickname'],
    592592                'datetime'    => $value['r_datetime'],
    593         );
    594         //メンバのプロフィールを取得する
    595         $prof_list = OP::op_get_member_profile_list($value['c_member_id_from']);
    596 
    597         //取得指定のプロフィールを設定する
    598         $prof_arry = split(',',$profile);
    599         foreach($prof_arry as $profile_name){
    600             $prof_key = strtolower(trim($profile_name));
    601             $prof_val = '';
    602 
    603             //プロフィール文字列と一致するプロフィールを探す
    604             $is_search = FALSE;
    605             foreach ($prof_list as $val) {
    606                 if ( $val['name'] == $prof_key ) {
    607                     $is_search = TRUE;
    608                     //プロフィールの公開区分をチェックする
    609                     if ( $val['public_flag'] == 'public' ) {
    610                         $prof_val = $val['value'];
     593            );
     594            //メンバのプロフィールを取得する
     595            $prof_list = OP::op_get_member_profile_list($value['c_member_id_from']);
     596
     597            //取得指定のプロフィールを設定する
     598            $prof_arry = split(',',$profile);
     599            foreach($prof_arry as $profile_name){
     600                $prof_key = strtolower(trim($profile_name));
     601                $prof_val = '';
     602
     603                //プロフィール文字列と一致するプロフィールを探す
     604                $is_search = FALSE;
     605                foreach ($prof_list as $val) {
     606                    if ( $val['name'] == $prof_key ) {
     607                        $is_search = TRUE;
     608                        //プロフィールの公開区分をチェックする
     609                        if ( $val['public_flag'] == 'public' ) {
     610                            $prof_val = $val['value'];
     611                        }
    611612                    }
    612613                }
    613             }
    614             //プロフィールテーブルに無い項目?
    615             if ( $is_search == FALSE ) {
    616                 if ( $prof_key == 'birthday') {
    617                     if ( $c_member['public_flag_birth_year'] == 'public' ) {
    618                         $prof_val = $c_member['birth_year'] .'/'. $c_member['birth_month'] .'/'. $c_member['birth_day'];
     614                //プロフィールテーブルに無い項目?
     615                if ( $is_search == FALSE ) {
     616                    if ( $prof_key == 'birthday') {
     617                        if ( $c_member['public_flag_birth_year'] == 'public' ) {
     618                            $prof_val = $c_member['birth_year'] .'/'. $c_member['birth_month'] .'/'. $c_member['birth_day'];
     619                        }
    619620                    }
    620621                }
     622                //項目を追加
     623                $list_mem = array_merge($list_mem, array($prof_key => $prof_val));
    621624            }
    622             //項目を追加
    623             $list_mem = array_merge($list_mem, array($prof_key => $prof_val));
    624         }
    625 
    626         //返却値リストに追加
    627         array_push($list, $list_mem);
    628 
    629     }
    630 
    631     return $list;
    632 }
    633 
    634 /**
    635  * 総あしあと数を取得する
    636  *
    637  * @param  int $c_member_id 訪問されたメンバーID
    638  * @return int 総あしあと数
    639  */
    640 function op_ashiato_c_ashiato_num4c_member_id($c_member_id)
    641 {
    642     return db_ashiato_c_ashiato_num4c_member_id($c_member_id);
    643 }
    644 
    645 /**
    646  * あしあとが一定数に達した場合にメール送信を行う
    647  * その場合の一定数を取得する
    648  *
    649  * @param  int $c_member_id メンバーID
    650  * @return int 一定数
    651  */
    652 function op_ashiato_ashiato_mail_num4c_member_id($c_member_id)
    653 {
    654     return db_ashiato_ashiato_mail_num4c_member_id($c_member_id);
    655 }
    656 
    657 /**
    658  * あしあとを付ける
    659  *
    660  * @param  int $c_member_id_to あしあとをつけるメンバーのID
    661  * @param  int $c_member_id_from あしあとをつけられるメンバーのID
    662  * @return bool
    663  */
    664 function op_ashiato_insert_c_ashiato($c_member_id_to, $c_member_id_from)
    665 {
    666     $data = array(
     625
     626            //返却値リストに追加
     627            array_push($list, $list_mem);
     628
     629        }
     630
     631        return $list;
     632    }
     633
     634    /**
     635     * 総あしあと数を取得する
     636     *
     637     * @param  int $c_member_id 訪問されたメンバーID
     638     * @return int 総あしあと数
     639     */
     640    function op_ashiato_c_ashiato_num4c_member_id($c_member_id)
     641    {
     642        return db_ashiato_c_ashiato_num4c_member_id($c_member_id);
     643    }
     644
     645    /**
     646     * あしあとが一定数に達した場合にメール送信を行う
     647     * その場合の一定数を取得する
     648     *
     649     * @param  int $c_member_id メンバーID
     650     * @return int 一定数
     651     */
     652    function op_ashiato_ashiato_mail_num4c_member_id($c_member_id)
     653    {
     654        return db_ashiato_ashiato_mail_num4c_member_id($c_member_id);
     655    }
     656
     657    /**
     658     * あしあとを付ける
     659     *
     660     * @param  int $c_member_id_to あしあとをつけるメンバーのID
     661     * @param  int $c_member_id_from あしあとをつけられるメンバーのID
     662     * @return bool
     663     */
     664    function op_ashiato_insert_c_ashiato($c_member_id_to, $c_member_id_from)
     665    {
     666        $data = array(
    667667        'c_member_id_from' => intval($c_member_id_from),
    668668        'c_member_id_to'   => intval($c_member_id_to),
    669669        'r_datetime' => db_now(),
    670670        'r_date' => db_now(),
    671     );
    672     if (!db_insert('c_ashiato', $data)) {
    673         return false;
    674     }
    675 
    676     if ($ashiato_mail_num = OP::op_ashiato_ashiato_mail_num4c_member_id($c_member_id_to)) {
    677         //総足あと数を取得
    678         $ashiato_num = OP::op_ashiato_c_ashiato_num4c_member_id($c_member_id_to);
    679 
    680         //あしあとお知らせメールを送る
    681         if ($ashiato_num == $ashiato_mail_num) {
    682             do_common_send_ashiato_mail($c_member_id_to, $c_member_id_from);
    683         }
    684     }
    685 
    686     return true;
    687 }
    688 
    689 /**
    690  * 一定時間内の連続アクセスかどうか判定する
    691  *
    692  * @param  int $c_member_id_to あしあとをつけるメンバーのID
    693  * @param  int $c_member_id_from あしあとをつけられるメンバーのID
    694  * @return bool
    695  */
    696 function op_ashiato_check_access_minute($c_member_id_to, $c_member_id_from)
    697 {
    698     $wait = date('Y-m-d H:i:s', strtotime('-5 minute'));   
    699     $sql = 'SELECT c_ashiato_id FROM c_ashiato WHERE r_datetime > ?' .
     671        );
     672        if (!db_insert('c_ashiato', $data)) {
     673            return false;
     674        }
     675
     676        if ($ashiato_mail_num = OP::op_ashiato_ashiato_mail_num4c_member_id($c_member_id_to)) {
     677            //総足あと数を取得
     678            $ashiato_num = OP::op_ashiato_c_ashiato_num4c_member_id($c_member_id_to);
     679
     680            //あしあとお知らせメールを送る
     681            if ($ashiato_num == $ashiato_mail_num) {
     682                do_common_send_ashiato_mail($c_member_id_to, $c_member_id_from);
     683            }
     684        }
     685
     686        return true;
     687    }
     688
     689    /**
     690     * 一定時間内の連続アクセスかどうか判定する
     691     *
     692     * @param  int $c_member_id_to あしあとをつけるメンバーのID
     693     * @param  int $c_member_id_from あしあとをつけられるメンバーのID
     694     * @return bool
     695     */
     696    function op_ashiato_check_access_minute($c_member_id_to, $c_member_id_from)
     697    {
     698        $wait = date('Y-m-d H:i:s', strtotime('-5 minute'));
     699        $sql = 'SELECT c_ashiato_id FROM c_ashiato WHERE r_datetime > ?' .
    700700            ' AND c_member_id_to = ? AND c_member_id_from = ?';
    701     $params = array($wait, intval($c_member_id_to), intval($c_member_id_from));
    702    
    703     if (db_get_one($sql, $params)) {
    704         return false;
    705     } else {
    706         return true;
    707     }
    708 }
     701        $params = array($wait, intval($c_member_id_to), intval($c_member_id_from));
     702
     703        if (db_get_one($sql, $params)) {
     704            return false;
     705        } else {
     706            return true;
     707        }
     708    }
    709709
    710710}
Note: See TracChangeset for help on using the changeset viewer.