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

Ignore:
Timestamp:
Dec 7, 2006, 6:27:25 PM (14 years ago)
Author:
ebihara
Message:

Todo表示時に権限チェックを行うようにした

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/ebihara/prj_dev26_todo/webapp_biz/modules/biz/lib/mysql_functions.php

    r1061 r1066  
    544544}
    545545
     546//指定されたTodoに関する権限があるかどうかをチェックする関数
     547function biz_isPermissionTodo($u, $biz_todo_id)
     548{
     549    $biz_todo = biz_getTodo($biz_todo_id);
     550    $public_flag = $biz_todo['public_flag'];
     551    $biz_group_id = $biz_todo['biz_group_id'];
     552    $target_c_member_id = $biz_todo['c_member_id'];
     553
     554    switch ($public_flag) {
     555    case 'group' :  //グループのメンバーにのみ権限が与えられるTodo
     556        if (biz_isGroupMember($u, $biz_group_id)) {
     557            return true;
     558        } else {
     559            return false;
     560        }
     561        break;
     562    case 'private' :  //投稿者にのみ権限が与えられるTodo
     563        if ($target_c_member_id == $u) {
     564            return true;
     565        } else {
     566            return false;
     567        }
     568        break;
     569    default :  //すべてのユーザに権限が与えられるTodo
     570        return true;
     571    }
     572}
     573
    546574//指定メンバーのTodoを得る
    547 function biz_getMemberTodo($id, $cat = null)
     575function biz_getMemberTodo($u, $target_c_member_id, $cat = null)
    548576{
    549577    $sql = 'SELECT * FROM biz_todo WHERE c_member_id = ? AND is_check = ? ORDER BY biz_todo_id DESC;';  //メンバーが保有しているtodoid一覧
    550578    $params = array(
    551         intval($id),
     579        intval($target_c_member_id),
    552580        intval($cat),
    553581    );
     
    568596    $sharetodo = db_get_all($sql, $params);
    569597
    570     $list = array_merge($membertodo , $sharetodo);  //各Todoの連結処理
    571 
    572     foreach ($list as $key => $value) {
    573         $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
    574         $params = array(
    575             ($list[$key]['writer_id']),
    576         );
    577         $list[$key]['writer_name'] = db_get_one($sql, $params);
     598    $list = array();  //各Todoの連結処理
     599
     600    foreach (array_merge($membertodo, $sharetodo) as $key => $value) {
     601        if (biz_isPermissionTodo($u, $value['biz_todo_id'])) {
     602                $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
     603                $params = array(
     604                    intval($value['writer_id']),
     605                );
     606            $list[$key] = $value;
     607                $list[$key]['writer_name'] = db_get_one($sql, $params);
     608        }
    578609    }
    579610
     
    595626
    596627//カレンダー表示用期限付きTodoリストの取得
    597 function biz_schedule_todo4c_member_id($c_member_id, $year, $month, $day = null)
     628function biz_schedule_todo4c_member_id($u, $c_member_id, $year, $month, $day = null)
    598629{
    599630    $sql = 'SELECT biz_todo_id FROM biz_todo WHERE c_member_id = ?';
     
    611642                sprintf('%04d-%02d-%02d', intval($year), intval($month), intval($day)) . ' 00:00:00',
    612643            );
    613             $list = db_get_all($sql, $params);
     644
     645        $list = array();
     646            foreach(db_get_all($sql, $params) as $key => $value) {
     647            if(biz_isPermissionTodo($u, $value['biz_todo_id'])) {
     648                        $list[$key] = $value;
     649            }
     650        }
     651       
    614652        return $list;
    615653    } else {
     
    621659            );
    622660            $list = db_get_all($sql, $params);
    623        
     661
    624662            $res = array();
    625663            foreach ($list as $item) {
    626                 $day = date('j', strtotime($item['due_datetime']));
    627                 $res[$day][] = $item;
     664            if(biz_isPermissionTodo($u, $item['biz_todo_id'])) {
     665                        $day = date('j', strtotime($item['due_datetime']));
     666                        $res[$day][] = $item;
     667            }
    628668            }
    629669            return $res;
Note: See TracChangeset for help on using the changeset viewer.