Example #1
0
/**
 * あしあとリスト取得
 * 同一人物・同一日付のアクセスは最新の日時だけ
 *
 * @param  int $c_member_id_to 訪問された人
 * @param  int $limit
 * @return array あしあとリスト
 */
function db_ashiato_c_ashiato_list4c_member_id($c_member_id_to, $count)
{
    $sql = 'SELECT DISTINCT r_date FROM c_ashiato WHERE c_member_id_to = ? ORDER BY r_date DESC';
    $params = array(intval($c_member_id_to));
    $days = db_get_col_limit($sql, 0, $count, $params);
    $sql = 'SELECT DISTINCT c_member_id_from, MAX(r_datetime) AS r_datetime' . ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' . ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
    $result = array();
    foreach ($days as $day) {
        $params = array(strval($day), intval($c_member_id_to));
        $day_result = db_get_all_limit($sql, 0, $count, $params);
        $result = array_merge($result, $day_result);
        $count -= count($day_result);
        if ($count <= 0) {
            break;
        }
    }
    foreach ($result as $key => $value) {
        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_from']);
        $result[$key]['nickname'] = $c_member['nickname'];
    }
    return $result;
}
Example #2
0
 /**
  * あしあとを付けたメンバの一覧をメンバプロフィールも含めて取得する
  * @param $c_member_id_to  あしあとを付けられたメンバーID
  *        $count           取得データの最大数
  *        $profile         プロフィール項目
  * @return 以下の形式の配列
  *         array ( array( prifile1 => value) [, array( profile2 => value), ...]) )
  */
 function op_ashiato_list_c_member_profile($c_member_id_to, $count, $profile)
 {
     //「あしあと」を登録したメンバーIDを「あしあと」登録日の新しいものの順に取得する
     $sql = 'SELECT DISTINCT r_date FROM c_ashiato WHERE c_member_id_to = ? ORDER BY r_date DESC';
     $params = array(intval($c_member_id_to));
     $days = db_get_col_limit($sql, 0, $count, $params);
     if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
         $sql = 'SELECT DISTINCT c_member_id_from, to_char(MAX(r_datetime),\'YYYY/MM/DD HH24:MI:SS\') AS r_datetime' . ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' . ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
     } else {
         $sql = 'SELECT DISTINCT c_member_id_from, DATE_FORMAT(MAX(r_datetime),\'%Y/%m/%d %H:%i:%s\') AS r_datetime' . ' FROM c_ashiato WHERE r_date = ? AND c_member_id_to = ?' . ' GROUP BY c_member_id_from ORDER BY r_datetime DESC';
     }
     $member_list = array();
     foreach ($days as $day) {
         $params = array(strval($day), intval($c_member_id_to));
         $day_result = db_get_all_limit($sql, 0, intval($count), $params);
         $member_list = array_merge($member_list, $day_result);
         $count -= count($day_result);
         if ($count <= 0) {
             break;
         }
     }
     //プロフィールを取得
     $list = array();
     foreach ($member_list as $key => $value) {
         //メンバ情報の取得
         $c_member = OP::op_get_member_data_list($value['c_member_id_from']);
         //デフォルト項目(メンバId、ニックネーム、登録日)
         $list_mem = array('mid' => $value['c_member_id_from'], 'nickname' => $c_member['nickname'], 'datetime' => $value['r_datetime']);
         //メンバのプロフィールを取得する
         $prof_list = OP::op_get_member_profile_list($value['c_member_id_from']);
         //取得指定のプロフィールを設定する
         $prof_arry = split(',', $profile);
         foreach ($prof_arry as $profile_name) {
             $prof_key = strtolower(trim($profile_name));
             $prof_val = '';
             //プロフィール文字列と一致するプロフィールを探す
             $is_search = FALSE;
             foreach ($prof_list as $val) {
                 if ($val['name'] == $prof_key) {
                     $is_search = TRUE;
                     //プロフィールの公開区分をチェックする
                     if ($val['public_flag'] == 'public') {
                         $prof_val = $val['value'];
                     }
                 }
             }
             //プロフィールテーブルに無い項目?
             if ($is_search == FALSE) {
                 if ($prof_key == 'birthday') {
                     if ($c_member['public_flag_birth_year'] == 'public') {
                         $prof_val = $c_member['birth_year'] . '/' . $c_member['birth_month'] . '/' . $c_member['birth_day'];
                     }
                 }
             }
             //項目を追加
             $list_mem = array_merge($list_mem, array($prof_key => $prof_val));
         }
         //返却値リストに追加
         array_push($list, $list_mem);
     }
     return $list;
 }