PageRenderTime 36ms CodeModel.GetById 34ms RepoModel.GetById 0ms app.codeStats 1ms

/webapp/lib/db/commu.php

https://github.com/openpne/OpenPNE2
PHP | 3587 lines | 2505 code | 447 blank | 635 comment | 255 complexity | 752d16dac63b5fc31cf09b64ed98683a MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception
  1. <?php
  2. /**
  3. * @copyright 2005-2008 OpenPNE Project
  4. * @license http://www.php.net/license/3_01.txt PHP License 3.01
  5. */
  6. //// c_commu
  7. /**
  8. * コミュニティ情報をIDから取得
  9. *
  10. * @param int $c_commu_id
  11. * @return array コミュニティ情報
  12. */
  13. function db_commu_c_commu4c_commu_id($c_commu_id)
  14. {
  15. $sql = 'SELECT * FROM c_commu WHERE c_commu_id = ?';
  16. $params = array(intval($c_commu_id));
  17. if (!$c_commu = db_get_row($sql, $params)) return array();
  18. $c_commu['c_commu_category'] =
  19. db_commu_get_c_commu_category4id($c_commu['c_commu_category_id']);
  20. $c_commu['c_member_admin'] =
  21. db_member_c_member4c_member_id($c_commu['c_member_id_admin']);
  22. return $c_commu;
  23. }
  24. /**
  25. * コミュニティ情報を得る
  26. */
  27. function db_commu_c_commu4c_commu_id2($c_commu_id)
  28. {
  29. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  30. if (!$is_recurred) { //function cacheのために再帰処理を行う
  31. $is_recurred = true;
  32. $funcargs = func_get_args();
  33. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
  34. $is_recurred = false;
  35. return $result;
  36. }
  37. if ($c_commu = db_commu_c_commu4c_commu_id($c_commu_id)) {
  38. $c_commu['member_count'] = db_commu_count_c_commu_member_list4c_commu_id($c_commu_id);
  39. }
  40. return $c_commu;
  41. }
  42. /**
  43. * コミュニティ情報をIDから返す
  44. */
  45. function db_commu_c_commu4c_commu_id_k($c_commu_id)
  46. {
  47. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  48. if (!$is_recurred) { //function cacheのために再帰処理を行う
  49. $is_recurred = true;
  50. $funcargs = func_get_args();
  51. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
  52. $is_recurred = false;
  53. return $result;
  54. }
  55. if ($c_commu = db_commu_c_commu4c_commu_id($c_commu_id)) {
  56. $c_commu['count_member'] = db_commu_count_c_commu_member_list4c_commu_id($c_commu_id);
  57. }
  58. return $c_commu;
  59. }
  60. function db_commu_is_commu4c_commu_name($c_commu_name)
  61. {
  62. $sql = 'SELECT c_commu_id FROM c_commu WHERE name = ?';
  63. $params = array($c_commu_name);
  64. return (bool)db_get_one($sql, $params);
  65. }
  66. /**
  67. * 登録時に強制参加させるコミュニティIDのリスト
  68. */
  69. function db_commu_regist_join_list()
  70. {
  71. $sql = 'SELECT c_commu_id FROM c_commu WHERE is_regist_join = 1';
  72. return db_get_col($sql);
  73. }
  74. //// c_commu_member
  75. /**
  76. * コミュニティの参加メンバー数を取得
  77. *
  78. * @param int $c_commu_id
  79. * @return int 参加メンバー数
  80. */
  81. function db_commu_count_c_commu_member_list4c_commu_id($c_commu_id)
  82. {
  83. $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_commu_id = ?';
  84. $params = array(intval($c_commu_id));
  85. return db_get_one($sql, $params);
  86. }
  87. /**
  88. * メンバーの参加コミュニティ数を取得
  89. *
  90. * @param int $c_member_id
  91. * @return int 参加コミュニティ数
  92. */
  93. function db_commu_count_c_commu4c_member_id($c_member_id)
  94. {
  95. $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_member_id = ?';
  96. $params = array(intval($c_member_id));
  97. return db_get_one($sql, $params);
  98. }
  99. //// c_commu_topic
  100. //// c_commu_topic_comment
  101. /**
  102. * max
  103. */
  104. function db_commu_get_max_c_commu_topic_comment_number4c_topic_id($c_commu_topic_id)
  105. {
  106. $sql = 'SELECT MAX(number) FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
  107. $params = array(intval($c_commu_topic_id));
  108. return db_get_one($sql, $params, 'main');
  109. }
  110. /**
  111. * 次の書き込み番号取得
  112. *
  113. * @param int $c_commu_topic_id
  114. * @return int 次の書き込み番号
  115. */
  116. function db_commu_c_commu_topic_comment_number4c_commu_topic_id($c_commu_topic_id)
  117. {
  118. return db_commu_get_max_c_commu_topic_comment_number4c_topic_id($c_commu_topic_id) + 1;
  119. }
  120. //// 判定
  121. /**
  122. * コミュニティのメンバーかどうか判定
  123. *
  124. * @param int c_commu_id
  125. * @param int c_member_id
  126. * @return bool
  127. */
  128. function db_commu_is_c_commu_member($c_commu_id, $c_member_id)
  129. {
  130. $sql = 'SELECT c_commu_member_id FROM c_commu_member' .
  131. ' WHERE c_commu_id = ? AND c_member_id = ?';
  132. $params = array(intval($c_commu_id), intval($c_member_id));
  133. return (bool)db_get_one($sql, $params, 'main');
  134. }
  135. /**
  136. * コミュニティの管理者かどうかを判定
  137. *
  138. * @param int $c_commu_id
  139. * @param int $c_member_id
  140. * @return bool
  141. */
  142. function db_commu_is_c_commu_admin($c_commu_id, $c_member_id)
  143. {
  144. $sql = 'SELECT c_commu_id FROM c_commu' .
  145. ' WHERE c_commu_id = ? AND c_member_id_admin = ?';
  146. $params = array(intval($c_commu_id), intval($c_member_id));
  147. return ( (bool)db_get_one($sql, $params) || db_commu_is_c_commu_sub_admin($c_commu_id, $c_member_id) );
  148. }
  149. /**
  150. * コミュニティの副管理者かどうかを判定
  151. *
  152. * @param int $c_commu_id
  153. * @param int $c_member_id
  154. * @return bool
  155. */
  156. function db_commu_is_c_commu_sub_admin($c_commu_id, $c_member_id)
  157. {
  158. $sql = 'SELECT c_commu_id FROM c_commu' .
  159. ' WHERE c_commu_id = ? AND c_member_id_sub_admin = ?';
  160. $params = array(intval($c_commu_id), intval($c_member_id));
  161. return (bool)db_get_one($sql, $params);
  162. }
  163. function db_commu_is_c_topic_admin($c_commu_topic_id, $c_member_id)
  164. {
  165. $sql = 'SELECT c_commu_topic_id FROM c_commu_topic' .
  166. ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
  167. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  168. return (bool)db_get_one($sql, $params);
  169. }
  170. /**
  171. * コミュニティ参加承認待ち状態かどうか
  172. */
  173. function db_commu_is_c_commu_join_wait($c_commu_id, $c_member_id)
  174. {
  175. $sql = 'SELECT c_commu_member_confirm_id FROM c_commu_member_confirm' .
  176. ' WHERE c_commu_id = ? AND c_member_id = ?';
  177. $params = array(intval($c_commu_id), intval($c_member_id));
  178. return (bool)db_get_one($sql, $params, 'main');
  179. }
  180. function db_commu_is_c_commu_view4c_commu_idAc_member_id($c_commu_id,$c_member_id)
  181. {
  182. $ret = false;
  183. $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
  184. $is_c_commu_member = db_commu_is_c_commu_member($c_commu_id, $c_member_id);
  185. switch($c_commu['is_open']) {
  186. case "public":
  187. $ret = true;
  188. break;
  189. case "member":
  190. if ($is_c_commu_member) {
  191. $ret = true;
  192. } else {
  193. $ret = false;
  194. }
  195. break;
  196. }
  197. return $ret;
  198. }
  199. ////
  200. /**
  201. * コミュニティメール(ktai)受信設定を取得
  202. */
  203. function db_commu_is_receive_mail_ktai($c_commu_id, $c_member_id)
  204. {
  205. $sql = 'SELECT is_receive_mail FROM c_commu_member' .
  206. ' WHERE c_commu_id = ? AND c_member_id = ?';
  207. $params = array(intval($c_commu_id), intval($c_member_id));
  208. return db_get_one($sql, $params);
  209. }
  210. /**
  211. * コミュニティメール(PC)受信設定を取得
  212. */
  213. function db_commu_is_receive_mail_pc($c_commu_id, $c_member_id)
  214. {
  215. $sql = 'SELECT is_receive_mail_pc FROM c_commu_member' .
  216. ' WHERE c_commu_id = ? AND c_member_id = ?';
  217. $params = array(intval($c_commu_id), intval($c_member_id));
  218. return db_get_one($sql, $params);
  219. }
  220. /**
  221. * コミュニティメッセージ受信設定を取得
  222. */
  223. function db_commu_is_receive_message($c_commu_id, $c_member_id)
  224. {
  225. $sql = 'SELECT is_receive_message FROM c_commu_member' .
  226. ' WHERE c_commu_id = ? AND c_member_id = ?';
  227. $params = array(intval($c_commu_id), intval($c_member_id));
  228. return db_get_one($sql, $params);
  229. }
  230. /**
  231. * コミュニティメールの受信メールアドレスリスト(携帯)
  232. */
  233. function db_common_receive_ktai_address_list4c_commu_id($c_commu_id)
  234. {
  235. $sql = 'SELECT c_member_id FROM c_commu_member' .
  236. ' WHERE c_commu_id = ? AND is_receive_mail = 1';
  237. $params = array(intval($c_commu_id));
  238. $list = db_get_col($sql, $params);
  239. $ktai_list = array();
  240. foreach ($list as $c_member_id) {
  241. $sec = db_member_c_member_secure4c_member_id($c_member_id);
  242. if ($sec['ktai_address']) {
  243. $ktai_list[$c_member_id] = $sec['ktai_address'];
  244. }
  245. }
  246. return $ktai_list;
  247. }
  248. /**
  249. * コミュニティメールの受信メールアドレスリスト(PC)
  250. */
  251. function db_common_receive_pc_address_list4c_commu_id($c_commu_id)
  252. {
  253. $sql = "SELECT m.pc_address" .
  254. " FROM c_member_secure AS m, c_commu_member AS cm" .
  255. " WHERE cm.c_commu_id = ?".
  256. " AND cm.is_receive_mail_pc = 1" .
  257. " AND cm.c_member_id = m.c_member_id" .
  258. " AND m.pc_address <> ''";
  259. $params = array(intval($c_commu_id));
  260. $c_member_list = db_get_col($sql, $params);
  261. return array_map('t_decrypt', $c_member_list);
  262. }
  263. ////
  264. /**
  265. * 管理者交代の要請情報をIDから取得
  266. *
  267. * @param int $c_commu_admin_confirm_id
  268. * @return array
  269. * c_commu_admin_confirm,
  270. * c_member_id_admin : 管理者のメンバーID
  271. */
  272. function db_c_commu_admin_confirm4c_commu_admin_confirm_id($c_commu_admin_confirm_id)
  273. {
  274. $sql = "SELECT cac.*, c.c_member_id_admin FROM c_commu_admin_confirm AS cac, c_commu AS c";
  275. $sql .= " WHERE cac.c_commu_admin_confirm_id = ?";
  276. $sql .= " AND cac.c_commu_id=c.c_commu_id";
  277. $params = array(intval($c_commu_admin_confirm_id));
  278. return db_get_row($sql, $params);
  279. }
  280. /**
  281. * 副管理者の要請情報をIDから取得
  282. *
  283. * @param int $c_commu_sub_admin_confirm_id
  284. * @return array
  285. * c_commu_sub_admin_confirm,
  286. * c_member_id_admin : 管理者のメンバーID
  287. */
  288. function db_c_commu_sub_admin_confirm4c_commu_sub_admin_confirm_id($c_commu_sub_admin_confirm_id)
  289. {
  290. $sql = "SELECT cac.*, c.c_member_id_admin FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  291. $sql .= " WHERE cac.c_commu_sub_admin_confirm_id = ?";
  292. $sql .= " AND cac.c_commu_id=c.c_commu_id";
  293. $params = array(intval($c_commu_sub_admin_confirm_id));
  294. return db_get_row($sql, $params);
  295. }
  296. // 参加コミュニティリスト
  297. function db_commu_c_commu_list4c_member_id($c_member_id, $page, $page_size)
  298. {
  299. $sql = "SELECT c_commu.*" .
  300. " ,c_commu_member.is_display_topic_home" .
  301. " FROM c_commu_member , c_commu";
  302. $sql .= " WHERE c_commu_member.c_member_id=?";
  303. $sql .= " AND c_commu.c_commu_id=c_commu_member.c_commu_id";
  304. $sql .= " ORDER BY c_commu.c_commu_id DESC ";
  305. $params = array(intval($c_member_id));
  306. $c_commu_list = db_get_all_page($sql, $page, $page_size, $params);
  307. foreach ($c_commu_list as $key => $value) {
  308. $c_commu_list[$key]['count_members'] =
  309. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  310. }
  311. $pager = array(
  312. "total_num" => db_commu_count_c_commu4c_member_id($c_member_id),
  313. "disp_num" => count($c_commu_list),
  314. "start_num" => 0,
  315. "end_num" => 0,
  316. "total_page" => 0,
  317. "prev_page" => 0,
  318. "next_page" => 0,
  319. );
  320. if ($pager['disp_num'] > 0) {
  321. $pager['start_num'] = ($page - 1) * $page_size + 1;
  322. $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
  323. }
  324. if ($pager['total_num']) {
  325. $pager['total_page'] = ceil($pager['total_num'] / $page_size);
  326. if ($page < $pager['total_page']) {
  327. $pager['next_page'] = max($page + 1, 1);
  328. }
  329. if ($page > 1) {
  330. $pager['prev_page'] = min($page - 1, $pager['total_page']);
  331. }
  332. }
  333. return array($c_commu_list, $pager);
  334. }
  335. /**
  336. * コミュニティトピックからコミュニティIDを取得
  337. */
  338. function db_commu_c_commu_id4c_commu_topic_id($c_commu_topic_id)
  339. {
  340. $sql = "SELECT c_commu_id FROM c_commu_topic WHERE c_commu_topic_id = ?";
  341. $params = array(intval($c_commu_topic_id));
  342. return db_get_one($sql, $params);
  343. }
  344. // $c_commu_id の community に参加しているメンバーを返す
  345. function db_commu_c_member_list4c_commu_id($c_commu_id, $page_size, $page)
  346. {
  347. $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
  348. $sql = "SELECT c_member.c_member_id,".
  349. "nickname,".
  350. "image_filename ," .
  351. "c_commu_member.r_datetime".
  352. " FROM c_member,".
  353. "c_commu_member".
  354. " WHERE c_commu_id = ?".
  355. " AND c_commu_member.c_member_id = c_member.c_member_id".
  356. " ORDER BY c_commu_member.r_datetime DESC";
  357. $params = array(intval($c_commu_id));
  358. $list = db_get_all_page($sql, $page, $page_size, $params);
  359. $new_list = array();
  360. foreach ($list as $key => $value) {
  361. $new_list[] = $value;
  362. }
  363. $list = $new_list;
  364. $sql = 'SELECT * FROM c_commu_admin_confirm WHERE c_commu_id = ?';
  365. $params = array(intval($c_commu_id));
  366. $c_commu_admin_confirm = db_get_row($sql, $params);
  367. $sql = 'SELECT * FROM c_commu_sub_admin_confirm WHERE c_commu_id = ?';
  368. $c_commu_sub_admin_confirm = db_get_row($sql, $params);
  369. if ($c_commu_admin_confirm) {
  370. foreach ($list as $key => $c_member) {
  371. if ($list[$key]['c_member_id'] == $c_commu_admin_confirm['c_member_id_to']) {
  372. $list[$key]['c_commu_admin_confirm_id'] = $c_commu_admin_confirm['c_commu_admin_confirm_id'];
  373. } else {
  374. $list[$key]['c_commu_admin_confirm_id'] = 0;
  375. }
  376. }
  377. } else {
  378. foreach ($list as $key => $c_member) {
  379. $list[$key]['c_commu_admin_confirm_id'] = -1;
  380. }
  381. }
  382. if ($c_commu_sub_admin_confirm) {
  383. foreach ($list as $key => $c_member) {
  384. if ($list[$key]['c_member_id'] == $c_commu_sub_admin_confirm['c_member_id_to']) {
  385. $list[$key]['c_commu_sub_admin_confirm_id'] = $c_commu_sub_admin_confirm['c_commu_sub_admin_confirm_id'];
  386. } else {
  387. $list[$key]['c_commu_sub_admin_confirm_id'] = 0;
  388. }
  389. }
  390. } else {
  391. foreach ($list as $key => $c_member) {
  392. $list[$key]['c_commu_sub_admin_confirm_id'] = -1;
  393. }
  394. }
  395. foreach ($list as $key => $c_member) {
  396. $list[$key]['is_c_commu_admin'] = db_commu_is_c_commu_admin($c_commu_id, $list[$key]['c_member_id']);
  397. $list[$key]['is_c_commu_sub_admin'] = db_commu_is_c_commu_sub_admin($c_commu_id, $list[$key]['c_member_id']);
  398. }
  399. $total_num = db_commu_count_c_commu_member_list4c_commu_id($c_commu_id);
  400. if ($total_num != 0) {
  401. $total_page_num = ceil($total_num / $page_size);
  402. if ($page >= $total_page_num) {
  403. $next = false;
  404. } else {
  405. $next = true;
  406. }
  407. if ($page <= 1) {
  408. $prev = false;
  409. } else {
  410. $prev = true;
  411. }
  412. }
  413. return array($list, $prev, $next, $total_num);
  414. }
  415. /**
  416. * コミュニティメンバーのリストを得る
  417. */
  418. function db_commu_c_commu_member_list4c_commu_id($c_commu_id ,$limit = 9)
  419. {
  420. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  421. if (!$is_recurred) { //function cacheのために再帰処理を行う
  422. $is_recurred = true;
  423. $funcargs = func_get_args();
  424. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
  425. $is_recurred = false;
  426. return $result;
  427. }
  428. $sql = 'SELECT c_member.* FROM c_member, c_commu_member' .
  429. ' WHERE c_member.c_member_id = c_commu_member.c_member_id' .
  430. ' AND c_commu_id = ?' . db_order_by_rand();
  431. $params = array(intval($c_commu_id));
  432. $lst = db_get_all_limit($sql, 0, $limit, $params);
  433. foreach ($lst as $key => $value) {
  434. $lst[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
  435. }
  436. return $lst;
  437. }
  438. function db_commu_new_topic_comment4c_commu_id($c_commu_id, $limit, $event_flag = 0)
  439. {
  440. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  441. if (!$is_recurred) { //function cacheのために再帰処理を行う
  442. $is_recurred = true;
  443. $funcargs = func_get_args();
  444. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
  445. $is_recurred = false;
  446. return $result;
  447. }
  448. $sql = "SELECT c_commu_topic_id , name, u_datetime as r_datetime , c_commu_id " .
  449. " FROM c_commu_topic" .
  450. " WHERE event_flag = ? AND c_commu_id = ?".
  451. " ORDER BY r_datetime DESC";
  452. $params = array((bool)$event_flag, intval($c_commu_id));
  453. $list = db_get_all_limit($sql, 0, $limit, $params);
  454. foreach ($list as $key => $value) {
  455. $list[$key]['count_comments'] = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  456. $start_comment = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  457. $list[$key]['image_filename1'] = $start_comment['image_filename1'];
  458. $list[$key]['image_filename2'] = $start_comment['image_filename2'];
  459. $list[$key]['image_filename3'] = $start_comment['image_filename3'];
  460. }
  461. return $list;
  462. }
  463. /**
  464. * コミュニティに招待するMyフレンドのリストを得る
  465. * コミュニティに参加していないMyフレンドを全員表示
  466. *
  467. * @param int $c_member_id
  468. * @param int $c_commu_id
  469. */
  470. function db_commu_invite_list4c_member_id4c_commu_id($c_member_id, $c_commu_id)
  471. {
  472. //友達リスト
  473. $friend_list = db_friend_c_member_id_list($c_member_id);
  474. //参加者リスト
  475. $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?';
  476. $params = array(intval($c_commu_id));
  477. $member_list = db_get_col($sql, $params);
  478. //友達リストから参加者リストを引く
  479. $result = array_diff($friend_list, $member_list);
  480. if (empty($result)) {
  481. return array();
  482. } else {
  483. $result = implode(",", $result);
  484. $sql = 'SELECT c_member_id, nickname '
  485. . ' FROM c_member'
  486. . ' WHERE c_member_id'
  487. . ' IN ( '. $result. ') ';
  488. return db_get_all($sql);
  489. }
  490. }
  491. function db_commu_c_members4c_commu_id($c_commu_id, $page_size, $page)
  492. {
  493. $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ? ORDER BY r_datetime DESC';
  494. $params = array(intval($c_commu_id));
  495. $id_list = db_get_all_page($sql, $page, $page_size, $params);
  496. $list = array();
  497. foreach ($id_list as $key => $value) {
  498. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  499. $c_member['friend_count'] = db_friend_count_friends($value['c_member_id']);
  500. $list[] = $c_member;
  501. }
  502. $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_commu_id = ?';
  503. $total_num = db_get_one($sql, $params);
  504. if ($total_num != 0) {
  505. $total_page_num = ceil($total_num / $page_size);
  506. if ($page >= $total_page_num) {
  507. $next = false;
  508. } else {
  509. $next = true;
  510. }
  511. if ($page <= 1) {
  512. $prev = false;
  513. } else {
  514. $prev = true;
  515. }
  516. }
  517. $start_num = ($page - 1) * $page_size + 1 ;
  518. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  519. return array($list , $prev , $next, $total_num, $start_num, $end_num);
  520. }
  521. function db_commu_c_commu_list4c_member_id_2($c_member_id, $limit = 9)
  522. {
  523. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  524. if (!$is_recurred) { //function cacheのために再帰処理を行う
  525. $is_recurred = true;
  526. $funcargs = func_get_args();
  527. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
  528. $is_recurred = false;
  529. return $result;
  530. }
  531. $sql = "SELECT c_commu.c_commu_id, c_commu.image_filename, c_commu.name, c_commu.c_member_id_admin" .
  532. " FROM c_commu ,c_commu_member " .
  533. " WHERE c_commu_member.c_member_id = ?".
  534. " AND c_commu.c_commu_id = c_commu_member.c_commu_id" .
  535. db_order_by_rand();
  536. $params = array(intval($c_member_id));
  537. $lst = db_get_all_limit($sql, 0, $limit, $params);
  538. foreach ($lst as $key => $value) {
  539. $lst[$key]['count_commu_members'] = db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  540. }
  541. return $lst;
  542. }
  543. /**
  544. * あなたに(の)管理コミュニティに参加を希望しているメンバー
  545. *
  546. * @param int $c_member_id : 要請されている方(あなた=管理者)
  547. * @return array_of_array
  548. * c_commu_member_confirm.*
  549. * c_commu_name : コミュニティの名前
  550. * nickname : 要請している人の名前
  551. * image_filename : 要請している人の画像
  552. * @see h_confirm_list.php
  553. */
  554. function db_commu_anatani_c_commu_member_confirm_list4c_member_id($c_member_id)
  555. {
  556. $sql = "SELECT cmc.*, c.name AS c_commu_name";
  557. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  558. $sql .= " WHERE (c.c_member_id_admin = ? OR c.c_member_id_sub_admin = ?) AND cmc.c_commu_id=c.c_commu_id";
  559. $params = array(intval($c_member_id), intval($c_member_id));
  560. $c_commu_member_confirm_list = db_get_all($sql, $params);
  561. foreach ($c_commu_member_confirm_list as $key => $value) {
  562. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  563. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  564. $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  565. }
  566. return $c_commu_member_confirm_list;
  567. }
  568. /**
  569. * あなたがコミュニティ参加要請しているコミュニティ
  570. *
  571. * @param int $c_member_id : 要請している方(あなた)
  572. * @return array_of_array
  573. * c_commu_member_confirm.*,
  574. * c_commu_name : コミュニティの名前
  575. * c_member_id_admin : 管理者のメンバーID
  576. * nickname : 管理者の名前
  577. * image_filename : 管理者の画像
  578. * @see h_confirm_list.php
  579. */
  580. function db_commu_anataga_c_commu_member_confirm_list4c_member_id($c_member_id)
  581. {
  582. $sql = "SELECT cmc.*, c.name AS c_commu_name, c.c_member_id_admin";
  583. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  584. $sql .= " WHERE cmc.c_member_id = ? AND cmc.c_commu_id=c.c_commu_id";
  585. $params = array(intval($c_member_id));
  586. $c_commu_member_confirm_list = db_get_all($sql, $params);
  587. foreach ($c_commu_member_confirm_list as $key => $value) {
  588. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  589. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  590. $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  591. }
  592. return $c_commu_member_confirm_list;
  593. }
  594. /**
  595. * あなたにコミュニティ管理者交代を希望しているメンバー
  596. *
  597. * @param int $c_member_id_to : 要請されている方(あなた)
  598. * @return array_of_array
  599. * c_commu_admin_confirm.*
  600. * c_commu_name : コミュニティ名
  601. * c_member_id_admin : 要請している人(=現管理者)のID
  602. * nickname : 要請している人の名前
  603. * image_filename : 要請している人の画像
  604. * @see h_confirm_list.php
  605. */
  606. function db_commu_anatani_c_commu_admin_confirm_list4c_member_id($c_member_id_to)
  607. {
  608. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  609. $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
  610. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  611. $params = array(intval($c_member_id_to));
  612. $c_commu_admin_confirm_list = db_get_all($sql, $params);
  613. foreach ($c_commu_admin_confirm_list as $key => $value) {
  614. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  615. $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  616. $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  617. }
  618. return $c_commu_admin_confirm_list;
  619. }
  620. /**
  621. * あなたがコミュニティ管理者交代を要請しているメンバー
  622. *
  623. * @param int $c_member_id_admin : 要請している方(あなた)
  624. * @return array_of_array
  625. * c_commu_admin_confirm.*
  626. * nickname : 要請されている人の名前
  627. * image_filename : 要請されている人の画像
  628. * @see h_confirm_list.php
  629. */
  630. function db_commu_anataga_c_commu_admin_confirm_list4c_member_id($c_member_id_admin)
  631. {
  632. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  633. $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
  634. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  635. $params = array(intval($c_member_id_admin));
  636. $c_commu_admin_confirm_list = db_get_all($sql, $params);
  637. foreach ($c_commu_admin_confirm_list as $key => $value) {
  638. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  639. $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  640. $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  641. }
  642. return $c_commu_admin_confirm_list;
  643. }
  644. /**
  645. * あなたにコミュニティ副管理者を希望しているメンバー
  646. *
  647. * @param int $c_member_id_to : 要請されている方(あなた)
  648. * @return array_of_array
  649. * c_commu_sub_admin_confirm.*
  650. * c_commu_name : コミュニティ名
  651. * c_member_id_sub_admin : 要請している人(=現管理者)のID
  652. * nickname : 要請している人の名前
  653. * image_filename : 要請している人の画像
  654. * @see h_confirm_list.php
  655. */
  656. function db_commu_anatani_c_commu_sub_admin_confirm_list4c_member_id($c_member_id_to)
  657. {
  658. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  659. $sql .= " FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  660. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  661. $params = array(intval($c_member_id_to));
  662. $c_commu_sub_admin_confirm_list = db_get_all($sql, $params);
  663. foreach ($c_commu_sub_admin_confirm_list as $key => $value) {
  664. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  665. $c_commu_sub_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  666. $c_commu_sub_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  667. }
  668. return $c_commu_sub_admin_confirm_list;
  669. }
  670. /**
  671. * あなたがコミュニティ副管理者を要請しているメンバー
  672. *
  673. * @param int $c_member_id_admin : 要請している方(あなた)
  674. * @return array_of_array
  675. * c_commu_sub_admin_confirm.*
  676. * nickname : 要請されている人の名前
  677. * image_filename : 要請されている人の画像
  678. * @see h_confirm_list.php
  679. */
  680. function db_commu_anataga_c_commu_sub_admin_confirm_list4c_member_id($c_member_id_admin)
  681. {
  682. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  683. $sql .= " FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  684. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  685. $params = array(intval($c_member_id_admin));
  686. $c_commu_sub_admin_confirm_list = db_get_all($sql, $params);
  687. foreach ($c_commu_sub_admin_confirm_list as $key => $value) {
  688. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  689. $c_commu_sub_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  690. $c_commu_sub_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  691. }
  692. return $c_commu_sub_admin_confirm_list;
  693. }
  694. /**
  695. * あなたに(の)管理コミュニティに参加を希望しているメンバー数を取得
  696. *
  697. * @param int $c_member_id
  698. * @return int 希望しているメンバー数
  699. */
  700. function db_commu_count_c_anatani_c_commu_member_confirm($c_member_id)
  701. {
  702. $sql = "SELECT COUNT(*) FROM c_commu_member_confirm AS cmc, c_commu AS c";
  703. $sql .= " WHERE (c.c_member_id_admin = ? OR c.c_member_id_sub_admin = ?) AND cmc.c_commu_id=c.c_commu_id";
  704. $params = array(intval($c_member_id), intval($c_member_id));
  705. return db_get_one($sql, $params);
  706. }
  707. /**
  708. * あなたに(の)管理コミュニティに参加を希望しているメンバー(携帯用にpagerを追加)
  709. *
  710. * @param int $c_member_id : 要請されている方(あなた=管理者)
  711. * @return array_of_array
  712. * c_commu_member_confirm.*
  713. * c_commu_name : コミュニティの名前
  714. * nickname : 要請している人の名前
  715. * image_filename : 要請している人の画像
  716. * @see h_confirm_list.php
  717. */
  718. function db_commu_ktai_anatani_c_commu_member_confirm_list4c_member_id($c_member_id, $page_size, $page)
  719. {
  720. $sql = "SELECT cmc.*, c.name AS c_commu_name";
  721. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  722. $sql .= " WHERE (c.c_member_id_admin = ? OR c.c_member_id_sub_admin = ?) AND cmc.c_commu_id=c.c_commu_id";
  723. $sql .= " ORDER BY cmc.r_datetime ASC";
  724. $params = array(intval($c_member_id), intval($c_member_id));
  725. $c_commu_member_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  726. foreach ($c_commu_member_confirm_list as $key => $value) {
  727. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  728. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  729. $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  730. }
  731. $total_num = db_commu_count_c_anatani_c_commu_member_confirm($c_member_id);
  732. if ($total_num != 0) {
  733. $total_page_num = ceil($total_num / $page_size);
  734. if ($page >= $total_page_num) {
  735. $next = false;
  736. } else {
  737. $next = true;
  738. }
  739. if ($page <= 1) {
  740. $prev = false;
  741. } else {
  742. $prev = true;
  743. }
  744. }
  745. return array($c_commu_member_confirm_list, $prev, $next, $total_num);
  746. }
  747. /**
  748. * あなたが管理コミュニティに参加希望している数を取得
  749. *
  750. * @param int $c_member_id
  751. * @return int 希望している数
  752. */
  753. function db_commu_count_c_anataga_c_commu_member_confirm($c_member_id)
  754. {
  755. $sql = "SELECT COUNT(*) FROM c_commu_member_confirm AS cmc, c_commu AS c";
  756. $sql .= " WHERE cmc.c_member_id = ? AND cmc.c_commu_id=c.c_commu_id";
  757. $params = array(intval($c_member_id));
  758. return db_get_one($sql, $params);
  759. }
  760. /**
  761. * あなたがコミュニティ参加要請しているコミュニティ(携帯用にpagerを追加)
  762. *
  763. * @param int $c_member_id : 要請している方(あなた)
  764. * @return array_of_array
  765. * c_commu_member_confirm.*,
  766. * c_commu_name : コミュニティの名前
  767. * c_member_id_admin : 管理者のメンバーID
  768. * nickname : 管理者の名前
  769. * image_filename : 管理者の画像
  770. * @see h_confirm_list.php
  771. */
  772. function db_commu_ktai_anataga_c_commu_member_confirm_list4c_member_id($c_member_id, $page_size, $page)
  773. {
  774. $sql = "SELECT cmc.*, c.name AS c_commu_name, c.c_member_id_admin";
  775. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  776. $sql .= " WHERE cmc.c_member_id = ? AND cmc.c_commu_id=c.c_commu_id";
  777. $sql .= " ORDER BY cmc.r_datetime ASC";
  778. $params = array(intval($c_member_id));
  779. $c_commu_member_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  780. foreach ($c_commu_member_confirm_list as $key => $value) {
  781. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  782. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  783. $c_commu_member_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  784. }
  785. $total_num = db_commu_count_c_anataga_c_commu_member_confirm($c_member_id);
  786. if ($total_num != 0) {
  787. $total_page_num = ceil($total_num / $page_size);
  788. if ($page >= $total_page_num) {
  789. $next = false;
  790. } else {
  791. $next = true;
  792. }
  793. if ($page <= 1) {
  794. $prev = false;
  795. } else {
  796. $prev = true;
  797. }
  798. }
  799. return array($c_commu_member_confirm_list, $prev, $next, $total_num);
  800. }
  801. /**
  802. * あなたにコミュニティ管理者交代を希望している数を取得
  803. *
  804. * @param int $c_member_id
  805. * @return int 希望している数
  806. */
  807. function db_commu_count_c_anatani_c_commu_admin_confirm($c_member_id)
  808. {
  809. $sql = "SELECT COUNT(*) FROM c_commu_admin_confirm AS cac, c_commu AS c";
  810. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  811. $params = array(intval($c_member_id));
  812. return db_get_one($sql, $params);
  813. }
  814. /**
  815. * あなたにコミュニティ管理者交代を希望しているメンバー(携帯用にpagerを追加)
  816. *
  817. * @param int $c_member_id_to : 要請されている方(あなた)
  818. * @return array_of_array
  819. * c_commu_admin_confirm.*
  820. * c_commu_name : コミュニティ名
  821. * c_member_id_admin : 要請している人(=現管理者)のID
  822. * nickname : 要請している人の名前
  823. * image_filename : 要請している人の画像
  824. * @see h_confirm_list.php
  825. */
  826. function db_commu_ktai_anatani_c_commu_admin_confirm_list4c_member_id($c_member_id_to, $page_size, $page)
  827. {
  828. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  829. $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
  830. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  831. $sql .= " ORDER BY cac.r_datetime ASC";
  832. $params = array(intval($c_member_id_to));
  833. $c_commu_admin_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  834. foreach ($c_commu_admin_confirm_list as $key => $value) {
  835. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  836. $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  837. $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  838. }
  839. $total_num = db_commu_count_c_anatani_c_commu_admin_confirm($c_member_id_to);
  840. if ($total_num != 0) {
  841. $total_page_num = ceil($total_num / $page_size);
  842. if ($page >= $total_page_num) {
  843. $next = false;
  844. } else {
  845. $next = true;
  846. }
  847. if ($page <= 1) {
  848. $prev = false;
  849. } else {
  850. $prev = true;
  851. }
  852. }
  853. return array($c_commu_admin_confirm_list, $prev, $next, $total_num);
  854. }
  855. /**
  856. * あなたが管理しているコミュニティ管理者交代を要請している数を取得
  857. *
  858. * @param int $c_member_id
  859. * @return int 要請している数
  860. */
  861. function db_commu_count_c_anataga_c_commu_admin_confirm($c_member_id)
  862. {
  863. $sql = "SELECT COUNT(*) FROM c_commu_admin_confirm AS cac, c_commu AS c";
  864. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  865. $params = array(intval($c_member_id));
  866. return db_get_one($sql, $params);
  867. }
  868. /**
  869. * あなたが管理しているコミュニティ管理者交代を要請しているメンバー(携帯用にpagerを追加)
  870. *
  871. * @param int $c_member_id_admin : 要請している方(あなた)
  872. * @return array_of_array
  873. * c_commu_admin_confirm.*
  874. * nickname : 要請されている人の名前
  875. * image_filename : 要請されている人の画像
  876. * @see h_confirm_list.php
  877. */
  878. function db_commu_ktai_anataga_c_commu_admin_confirm_list4c_member_id($c_member_id_admin, $page_size, $page)
  879. {
  880. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  881. $sql .= " FROM c_commu_admin_confirm AS cac, c_commu AS c";
  882. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  883. $sql .= " ORDER BY cac.r_datetime ASC";
  884. $params = array(intval($c_member_id_admin));
  885. $c_commu_admin_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  886. foreach ($c_commu_admin_confirm_list as $key => $value) {
  887. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  888. $c_commu_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  889. $c_commu_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  890. }
  891. $total_num = db_commu_count_c_anataga_c_commu_admin_confirm($c_member_id_admin);
  892. if ($total_num != 0) {
  893. $total_page_num = ceil($total_num / $page_size);
  894. if ($page >= $total_page_num) {
  895. $next = false;
  896. } else {
  897. $next = true;
  898. }
  899. if ($page <= 1) {
  900. $prev = false;
  901. } else {
  902. $prev = true;
  903. }
  904. }
  905. return array($c_commu_admin_confirm_list, $prev, $next, $total_num);
  906. }
  907. /**
  908. * あなたに管理コミュニティ副管理者交代を希望している数を取得
  909. *
  910. * @param int $c_member_id
  911. * @return int 希望している数
  912. */
  913. function db_commu_count_c_anatani_c_commu_sub_admin_confirm($c_member_id)
  914. {
  915. $sql = "SELECT COUNT(*) FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  916. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  917. $params = array(intval($c_member_id));
  918. return db_get_one($sql, $params);
  919. }
  920. /**
  921. * あなたにコミュニティ副管理者を希望しているメンバー(携帯用にpagerを追加)
  922. *
  923. * @param int $c_member_id_to : 要請されている方(あなた)
  924. * @return array_of_array
  925. * c_commu_sub_admin_confirm.*
  926. * c_commu_name : コミュニティ名
  927. * c_member_id_sub_admin : 要請している人(=現管理者)のID
  928. * nickname : 要請している人の名前
  929. * image_filename : 要請している人の画像
  930. * @see h_confirm_list.php
  931. */
  932. function db_commu_ktai_anatani_c_commu_sub_admin_confirm_list4c_member_id($c_member_id_to, $page_size, $page)
  933. {
  934. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  935. $sql .= " FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  936. $sql .= " WHERE cac.c_member_id_to = ? AND cac.c_commu_id=c.c_commu_id";
  937. $sql .= " ORDER BY cac.r_datetime ASC";
  938. $params = array(intval($c_member_id_to));
  939. $c_commu_sub_admin_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  940. foreach ($c_commu_sub_admin_confirm_list as $key => $value) {
  941. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  942. $c_commu_sub_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  943. $c_commu_sub_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  944. }
  945. $total_num = db_commu_count_c_anatani_c_commu_sub_admin_confirm($c_member_id_to);
  946. if ($total_num != 0) {
  947. $total_page_num = ceil($total_num / $page_size);
  948. if ($page >= $total_page_num) {
  949. $next = false;
  950. } else {
  951. $next = true;
  952. }
  953. if ($page <= 1) {
  954. $prev = false;
  955. } else {
  956. $prev = true;
  957. }
  958. }
  959. return array($c_commu_sub_admin_confirm_list, $prev, $next, $total_num);
  960. }
  961. /**
  962. * あなたが管理しているコミュニティ副管理者交代を要請している数を取得
  963. *
  964. * @param int $c_member_id
  965. * @return int 要請している数
  966. */
  967. function db_commu_count_c_anataga_c_commu_sub_admin_confirm($c_member_id)
  968. {
  969. $sql = "SELECT COUNT(*) FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  970. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  971. $params = array(intval($c_member_id));
  972. return db_get_one($sql, $params);
  973. }
  974. /**
  975. * あなたがコミュニティ副管理者を要請しているメンバー(携帯用にpagerを追加)
  976. *
  977. * @param int $c_member_id_admin : 要請している方(あなた)
  978. * @return array_of_array
  979. * c_commu_sub_admin_confirm.*
  980. * nickname : 要請されている人の名前
  981. * image_filename : 要請されている人の画像
  982. * @see h_confirm_list.php
  983. */
  984. function db_commu_ktai_anataga_c_commu_sub_admin_confirm_list4c_member_id($c_member_id_admin, $page_size, $page)
  985. {
  986. $sql = "SELECT cac.*, c.name AS c_commu_name, c.c_member_id_admin";
  987. $sql .= " FROM c_commu_sub_admin_confirm AS cac, c_commu AS c";
  988. $sql .= " WHERE c.c_member_id_admin = ? AND cac.c_commu_id=c.c_commu_id";
  989. $sql .= " ORDER BY cac.r_datetime ASC";
  990. $params = array(intval($c_member_id_admin));
  991. $c_commu_sub_admin_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
  992. foreach ($c_commu_sub_admin_confirm_list as $key => $value) {
  993. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
  994. $c_commu_sub_admin_confirm_list[$key]['nickname'] = $c_member['nickname'];
  995. $c_commu_sub_admin_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
  996. }
  997. $total_num = db_commu_count_c_anataga_c_commu_sub_admin_confirm($c_member_id_admin);
  998. if ($total_num != 0) {
  999. $total_page_num = ceil($total_num / $page_size);
  1000. if ($page >= $total_page_num) {
  1001. $next = false;
  1002. } else {
  1003. $next = true;
  1004. }
  1005. if ($page <= 1) {
  1006. $prev = false;
  1007. } else {
  1008. $prev = true;
  1009. }
  1010. }
  1011. return array($c_commu_sub_admin_confirm_list, $prev, $next, $total_num);
  1012. }
  1013. /**
  1014. * 参加コミュニティ新着書き込みリスト取得
  1015. */
  1016. function db_commu_c_commu_topic_comment_list4c_member_id($c_member_id, $limit, $is_display_topic_home = false)
  1017. {
  1018. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  1019. if (!$is_recurred) { //function cacheのために再帰処理を行う
  1020. $is_recurred = true;
  1021. $funcargs = func_get_args();
  1022. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
  1023. $is_recurred = false;
  1024. return $result;
  1025. }
  1026. $sql = 'SELECT c_commu_id FROM c_commu_member WHERE c_member_id = ?';
  1027. $c_commu_id_list = db_get_col($sql, array(intval($c_member_id)));
  1028. if (!$c_commu_id_list) {
  1029. return array();
  1030. }
  1031. $ids = implode(", ", $c_commu_id_list);
  1032. $hint = db_mysql_hint('USE INDEX (r_datetime_c_commu_id)');
  1033. $sql = 'SELECT a.c_commu_topic_id, a.c_commu_id, a.u_datetime as r_datetime, a.c_member_id,'.
  1034. ' a.name as c_commu_topic_name'.
  1035. ' FROM c_commu_topic as a INNER JOIN c_commu_member as b USING(c_commu_id)'.
  1036. ' WHERE b.c_member_id = ?';
  1037. if ($is_display_topic_home) {
  1038. $sql .= ' AND b.is_display_topic_home = 1';
  1039. }
  1040. $sql .= ' ORDER BY r_datetime DESC';
  1041. $params = array(intval($c_member_id));
  1042. $c_commu_topic_list = db_get_all_limit($sql, 0, $limit, $params);
  1043. foreach ($c_commu_topic_list as $key => $value) {
  1044. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  1045. $c_commu_topic_list[$key]['nickname'] = $c_member['nickname'];
  1046. $temp = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  1047. $sql = 'SELECT name AS c_commu_name FROM c_commu WHERE c_commu_id = ?';
  1048. $c_commu_name = db_get_one($sql, $value['c_commu_id']);
  1049. //最新の書き込み番号
  1050. $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  1051. $c_commu_topic_list[$key]['number'] = $number;
  1052. $c_commu_topic_list[$key]['image_filename1'] = $temp['image_filename1'];
  1053. $c_commu_topic_list[$key]['image_filename2'] = $temp['image_filename2'];
  1054. $c_commu_topic_list[$key]['image_filename3'] = $temp['image_filename3'];
  1055. $c_commu_topic_list[$key]['c_commu_name'] = $c_commu_name;
  1056. }
  1057. return $c_commu_topic_list;
  1058. }
  1059. function db_commu_c_commu_topic_comment_list4c_member_id_2($c_member_id, $limit,$page)
  1060. {
  1061. $sql = 'SELECT c_commu_id FROM c_commu_member WHERE c_member_id = ?';
  1062. $c_commu_id_list = db_get_col($sql, array(intval($c_member_id)));
  1063. if (!$c_commu_id_list) {
  1064. return array();
  1065. }
  1066. $ids = implode(", ", $c_commu_id_list);
  1067. $hint = db_mysql_hint('USE INDEX (r_datetime_c_commu_id)');
  1068. $sql = 'SELECT a.c_commu_topic_id, a.c_commu_id, a.u_datetime as r_datetime, a.c_member_id,'.
  1069. ' a.name as c_commu_topic_name'.
  1070. ' FROM c_commu_topic as a INNER JOIN c_commu_member as b USING(c_commu_id)'.
  1071. ' WHERE b.c_member_id = ?'.
  1072. ' ORDER BY r_datetime DESC';
  1073. $params = array(intval($c_member_id));
  1074. $c_commu_topic_list = db_get_all_limit($sql, ($page-1)*$limit, $limit, $params);
  1075. foreach ($c_commu_topic_list as $key => $value) {
  1076. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  1077. $c_commu_topic_list[$key]['nickname'] = $c_member['nickname'];
  1078. $temp = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  1079. $sql = 'SELECT name AS c_commu_name FROM c_commu WHERE c_commu_id = ?';
  1080. $c_commu_name = db_get_one($sql, $value['c_commu_id']);
  1081. //最新の書き込み番号
  1082. $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  1083. $c_commu_topic_list[$key]['number'] = $number;
  1084. $c_commu_topic_list[$key]['image_filename1'] = $temp['image_filename1'];
  1085. $c_commu_topic_list[$key]['image_filename2'] = $temp['image_filename2'];
  1086. $c_commu_topic_list[$key]['image_filename3'] = $temp['image_filename3'];
  1087. $c_commu_topic_list[$key]['c_commu_name'] = $c_commu_name;
  1088. }
  1089. $sql = "SELECT count(DISTINCT ct.c_commu_topic_id)";
  1090. $sql .= " FROM c_commu_member AS cm, c_commu_topic_comment AS cc";
  1091. $sql .= ", c_commu AS c, c_commu_topic AS ct";
  1092. $sql .= " WHERE cm.c_member_id = ?";
  1093. $sql .= " AND cc.c_commu_id=cm.c_commu_id";
  1094. $sql .= " AND c.c_commu_id=cm.c_commu_id";
  1095. $sql .= " AND ct.c_commu_id=cm.c_commu_id";
  1096. $sql .= " AND ct.c_commu_topic_id=cc.c_commu_topic_id";
  1097. $params = array(intval($c_member_id));
  1098. $total_num = db_get_one($sql, $params);
  1099. if ($total_num != 0) {
  1100. $total_page_num = ceil($total_num / $limit);
  1101. if ($page >= $total_page_num) {
  1102. $next = false;
  1103. } else {
  1104. $next = true;
  1105. }
  1106. if ($page <= 1) {
  1107. $prev = false;
  1108. } else {
  1109. $prev = true;
  1110. }
  1111. }
  1112. return array($c_commu_topic_list , $prev , $next,$total_num);
  1113. }
  1114. function db_commu_c_topic_list4target_c_commu_id($c_commu_id, $c_member_id, $page = 1, $page_size = 10, $event_flag = 0, $topic_with_event = 0)
  1115. {
  1116. $sql = " SELECT cct.c_commu_topic_id, max(cct.u_datetime) as newest_write_datetime " .
  1117. " FROM c_commu_topic as cct, c_commu_topic_comment as cctc " .
  1118. " WHERE cct.c_commu_topic_id = cctc.c_commu_topic_id ";
  1119. if ($topic_with_event) {
  1120. $sql .= " AND cct.event_flag = $event_flag";
  1121. }
  1122. $sql .= " AND cct.c_commu_id = ?" .
  1123. " GROUP BY cct.c_commu_topic_id " .
  1124. " ORDER BY newest_write_datetime DESC";
  1125. $params = array(intval($c_commu_id));
  1126. $lst = db_get_all_page($sql, $page, $page_size, $params);
  1127. foreach ($lst as $key => $value) {
  1128. $sql = "SELECT cct.c_commu_topic_id, cct.name, cct.u_datetime, cctc.body , cctc.image_filename1, cctc.image_filename2, image_filename3" .
  1129. " FROM c_commu_topic as cct, c_commu_topic_comment as cctc" .
  1130. " WHERE cct.c_commu_topic_id = cctc.c_commu_topic_id" .
  1131. " AND cctc.number = 0" .
  1132. " AND cct.c_commu_topic_id = ?";
  1133. $params = array(intval($value['c_commu_topic_id']));
  1134. $lst[$key] = db_get_row($sql, $params);
  1135. }
  1136. foreach ($lst as $key => $value) {
  1137. $lst[$key]['is_c_event_member'] = db_commu_is_c_event_member($value['c_commu_topic_id'], $c_member_id);
  1138. $lst[$key]['is_c_topic_admin'] = db_commu_is_c_topic_admin($value['c_commu_topic_id'], $c_member_id);
  1139. $lst[$key]['write_num'] = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  1140. }
  1141. $sql = 'SELECT COUNT(*) FROM c_commu_topic WHERE c_commu_id = ?';
  1142. if ($topic_with_event) {
  1143. $sql .= " AND event_flag = $event_flag";
  1144. }
  1145. $params = array(intval($c_commu_id));
  1146. $total_num = db_get_one($sql, $params);
  1147. if ($total_num != 0) {
  1148. $total_page_num = ceil($total_num / $page_size);
  1149. if ($page >= $total_page_num) {
  1150. $next = false;
  1151. } else {
  1152. $next = true;
  1153. }
  1154. if ($page <= 1) {
  1155. $prev = false;
  1156. } else {
  1157. $prev = true;
  1158. }
  1159. }
  1160. $start_num = ($page - 1) * $page_size + 1 ;
  1161. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1162. return array($lst, $prev, $next, $total_num, $start_num, $end_num);
  1163. }
  1164. function db_commu_c_topic4c_commu_topic_id($c_commu_topic_id)
  1165. {
  1166. $sql = "SELECT ct.*, ctc.*, c_member.nickname" .
  1167. " FROM c_commu_topic AS ct" .
  1168. " LEFT JOIN c_member USING (c_member_id)" .
  1169. ", c_commu_topic_comment AS ctc" .
  1170. " WHERE ct.c_commu_topic_id = ctc.c_commu_topic_id " .
  1171. " AND ct.c_commu_topic_id = ?".
  1172. " AND ctc.number = 0";
  1173. $params = array(intval($c_commu_topic_id));
  1174. return db_get_row($sql, $params);
  1175. }
  1176. function db_commu_is_topic4c_commu_id($c_commu_id)
  1177. {
  1178. $sql = 'SELECT c_commu_topic_id FROM c_commu_topic WHERE c_commu_id = ?';
  1179. $params = array(intval($c_commu_id));
  1180. return db_get_one($sql, $params);
  1181. }
  1182. /**
  1183. * IDからコミュニティトピックコメントの情報を取得
  1184. *
  1185. * @param int $c_commu_topic_comment_id
  1186. * @return array
  1187. */
  1188. function db_commu_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id)
  1189. {
  1190. $sql = "SELECT ctc.*, ct.name AS topic_name, c.name AS commu_name" .
  1191. " FROM c_commu_topic_comment AS ctc, c_commu_topic AS ct, c_commu AS c" .
  1192. " WHERE ctc.c_commu_topic_comment_id=?" .
  1193. " AND ct.c_commu_topic_id=ctc.c_commu_topic_id" .
  1194. " AND c.c_commu_id=ctc.c_commu_id";
  1195. $params = array(intval($c_commu_topic_comment_id));
  1196. return db_get_row($sql, $params, 'main');
  1197. }
  1198. function db_common_commu_status($u, $target_c_commu_id)
  1199. {
  1200. $ret = array(
  1201. 'c_commu' => db_commu_c_commu4c_commu_id($target_c_commu_id),
  1202. 'is_bbs_view' => false,
  1203. 'is_commu_member' => false,
  1204. 'is_commu_admin' => false,
  1205. 'is_commu_sub_admin' => false,
  1206. 'is_receive_mail' => false,
  1207. 'is_commu_member_confirm' => false,
  1208. );
  1209. if (db_commu_is_c_commu_member($target_c_commu_id, $u)) {
  1210. $ret['is_commu_member'] = true;
  1211. $c_commu_member = db_commu_c_commu_member4c_member_id($u, $target_c_commu_id);
  1212. if ($c_commu_member['is_receive_mail']) {
  1213. $ret['is_receive_mail'] = true;
  1214. }
  1215. //副管理者の権限はほぼ管理者と同一
  1216. if ($ret['c_commu']['c_member_id_admin'] == $u
  1217. || $ret['c_commu']['c_member_id_sub_admin'] == $u) {
  1218. $ret['is_commu_admin'] = true;
  1219. }
  1220. //副管理者かどうかも個別に持つ
  1221. if ($ret['c_commu']['c_member_id_sub_admin'] == $u) {
  1222. $ret['is_commu_sub_admin'] = true;
  1223. }
  1224. } else {
  1225. if (db_commu_is_c_commu_member_confirm($u, $target_c_commu_id)) {
  1226. $ret['is_commu_member_confirm'] = true;
  1227. }
  1228. }
  1229. switch ($ret['c_commu']['is_open']) {
  1230. case "public":
  1231. $ret['is_bbs_view'] = true;
  1232. break;
  1233. case "member":
  1234. $ret['is_bbs_view'] = $ret['is_commu_member'];
  1235. break;
  1236. }
  1237. return $ret;
  1238. }
  1239. function db_commu_is_c_commu_member_confirm($c_member_id, $c_commu_id)
  1240. {
  1241. $sql = "SELECT COUNT(*) FROM c_commu_member_confirm" .
  1242. " WHERE c_member_id = ? AND c_commu_id = ?";
  1243. $params = array(intval($c_member_id), intval($c_commu_id));
  1244. return db_get_one($sql, $params, 'main');
  1245. }
  1246. function db_commu_c_commu_member4c_member_id($c_member_id, $c_commu_id)
  1247. {
  1248. $sql = "SELECT * FROM c_commu_member" .
  1249. " WHERE c_member_id=? AND c_commu_id=?";
  1250. $params = array(intval($c_member_id), intval($c_commu_id));
  1251. return db_get_row($sql, $params);
  1252. }
  1253. /**
  1254. * コミュニティトピック情報取得
  1255. *
  1256. * @param int $c_commu_topic_id
  1257. * @return array トピック情報
  1258. */
  1259. function db_commu_c_commu_topic4c_commu_topic_id($c_commu_topic_id)
  1260. {
  1261. $sql = 'SELECT * FROM c_commu_topic WHERE c_commu_topic_id = ?';
  1262. $params = array(intval($c_commu_topic_id));
  1263. return db_get_row($sql, $params);
  1264. }
  1265. /**
  1266. * コミュニティ参加要請情報をIDから取得
  1267. *
  1268. * @param int $c_commu_member_confirm_id
  1269. * @return array
  1270. * c_commu_member_confirm.*,
  1271. * c_member_id_admin
  1272. */
  1273. function db_commu_c_commu_member_confirm4c_commu_member_confirm_id($c_commu_member_confirm_id)
  1274. {
  1275. $sql = "SELECT cmc.*, c.c_member_id_admin, c.c_member_id_sub_admin";
  1276. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  1277. $sql .= " WHERE cmc.c_commu_member_confirm_id=?";
  1278. $sql .= " AND cmc.c_commu_id=c.c_commu_id";
  1279. $params = array(intval($c_commu_member_confirm_id));
  1280. return db_get_row($sql, $params);
  1281. }
  1282. //TODO:constant
  1283. define('STATUS_C_JOIN_REQUEST_FREE', "1"); //コミュニティ参加(承認必要なし)
  1284. define('STATUS_C_JOIN_REQUEST_NEED', "2"); //コミュニティ参加(承認必要)
  1285. define('STATUS_C_JOIN_WAIT', "3"); //コミュニティ参加(承認待ち)
  1286. define('STATUS_C_JOIN_ALREADY', "4"); //コミュニティ参加(既に参加)
  1287. function db_commu_get_c_join_status($c_member_id,$c_commu_id)
  1288. {
  1289. if (db_commu_is_c_commu_member($c_commu_id, $c_member_id)) {
  1290. return STATUS_C_JOIN_ALREADY;
  1291. }
  1292. $c_commu = db_commu_c_commu4c_commu_id($c_commu_id);
  1293. if ($c_commu['is_admit'] == "public") {
  1294. return STATUS_C_JOIN_REQUEST_FREE;
  1295. }
  1296. if (db_commu_is_c_commu_join_wait($c_commu_id, $c_member_id)) {
  1297. return STATUS_C_JOIN_WAIT;
  1298. }
  1299. return STATUS_C_JOIN_REQUEST_NEED;
  1300. }
  1301. /**
  1302. * トピックコメントIDからトピックを得る
  1303. */
  1304. function db_commu_c_commu_topic_comment4c_commu_topic_comment_id_2($c_commu_topic_comment_id)
  1305. {
  1306. $sql = 'SELECT * FROM c_commu_topic_comment WHERE c_commu_topic_comment_id = ?';
  1307. $params = array(intval($c_commu_topic_comment_id));
  1308. return db_get_row($sql, $params);
  1309. }
  1310. /**
  1311. * トピック情報取得
  1312. *
  1313. * @param int $c_commu_topic_id
  1314. * @return array $c_commu_topic
  1315. */
  1316. function db_commu_c_commu_topic4c_commu_topic_id_2($c_commu_topic_id, $c_member_id)
  1317. {
  1318. $sql = "SELECT * FROM c_commu_topic WHERE c_commu_topic_id = ?";
  1319. $params = array(intval($c_commu_topic_id));
  1320. $one = db_get_row($sql, $params);
  1321. if ($one['c_member_id'] == $c_member_id) {
  1322. $one['is_c_commu_topic_admin'] = true;
  1323. }
  1324. return $one;
  1325. }
  1326. function db_commu_c_commu_list_lastupdate4c_member_id($c_member_id, $limit)
  1327. {
  1328. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  1329. if (!$is_recurred) { //function cacheのために再帰処理を行う
  1330. $is_recurred = true;
  1331. $funcargs = func_get_args();
  1332. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
  1333. $is_recurred = false;
  1334. return $result;
  1335. }
  1336. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1337. $sql = 'SELECT DISTINCT c.*, RANDOM() FROM c_commu_member AS cm, c_commu AS c' .
  1338. ' WHERE cm.c_member_id = ? AND c.c_commu_id = cm.c_commu_id';
  1339. } else {
  1340. $sql = 'SELECT DISTINCT c.* FROM c_commu_member AS cm, c_commu AS c' .
  1341. ' WHERE cm.c_member_id = ? AND c.c_commu_id = cm.c_commu_id';
  1342. }
  1343. $sql .= db_order_by_rand();
  1344. $params = array(intval($c_member_id));
  1345. $c_commu_list = db_get_all_limit($sql, 0, $limit, $params);
  1346. foreach ($c_commu_list as $key => $value) {
  1347. $c_commu_list[$key]['count_members'] =
  1348. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  1349. }
  1350. return $c_commu_list;
  1351. }
  1352. /**
  1353. * 参加不参加にかかわらず、最新書き込みのあったコミュニティリストを取得
  1354. */
  1355. function db_commu_c_commu_list_lastupdated($limit = 5)
  1356. {
  1357. $sql = "SELECT c_commu_id, MAX(r_datetime) as updatetime" .
  1358. " FROM c_commu_topic_comment" .
  1359. " GROUP BY c_commu_id" .
  1360. " ORDER BY updatetime DESC";
  1361. $comments = db_get_all_limit($sql, 0, $limit);
  1362. $c_commu_list = array();
  1363. foreach ($comments as $comment) {
  1364. $c_commu = db_commu_c_commu4c_commu_id($comment['c_commu_id']);
  1365. $c_commu['updatetime'] = $comment['updatetime'];
  1366. $c_commu_list[] = $c_commu;
  1367. }
  1368. return $c_commu_list;
  1369. }
  1370. /**
  1371. * トピック名を取得
  1372. */
  1373. function db_commu_c_commu_topic_name4c_commu_topic_id($c_commu_topic_id)
  1374. {
  1375. $sql = "SELECT name FROM c_commu_topic WHERE c_commu_topic_id = ?";
  1376. $params = array(intval($c_commu_topic_id));
  1377. return db_get_one($sql, $params);
  1378. }
  1379. /**
  1380. * トピックIDからコミュニティIDと名前を取得
  1381. */
  1382. function db_commu_c_commu4c_commu_topic_id($c_commu_topic_id)
  1383. {
  1384. $sql = "SELECT cc.c_commu_id , cc.name FROM c_commu_topic AS cct, c_commu AS cc ";
  1385. $sql .= " WHERE cct.c_commu_topic_id = ?";
  1386. $sql .= " AND cc.c_commu_id = cct.c_commu_id ";
  1387. $params = array(intval($c_commu_topic_id));
  1388. return db_get_row($sql, $params);
  1389. }
  1390. /**
  1391. * 指定したメンバーがコミュニティ管理者かどうかを判定
  1392. */
  1393. function db_commu_is_admin4c_member_id_c_commu_topic_id($c_member_id, $c_commu_topic_id)
  1394. {
  1395. $c_commu = db_commu_c_commu4c_commu_topic_id($c_commu_topic_id);
  1396. $c_commu_id = $c_commu['c_commu_id'];
  1397. return db_commu_is_c_commu_admin($c_commu['c_commu_id'], $c_member_id);
  1398. }
  1399. /**
  1400. * コミュニティの管理者(ID, nickname)を取得
  1401. */
  1402. function db_commu_c_member_admin4c_commu_topic_id($c_commu_topic_id)
  1403. {
  1404. $c_commu = db_commu_c_commu4c_commu_topic_id($c_commu_topic_id);
  1405. $c_commu_id = $c_commu['c_commu_id'];
  1406. $sql = "SELECT c_member_id_admin , nickname";
  1407. $sql .= " FROM c_commu, c_member";
  1408. $sql .= " WHERE c_commu_id=?".
  1409. " AND c_member_id=c_member_id_admin";
  1410. $params = array(intval($c_commu_id));
  1411. return db_get_row($sql, $params);
  1412. }
  1413. /**
  1414. * 参加コミュニティリストを取得
  1415. * 範囲を指定できる
  1416. * IDが新しいもの順
  1417. */
  1418. function db_commu_c_commu_list4c_member_id_4($c_member_id, $page_size, $page)
  1419. {
  1420. $sql = "SELECT name, c_commu.c_commu_id FROM c_commu_member , c_commu";
  1421. $sql .= " WHERE c_commu_member.c_member_id = ?";
  1422. $sql .= " AND c_commu.c_commu_id=c_commu_member.c_commu_id";
  1423. $sql .= " ORDER BY c_commu.c_commu_id DESC ";
  1424. $params = array(intval($c_member_id));
  1425. $c_commu_list = db_get_all_page($sql, $page, $page_size, $params);
  1426. foreach ($c_commu_list as $key => $value) {
  1427. $c_commu_list[$key]['count_members'] =
  1428. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  1429. }
  1430. $total_num = db_commu_count_c_commu4c_member_id($c_member_id);
  1431. if ($total_num != 0) {
  1432. $total_page_num = ceil($total_num / $page_size);
  1433. if ($page >= $total_page_num) {
  1434. $next = false;
  1435. } else {
  1436. $next = true;
  1437. }
  1438. if ($page <= 1) {
  1439. $prev = false;
  1440. } else {
  1441. $prev = true;
  1442. }
  1443. }
  1444. return array($c_commu_list , $prev , $next, $total_num);
  1445. }
  1446. /**
  1447. * メンバーIDのメンバーと、コミュニティIDのコミュニティの関係を返す
  1448. */
  1449. function db_commu_relationship_between_member_commu($c_commu_id, $c_member_id)
  1450. {
  1451. $relation = array(
  1452. 'join' => false,
  1453. 'wait' => false
  1454. );
  1455. //参加承認待ちかどうかをチェック
  1456. $sql = "SELECT COUNT(*) ";
  1457. $sql .= "FROM c_commu_member_confirm ";
  1458. $sql .= "WHERE c_commu_id = ? AND c_member_id = ?";
  1459. $params = array(intval($c_commu_id), intval($c_member_id));
  1460. if (db_get_one($sql, $params)) {
  1461. //承認待ちなら
  1462. $relation['wait'] = true;
  1463. return $relation;
  1464. }
  1465. //参加してるかどうかチェック
  1466. $sql = "SELECT COUNT(*) ";
  1467. $sql .= "FROM c_commu_member ";
  1468. $sql .= "WHERE c_commu_id = ? AND c_member_id = ?";
  1469. $params = array(intval($c_commu_id), intval($c_member_id));
  1470. if (db_get_one($sql, $params)) {
  1471. //参加なら
  1472. $relation['join'] = true;
  1473. }
  1474. return $relation;
  1475. }
  1476. /**
  1477. * コミュニティのメンバーリストをランダムに取得
  1478. */
  1479. function db_commu_c_commu_member_list_random4c_commu_id($c_commu_id, $limit)
  1480. {
  1481. static $is_recurred = false; //再帰処理中かどうかの判定フラグ
  1482. if (!$is_recurred) { //function cacheのために再帰処理を行う
  1483. $is_recurred = true;
  1484. $funcargs = func_get_args();
  1485. $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
  1486. $is_recurred = false;
  1487. return $result;
  1488. }
  1489. $sql = "SELECT cm.c_member_id, cm.nickname ";
  1490. $sql .= "FROM c_member AS cm , c_commu_member AS ccm ";
  1491. $sql .= "WHERE ccm.c_commu_id = ?" .
  1492. " AND ccm.c_member_id = cm.c_member_id";
  1493. $sql .= db_order_by_rand();
  1494. $params = array(intval($c_commu_id));
  1495. $c_commu_member_list = db_get_all_limit($sql, 0, $limit, $params);
  1496. foreach ($c_commu_member_list as $key => $value) {
  1497. $c_commu_member_list[$key]['count_friend'] =
  1498. db_friend_count_friends($value['c_member_id']);
  1499. }
  1500. return $c_commu_member_list;
  1501. }
  1502. /**
  1503. * コミュニティメンバーのリストをID新しいもの順に取得する。
  1504. * 取得する範囲を指定できる。
  1505. */
  1506. function db_commu_c_members_disp4c_commu_id($c_commu_id, $page_size, $page)
  1507. {
  1508. $sql = 'SELECT c_member.c_member_id, nickname '
  1509. . ' FROM c_member, c_commu_member'
  1510. . ' WHERE c_member.c_member_id = c_commu_member.c_member_id' .
  1511. ' AND c_commu_member.c_commu_id = ?'.
  1512. ' ORDER BY c_member.c_member_id DESC';
  1513. $params = array(intval($c_commu_id));
  1514. $list = db_get_all_page($sql, $page, $page_size, $params);
  1515. foreach ($list as $key => $value) {
  1516. $list[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
  1517. }
  1518. $total_num = db_commu_count_c_commu_member_list4c_commu_id($c_commu_id);
  1519. if ($total_num != 0) {
  1520. $total_page_num = ceil($total_num / $page_size);
  1521. if ($page >= $total_page_num) {
  1522. $next = false;
  1523. } else {
  1524. $next = true;
  1525. }
  1526. if ($page <= 1) {
  1527. $prev = false;
  1528. } else {
  1529. $prev = true;
  1530. }
  1531. }
  1532. return array($list , $prev , $next);
  1533. }
  1534. /**
  1535. * Myフレンドから指定コミュに参加していない人をランダムに選ぶ
  1536. */
  1537. function db_commu_c_friend_list_random4c_member_id4c_commu_id($c_member_id, $c_commu_id, $limit)
  1538. {
  1539. //友達リスト
  1540. $friend_list = db_friend_c_member_id_list($c_member_id);
  1541. //参加者リスト
  1542. $sql = "SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?";
  1543. $params = array(intval($c_commu_id));
  1544. $member_list = db_get_col($sql, $params);
  1545. //友達リストから参加者リストを引く
  1546. $result = array_diff($friend_list, $member_list);
  1547. if (!$result) {
  1548. return array();
  1549. }
  1550. $result = implode(',', array_map('intval', $result));
  1551. $sql = 'SELECT c_member_id, nickname FROM c_member' .
  1552. ' WHERE c_member_id IN ( '. $result . ') ' .
  1553. db_order_by_rand();
  1554. return db_get_all_limit($sql, 0, $limit);
  1555. }
  1556. /**
  1557. * 参加コミュニティ新着書き込みリスト取得
  1558. */
  1559. function db_commu_c_commu_topic_comment_list4c_member_id_3($c_member_id, $page_size, $page)
  1560. {
  1561. $sql = 'SELECT c_commu_id FROM c_commu_member WHERE c_member_id = ?';
  1562. $c_commu_id_list = db_get_col($sql, array(intval($c_member_id)));
  1563. if (!$c_commu_id_list) {
  1564. return array();
  1565. }
  1566. $ids = implode(", ", $c_commu_id_list);
  1567. $hint = db_mysql_hint('USE INDEX (r_datetime_c_commu_id)');
  1568. $sql = 'SELECT c_commu_id, c_commu_topic_id, name AS c_commu_topic_name, r_datetime, c_member_id'.
  1569. ' FROM c_commu_topic'. $hint . ' WHERE c_commu_id IN (' . $ids . ') ORDER BY r_datetime DESC';
  1570. $c_commu_topic_list = db_get_all_page($sql, $page, $page_size);
  1571. foreach ($c_commu_topic_list as $key => $value) {
  1572. $sql = 'SELECT name AS c_commu_name FROM c_commu WHERE c_commu_id = ?';
  1573. $c_commu_name = db_get_one($sql, $value['c_commu_id']);
  1574. $c_commu_topic_list[$key]['number'] = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  1575. $c_commu_topic_list[$key]['c_commu_name'] = $c_commu_name;
  1576. }
  1577. $sql = "SELECT count(*) ";
  1578. $sql .= " FROM c_commu_member AS cm";
  1579. $sql .= ", c_commu AS c, c_commu_topic AS ct";
  1580. $sql .= " WHERE cm.c_member_id = ?";
  1581. $sql .= " AND c.c_commu_id = cm.c_commu_id";
  1582. $sql .= " AND ct.c_commu_id = cm.c_commu_id";
  1583. $params = array(intval($c_member_id));
  1584. $total_num = db_get_one($sql, $params);
  1585. if ($total_num != 0) {
  1586. $total_page_num = ceil($total_num / $page_size);
  1587. if ($page >= $total_page_num) {
  1588. $next = false;
  1589. } else {
  1590. $next = true;
  1591. }
  1592. if ($page <= 1) {
  1593. $prev = false;
  1594. } else {
  1595. $prev = true;
  1596. }
  1597. }
  1598. return array($c_commu_topic_list, $prev, $next, $total_num);
  1599. }
  1600. /**
  1601. * あなたに(の)管理コミュニティに参加を希望しているメンバー(参加承認待ち)
  1602. *
  1603. * @param int $c_member_id : 要請されている方(あなた=管理者)
  1604. * @return array_of_array
  1605. * c_commu_member_confirm.*
  1606. * c_commu_name : コミュニティの名前
  1607. * nickname : 要請している人の名前
  1608. * message_disp : 表示用メッセージ
  1609. */
  1610. function db_commu_anatani_c_commu_member_confirm_list4c_member_id_2($c_member_id)
  1611. {
  1612. $sql = "SELECT cmc.*, c.name AS c_commu_name";
  1613. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  1614. $sql .= " WHERE (c.c_member_id_admin = ? OR c.c_member_id_sub_admin = ?" .
  1615. " AND cmc.c_commu_id=c.c_commu_id";
  1616. $params = array(intval($c_member_id), intval($c_member_id));
  1617. $c_commu_member_confirm_list = db_get_all($sql, $params);
  1618. foreach ($c_commu_member_confirm_list as $key => $value) {
  1619. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  1620. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  1621. }
  1622. return $c_commu_member_confirm_list;
  1623. }
  1624. /**
  1625. * あなたがコミュニティ参加要請しているコミュニティ(参加要請中)
  1626. *
  1627. * @param int $c_member_id : 要請している方(あなた)
  1628. * @return array_of_array
  1629. * c_commu_member_confirm.*,
  1630. * c_commu_name : コミュニティの名前
  1631. * c_member_id_admin : 管理者のメンバーID
  1632. * nickname : 管理者の名前
  1633. */
  1634. function db_commu_anataga_c_commu_member_confirm_list4c_member_id_2($c_member_id)
  1635. {
  1636. $sql = "SELECT cmc.*, c.name AS c_commu_name, c.c_member_id_admin";
  1637. $sql .= " FROM c_commu_member_confirm AS cmc, c_commu AS c";
  1638. $sql .= " WHERE cmc.c_member_id = ?" .
  1639. " AND cmc.c_commu_id = c.c_commu_id";
  1640. $params = array(intval($c_member_id));
  1641. $c_commu_member_confirm_list = db_get_all($sql, $params);
  1642. foreach ($c_commu_member_confirm_list as $key => $value) {
  1643. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_admin']);
  1644. $c_commu_member_confirm_list[$key]['nickname'] = $c_member['nickname'];
  1645. }
  1646. return $c_commu_member_confirm_list;
  1647. }
  1648. /**
  1649. * トピックIDからトピック情報を取得
  1650. *
  1651. * @param int c_commu_topic_id
  1652. * @return array_of_array c_commu_topic.*, commu_name
  1653. */
  1654. function db_commu_c_commu_topic4c_commu_topic_id_3($c_commu_topic_id)
  1655. {
  1656. $sql = "SELECT t.*, c.name AS commu_name" .
  1657. " FROM c_commu_topic AS t, c_commu AS c" .
  1658. " WHERE t.c_commu_topic_id = ?" .
  1659. " AND c.c_commu_id = t.c_commu_id";
  1660. $params = array(intval($c_commu_topic_id));
  1661. return db_get_row($sql, $params);
  1662. }
  1663. ///
  1664. //// c_commu_category
  1665. function db_commu_c_commu_category4null()
  1666. {
  1667. $sql = 'SELECT cat.* FROM c_commu_category AS cat' .
  1668. ' INNER JOIN c_commu_category_parent AS pcat' .
  1669. ' USING (c_commu_category_parent_id)' .
  1670. ' ORDER BY pcat.sort_order, cat.sort_order';
  1671. return db_get_all($sql);
  1672. }
  1673. // 作成可能なコミュニティカテゴリリストを取得
  1674. function db_commu_c_commu_category4is_create_commu()
  1675. {
  1676. $is_create_commu = 1;
  1677. $sql = 'SELECT cat.* FROM c_commu_category AS cat'
  1678. . ' INNER JOIN c_commu_category_parent AS pcat'
  1679. . ' USING (c_commu_category_parent_id)'
  1680. . ' WHERE cat.is_create_commu = ?'
  1681. . ' ORDER BY pcat.sort_order, cat.sort_order';
  1682. $params = array($is_create_commu);
  1683. return db_get_all($sql,$params);
  1684. }
  1685. function db_commu_c_commu_category_list4null()
  1686. {
  1687. $list = db_commu_c_commu_category4null();
  1688. // カテゴリごとのコミュニティ数を取得
  1689. $sql = 'SELECT c_commu_category_id, COUNT(*) as count FROM c_commu'
  1690. . ' GROUP BY c_commu_category_id';
  1691. $counts = db_get_assoc($sql);
  1692. $c_commu_category_list = array();
  1693. foreach ($list as $item) {
  1694. $item['count_commu_category'] = intval($counts[$item['c_commu_category_id']]);
  1695. $c_commu_category_list[$item['c_commu_category_parent_id']][] = $item;
  1696. }
  1697. return $c_commu_category_list;
  1698. }
  1699. /**
  1700. * コミュニティを作成できるカテゴリかどうか
  1701. *
  1702. * @param int $c_commu_category_id
  1703. * @return bool
  1704. */
  1705. function db_commu_c_commu_category_is_create_flag($c_commu_category_id)
  1706. {
  1707. return db_commu_c_commu_category_is_create_commu($c_commu_category_id);
  1708. }
  1709. function db_commu_c_commu_category_is_create_commu($c_commu_category_id)
  1710. {
  1711. $sql = 'SELECT is_create_commu FROM c_commu_category'
  1712. . ' WHERE c_commu_category_id = ?';
  1713. $params = array(intval($c_commu_category_id));
  1714. return db_get_one($sql, $params);
  1715. }
  1716. /**
  1717. * 中カテゴリリストを取得
  1718. *
  1719. * @return array 中カテゴリリスト
  1720. */
  1721. function db_commu_c_commu_category_parent_list4null()
  1722. {
  1723. $hint = db_mysql_hint('FORCE INDEX (sort_order)');
  1724. $sql = 'SELECT * FROM c_commu_category_parent' . $hint . ' ORDER BY sort_order';
  1725. return db_get_all($sql);
  1726. }
  1727. /**
  1728. * カテゴリ情報をIDから取得
  1729. */
  1730. function db_commu_get_c_commu_category4id($c_commu_category_id)
  1731. {
  1732. $sql = 'SELECT * FROM c_commu_category WHERE c_commu_category_id = ?';
  1733. $params = array(intval($c_commu_category_id));
  1734. return db_get_row($sql, $params);
  1735. }
  1736. /**
  1737. * コミュニティの小カテゴリIDから小カテゴリ名を得る
  1738. */
  1739. function db_commu_c_commu_category_name4c_commu_category_id($c_commu_category_id)
  1740. {
  1741. $sql = 'SELECT name FROM c_commu_category WHERE c_commu_category_id = ?';
  1742. $params = array(intval($c_commu_category_id));
  1743. return db_get_one($sql, $params);
  1744. }
  1745. function db_commu_c_commu_category_parent_id4c_commu_category_id($c_commu_category_id)
  1746. {
  1747. $cat = db_commu_get_c_commu_category4id($c_commu_category_id);
  1748. return $cat['c_commu_category_parent_id'];
  1749. }
  1750. function db_commu_search_c_commu4c_commu_category(
  1751. $search_word,
  1752. $c_commu_category_parent_id,
  1753. $page_size,
  1754. $page,
  1755. $val_order = 'r_datetime',
  1756. $c_commu_category_id = 0)
  1757. {
  1758. $select = 'SELECT c_commu.*';
  1759. $wheres = array();
  1760. $params = array();
  1761. if ($c_commu_category_id) {
  1762. $wheres[] = 'c_commu.c_commu_category_id = ?';
  1763. $params[] = $c_commu_category_id;
  1764. }
  1765. if ($search_word) {
  1766. $words = explode(' ', $search_word);
  1767. foreach ($words as $word) {
  1768. $word = check_search_word($word);
  1769. $wheres[] = '(c_commu.name LIKE ? OR c_commu.info LIKE ?)';
  1770. $params[] = '%'.$word.'%';
  1771. $params[] = '%'.$word.'%';
  1772. }
  1773. }
  1774. if ($wheres) {
  1775. $where = ' WHERE ' . implode(' AND ', $wheres);
  1776. } else {
  1777. $where = '';
  1778. }
  1779. switch ($val_order) {
  1780. case 'r_datetime':
  1781. default:
  1782. $from = ' FROM c_commu';
  1783. $order = ' ORDER BY c_commu.r_datetime DESC';
  1784. $sql = $select.$from.$where.$order;
  1785. break;
  1786. case 'count':
  1787. $from = ' FROM c_commu, c_commu_member';
  1788. $order = ' ORDER BY count_commu_member DESC';
  1789. if ($where) {
  1790. $count_where = $where . ' AND';
  1791. } else {
  1792. $count_where = ' WHERE';
  1793. }
  1794. $count_where .= ' c_commu_member.c_commu_id = c_commu.c_commu_id';
  1795. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1796. $sub_tbl = ' (' .
  1797. 'SELECT c_commu_member.c_commu_id, count(c_commu_member.c_commu_member_id) as count_commu_member' .
  1798. $from .
  1799. $count_where .
  1800. ' GROUP BY c_commu_member.c_commu_id' .
  1801. ') as sub_commu_tbl';
  1802. $sql = $select .
  1803. ' FROM' . $sub_tbl . ', c_commu' .
  1804. ' WHERE c_commu.c_commu_id = sub_commu_tbl.c_commu_id' .
  1805. $order;
  1806. } else {
  1807. $group = ' GROUP BY c_commu_member.c_commu_id';
  1808. $sql = $select . ', COUNT(c_commu_member.c_member_id) AS count_commu_member' .
  1809. $from .
  1810. $count_where .
  1811. $group .
  1812. $order;
  1813. }
  1814. break;
  1815. }
  1816. $list = db_get_all_page($sql, $page, $page_size, $params);
  1817. foreach ($list as $key => $value) {
  1818. $sql = 'SELECT name FROM c_commu_category WHERE c_commu_category_id = ?';
  1819. $p2 = array(intval($value['c_commu_category_id']));
  1820. $list[$key]['c_commu_category_name'] = db_get_one($sql, $p2);
  1821. if (!isset($value['count_commu_member'])) {
  1822. $list[$key]['count_commu_member'] =
  1823. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  1824. }
  1825. }
  1826. $sql = 'SELECT COUNT(*) FROM c_commu' . $where;
  1827. $total_num = db_get_one($sql, $params);
  1828. if ($total_num != 0) {
  1829. $total_page_num = ceil($total_num / $page_size);
  1830. if ($page >= $total_page_num) {
  1831. $next = false;
  1832. } else {
  1833. $next = true;
  1834. }
  1835. if ($page <= 1) {
  1836. $prev = false;
  1837. } else {
  1838. $prev = true;
  1839. }
  1840. }
  1841. $start_num = ($page - 1) * $page_size + 1;
  1842. $end_num = $start_num + $page_size >= $total_num ? $total_num : $start_num + $page_size - 1;
  1843. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  1844. }
  1845. function db_commu_c_commu_list4c_commu_category_id_search($c_commu_category_id, $page_size, $page, $search_word)
  1846. {
  1847. $sql = 'SELECT * FROM c_commu';
  1848. $wheres = array();
  1849. $params = array();
  1850. if ($search_word) {
  1851. $wheres[] = '(name LIKE ? OR info LIKE ?)';
  1852. $params[] = '%'.$search_word.'%';
  1853. $params[] = '%'.$search_word.'%';
  1854. }
  1855. if ($c_commu_category_id != 'all' && $c_commu_category_id) {
  1856. $wheres[] = 'c_commu_category_id = ?';
  1857. $params[] = intval($c_commu_category_id);
  1858. }
  1859. if ($wheres) {
  1860. $where = ' WHERE ' . implode(' AND ', $wheres);
  1861. } else {
  1862. $where = '';
  1863. }
  1864. $sql .= $where . ' ORDER BY r_datetime DESC';
  1865. $list = db_get_all_page($sql, $page, $page_size, $params);
  1866. foreach ($list as $key => $value) {
  1867. $list[$key]['count_commu_member'] =
  1868. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  1869. }
  1870. $sql = 'SELECT COUNT(*) FROM c_commu' . $where;
  1871. $total_num = db_get_one($sql, $params);
  1872. if ($total_num != 0) {
  1873. $total_page_num = ceil($total_num / $page_size);
  1874. if ($page >= $total_page_num) {
  1875. $next = false;
  1876. } else {
  1877. $next = true;
  1878. }
  1879. if ($page <= 1) {
  1880. $prev = false;
  1881. } else {
  1882. $prev = true;
  1883. }
  1884. }
  1885. return array($list, $prev, $next, $total_num);
  1886. }
  1887. ///
  1888. function db_commu_is_c_event_admin($c_commu_topic_id, $c_member_id)
  1889. {
  1890. $sql = 'SELECT c_member_id FROM c_commu_topic' .
  1891. ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
  1892. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  1893. return (bool)db_get_one($sql, $params);
  1894. }
  1895. function db_commu_is_c_event_member($c_commu_topic_id, $c_member_id)
  1896. {
  1897. $sql = 'SELECT c_event_member_id FROM c_event_member' .
  1898. ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
  1899. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  1900. return (bool)db_get_one($sql, $params);
  1901. }
  1902. function db_commu_c_topic4c_commu_topic_id_2($c_commu_topic_id)
  1903. {
  1904. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1905. $sql = "SELECT cct.*, cctc.*, cm.nickname, cpp.pref, case when cct.invite_period = '0001-01-01 BC' THEN '0000-00-00' ELSE to_char(cct.invite_period,'YYYY-MM-DD') END as invite_period" .
  1906. " FROM c_commu_topic as cct" .
  1907. " LEFT JOIN c_commu_topic_comment as cctc ON cct.c_commu_topic_id = cctc.c_commu_topic_id" .
  1908. " LEFT JOIN c_member as cm ON cct.c_member_id = cm.c_member_id" .
  1909. " LEFT JOIN c_profile_pref as cpp ON cct.open_pref_id = cpp.c_profile_pref_id" .
  1910. " WHERE cct.c_commu_topic_id = ?".
  1911. " AND cctc.number = 0";
  1912. } else {
  1913. $sql = "SELECT cct.*, cctc.*, cm.nickname, cpp.pref" .
  1914. " FROM c_commu_topic as cct" .
  1915. " LEFT JOIN c_commu_topic_comment as cctc ON cct.c_commu_topic_id = cctc.c_commu_topic_id" .
  1916. " LEFT JOIN c_member as cm ON cct.c_member_id = cm.c_member_id" .
  1917. " LEFT JOIN c_profile_pref as cpp ON cct.open_pref_id = cpp.c_profile_pref_id" .
  1918. " WHERE cct.c_commu_topic_id = ?".
  1919. " AND cctc.number = 0";
  1920. }
  1921. $params = array(intval($c_commu_topic_id));
  1922. $lst = db_get_row($sql, $params);
  1923. $sql = "SELECT COUNT(*) FROM c_event_member" .
  1924. " WHERE c_commu_topic_id = ?";
  1925. $lst['member_num'] = db_get_one($sql, $params);
  1926. return $lst;
  1927. }
  1928. function db_commu_c_topic_write4c_commu_topic_id($c_commu_topic_id, $page, $page_size, $desc = true)
  1929. {
  1930. $sql = 'SELECT ctc.*, c_member.nickname FROM c_commu_topic_comment AS ctc'
  1931. . ' LEFT JOIN c_member USING (c_member_id)'
  1932. . ' WHERE ctc.c_commu_topic_id = ? AND ctc.number <> 0 ORDER BY ctc.r_datetime';
  1933. if ($desc) {
  1934. $sql .= ' DESC';
  1935. }
  1936. $params = array(intval($c_commu_topic_id));
  1937. $lst = db_get_all_page($sql, $page, $page_size, $params);
  1938. $sql = 'SELECT count(c_commu_topic_comment_id) - 1 FROM c_commu_topic_comment'
  1939. . ' WHERE c_commu_topic_id = ?';
  1940. $total_num = db_get_one($sql, $params);
  1941. if ($total_num != 0) {
  1942. $total_page_num = ceil($total_num / $page_size);
  1943. if ($page >= $total_page_num) {
  1944. $is_next = false;
  1945. } else {
  1946. $is_next = true;
  1947. }
  1948. if ($page <= 1) {
  1949. $is_prev = false;
  1950. } else {
  1951. $is_prev = true;
  1952. }
  1953. }
  1954. if ($desc) {
  1955. $lst = array_reverse($lst);
  1956. }
  1957. $start = reset($lst);
  1958. $end = end($lst);
  1959. if ($is_prev) {
  1960. if ($desc) {
  1961. $page_next = $page - 1;
  1962. } else {
  1963. $page_prev = $page - 1;
  1964. }
  1965. }
  1966. if ($is_next) {
  1967. if ($desc) {
  1968. $page_prev = $page + 1;
  1969. } else {
  1970. $page_next = $page + 1;
  1971. }
  1972. }
  1973. $pager = array(
  1974. 'total_num' => $total_num,
  1975. 'total_page_num' => $total_page_num,
  1976. 'start_num' => $start['number'],
  1977. 'end_num' => $end['number'],
  1978. 'is_prev' => $is_prev,
  1979. 'is_next' => $is_next,
  1980. 'page_prev' => $page_prev,
  1981. 'page_next' => $page_next,
  1982. );
  1983. return array($lst, $pager);
  1984. }
  1985. function db_commu_c_commu_topic_comment4c_commu_topic_comment_id_3($c_commu_topic_comment_id)
  1986. {
  1987. $sql = "SELECT tc.*,cm.nickname FROM c_commu_topic_comment AS tc " .
  1988. " LEFT JOIN c_member as cm ON cm.c_member_id = tc.c_member_id " .
  1989. " WHERE tc.c_commu_topic_comment_id = ?";
  1990. $params = array(intval($c_commu_topic_comment_id));
  1991. return db_get_row($sql, $params);
  1992. }
  1993. function db_commu_c_event_member_list4c_commu_topic_id($c_commu_topic_id, $page, $page_size)
  1994. {
  1995. $sql = "SELECT cm.* FROM c_member as cm, c_event_member as cem" .
  1996. " WHERE cm.c_member_id = cem.c_member_id" .
  1997. " AND cem.c_commu_topic_id = ?";
  1998. $params = array(intval($c_commu_topic_id));
  1999. return db_get_all_page($sql, $page, $page_size, $params);
  2000. }
  2001. function db_commu_count_c_event_member_list4c_commu_topic_id($c_commu_topic_id)
  2002. {
  2003. $sql = "SELECT COUNT(*) FROM c_member as cm, c_event_member as cem" .
  2004. " WHERE cm.c_member_id = cem.c_member_id" .
  2005. " AND cem.c_commu_topic_id = ?";
  2006. $params = array(intval($c_commu_topic_id));
  2007. return db_get_one($sql, $params);
  2008. }
  2009. function db_commu_c_event_mail_list4c_commu_topic_id($c_commu_topic_id, $excepted_id = 0)
  2010. {
  2011. $sql = 'SELECT c_member_id FROM c_event_member WHERE c_commu_topic_id = ?';
  2012. $params = array(intval($c_commu_topic_id));
  2013. $list = db_get_col($sql, $params);
  2014. $result = array();
  2015. foreach ($list as $c_member_id) {
  2016. if ($c_member_id != $excepted_id) {
  2017. $result[] = db_member_c_member4c_member_id_LIGHT($c_member_id);
  2018. }
  2019. }
  2020. return $result;
  2021. }
  2022. function db_commu_c_event_mail_confirm_list4c_member_ids($c_member_ids)
  2023. {
  2024. if (!$c_member_ids) {
  2025. return array();
  2026. }
  2027. $c_member_id_str = implode(',', array_map('intval', $c_member_ids));
  2028. $sql = "SELECT * FROM c_member" .
  2029. " WHERE c_member_id IN (".$c_member_id_str.")";
  2030. return db_get_all($sql);
  2031. }
  2032. function db_commu_year4null()
  2033. {
  2034. $y = date('Y');
  2035. return array($y, $y+1);
  2036. }
  2037. function db_commu_is_c_event_member_2($c_commu_topic_id, $c_member_id)
  2038. {
  2039. $sql = "SELECT COUNT(*) FROM c_event_member" .
  2040. " WHERE c_commu_topic_id = ?".
  2041. " AND c_member_id = ?";
  2042. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  2043. return db_get_one($sql, $params);
  2044. }
  2045. function db_commu_event4c_member_id($year, $month, $day, $c_member_id)
  2046. {
  2047. $sql = 'SELECT c_commu_id FROM c_commu_member WHERE c_member_id = ?';
  2048. $params = array(intval($c_member_id));
  2049. $ids = db_get_col($sql, $params);
  2050. $ids = implode(", ", $ids);
  2051. if (!$ids) {
  2052. return array();
  2053. }
  2054. $today = sprintf("%04d-%02d-%02d", $year, $month, $day);
  2055. $sql = "SELECT * FROM c_commu_topic" .
  2056. " WHERE c_commu_id IN ($ids)" .
  2057. " AND event_flag = 1" .
  2058. " AND open_date = ?";
  2059. $params = array($today);
  2060. $list = db_get_all($sql, $params);
  2061. foreach ($list as $key => $item) {
  2062. $list[$key]['is_join'] = db_commu_is_c_event_member_2($item['c_commu_topic_id'], $c_member_id);
  2063. }
  2064. return $list;
  2065. }
  2066. function db_commu_c_event_member_list4c_commu_topic_id_2($c_commu_topic_id, $page_size, $page)
  2067. {
  2068. $sql = "SELECT cm.* FROM c_member AS cm, c_event_member AS cem" .
  2069. " WHERE cm.c_member_id = cem.c_member_id " .
  2070. " AND cem.c_commu_topic_id = ?";
  2071. $params = array(intval($c_commu_topic_id));
  2072. $list[0] = db_get_all_page($sql, $page, $page_size, $params);
  2073. $total_c_event_member = db_commu_count_c_event_member_list4c_commu_topic_id_2($c_commu_topic_id);
  2074. $start_num = ($page-1) * $page_size + 1;
  2075. $end_num = $page * $page_size;
  2076. if ($end_num > $total_c_event_member) {
  2077. $end_num = $total_c_event_member;
  2078. }
  2079. $end_page = ceil($total_c_event_member / $page_size);
  2080. $list[1] = ($start_num != 1);
  2081. $list[2] = ($end_num != $total_c_event_member);
  2082. return $list;
  2083. }
  2084. function db_commu_count_c_event_member_list4c_commu_topic_id_2($c_commu_topic_id)
  2085. {
  2086. $sql = "SELECT COUNT(*) FROM c_member AS cm, c_event_member AS cem" .
  2087. " WHERE cm.c_member_id = cem.c_member_id" .
  2088. " AND cem.c_commu_topic_id = ?";
  2089. $params = array(intval($c_commu_topic_id));
  2090. return db_get_one($sql, $params);
  2091. }
  2092. /**
  2093. * 非公開コミュニティへの承認なし参加フラグが立っているかどうか
  2094. */
  2095. function db_commu_c_commu4c_admin_invite_id($c_commu_id, $c_member_id_to)
  2096. {
  2097. // すでにフラグが立っている
  2098. $sql = 'SELECT c_commu_admin_invite_id FROM c_commu_admin_invite' .
  2099. ' WHERE c_commu_id = ? AND c_member_id_to = ?';
  2100. $params = array(intval($c_commu_id), intval($c_member_id_to));
  2101. $result = db_get_one($sql, $params);
  2102. if ($result) {
  2103. return $result;
  2104. } else {
  2105. return false;
  2106. }
  2107. }
  2108. /**
  2109. * コミュニティメンバーのリストを得る
  2110. */
  2111. function db_commu_c_commu_member_id_list4c_commu_id($c_commu_id)
  2112. {
  2113. $sql = 'SELECT c_member_id FROM c_commu_member' .
  2114. ' WHERE c_commu_id = ? AND is_receive_message = 1';
  2115. $params = array(intval($c_commu_id));
  2116. $lst = db_get_col($sql, $params);
  2117. return $lst;
  2118. }
  2119. ?><?php
  2120. /**
  2121. * @copyright 2005-2008 OpenPNE Project
  2122. * @license http://www.php.net/license/3_01.txt PHP License 3.01
  2123. */
  2124. //--- c_commu
  2125. /**
  2126. * コミュニティ作成
  2127. *
  2128. * @param int $c_member_id 管理者のメンバーID
  2129. * @param string $name コミュニティ名
  2130. * @param int $c_commu_category_id
  2131. * @param string $info 説明文
  2132. * @param enum('public', 'auth') $is_admit
  2133. * @param enum('public', 'member') $is_open
  2134. * @return int insert_id
  2135. */
  2136. function db_commu_insert_c_commu($c_member_id, $name, $c_commu_category_id, $info, $is_admit, $is_open)
  2137. {
  2138. // コミュニティ名と説明文に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2139. $name = db_ktai_delete_url_session_parameter($name);
  2140. $info = db_ktai_delete_url_session_parameter($info);
  2141. $data = array(
  2142. 'name' => $name,
  2143. 'c_member_id_admin' => intval($c_member_id),
  2144. 'info' => $info,
  2145. 'c_commu_category_id' => intval($c_commu_category_id),
  2146. 'is_admit' => $is_admit,
  2147. 'is_open' => $is_open,
  2148. 'r_datetime' => db_now(),
  2149. 'r_date' => db_now(),
  2150. 'u_datetime' => db_now(),
  2151. 'image_filename' => '',
  2152. );
  2153. return db_insert('c_commu', $data);
  2154. }
  2155. /**
  2156. * コミュニティ設定変更
  2157. *
  2158. * @param int $c_commu_id
  2159. * @param string $name
  2160. * @param enum('member','admin_only','public') $is_topic
  2161. * @param enum('member','public') $is_comment
  2162. * @param int $c_commu_category_id
  2163. * @param string $info
  2164. * @param enum('member','public') $is_admint
  2165. * @param enum('member','public') $is_open
  2166. * @return bool
  2167. */
  2168. function db_commu_update_c_commu($c_commu_id,
  2169. $name, $is_topic, $is_comment, $c_commu_category_id, $info,
  2170. $is_admit, $is_open,
  2171. $image_filename = '', $is_send_join_mail = 1)
  2172. {
  2173. //function cacheの削除
  2174. cache_drop_c_commu($c_commu_id);
  2175. // コミュニティ名と説明文に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2176. $name = db_ktai_delete_url_session_parameter($name);
  2177. $info = db_ktai_delete_url_session_parameter($info);
  2178. $data = array(
  2179. 'name' => $name,
  2180. 'is_topic' => $is_topic,
  2181. 'is_comment' => $is_comment,
  2182. 'info' => $info,
  2183. 'c_commu_category_id' => intval($c_commu_category_id),
  2184. 'is_admit' => $is_admit,
  2185. 'is_open' => $is_open,
  2186. 'is_send_join_mail' => (bool)$is_send_join_mail,
  2187. 'u_datetime' => db_now(),
  2188. );
  2189. if ($image_filename) $data['image_filename'] = $image_filename;
  2190. $where = array(
  2191. 'c_commu_id' => intval($c_commu_id),
  2192. );
  2193. return db_update('c_commu', $data, $where);
  2194. }
  2195. /**
  2196. * コミュニティ写真更新
  2197. */
  2198. function db_commu_update_c_commu_image_filename($c_commu_id, $image_filename)
  2199. {
  2200. //function cacheの削除
  2201. cache_drop_c_commu($c_commu_id);
  2202. $data = array('image_filename' => $image_filename);
  2203. $where = array('c_commu_id' => intval($c_commu_id));
  2204. return db_update('c_commu', $data, $where);
  2205. }
  2206. /**
  2207. * コミュニティ写真削除
  2208. */
  2209. function db_commu_delete_c_commu_image_filename($c_commu_id)
  2210. {
  2211. //function cacheの削除
  2212. cache_drop_c_commu($c_commu_id);
  2213. $data = array('image_filename' => '');
  2214. $where = array('c_commu_id' => intval($c_commu_id));
  2215. return db_update('c_commu', $data, $where);
  2216. }
  2217. /**
  2218. * 管理者交代
  2219. *
  2220. * @param int $c_commu_admin_confirm
  2221. * @param int $u : 自分のc_membmer_id
  2222. * @return bool
  2223. */
  2224. function db_commu_update_c_commu_c_member_id_admin($c_commu_id, $c_member_id)
  2225. {
  2226. $data = array('c_member_id_admin' => intval($c_member_id));
  2227. $where = array('c_commu_id' => intval($c_commu_id));
  2228. if (!db_update('c_commu', $data, $where)) {
  2229. return false;
  2230. }
  2231. return db_commu_delete_c_commu_admin_confirm4c_commu_id($c_commu_id);
  2232. }
  2233. /**
  2234. * 副管理者に指名
  2235. *
  2236. * @param int $c_commu_sub_admin_confirm
  2237. * @param int $u : 自分のc_membmer_id
  2238. * @return bool
  2239. */
  2240. function db_commu_update_c_commu_c_member_id_sub_admin($c_commu_id, $c_member_id)
  2241. {
  2242. $data = array('c_member_id_sub_admin' => intval($c_member_id));
  2243. $where = array('c_commu_id' => intval($c_commu_id));
  2244. if (!db_update('c_commu', $data, $where)) {
  2245. return false;
  2246. }
  2247. return db_commu_delete_c_commu_sub_admin_confirm4c_commu_id($c_commu_id);
  2248. }
  2249. /**
  2250. * 登録時に強制参加させるかどうかを設定
  2251. */
  2252. function db_commu_update_is_regist_join($c_commu_id, $value = 0)
  2253. {
  2254. $data = array('is_regist_join' => (bool)$value);
  2255. $where = array('c_commu_id' => intval($c_commu_id));
  2256. return db_update('c_commu', $data, $where);
  2257. }
  2258. //--- confirm
  2259. /**
  2260. * コミュニティ参加要請を削除
  2261. */
  2262. function db_commu_delete_c_commu_member_confirm($c_commu_member_confirm_id)
  2263. {
  2264. $sql = 'DELETE FROM c_commu_member_confirm WHERE c_commu_member_confirm_id = ?';
  2265. $params = array(intval($c_commu_member_confirm_id));
  2266. return db_query($sql, $params);
  2267. }
  2268. /**
  2269. * コミュニティ参加要請を承認
  2270. */
  2271. function db_commu_insert_c_commu_member($c_commu_member_confirm_id)
  2272. {
  2273. $confirm = db_commu_c_commu_member_confirm4c_commu_member_confirm_id($c_commu_member_confirm_id);
  2274. //function cache削除
  2275. cache_drop_c_commu($confirm['c_commu_id']);
  2276. cache_drop_c_commu_list4c_member_id($confirm['c_member_id']);
  2277. $data = array(
  2278. 'c_commu_id' => intval($confirm['c_commu_id']),
  2279. 'c_member_id' => intval($confirm['c_member_id']),
  2280. 'r_datetime' => db_now(),
  2281. );
  2282. db_insert('c_commu_member', $data);
  2283. // 非公開コミュニティに管理者から招待されている場合は招待フラグ削除
  2284. $admin_invite = db_commu_c_commu4c_admin_invite_id($confirm['c_commu_id'], $confirm['c_member_id']);
  2285. if ($admin_invite) {
  2286. db_commu_delete_c_commu_admin_invite($admin_invite);
  2287. }
  2288. return db_commu_delete_c_commu_member_confirm($c_commu_member_confirm_id);
  2289. }
  2290. /**
  2291. * コミュニティ参加リクエスト
  2292. */
  2293. function db_commu_insert_c_commu_member_confirm($c_commu_id, $c_member_id, $message = '')
  2294. {
  2295. // メッセージ中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2296. $message = db_ktai_delete_url_session_parameter($message);
  2297. $data = array(
  2298. 'c_commu_id' => intval($c_commu_id),
  2299. 'c_member_id' => intval($c_member_id),
  2300. 'message' => $message,
  2301. 'r_datetime' => db_now(),
  2302. );
  2303. return db_insert('c_commu_member_confirm', $data);
  2304. }
  2305. /**
  2306. * コミュニティ管理者交代リクエスト
  2307. */
  2308. function db_commu_insert_c_commu_admin_confirm($c_commu_id, $c_member_id, $message = '')
  2309. {
  2310. // メッセージ中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2311. $message = db_ktai_delete_url_session_parameter($message);
  2312. $data = array(
  2313. 'c_commu_id' => intval($c_commu_id),
  2314. 'c_member_id_to' => intval($c_member_id),
  2315. 'message' => $message,
  2316. 'r_datetime' => db_now(),
  2317. );
  2318. return db_insert('c_commu_admin_confirm', $data);
  2319. }
  2320. /**
  2321. * コミュニティ副管理者交代リクエスト
  2322. */
  2323. function db_commu_insert_c_commu_sub_admin_confirm($c_commu_id, $c_member_id, $message = '')
  2324. {
  2325. // メッセージ中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2326. $message = db_ktai_delete_url_session_parameter($message);
  2327. $data = array(
  2328. 'c_commu_id' => intval($c_commu_id),
  2329. 'c_member_id_to' => intval($c_member_id),
  2330. 'message' => $message,
  2331. 'r_datetime' => db_now(),
  2332. );
  2333. return db_insert('c_commu_sub_admin_confirm', $data);
  2334. }
  2335. /**
  2336. * 管理者交代の要請を削除
  2337. *
  2338. * @param int $c_commu_admin_confirm_id
  2339. */
  2340. function db_commu_delete_c_commu_admin_confirm4id($c_commu_admin_confirm_id)
  2341. {
  2342. $sql = 'DELETE FROM c_commu_admin_confirm WHERE c_commu_admin_confirm_id = ?';
  2343. $params = array(intval($c_commu_admin_confirm_id));
  2344. return db_query($sql, $params);
  2345. }
  2346. /**
  2347. * 副管理者の要請を削除
  2348. *
  2349. * @param int $c_commu_sub_admin_confirm_id
  2350. */
  2351. function db_commu_delete_c_commu_sub_admin_confirm4id($c_commu_sub_admin_confirm_id)
  2352. {
  2353. $sql = 'DELETE FROM c_commu_sub_admin_confirm WHERE c_commu_sub_admin_confirm_id = ?';
  2354. $params = array(intval($c_commu_sub_admin_confirm_id));
  2355. return db_query($sql, $params);
  2356. }
  2357. /**
  2358. * コミュニティIDから管理者交代要請を削除
  2359. */
  2360. function db_commu_delete_c_commu_admin_confirm4c_commu_id($c_commu_id)
  2361. {
  2362. $sql = 'DELETE FROM c_commu_admin_confirm WHERE c_commu_id = ?';
  2363. $params = array(intval($c_commu_id));
  2364. return db_query($sql, $params);
  2365. }
  2366. /**
  2367. * コミュニティIDから副管理者要請を削除
  2368. */
  2369. function db_commu_delete_c_commu_sub_admin_confirm4c_commu_id($c_commu_id)
  2370. {
  2371. $sql = 'DELETE FROM c_commu_sub_admin_confirm WHERE c_commu_id = ?';
  2372. $params = array(intval($c_commu_id));
  2373. return db_query($sql, $params);
  2374. }
  2375. //--- topic
  2376. /**
  2377. * トピック削除
  2378. */
  2379. function db_commu_delete_c_commu_topic($c_commu_topic_id)
  2380. {
  2381. //function cacheの削除
  2382. cache_drop_c_commu_topic($c_commu_topic_id);
  2383. // c_commu_topic_comment(画像)
  2384. $sql = 'SELECT image_filename1, image_filename2, image_filename3, filename, c_member_id' .
  2385. ' FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
  2386. $params = array(intval($c_commu_topic_id));
  2387. $topic_comment_list = db_get_all($sql, $params);
  2388. foreach ($topic_comment_list as $topic_comment) {
  2389. db_image_data_delete($topic_comment['image_filename1'], $topic_comment['c_member_id']);
  2390. db_image_data_delete($topic_comment['image_filename2'], $topic_comment['c_member_id']);
  2391. db_image_data_delete($topic_comment['image_filename3'], $topic_comment['c_member_id']);
  2392. db_file_delete_c_file($topic_comment['filename']);
  2393. }
  2394. $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
  2395. db_query($sql, $params);
  2396. $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ?';
  2397. db_query($sql, $params);
  2398. $sql = 'DELETE FROM c_commu_topic WHERE c_commu_topic_id = ?';
  2399. db_query($sql, $params);
  2400. }
  2401. //--- topic_comment
  2402. /**
  2403. * トピックコメント書き込み
  2404. *
  2405. * @param int $c_commu_id
  2406. * @param int $c_commu_topic_id
  2407. * @param int $c_member_id
  2408. * @param string $body
  2409. * @return int insert_id
  2410. */
  2411. function db_commu_insert_c_commu_topic_comment($c_commu_id, $c_commu_topic_id, $c_member_id, $body)
  2412. {
  2413. cache_drop_c_commu_list4c_member_id($c_member_id);
  2414. db_commu_update_c_commu_topic_u_datetime(intval($c_commu_topic_id));
  2415. $number = db_commu_c_commu_topic_comment_number4c_commu_topic_id($c_commu_topic_id);
  2416. // コメント中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2417. $body = db_ktai_delete_url_session_parameter($body);
  2418. $data = array(
  2419. 'c_commu_id' => intval($c_commu_id),
  2420. 'c_member_id' => intval($c_member_id),
  2421. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2422. 'number' => intval($number),
  2423. 'body' => $body,
  2424. 'r_datetime' => db_now(),
  2425. 'r_date' => db_now(),
  2426. 'image_filename1' => '',
  2427. 'image_filename2' => '',
  2428. 'image_filename3' => '',
  2429. 'filename' => '',
  2430. );
  2431. return db_insert('c_commu_topic_comment', $data);
  2432. }
  2433. /**
  2434. * トピックコメント書き込み
  2435. */
  2436. function db_commu_insert_c_commu_topic_comment_2($c_member_id,$target_c_commu_topic_id,$body)
  2437. {
  2438. $c_commu_topic = db_commu_c_commu_topic4c_commu_topic_id($target_c_commu_topic_id);
  2439. $target_c_commu_topic_id = $c_commu_topic['c_commu_topic_id'];
  2440. $target_c_commu_id = $c_commu_topic['c_commu_id'];
  2441. return db_commu_insert_c_commu_topic_comment($target_c_commu_id, $target_c_commu_topic_id, $c_member_id, $body);
  2442. }
  2443. function db_commu_update_c_commu_topic_comment_images($c_commu_topic_comment_id, $image_filename1, $image_filename2, $image_filename3)
  2444. {
  2445. $data = array(
  2446. 'image_filename1' => strval($image_filename1),
  2447. 'image_filename2' => strval($image_filename2),
  2448. 'image_filename3' => strval($image_filename3),
  2449. );
  2450. $where = array('c_commu_topic_comment_id' => intval($c_commu_topic_comment_id));
  2451. return db_update('c_commu_topic_comment', $data, $where);
  2452. }
  2453. function db_commu_update_c_commu_topic_comment_file($c_commu_topic_comment_id, $filename)
  2454. {
  2455. $data = array(
  2456. 'filename' => strval($filename),
  2457. );
  2458. $where = array('c_commu_topic_comment_id' => intval($c_commu_topic_comment_id));
  2459. return db_update('c_commu_topic_comment', $data, $where);
  2460. }
  2461. /**
  2462. * 掲示板書き込みに画像を追加する(メールからの投稿)
  2463. */
  2464. function db_commu_update_c_commu_topic_comment_image($c_commu_topic_comment_id, $image_filename, $image_num)
  2465. {
  2466. $data = array(
  2467. 'image_filename'.intval($image_num) => $image_filename,
  2468. );
  2469. $where = array(
  2470. 'c_commu_topic_comment_id' => intval($c_commu_topic_comment_id),
  2471. );
  2472. return db_update('c_commu_topic_comment', $data, $where);
  2473. }
  2474. /**
  2475. * トピックコメント削除
  2476. */
  2477. function db_commu_delete_c_commu_topic_comment($c_commu_topic_comment_id)
  2478. {
  2479. $sql = 'SELECT image_filename1, image_filename2, image_filename3, filename, c_member_id' .
  2480. ' FROM c_commu_topic_comment' .
  2481. ' WHERE c_commu_topic_comment_id = ?';
  2482. $params = array(intval($c_commu_topic_comment_id));
  2483. $topic_comment = db_get_row($sql, $params);
  2484. db_image_data_delete($topic_comment['image_filename1'], $topic_comment['c_member_id']);
  2485. db_image_data_delete($topic_comment['image_filename2'], $topic_comment['c_member_id']);
  2486. db_image_data_delete($topic_comment['image_filename3'], $topic_comment['c_member_id']);
  2487. db_file_delete_c_file($topic_comment['filename']);
  2488. $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_comment_id = ?';
  2489. return db_query($sql, $params);
  2490. }
  2491. //--- event
  2492. function db_commu_update_c_commu_topic($c_commu_topic_id, $topic)
  2493. {
  2494. // タイトルに書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2495. $topic['name'] = db_ktai_delete_url_session_parameter($topic['name']);
  2496. $data = array(
  2497. 'name' => $topic['name'],
  2498. 'event_flag' => (bool)$topic['event_flag'],
  2499. 'capacity' => intval($topic['capacity']),
  2500. 'r_datetime' => db_now(),
  2501. 'r_date' => db_now(),
  2502. 'u_datetime' => db_now(),
  2503. );
  2504. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2505. $open_date = '0000-01-01';
  2506. $invite_period = '0000-01-01';
  2507. } else {
  2508. $open_date = '0000-00-00';
  2509. $invite_period = '0000-00-00';
  2510. }
  2511. if (isset($topic['open_date']) && $topic['open_date']) {
  2512. $open_date = $topic['open_date'];
  2513. }
  2514. if (isset($topic['invite_period']) && $topic['invite_period']) {
  2515. $invite_period = $topic['invite_period'];
  2516. }
  2517. if ($data['event_flag']) {
  2518. $data += array(
  2519. 'open_date' => $open_date,
  2520. 'open_date_comment' => db_ktai_delete_url_session_parameter($topic['open_date_comment']),
  2521. 'open_pref_id' => intval($topic['open_pref_id']),
  2522. 'open_pref_comment' => db_ktai_delete_url_session_parameter($topic['open_pref_comment']),
  2523. 'invite_period' => $invite_period,
  2524. );
  2525. }
  2526. $where = array('c_commu_topic_id' => intval($c_commu_topic_id));
  2527. return db_update('c_commu_topic', $data, $where);
  2528. }
  2529. function db_commu_update_c_commu_topic_comment($c_commu_topic_id, $topic_comment)
  2530. {
  2531. // コメントに書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2532. $topic_comment['body'] = db_ktai_delete_url_session_parameter($topic_comment['body']);
  2533. $data = array(
  2534. 'body' => $topic_comment['body'],
  2535. 'r_datetime' => db_now(),
  2536. );
  2537. for ($i = 1; $i <= 3; $i++) {
  2538. $key = 'image_filename'.$i;
  2539. if (!empty($topic_comment[$key])) {
  2540. $data[$key] = $topic_comment[$key];
  2541. }
  2542. }
  2543. if (!empty($topic_comment['filename4'])) {
  2544. $data['filename'] = $topic_comment['filename4'];
  2545. }
  2546. $where = array(
  2547. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2548. 'number' => 0,
  2549. );
  2550. return db_update('c_commu_topic_comment', $data, $where);
  2551. }
  2552. function db_commu_delete_c_commu_topic_comment_image($c_commu_topic_id, $image_num)
  2553. {
  2554. $data = array(
  2555. 'image_filename'.intval($image_num) => '',
  2556. );
  2557. $where = array(
  2558. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2559. 'number' => 0,
  2560. );
  2561. return db_update('c_commu_topic_comment', $data, $where);
  2562. }
  2563. function db_commu_delete_c_commu_topic_comment_file($c_commu_topic_id)
  2564. {
  2565. $data = array(
  2566. 'filename' => '',
  2567. );
  2568. $where = array(
  2569. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2570. 'number' => 0,
  2571. );
  2572. return db_update('c_commu_topic_comment', $data, $where);
  2573. }
  2574. function db_commu_insert_c_commu_topic($topic)
  2575. {
  2576. //function cacheの削除
  2577. cache_drop_c_commu_topic($topic['c_commu_id']);
  2578. cache_drop_c_commu_list4c_member_id($topic['c_member_id']);
  2579. // タイトルと本文中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2580. $topic['name'] = db_ktai_delete_url_session_parameter($topic['name']);
  2581. $data = array(
  2582. 'c_commu_id' => intval($topic['c_commu_id']),
  2583. 'c_member_id' => intval($topic['c_member_id']),
  2584. 'name' => $topic['name'],
  2585. 'event_flag' => (bool)$topic['event_flag'],
  2586. 'capacity' => intval($topic['capacity']),
  2587. 'r_datetime' => db_now(),
  2588. 'r_date' => db_now(),
  2589. 'u_datetime' => db_now(),
  2590. );
  2591. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2592. $open_date = '0000-01-01';
  2593. $invite_period = '0000-01-01';
  2594. } else {
  2595. $open_date = '0000-00-00';
  2596. $invite_period = '0000-00-00';
  2597. }
  2598. if (isset($topic['open_date']) && $topic['open_date']) {
  2599. $open_date = $topic['open_date'];
  2600. }
  2601. if (isset($topic['invite_period']) && $topic['invite_period']) {
  2602. $invite_period = $topic['invite_period'];
  2603. }
  2604. if ($data['event_flag']) {
  2605. $data += array(
  2606. 'open_date' => $open_date,
  2607. 'open_date_comment' => db_ktai_delete_url_session_parameter($topic['open_date_comment']),
  2608. 'open_pref_id' => intval($topic['open_pref_id']),
  2609. 'open_pref_comment' => db_ktai_delete_url_session_parameter($topic['open_pref_comment']),
  2610. 'invite_period' => $invite_period,
  2611. );
  2612. }
  2613. return db_insert('c_commu_topic', $data);
  2614. }
  2615. function db_commu_insert_c_commu_topic_comment_3($comment)
  2616. {
  2617. cache_drop_c_commu_list4c_member_id($comment['c_member_id']);
  2618. db_commu_update_c_commu_topic_u_datetime(intval($comment['c_commu_topic_id']));
  2619. // タイトルと本文中に書いてあるURLがSNS内でありセッションパラメータを含んでいた場合は削除
  2620. $comment['body'] = db_ktai_delete_url_session_parameter($comment['body']);
  2621. $data = array(
  2622. 'c_commu_id' => intval($comment['c_commu_id']),
  2623. 'c_member_id' => intval($comment['c_member_id']),
  2624. 'body' => strval($comment['body']),
  2625. 'number' => intval($comment['number']),
  2626. 'c_commu_topic_id' => intval($comment['c_commu_topic_id']),
  2627. 'image_filename1' => strval($comment['image_filename1']),
  2628. 'image_filename2' => strval($comment['image_filename2']),
  2629. 'image_filename3' => strval($comment['image_filename3']),
  2630. 'filename' => strval($comment['filename4']),
  2631. 'r_datetime' => db_now(),
  2632. 'r_date' => db_now(),
  2633. );
  2634. return db_insert('c_commu_topic_comment', $data);
  2635. }
  2636. /**
  2637. * イベント管理メンバー追加
  2638. */
  2639. function db_commu_insert_c_event_member_as_admin($c_commu_topic_id, $c_member_id)
  2640. {
  2641. $data = array(
  2642. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2643. 'c_member_id' => intval($c_member_id),
  2644. 'is_admin' => 1,
  2645. 'r_datetime' => db_now(),
  2646. );
  2647. return db_insert('c_event_member', $data);
  2648. }
  2649. /**
  2650. * イベント参加メンバー追加
  2651. */
  2652. function db_commu_insert_c_event_member($c_commu_topic_id, $c_member_id)
  2653. {
  2654. // 参加済みの場合は追加しない
  2655. $sql = 'SELECT c_event_member_id FROM c_event_member' .
  2656. ' WHERE c_commu_topic_id = ? AND c_member_id = ?';
  2657. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  2658. if (db_get_one($sql, $params)) {
  2659. return false;
  2660. }
  2661. $data = array(
  2662. 'c_commu_topic_id' => intval($c_commu_topic_id),
  2663. 'c_member_id' => intval($c_member_id),
  2664. 'is_admin' => 0,
  2665. 'r_datetime' => db_now(),
  2666. );
  2667. return db_insert('c_event_member', $data);
  2668. }
  2669. /**
  2670. * イベント参加メンバー削除
  2671. */
  2672. function db_commu_delete_c_event_member($c_commu_topic_id, $c_member_id)
  2673. {
  2674. $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ? AND c_member_id = ?';
  2675. $params = array(intval($c_commu_topic_id), intval($c_member_id));
  2676. db_query($sql, $params);
  2677. }
  2678. /**
  2679. * 現在イベントに参加できるかどうか
  2680. */
  2681. function db_commu_is_event_join_date($c_commu_topic_id)
  2682. {
  2683. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2684. $sql = 'SELECT c_commu_topic_id FROM c_commu_topic'
  2685. . ' WHERE c_commu_topic_id = ?'
  2686. . ' AND (open_date >= ? OR open_date = \'0000-01-01\')'
  2687. . ' AND (invite_period >= ? OR invite_period = \'0000-01-01\')';
  2688. } else {
  2689. $sql = 'SELECT c_commu_topic_id FROM c_commu_topic'
  2690. . ' WHERE c_commu_topic_id = ?'
  2691. . ' AND (open_date >= ? OR open_date = \'0000-00-00\')'
  2692. . ' AND (invite_period >= ? OR invite_period = \'0000-00-00\')';
  2693. }
  2694. $now = date('Y-m-d');
  2695. $params = array(intval($c_commu_topic_id), $now, $now);
  2696. return (bool)db_get_row($sql, $params);
  2697. }
  2698. function db_commu_is_event_join_capacity($c_commu_topic_id)
  2699. {
  2700. $c_topic = db_commu_c_topic4c_commu_topic_id_2($c_commu_topic_id);
  2701. if (!$c_topic['capacity']) {
  2702. return true;
  2703. }
  2704. if ($c_topic['capacity'] > $c_topic['member_num']) {
  2705. return true;
  2706. }
  2707. return false;
  2708. }
  2709. //--- commu_member
  2710. /**
  2711. * コミュニティに参加
  2712. */
  2713. function db_commu_join_c_commu($c_commu_id, $c_member_id)
  2714. {
  2715. //function cache削除
  2716. cache_drop_c_commu($c_commu_id);
  2717. cache_drop_c_commu_list4c_member_id($c_member_id);
  2718. $data = array(
  2719. 'c_commu_id' => intval($c_commu_id),
  2720. 'c_member_id' => intval($c_member_id),
  2721. 'r_datetime' => db_now(),
  2722. );
  2723. return db_insert('c_commu_member', $data);
  2724. }
  2725. /**
  2726. * コミュニティからメンバーを削除
  2727. */
  2728. function db_commu_delete_c_commu_member($c_commu_id, $c_member_id)
  2729. {
  2730. //function cache削除
  2731. cache_drop_c_commu($c_commu_id);
  2732. cache_drop_c_commu_list4c_member_id($c_member_id);
  2733. //おすすめレビューを削除
  2734. $sql = 'DELETE FROM c_commu_review' .
  2735. ' WHERE c_commu_id = ? AND c_member_id = ?';
  2736. $params = array(intval($c_commu_id), intval($c_member_id));
  2737. db_query($sql, $params);
  2738. //副管理者なら副管理者のポストを空に
  2739. $sql = 'UPDATE c_commu' .
  2740. ' SET c_member_id_sub_admin = 0' .
  2741. ' WHERE c_commu_id = ? AND c_member_id_sub_admin = ?';
  2742. db_query($sql, $params);
  2743. //管理者承認依頼
  2744. $sql = 'DELETE FROM c_commu_admin_confirm' .
  2745. ' WHERE c_commu_id = ? AND c_member_id_to = ?';
  2746. db_query($sql, $params);
  2747. //副管理者承認依頼
  2748. $sql = 'DELETE FROM c_commu_sub_admin_confirm' .
  2749. ' WHERE c_commu_id = ? AND c_member_id_to = ?';
  2750. db_query($sql, $params);
  2751. //参加イベント情報削除
  2752. $sql = 'SELECT ct.c_commu_topic_id'
  2753. . ' FROM c_commu_topic ct'
  2754. . ' LEFT JOIN c_event_member cem ON ct.c_commu_topic_id = cem.c_commu_topic_id'
  2755. . ' WHERE ct.c_commu_id = ?'
  2756. . ' AND cem.c_member_id = ?';
  2757. $c_commu_topic_id_list = db_get_col($sql, $params, 'main');
  2758. foreach ($c_commu_topic_id_list as $c_commu_topic_id) {
  2759. db_commu_delete_c_event_member($c_commu_topic_id, $c_member_id);
  2760. }
  2761. //コミュニティから退会
  2762. $sql = 'DELETE FROM c_commu_member' .
  2763. ' WHERE c_commu_id = ? AND c_member_id = ?';
  2764. db_query($sql, $params);
  2765. }
  2766. /**
  2767. * コミュニティお知らせメール受信設定変更
  2768. */
  2769. function db_commu_update_is_receive_mail($c_commu_id, $c_member_id, $is_receive_mail, $is_receive_mail_pc, $is_receive_message)
  2770. {
  2771. $data = array(
  2772. 'is_receive_mail' => (bool)$is_receive_mail,
  2773. 'is_receive_mail_pc' => (bool)$is_receive_mail_pc,
  2774. 'is_receive_message' => (bool)$is_receive_message,
  2775. );
  2776. $where = array(
  2777. 'c_commu_id' => intval($c_commu_id),
  2778. 'c_member_id' => intval($c_member_id),
  2779. );
  2780. return db_update('c_commu_member', $data, $where);
  2781. }
  2782. /**
  2783. * 非公開コミュニティへの承認なし参加フラグを立てる
  2784. */
  2785. function db_commu_insert_c_commu_admin_invite($c_commu_id, $c_member_id_to)
  2786. {
  2787. // すでにフラグが立っている
  2788. $sql = 'SELECT c_commu_admin_invite_id FROM c_commu_admin_invite' .
  2789. ' WHERE c_commu_id = ? AND c_member_id_to = ?';
  2790. $params = array(intval($c_commu_id), intval($c_member_id_to));
  2791. if (db_get_one($sql, $params)) {
  2792. return false;
  2793. }
  2794. $data = array(
  2795. 'c_commu_id' => intval($c_commu_id),
  2796. 'c_member_id_to' => intval($c_member_id_to),
  2797. 'r_datetime' => db_now(),
  2798. );
  2799. return db_insert('c_commu_admin_invite', $data);
  2800. }
  2801. /**
  2802. * 非公開コミュニティへの承認なし参加フラグを削除する
  2803. */
  2804. function db_commu_delete_c_commu_admin_invite($c_commu_admin_invite_id)
  2805. {
  2806. $sql = 'DELETE FROM c_commu_admin_invite WHERE c_commu_admin_invite_id = ?';
  2807. $params = array(intval($c_commu_admin_invite_id));
  2808. db_query($sql, $params);
  2809. }
  2810. /**
  2811. * メンバーの共通参加コミュニティ数を取得
  2812. *
  2813. * @param int $target_c_member_id , $u
  2814. * @return int 参加コミュニティ数
  2815. */
  2816. function db_common_commu_common_commu_id4c_member_id($target_c_member_id , $u)
  2817. {
  2818. // 相手のコミュニティリスト
  2819. $sql = 'SELECT c_commu_id FROM c_commu_member ' .
  2820. ' WHERE c_member_id = ?' .
  2821. ' ORDER BY c_commu_id DESC ' ;
  2822. $params = array(intval($target_c_member_id));
  2823. $f_commu_id_list = db_get_col($sql, $params);
  2824. if(is_null($f_commu_id_list)){
  2825. return null;
  2826. }
  2827. // 自分のコミュニティリスト
  2828. $sql = 'SELECT c_commu_id FROM c_commu_member ' .
  2829. ' WHERE c_member_id = ?' .
  2830. ' ORDER BY c_commu_id DESC ';
  2831. $params = array(intval($u));
  2832. $h_commu_id_list = db_get_col($sql, $params);
  2833. if(is_null($h_commu_id_list)){
  2834. return null;
  2835. }
  2836. //共通コミュニティリスト
  2837. $common_commu_id_list = array_intersect($f_commu_id_list, $h_commu_id_list);
  2838. if(is_null($common_commu_id_list)){
  2839. return null;
  2840. }
  2841. return $common_commu_id_list;
  2842. }
  2843. /**
  2844. * 共通参加コミュニティリスト
  2845. */
  2846. function db_common_commu_common_commu_list4c_member_id($target_c_member_id, $u, $page, $page_size)
  2847. {
  2848. $common_commu_id_list = db_common_commu_common_commu_id4c_member_id($target_c_member_id, $u);
  2849. if(is_null($common_commu_id_list)){
  2850. return null;
  2851. }
  2852. $common_commu_id_str_list = implode(",", $common_commu_id_list);
  2853. $sql = "SELECT *" .
  2854. " FROM c_commu" .
  2855. " WHERE c_commu_id in (".$common_commu_id_str_list.")" .
  2856. " ORDER BY c_commu_id DESC ";
  2857. $common_commu_list = db_get_all_page($sql, $page, $page_size);
  2858. foreach ($common_commu_list as $key => $value) {
  2859. $common_commu_list[$key]['count_members'] =
  2860. db_commu_count_c_commu_member_list4c_commu_id($value['c_commu_id']);
  2861. }
  2862. $pager = array(
  2863. "total_num" => count($common_commu_id_list),
  2864. "disp_num" => count($common_commu_list),
  2865. "start_num" => 0,
  2866. "end_num" => 0,
  2867. "total_page" => 0,
  2868. "prev_page" => 0,
  2869. "next_page" => 0,
  2870. );
  2871. if ($pager['disp_num'] > 0) {
  2872. $pager['start_num'] = ($page - 1) * $page_size + 1;
  2873. $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
  2874. }
  2875. if ($pager['total_num']) {
  2876. $pager['total_page'] = ceil($pager['total_num'] / $page_size);
  2877. if ($page < $pager['total_page']) {
  2878. $pager['next_page'] = max($page + 1, 1);
  2879. }
  2880. if ($page > 1) {
  2881. $pager['prev_page'] = min($page - 1, $pager['total_page']);
  2882. }
  2883. }
  2884. return array($common_commu_list, $pager);
  2885. }
  2886. /**
  2887. * コミュニティ参加要請IDを取得
  2888. */
  2889. function db_commu_get_c_commu_member_confirm_id($c_member_id, $c_commu_id)
  2890. {
  2891. $sql = 'SELECT c_commu_member_confirm_id FROM c_commu_member_confirm WHERE c_commu_id = ? AND c_member_id = ?';
  2892. $params = array(intval($c_commu_id), intval($c_member_id));
  2893. return db_get_one($sql, $params);
  2894. }
  2895. /**
  2896. * トピック検索
  2897. */
  2898. function db_commu_search_c_commu_topic(
  2899. $search_word,
  2900. $page_size,
  2901. $page,
  2902. $type = 'all',
  2903. $c_commu_id = 0)
  2904. {
  2905. if(!$search_word){
  2906. return db_commu_new_topic_list($page_size,$page,$type,$c_commu_id);
  2907. }
  2908. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2909. $select = 'SELECT distinct on (ct.c_commu_topic_id) c.name AS commu_name, c.image_filename AS commu_image'
  2910. . ', ct.*, ctc2.max_datetime';
  2911. } else {
  2912. $select = 'SELECT c.name AS commu_name, c.image_filename AS commu_image'
  2913. . ', ct.*, ct.r_datetime AS max_datetime';
  2914. }
  2915. $from = ' FROM c_commu AS c, c_commu_topic AS ct, c_commu_topic_comment AS ctc';
  2916. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2917. $from .= ', (SELECT c_commu_topic_id, max(r_datetime) as max_datetime' .
  2918. ' FROM c_commu_topic_comment' .
  2919. ' GROUP BY c_commu_topic_id' .
  2920. ') AS ctc2';
  2921. }
  2922. $params = array();
  2923. $where = ' WHERE ct.c_commu_topic_id = ctc.c_commu_topic_id'
  2924. . ' AND c.c_commu_id = ct.c_commu_id';
  2925. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2926. $where .= ' AND ct.c_commu_topic_id = ctc2.c_commu_topic_id';
  2927. }
  2928. if ($c_commu_id) {
  2929. $where .= ' AND ct.c_commu_id = ?';
  2930. $params[] = $c_commu_id;
  2931. } else {
  2932. $where .= " AND c.is_open ='public'";
  2933. }
  2934. if ($search_word) {
  2935. $words = explode(' ', $search_word);
  2936. foreach ($words as $word) {
  2937. $word = check_search_word($word);
  2938. $where .= ' AND ((ct.name LIKE ?) OR (ctc.body LIKE ?))';
  2939. $params[] = '%'.$word.'%';
  2940. $params[] = '%'.$word.'%';
  2941. }
  2942. }
  2943. switch ($type) {
  2944. case 'topic':
  2945. $where .= ' AND event_flag = 0';
  2946. break;
  2947. case 'event':
  2948. $where .= ' AND event_flag = 1';
  2949. break;
  2950. case 'all':
  2951. default:
  2952. break;
  2953. }
  2954. $group = ' GROUP BY ct.c_commu_topic_id';
  2955. $order = ' ORDER BY max_datetime DESC';
  2956. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2957. $sql = "SELECT sub_tbl.* FROM (" . $select . $from . $where . ") as sub_tbl " . $order;
  2958. } else {
  2959. $sql = $select . $from . $where . $group . $order;
  2960. }
  2961. $list = db_get_all_page($sql, $page, $page_size, $params);
  2962. foreach ($list as $key => $value) {
  2963. $p = array((int)$value['c_commu_topic_id']);
  2964. $sql = 'SELECT body FROM c_commu_topic_comment WHERE number = 0 AND c_commu_topic_id = ?';
  2965. $list[$key]['body'] = db_get_one($sql, $p);
  2966. $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  2967. $list[$key]['max_number'] = $number;
  2968. $start_comment = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  2969. $list[$key]['image_filename1'] = $start_comment['image_filename1'];
  2970. $list[$key]['image_filename2'] = $start_comment['image_filename2'];
  2971. $list[$key]['image_filename3'] = $start_comment['image_filename3'];
  2972. }
  2973. $sql = 'SELECT COUNT(DISTINCT ct.c_commu_topic_id)' . $from . $where;
  2974. $total_num = db_get_one($sql, $params);
  2975. if ($total_num != 0) {
  2976. $total_page_num = ceil($total_num / $page_size);
  2977. $next = ($page < $total_page_num);
  2978. $prev = ($page > 1);
  2979. }
  2980. $start_num = ($page - 1) * $page_size + 1;
  2981. $end_num = $start_num + $page_size - 1 >= $total_num ? $total_num : $start_num + $page_size - 1;
  2982. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  2983. }
  2984. /*
  2985. * 新着トピック
  2986. */
  2987. function p_h_home_c_topic_all_list($limit)
  2988. {
  2989. $sql = 'SELECT ct.*,c.name as c_commu_name, c.c_commu_id'
  2990. . ' FROM c_commu_topic as ct'
  2991. . ' INNER JOIN c_commu as c USING(c_commu_id)'
  2992. . ' WHERE c.is_open = \'public\''
  2993. . ' ORDER BY u_datetime DESC';
  2994. $c_topic_all_list = db_get_all_limit($sql,0,$limit);
  2995. foreach($c_topic_all_list as $key=>$value) {
  2996. $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  2997. $c_topic_all_list[$key]['number'] = $number;
  2998. $start_comment = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  2999. $c_topic_all_list[$key]['image_filename1'] = $start_comment['image_filename1'];
  3000. $c_topic_all_list[$key]['image_filename2'] = $start_comment['image_filename2'];
  3001. $c_topic_all_list[$key]['image_filename3'] = $start_comment['image_filename3'];
  3002. }
  3003. return $c_topic_all_list;
  3004. }
  3005. /*
  3006. * トピック書き込み時間(u_datetime)を更新する
  3007. */
  3008. function db_commu_update_c_commu_topic_u_datetime($c_commu_topic_id)
  3009. {
  3010. $data = array(
  3011. 'u_datetime' => db_now(),
  3012. );
  3013. $where = array(
  3014. 'c_commu_topic_id' => intval($c_commu_topic_id),
  3015. );
  3016. return db_update('c_commu_topic', $data, $where);
  3017. }
  3018. /*
  3019. * トピックの最初の書き込みコメント情報取得
  3020. */
  3021. function db_commu_get_start_c_topic_comment($c_commu_topic_id)
  3022. {
  3023. $sql = 'SELECT * FROM c_commu_topic_comment WHERE c_commu_topic_id = ? AND number = 0';
  3024. $params = array(intval($c_commu_topic_id));
  3025. return db_get_row($sql,$params);
  3026. }
  3027. /**
  3028. * トピック検索簡易版(キーワード無し)
  3029. */
  3030. function db_commu_new_topic_list(
  3031. $page_size,
  3032. $page,
  3033. $type = 'all',
  3034. $c_commu_id = 0)
  3035. {
  3036. $select = 'SELECT c.name AS commu_name, c.image_filename AS commu_image'
  3037. . ' ,ct.*, ct.u_datetime AS max_datetime'
  3038. . ' FROM c_commu AS c'
  3039. . ' INNER JOIN c_commu_topic AS ct USING(c_commu_id) ';
  3040. $params = array();
  3041. $where = ' WHERE 0 = 0';
  3042. if ($c_commu_id) {
  3043. $where .= ' AND ct.c_commu_id = ?';
  3044. $params[] = $c_commu_id;
  3045. } else {
  3046. $where .= " AND c.is_open = 'public'";
  3047. }
  3048. switch ($type) {
  3049. case 'topic':
  3050. $where .= ' AND event_flag = 0';
  3051. break;
  3052. case 'event':
  3053. $where .= ' AND event_flag = 1';
  3054. break;
  3055. case 'all':
  3056. default:
  3057. break;
  3058. }
  3059. $order = ' ORDER BY max_datetime DESC';
  3060. $sql = $select .$where . $order;
  3061. $list = db_get_all_page($sql, $page, $page_size, $params);
  3062. foreach ($list as $key => $value) {
  3063. $p = array((int)$value['c_commu_topic_id']);
  3064. $sql = 'SELECT body FROM c_commu_topic_comment WHERE number = 0 AND c_commu_topic_id = ?';
  3065. $list[$key]['body'] = db_get_one($sql, $p);
  3066. $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
  3067. $list[$key]['max_number'] = $number;
  3068. $start_comment = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
  3069. $list[$key]['image_filename1'] = $start_comment['image_filename1'];
  3070. $list[$key]['image_filename2'] = $start_comment['image_filename2'];
  3071. $list[$key]['image_filename3'] = $start_comment['image_filename3'];
  3072. }
  3073. $sql = 'SELECT COUNT(ct.c_commu_topic_id) FROM c_commu AS c'
  3074. . ' INNER JOIN c_commu_topic AS ct USING(c_commu_id)' . $where;
  3075. $total_num = db_get_one($sql, $params);
  3076. if ($total_num != 0) {
  3077. $total_page_num = ceil($total_num / $page_size);
  3078. $next = ($page < $total_page_num);
  3079. $prev = ($page > 1);
  3080. }
  3081. $start_num = ($page - 1) * $page_size + 1;
  3082. $end_num = $start_num + $page_size - 1 >= $total_num ? $total_num : $start_num + $page_size - 1;
  3083. return array($list, $prev, $next, $total_num, $start_num, $end_num);
  3084. }
  3085. function db_commu_is_writable_c_commu_topic_comment4c_commu_topic_id($c_commu_topic_id)
  3086. {
  3087. $max_c_commu_topic_comment_number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($c_commu_topic_id);
  3088. if ($max_c_commu_topic_comment_number >= 1000) {
  3089. return false;
  3090. }
  3091. return true;
  3092. }
  3093. /**
  3094. * コミュニティ参加要請状況をコミュニティIDから取得
  3095. *
  3096. * @param int $c_commu_id
  3097. * @return array コミュニティ参加要請状況
  3098. */
  3099. function db_commu_c_commu_member_confirm4c_commu_id($c_commu_id)
  3100. {
  3101. $sql = 'SELECT c_commu_member_confirm_id, c_member_id FROM c_commu_member_confirm'
  3102. . ' WHERE c_commu_id = ?';
  3103. $params = array(intval($c_commu_id));
  3104. $c_commu_member_confirm = db_get_assoc($sql, $params, 'main');
  3105. return $c_commu_member_confirm;
  3106. }
  3107. /**
  3108. * コミュニティ名が変更されているかどうか
  3109. *
  3110. * @param int $c_commu_id
  3111. * @param string $name
  3112. * @return bool
  3113. */
  3114. function db_commu_is_changed_c_commu_name($c_commu_id, $name)
  3115. {
  3116. $sql = 'SELECT name FROM c_commu WHERE c_commu_id = ?';
  3117. $params = array(intval($c_commu_id));
  3118. $now_name = db_get_one($sql, $params);
  3119. if ($name === $now_name) {
  3120. return false;
  3121. }
  3122. return true;
  3123. }
  3124. /**
  3125. * コミュニティホームの新着表示設定変更
  3126. */
  3127. function db_commu_update_is_display_topic_home($c_commu_id, $c_member_id, $is_display_topic_home)
  3128. {
  3129. pne_cache_drop('db_commu_c_commu_topic_comment_list4c_member_id', (int)$c_member_id, 5, true);
  3130. pne_cache_drop('db_commu_c_commu_topic_comment_list4c_member_id', (string)$c_member_id, 5, true);
  3131. $data = array(
  3132. 'is_display_topic_home' => (bool)$is_display_topic_home,
  3133. );
  3134. $where = array(
  3135. 'c_commu_id' => intval($c_commu_id),
  3136. 'c_member_id' => intval($c_member_id),
  3137. );
  3138. return db_update('c_commu_member', $data, $where);
  3139. }
  3140. ?>