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

Changeset 4401


Ignore:
Timestamp:
Oct 16, 2007, 5:23:15 PM (13 years ago)
Author:
yoshimura
Message:

インデント、空白、コメントの形式をPEARコーディング規約に従うよう修正

File:
1 edited

Legend:

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

    r4387 r4401  
    22////////////////////////////////////////////////////////////////////////////////
    33//
    4 //              共通メソッド  OP.php
     4//        共通メソッド    OP.php
    55//
    6 //              2007-09-26      World Communications (Murata)
     6//        2007-09-26    World Communications (Murata)
    77//
    88////////////////////////////////////////////////////////////////////////////////
     
    2121// modules/ktai/do/o_login.php よりコピー・修正
    2222////////////////////////////////////////////////////////////////////////////////
     23
     24/**
     25 * メールアドレス、パスワードを元に認証判定を行う
     26 *
     27 * @param   array $requests リクエストパラメータ
     28 * @return  string  sessionid セッションID
     29 */
    2330function op_k_login($requests)
    2431{
    25         require_once 'OpenPNE/Auth.php';
    26 
    27         // --- リクエスト変数
    28         $c_member_id = $requests['c_member_id'];
    29         $address = $requests['address'];
    30         $password = $requests['password'];
    31         $sid = $requests['sid'];
    32         $is_ktai = $requests['is_ktai'];
    33         // ----------
    34 
    35         // --- セッションIDが渡されてきた場合は一旦ログアウト
    36         if (!empty($sid)) {
    37                 session_id($sid);
    38                 session_start();
    39                 $_SESSION = array();
    40                 session_destroy();
    41         }
    42 
    43         if ($is_ktai) {
    44                 $sess_name = 'OpenPNEktai';
    45                 $ei_name = "ktai";
    46         } else {
    47                 $sess_name = 'PHPSESSID';
    48                 $ei_name = "common";
    49         }
    50         $_POST['username'] = $address;
    51         $_POST['password'] = $password;
    52 
    53         @session_name($sess_name);
    54         @session_start();
    55         @session_regenerate_id();
    56 
    57         $auth_config = get_auth_config($is_ktai);
    58         $auth_config['options']['advancedsecurity'] = false;
    59         $auth = new OpenPNE_Auth($auth_config['storage'], $auth_config['options'], $is_ktai);
    60         $auth->setExpire($GLOBALS['OpenPNE'][$ei_name]['session_lifetime']);
    61         $auth->setIdle($GLOBALS['OpenPNE'][$ei_name]['session_idletime']);
    62 
    63         $auth->logout();
    64 
    65         if (LOGIN_CHECK_ENABLE) {
    66                 include_once 'OpenPNE/LoginChecker.php';
    67                 $options = array(
    68                         'check_num'   => LOGIN_CHECK_NUM,
    69                         'check_time'  => LOGIN_CHECK_TIME,
    70                         'reject_time' => LOGIN_REJECT_TIME,
    71                 );
    72                 $lc =& new OpenPNE_LoginChecker($options);
    73                 if ($lc->is_rejected() || !$auth->login(false, true, $is_ktai)) {
    74                         $lc->fail_login();
    75                         return false;
    76                 }
    77         } else {
    78                 if (!$auth->login(false, true, $is_ktai)) {
    79                         return false;
    80                 }
    81         }
    82 
    83         $_SESSION['c_member_id'] = $c_member_id;
    84 
    85         return session_id();
     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(
     75            'check_num'   => LOGIN_CHECK_NUM,
     76            'check_time'  => LOGIN_CHECK_TIME,
     77            '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();
     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();
    8693}
    8794
     
    94101// lib/OpenPNE/KtaiUA.php よりコピー・修正
    95102////////////////////////////////////////////////////////////////////////////////
    96 /**
    97  * 携帯電話からのアクセスかどうかを User-Agent の値から判別する
     103
     104/**
     105 * 携帯電話からのアクセスかどうかを User-Agent の値から判定する
     106 *
     107 * @param   string $ua User-Agent
     108 * @return  bool
    98109 */
    99110function op_isKtaiUserAgent($ua)
    100111{
    101         // DoCoMo
    102         if (!strncmp($ua, 'DoCoMo', 6)) {
    103                 $is_ktai = true;
    104         }
    105 
    106         // Vodafone(PDC)
    107         elseif (!strncmp($ua, 'J-PHONE', 7)) {
    108                 $is_ktai = true;
    109         }
    110 
    111         // Vodafone(3G)
    112         //* Up.Browser を搭載しているものがある(auより先に評価)
    113         elseif (!strncmp($ua, 'Vodafone', 8)
    114                         || !strncmp($ua, 'MOT', 3)) {
    115                 $is_ktai = true;
    116         }
    117 
    118         // SoftBank
    119         elseif (!strncmp($ua, 'SoftBank', 8)) {
    120                 $is_ktai = true;
    121         }
    122 
    123         // au
    124         elseif (!strncmp($ua, 'KDDI', 4)
    125                         || !strncasecmp($ua, 'up.browser', 10)) {
    126                 $is_ktai = true;
    127         }
    128 
    129         // WILLCOM / DDIPOCKET
    130         elseif (strpos($ua, 'WILLCOM') !== false
    131                         || strpos($ua, 'SHARP/WS') !== false
    132                         || strpos($ua, 'DDIPOCKET') !== false) {
    133                 $is_ktai = true;
    134         }
    135 
    136         else {
    137                 $is_ktai = false;
    138         }
    139 
    140         return $is_ktai;
     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;
    141148}
    142149
     
    151158// lib/db/member.php よりコピー・修正
    152159////////////////////////////////////////////////////////////////////////////////
     160/**
     161 * PCアドレスからメンバーIDを取得する
     162 *
     163 * @param   string $pc_address PCアドレス
     164 * @return  int    $c_member_id メンバーID
     165 */
    153166function op_member_c_member_id4pc_address($pc_address)
    154167{
    155         return db_member_c_member_id4pc_address($pc_address);
    156 }
    157 
     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 */
    158177function op_member_c_member_id4ktai_address($ktai_address)
    159178{
    160         return db_member_c_member_id4ktai_address($ktai_address);
    161 }
    162 
    163 /**
    164  * ログインIDからc_member_idを取得
     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
    165188 */
    166189function op_member_c_member_id4username($username, $is_ktai = false)
    167190{
    168         return db_member_c_member_id4username($username, $is_ktai);
    169 }
    170 
    171 /**
    172  * ログインIDからc_member_idを取得
     191    return db_member_c_member_id4username($username, $is_ktai);
     192}
     193
     194/**
     195 * 暗号化されたログインIDからメンバーIDを取得する
    173196 * 暗号化されたメールアドレスの場合は復号化する
     197 *
     198 * @param   string $username 暗号化されたログインID
     199 * @param   bool $is_ktai 携帯からのアクセスかどうか
     200 * @return  int  $c_member_id メンバーID
    174201 */
    175202function op_member_c_member_id4username_encrypted($username, $is_ktai = false)
    176203{
    177         return db_member_c_member_id4username_encrypted($username, $is_ktai);
    178 }
    179 
     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 */
    180214function op_member_auth_login($address, $password)
    181215{
    182         if (!$address or !$password) {
    183                 return false;
    184         }
    185         $c_member_id = OP::op_member_c_member_id4username($address, false);
    186         $sql = "SELECT hashed_password FROM c_member_secure ";
    187         $sql.= " WHERE c_member_id = ? ";
    188         if (md5($password) != db_get_one($sql, array($c_member_id))) {
    189                 return false;
    190         }
    191         return $c_member_id;
    192 }
    193 
     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 */
    194235function op_member_k_auth_login($address, $password)
    195236{
    196         return db_member_k_auth_login($address, $password);
    197 }
    198 
    199 /**
    200  * アクティブメンバーか?
     237    return db_member_k_auth_login($address, $password);
     238}
     239
     240/**
     241 * メンバーがアクティブメンバーかどうか判定する
     242 *
     243 * @param   int  $c_member_id メンバーID
     244 * @return  bool
    201245 */
    202246function op_member_is_active_c_member_id($c_member_id)
    203247{
    204         return db_member_is_active_c_member_id($c_member_id);
    205 }
    206 
    207 /**
    208  * {c_member_id}が{target_...}にアクセスブロックされているかどうか
     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
    209257 */
    210258function op_member_is_access_block($c_member_id, $target_c_member_id)
    211259{
    212         return db_member_is_access_block($c_member_id, $target_c_member_id);
    213 }
    214 
     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 */
    215269function op_member_is_login_rejected($c_member_id)
    216270{
    217         return db_member_is_login_rejected($c_member_id);
    218 }
    219 
    220 /**
    221  * メンバーが忍び足(あしあとをつけない)状態かどうかを取得
    222  *
    223  * @param   int $c_member_id
     271    return db_member_is_login_rejected($c_member_id);
     272}
     273
     274/**
     275 * メンバーが忍び足(あしあとをつけない)状態かどうか判定する
     276 *
     277 * @param   int $c_member_id メンバーID
    224278 * @return  bool
    225279 */
    226280function op_member_is_shinobiashi($c_member_id)
    227281{
    228         return db_member_is_shinobiashi($c_member_id);
    229 }
    230 
    231 /**
    232  * メンバーの基本情報を取得
     282    return db_member_is_shinobiashi($c_member_id);
     283}
     284
     285/**
     286 * メンバーの基本情報を取得する
     287 *
     288 * @param   int $c_member_id メンバーID
     289 * @return  array メンバー基本情報
    233290 */
    234291function op_get_member_data_list($c_member_id)
    235292{
    236         $sql = 'SELECT';
    237         $sql.= ' c_member_id,';
    238         $sql.= ' nickname,';
    239         $sql.= ' birth_year,';
    240         $sql.= ' birth_month,';
    241         $sql.= ' birth_day,';
    242         $sql.= ' public_flag_birth_year';
    243         $sql.= ' FROM c_member';
    244         $sql.= ' WHERE c_member_id = ?';
    245         $params = array(intval($c_member_id));
    246         return db_get_row($sql, $params);
    247 }
    248 
    249 /**
    250  * メンバーのプロフィールを取得
     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 メンバープロフィール情報
    251311 */
    252312function op_get_member_profile_list($c_member_id)
    253313{
    254         $sql = 'SELECT';
    255         $sql.= ' cp.name,';
    256         $sql.= ' cp.caption,';
    257         $sql.= ' cp.form_type,';
    258         $sql.= ' cm.value,';
    259         $sql.= ' cm.public_flag';
    260         $sql.= ' FROM c_member_profile as cm, c_profile as cp';
    261         $sql.= ' WHERE cm.c_member_id = ?';
    262         $sql.= ' AND cm.c_profile_id = cp.c_profile_id';
    263         $sql.= ' ORDER BY cp.sort_order, cm.c_member_profile_id';
    264         $params = array(intval($c_member_id));
    265         return db_get_all($sql, $params);
     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);
    266326}
    267327
     
    273333// lib/db/diary.php よりコピー・修正
    274334////////////////////////////////////////////////////////////////////////////////
    275 /**
    276  * アクセスメンバーID・参照メンバーIDから日記を最新順で取得
     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 日記情報
    277343 */
    278344function op_diary_get_c_diary($target_c_member_id, $access_c_member_id = 0, $count = 10)
    279345{
    280         if ($target_c_member_id == $access_c_member_id) {
    281                 $is_friend = true;
    282                 $is_own = true;
    283         } else {
    284                 $is_friend = OP::op_friend_is_friend($target_c_member_id, $access_c_member_id);
    285                 $is_own = false;
    286         }
    287 
    288         $sql = "SELECT c_diary_id, subject, body, r_datetime";
    289         $sql.= " FROM c_diary";
    290         $sql.= " WHERE c_member_id = ?";
    291         $sql.= " AND (public_flag = 'public'";
    292 
    293         if ($is_friend) {
    294                 $sql.= " OR public_flag = 'friend'";
    295         }
    296 
    297         if ($is_own) {
    298                 $sql.= " OR public_flag = 'private')";
    299         } else {
    300                 $sql.= ")";
    301         }
    302 
    303         $sql.= " ORDER BY r_datetime DESC";
    304         $params = array(intval($target_c_member_id));
    305         $arr = db_get_all_limit($sql, 0, $count, $params);
    306         return $arr;
    307 }
    308 
    309 /**
    310  * 日記IDからその日記を書いたメンバーIDを取得
     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
    311380 */
    312381function op_diary_get_c_member_id4c_diary_id($c_diary_id)
    313382{
    314         $sql = "SELECT c_member_id";
    315         $sql.= " FROM c_diary";
    316         $sql.= " WHERE c_diary_id = ?";
    317         $params = array(intval($c_diary_id));
    318         return intval(db_get_one($sql, $params));
    319 }
    320 
    321 /**
    322  * 日記IDからその日記の公開範囲を取得
     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  公開範囲
    323395 */
    324396function op_diary_get_c_member_id4public_flg($c_diary_id)
    325397{
    326         $sql = "SELECT public_flag";
    327         $sql.= " FROM c_diary";
    328         $sql.= " WHERE  c_diary_id = ?";
    329         $params = array(intval($c_diary_id));
    330         return strval(db_get_one($sql, $params));
    331 }
    332 
    333 /**
    334  * 日記コメント追加
     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
    335412 */
    336413function op_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body)
    337414{
    338         return db_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body);
    339 }
    340 
    341 /**
    342  * 未読フラグ書込
     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
    343423 */
    344424function op_diary_c_diary_is_no_checked($c_diary_id)
    345425{
    346         $sql = "SELECT is_checked";
    347         $sql.= " FROM c_diary";
    348         $sql.= " WHERE c_diary_id = ?";
    349         $params = array(intval($c_diary_id));
    350 
    351         if (intval(db_get_one($sql, $params))) {
    352                 $data  = array('is_checked' => 0);
    353                 $where = array('c_diary_id' => intval($c_diary_id));
    354                 return db_update('c_diary', $data, $where);
    355         }
    356         return true;
     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;
    357437}
    358438
     
    365445////////////////////////////////////////////////////////////////////////////////
    366446/**
    367  * 友達かどうか判定
     447 * 友達かどうか判定する
     448 *
     449 * @param  int $c_member_id1 メンバーID
     450 * @param  int $c_member_id2 メンバーID
     451 * @return bool
    368452 */
    369453function op_friend_is_friend($c_member_id1, $c_member_id2)
    370454{
    371         return db_friend_is_friend($c_member_id1, $c_member_id2);
     455    return db_friend_is_friend($c_member_id1, $c_member_id2);
    372456}
    373457
     
    379463// lib/db/action.php よりコピー・修正
    380464////////////////////////////////////////////////////////////////////////////////
     465/**
     466 * アクションIDからポイントを取得する
     467 *
     468 * @param  int $c_action_id アクションID
     469 * @return  int ポイントID
     470 */
    381471function op_action_get_point4c_action_id($c_action_id)
    382472{
    383         return db_action_get_point4c_action_id($c_action_id);
     473    return db_action_get_point4c_action_id($c_action_id);
    384474}
    385475
     
    391481// lib/db/point.php よりコピー・修正
    392482////////////////////////////////////////////////////////////////////////////////
     483/**
     484 * ポイントを加算する
     485 *
     486 * @param  int $c_member_id メンバーID
     487 * @param  int $point ポイント数
     488 * @return  int 加算後のポイント数
     489 */
    393490function op_point_add_point($c_member_id, $point)
    394491{
    395         return db_point_add_point($c_member_id, $point);
    396 }
    397 
     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 */
    398501function op_point_get_point($c_member_id)
    399502{
    400         return db_point_get_point($c_member_id);
    401 }
    402 
    403 /**
    404  * ポイントからランクを取得
     503    return db_point_get_point($c_member_id);
     504}
     505
     506/**
     507 * ポイントからランクを取得する
     508 *
     509 * @param  int $point ポイント数
     510 * @return  array ランク情報
    405511 */
    406512function op_point_get_rank4point($point)
    407513{
    408         return db_point_get_rank4point($point);
     514    return db_point_get_rank4point($point);
    409515}
    410516
     
    419525/*新規*/
    420526/**
    421  * あしあとのあるメンバか確認する
    422  * @param $c_member_id : メンバID
    423  * @return true : 登録済み
     527 * あしあとの存在するメンバか判定する
     528 * @param $c_member_id メンバーID
     529 * @return bool
    424530 */
    425531function op_is_ahiato_member($c_member_id)
    426532{
    427         $sql = 'SELECT COUNT(*)';
    428         $sql.= '  FROM c_ashiato';
    429         $sql.= ' WHERE c_member_id_to = ?';
    430         $params = array(intval($c_member_id));
    431         if( intval(db_get_one($sql, $params)) == 0 ){
    432                 return false;
    433         }else{
    434                 return true;
    435         }
     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    }
    436542}
    437543
    438544/*新規*/
    439 /*
    440  * 概要:「あしあと」を付けたメンバの一覧をメンバプロフィールも含めて取得する
    441  * @param $c_member_id_to : 「あしあと」を付けられたメンバID
    442  *              $count            : 取得データの最大数
    443  *              $profile                : プロフィール項目
     545/**
     546 * あしあとを付けたメンバの一覧をメンバプロフィールも含めて取得する
     547 * @param $c_member_id_to  あしあとを付けられたメンバーID
     548 *        $count          取得データの最大数
     549 *        $profile        プロフィール項目
    444550 * @return 以下の形式の配列
    445  *              array ( array( prifile1 => value) [, array( profile2 => value), ...]) )
     551 *        array ( array( prifile1 => value) [, array( profile2 => value), ...]) )
    446552 */
    447553function op_ashiato_list_c_member_profile($c_member_id_to, $count, $profile)
    448554{
    449555
    450         //「あしあと」を登録したメンバIDを「あしあと」登録日の新しいものの順に取得する
    451         $sql = 'SELECT DISTINCT r_date FROM c_ashiato WHERE c_member_id_to = ? ORDER BY r_date DESC';
    452         $params = array(intval($c_member_id_to));
    453         $days = db_get_col_limit($sql, 0, $count, $params);
    454        
     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   
    455561    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
    456                 $sql = 'SELECT DISTINCT c_member_id_from, to_char(MAX(r_datetime),\'YYYY/MM/DD HH24:MI:SS\') AS r_datetime' .
    457                            ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
    458                            ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
    459         } else {
    460                 $sql = 'SELECT DISTINCT c_member_id_from, DATE_FORMAT(MAX(r_datetime),\'%Y/%m/%d %H:%i:%s\') AS r_datetime' .
    461                            ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
    462                            ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
    463         }
    464        
    465         $member_list = array();
    466         foreach ($days as $day) {
    467                 $params = array(strval($day), intval($c_member_id_to));
    468                 $day_result = db_get_all_limit($sql, 0, intval($count), $params);
    469                 $member_list = array_merge($member_list, $day_result);
    470                 $count -= count($day_result);
    471                 if ($count <= 0) {
    472                         break;
    473                 }
    474         }
    475 
    476         //プロフィールを取得
    477         $list = array();
    478         foreach ($member_list as $key => $value) {
    479                 //メンバ情報の取得     
    480                 $c_member = OP::op_get_member_data_list($value['c_member_id_from']);
    481 
    482                 //デフォルト項目(メンバId、ニックネーム、登録日)
    483                 $list_mem = array(
    484                                 'mid' => $value['c_member_id_from'] ,
    485                                 'nickname'      => $c_member['nickname'],
    486                                 'datetime'      => $value['r_datetime'],
    487                 );
    488                 //メンバのプロフィールを取得する
    489                 $prof_list = OP::op_get_member_profile_list($value['c_member_id_from']);
    490 
    491                 //取得指定のプロフィールを設定する
    492                 $prof_arry = split(',',$profile);
    493                 foreach($prof_arry as $profile_name){
    494                         $prof_key = strtolower(trim($profile_name));
    495                         $prof_val = '';
    496 
    497                         //プロフィール文字列と一致するプロフィールを探す
    498                         $is_search = FALSE;
    499                         foreach ($prof_list as $val) {
    500                                 if( $val['name'] == $prof_key ){
    501                                         $is_search = TRUE;
    502                                         //プロフィールの公開区分をチェックする
    503                                         if( $val['public_flag'] == 'public' ){
    504                                                 $prof_val = $val['value'];
    505                                         }
    506                                 }
    507                         }
    508                         //プロフィールテーブルに無い項目?
    509                         if( $is_search == FALSE ){
    510                                 if( $prof_key == 'birthday'){
    511                                         if( $c_member['public_flag_birth_year'] == 'public' ){
    512                                                 $prof_val = $c_member['birth_year'] .'/'. $c_member['birth_month'] .'/'. $c_member['birth_day'];
    513                                         }
    514                                 }
    515                         }
    516                         //項目を追加
    517                         $list_mem = array_merge($list_mem, array($prof_key => $prof_val));
    518                 }
    519 
    520                 //返却値リストに追加
    521                 array_push($list, $list_mem);
    522 
    523         }
    524 
    525         return $list;
    526 }
    527 
    528 /* db_ashiato_c_ashiato_num4c_member_id参考 */
    529 /**
    530  * 総あしあと数取得
    531  *
    532  * @param  int $c_member_id 訪問された人
    533  * @return int あしあと数
     562        $sql = 'SELECT DISTINCT c_member_id_from, to_char(MAX(r_datetime),\'YYYY/MM/DD HH24:MI:SS\') AS r_datetime' .
     563               ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
     564               ' 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' .
     567               ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' .
     568               ' 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(
     590                'mid' => $value['c_member_id_from'] ,
     591                'nickname'    => $c_member['nickname'],
     592                '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'];
     611                    }
     612                }
     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'];
     619                    }
     620                }
     621            }
     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 総あしあと数
    534639 */
    535640function op_ashiato_c_ashiato_num4c_member_id($c_member_id)
    536641{
    537         return db_ashiato_c_ashiato_num4c_member_id($c_member_id);
    538 }
    539 
    540 /* db_ashiato_ashiato_mail_num4c_member_id参考 */
    541 /**
    542  * ashiato_mail_num取得
    543  *
    544  * @param  int $c_member_id
    545  * @return int ashiato_mail_num
     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 一定数
    546651 */
    547652function op_ashiato_ashiato_mail_num4c_member_id($c_member_id)
    548653{
    549         return db_ashiato_ashiato_mail_num4c_member_id($c_member_id);
    550 }
    551 
    552 /* db_ashiato_insert_c_ashiato参考 */
     654    return db_ashiato_ashiato_mail_num4c_member_id($c_member_id);
     655}
     656
    553657/**
    554658 * あしあとを付ける
     659 *
     660 * @param  int $c_member_id_to あしあとをつけるメンバーのID
     661 * @param  int $c_member_id_from あしあとをつけられるメンバーのID
     662 * @return bool
    555663 */
    556664function op_ashiato_insert_c_ashiato($c_member_id_to, $c_member_id_from)
    557665{
    558         $data = array(
    559                 'c_member_id_from' => intval($c_member_id_from),
    560                 'c_member_id_to'   => intval($c_member_id_to),
    561                 'r_datetime' => db_now(),
    562                 'r_date' => db_now(),
    563         );
    564         if (!db_insert('c_ashiato', $data)) {
    565                 return false;
    566         }
    567 
    568         if ($ashiato_mail_num = OP::op_ashiato_ashiato_mail_num4c_member_id($c_member_id_to)) {
    569                 //総足あと数を取得
    570                 $ashiato_num = OP::op_ashiato_c_ashiato_num4c_member_id($c_member_id_to);
    571 
    572                 //あしあとお知らせメールを送る
    573                 if ($ashiato_num == $ashiato_mail_num) {
    574                         do_common_send_ashiato_mail($c_member_id_to, $c_member_id_from);
    575                 }
    576         }
    577 
    578         return true;
    579 }
    580 
    581 /**
    582  * 一定時間内の連続アクセスか?
     666    $data = array(
     667        'c_member_id_from' => intval($c_member_id_from),
     668        'c_member_id_to'   => intval($c_member_id_to),
     669        'r_datetime' => db_now(),
     670        '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
    583695 */
    584696function op_ashiato_check_access_minute($c_member_id_to, $c_member_id_from)
    585697{
    586         $wait = date('Y-m-d H:i:s', strtotime('-5 minute'));   
    587         $sql = 'SELECT c_ashiato_id FROM c_ashiato WHERE r_datetime > ?' .
    588                         ' AND c_member_id_to = ? AND c_member_id_from = ?';
    589         $params = array($wait, intval($c_member_id_to), intval($c_member_id_from));
    590        
    591         if (db_get_one($sql, $params)) {
    592                 return false;
    593         } else {
    594                 return true;
    595         }
     698    $wait = date('Y-m-d H:i:s', strtotime('-5 minute'));   
     699    $sql = 'SELECT c_ashiato_id FROM c_ashiato WHERE r_datetime > ?' .
     700            ' 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    }
    596708}
    597709
Note: See TracChangeset for help on using the changeset viewer.