PageRenderTime 75ms CodeModel.GetById 31ms RepoModel.GetById 1ms app.codeStats 0ms

/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

Large files files are truncated, but you can click here to view the full file

  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 ($tot

Large files files are truncated, but you can click here to view the full file