PageRenderTime 46ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/webapp/modules/admin/lib/db_admin.php

https://github.com/openpne/OpenPNE2
PHP | 4135 lines | 3169 code | 647 blank | 319 comment | 493 complexity | aa975c5f306cc19ba44eb18ec896f60c 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. /**
  7. * メンバーリスト取得
  8. */
  9. function db_admin_c_member_list($page, $page_size, &$pager)
  10. {
  11. $sql = 'SELECT c_member_id FROM c_member ORDER BY c_member_id';
  12. $ids = db_get_col_page($sql, $page, $page_size);
  13. $c_member_list = array();
  14. foreach ($ids as $id) {
  15. $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
  16. }
  17. $sql = 'SELECT COUNT(*) FROM c_member';
  18. $total_num = db_get_one($sql);
  19. $pager = util_make_pager($page, $page_size, $total_num);
  20. return $c_member_list;
  21. }
  22. function db_admin_c_member4mail_address($mail_address)
  23. {
  24. $sql = 'SELECT c_member_id FROM c_member_secure' .
  25. ' WHERE pc_address = ? OR ktai_address = ? OR regist_address = ?';
  26. $enc_address = t_encrypt($mail_address);
  27. $params = array($enc_address, $enc_address, $enc_address);
  28. $list = db_get_col($sql, $params);
  29. $c_member_list = array();
  30. foreach ($list as $c_member_id) {
  31. $c_member_list[] = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
  32. }
  33. return $c_member_list;
  34. }
  35. function db_admin_c_member4username($username)
  36. {
  37. $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
  38. $c_member_id = db_get_one($sql, array($username));
  39. $c_member = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
  40. return $c_member;
  41. }
  42. function db_admin_c_siteadmin($target)
  43. {
  44. $sql = 'SELECT * FROM c_siteadmin WHERE target = ?';
  45. $params = array($target);
  46. return db_get_row($sql, $params);
  47. }
  48. function db_admin_insert_c_siteadmin($target, $body)
  49. {
  50. $data = array(
  51. 'target' => $target,
  52. 'body' => $body,
  53. 'r_date' => db_now(),
  54. );
  55. return db_insert('c_siteadmin', $data);
  56. }
  57. function db_admin_update_c_siteadmin($target, $body)
  58. {
  59. $data = array(
  60. 'body' => $body,
  61. 'r_date' => db_now(),
  62. );
  63. $where = array('target' => $target);
  64. return db_update('c_siteadmin', $data, $where);
  65. }
  66. function db_admin_delete_c_profile_option($c_profile_option_id)
  67. {
  68. //function cache削除
  69. pne_cache_drop('db_member_c_profile_list');
  70. if (!$c_profile_option_id) {
  71. return false;
  72. }
  73. $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
  74. $params = array(intval($c_profile_option_id));
  75. db_query($sql, $params);
  76. $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
  77. db_query($sql, $params);
  78. return true;
  79. }
  80. function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
  81. {
  82. //function cache削除
  83. pne_cache_drop('db_member_c_profile_list');
  84. $data = array(
  85. 'c_profile_id' => intval($c_profile_id),
  86. 'value' => $value,
  87. 'sort_order' => intval($sort_order),
  88. );
  89. return db_insert('c_profile_option', $data);
  90. }
  91. function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
  92. {
  93. //function cache削除
  94. pne_cache_drop('db_member_c_profile_list');
  95. $data = array('value' => $value);
  96. $where = array('c_profile_option_id' => intval($c_profile_option_id));
  97. db_update('c_member_profile', $data, $where);
  98. $data = array(
  99. 'value' => $value,
  100. 'sort_order' => intval($sort_order),
  101. );
  102. db_update('c_profile_option', $data, $where);
  103. }
  104. function db_admin_insert_c_banner($a_href, $type, $nickname)
  105. {
  106. $data = array(
  107. 'a_href' => $a_href,
  108. 'type' => $type,
  109. 'nickname' => $nickname,
  110. 'is_hidden_after' => 0,
  111. 'is_hidden_before' => 0,
  112. 'image_filename' => '',
  113. );
  114. return db_insert('c_banner', $data);
  115. }
  116. function db_admin_update_c_banner($c_banner_id, $sets)
  117. {
  118. $where = array('c_banner_id' => intval($c_banner_id));
  119. db_update('c_banner', $sets, $where);
  120. }
  121. function db_admin_delete_c_banner($c_banner_id)
  122. {
  123. db_admin_delete_c_image4c_banner_id($c_banner_id);
  124. $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
  125. $params = array(intval($c_banner_id));
  126. db_query($sql, $params);
  127. }
  128. function db_admin_delete_c_image4c_banner_id($c_banner_id)
  129. {
  130. $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
  131. $params = array(intval($c_banner_id));
  132. $image_filename = db_get_one($sql, $params);
  133. db_image_data_delete($image_filename);
  134. }
  135. function db_admin_insert_c_profile(
  136. $name
  137. , $caption
  138. , $info
  139. , $is_required
  140. , $public_flag_edit
  141. , $public_flag_default
  142. , $form_type
  143. , $sort_order
  144. , $disp_regist
  145. , $disp_config
  146. , $disp_search
  147. , $val_type
  148. , $val_regexp
  149. , $val_min
  150. , $val_max
  151. )
  152. {
  153. pne_cache_drop('db_member_c_profile_list');
  154. if (empty($info) || is_null($info)) {
  155. $info = '';
  156. }
  157. $data = array(
  158. 'name' => $name,
  159. 'caption' => $caption,
  160. 'info' => $info,
  161. 'is_required' => (bool)$is_required,
  162. 'public_flag_edit' => (bool)$public_flag_edit,
  163. 'public_flag_default' => $public_flag_default,
  164. 'form_type' => $form_type,
  165. 'sort_order' => (int)$sort_order,
  166. 'disp_regist' => (bool)$disp_regist,
  167. 'disp_config' => (bool)$disp_config,
  168. 'disp_search' => (bool)$disp_search,
  169. 'val_type' => $val_type,
  170. 'val_regexp' => $val_regexp,
  171. 'val_min' => (int)$val_min,
  172. 'val_max' => (int)$val_max,
  173. );
  174. return db_insert('c_profile', $data);
  175. }
  176. function db_admin_update_c_profile($c_profile_id
  177. , $name
  178. , $caption
  179. , $info
  180. , $is_required
  181. , $public_flag_edit
  182. , $public_flag_default
  183. , $form_type
  184. , $sort_order
  185. , $disp_regist
  186. , $disp_config
  187. , $disp_search
  188. , $val_type
  189. , $val_regexp
  190. , $val_min
  191. , $val_max
  192. )
  193. {
  194. if (empty($info) || is_null($info)) {
  195. $info = '';
  196. }
  197. $data = array(
  198. 'name' => $name,
  199. 'caption' => $caption,
  200. 'info' => $info,
  201. 'is_required' => (bool)$is_required,
  202. 'public_flag_edit' => (bool)$public_flag_edit,
  203. 'public_flag_default' => $public_flag_default,
  204. 'form_type' => $form_type,
  205. 'sort_order' => intval($sort_order),
  206. 'disp_regist' => (bool)$disp_regist,
  207. 'disp_config' => (bool)$disp_config,
  208. 'disp_search' => (bool)$disp_search,
  209. 'val_type' => $val_type,
  210. 'val_regexp' => $val_regexp,
  211. 'val_min' => intval($val_min),
  212. 'val_max' => intval($val_max),
  213. );
  214. $where = array('c_profile_id' => intval($c_profile_id));
  215. db_update('c_profile', $data, $where);
  216. // 公開設定が固定のときはメンバーの設定値を上書き
  217. if (!$public_flag_edit) {
  218. $data = array('public_flag' => $public_flag_default);
  219. db_update('c_member_profile', $data, $where);
  220. }
  221. pne_cache_drop('db_member_c_profile_list');
  222. }
  223. function db_admin_delete_c_profile($c_profile_id)
  224. {
  225. $params = array(intval($c_profile_id));
  226. // メンバーのプロフィールから削除
  227. $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
  228. db_query($sql, $params);
  229. // 選択肢項目を削除
  230. $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
  231. db_query($sql, $params);
  232. // プロフィール項目を削除
  233. $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
  234. db_query($sql, $params);
  235. pne_cache_drop('db_member_c_profile_list');
  236. }
  237. function db_admin_c_profile4c_profile_id($c_profile_id)
  238. {
  239. $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
  240. $params = array(intval($c_profile_id));
  241. return db_get_row($sql, $params);
  242. }
  243. /**
  244. * 全バナー取得
  245. *
  246. * @param int $limit 取得最大件数
  247. * @return array_of_array c_banner_list バナー配列
  248. */
  249. function db_admin_c_banner_list4null($type = '')
  250. {
  251. $sql = 'SELECT * FROM c_banner';
  252. $params = array();
  253. if ($type) {
  254. $sql .= ' WHERE type = ?';
  255. $params[] = $type;
  256. }
  257. $sql .= ' ORDER BY c_banner_id';
  258. return db_get_all($sql, $params);
  259. }
  260. function db_admin_c_commu_category_parent_list()
  261. {
  262. $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
  263. return db_get_all($sql);
  264. }
  265. function db_admin_c_commu_category_list()
  266. {
  267. $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
  268. $list = db_get_all($sql);
  269. $category_list = array();
  270. foreach ($list as $item) {
  271. $category_list[$item['c_commu_category_parent_id']][] = $item;
  272. }
  273. return $category_list;
  274. }
  275. function db_admin_insert_c_commu_category_parent($name, $sort_order)
  276. {
  277. $data = array(
  278. 'name' => $name,
  279. 'sort_order' => intval($sort_order),
  280. );
  281. return db_insert('c_commu_category_parent', $data);
  282. }
  283. function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
  284. {
  285. $data = array(
  286. 'name' => $name,
  287. 'sort_order' => intval($sort_order),
  288. );
  289. $where = array(
  290. 'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
  291. );
  292. db_update('c_commu_category_parent', $data, $where);
  293. }
  294. function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
  295. {
  296. $params = array(intval($c_commu_category_parent_id));
  297. // 小カテゴリを削除
  298. $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
  299. db_query($sql, $params);
  300. // 中カテゴリを削除
  301. $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
  302. db_query($sql, $params);
  303. }
  304. function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order, $is_create_commu)
  305. {
  306. $data = array(
  307. 'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
  308. 'name' => $name,
  309. 'sort_order' => intval($sort_order),
  310. 'is_create_commu' => intval($is_create_commu),
  311. );
  312. return db_insert('c_commu_category', $data);
  313. }
  314. function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order, $is_create_commu)
  315. {
  316. $data = array(
  317. 'name' => $name,
  318. 'sort_order' => intval($sort_order),
  319. 'is_create_commu' => intval($is_create_commu),
  320. );
  321. $where = array('c_commu_category_id' => intval($c_commu_category_id));
  322. db_update('c_commu_category', $data, $where);
  323. }
  324. function db_admin_delete_c_commu_category($c_commu_category_id)
  325. {
  326. // 小カテゴリを削除
  327. $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
  328. $params = array(intval($c_commu_category_id));
  329. db_query($sql, $params);
  330. }
  331. function db_admin_c_admin_user_id4username($username)
  332. {
  333. $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
  334. $params = array($username);
  335. return db_get_one($sql, $params);
  336. }
  337. function db_admin_authenticate_password($uid, $password)
  338. {
  339. $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
  340. $params = array(intval($uid), md5($password));
  341. return (bool)db_get_one($sql, $params);
  342. }
  343. function db_admin_update_c_admin_user_password($uid, $password)
  344. {
  345. $data = array('password' => md5($password));
  346. $where = array('c_admin_user_id' => intval($uid));
  347. db_update('c_admin_user', $data, $where);
  348. }
  349. function db_admin_c_admin_config4name($name)
  350. {
  351. $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
  352. $params = array($name);
  353. return db_get_one($sql, $params);
  354. }
  355. function db_admin_insert_c_admin_config($name, $value)
  356. {
  357. $data = array(
  358. 'name' => $name,
  359. 'value' => $value,
  360. );
  361. return db_insert('c_admin_config', $data);
  362. }
  363. function db_admin_update_c_admin_config($name, $value)
  364. {
  365. $data = array('value' => $value);
  366. $where = array('name' => $name);
  367. db_update('c_admin_config', $data, $where);
  368. }
  369. function db_admin_replace_c_admin_config($name, $value)
  370. {
  371. $sql = 'DELETE FROM c_admin_config WHERE name = ?';
  372. $params = array($name);
  373. db_query($sql, $params);
  374. $data = array(
  375. 'name' => strval($name),
  376. 'value' => strval($value),
  377. );
  378. return db_insert('c_admin_config', $data);
  379. }
  380. function db_admin_c_admin_config_all()
  381. {
  382. $sql = 'SELECT name, value FROM c_admin_config';
  383. return db_get_assoc($sql);
  384. }
  385. function db_admin_delete_c_image_link4image_filename($image_filename)
  386. {
  387. $parts = explode('_', $image_filename);
  388. $prefix = $parts[0];
  389. switch ($prefix) {
  390. case 'b':
  391. $pkey = (int)$parts[1];
  392. $sql = 'DELETE FROM c_banner WHERE c_banner_id = ? AND image_filename = ?';
  393. $params = array($pkey, $image_filename);
  394. db_query($sql, $params);
  395. break;
  396. case 'c':
  397. $tbl = 'c_commu';
  398. $pkey = (int)$parts[1];
  399. _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
  400. //function cacheの削除
  401. cache_drop_c_commu($pkey);
  402. break;
  403. case 't':
  404. $tbl = 'c_commu_topic_comment';
  405. $pkey = (int)$parts[1];
  406. $number = (int)$parts[2];
  407. $sql = 'SELECT c_commu_topic_comment_id FROM c_commu_topic WHERE c_commu_topic_id = ? AND number = 0';
  408. $pkey = (int)db_get_one($sql, array($pkey));
  409. _db_admin_empty_filename($tbl, $image_filename, 'image_filename'.$number, $pkey);
  410. break;
  411. case 'tc':
  412. $tbl = 'c_commu_topic_comment';
  413. $pkey = (int)$parts[1];
  414. $number = (int)$parts[2];
  415. _db_admin_empty_filename($tbl, $image_filename, 'image_filename'.$number, $pkey);
  416. break;
  417. case 'd':
  418. $tbl = 'c_diary';
  419. $pkey = (int)$parts[1];
  420. $number = (int)$parts[2];
  421. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
  422. break;
  423. case 'dc':
  424. $tbl = 'c_diary_comment';
  425. $pkey = (int)$parts[1];
  426. $number = (int)$parts[2];
  427. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
  428. break;
  429. case 'm':
  430. $tbl = 'c_member';
  431. $pkey = (int)$parts[1];
  432. _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
  433. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1', $pkey);
  434. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2', $pkey);
  435. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3', $pkey);
  436. //function cacheの削除
  437. cache_drop_c_member_profile($pkey);
  438. break;
  439. case 'ms':
  440. $tbl = 'c_message';
  441. $pkey = (int)$parts[1];
  442. $number = (int)$parts[2];
  443. _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
  444. break;
  445. case 'r':
  446. $tbl = 'c_rank';
  447. $pkey = (int)$parts[1];
  448. _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
  449. break;
  450. case 'a':
  451. $tbl = 'c_album';
  452. $pkey = (int)$parts[1];
  453. _db_admin_empty_filename($tbl, $image_filename, 'album_cover_image', $pkey);
  454. $sql = 'DELETE FROM c_album_image WHERE c_album_id = ? AND image_filename = ?';
  455. $params = array($pkey, $image_filename);
  456. db_query($sql, $params);
  457. break;
  458. case 'g':
  459. $tbl = 'biz_group';
  460. _db_admin_empty_filename($tbl, $image_filename);
  461. break;
  462. case 's':
  463. $tbl = 'biz_shisetsu';
  464. _db_admin_empty_filename($tbl, $image_filename);
  465. break;
  466. }
  467. }
  468. function _db_admin_empty_filename($tbl, $image_filename, $column = 'image_filename', $pkey = null)
  469. {
  470. $data = array(
  471. db_escapeIdentifier($column) => '',
  472. );
  473. if ($pkey) {
  474. $where[$tbl . '_id'] = (int)$pkey;
  475. }
  476. $where[db_escapeIdentifier($column)] = $image_filename;
  477. db_update(db_escapeIdentifier($tbl), $data, $where);
  478. }
  479. function db_admin_c_profile_name_exists($name)
  480. {
  481. $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
  482. $params = array($name);
  483. return db_get_one($sql, $params);
  484. }
  485. function db_admin_update_is_login_rejected($c_member_id)
  486. {
  487. // function cacheを削除
  488. cache_drop_c_member_profile($c_member_id);
  489. $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
  490. $params = array(intval($c_member_id));
  491. $is_login_rejected = db_get_one($sql, $params);
  492. if (is_null($is_login_rejected)) {
  493. return false;
  494. }
  495. $data = array('is_login_rejected' => !($is_login_rejected));
  496. $where = array('c_member_id' => intval($c_member_id));
  497. return db_update('c_member', $data, $where);
  498. }
  499. function db_admin_c_admin_user_list()
  500. {
  501. $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
  502. return db_get_all($sql);
  503. }
  504. function db_admin_exists_c_admin_username($username)
  505. {
  506. $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
  507. $params = array(strval($username));
  508. return (bool)db_get_one($sql, $params);
  509. }
  510. function db_admin_insert_c_admin_user($username, $password, $auth_type)
  511. {
  512. $data = array(
  513. 'username' => strval($username),
  514. 'password' => md5($password),
  515. 'auth_type' => strval($auth_type),
  516. );
  517. return db_insert('c_admin_user', $data);
  518. }
  519. function db_admin_delete_c_admin_user($c_admin_user_id)
  520. {
  521. $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
  522. $params = array(intval($c_admin_user_id));
  523. return db_query($sql, $params);
  524. }
  525. function db_admin_get_auth_type($c_admin_user_id)
  526. {
  527. $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
  528. $params = array(intval($c_admin_user_id));
  529. return db_get_one($sql, $params);
  530. }
  531. /**
  532. * c_member テーブル内データによるメンバーIDリスト取得
  533. *
  534. * @return array
  535. */
  536. function db_admin_c_member_id_list4cond_c_member($cond_list, $type = array())
  537. {
  538. $sql = 'SELECT c_member_id FROM c_member';
  539. $wheres = array();
  540. // ID(完全一致)
  541. if (!empty($cond_list['id'])) {
  542. $wheres[] = "c_member_id = ?";
  543. $params[] = $cond_list['id'];
  544. }
  545. // ニックネーム(あいまい検索)
  546. if (!empty($cond_list['nickname'])) {
  547. $wheres[] = "nickname LIKE ?";
  548. $params[] = '%' . $cond_list['nickname'] . '%';
  549. }
  550. // 開始年
  551. if (!empty($cond_list['s_year'])) {
  552. $wheres[] = 'birth_year >= ?';
  553. $params[] = $cond_list['s_year'];
  554. }
  555. // 終了年
  556. if (!empty($cond_list['e_year'])) {
  557. $wheres[] = 'birth_year <= ?';
  558. $params[] = $cond_list['e_year'];
  559. }
  560. // 誕生日による絞り込みの場合は、誕生年が0のメンバーを除外する
  561. if (!empty($cond_list['s_year']) || !empty($cond_list['e_year'])) {
  562. $wheres[] = 'birth_year <> 0';
  563. }
  564. //最終ログイン時間で絞り込み
  565. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'mysql') {
  566. $no_login_param = '0000-00-00 00:00:00';
  567. } elseif ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  568. $no_login_param = '0000-01-01 00:00:00';
  569. }
  570. if (isset($cond_list['last_login'])) {
  571. switch($cond_list['last_login']) {
  572. case 1 : // 3日以内
  573. $wheres[] = 'access_date >= ?';
  574. $params[] = date('Y-m-d', strtotime('-3 day'));
  575. break;
  576. case 2 : // 3~7日以内
  577. $wheres[] = 'access_date >= ? AND access_date < ?';
  578. $params[] = date('Y-m-d', strtotime('-7 day'));
  579. $params[] = date('Y-m-d', strtotime('-3 day'));
  580. break;
  581. case 3 : // 7~30日以内
  582. $wheres[] = 'access_date >= ? AND access_date < ?';
  583. $params[] = date('Y-m-d', strtotime('-30 day'));
  584. $params[] = date('Y-m-d', strtotime('-7 day'));
  585. break;
  586. case 4 : // 30日以上
  587. $wheres[] = 'access_date > ? AND access_date < ?';
  588. $params[] = $no_login_param;
  589. $params[] = date('Y-m-d', strtotime('-30 day'));
  590. break;
  591. case 5 : // 未ログイン
  592. $wheres[] = 'access_date = ?';
  593. $params[] = $no_login_param;
  594. break;
  595. }
  596. }
  597. if ($wheres) {
  598. $sql .= ' WHERE ' . implode(' AND ', $wheres);
  599. }
  600. // --- ソートオーダーここから
  601. // $orderの例:id_1 , id_2
  602. // 「-」の前が項目名であとが1なら昇順 2なら降順
  603. // プロフィール識別子であれば除外
  604. $is_order = false;
  605. if (!empty($type)) {
  606. $is_order = true;
  607. switch ($type[0]) {
  608. case "c_member_id":
  609. $sql .= ' ORDER BY c_member_id';
  610. break;
  611. case "nickname":
  612. $sql .= ' ORDER BY nickname';
  613. break;
  614. case "image_filename":
  615. $sql .= ' ORDER BY image_filename';
  616. break;
  617. case "c_member_id_invite":
  618. $sql .= ' ORDER BY c_member_id_invite';
  619. break;
  620. case "access_date":
  621. $sql .= ' ORDER BY access_date';
  622. break;
  623. case "r_date":
  624. $sql .= ' ORDER BY r_date';
  625. break;
  626. case "birth":
  627. // 降順指定
  628. if ($type[1] == "2") {
  629. $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
  630. } else {
  631. $sql .= ' ORDER BY birth_year, birth_month, birth_day';
  632. }
  633. break;
  634. default :
  635. $is_order = false;
  636. }
  637. // 降順指定
  638. if ($is_order && $type[1] == "2") {
  639. $sql .= ' DESC';
  640. }
  641. }
  642. // --- ソートオーダーここまで
  643. return db_get_col($sql, $params);
  644. }
  645. /**
  646. * PNE_POINT によるメンバーIDリスト絞り込み
  647. *
  648. * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
  649. *
  650. * @return array
  651. */
  652. function db_admin_c_member_id_list4cond_pne_point($ids, $cond_list)
  653. {
  654. $s_point = null;
  655. $e_point = null;
  656. $sql = 'SELECT c_member_id'
  657. . ' FROM c_member_profile'
  658. . ' INNER JOIN c_profile USING (c_profile_id)'
  659. . ' WHERE name = ?';
  660. $params = array('PNE_POINT');
  661. if ($cond_list['s_rank']) {
  662. $s_point = db_point_get_rank_point4rank_id($cond_list['s_rank']);
  663. $sql .= ' AND value >= ?';
  664. $params[] = (int)$s_point;
  665. }
  666. if ($cond_list['e_rank']) {
  667. $e_point = db_point_get_next_rank_point4rank_id($cond_list['e_rank']);
  668. if (!is_null($e_point)) {
  669. $sql .= ' AND value < ?';
  670. $params[] = (int)$e_point;
  671. }
  672. }
  673. $point_ids = db_get_col($sql, $params);
  674. // s_point が 0 以下もしくは未定義であり、 e_point が未定義もしくは 0 を超過する場合、 c_member_profile に PNE_POINT が存在しないメンバーも結果に含める
  675. if ((is_null($s_point) || $s_point <= 0) && (is_null($e_point) || $e_point > 0)) {
  676. $sql = 'SELECT c_member_id FROM c_member_profile'
  677. . ' INNER JOIN c_profile USING (c_profile_id)'
  678. . ' WHERE name = ?';
  679. $params = array('PNE_POINT');
  680. $have_point_ids = db_get_col($sql, $params);
  681. // この関数に渡されたメンバーIDの配列と、PNE_POINTが存在するすべてのメンバーIDの配列の差分を結果に追加する
  682. $point_ids = array_merge($point_ids, array_diff($ids, $have_point_ids));
  683. }
  684. return array_intersect($ids, $point_ids);
  685. }
  686. /**
  687. * メールアドレスの有無によるメンバーIDリスト絞り込み
  688. *
  689. * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
  690. *
  691. * @return array
  692. */
  693. function db_admin_c_member_id_list4cond_mail_address($ids, $cond_list)
  694. {
  695. $sql = 'SELECT c_member_id FROM c_member_secure';
  696. $wheres = array();
  697. // PCメールアドレスの有無で絞る
  698. if ($cond_list['is_pc_address'] == 1) {
  699. $wheres[] = "pc_address <> ''";
  700. } elseif ($cond_list['is_pc_address'] == 2) {
  701. $wheres[] = "pc_address = ''";
  702. }
  703. // 携帯メールアドレスの有無で絞る
  704. if ($cond_list['is_ktai_address'] == 1) {
  705. $wheres[] = "ktai_address <> ''";
  706. } elseif ($cond_list['is_ktai_address'] == 2) {
  707. $wheres[] = "ktai_address = ''";
  708. }
  709. if ($wheres) {
  710. $where = ' WHERE ' . implode(' AND ', $wheres);
  711. } else {
  712. $where = '';
  713. }
  714. $sql .= $where;
  715. $temp_ids = db_get_col($sql);
  716. return array_intersect($ids, $temp_ids);
  717. }
  718. /**
  719. * c_profile 内データによるメンバーIDリスト絞り込み
  720. *
  721. * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
  722. *
  723. * @return array
  724. */
  725. function db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type)
  726. {
  727. // ランクでソートとポイントでソートは同等
  728. if ($type[0] == 'RANK') {
  729. $type[0] = 'PNE_POINT';
  730. }
  731. // 各プロフィールごとに絞り込み
  732. $sql = 'SELECT name, form_type, c_profile_id FROM c_profile';
  733. $profile = db_get_all($sql);
  734. $profile_cond = $cond_list['profile'];
  735. if ($profile) {
  736. foreach ($profile as $value) {
  737. if(!empty($profile_cond[$value['name']]) ) {
  738. if ($value['form_type'] == 'radio' || $value['form_type'] == 'select') {
  739. $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
  740. $params = array($profile_cond[$value['name']]);
  741. } else if ($value['form_type'] == 'checkbox') {
  742. $c_profile_option_id_list = implode(", ", $profile_cond[$value['name']]);
  743. $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id IN ( '. $c_profile_option_id_list .' )';
  744. $params = array();
  745. } else {
  746. $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ? AND value LIKE ?';
  747. $params = array($value['c_profile_id'],'%' . $profile_cond[$value['name']] . '%');
  748. }
  749. $temp_ids = db_get_col($sql, $params);
  750. $ids = array_intersect($ids, $temp_ids);
  751. }
  752. if($value['name'] == $type[0]) {
  753. $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ?';
  754. if ($value['form_type'] == 'radio'
  755. || $value['form_type'] == 'select'
  756. || $value['form_type'] == 'checkbox') {
  757. $sql .= ' ORDER BY c_profile_option_id';
  758. } else {
  759. if ($value['name'] == "PNE_POINT") {
  760. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  761. $sql .= ' ORDER BY cast(value as integer)';
  762. } else {
  763. $sql .= ' ORDER BY cast(value as signed)';
  764. }
  765. } else {
  766. $sql .= ' ORDER BY value';
  767. }
  768. }
  769. if ($type[1] == "2") {
  770. $sql .= ' DESC';
  771. }
  772. $params = array($value['c_profile_id']);
  773. $temp_ids = db_get_col($sql, $params);
  774. $ids = array_intersect($temp_ids, $ids);
  775. }
  776. }
  777. }
  778. return $ids;
  779. }
  780. /**
  781. * ログインIDによるメンバーIDリストソート
  782. *
  783. * @return array
  784. */
  785. function db_admin_c_member_id_list_sort4username($ids, $type)
  786. {
  787. $sql = 'SELECT c_member_id FROM c_username ORDER BY username';
  788. if ($type[1] == '2') {
  789. $sql .= ' DESC';
  790. }
  791. $temp_ids = db_get_col($sql, $params);
  792. $ids = array_intersect($temp_ids, $ids);
  793. return $ids;
  794. }
  795. /**
  796. * メールアドレスによるメンバ絞込み
  797. *
  798. */
  799. function db_admin_c_member_id_list4cond_str_mail_address($ids, $cond_list)
  800. {
  801. if ( !empty($cond_list['mail_address']) ) {
  802. $sql = 'SELECT c_member_id FROM c_member_secure' .
  803. ' WHERE pc_address = ? OR ktai_address = ? OR regist_address = ?';
  804. $enc_address = t_encrypt($cond_list['mail_address']);
  805. $params = array($enc_address, $enc_address, $enc_address);
  806. $ids = array_intersect($ids, db_get_col($sql, $params));
  807. }
  808. return $ids;
  809. }
  810. /**
  811. * ログインIDによるメンバ絞込み
  812. *
  813. */
  814. function db_admin_c_member_id_list4cond_username($ids, $cond_list)
  815. {
  816. if ( !empty($cond_list['username']) ) {
  817. $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
  818. $params = array($cond_list['username']);
  819. $ids = array_intersect($ids, db_get_col($sql, $params));
  820. }
  821. return $ids;
  822. }
  823. /**
  824. * メンバーIDリスト取得(絞り込み対応)
  825. */
  826. function _db_admin_c_member_id_list($cond_list, $order = '')
  827. {
  828. $type = explode('-', $order);
  829. $ids = db_admin_c_member_id_list4cond_c_member($cond_list, $type);
  830. // ポイントで絞り込み
  831. if ($cond_list['s_rank'] || $cond_list['e_rank']) {
  832. $ids = db_admin_c_member_id_list4cond_pne_point($ids, $cond_list);
  833. }
  834. // メールアドレスで絞り込み
  835. if (!empty($cond_list['is_pc_address']) || !empty($cond_list['is_ktai_address'])) {
  836. $ids = db_admin_c_member_id_list4cond_mail_address($ids, $cond_list);
  837. }
  838. // ログインIDでソート
  839. if ($type[0] == 'username' && OPENPNE_AUTH_MODE != 'email') {
  840. $ids = db_admin_c_member_id_list_sort4username($ids, $type);
  841. }
  842. // プロフィール項目で絞り込み
  843. $ids = db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type);
  844. // 登録メールアドレスで絞込み
  845. $ids = db_admin_c_member_id_list4cond_str_mail_address($ids, $cond_list);
  846. // ログインIDで絞込み
  847. $ids = db_admin_c_member_id_list4cond_username($ids, $cond_list);
  848. return $ids;
  849. }
  850. /**
  851. * メンバーリスト取得
  852. * 誕生年+プロフィール(select,radioのみ)
  853. */
  854. function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list, $order)
  855. {
  856. $ids = _db_admin_c_member_id_list($cond_list, $order);
  857. $total_num = count($ids);
  858. $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
  859. $c_member_list = array();
  860. foreach ($ids as $id) {
  861. $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
  862. }
  863. if ($total_num > 0) {
  864. $pager = util_make_pager($page, $page_size, $total_num);
  865. } else {
  866. $pager = array('page_size' => $page_size);
  867. }
  868. return $c_member_list;
  869. }
  870. /**
  871. * プロフィール識別名と c_profile_option_id より c_profile.value を返す
  872. */
  873. function db_c_profile_get_profile_value4requested_profile($c_profile_name, $c_profile_option_id)
  874. {
  875. $sql = "SELECT po.value FROM c_profile_option po"
  876. . " LEFT JOIN c_profile p ON po.c_profile_id = p.c_profile_id"
  877. . " WHERE p.form_type in ('select', 'checkbox', 'radio')"
  878. . " AND p.name = ?"
  879. . " AND po.c_profile_option_id = ?";
  880. $params = array($c_profile_name, intval($c_profile_option_id));
  881. return db_get_one($sql, $params);
  882. }
  883. /**
  884. * c_profile.name より c_profile.caption を返す
  885. */
  886. function db_c_profile_get_caption4name($name)
  887. {
  888. $sql = "SELECT caption FROM c_profile WHERE name = ?";
  889. $params = array($name);
  890. return db_get_one($sql, $params);
  891. }
  892. /**
  893. * メンバー絞込みパラメータ取得
  894. */
  895. function validate_cond($requests)
  896. {
  897. $cond_list = array();
  898. //ID
  899. if ( !empty($requests['id']) ) {
  900. $cond_list['id'] = intval($requests['id']);
  901. }
  902. //ログインID
  903. if (isset($requests['username']) && $requests['username'] !== '') {
  904. $cond_list['username'] = $requests['username'];
  905. }
  906. //ニックネーム
  907. if ( !empty($requests['nickname']) ) {
  908. $cond_list['nickname'] = $requests['nickname'];
  909. }
  910. //誕生年
  911. if (!empty($requests['s_year'])) {
  912. $cond_list['s_year'] = intval($requests['s_year']);
  913. }
  914. if (!empty($requests['e_year'])) {
  915. $cond_list['e_year'] = intval($requests['e_year']);
  916. }
  917. //プロフィール
  918. $profile_list = db_member_c_profile_list();
  919. $profile_req = $requests['profile'];
  920. if (is_array($profile_req)) {
  921. $profile_cond = array();
  922. foreach ($profile_list as $key => $value) {
  923. if (isset($profile_req[$key])) {
  924. if ($value['form_type'] == 'select' || $value['form_type'] == 'radio') {
  925. $profile_cond[$key] = intval($profile_req[$key]);
  926. } else {
  927. $profile_cond[$key] = $profile_req[$key];
  928. }
  929. }
  930. }
  931. $cond_list['profile'] = $profile_cond;
  932. }
  933. // 最終ログイン時間
  934. if (!empty($requests['last_login'])) {
  935. $cond_list['last_login'] = intval($requests['last_login']);
  936. }
  937. // メールアドレス
  938. if (!empty($requests['mail_address'])) {
  939. $cond_list['mail_address'] = $requests['mail_address'];
  940. }
  941. //PCメールアドレスの有無
  942. if (!empty($requests['is_pc_address'])) {
  943. $cond_list['is_pc_address'] = intval($requests['is_pc_address']);
  944. }
  945. //携帯メールアドレスの有無
  946. if (!empty($requests['is_ktai_address'])) {
  947. $cond_list['is_ktai_address'] = intval($requests['is_ktai_address']);
  948. }
  949. //ポイント
  950. if (isset($requests['s_rank']) && $requests['s_rank'] !== '') {
  951. $cond_list['s_rank'] = intval($requests['s_rank']);
  952. }
  953. if (isset($requests['e_rank']) && $requests['e_rank'] !== '') {
  954. $cond_list['e_rank'] = intval($requests['e_rank']);
  955. }
  956. return $cond_list;
  957. }
  958. /**
  959. * メンバー絞り込みパラメータ取得(プロフィール)
  960. */
  961. function validate_profile_cond($requests)
  962. {
  963. $cond_list = array();
  964. //プロフィール
  965. $profile_list = db_member_c_profile_list();
  966. foreach ($profile_list as $key => $value) {
  967. if (!empty($requests[$key])) {
  968. $cond_list[$key] = $requests[$key];
  969. }
  970. }
  971. return $cond_list;
  972. }
  973. function do_admin_send_mail($c_member_id, $subject, $body)
  974. {
  975. $c_member = db_member_c_member4c_member_id($c_member_id, true);
  976. if ($c_member['secure']['pc_address']) {
  977. $send_address = $c_member['secure']['pc_address'];
  978. } else {
  979. $send_address = $c_member['secure']['ktai_address'];
  980. }
  981. if (OPENPNE_MAIL_QUEUE) {
  982. //メールキューに蓄積
  983. put_mail_queue($send_address, $subject, $body);
  984. } else {
  985. t_send_email($send_address, $subject, $body);
  986. }
  987. }
  988. //メッセージ受信メール(メール&メッセージキュー蓄積対応)
  989. function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
  990. {
  991. //メッセージ
  992. if (OPENPNE_MESSAGE_QUEUE) {
  993. //メッセージキューに蓄積
  994. db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
  995. return true;
  996. } else {
  997. $c_message_id = db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
  998. do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from, $subject, $body, $c_message_id);
  999. do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body);
  1000. return true;
  1001. }
  1002. return false;
  1003. }
  1004. //メッセージ受信メール(メールキュー蓄積対応)
  1005. function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from, $subject, $body, $c_message_id)
  1006. {
  1007. $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
  1008. $pc_address = $c_member_to['secure']['pc_address'];
  1009. $is_receive_mail = $c_member_to['is_receive_mail'];
  1010. $params = array(
  1011. "c_member_to" => db_member_c_member4c_member_id($c_member_id_to),
  1012. "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
  1013. 'subject' => $subject,
  1014. 'body' => $body,
  1015. 'c_message_id' => $c_message_id,
  1016. );
  1017. return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
  1018. }
  1019. //◆メッセージ受信メール(携帯)
  1020. function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body)
  1021. {
  1022. $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
  1023. $ktai_address = $c_member_to['secure']['ktai_address'];
  1024. $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
  1025. $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
  1026. $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
  1027. $params = array(
  1028. 'c_member_to' => db_member_c_member4c_member_id($c_member_id_to),
  1029. 'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
  1030. 'login_url' => $login_url,
  1031. 'subject' => $subject,
  1032. 'body' => $body,
  1033. );
  1034. return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
  1035. }
  1036. function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
  1037. {
  1038. $tpl_name .= '.tpl';
  1039. if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
  1040. list($subject, $body) = $tpl;
  1041. if ($from) {
  1042. if (OPENPNE_MAIL_QUEUE) {
  1043. //メールキューに蓄積
  1044. put_mail_queue($address, $subject, $body, $force, $from);
  1045. } else {
  1046. t_send_email($address, $subject, $body, $force, $from);
  1047. }
  1048. } else {
  1049. if (OPENPNE_MAIL_QUEUE) {
  1050. //メールキューに蓄積
  1051. put_mail_queue($address, $subject, $body, $force);
  1052. } else {
  1053. t_send_email($address, $subject, $body, $force);
  1054. }
  1055. }
  1056. return true;
  1057. } else {
  1058. return false;
  1059. }
  1060. }
  1061. function db_access_analysis_c_admin_user_id4username($username)
  1062. {
  1063. $sql = "SELECT c_admin_user_id FROM c_admin_user" .
  1064. " WHERE username = ?";
  1065. $params = array($username);
  1066. return db_get_one($sql,$params);
  1067. }
  1068. function p_access_analysis_month_access_analysis_month($ktai_flag)
  1069. {
  1070. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1071. $sql = "SELECT to_char(r_datetime, 'YYYY-MM-01') as ym, count(*) as count" .
  1072. " FROM c_access_log " .
  1073. " where ktai_flag = ?" .
  1074. " group by ym".
  1075. " order by ym asc";
  1076. } else {
  1077. $sql = "SELECT date_format(r_datetime, '%Y-%m-01') as ym, count(*) as count" .
  1078. " FROM c_access_log " .
  1079. " where ktai_flag = ?" .
  1080. " group by ym";
  1081. }
  1082. $params = array(intval($ktai_flag));
  1083. $list = db_get_all($sql,$params);
  1084. return $list;
  1085. }
  1086. function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
  1087. {
  1088. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1089. $sql = "SELECT to_char(r_datetime, 'YYYY-MM-DD') as ymd , count(*) as count" .
  1090. " FROM c_access_log " .
  1091. " where to_char(r_datetime, 'YYYY-MM') = ?" .
  1092. " and ktai_flag = ? " .
  1093. " group by ymd";
  1094. } else {
  1095. $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
  1096. " FROM c_access_log " .
  1097. " where left(r_datetime, 7) = ?" .
  1098. " and ktai_flag = ? " .
  1099. " group by ymd";
  1100. }
  1101. $params = array(substr($ym, 0, 7), intval($ktai_flag));
  1102. $list = db_get_all($sql,$params);
  1103. $year = substr($ym, 0, 4);
  1104. $month = substr($ym, 5,2);
  1105. $return = array();
  1106. $days_num = date("t", mktime (0,0,0,$month,1,$year));
  1107. for($i=1 ; $i<=$days_num; $i++) {
  1108. $date = substr($ym,0,8) . substr("00".$i, -2, 2);
  1109. $count = 0;
  1110. foreach($list as $value) {
  1111. if ($value['ymd'] == $date) {
  1112. $count = $value['count'];
  1113. }
  1114. }
  1115. $return[] = array("ymd"=>$date, "count"=>$count);
  1116. }
  1117. return $return;
  1118. }
  1119. function get_page_name($ktai_flag, $orderby=1)
  1120. {
  1121. if ($orderby == 1) {
  1122. $orderby_str = " order by page_name asc";
  1123. } elseif ($orderby == -1) {
  1124. $orderby_str = " order by page_name desc";
  1125. }
  1126. $sql = "select distinct page_name from c_access_log " .
  1127. " where ktai_flag = ? " .
  1128. $orderby_str;
  1129. $params = array(intval($ktai_flag));
  1130. return db_get_col($sql,$params);
  1131. }
  1132. function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
  1133. {
  1134. if ($orderby == 1) {
  1135. $orderby_str = " order by page_name asc";
  1136. } elseif ($orderby == -1) {
  1137. $orderby_str = " order by page_name desc";
  1138. } elseif ($orderby == 2) {
  1139. $orderby_str = " order by count asc";
  1140. } elseif ($orderby == -2) {
  1141. $orderby_str = " order by count desc";
  1142. }
  1143. $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
  1144. $params = array(intval($ktai_flag));
  1145. if ($month_flag) {
  1146. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1147. $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1148. } else {
  1149. $sql .= " and left(r_datetime, 7) = ? ";
  1150. }
  1151. array_push($params,substr($ymd,0,7));
  1152. } else {
  1153. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1154. $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1155. } else {
  1156. $sql .= " and left(r_datetime,10) = ? ";
  1157. }
  1158. array_push($params,$ymd);
  1159. }
  1160. $sql .= " group by page_name ". $orderby_str;
  1161. $list = db_get_all($sql,$params);
  1162. $sum = 0;
  1163. $return = array();
  1164. if (abs($orderby) == 1) {
  1165. $page_name = get_page_name($ktai_flag, $orderby);
  1166. foreach($page_name as $name) {
  1167. $count = 0;
  1168. foreach($list as $value) {
  1169. if ($value['page_name'] == $name) $count = $value['count'];
  1170. }
  1171. list($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id) = get_is_show($name);
  1172. $return[] = array("page_name"=>$name, "count"=> $count, "is_target_c_member_id"=> $is_target_c_member_id, "is_target_c_commu_id"=> $is_target_c_commu_id, "is_target_c_topic_id"=> $is_target_c_topic_id, "is_target_c_diary_id"=> $is_target_c_diary_id, "is_c_member_id"=> $is_c_member_id);
  1173. $sum += $count;
  1174. }
  1175. } elseif (abs($orderby) == 2) {
  1176. $page_name = get_page_name($ktai_flag);
  1177. $t_page_name = $page_name;
  1178. //アクセスがゼロのページを取得する
  1179. foreach($page_name as $key=>$name) {
  1180. foreach($list as $value) {
  1181. if ($value['page_name'] == $name) {
  1182. unset($page_name[$key]);//$listに含まれるページネームを削除
  1183. }
  1184. }
  1185. }
  1186. foreach($page_name as $key=>$name) {
  1187. $page_name[$key] = array("page_name"=>$name, "count"=>0);
  1188. }
  1189. if ($orderby == 2) {
  1190. $return = array_merge($page_name , $list);
  1191. } elseif ($orderby == -2) {
  1192. $return = array_merge($list, $page_name);
  1193. }
  1194. foreach($list as $value) {
  1195. $sum += $value['count'];
  1196. }
  1197. foreach($return as $value) {
  1198. list($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id) = get_is_show($value['page_name']);
  1199. $value['is_target_c_member_id'] = $is_target_c_member_id;
  1200. $value['is_target_c_commu_id'] = $is_target_c_commu_id;
  1201. $value['is_target_c_topic_id'] = $is_target_c_topic_id;
  1202. $value['is_target_c_diary_id'] = $is_target_c_diary_id;
  1203. $value['is_c_member_id'] = $is_c_member_id;
  1204. $t_return[] = $value;
  1205. }
  1206. $return = $t_return;
  1207. }
  1208. return array($return, $sum);
  1209. }
  1210. /*
  1211. * target_commu
  1212. *
  1213. */
  1214. function p_access_analysis_target_commu_target_commu4ym_page_name
  1215. ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
  1216. {
  1217. $start = ($page - 1) * $page_size;
  1218. if ($orderby == 1) {
  1219. $orderby_str = " order by target_c_commu_id asc";
  1220. } elseif ($orderby == -1) {
  1221. $orderby_str = " order by target_c_commu_id desc";
  1222. } elseif ($orderby == 2) {
  1223. $orderby_str = " order by count asc";
  1224. } elseif ($orderby == -2) {
  1225. $orderby_str = " order by count desc";
  1226. }
  1227. $sql = "select target_c_commu_id , count(*) as count from c_access_log where ktai_flag = ? ";
  1228. $params = array(intval($ktai_flag));
  1229. if ($month_flag) {
  1230. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1231. $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1232. } else {
  1233. $sql .= " and left(r_datetime, 7) = ? ";
  1234. }
  1235. array_push($params,substr($ymd,0,7));
  1236. } else {
  1237. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1238. $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1239. } else {
  1240. $sql .= " and left(r_datetime,10) = ? ";
  1241. }
  1242. array_push($params,$ymd);
  1243. }
  1244. if ($page_name!="all") {
  1245. $sql .= " and page_name = ? ";
  1246. array_push($params,$page_name);
  1247. }
  1248. $sql .= " and target_c_commu_id <> 0 ";
  1249. $sql .= " group by target_c_commu_id " .$orderby_str;
  1250. if ($page_size != -1) {
  1251. $list = db_get_all_limit($sql, $start, $page_size, $params);
  1252. }
  1253. else {
  1254. $list = db_get_all($sql, $params);
  1255. }
  1256. $return = array();
  1257. $sum = 0;
  1258. foreach($list as $key => $value) {
  1259. if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
  1260. $value['is_c_commu_exists'] = true;
  1261. $return[] = array_merge($value, $c_commu);
  1262. } else {
  1263. $value['is_c_commu_exists'] = false;
  1264. $return[] = $value;
  1265. }
  1266. $sum += $value['count'];
  1267. }
  1268. $sql = "select count(*) from c_access_log where ktai_flag = ? ";
  1269. $params = array(intval($ktai_flag));
  1270. if ($month_flag) {
  1271. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1272. $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1273. } else {
  1274. $sql .= " and left(r_datetime, 7) = ? ";
  1275. }
  1276. array_push($params,substr($ymd,0,7));
  1277. } else {
  1278. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1279. $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1280. } else {
  1281. $sql .= " and left(r_datetime,10) = ? ";
  1282. }
  1283. array_push($params,$ymd);
  1284. }
  1285. if ($page_name!="all") {
  1286. $sql .= " and page_name = ? ";
  1287. array_push($params,$page_name);
  1288. }
  1289. $sql .= " and target_c_commu_id <> 0 ";
  1290. $sql .= " group by target_c_commu_id ";
  1291. $result = db_get_all($sql,$params);
  1292. $total_num = count($result);
  1293. if ($total_num != 0) {
  1294. $total_page_num = ceil($total_num / $page_size);
  1295. if ($page >= $total_page_num) {
  1296. $next = false;
  1297. }else{
  1298. $next = true;
  1299. }
  1300. if ($page <= 1) {
  1301. $prev = false;
  1302. }else{
  1303. $prev = true;
  1304. }
  1305. }
  1306. $start_num = ($page - 1) * $page_size + 1 ;
  1307. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1308. return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
  1309. }
  1310. function p_access_analysis_target_topic_target_topic4ym_page_name
  1311. ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
  1312. {
  1313. $start = ($page - 1) * $page_size;
  1314. if ($orderby == 1) {
  1315. $orderby_str = " order by target_c_commu_topic_id asc";
  1316. } elseif ($orderby == -1) {
  1317. $orderby_str = " order by target_c_commu_topic_id desc";
  1318. } elseif ($orderby == 2) {
  1319. $orderby_str = " order by count asc";
  1320. } elseif ($orderby == -2) {
  1321. $orderby_str = " order by count desc";
  1322. }
  1323. $where =" where ktai_flag = ? ";
  1324. $params = array(intval($ktai_flag));
  1325. if ($month_flag) {
  1326. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1327. $where .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1328. } else {
  1329. $where .= " and left(r_datetime, 7) = ? ";
  1330. }
  1331. array_push($params,substr($ymd,0,7));
  1332. } else {
  1333. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1334. $where .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1335. } else {
  1336. $where .= " and left(r_datetime,10) = ? ";
  1337. }
  1338. array_push($params,$ymd);
  1339. }
  1340. if ($page_name!="all") {
  1341. $where .= " and page_name = ? ";
  1342. array_push($params,$page_name);
  1343. }
  1344. $where .= ' and target_c_commu_topic_id <> 0 ';
  1345. $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
  1346. $sql .= $where." group by target_c_commu_topic_id " .$orderby_str;
  1347. if ($page_size != -1) {
  1348. $list = db_get_all_limit($sql, $start, $page_size, $params);
  1349. }
  1350. else {
  1351. $list = db_get_all($sql, $params);
  1352. }
  1353. $sql = "select count(*) from c_access_log ";
  1354. $sql .= $where ." group by target_c_commu_topic_id ";
  1355. $result = db_get_all($sql,$params);
  1356. $total_num = count($result);
  1357. $return = array();
  1358. $sum = 0;
  1359. foreach ($list as $key => $value) {
  1360. if ($value['target_c_commu_topic_id']) {
  1361. if ($c_commu_topic = db_commu_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
  1362. $c_commu_topic['topic_name'] = $c_commu_topic['name'];
  1363. $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
  1364. $c_commu_topic['commu_name'] = $c_commu['name'];
  1365. $value['is_c_commu_topic_exists'] = true;
  1366. $return[] = array_merge($value, $c_commu_topic);
  1367. } else {
  1368. $value['is_c_commu_topic_exists'] = false;
  1369. $return[] = $value;
  1370. }
  1371. $sum += $value['count'];
  1372. }
  1373. }
  1374. if ($total_num != 0) {
  1375. $total_page_num = ceil($total_num / $page_size);
  1376. if ($page >= $total_page_num) {
  1377. $next = false;
  1378. } else {
  1379. $next = true;
  1380. }
  1381. if ($page <= 1) {
  1382. $prev = false;
  1383. } else {
  1384. $prev = true;
  1385. }
  1386. }
  1387. $start_num = ($page - 1) * $page_size + 1 ;
  1388. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1389. return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
  1390. }
  1391. function p_access_analysis_target_diary_target_diary4ym_page_name
  1392. ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
  1393. {
  1394. $start = ($page - 1) * $page_size;
  1395. if ($orderby == 1) {
  1396. $orderby_str = " order by target_c_diary_id asc";
  1397. } elseif ($orderby == -1) {
  1398. $orderby_str = " order by target_c_diary_id desc";
  1399. } elseif ($orderby == 2) {
  1400. $orderby_str = " order by count asc";
  1401. } elseif ($orderby == -2) {
  1402. $orderby_str = " order by count desc";
  1403. }
  1404. $sql = "select target_c_diary_id , count(*) as count from c_access_log where ktai_flag = ? ";
  1405. $params = array(intval($ktai_flag));
  1406. if ($month_flag) {
  1407. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1408. $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1409. } else {
  1410. $sql .= " and left(r_datetime, 7) = ? ";
  1411. }
  1412. array_push($params,substr($ymd,0,7));
  1413. } else {
  1414. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1415. $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1416. } else {
  1417. $sql .= " and left(r_datetime,10) = ? ";
  1418. }
  1419. array_push($params,$ymd);
  1420. }
  1421. if ($page_name!="all") {
  1422. $sql .= " and page_name = ? ";
  1423. array_push($params,$page_name);
  1424. }
  1425. $sql .= " and target_c_diary_id <> 0 ";
  1426. $sql .= " group by target_c_diary_id " . $orderby_str;
  1427. if ($page_size != -1) {
  1428. $list = db_get_all_limit($sql, $start, $page_size, $params);
  1429. }
  1430. else {
  1431. $list = db_get_all($sql, $params);
  1432. }
  1433. $return = array();
  1434. $sum = 0;
  1435. foreach ($list as $key => $value) {
  1436. if ($c_diary = db_diary_get_c_diary4id($value['target_c_diary_id'])) {
  1437. $c_member = db_member_c_member4c_member_id($c_diary['c_member_id']);
  1438. $c_diary['nickname'] = $c_member['nickname'];
  1439. $value['is_c_diary_exists'] = true;
  1440. $return[] = array_merge($value, $c_diary);
  1441. } else {
  1442. $value['is_c_diary_exists'] = false;
  1443. $return[] = $value;
  1444. }
  1445. $sum += $value['count'];
  1446. }
  1447. $sql = "select count(*) from c_access_log where ktai_flag = ? ";
  1448. $params = array(intval($ktai_flag));
  1449. if ($month_flag) {
  1450. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1451. $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1452. } else {
  1453. $sql .= " and left(r_datetime, 7) = ? ";
  1454. }
  1455. array_push($params,substr($ymd,0,7));
  1456. } else {
  1457. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1458. $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1459. } else {
  1460. $sql .= " and left(r_datetime,10) = ? ";
  1461. }
  1462. array_push($params,$ymd);
  1463. }
  1464. $sql .= " and target_c_diary_id <> 0 ";
  1465. $sql .= " group by target_c_diary_id ";
  1466. $result = db_get_all($sql,$params);
  1467. $total_num = count($result);
  1468. if ($total_num != 0) {
  1469. $total_page_num = ceil($total_num / $page_size);
  1470. if ($page >= $total_page_num) {
  1471. $next = false;
  1472. }else{
  1473. $next = true;
  1474. }
  1475. if ($page <= 1) {
  1476. $prev = false;
  1477. }else{
  1478. $prev = true;
  1479. }
  1480. }
  1481. $start_num = ($page - 1) * $page_size + 1 ;
  1482. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1483. return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
  1484. }
  1485. function p_access_analysis_member_access_member4ym_page_name
  1486. ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
  1487. {
  1488. $start = ($page - 1) * $page_size;
  1489. if ($orderby == 1) {
  1490. $orderby_str = " order by c_member_id asc";
  1491. } elseif ($orderby == -1) {
  1492. $orderby_str = " order by c_member_id desc";
  1493. } elseif ($orderby == 2) {
  1494. $orderby_str = " order by count asc";
  1495. } elseif ($orderby == -2) {
  1496. $orderby_str = " order by count desc";
  1497. }
  1498. $where =" where ktai_flag = ? ";
  1499. $params = array(intval($ktai_flag));
  1500. if ($month_flag) {
  1501. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1502. $where .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1503. } else {
  1504. $where .= " and left(r_datetime, 7) = ? ";
  1505. }
  1506. array_push($params,substr($ymd,0,7));
  1507. } else {
  1508. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1509. $where .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1510. } else {
  1511. $where .= " and left(r_datetime,10) = ? ";
  1512. }
  1513. array_push($params,$ymd);
  1514. }
  1515. if ($page_name!="all") {
  1516. $where .= " and page_name = ? ";
  1517. array_push($params,$page_name);
  1518. }
  1519. $sql = "select c_member_id , count(*) as count from c_access_log";
  1520. $sql .= $where." group by c_member_id $orderby_str";
  1521. if ($page_size != -1) {
  1522. $list = db_get_all_limit($sql, $start, $page_size, $params);
  1523. }
  1524. else {
  1525. $list = db_get_all($sql, $params);
  1526. }
  1527. $sql = "select count(*) from c_access_log ";
  1528. $sql .= $where ." group by c_member_id ";
  1529. $result = db_get_all($sql,$params);
  1530. $total_num = count($result);
  1531. $return = array();
  1532. $sum = 0;
  1533. foreach($list as $key => $value) {
  1534. if ($value['c_member_id']) {
  1535. if ($c_member = _db_c_member4c_member_id($value['c_member_id'])) {
  1536. $value['is_c_member_exists'] = true;
  1537. $return[] = array_merge($value, $c_member);
  1538. } else {
  1539. $value['is_c_member_exists'] = false;
  1540. $return[] = $value;
  1541. }
  1542. $sum += $value['count'];
  1543. }
  1544. }
  1545. if ($total_num != 0) {
  1546. $total_page_num = ceil($total_num / $page_size);
  1547. if ($page >= $total_page_num) {
  1548. $next = false;
  1549. }else{
  1550. $next = true;
  1551. }
  1552. if ($page <= 1) {
  1553. $prev = false;
  1554. }else{
  1555. $prev = true;
  1556. }
  1557. }
  1558. $start_num = ($page - 1) * $page_size + 1 ;
  1559. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1560. return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
  1561. }
  1562. function p_access_analysis_target_member_access_member4ym_page_name
  1563. ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
  1564. {
  1565. $start = ($page - 1) * $page_size;
  1566. if ($orderby == 1) {
  1567. $orderby_str = " order by target_c_member_id asc";
  1568. } elseif ($orderby == -1) {
  1569. $orderby_str = " order by target_c_member_id desc";
  1570. } elseif ($orderby == 2) {
  1571. $orderby_str = " order by count asc";
  1572. } elseif ($orderby == -2) {
  1573. $orderby_str = " order by count desc";
  1574. }
  1575. $where =" where ktai_flag = ? ";
  1576. $params = array(intval($ktai_flag));
  1577. if ($month_flag) {
  1578. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1579. $where .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1580. } else {
  1581. $where .= " and left(r_datetime, 7) = ? ";
  1582. }
  1583. array_push($params,substr($ymd,0,7));
  1584. } else {
  1585. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1586. $where .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1587. } else {
  1588. $where .= " and left(r_datetime,10) = ? ";
  1589. }
  1590. array_push($params,$ymd);
  1591. }
  1592. if ($page_name != "all") {
  1593. $where .= " and page_name = ? ";
  1594. array_push($params,$page_name);
  1595. }
  1596. $sql = "select target_c_member_id , count(*) as count from c_access_log ";
  1597. $sql .= $where;
  1598. $sql .= " AND target_c_member_id <> 0 ";
  1599. $sql .= " group by target_c_member_id " . $orderby_str;
  1600. if ($page_size != -1) {
  1601. $list = db_get_all_limit($sql, $start, $page_size, $params);
  1602. }
  1603. else {
  1604. $list = db_get_all($sql, $params);
  1605. }
  1606. $return = array();
  1607. $sum = 0;
  1608. foreach ($list as $key => $value) {
  1609. if ($c_member = db_member_c_member4c_member_id($value['target_c_member_id'])) {
  1610. $value['is_c_member_exists'] = true;
  1611. $return[] = array_merge($value, $c_member);
  1612. } else {
  1613. $value['is_c_member_exists'] = false;
  1614. $return[] = $value;
  1615. }
  1616. $sum += $value['count'];
  1617. }
  1618. $where =" where ktai_flag = ? ";
  1619. $params = array(intval($ktai_flag));
  1620. if ($month_flag) {
  1621. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1622. $where .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
  1623. } else {
  1624. $where .= " and left(r_datetime, 7) = ? ";
  1625. }
  1626. array_push($params,substr($ymd,0,7));
  1627. } else {
  1628. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1629. $where .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
  1630. } else {
  1631. $where .= " and left(r_datetime,10) = ? ";
  1632. }
  1633. array_push($params,$ymd);
  1634. }
  1635. if ($page_name != "all") {
  1636. $where .= " and page_name = ? ";
  1637. array_push($params,$page_name);
  1638. }
  1639. $sql = "select count(*) from c_access_log " ;
  1640. $sql .= $where;
  1641. $sql .= " AND target_c_member_id <> 0 ";
  1642. $sql .= " group by target_c_member_id ";
  1643. $result = db_get_all($sql,$params);
  1644. $total_num = count($result);
  1645. if ($total_num != 0) {
  1646. $total_page_num = ceil($total_num / $page_size);
  1647. if ($page >= $total_page_num) {
  1648. $next = false;
  1649. } else {
  1650. $next = true;
  1651. }
  1652. if ($page <= 1) {
  1653. $prev = false;
  1654. } else {
  1655. $prev = true;
  1656. }
  1657. }
  1658. $start_num = ($page - 1) * $page_size + 1 ;
  1659. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  1660. return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
  1661. }
  1662. function get_is_show($name)
  1663. {
  1664. $is_target_c_member_id = 0;
  1665. $is_target_c_commu_id = 0;
  1666. $is_target_c_topic_id = 0;
  1667. $is_target_c_diary_id = 0;
  1668. $is_c_member_id = 1;
  1669. //必要のない詳細ボタンを消す
  1670. $list = explode("_", $name);
  1671. $is_c_member_id = 1;
  1672. if (strpos($list[0], 'f') !== false) {
  1673. $is_target_c_member_id = 1;
  1674. }
  1675. if (strpos($list[0], 'c') !== false) {
  1676. $is_target_c_commu_id = 1;
  1677. }
  1678. if (strpos($name, 'topic') !== false || strpos($name, 'event') !== false) {
  1679. $is_target_c_topic_id = 1;
  1680. }
  1681. if (strpos($name, 'diary') !== false) {
  1682. $is_target_c_diary_id = 1;
  1683. }
  1684. return array($is_target_c_member_id,$is_target_c_commu_id,$is_target_c_topic_id,$is_target_c_diary_id,$is_c_member_id);
  1685. }
  1686. /**
  1687. カラムごとに条件を指定して絞ったメンバーの一覧を返す
  1688. [引数]
  1689. 適時追加していく
  1690. $s_access_date 最終ログイン時刻 開始年月日
  1691. $e_access_date 最終ログイン時刻 終了年月日
  1692. [返り値]
  1693. c_member_list
  1694. */
  1695. function p_member_edit_c_member_list($page_size, $page, $s_access_date='', $e_access_date='')
  1696. {
  1697. $page = intval($page);
  1698. $page_size = intval($page_size);
  1699. $wheres = array();
  1700. $params = array();
  1701. //指定された条件で絞っていく
  1702. if ($s_access_date != '') {
  1703. $wheres[] = 'access_date >= ?';
  1704. $params[] = $s_access_date;
  1705. }
  1706. if ($e_access_date != '') {
  1707. $wheres[] = 'access_date < ?';
  1708. $params[] = $e_access_date;
  1709. }
  1710. if ($wheres) {
  1711. $where = ' WHERE ' . implode(' AND ', $wheres);
  1712. } else {
  1713. $where = '';
  1714. }
  1715. $select = "SELECT * FROM c_member";
  1716. $order = " order by c_member_id";
  1717. $sql = $select . $where . $order;
  1718. if ($page_size > 0) {
  1719. $list = db_get_all_page($sql, $page, $page_size, $params);
  1720. } else {
  1721. $list = db_get_all($sql, $params);
  1722. }
  1723. $sql = "select count(*) from c_member".$where;
  1724. $total_num = db_get_one($sql, $params);
  1725. if ($total_num != 0 && $page_size != 0) {
  1726. $total_page_num = ceil($total_num / $page_size);
  1727. if ($page >= $total_page_num) {
  1728. $next = false;
  1729. } else {
  1730. $next = true;
  1731. }
  1732. if ($page <= 1) {
  1733. $prev = false;
  1734. } else {
  1735. $prev = true;
  1736. }
  1737. }
  1738. return array($list , $prev , $next, $total_num);
  1739. }
  1740. function _db_c_member4c_member_id($c_member_id)
  1741. {
  1742. $sql = "SELECT * FROM c_member WHERE c_member_id= ? ";
  1743. $params = array(intval($c_member_id));
  1744. return db_get_row($sql,$params);
  1745. }
  1746. /**
  1747. * 男と女の人数を取得
  1748. */
  1749. function get_analysis_sex()
  1750. {
  1751. $sql = "select count(*) from c_member where sex = '男'";
  1752. $analysis_sex['male'] = get_one4db($sql);
  1753. $sql = "select count(*) from c_member where sex = '女'";
  1754. $analysis_sex['female'] = get_one4db($sql);
  1755. return $analysis_sex;
  1756. }
  1757. /**
  1758. * 世代の人数を取得
  1759. */
  1760. function get_analysis_generation()
  1761. {
  1762. $analysis_generation = array(
  1763. '0~9' => 0,
  1764. '10~19' => 0,
  1765. '20~29' => 0,
  1766. '30~39' => 0,
  1767. '40~49' => 0,
  1768. '50~59' => 0,
  1769. '60~69' => 0,
  1770. '70~79' => 0,
  1771. '80~' =>0
  1772. );
  1773. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1774. $sql = "SELECT ((date_part('year', now()) - birth_year)- " .
  1775. "cast(to_char(CURRENT_DATE, 'MMDD')<(to_char(birth_month, '00') || '-' || to_char(birth_day, '00')) as int)) " .
  1776. "AS age FROM c_member WHERE birth_year <> 0;";
  1777. } else {
  1778. $today = getdate();
  1779. $mmdd = $today['mon'] * 100 + $today['mday'];
  1780. $sql = 'SELECT ' . $today['year'] . ' - birth_year'
  1781. . ' - (' . $mmdd . ' < (birth_month * 100 + birth_day))'
  1782. . ' AS age FROM c_member WHERE birth_year <> 0';
  1783. }
  1784. $lst = db_get_all($sql);
  1785. $temp = array_keys($analysis_generation);
  1786. foreach($lst as $value) {
  1787. $key = (int)($value['age'] / 10);
  1788. if ($key > count($analysis_generation)-1) {
  1789. $analysis_generation[$temp[count($analysis_generation)-1]]++;
  1790. } else {
  1791. $analysis_generation[$temp[$key]]++;
  1792. }
  1793. }
  1794. return $analysis_generation;
  1795. }
  1796. /**
  1797. * 地域別の人数を取得
  1798. */
  1799. function get_analysis_region()
  1800. {
  1801. $pref = p_regist_prof_c_profile_pref_list4null();
  1802. $sql = "select pre_addr_c_profile_pref_id as pref_id from c_member";
  1803. $lst = get_array_list4db($sql);
  1804. foreach($pref as $value) {
  1805. $analysis_region[$value] = 0;
  1806. }
  1807. foreach ($lst as $value) {
  1808. if ($value['pref_id'] == 0) {
  1809. $analysis_region['その他']++;
  1810. } else {
  1811. $analysis_region[$pref[$value['pref_id']]]++;
  1812. }
  1813. }
  1814. return $analysis_region;
  1815. }
  1816. function get_analysis_date_month($year = "", $month = "")
  1817. {
  1818. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1819. $sql = "select to_char(r_date,'YYYY-MM') from c_member order by r_date";
  1820. } else {
  1821. $sql = "select date_format(r_date,'%Y-%m') from c_member order by r_date";
  1822. }
  1823. $start_date = db_get_one($sql);
  1824. $i = 0;
  1825. list($y, $m) = split("-",$start_date);
  1826. do{
  1827. $date = date("Y-m", mktime (0,0,0,$m+$i++,1,$y));
  1828. $analysis_date_month[$date] = 0;
  1829. }while($date < date("Y-m"));
  1830. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1831. $sql = "select to_char(r_date,'YYYY-MM') as d from c_member";
  1832. } else {
  1833. $sql = "select date_format(r_date,'%Y-%m') as d from c_member";
  1834. }
  1835. $lst = db_get_all($sql);
  1836. foreach ($lst as $value) {
  1837. $analysis_date_month[$value['d']]++;
  1838. }
  1839. return $analysis_date_month;
  1840. }
  1841. function get_analysis_date_day_d($date="")
  1842. {
  1843. if ($date == "") {
  1844. $date = date("Y-m-d");
  1845. }
  1846. return $date;
  1847. }
  1848. function get_analysis_date_day($date="")
  1849. {
  1850. if ($date == "") {
  1851. $date = date("Y-m");
  1852. }
  1853. //一ヶ月の日数
  1854. $day_num = date("t", strtotime($date));
  1855. for($i=1 ; $i<=$day_num; $i++) {
  1856. //一桁の数を二桁にする
  1857. if ($i < 10) {
  1858. $i = "0".$i;
  1859. }
  1860. $analysis_date_day[$i] = 0;
  1861. }
  1862. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  1863. $sql = "select to_char(r_date,'DD') as d from c_member where to_char(r_date,'YYYY-MM') = ?";
  1864. } else {
  1865. $sql = "select date_format(r_date,'%d') as d from c_member where date_format(r_date,'%Y-%m') = ?";
  1866. }
  1867. $params = array($date);
  1868. $lst = db_get_all($sql,$params);
  1869. foreach($lst as $value) {
  1870. $analysis_date_day[$value['d']]++;
  1871. }
  1872. return $analysis_date_day;
  1873. }
  1874. function p_access_analysis_select_profile_list()
  1875. {
  1876. $sql = "SELECT * " .
  1877. " FROM c_profile " .
  1878. " where form_type = 'select' ";
  1879. $list = db_get_all($sql);
  1880. return $list;
  1881. }
  1882. /**
  1883. * 指定されたIDのプロフィールの人数別一覧を作成
  1884. */
  1885. function get_analysis_profile($c_profile_id)
  1886. {
  1887. $sql = "select count(*) as count,value,c_profile.caption from c_member_profile " .
  1888. " LEFT JOIN c_profile ON c_profile.c_profile_id = c_member_profile.c_profile_id " .
  1889. " WHERE c_member_profile.c_profile_id = ? GROUP BY value ";
  1890. $params = array(intval($c_profile_id));
  1891. $analysis_profile = db_get_all($sql,$params);
  1892. return $analysis_profile;
  1893. }
  1894. function get_analysis_count_profile_all($c_profile_id)
  1895. {
  1896. $sql = "select count(*) as count from c_member_profile " .
  1897. " WHERE c_profile_id = ? ";
  1898. $params = array(intval($c_profile_id));
  1899. $analysis_profile = db_get_one($sql,$params);
  1900. return $analysis_profile;
  1901. }
  1902. function analysis_profile4c_profile_id($c_profile_id)
  1903. {
  1904. $sql = "SELECT * FROM c_profile" .
  1905. " WHERE c_profile_id = ? ";
  1906. $params = array(intval($c_profile_id));
  1907. $profile = db_get_row($sql,$params);
  1908. return $profile;
  1909. }
  1910. function monitor_diary_list($keyword, $page_size, $page)
  1911. {
  1912. $page = intval($page);
  1913. $page_size = intval($page_size);
  1914. $wheres = array();
  1915. if ($keyword) {
  1916. //全角空白を半角に統一
  1917. $keyword = str_replace(' ', ' ', $keyword);
  1918. $keyword_list = explode(' ', $keyword);
  1919. for ($i = 0; $i < count($keyword_list); $i++) {
  1920. $keyword = check_search_word($keyword_list[$i]);
  1921. $wheres[] = '(subject LIKE ? OR body LIKE ?)';
  1922. $params[] = '%' . $keyword . '%';
  1923. $params[] = '%' . $keyword . '%';
  1924. }
  1925. }
  1926. if ($wheres) {
  1927. $where = ' WHERE ' . implode(' AND ', $wheres);
  1928. } else {
  1929. $where = '';
  1930. }
  1931. $select = "SELECT *";
  1932. $from = " FROM c_diary";
  1933. $order = " ORDER BY r_datetime DESC";
  1934. $sql = $select . $from . $where . $order;
  1935. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  1936. foreach ($list as $key => $value) {
  1937. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  1938. $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
  1939. }
  1940. $sql =
  1941. "SELECT COUNT(*) "
  1942. . $from
  1943. . $where ;
  1944. $total_num = db_get_one($sql, $params);
  1945. $total_page_num = ceil($total_num / $page_size);
  1946. $next = ($page < $total_page_num);
  1947. $prev = ($page > 1);
  1948. return array($list , $prev , $next, $total_num, $total_page_num);
  1949. }
  1950. function monitor_diary_list4c_diary_id($c_diary_id, $page_size, $page)
  1951. {
  1952. $page = intval($page);
  1953. $page_size = intval($page_size);
  1954. $where = " WHERE c_diary_id = ? ";
  1955. $params[] = intval($c_diary_id);
  1956. $select = "SELECT c_diary.*";
  1957. $from = " FROM c_diary";
  1958. $order = " ORDER BY r_datetime DESC";
  1959. $sql = $select . $from . $where . $order;
  1960. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  1961. foreach ($list as $key => $value) {
  1962. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  1963. $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
  1964. }
  1965. $sql =
  1966. "SELECT COUNT(*) "
  1967. . $from
  1968. . $where ;
  1969. $total_num = db_get_one($sql, $params);
  1970. $total_page_num = ceil($total_num / $page_size);
  1971. $next = ($page < $total_page_num);
  1972. $prev = ($page > 1);
  1973. return array($list , $prev , $next, $total_num, $total_page_num);
  1974. }
  1975. function monitor_diary_comment_list($keyword, $page_size, $page)
  1976. {
  1977. $page = intval($page);
  1978. $page_size = intval($page_size);
  1979. $wheres = array();
  1980. if ($keyword) {
  1981. //全角空白を半角に統一
  1982. $keyword = str_replace(' ', ' ', $keyword);
  1983. $keyword_list = explode(' ', $keyword);
  1984. for($i = 0; $i < count($keyword_list); $i++) {
  1985. $keyword = check_search_word($keyword_list[$i]);
  1986. $wheres[] = 'c_diary_comment.body LIKE ?';
  1987. $params[] = '%' . $keyword . '%';
  1988. }
  1989. }
  1990. if ($wheres) {
  1991. $where = ' WHERE ' . implode(' AND ', $wheres);
  1992. } else {
  1993. $where = '';
  1994. }
  1995. $select = "SELECT c_diary_comment.*, c_diary.subject";
  1996. $from = " FROM c_diary_comment"
  1997. ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
  1998. $order = " ORDER BY r_datetime desc";
  1999. $sql = $select . $from . $where . $order;
  2000. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2001. foreach ($list as $key => $value) {
  2002. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  2003. $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
  2004. }
  2005. $sql =
  2006. "SELECT COUNT(*) "
  2007. . $from
  2008. . $where ;
  2009. $total_num = db_get_one($sql, $params);
  2010. $total_page_num = ceil($total_num / $page_size);
  2011. $next = ($page < $total_page_num);
  2012. $prev = ($page > 1);
  2013. return array($list , $prev , $next, $total_num, $total_page_num);
  2014. }
  2015. function monitor_diary_comment_list4c_diary_comment_id($c_diary_comment_id, $page_size, $page)
  2016. {
  2017. $page = intval($page);
  2018. $page_size = intval($page_size);
  2019. $where = " WHERE c_diary_comment.c_diary_comment_id = ? ";
  2020. $params[] = intval($c_diary_comment_id);
  2021. $select = "SELECT c_diary_comment.*, c_diary.subject";
  2022. $from = " FROM c_diary_comment"
  2023. ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
  2024. $order = " ORDER BY r_datetime desc";
  2025. $sql = $select . $from . $where . $order;
  2026. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2027. foreach ($list as $key => $value) {
  2028. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  2029. $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
  2030. }
  2031. $sql =
  2032. "SELECT COUNT(*) "
  2033. . $from
  2034. . $where ;
  2035. $total_num = db_get_one($sql, $params);
  2036. $total_page_num = ceil($total_num / $page_size);
  2037. $next = ($page < $total_page_num);
  2038. $prev = ($page > 1);
  2039. return array($list , $prev , $next, $total_num, $total_page_num);
  2040. }
  2041. function monitor_diary_comment_list4c_diary_id($c_diary_id, $page_size, $page)
  2042. {
  2043. $page = intval($page);
  2044. $page_size = intval($page_size);
  2045. $where = " WHERE c_diary_comment.c_diary_id = ? ";
  2046. $params[] = intval($c_diary_id);
  2047. $select = "SELECT c_diary_comment.*, c_diary.subject";
  2048. $from = " FROM c_diary_comment"
  2049. ." LEFT JOIN c_diary ON c_diary.c_diary_id = c_diary_comment.c_diary_id ";
  2050. $order = " ORDER BY r_datetime desc";
  2051. $sql = $select . $from . $where . $order;
  2052. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2053. foreach ($list as $key => $value) {
  2054. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  2055. $list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
  2056. }
  2057. $sql =
  2058. "SELECT COUNT(*) "
  2059. . $from
  2060. . $where ;
  2061. $total_num = db_get_one($sql, $params);
  2062. $total_page_num = ceil($total_num / $page_size);
  2063. $next = ($page < $total_page_num);
  2064. $prev = ($page > 1);
  2065. return array($list , $prev , $next, $total_num, $total_page_num);
  2066. }
  2067. function monitor_commu_list($keyword, $page_size, $page, $order_type)
  2068. {
  2069. $page = intval($page);
  2070. $page_size = intval($page_size);
  2071. $wheres = array();
  2072. if ($keyword) {
  2073. $keyword = str_replace(' ', ' ', $keyword);
  2074. $keyword_list = explode(' ', $keyword);
  2075. for($i = 0; $i < count($keyword_list); $i++) {
  2076. $keyword = check_search_word($keyword_list[$i]);
  2077. $wheres[] = '(name LIKE ? OR info LIKE ?)';
  2078. $params[] = '%' . $keyword . '%';
  2079. $params[] = '%' . $keyword . '%';
  2080. }
  2081. }
  2082. if ($wheres) {
  2083. $where = ' WHERE ' . implode(' AND ', $wheres);
  2084. } else {
  2085. $where = '';
  2086. }
  2087. $select = "SELECT * ";
  2088. $from = " FROM c_commu";
  2089. $order = " ORDER BY r_datetime";
  2090. if ($order_type == 'DESC') {
  2091. $order .= ' DESC';
  2092. } else {
  2093. $order .= ' ASC';
  2094. }
  2095. $sql = $select . $from . $where . $order;
  2096. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2097. foreach ($list as $key => $value) {
  2098. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);
  2099. }
  2100. $sql =
  2101. "SELECT COUNT(*) "
  2102. . $from
  2103. . $where ;
  2104. $total_num = db_get_one($sql, $params);
  2105. $total_page_num = ceil($total_num / $page_size);
  2106. $next = ($page < $total_page_num);
  2107. $prev = ($page > 1);
  2108. return array($list, $prev, $next, $total_num, $total_page_num);
  2109. }
  2110. function monitor_commu_list4c_commu_id($c_commu_id, $page_size, $page, $order_type)
  2111. {
  2112. $page = intval($page);
  2113. $page_size = intval($page_size);
  2114. $where = ' WHERE c_commu_id = ?';
  2115. $params[] = intval($c_commu_id);
  2116. $select = 'SELECT * ';
  2117. $from = ' FROM c_commu';
  2118. $order = ' ORDER BY r_datetime';
  2119. if ($order_type == 'DESC') {
  2120. $order .= ' DESC';
  2121. } else {
  2122. $order .= ' ASC';
  2123. }
  2124. $sql = $select . $from . $where . $order;
  2125. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2126. foreach ($list as $key => $value) {
  2127. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id_admin']);
  2128. }
  2129. $sql =
  2130. "SELECT COUNT(*) "
  2131. . $from
  2132. . $where ;
  2133. $total_num = db_get_one($sql, $params);
  2134. $total_page_num = ceil($total_num / $page_size);
  2135. $next = ($page < $total_page_num);
  2136. $prev = ($page > 1);
  2137. return array($list , $prev , $next, $total_num, $total_page_num);
  2138. }
  2139. function monitor_topic_comment_list($keyword, $page_size, $page)
  2140. {
  2141. $page = intval($page);
  2142. $page_size = intval($page_size);
  2143. $where = " WHERE ctc.number <> 0 ";
  2144. if ($keyword) {
  2145. $keyword = str_replace("?@", " ", $keyword);
  2146. $keyword_list = explode(" ", $keyword);
  2147. for($i=0;$i < count($keyword_list);$i++) {
  2148. $keyword = check_search_word( $keyword_list[$i] );
  2149. $where .= " AND (ctc.body LIKE ? )";
  2150. $params[]="%$keyword%";
  2151. }
  2152. }
  2153. $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name";
  2154. $from = " FROM c_commu_topic_comment as ctc"
  2155. ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
  2156. ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
  2157. $order = " ORDER BY r_datetime desc";
  2158. $sql = $select . $from . $where . $order;
  2159. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2160. foreach ($list as $key => $value) {
  2161. $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
  2162. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  2163. $list[$key]['nickname'] = $c_member['nickname'];
  2164. $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
  2165. }
  2166. $sql =
  2167. "SELECT COUNT(*) "
  2168. . $from
  2169. . $where ;
  2170. $total_num = db_get_one($sql, $params);
  2171. $total_page_num = ceil($total_num / $page_size);
  2172. $next = ($page < $total_page_num);
  2173. $prev = ($page > 1);
  2174. return array($list , $prev , $next, $total_num, $total_page_num);
  2175. }
  2176. function monitor_topic_comment_list4c_commu_topic_comment_id($c_commu_topic_comment_id, $page_size, $page)
  2177. {
  2178. $page = intval($page);
  2179. $page_size = intval($page_size);
  2180. $where = " WHERE ctc.number <> 0 AND ctc.c_commu_topic_comment_id = ? ";
  2181. $params[] = intval($c_commu_topic_comment_id);
  2182. $select = "SELECT ctc.*,ct.name as topic_name,c.name as commu_name";
  2183. $from = " FROM c_commu_topic_comment as ctc"
  2184. ." LEFT JOIN c_commu_topic as ct ON ct.c_commu_topic_id = ctc.c_commu_topic_id "
  2185. ." LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id ";
  2186. $order = " ORDER BY r_datetime desc";
  2187. $sql = $select . $from . $where . $order;
  2188. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2189. foreach ($list as $key => $value) {
  2190. $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
  2191. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  2192. $list[$key]['nickname'] = $c_member['nickname'];
  2193. $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
  2194. }
  2195. $sql =
  2196. "SELECT COUNT(*) "
  2197. . $from
  2198. . $where ;
  2199. $total_num = db_get_one($sql, $params);
  2200. $total_page_num = ceil($total_num / $page_size);
  2201. $next = ($page < $total_page_num);
  2202. $prev = ($page > 1);
  2203. return array($list , $prev , $next, $total_num, $total_page_num);
  2204. }
  2205. function monitor_topic_list($keyword, $page_size, $page)
  2206. {
  2207. $page = intval($page);
  2208. $page_size = intval($page_size);
  2209. $wheres = array();
  2210. if ($keyword) {
  2211. $keyword = str_replace(' ', ' ', $keyword);
  2212. $keyword_list = explode(' ', $keyword);
  2213. for ($i = 0; $i < count($keyword_list); $i++) {
  2214. $keyword = check_search_word($keyword_list[$i]);
  2215. $wheres[] = '(ctc.body like ? OR ct.name like ? OR c.name like ?)';
  2216. $params[] = '%' . $keyword . '%';
  2217. $params[] = '%' . $keyword . '%';
  2218. $params[] = '%' . $keyword . '%';
  2219. }
  2220. }
  2221. if ($wheres) {
  2222. $where = ' WHERE ' . implode(' AND ', $wheres);
  2223. } else {
  2224. $where = '';
  2225. }
  2226. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2227. $select = "SELECT ct.*,"
  2228. . " ct.name AS topic_name, c.name AS commu_name,"
  2229. . " ctc.body, ctc.filename, ctc.image_filename1, ctc.image_filename2, ctc.image_filename3,"
  2230. . " CASE WHEN ct.invite_period = '0001-01-01 BC' THEN '0000-00-00' ELSE to_char(ct.invite_period,'YYYY-MM-DD') END AS invite_period";
  2231. } else {
  2232. $select = "SELECT ct.*,"
  2233. . " ct.name AS topic_name, c.name AS commu_name,"
  2234. . " ctc.body, ctc.filename, ctc.image_filename1, ctc.image_filename2, ctc.image_filename3";
  2235. }
  2236. $from = " FROM c_commu_topic AS ct"
  2237. . " LEFT JOIN c_commu AS c ON c.c_commu_id = ct.c_commu_id"
  2238. . " LEFT JOIN c_commu_topic_comment AS ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)";
  2239. $order = " ORDER BY r_datetime desc";
  2240. $sql = $select . $from . $where . $order;
  2241. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2242. foreach ($list as $key => $value) {
  2243. $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
  2244. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  2245. $list[$key]['nickname'] = $c_member['nickname'];
  2246. if (!empty($value['filename'])) {
  2247. $list[$key]['original_filename'] = db_file_original_filename4filename($value['filename']);
  2248. }
  2249. if ($value['event_flag']) {
  2250. $list[$key]['member_num'] = db_commu_count_c_event_member_list4c_commu_topic_id($value['c_commu_topic_id']);
  2251. }
  2252. }
  2253. $sql =
  2254. "SELECT COUNT(*) "
  2255. . $from
  2256. . $where ;
  2257. $total_num = db_get_one($sql, $params);
  2258. $total_page_num = ceil($total_num / $page_size);
  2259. $next = ($page < $total_page_num);
  2260. $prev = ($page > 1);
  2261. return array($list , $prev , $next, $total_num, $total_page_num);
  2262. }
  2263. function monitor_topic_list4target_c_commu_topic_id($c_commu_topic_id, $page_size, $page)
  2264. {
  2265. $page = intval($page);
  2266. $page_size = intval($page_size);
  2267. $where = " where ct.c_commu_topic_id = ? ";
  2268. $params[] = intval($c_commu_topic_id);
  2269. if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
  2270. $select = "SELECT ct.*,"
  2271. . " ct.name AS topic_name,c.name AS commu_name,"
  2272. . " m.nickname,ctc.body AS body,"
  2273. . " ctc.image_filename1 AS image_filename1,ctc.image_filename2 AS image_filename2,ctc.image_filename3 AS image_filename3,"
  2274. . " ctc.filename AS filename,f.original_filename AS original_filename,"
  2275. . " CASE WHEN ct.invite_period = '0001-01-01 BC' THEN '0000-00-00' ELSE to_char(ct.invite_period,'YYYY-MM-DD') END AS invite_period";
  2276. } else {
  2277. $select = "SELECT ct.*,"
  2278. . " ct.name AS topic_name,c.name AS commu_name,"
  2279. . " m.nickname,ctc.body AS body,"
  2280. . " ctc.image_filename1 AS image_filename1,ctc.image_filename2 AS image_filename2,ctc.image_filename3 AS image_filename3,"
  2281. . " ctc.filename AS filename,f.original_filename AS original_filename";
  2282. }
  2283. $from = " FROM c_commu_topic AS ct"
  2284. . " LEFT JOIN c_member AS m ON ct.c_member_id = m.c_member_id "
  2285. . " LEFT JOIN c_commu AS c ON c.c_commu_id = ct.c_commu_id "
  2286. . " LEFT JOIN c_commu_topic_comment AS ctc ON (ctc.c_commu_topic_id = ct.c_commu_topic_id AND ctc.number = 0)"
  2287. . " LEFT JOIN c_file AS f ON f.filename = ctc.filename ";
  2288. $order = " ORDER BY r_datetime desc";
  2289. $sql = $select . $from . $where . $order;
  2290. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2291. foreach ($list as $key => $value) {
  2292. $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
  2293. if ($value['event_flag']) {
  2294. $list[$key]['member_num'] = db_commu_count_c_event_member_list4c_commu_topic_id($value['c_commu_topic_id']);
  2295. }
  2296. }
  2297. $sql =
  2298. "SELECT count(*) "
  2299. . $from
  2300. . $where ;
  2301. $total_num = db_get_one($sql, $params);
  2302. $total_page_num = ceil($total_num / $page_size);
  2303. $next = ($page < $total_page_num);
  2304. $prev = ($page > 1);
  2305. return array($list , $prev , $next, $total_num, $total_page_num);
  2306. }
  2307. function monitor_new_topic_list($limit)
  2308. {
  2309. $limit = intval($limit);
  2310. $select = 'SELECT c.name AS commu_name, ct.*';
  2311. $from = ' FROM c_commu AS c, c_commu_topic AS ct';
  2312. $where = ' WHERE c.c_commu_id = ct.c_commu_id';
  2313. $group = ' GROUP BY ct.c_commu_topic_id';
  2314. $order = ' ORDER BY ct.u_datetime DESC';
  2315. $sql = $select . $from . $where . $group . $order;
  2316. $list = db_get_all_limit($sql, 0, $limit);
  2317. foreach ($list as $key => $value) {
  2318. $list[$key]['count_comments'] = _db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
  2319. }
  2320. return $list;
  2321. }
  2322. function monitor_review_list($keyword, $page_size, $page)
  2323. {
  2324. $page = intval($page);
  2325. $page_size = intval($page_size);
  2326. $wheres = array();
  2327. if ($keyword) {
  2328. //全角空白を半角に統一
  2329. $keyword = str_replace(' ', ' ', $keyword);
  2330. $keyword_list = explode(' ', $keyword);
  2331. for ($i = 0; $i < count($keyword_list); $i++) {
  2332. $keyword = check_search_word($keyword_list[$i]);
  2333. $wheres[] = 'c_review_comment.body like ?';
  2334. $params[] = '%' . $keyword . '%';
  2335. }
  2336. }
  2337. if ($wheres) {
  2338. $where = ' WHERE ' . implode(' AND ', $wheres);
  2339. } else {
  2340. $where = '';
  2341. }
  2342. $select = "SELECT c_review_comment.*";
  2343. $from = " FROM c_review_comment";
  2344. $order = " ORDER BY r_datetime desc";
  2345. $sql = $select . $from . $where . $order;
  2346. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2347. foreach ($list as $key => $value) {
  2348. $list[$key]['c_member'] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  2349. $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
  2350. }
  2351. $sql =
  2352. "SELECT COUNT(*) "
  2353. . $from
  2354. . $where ;
  2355. $total_num = db_get_one($sql,$params);
  2356. $total_page_num = ceil($total_num / $page_size);
  2357. $next = ($page < $total_page_num);
  2358. $prev = ($page > 1);
  2359. return array($list , $prev , $next, $total_num, $total_page_num);
  2360. }
  2361. function monitor_review_list4c_review_id($c_review_comment_id, $page_size, $page)
  2362. {
  2363. $page = intval($page);
  2364. $page_size = intval($page_size);
  2365. $where = " WHERE c_review_comment_id = ? ";
  2366. $params[] = intval($c_review_comment_id);
  2367. $select = "SELECT c_review_comment.*";
  2368. $from = " FROM c_review_comment";
  2369. $order = " ORDER BY r_datetime desc";
  2370. $sql = $select . $from . $where . $order;
  2371. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2372. foreach ($list as $key => $value) {
  2373. $list[$key]['c_member'] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  2374. $list[$key]['c_review'] = db_review_list_product_c_review4c_review_id($value['c_review_id']);
  2375. }
  2376. $sql =
  2377. "SELECT COUNT(*) "
  2378. . $from
  2379. . $where ;
  2380. $total_num = db_get_one($sql, $params);
  2381. $total_page_num = ceil($total_num / $page_size);
  2382. $next = ($page < $total_page_num);
  2383. $prev = ($page > 1);
  2384. return array($list , $prev , $next, $total_num, $total_page_num);
  2385. }
  2386. function _db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
  2387. {
  2388. $sql = "SELECT count(*) FROM c_commu_topic_comment" .
  2389. " WHERE c_commu_topic_id = ? AND number > 0";
  2390. $params = array($c_commu_topic_id);
  2391. return db_get_one($sql, $params);
  2392. }
  2393. //フリーページを追加
  2394. function db_admin_insert_c_free_page($title, $body, $auth, $type)
  2395. {
  2396. $data = array(
  2397. 'title' => strval($title),
  2398. 'body' => strval($body),
  2399. 'auth' => intval($auth),
  2400. 'type' => strval($type),
  2401. );
  2402. return db_insert('c_free_page', $data);
  2403. }
  2404. //フリーページを編集
  2405. function db_admin_update_c_free_page($c_free_page_id, $title, $body, $auth, $type)
  2406. {
  2407. $data = array(
  2408. 'title' => strval($title),
  2409. 'body' => strval($body),
  2410. 'auth' => intval($auth),
  2411. 'type' => strval($type),
  2412. );
  2413. $where = array('c_free_page_id' => intval($c_free_page_id));
  2414. return db_update('c_free_page', $data, $where);
  2415. }
  2416. //フリーページを削除
  2417. function db_admin_delete_c_free_page($c_free_page_id)
  2418. {
  2419. $sql = "DELETE FROM c_free_page WHERE c_free_page_id = ?";
  2420. $params = array(intval($c_free_page_id));
  2421. return db_query($sql, $params);
  2422. }
  2423. //フリーページを全て取得(ページャー付き)
  2424. function db_admin_get_c_free_page_all($page, $page_size, &$pager)
  2425. {
  2426. $sql = 'SELECT * FROM c_free_page ORDER BY c_free_page_id DESC';
  2427. $list = db_get_all_page($sql, $page, $page_size, $params);
  2428. $sql = 'SELECT count(*) FROM c_free_page';
  2429. $total_num = db_get_one($sql, $params);
  2430. $pager = util_make_pager($page, $page_size, $total_num);
  2431. return $list;
  2432. }
  2433. //フリーページを一つ取得
  2434. function db_admin_get_c_free_page_one($c_free_page_id)
  2435. {
  2436. $sql = 'SELECT * FROM c_free_page WHERE c_free_page_id = ?';
  2437. $params = array(intval($c_free_page_id));
  2438. return db_get_row($sql, $params);
  2439. }
  2440. //APIを全て取得(ページャー付き)
  2441. function db_admin_get_c_api_all($page, $page_size, &$pager)
  2442. {
  2443. $sql = 'SELECT * FROM c_api ORDER BY c_api_id';
  2444. $list = db_get_all_page($sql, $page, $page_size, $params);
  2445. $sql = 'SELECT count(*) FROM c_api';
  2446. $total_num = db_get_one($sql, $params);
  2447. $pager = util_make_pager($page, $page_size, $total_num);
  2448. return $list;
  2449. }
  2450. //APIを編集
  2451. function db_admin_update_c_api($c_api_id, $name, $ip)
  2452. {
  2453. $data = array(
  2454. 'name' => strval($name),
  2455. 'ip' => strval($ip),
  2456. );
  2457. $where = array('c_api_id' => intval($c_api_id));
  2458. return db_update('c_api', $data, $where);
  2459. }
  2460. //CMDを追加
  2461. function db_admin_insert_c_cmd($name, $permit)
  2462. {
  2463. $data = array(
  2464. 'name' => strval($name),
  2465. 'permit' => intval($permit),
  2466. );
  2467. return db_insert('c_cmd', $data);
  2468. }
  2469. //CMDを編集
  2470. function db_admin_update_c_cmd($c_cmd_id, $name, $permit)
  2471. {
  2472. $data = array(
  2473. 'name' => strval($name),
  2474. 'permit' => intval($permit),
  2475. );
  2476. $where = array('c_cmd_id' => intval($c_cmd_id));
  2477. return db_update('c_cmd', $data, $where);
  2478. }
  2479. //CMDを削除
  2480. function db_admin_delete_c_cmd($c_cmd_id)
  2481. {
  2482. $sql = "DELETE FROM c_cmd WHERE c_cmd_id = ?";
  2483. $params = array(intval($c_cmd_id));
  2484. return db_query($sql, $params);
  2485. }
  2486. //CMDを全て取得
  2487. function db_admin_get_c_cmd_all()
  2488. {
  2489. $sql = 'SELECT * FROM c_cmd ORDER BY c_cmd_id';
  2490. return db_get_all($sql);
  2491. }
  2492. //CMDを一つ取得
  2493. function db_admin_get_c_cmd_one($c_cmd_id)
  2494. {
  2495. $sql = 'SELECT * FROM c_cmd WHERE c_cmd_id = ?';
  2496. $params = array(intval($c_cmd_id));
  2497. return db_get_row($sql, $params);
  2498. }
  2499. /***
  2500. * CMD(小窓)の設定リストを取得する
  2501. *
  2502. * @return array 小窓の設定リスト
  2503. */
  2504. function db_admin_get_c_cmd_list4name()
  2505. {
  2506. $sql = 'SELECT * FROM c_cmd';
  2507. return db_get_all($sql);
  2508. }
  2509. /**
  2510. * 祝日のリストを取得
  2511. */
  2512. function db_admin_c_holiday_list()
  2513. {
  2514. $sql = 'SELECT * FROM c_holiday ORDER BY month, day';
  2515. $holiday_list = db_get_all($sql);
  2516. return $holiday_list;
  2517. }
  2518. /**
  2519. * 休日を追加
  2520. */
  2521. function db_admin_insert_c_holiday($name, $month, $day)
  2522. {
  2523. $data = array(
  2524. 'name' => strval($name),
  2525. 'month' => intval($month),
  2526. 'day' => intval($day),
  2527. );
  2528. return db_insert('c_holiday', $data);
  2529. }
  2530. /**
  2531. * 休日を編集
  2532. */
  2533. function db_admin_update_c_holiday($c_holiday_id, $name, $month, $day)
  2534. {
  2535. $data = array(
  2536. 'name' => strval($name),
  2537. 'month' => intval($month),
  2538. 'day' => intval($day),
  2539. );
  2540. $where = array('c_holiday_id' => intval($c_holiday_id));
  2541. return db_update('c_holiday', $data, $where);
  2542. }
  2543. /**
  2544. * 休日を削除
  2545. */
  2546. function db_admin_delete_c_holiday($c_holiday_id)
  2547. {
  2548. $sql = "DELETE FROM c_holiday WHERE c_holiday_id = ?";
  2549. $params = array(intval($c_holiday_id));
  2550. return db_query($sql, $params);
  2551. }
  2552. //メッセージ送信履歴を挿入
  2553. function db_admin_insert_c_send_messages_history($subject, $body, $send_num, $type, $c_member_ids)
  2554. {
  2555. //配列を文字列に変換
  2556. if($c_member_ids) {
  2557. $c_member_ids = implode("-",$c_member_ids);
  2558. } else {
  2559. return;
  2560. }
  2561. $data = array(
  2562. 'subject' => strval($subject),
  2563. 'body' => strval($body),
  2564. 'send_num' => intval($send_num),
  2565. 'type' => strval($type),
  2566. 'c_member_ids' => strval($c_member_ids),
  2567. 'r_datetime' => db_now()
  2568. );
  2569. return db_insert('c_send_messages_history', $data);
  2570. }
  2571. //メッセージ送信履歴を全て取得(ページャー付き)
  2572. function db_admin_get_c_send_messages_history_all($page, $page_size, &$pager)
  2573. {
  2574. $sql = 'SELECT * FROM c_send_messages_history ORDER BY c_send_messages_history_id DESC';
  2575. $history_list = db_get_all_page($sql, $page, $page_size, $params);
  2576. foreach ($history_list as $key => $history) {
  2577. $history_list[$key]['c_member_ids'] = explode("-", $history['c_member_ids']);
  2578. }
  2579. $sql = 'SELECT count(*) FROM c_send_messages_history';
  2580. $total_num = db_get_one($sql, $params);
  2581. $pager = util_make_pager($page, $page_size, $total_num);
  2582. return $history_list;
  2583. }
  2584. //メッセージ送信履歴を一つ取得
  2585. function db_admin_get_c_send_messages_history($c_send_messages_history_id)
  2586. {
  2587. $sql = 'SELECT * FROM c_send_messages_history WHERE c_send_messages_history_id = ?';
  2588. $params = array(intval($c_send_messages_history_id));
  2589. $history = db_get_row($sql, $params);
  2590. $history['c_member_ids'] = explode("-", $history['c_member_ids']);
  2591. return $history;
  2592. }
  2593. //メッセージをキューに入れる
  2594. function db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body)
  2595. {
  2596. $data = array(
  2597. 'c_member_id_from' => intval($c_member_id_from),
  2598. 'c_member_id_to' => intval($c_member_id_to),
  2599. 'subject' => strval($subject),
  2600. 'body' => strval($body),
  2601. );
  2602. return db_insert('c_message_queue', $data);
  2603. }
  2604. //メッセージをキューから削除
  2605. function db_admin_delete_c_message_queue($c_message_queue_id)
  2606. {
  2607. $sql = "DELETE FROM c_message_queue WHERE c_message_queue_id = ?";
  2608. $params = array(intval($c_message_queue_id));
  2609. return db_query($sql, $params);
  2610. }
  2611. //ランクを追加
  2612. function db_admin_insert_c_rank($name, $image_filename, $point)
  2613. {
  2614. $data = array(
  2615. 'name' => strval($name),
  2616. 'image_filename' => strval($image_filename),
  2617. 'point' => intval($point),
  2618. );
  2619. return db_insert('c_rank', $data);
  2620. }
  2621. //ランクを編集
  2622. function db_admin_update_c_rank($c_rank_id, $name, $image_filename, $point)
  2623. {
  2624. $data = array(
  2625. 'name' => strval($name),
  2626. 'image_filename' => strval($image_filename),
  2627. 'point' => intval($point),
  2628. );
  2629. $where = array('c_rank_id' => intval($c_rank_id));
  2630. return db_update('c_rank', $data, $where);
  2631. }
  2632. //ランクを削除
  2633. function db_admin_delete_c_rank($c_rank_id)
  2634. {
  2635. $sql = "DELETE FROM c_rank WHERE c_rank_id = ?";
  2636. $params = array(intval($c_rank_id));
  2637. return db_query($sql, $params);
  2638. }
  2639. //ランクを全て取得
  2640. function db_admin_get_c_rank_all()
  2641. {
  2642. $sql = 'SELECT * FROM c_rank ORDER BY point';
  2643. return db_get_all($sql);
  2644. }
  2645. //ランクを一つ取得
  2646. function db_admin_get_c_rank_one($c_rank_id)
  2647. {
  2648. $sql = 'SELECT * FROM c_rank WHERE c_rank_id = ?';
  2649. $params = array(intval($c_rank_id));
  2650. return db_get_row($sql, $params);
  2651. }
  2652. //アクションを編集
  2653. function db_admin_update_c_action($c_action_id, $point)
  2654. {
  2655. $data = array(
  2656. 'point' => intval($point),
  2657. );
  2658. $where = array('c_action_id' => intval($c_action_id));
  2659. return db_update('c_action', $data, $where);
  2660. }
  2661. //アクションを全て取得
  2662. function db_admin_get_c_action_all()
  2663. {
  2664. $sql = 'SELECT * FROM c_action ORDER BY c_action_id';
  2665. return db_get_all($sql);
  2666. }
  2667. /**
  2668. * 指定したファイル名のファイルへのリンクを削除する
  2669. *
  2670. * @param string $filename
  2671. */
  2672. function db_admin_delete_c_file_link4filename($filename)
  2673. {
  2674. // c_commu_topic_comment
  2675. $tbl = 'c_commu_topic_comment';
  2676. _db_admin_empty_filename($tbl, $filename, 'filename');
  2677. // h_message
  2678. $tbl = 'c_message';
  2679. _db_admin_empty_filename($tbl, $filename, 'filename');
  2680. }
  2681. function db_admin_get_c_member_profile_pnepoint($c_member_id)
  2682. {
  2683. $sql = 'SELECT c_profile_id FROM c_profile where name = \'PNE_POINT\'';
  2684. $c_profile_id = db_get_one($sql);
  2685. $params = array($c_member_id , $c_profile_id);
  2686. $sql = 'SELECT * FROM c_member_profile where c_member_id = ? and c_profile_id = ?';
  2687. $c_member_profile = db_get_row($sql, $params);
  2688. return $c_member_profile;
  2689. }
  2690. function db_admin_c_blacklist_list($page, $page_size)
  2691. {
  2692. $sql = 'SELECT * FROM c_blacklist ORDER BY c_blacklist_id';
  2693. $list = db_get_all_page($sql, $page, $page_size);
  2694. $sql = 'SELECT c_member_id FROM c_member_secure WHERE easy_access_id = ?';
  2695. foreach ($list as $key => $blacklist) {
  2696. if ($blacklist['easy_access_id'] && $c_member_id = db_get_one($sql, array($blacklist['easy_access_id']))) {
  2697. $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
  2698. $list[$key]['c_member_id'] = $c_member_id;
  2699. $list[$key]['nickname'] = $c_member['nickname'];
  2700. }
  2701. }
  2702. $sql = 'SELECT count(*) FROM c_blacklist';
  2703. $total_num = db_get_one($sql);
  2704. $total_page_num = ceil($total_num / $page_size);
  2705. $next = ($page < $total_page_num);
  2706. $prev = ($page > 1);
  2707. return array($list, $prev, $next, $total_num, $total_page_num);
  2708. }
  2709. function db_admin_insert_c_blacklist($easy_access_id, $info)
  2710. {
  2711. $data = array(
  2712. 'easy_access_id' => $easy_access_id,
  2713. 'info' => (string)$info,
  2714. );
  2715. return db_insert('c_blacklist', $data);
  2716. }
  2717. function db_admin_update_c_blacklist($c_blacklist_id, $easy_access_id, $info)
  2718. {
  2719. $data = array(
  2720. 'easy_access_id' => $easy_access_id,
  2721. 'info' => (string)$info,
  2722. );
  2723. $where = array('c_blacklist_id' => $c_blacklist_id);
  2724. return db_update('c_blacklist', $data, $where);
  2725. }
  2726. function db_admin_delete_c_blacklist($c_blacklist_id)
  2727. {
  2728. $sql = 'DELETE FROM c_blacklist WHERE c_blacklist_id = ?';
  2729. $params = array(intval($c_blacklist_id));
  2730. db_query($sql, $params);
  2731. }
  2732. function db_admin_c_blacklist($c_blacklist_id)
  2733. {
  2734. $sql = 'SELECT * FROM c_blacklist WHERE c_blacklist_id = ?';
  2735. $params = array($c_blacklist_id);
  2736. $blacklist = db_get_row($sql, $params);
  2737. $sql = 'SELECT c_member_id FROM c_member_secure WHERE easy_access_id = ?';
  2738. if (!empty($blacklist['easy_access_id']) && $c_member_id = db_get_one($sql, array($blacklist['easy_access_id']))) {
  2739. $c_member = db_member_c_member4c_member_id_LIGHT($c_member_id);
  2740. $blacklist['c_member_id'] = $c_member_id;
  2741. $blacklist['nickname'] = $c_member['nickname'];
  2742. }
  2743. return $blacklist;
  2744. }
  2745. function db_admin_enabled_module_list()
  2746. {
  2747. $sql = 'SELECT * FROM c_module WHERE is_enabled = 1';
  2748. $module_list = db_get_all($sql);
  2749. return $module_list;
  2750. }
  2751. function db_admin_insert_module_enabled($module, $is_enabled)
  2752. {
  2753. $data = array(
  2754. 'name' => $module,
  2755. 'is_enabled' => $is_enabled,
  2756. );
  2757. return db_insert('c_module', $data);
  2758. }
  2759. function db_admin_update_module_enabled($module, $is_enabled)
  2760. {
  2761. $data = array(
  2762. 'is_enabled' => $is_enabled,
  2763. );
  2764. $where = array(
  2765. 'name' => $module,
  2766. );
  2767. return db_update('c_module', $data, $where);
  2768. }
  2769. function db_admin_enabled_module_config_list()
  2770. {
  2771. $enable_module_list = db_admin_enabled_module_list();
  2772. $configs = array();
  2773. foreach ($enable_module_list as $module) {
  2774. $name = $module['name'];
  2775. $configs[$name] = util_get_module_config($name);
  2776. }
  2777. return $configs;
  2778. }
  2779. function db_admin_c_config_decoration_list()
  2780. {
  2781. $sql = 'SELECT * FROM c_config_decoration';
  2782. $c_config_decoration_list = db_get_all($sql);
  2783. return $c_config_decoration_list;
  2784. }
  2785. function db_admin_update_c_config_decoration($c_config_decoration_id, $is_enabled)
  2786. {
  2787. $data = array(
  2788. 'is_enabled' => $is_enabled,
  2789. );
  2790. $where = array('c_config_decoration_id' => $c_config_decoration_id);
  2791. return db_update('c_config_decoration', $data, $where);
  2792. }
  2793. function db_admin_album_count_c_album_image4c_album_id($c_album_id)
  2794. {
  2795. $sql = 'SELECT COUNT(*) FROM c_album_image WHERE c_album_id = ?';
  2796. return db_get_one($sql, array(intval($c_album_id)));
  2797. }
  2798. function db_admin_album_list($keyword, $page_size, $page)
  2799. {
  2800. $page = intval($page);
  2801. $page_size = intval($page_size);
  2802. $wheres = array();
  2803. if ($keyword) {
  2804. //全角空白を半角に統一
  2805. $keyword = str_replace(' ', ' ', $keyword);
  2806. $keyword_list = explode(' ', $keyword);
  2807. for ($i = 0; $i < count($keyword_list); $i++) {
  2808. $keyword = check_search_word($keyword_list[$i]);
  2809. $wheres[] = '(subject LIKE ? OR description LIKE ?)';
  2810. $params[] = '%' . $keyword . '%';
  2811. $params[] = '%' . $keyword . '%';
  2812. }
  2813. }
  2814. if ($wheres) {
  2815. $where = ' WHERE ' . implode(' AND ', $wheres);
  2816. } else {
  2817. $where = '';
  2818. }
  2819. $select = "SELECT *";
  2820. $from = " FROM c_album";
  2821. $order = " ORDER BY r_datetime DESC";
  2822. $sql = $select . $from . $where . $order;
  2823. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2824. foreach ($list as $key => $value) {
  2825. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  2826. $list[$key]['count_images'] = db_admin_album_count_c_album_image4c_album_id($value['c_album_id']);
  2827. }
  2828. $sql =
  2829. "SELECT COUNT(*) "
  2830. . $from
  2831. . $where ;
  2832. $total_num = db_get_one($sql, $params);
  2833. $total_page_num = ceil($total_num / $page_size);
  2834. $next = ($page < $total_page_num);
  2835. $prev = ($page > 1);
  2836. return array($list , $prev , $next, $total_num, $total_page_num);
  2837. }
  2838. function db_admin_album_list4c_album_id($c_album_id, $page_size, $page)
  2839. {
  2840. $page = intval($page);
  2841. $page_size = intval($page_size);
  2842. $where = " WHERE c_album_id = ? ";
  2843. $params[] = intval($c_album_id);
  2844. $select = "SELECT c_album.*";
  2845. $from = " FROM c_album";
  2846. $order = " ORDER BY r_datetime DESC";
  2847. $sql = $select . $from . $where . $order;
  2848. $list = db_get_all_limit($sql,($page-1)*$page_size,$page_size,$params);
  2849. foreach ($list as $key => $value) {
  2850. $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
  2851. $list[$key]['count_images'] = db_admin_album_count_c_album_image4c_album_id($value['c_album_id']);
  2852. }
  2853. $sql =
  2854. "SELECT COUNT(*) "
  2855. . $from
  2856. . $where ;
  2857. $total_num = db_get_one($sql, $params);
  2858. $total_page_num = ceil($total_num / $page_size);
  2859. $next = ($page < $total_page_num);
  2860. $prev = ($page > 1);
  2861. return array($list , $prev , $next, $total_num, $total_page_num);
  2862. }
  2863. function db_admin_c_album_image_list($page, $page_size, &$pager, $c_album_id = null)
  2864. {
  2865. $db =& db_get_instance('image');
  2866. $params = array();
  2867. $sql = 'SELECT cai.c_album_image_id, cai.image_filename, cai.r_datetime, cai.image_description, cai.c_album_id, ca.subject'
  2868. . ' FROM c_album_image AS cai'
  2869. . ' INNER JOIN c_album AS ca ON cai.c_album_id = ca.c_album_id';
  2870. if ($c_album_id) {
  2871. $sql .= ' WHERE ca.c_album_id = ?';
  2872. $params[] = $c_album_id;
  2873. }
  2874. $sql .= ' ORDER BY cai.c_album_image_id DESC';
  2875. $c_image_album_list = db_get_all_page($sql, $page, $page_size, $params);
  2876. $sql = 'SELECT COUNT(*) FROM c_album_image';
  2877. if ($c_album_id) {
  2878. $sql .= ' WHERE c_album_id = ?';
  2879. }
  2880. $total_num = $db->get_one($sql, $params);
  2881. $pager = util_make_pager($page, $page_size, $total_num);
  2882. return $c_image_album_list;
  2883. }
  2884. function db_admin_c_album_image_list4c_album_image_id($page, $page_size, &$pager, $c_album_image_id)
  2885. {
  2886. $db =& db_get_instance('image');
  2887. $sql = 'SELECT cai.c_album_image_id, cai.image_filename, cai.r_datetime, cai.image_description, cai.c_album_id, ca.subject'
  2888. . ' FROM c_album_image AS cai'
  2889. . ' INNER JOIN c_album AS ca ON cai.c_album_id = ca.c_album_id'
  2890. . ' WHERE cai.c_album_image_id = ?'
  2891. . ' ORDER BY cai.c_album_image_id DESC';
  2892. $params = array($c_album_image_id);
  2893. $c_image_album_list = db_get_all_page($sql, $page, $page_size, $params);
  2894. $sql = 'SELECT COUNT(*) FROM c_album_image'
  2895. . ' WHERE c_album_image_id = ?';
  2896. $total_num = $db->get_one($sql, $params);
  2897. $pager = util_make_pager($page, $page_size, $total_num);
  2898. return $c_image_album_list;
  2899. }
  2900. function db_admin_get_c_cmd_caster_list()
  2901. {
  2902. $sql = 'SELECT * FROM c_cmd_caster ORDER BY c_cmd_caster_id ASC';
  2903. return db_get_all($sql);
  2904. }
  2905. function db_admin_insert_c_cmd_caster($url)
  2906. {
  2907. $result = false;
  2908. require_once 'OpenPNE/RSS.php';
  2909. $rss = new OpenPNE_RSS();
  2910. $title = $rss->get_feed_title($url);
  2911. $description = $rss->get_feed_description($url);
  2912. if (!$title && !$description) {
  2913. return false;
  2914. }
  2915. if (!$title) {
  2916. $title = '';
  2917. }
  2918. if (!$description) {
  2919. $title = '';
  2920. }
  2921. $data = array(
  2922. 'title' => $title,
  2923. 'description' => $description,
  2924. 'url' => $url,
  2925. );
  2926. $c_cmd_caster_id = db_insert('c_cmd_caster', $data);
  2927. if ($c_cmd_caster_id) {
  2928. $result = (bool)db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
  2929. if (!$result) {
  2930. db_admin_delete_c_cmd_caster($c_cmd_caster_id);
  2931. }
  2932. }
  2933. return $result;
  2934. }
  2935. function db_admin_delete_c_cmd_caster($c_cmd_caster_id)
  2936. {
  2937. $sql = 'DELETE FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
  2938. db_query($sql, array($c_cmd_caster_id));
  2939. $sql = 'DELETE FROM c_cmd WHERE c_cmd_caster_id = ?';
  2940. db_query($sql, array($c_cmd_caster_id));
  2941. }
  2942. function db_admin_update_c_cmd_caster($c_cmd_caster_id, $url)
  2943. {
  2944. $sql = 'SELECT url FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
  2945. $old_url = db_get_one($sql, array($c_cmd_caster_id));
  2946. // URLに変更がある場合は登録しなおす
  2947. if ($old_url != $url) {
  2948. db_admin_delete_c_cmd_caster($c_cmd_caster_id);
  2949. $result = db_admin_insert_c_cmd_caster($url);
  2950. // 正しく登録できなかった場合は、元のURLを登録しなおす
  2951. if (!$result) {
  2952. db_admin_insert_c_cmd_caster($old_url);
  2953. }
  2954. return $result;
  2955. }
  2956. require_once 'OpenPNE/RSS.php';
  2957. $rss = new OpenPNE_RSS();
  2958. $title = $rss->get_feed_title($url);
  2959. $description = $rss->get_feed_description($url);
  2960. if (!$title && !$description) {
  2961. return false;
  2962. }
  2963. if (!$title) {
  2964. $title = '';
  2965. }
  2966. if (!$description) {
  2967. $title = '';
  2968. }
  2969. $data = array(
  2970. 'title' => $title,
  2971. 'description' => $description,
  2972. );
  2973. $where = array('c_cmd_caster_id' => $c_cmd_caster_id);
  2974. $result = db_update('c_cmd_caster', $data, $where);
  2975. db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
  2976. return $result;
  2977. }
  2978. function db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id)
  2979. {
  2980. $sql = 'SELECT url FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
  2981. $url = db_get_one($sql, array($c_cmd_caster_id));
  2982. require_once 'OpenPNE/RSS.php';
  2983. $rss = new OpenPNE_RSS();
  2984. $items = $rss->fetch($url);
  2985. $cmd_count = 0;
  2986. $allowed_type = array('text/javascript', 'application/javascript');
  2987. foreach ($items as $item)
  2988. {
  2989. $enclosure = $item['enclosure'];
  2990. if (!in_array($enclosure->type, $allowed_type)) {
  2991. continue;
  2992. }
  2993. $cmd_count++;
  2994. $name = basename($enclosure->link, '.js');
  2995. if ($c_cmd_id = db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)) {
  2996. if (!db_admin_is_updated_c_cmd($c_cmd_id, $item['date'])) {
  2997. continue;
  2998. }
  2999. $data = array('url' => $enclosure->link, 'u_datetime' => $item['date']);
  3000. $where = array('c_cmd_id' => $c_cmd_id);
  3001. db_update('c_cmd', $data, $where);
  3002. } else {
  3003. $data = array(
  3004. 'name' => $name,
  3005. 'url' => $enclosure->link,
  3006. 'permit' => 127,
  3007. 'c_cmd_caster_id' => $c_cmd_caster_id,
  3008. 'r_datetime' => $item['date'],
  3009. 'u_datetime' => $item['date'],
  3010. );
  3011. db_insert('c_cmd', $data);
  3012. }
  3013. }
  3014. return $cmd_count;
  3015. }
  3016. function db_admin_is_updated_c_cmd($c_cmd_id, $date)
  3017. {
  3018. $sql = 'SELECT c_cmd_id FROM c_cmd WHERE c_cmd_id = ? AND u_datetime < ?';
  3019. $param = array($c_cmd_id, $date);
  3020. return (bool)db_get_one($sql, $param);
  3021. }
  3022. function db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)
  3023. {
  3024. $sql = 'SELECT c_cmd_id FROM c_cmd WHERE name = ? AND c_cmd_caster_id = ?';
  3025. $data = array($name, $c_cmd_caster_id);
  3026. return db_get_one($sql, $data);
  3027. }
  3028. /**
  3029. * 指定したメンバーのメール受信設定を無効にする
  3030. *
  3031. * 以下の設定項目を無効にする。
  3032. * + メール/携帯メール/デイリーニュース受信設定
  3033. * + コミュニティ管理者からのメッセージ/書き込みのメッセージ受信設定
  3034. * + スケジュール通知メール受信設定
  3035. * + 日記コメントメール受信設定
  3036. *
  3037. * @param int $c_member_id
  3038. */
  3039. function db_admin_stop_receive_mail4c_member_id($c_member_id)
  3040. {
  3041. $where = array('c_member_id' => intval($c_member_id));
  3042. // プロフィールでのメール受信設定項目
  3043. $data = array(
  3044. 'is_receive_mail' => 0,
  3045. 'is_receive_daily_news' => 0,
  3046. 'is_receive_ktai_mail' => 0,
  3047. );
  3048. db_update('c_member', $data, $where);
  3049. // コミュニティでのメール受信設定項目
  3050. $data = array(
  3051. 'is_receive_mail' => 0,
  3052. 'is_receive_mail_pc' => 0,
  3053. 'is_receive_message' => 0
  3054. );
  3055. db_update('c_commu_member', $data, $where);
  3056. // スケジュール通知メール受信設定
  3057. $data = array(
  3058. 'is_receive_mail' => 0,
  3059. );
  3060. db_update('c_schedule', $data, $where);
  3061. // 日記コメントメール受信設定
  3062. db_member_update_c_member_config($c_member_id, 'SEND_DIARY_COMMENT_MAIL_KTAI', 0);
  3063. }
  3064. /**
  3065. * 指定したメンバーのメール受信設定のいずれかが有効であるかどうか
  3066. *
  3067. * 以下のいずれかが有効であればtrueを返す
  3068. * + メール/携帯メール/デイリーニュース受信設定
  3069. * + コミュニティ管理者からのメッセージ/書き込みのメッセージ受信設定
  3070. * + スケジュール通知メール受信設定
  3071. * + 日記コメントメール受信設定
  3072. *
  3073. * @param int $c_member_id
  3074. * @return bool メール受信設定がひとつでも有効である場合は true、すべて無効である場合は false
  3075. */
  3076. function db_admin_is_receive_any_mail4c_member_id($c_member_id)
  3077. {
  3078. $params = array(intval($c_member_id));
  3079. // プロフィールでのメール受信設定項目
  3080. $sql = 'SELECT c_member_id FROM c_member WHERE c_member_id = ? AND (is_receive_mail = 1 OR is_receive_daily_news = 1 OR is_receive_ktai_mail = 1)';
  3081. if (db_get_one($sql, $params)) {
  3082. return true;
  3083. }
  3084. // コミュニティでのメール受信設定項目
  3085. $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_member_id = ? AND (is_receive_mail = 1 OR is_receive_mail_pc = 1 OR is_receive_message = 1)';
  3086. if (db_get_one($sql, $params)) {
  3087. return true;
  3088. }
  3089. // スケジュール通知メール受信設定
  3090. $sql = 'SELECT c_member_id FROM c_schedule WHERE c_member_id = ? AND is_receive_mail = 1';
  3091. if (db_get_one($sql, $params)) {
  3092. return true;
  3093. }
  3094. // 日記コメントメール受信設定
  3095. $sql = 'SELECT value FROM c_member_config WHERE c_member_id = ? AND name = ?';
  3096. $params[] = 'SEND_DIARY_COMMENT_MAIL_KTAI';
  3097. if (db_get_one($sql, $params)) {
  3098. return true;
  3099. }
  3100. return false;
  3101. }
  3102. /**
  3103. * c_admin_userのsess_idフィールドにセッションIDを新規に追加する
  3104. *
  3105. * @param int $c_admin_user_id 更新する行のc_admin_user_id
  3106. * @param string $sess_id 更新する値
  3107. * @return bool
  3108. */
  3109. function db_admin_update_c_admin_user_insert_sess_id($c_admin_user_id, $sess_id) {
  3110. $data = array('sess_id' => $sess_id);
  3111. $where = array('c_admin_user_id' => intval($c_admin_user_id));
  3112. return db_update('c_admin_user', $data, $where);
  3113. }
  3114. /**
  3115. * c_admin_userのsess_idの値を削除する
  3116. *
  3117. * @param string $sess_id 更新する行のsess_idの値
  3118. * @return bool
  3119. */
  3120. function db_admin_update_c_admin_user_delete_sess_id($sess_id) {
  3121. $data = array('sess_id' => '');
  3122. $where = array('sess_id' => $sess_id);
  3123. return db_update('c_admin_user', $data, $where);
  3124. }
  3125. /**
  3126. * ログイン時のセッションIDと現在のセッションIDが一致していることを確認する
  3127. *
  3128. * @param int $c_admin_user_id
  3129. * @param string $now_sess_id 現在のセッションID
  3130. * @return bool
  3131. */
  3132. function db_admin_is_one_session_per_user($c_admin_user_id, $now_sess_id)
  3133. {
  3134. if (OPENPNE_ONE_SESSION_PER_USER) {
  3135. $sql = 'SELECT sess_id FROM c_admin_user '
  3136. . ' WHERE c_admin_user_id = ?';
  3137. $param = array($c_admin_user_id);
  3138. $login_sess_id = db_get_one($sql, $param);
  3139. if ($login_sess_id !== $now_sess_id) {
  3140. return false;
  3141. }
  3142. }
  3143. return true;
  3144. }
  3145. /**
  3146. * 初期ポイント設定
  3147. */
  3148. function db_admin_update_c_point_clear($c_member_profile_value)
  3149. {
  3150. $sql = 'SELECT c_profile_id, public_flag_default FROM c_profile where name = ?';
  3151. $params = array('PNE_POINT');
  3152. $c_profile = db_get_row($sql, $params);
  3153. $c_profile_id = $c_profile['c_profile_id'];
  3154. $public_flag_default = $c_profile['public_flag_default'];
  3155. $data = array('value' => $c_member_profile_value);
  3156. $where = array('c_profile_id' => intval($c_profile_id));
  3157. db_update('c_member_profile', $data, $where);
  3158. // すべてのメンバーのIDを取得
  3159. $sql = 'SELECT c_member_id FROM c_member';
  3160. $all_member_ids = db_get_col($sql);
  3161. // ポイント情報があるメンバーのIDを取得
  3162. $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ?';
  3163. $params = array($c_profile_id);
  3164. $has_point_member_ids = db_get_col($sql, $params);
  3165. // 差分から、ポイント情報がないメンバーのIDを取得
  3166. $c_member_ids = array_diff($all_member_ids, $has_point_member_ids);
  3167. // プロフィールにポイント情報が存在しない場合はレコードを追加
  3168. foreach ($c_member_ids as $c_member_id) {
  3169. $data = array(
  3170. 'c_member_id' => intval($c_member_id),
  3171. 'c_profile_id' => intval($c_profile_id),
  3172. 'c_profile_option_id' => 0,
  3173. 'value' => $c_member_profile_value,
  3174. 'public_flag' => $public_flag_default,
  3175. );
  3176. db_insert('c_member_profile', $data);
  3177. }
  3178. }
  3179. function db_admin_commu_c_members4c_commu_id($c_commu_id, $page_size, $page)
  3180. {
  3181. $sql = 'SELECT c_member_id, r_datetime FROM c_commu_member WHERE c_commu_id = ? ORDER BY r_datetime';
  3182. $params = array(intval($c_commu_id));
  3183. $id_list = db_get_all_page($sql, $page, $page_size, $params);
  3184. $list = array();
  3185. foreach ($id_list as $key => $value) {
  3186. $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
  3187. $c_member['friend_count'] = db_friend_count_friends($value['c_member_id']);
  3188. $c_member['r_datetime'] = $value['r_datetime'];
  3189. $list[] = $c_member;
  3190. }
  3191. $sql = 'SELECT COUNT(*) FROM c_commu_member WHERE c_commu_id = ?';
  3192. $total_num = db_get_one($sql, $params);
  3193. if ($total_num != 0) {
  3194. $total_page_num = ceil($total_num / $page_size);
  3195. if ($page >= $total_page_num) {
  3196. $next = false;
  3197. } else {
  3198. $next = true;
  3199. }
  3200. if ($page <= 1) {
  3201. $prev = false;
  3202. } else {
  3203. $prev = true;
  3204. }
  3205. }
  3206. $start_num = ($page - 1) * $page_size + 1 ;
  3207. $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
  3208. return array($list , $prev , $next, $total_num, $start_num, $end_num);
  3209. }
  3210. function db_admin_commu_c_members_all_get4c_commu_id($c_commu_id)
  3211. {
  3212. $sql = 'SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?';
  3213. $params = array(intval($c_commu_id));
  3214. $id_list = db_get_all($sql, $params);
  3215. $list = array();
  3216. foreach ($id_list as $key => $value) {
  3217. $list[] = db_member_c_member4c_member_id($value['c_member_id'], true);
  3218. }
  3219. return $list;
  3220. }
  3221. function cond_name_list($cond_list, $select_last_login)
  3222. {
  3223. $cond_name_list = array();
  3224. if (!is_null($cond_list['id'])) {
  3225. // ID
  3226. $cond_name_list['id']['name'] = 'ID(完全一致)';
  3227. $cond_name_list['id']['value'] = $cond_list['id'];
  3228. }
  3229. if (!is_null($cond_list['username'])) {
  3230. // ログインID
  3231. $cond_name_list['username']['name'] = 'ログインID';
  3232. $cond_name_list['username']['value'] = $cond_list['username'];
  3233. }
  3234. if (!is_null($cond_list['nickname'])) {
  3235. // ニックネーム
  3236. $cond_name_list['nickname']['name'] = WORD_NICKNAME;
  3237. $cond_name_list['nickname']['value'] = $cond_list['nickname'];
  3238. }
  3239. if (!is_null($cond_list['last_login'])){
  3240. // 最終ログイン
  3241. $cond_name_list['last_login']['name'] = '最終ログイン';
  3242. $cond_name_list['last_login']['value'] = $select_last_login[$cond_list['last_login']];
  3243. }
  3244. if (!is_null($cond_list['s_year']) || !is_null($cond_list['e_year'] )) {
  3245. // 生年月日
  3246. $cond_name_list['year']['name'] = '生年月日';
  3247. if ( !is_null($cond_list['s_year'] )) {
  3248. $cond_name_list['year']['value'] = $cond_list['s_year'].'年 ~ ';
  3249. } else {
  3250. $cond_name_list['year']['value'] = '開始指定なし ~ ';
  3251. }
  3252. if ( !is_null($cond_list['e_year'])) {
  3253. $cond_name_list['year']['value'] .= $cond_list['e_year'].'年';
  3254. } else {
  3255. $cond_name_list['year']['value'] .= '終了指定なし';
  3256. }
  3257. }
  3258. //プロフィール
  3259. $profile_list = db_member_c_profile_list();
  3260. $profile_cond = $cond_list['profile'];
  3261. $profile_cond_name = array();
  3262. if ( !is_null($profile_cond) ) {
  3263. foreach ( $profile_list as $key => $profile ) {
  3264. if ( array_key_exists( $key, $profile_cond ) ) {
  3265. $profile_cond_name[$key]['name'] = $profile['caption'];
  3266. if ( $profile['form_type'] == 'checkbox' ) {
  3267. $profile_cond_name[$key]['value'] = array();
  3268. $count = 0;
  3269. $work_array = array();
  3270. foreach ( $profile['options'] as $option ) {
  3271. if ( in_array( $option['c_profile_option_id'], $profile_cond[$key] ) ) {
  3272. $profile_cond_name[$key]['value'][] = $option['value'];
  3273. }
  3274. }
  3275. } else {
  3276. if ( $profile['form_type'] == 'radio' || $profile['form_type'] == 'select' ) {
  3277. foreach ( $profile['options'] as $option ) {
  3278. if ( $option['c_profile_option_id'] == $profile_cond[$key] ) {
  3279. $profile_cond_name[$key]['value'] = $option['value'];
  3280. break;
  3281. }
  3282. }
  3283. } else {
  3284. $profile_cond_name[$key]['value'] = $profile_cond[$key];
  3285. }
  3286. }
  3287. }
  3288. }
  3289. $cond_name_list['profile'] = $profile_cond_name;
  3290. }
  3291. //メールアドレス
  3292. if (!is_null($cond_list['mail_address'])){
  3293. $cond_name_list['mail_address']['name'] = 'メールアドレス(完全一致)';
  3294. $cond_name_list['mail_address']['value'] = $cond_list['mail_address'];
  3295. }
  3296. //PCメールアドレスの有無
  3297. if (!is_null($cond_list['is_pc_address'])){
  3298. $cond_name_list['is_pc_address']['name'] = 'PCメールアドレス';
  3299. if ( $cond_list['is_pc_address'] == 1 ) {
  3300. $cond_name_list['is_pc_address']['value'] = '登録している';
  3301. } else {
  3302. $cond_name_list['is_pc_address']['value'] = '登録していない';
  3303. }
  3304. }
  3305. //携帯メールアドレスの有無
  3306. if (!is_null($cond_list['is_ktai_address'])){
  3307. $cond_name_list['is_ktai_address']['name'] = '携帯メールアドレス';
  3308. if ( $cond_list['is_ktai_address'] == 1 ) {
  3309. $cond_name_list['is_ktai_address']['value'] = '登録している';
  3310. } else {
  3311. $cond_name_list['is_ktai_address']['value'] = '登録していない';
  3312. }
  3313. }
  3314. //ポイントランク
  3315. if (!is_null($cond_list['s_rank']) || !is_null($cond_list['e_rank'] )) {
  3316. $cond_name_list['rank']['name'] = 'ポイントランク';
  3317. if ( !is_null($cond_list['s_rank'] )) {
  3318. $rank = db_point_get_rank4rank_id($cond_list['s_rank']);
  3319. $cond_name_list['rank']['value'] = $rank['name'].' ~ ';
  3320. } else {
  3321. $cond_name_list['rank']['value'] = '開始指定なし ~ ';
  3322. }
  3323. if ( !is_null($cond_list['e_rank'] )) {
  3324. $rank = db_point_get_rank4rank_id($cond_list['e_rank']);
  3325. $cond_name_list['rank']['value'] .= $rank['name'];
  3326. } else {
  3327. $cond_name_list['rank']['value'] .= '終了指定なし';
  3328. }
  3329. }
  3330. return $cond_name_list;
  3331. }
  3332. /**
  3333. * 申請者リスト取得
  3334. *
  3335. * @param int $page
  3336. * @param int $page_size
  3337. * @param array $pager
  3338. * @param array $cond_list
  3339. * @param string $mail_address
  3340. * @param array $order
  3341. * @return array $c_member_pre_list
  3342. */
  3343. function _db_admin_c_member_pre_list($page, $page_size, &$pager, $cond_list, $mail_address, $order)
  3344. {
  3345. $c_member_pre_list = _db_admin_c_member_pre_cond_list($cond_list, $mail_address, $order);
  3346. $total_num = count($c_member_pre_list);
  3347. $c_member_pre_list = array_slice($c_member_pre_list, ($page - 1) * $page_size, $page_size);
  3348. if ($total_num > 0) {
  3349. $pager = util_make_pager($page, $page_size, $total_num);
  3350. } else {
  3351. $pager = array('page_size' => $page_size);
  3352. }
  3353. return $c_member_pre_list;
  3354. }
  3355. /**
  3356. * 承認待ちリストを取得する
  3357. *
  3358. * @param array $cond_list
  3359. * @param string $mail_address
  3360. * @param string $order
  3361. * @return array
  3362. */
  3363. function _db_admin_c_member_pre_cond_list($cond_list, $mail_address, $order)
  3364. {
  3365. // ソート条件
  3366. // ソート順
  3367. $type = explode('-', $order);
  3368. $orderby = '';
  3369. if ($type[0] == "birth") {
  3370. if ($type[1] == "2") {
  3371. $orderby = ' birth_year DESC, birth_month DESC, birth_day DESC';
  3372. } else {
  3373. $orderby = ' birth_year, birth_month, birth_day';
  3374. }
  3375. } else {
  3376. $orderby = $type[0];
  3377. if ($type[1] == "2") {
  3378. $orderby .= ' DESC';
  3379. }
  3380. }
  3381. // 絞込み
  3382. $wheres = array();
  3383. $params = array();
  3384. // メールアドレス
  3385. if (!empty($mail_address)) {
  3386. $wheres[] = 'c_member_pre.regist_address = ?';
  3387. $params[] = $mail_address;
  3388. }
  3389. // PCアドレス
  3390. if (!empty($cond_list['is_pc_address'])) {
  3391. if($cond_list['is_pc_address'] == 1) {
  3392. $wheres[] = "pc_address <> ''";
  3393. } else {
  3394. $wheres[] = "pc_address = ''";
  3395. }
  3396. }
  3397. // 携帯アドレス
  3398. if (!empty($cond_list['is_ktai_address'])) {
  3399. if($cond_list['is_ktai_address'] == 1) {
  3400. $wheres[] = "ktai_address <> ''";
  3401. } else {
  3402. $wheres[] = "ktai_address = ''";
  3403. }
  3404. }
  3405. // 開始年
  3406. if (!empty($cond_list['s_year'])) {
  3407. $wheres[] = 'c_member_pre.birth_year >= ?';
  3408. $params[] = $cond_list['s_year'];
  3409. }
  3410. // 終了年
  3411. if (!empty($cond_list['e_year'])) {
  3412. $wheres[] = 'c_member_pre.birth_year <= ?';
  3413. $params[] = $cond_list['e_year'];
  3414. }
  3415. $sql = 'SELECT ';
  3416. $sql .= ' c_member_pre.*';
  3417. $sql .= ',c_member.c_member_id';
  3418. $sql .= ',c_member.nickname as invite_nickname ';
  3419. $sql .= 'FROM ';
  3420. $sql .= ' c_member_pre ';
  3421. $sql .= 'LEFT JOIN ';
  3422. $sql .= ' c_member ';
  3423. $sql .= 'ON ';
  3424. $sql .= ' c_member_pre.c_member_id_invite = c_member.c_member_id ';
  3425. $sql .= 'WHERE ';
  3426. $sql .= ' c_member_pre.is_sns_entry_confirm = 1 ';
  3427. if ($wheres) {
  3428. $sql .= ' AND ' . implode(' AND ', $wheres);
  3429. }
  3430. $sql .= ' ORDER BY ';
  3431. if ($orderby) {
  3432. $sql .= $orderby;
  3433. } else {
  3434. $sql .= ' c_member_pre_id';
  3435. }
  3436. return db_get_all($sql, $params);
  3437. }
  3438. /**
  3439. * c_image_sizeのimage_category毎の合計と一人当たりの平均値を取得する
  3440. */
  3441. function get_analysis_image_category()
  3442. {
  3443. $mb = 1048576;
  3444. $image_category = array(
  3445. 'album' => 'アルバム',
  3446. 'diary' => WORD_DIARY,
  3447. 'commu' => WORD_COMMUNITY,
  3448. 'other' => 'その他'
  3449. );
  3450. $sql = 'SELECT COUNT(*) FROM c_member';
  3451. $total_member_num = db_get_one($sql);
  3452. $sql = "SELECT SUM(filesize) FROM c_image_size WHERE image_category = ?";
  3453. $i = 0;
  3454. $get_analysis_image_category = array();
  3455. foreach($image_category as $key => $value) {
  3456. $params = array($key);
  3457. $category_sum = db_get_one($sql, $params);
  3458. $category_sum = $category_sum / $mb;
  3459. $category_avg = $category_sum / $total_member_num;
  3460. $get_analysis_image_category[$i]['category'] = $value;
  3461. $get_analysis_image_category[$i]['sum'] = sprintf("%01.2f", $category_sum);
  3462. $get_analysis_image_category[$i]['avg'] = sprintf("%01.2f", $category_avg);
  3463. $i++;
  3464. }
  3465. return $get_analysis_image_category;
  3466. }
  3467. /**
  3468. * c_image_sizeの合計と一人当たりの平均値を取得する
  3469. */
  3470. function get_analysis_image_category_sum()
  3471. {
  3472. $mb = 1048576;
  3473. $sql = 'SELECT COUNT(*) FROM c_member';
  3474. $total_member_num = db_get_one($sql);
  3475. $sql = "SELECT SUM(filesize) FROM c_image_size";
  3476. $total_image_size = db_get_one($sql);
  3477. $total_image_size = $total_image_size / $mb;
  3478. $get_analysis_image_category_sum['category'] = '合計';
  3479. $get_analysis_image_category_sum['sum'] = sprintf("%01.2f", $total_image_size);
  3480. $get_analysis_image_category_sum['avg'] = sprintf("%01.2f", $total_image_size / $total_member_num);
  3481. return $get_analysis_image_category_sum;
  3482. }
  3483. ?>