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

source: OpenPNE/branches/ebihara/prj_dev26_bizfix/webapp_biz/lib/db/group.php @ 1332

Last change on this file since 1332 was 1332, checked in by ebihara, 16 years ago

一部のBIZ関数について関数名命名規則見直しをし、lib/以下で定義した上で関数内処理を改善した

File size: 8.8 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * グループを削除する
9 *
10 * @param int $biz_group_id
11 */
12function db_group_delete_biz_group($biz_group_id)
13{
14    //TODO できればTodo等の削除処理には関数を使う
15
16    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
17    $params = array(
18        intval($biz_group_id),
19    );
20    $result = db_query($sql, $params);
21    $sql = 'DELETE FROM biz_group WHERE biz_group_id = ?';
22    $params = array(
23        intval($biz_group_id),
24    );    $result = db_query($sql, $params);
25
26
27    $sql = 'UPDATE biz_schedule SET public_flag = "private", biz_group_id = NULL WHERE biz_group_id = ?';
28    db_query($sql, array(intval($group_id)));
29
30    $sql = 'DELETE FROM biz_todo WHERE biz_group_id = ?'; 
31    db_query($sql, array(intval($biz_group_id))); 
32
33}
34
35/**
36 * グループ画像を削除
37 *
38 * @param int $biz_group_id
39 * @param string $image_filename
40 */
41function db_group_delete_biz_group_image($biz_group_id, $image_filename)
42{
43    //TODO db_update関数を使う
44
45    $sql = 'UPDATE `biz_group` SET `image_filename` = \'\' WHERE `biz_group_id` = ?';
46    $params = array(
47        intval($biz_group_id),
48    );
49    db_query($sql, $params);
50    biz_deleteImage($image_filename);
51}
52
53/**
54 * グループを編集する
55 *
56 * @param int $biz_group_id
57 * @param string $name
58 * @param int $c_member_id
59 * @param string $info
60 * @param string $image_filename
61 * @param array $members グループに所属しているメンバー
62 */
63function db_group_update_biz_group($biz_group_id, $name, $c_member_id, $info = '', $image_filename = '', $members = array())
64{
65    //TODO グループメンバーについては関数を別にする?
66    //TODO パラメータの順序をわかりやすくする
67    //TODO db_updateを使う
68
69    if (empty($members)) {
70        $members = array($c_member_id);
71    }
72
73    //biz_groupにデータを追加する
74
75    $sql = 'UPDATE `biz_group` SET `name` = ?,`info` = ?,`image_filename` = ? WHERE `biz_group_id` = ?';
76    $params = array(
77        $name,
78        $info,
79        $image_filename,
80        intval($biz_group_id),
81    );
82    db_query($sql, $params);
83
84    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
85    $params = array(
86        intval($biz_group_id),
87    );
88    $result = db_query($sql, $params);
89
90    foreach ($members as $key => $value) {
91        $data = array(
92            'c_member_id' => $value,
93            'biz_group_id' => intval($biz_group_id),
94        );
95        db_insert('biz_group_member', $data);
96    }
97}
98
99/**
100 * 所属グループ数を取得
101 */
102function db_group_count_biz_group4c_member_id($id)
103{
104    //TODO パラメータ見直し
105    //TODO SELECT COUNT(*)を使う
106    $sql = 'SELECT * FROM biz_group_member WHERE c_member_id = ?';
107
108    $params = array(
109        intval($id),
110    );
111
112
113    return count(db_get_col($sql, $params));
114}
115
116/**
117 * グループの情報を取得する
118 */
119function db_group_biz_group4biz_group_id($id)
120{
121    //TODO パラメータ見直し
122    $sql = "SELECT * FROM biz_group WHERE biz_group_id = ?";
123    $params = array(
124        intval($id),
125    );
126    if (!$group = db_get_row($sql, $params))
127        return array();
128
129    return $group;
130}
131
132/**
133 * グループを検索
134 */
135function db_group_serach_biz_group($keyword='', $start=0, $num=20, $order='biz_group_id')
136{
137    //TODO パラメータ見直し
138    //TODO SELECT COUNT(*)を使う
139   
140    //keywordあり
141    if ($keyword) {
142        $sql = 'SELECT * FROM biz_group WHERE 1 AND (info LIKE ? OR name LIKE ?) ORDER BY ?';
143
144        $params = array(
145            '%'.$keyword.'%',
146            '%'.$keyword.'%',
147            $order,
148        );
149        $list = db_get_all_limit($sql, $start, ($start + $num), $params);
150    //keywordなし(全件表示)
151    } else {
152        $sql = 'SELECT * FROM biz_group ORDER BY ?';
153
154        $params = array(
155            $order,
156        );
157        $list = db_get_all_limit($sql, $start, ($start + $num), $params);
158    }
159
160    if (!$list) {
161        return array();
162    }
163
164    foreach ($list as $key => $value) {
165        $count = count(db_group_biz_group_member_list4biz_group_id($value['biz_group_id']));
166        $list[$key]['count'] = $count;
167    }
168
169    return $list;
170}
171
172/**
173 * グループのメンバーリストを取得
174 */
175function db_group_biz_group_member_list4biz_group_id($id, $limit=null, $start=null)
176{
177    //TODO パラメータ見直し
178    $params = array(
179        intval($id),
180    );
181
182    $sql = 'SELECT * FROM biz_group_member WHERE biz_group_id = ? ';
183
184    if ($start) {
185        $sql .= 'AND c_member_id <= ? ';
186        $params[] = $start;
187    }
188
189    $sql .= 'ORDER BY c_member_id';
190
191    if ($limit) {
192        $list = db_get_all_limit($sql, 0, $limit, $params);
193    } else {
194        $list = db_get_all($sql, $params);
195    }
196
197    return $list;
198}
199
200/**
201 * グループのメンバーリストを取得
202 */
203function db_group_biz_group_list4c_member_id_2($id, $limit = null)
204{
205    $list = array();
206    $sql = "SELECT * FROM biz_group_member";
207    $sql .= " WHERE c_member_id = ?";
208    $sql .= " ORDER BY RAND()";
209
210    $params = array(
211        intval($id),
212    );
213
214    if (!is_null($limit)) {
215        $list = db_get_all_limit($sql, 0, intval($limit), $params);
216    } else {
217        $list = db_get_all($sql, $params);
218    }
219
220    foreach ($list as $key => $value) {
221        $list[$key] += db_group_biz_group4biz_group_id($value['biz_group_id']);
222        $list[$key]['count'] = count(db_group_biz_group_member_list4biz_group_id($value['biz_group_id']));
223    }
224
225    return $list;
226}
227
228/**
229 * 所属グループリストを取得する
230 */
231function db_group_biz_group_list4c_member_id($c_member_id, $page = 1, $page_size = 20)
232{
233    $start = ($page - 1) * $page_size;
234
235    $sql = "SELECT biz_group.*" .
236            " FROM biz_group_member , biz_group";
237    $sql .= " WHERE biz_group_member.c_member_id = ?";
238    $sql .= " AND biz_group.biz_group_id=biz_group_member.biz_group_id";
239    $sql .= " ORDER BY biz_group.biz_group_id DESC ";
240
241    $params = array(
242        intval($c_member_id),
243    );
244
245    $biz_group_list = db_get_all_limit($sql, $start, $page_size, $params);
246
247    foreach ($biz_group_list as $key => $value) {
248        $biz_group_list[$key]['count_members'] =
249           count(db_group_biz_group_member_list4biz_group_id($value['biz_group_id']));
250    }
251
252    $pager = array(
253        "total_num" => db_group_count_biz_group4c_member_id($c_member_id),
254        "disp_num"  => count($biz_group_list),
255        "start_num" => 0,
256        "end_num"   => 0,
257        "total_page" => 0,
258        "prev_page" => 0,
259        "next_page" => 0,
260    );
261
262    if ($pager['disp_num'] > 0) {
263        $pager['start_num'] = $start + 1;
264        $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
265    }
266
267    if ($pager['total_num']) { 
268        $pager['total_page'] = ceil($pager['total_num'] / $page_size);
269
270        if ($page < $pager['total_page']) {
271            $pager['next_page'] = max($page + 1, 1);
272        }
273        if ($page > 1) {
274            $pager['prev_page'] = min($page - 1, $pager['total_page']);
275        }
276    }
277
278    return array($biz_group_list, $pager);
279}
280
281/**
282 * グループの作成
283 */
284function db_group_insert_biz_group($name, $member_id, $info, $image_name, $members = array())
285{   
286    //TODO パラメータ見直し
287    //TODO $image_name =''に
288
289    if (!$image_name) {
290        $image_name = 0;
291    }
292    if (!$info) {
293        $info = "";
294    }
295    if (empty($members)) {
296        $members = array($member_id);
297    }
298
299    //biz_groupにデータを追加する
300    $data = array(
301        'name' => $name,
302        'info' => $info,
303        'admin_id' => intval($member_id),
304        'image_filename' => $image_name,
305    );
306    $new_group_id = db_insert('biz_group', $data);
307
308    foreach ($members as $key => $value) {
309        $data = array(
310            'c_member_id' => $value,
311            'biz_group_id' => $new_group_id,
312        );
313        db_insert('biz_group_member', $data);
314    }
315}
316
317/**
318 * グループのメンバーかどうかを判定
319 */
320function db_group_is_biz_group_member($member_id, $group_id)
321{
322    $sql = 'SELECT * FROM biz_group_member WHERE c_member_id = ? AND biz_group_id = ?';
323    $params = array(
324        intval($member_id),
325        intval($group_id),
326    );
327
328    return db_get_one($sql, $params);
329}
330
331/**
332 * グループにメンバーを追加
333 */
334function db_group_insert_biz_group_member($member_id, $group_id)
335{
336    $data = array(
337        'c_member_id' => intval($member_id),
338        'biz_group_id' => intval($group_id),
339    );
340    db_insert('biz_group_member', $data);
341}
342
343?>
Note: See TracBrowser for help on using the repository browser.