/webapp/modules/admin/lib/db_admin.php
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
- <?php
- /**
- * @copyright 2005-2008 OpenPNE Project
- * @license http://www.php.net/license/3_01.txt PHP License 3.01
- */
- /**
- * メンバーリスト取得
- */
- function db_admin_c_member_list($page, $page_size, &$pager)
- {
- $sql = 'SELECT c_member_id FROM c_member ORDER BY c_member_id';
- $ids = db_get_col_page($sql, $page, $page_size);
- $c_member_list = array();
- foreach ($ids as $id) {
- $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
- }
- $sql = 'SELECT COUNT(*) FROM c_member';
- $total_num = db_get_one($sql);
- $pager = util_make_pager($page, $page_size, $total_num);
- return $c_member_list;
- }
- function db_admin_c_member4mail_address($mail_address)
- {
- $sql = 'SELECT c_member_id FROM c_member_secure' .
- ' WHERE pc_address = ? OR ktai_address = ? OR regist_address = ?';
- $enc_address = t_encrypt($mail_address);
- $params = array($enc_address, $enc_address, $enc_address);
- $list = db_get_col($sql, $params);
- $c_member_list = array();
- foreach ($list as $c_member_id) {
- $c_member_list[] = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
- }
- return $c_member_list;
- }
- function db_admin_c_member4username($username)
- {
- $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
- $c_member_id = db_get_one($sql, array($username));
- $c_member = db_member_c_member4c_member_id($c_member_id, true, true, 'private');
- return $c_member;
- }
- function db_admin_c_siteadmin($target)
- {
- $sql = 'SELECT * FROM c_siteadmin WHERE target = ?';
- $params = array($target);
- return db_get_row($sql, $params);
- }
- function db_admin_insert_c_siteadmin($target, $body)
- {
- $data = array(
- 'target' => $target,
- 'body' => $body,
- 'r_date' => db_now(),
- );
- return db_insert('c_siteadmin', $data);
- }
- function db_admin_update_c_siteadmin($target, $body)
- {
- $data = array(
- 'body' => $body,
- 'r_date' => db_now(),
- );
- $where = array('target' => $target);
- return db_update('c_siteadmin', $data, $where);
- }
- function db_admin_delete_c_profile_option($c_profile_option_id)
- {
- //function cache削除
- pne_cache_drop('db_member_c_profile_list');
- if (!$c_profile_option_id) {
- return false;
- }
- $sql = 'DELETE FROM c_member_profile WHERE c_profile_option_id = ?';
- $params = array(intval($c_profile_option_id));
- db_query($sql, $params);
- $sql = 'DELETE FROM c_profile_option WHERE c_profile_option_id = ?';
- db_query($sql, $params);
- return true;
- }
- function db_admin_insert_c_profile_option($c_profile_id, $value, $sort_order)
- {
- //function cache削除
- pne_cache_drop('db_member_c_profile_list');
- $data = array(
- 'c_profile_id' => intval($c_profile_id),
- 'value' => $value,
- 'sort_order' => intval($sort_order),
- );
- return db_insert('c_profile_option', $data);
- }
- function db_admin_update_c_profile_option($c_profile_option_id, $value, $sort_order)
- {
- //function cache削除
- pne_cache_drop('db_member_c_profile_list');
- $data = array('value' => $value);
- $where = array('c_profile_option_id' => intval($c_profile_option_id));
- db_update('c_member_profile', $data, $where);
- $data = array(
- 'value' => $value,
- 'sort_order' => intval($sort_order),
- );
- db_update('c_profile_option', $data, $where);
- }
- function db_admin_insert_c_banner($a_href, $type, $nickname)
- {
- $data = array(
- 'a_href' => $a_href,
- 'type' => $type,
- 'nickname' => $nickname,
- 'is_hidden_after' => 0,
- 'is_hidden_before' => 0,
- 'image_filename' => '',
- );
- return db_insert('c_banner', $data);
- }
- function db_admin_update_c_banner($c_banner_id, $sets)
- {
- $where = array('c_banner_id' => intval($c_banner_id));
- db_update('c_banner', $sets, $where);
- }
- function db_admin_delete_c_banner($c_banner_id)
- {
- db_admin_delete_c_image4c_banner_id($c_banner_id);
- $sql = 'DELETE FROM c_banner WHERE c_banner_id = ?';
- $params = array(intval($c_banner_id));
- db_query($sql, $params);
- }
- function db_admin_delete_c_image4c_banner_id($c_banner_id)
- {
- $sql = 'SELECT image_filename FROM c_banner WHERE c_banner_id = ?';
- $params = array(intval($c_banner_id));
- $image_filename = db_get_one($sql, $params);
- db_image_data_delete($image_filename);
- }
- function db_admin_insert_c_profile(
- $name
- , $caption
- , $info
- , $is_required
- , $public_flag_edit
- , $public_flag_default
- , $form_type
- , $sort_order
- , $disp_regist
- , $disp_config
- , $disp_search
- , $val_type
- , $val_regexp
- , $val_min
- , $val_max
- )
- {
- pne_cache_drop('db_member_c_profile_list');
- if (empty($info) || is_null($info)) {
- $info = '';
- }
- $data = array(
- 'name' => $name,
- 'caption' => $caption,
- 'info' => $info,
- 'is_required' => (bool)$is_required,
- 'public_flag_edit' => (bool)$public_flag_edit,
- 'public_flag_default' => $public_flag_default,
- 'form_type' => $form_type,
- 'sort_order' => (int)$sort_order,
- 'disp_regist' => (bool)$disp_regist,
- 'disp_config' => (bool)$disp_config,
- 'disp_search' => (bool)$disp_search,
- 'val_type' => $val_type,
- 'val_regexp' => $val_regexp,
- 'val_min' => (int)$val_min,
- 'val_max' => (int)$val_max,
- );
- return db_insert('c_profile', $data);
- }
- function db_admin_update_c_profile($c_profile_id
- , $name
- , $caption
- , $info
- , $is_required
- , $public_flag_edit
- , $public_flag_default
- , $form_type
- , $sort_order
- , $disp_regist
- , $disp_config
- , $disp_search
- , $val_type
- , $val_regexp
- , $val_min
- , $val_max
- )
- {
- if (empty($info) || is_null($info)) {
- $info = '';
- }
- $data = array(
- 'name' => $name,
- 'caption' => $caption,
- 'info' => $info,
- 'is_required' => (bool)$is_required,
- 'public_flag_edit' => (bool)$public_flag_edit,
- 'public_flag_default' => $public_flag_default,
- 'form_type' => $form_type,
- 'sort_order' => intval($sort_order),
- 'disp_regist' => (bool)$disp_regist,
- 'disp_config' => (bool)$disp_config,
- 'disp_search' => (bool)$disp_search,
- 'val_type' => $val_type,
- 'val_regexp' => $val_regexp,
- 'val_min' => intval($val_min),
- 'val_max' => intval($val_max),
- );
- $where = array('c_profile_id' => intval($c_profile_id));
- db_update('c_profile', $data, $where);
- // 公開設定が固定のときはメンバーの設定値を上書き
- if (!$public_flag_edit) {
- $data = array('public_flag' => $public_flag_default);
- db_update('c_member_profile', $data, $where);
- }
- pne_cache_drop('db_member_c_profile_list');
- }
- function db_admin_delete_c_profile($c_profile_id)
- {
- $params = array(intval($c_profile_id));
- // メンバーのプロフィールから削除
- $sql = 'DELETE FROM c_member_profile WHERE c_profile_id = ?';
- db_query($sql, $params);
- // 選択肢項目を削除
- $sql = 'DELETE FROM c_profile_option WHERE c_profile_id = ?';
- db_query($sql, $params);
- // プロフィール項目を削除
- $sql = 'DELETE FROM c_profile WHERE c_profile_id = ?';
- db_query($sql, $params);
- pne_cache_drop('db_member_c_profile_list');
- }
- function db_admin_c_profile4c_profile_id($c_profile_id)
- {
- $sql = 'SELECT * FROM c_profile WHERE c_profile_id = ?';
- $params = array(intval($c_profile_id));
- return db_get_row($sql, $params);
- }
- /**
- * 全バナー取得
- *
- * @param int $limit 取得最大件数
- * @return array_of_array c_banner_list バナー配列
- */
- function db_admin_c_banner_list4null($type = '')
- {
- $sql = 'SELECT * FROM c_banner';
- $params = array();
- if ($type) {
- $sql .= ' WHERE type = ?';
- $params[] = $type;
- }
- $sql .= ' ORDER BY c_banner_id';
- return db_get_all($sql, $params);
- }
- function db_admin_c_commu_category_parent_list()
- {
- $sql = 'SELECT * FROM c_commu_category_parent ORDER BY sort_order';
- return db_get_all($sql);
- }
- function db_admin_c_commu_category_list()
- {
- $sql = 'SELECT * FROM c_commu_category ORDER BY sort_order';
- $list = db_get_all($sql);
- $category_list = array();
- foreach ($list as $item) {
- $category_list[$item['c_commu_category_parent_id']][] = $item;
- }
- return $category_list;
- }
- function db_admin_insert_c_commu_category_parent($name, $sort_order)
- {
- $data = array(
- 'name' => $name,
- 'sort_order' => intval($sort_order),
- );
- return db_insert('c_commu_category_parent', $data);
- }
- function db_admin_update_c_commu_category_parent($c_commu_category_parent_id, $name, $sort_order)
- {
- $data = array(
- 'name' => $name,
- 'sort_order' => intval($sort_order),
- );
- $where = array(
- 'c_commu_category_parent_id' => intval($c_commu_category_parent_id)
- );
- db_update('c_commu_category_parent', $data, $where);
- }
- function db_admin_delete_c_commu_category_parent($c_commu_category_parent_id)
- {
- $params = array(intval($c_commu_category_parent_id));
- // 小カテゴリを削除
- $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_parent_id = ?';
- db_query($sql, $params);
- // 中カテゴリを削除
- $sql = 'DELETE FROM c_commu_category_parent WHERE c_commu_category_parent_id = ?';
- db_query($sql, $params);
- }
- function db_admin_insert_c_commu_category($c_commu_category_parent_id, $name, $sort_order, $is_create_commu)
- {
- $data = array(
- 'c_commu_category_parent_id' => intval($c_commu_category_parent_id),
- 'name' => $name,
- 'sort_order' => intval($sort_order),
- 'is_create_commu' => intval($is_create_commu),
- );
- return db_insert('c_commu_category', $data);
- }
- function db_admin_update_c_commu_category($c_commu_category_id, $name, $sort_order, $is_create_commu)
- {
- $data = array(
- 'name' => $name,
- 'sort_order' => intval($sort_order),
- 'is_create_commu' => intval($is_create_commu),
- );
- $where = array('c_commu_category_id' => intval($c_commu_category_id));
- db_update('c_commu_category', $data, $where);
- }
- function db_admin_delete_c_commu_category($c_commu_category_id)
- {
- // 小カテゴリを削除
- $sql = 'DELETE FROM c_commu_category WHERE c_commu_category_id = ?';
- $params = array(intval($c_commu_category_id));
- db_query($sql, $params);
- }
- function db_admin_c_admin_user_id4username($username)
- {
- $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
- $params = array($username);
- return db_get_one($sql, $params);
- }
- function db_admin_authenticate_password($uid, $password)
- {
- $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE c_admin_user_id = ? AND password = ?';
- $params = array(intval($uid), md5($password));
- return (bool)db_get_one($sql, $params);
- }
- function db_admin_update_c_admin_user_password($uid, $password)
- {
- $data = array('password' => md5($password));
- $where = array('c_admin_user_id' => intval($uid));
- db_update('c_admin_user', $data, $where);
- }
- function db_admin_c_admin_config4name($name)
- {
- $sql = 'SELECT value FROM c_admin_config WHERE name = ?';
- $params = array($name);
- return db_get_one($sql, $params);
- }
- function db_admin_insert_c_admin_config($name, $value)
- {
- $data = array(
- 'name' => $name,
- 'value' => $value,
- );
- return db_insert('c_admin_config', $data);
- }
- function db_admin_update_c_admin_config($name, $value)
- {
- $data = array('value' => $value);
- $where = array('name' => $name);
- db_update('c_admin_config', $data, $where);
- }
- function db_admin_replace_c_admin_config($name, $value)
- {
- $sql = 'DELETE FROM c_admin_config WHERE name = ?';
- $params = array($name);
- db_query($sql, $params);
- $data = array(
- 'name' => strval($name),
- 'value' => strval($value),
- );
- return db_insert('c_admin_config', $data);
- }
- function db_admin_c_admin_config_all()
- {
- $sql = 'SELECT name, value FROM c_admin_config';
- return db_get_assoc($sql);
- }
- function db_admin_delete_c_image_link4image_filename($image_filename)
- {
- $parts = explode('_', $image_filename);
- $prefix = $parts[0];
- switch ($prefix) {
- case 'b':
- $pkey = (int)$parts[1];
- $sql = 'DELETE FROM c_banner WHERE c_banner_id = ? AND image_filename = ?';
- $params = array($pkey, $image_filename);
- db_query($sql, $params);
- break;
- case 'c':
- $tbl = 'c_commu';
- $pkey = (int)$parts[1];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
- //function cacheの削除
- cache_drop_c_commu($pkey);
- break;
- case 't':
- $tbl = 'c_commu_topic_comment';
- $pkey = (int)$parts[1];
- $number = (int)$parts[2];
- $sql = 'SELECT c_commu_topic_comment_id FROM c_commu_topic WHERE c_commu_topic_id = ? AND number = 0';
- $pkey = (int)db_get_one($sql, array($pkey));
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename'.$number, $pkey);
- break;
- case 'tc':
- $tbl = 'c_commu_topic_comment';
- $pkey = (int)$parts[1];
- $number = (int)$parts[2];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename'.$number, $pkey);
- break;
- case 'd':
- $tbl = 'c_diary';
- $pkey = (int)$parts[1];
- $number = (int)$parts[2];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
- break;
- case 'dc':
- $tbl = 'c_diary_comment';
- $pkey = (int)$parts[1];
- $number = (int)$parts[2];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
- break;
- case 'm':
- $tbl = 'c_member';
- $pkey = (int)$parts[1];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_1', $pkey);
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_2', $pkey);
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_3', $pkey);
- //function cacheの削除
- cache_drop_c_member_profile($pkey);
- break;
- case 'ms':
- $tbl = 'c_message';
- $pkey = (int)$parts[1];
- $number = (int)$parts[2];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename_'.$number, $pkey);
- break;
- case 'r':
- $tbl = 'c_rank';
- $pkey = (int)$parts[1];
- _db_admin_empty_filename($tbl, $image_filename, 'image_filename', $pkey);
- break;
- case 'a':
- $tbl = 'c_album';
- $pkey = (int)$parts[1];
- _db_admin_empty_filename($tbl, $image_filename, 'album_cover_image', $pkey);
- $sql = 'DELETE FROM c_album_image WHERE c_album_id = ? AND image_filename = ?';
- $params = array($pkey, $image_filename);
- db_query($sql, $params);
- break;
- case 'g':
- $tbl = 'biz_group';
- _db_admin_empty_filename($tbl, $image_filename);
- break;
- case 's':
- $tbl = 'biz_shisetsu';
- _db_admin_empty_filename($tbl, $image_filename);
- break;
- }
- }
- function _db_admin_empty_filename($tbl, $image_filename, $column = 'image_filename', $pkey = null)
- {
- $data = array(
- db_escapeIdentifier($column) => '',
- );
- if ($pkey) {
- $where[$tbl . '_id'] = (int)$pkey;
- }
- $where[db_escapeIdentifier($column)] = $image_filename;
- db_update(db_escapeIdentifier($tbl), $data, $where);
- }
- function db_admin_c_profile_name_exists($name)
- {
- $sql = 'SELECT c_profile_id FROM c_profile WHERE name = ?';
- $params = array($name);
- return db_get_one($sql, $params);
- }
- function db_admin_update_is_login_rejected($c_member_id)
- {
- // function cacheを削除
- cache_drop_c_member_profile($c_member_id);
- $sql = 'SELECT is_login_rejected FROM c_member WHERE c_member_id = ?';
- $params = array(intval($c_member_id));
- $is_login_rejected = db_get_one($sql, $params);
- if (is_null($is_login_rejected)) {
- return false;
- }
- $data = array('is_login_rejected' => !($is_login_rejected));
- $where = array('c_member_id' => intval($c_member_id));
- return db_update('c_member', $data, $where);
- }
- function db_admin_c_admin_user_list()
- {
- $sql = 'SELECT * FROM c_admin_user ORDER BY c_admin_user_id';
- return db_get_all($sql);
- }
- function db_admin_exists_c_admin_username($username)
- {
- $sql = 'SELECT c_admin_user_id FROM c_admin_user WHERE username = ?';
- $params = array(strval($username));
- return (bool)db_get_one($sql, $params);
- }
- function db_admin_insert_c_admin_user($username, $password, $auth_type)
- {
- $data = array(
- 'username' => strval($username),
- 'password' => md5($password),
- 'auth_type' => strval($auth_type),
- );
- return db_insert('c_admin_user', $data);
- }
- function db_admin_delete_c_admin_user($c_admin_user_id)
- {
- $sql = 'DELETE FROM c_admin_user WHERE c_admin_user_id = ?';
- $params = array(intval($c_admin_user_id));
- return db_query($sql, $params);
- }
- function db_admin_get_auth_type($c_admin_user_id)
- {
- $sql = 'SELECT auth_type FROM c_admin_user WHERE c_admin_user_id = ?';
- $params = array(intval($c_admin_user_id));
- return db_get_one($sql, $params);
- }
- /**
- * c_member テーブル内データによるメンバーIDリスト取得
- *
- * @return array
- */
- function db_admin_c_member_id_list4cond_c_member($cond_list, $type = array())
- {
- $sql = 'SELECT c_member_id FROM c_member';
- $wheres = array();
- // ID(完全一致)
- if (!empty($cond_list['id'])) {
- $wheres[] = "c_member_id = ?";
- $params[] = $cond_list['id'];
- }
- // ニックネーム(あいまい検索)
- if (!empty($cond_list['nickname'])) {
- $wheres[] = "nickname LIKE ?";
- $params[] = '%' . $cond_list['nickname'] . '%';
- }
- // 開始年
- if (!empty($cond_list['s_year'])) {
- $wheres[] = 'birth_year >= ?';
- $params[] = $cond_list['s_year'];
- }
- // 終了年
- if (!empty($cond_list['e_year'])) {
- $wheres[] = 'birth_year <= ?';
- $params[] = $cond_list['e_year'];
- }
- // 誕生日による絞り込みの場合は、誕生年が0のメンバーを除外する
- if (!empty($cond_list['s_year']) || !empty($cond_list['e_year'])) {
- $wheres[] = 'birth_year <> 0';
- }
- //最終ログイン時間で絞り込み
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'mysql') {
- $no_login_param = '0000-00-00 00:00:00';
- } elseif ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $no_login_param = '0000-01-01 00:00:00';
- }
- if (isset($cond_list['last_login'])) {
- switch($cond_list['last_login']) {
- case 1 : // 3日以内
- $wheres[] = 'access_date >= ?';
- $params[] = date('Y-m-d', strtotime('-3 day'));
- break;
- case 2 : // 3~7日以内
- $wheres[] = 'access_date >= ? AND access_date < ?';
- $params[] = date('Y-m-d', strtotime('-7 day'));
- $params[] = date('Y-m-d', strtotime('-3 day'));
- break;
- case 3 : // 7~30日以内
- $wheres[] = 'access_date >= ? AND access_date < ?';
- $params[] = date('Y-m-d', strtotime('-30 day'));
- $params[] = date('Y-m-d', strtotime('-7 day'));
- break;
- case 4 : // 30日以上
- $wheres[] = 'access_date > ? AND access_date < ?';
- $params[] = $no_login_param;
- $params[] = date('Y-m-d', strtotime('-30 day'));
- break;
- case 5 : // 未ログイン
- $wheres[] = 'access_date = ?';
- $params[] = $no_login_param;
- break;
- }
- }
- if ($wheres) {
- $sql .= ' WHERE ' . implode(' AND ', $wheres);
- }
- // --- ソートオーダーここから
- // $orderの例:id_1 , id_2
- // 「-」の前が項目名であとが1なら昇順 2なら降順
- // プロフィール識別子であれば除外
- $is_order = false;
- if (!empty($type)) {
- $is_order = true;
- switch ($type[0]) {
- case "c_member_id":
- $sql .= ' ORDER BY c_member_id';
- break;
- case "nickname":
- $sql .= ' ORDER BY nickname';
- break;
- case "image_filename":
- $sql .= ' ORDER BY image_filename';
- break;
- case "c_member_id_invite":
- $sql .= ' ORDER BY c_member_id_invite';
- break;
- case "access_date":
- $sql .= ' ORDER BY access_date';
- break;
- case "r_date":
- $sql .= ' ORDER BY r_date';
- break;
- case "birth":
- // 降順指定
- if ($type[1] == "2") {
- $sql .= ' ORDER BY birth_year DESC, birth_month DESC, birth_day';
- } else {
- $sql .= ' ORDER BY birth_year, birth_month, birth_day';
- }
- break;
- default :
- $is_order = false;
- }
- // 降順指定
- if ($is_order && $type[1] == "2") {
- $sql .= ' DESC';
- }
- }
- // --- ソートオーダーここまで
- return db_get_col($sql, $params);
- }
- /**
- * PNE_POINT によるメンバーIDリスト絞り込み
- *
- * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
- *
- * @return array
- */
- function db_admin_c_member_id_list4cond_pne_point($ids, $cond_list)
- {
- $s_point = null;
- $e_point = null;
- $sql = 'SELECT c_member_id'
- . ' FROM c_member_profile'
- . ' INNER JOIN c_profile USING (c_profile_id)'
- . ' WHERE name = ?';
- $params = array('PNE_POINT');
- if ($cond_list['s_rank']) {
- $s_point = db_point_get_rank_point4rank_id($cond_list['s_rank']);
- $sql .= ' AND value >= ?';
- $params[] = (int)$s_point;
- }
- if ($cond_list['e_rank']) {
- $e_point = db_point_get_next_rank_point4rank_id($cond_list['e_rank']);
- if (!is_null($e_point)) {
- $sql .= ' AND value < ?';
- $params[] = (int)$e_point;
- }
- }
- $point_ids = db_get_col($sql, $params);
- // s_point が 0 以下もしくは未定義であり、 e_point が未定義もしくは 0 を超過する場合、 c_member_profile に PNE_POINT が存在しないメンバーも結果に含める
- if ((is_null($s_point) || $s_point <= 0) && (is_null($e_point) || $e_point > 0)) {
- $sql = 'SELECT c_member_id FROM c_member_profile'
- . ' INNER JOIN c_profile USING (c_profile_id)'
- . ' WHERE name = ?';
- $params = array('PNE_POINT');
- $have_point_ids = db_get_col($sql, $params);
- // この関数に渡されたメンバーIDの配列と、PNE_POINTが存在するすべてのメンバーIDの配列の差分を結果に追加する
- $point_ids = array_merge($point_ids, array_diff($ids, $have_point_ids));
- }
- return array_intersect($ids, $point_ids);
- }
- /**
- * メールアドレスの有無によるメンバーIDリスト絞り込み
- *
- * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
- *
- * @return array
- */
- function db_admin_c_member_id_list4cond_mail_address($ids, $cond_list)
- {
- $sql = 'SELECT c_member_id FROM c_member_secure';
- $wheres = array();
- // PCメールアドレスの有無で絞る
- if ($cond_list['is_pc_address'] == 1) {
- $wheres[] = "pc_address <> ''";
- } elseif ($cond_list['is_pc_address'] == 2) {
- $wheres[] = "pc_address = ''";
- }
- // 携帯メールアドレスの有無で絞る
- if ($cond_list['is_ktai_address'] == 1) {
- $wheres[] = "ktai_address <> ''";
- } elseif ($cond_list['is_ktai_address'] == 2) {
- $wheres[] = "ktai_address = ''";
- }
- if ($wheres) {
- $where = ' WHERE ' . implode(' AND ', $wheres);
- } else {
- $where = '';
- }
- $sql .= $where;
- $temp_ids = db_get_col($sql);
- return array_intersect($ids, $temp_ids);
- }
- /**
- * c_profile 内データによるメンバーIDリスト絞り込み
- *
- * 渡されたメンバーIDの配列を条件に従い絞り込んだものを返す
- *
- * @return array
- */
- function db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type)
- {
- // ランクでソートとポイントでソートは同等
- if ($type[0] == 'RANK') {
- $type[0] = 'PNE_POINT';
- }
- // 各プロフィールごとに絞り込み
- $sql = 'SELECT name, form_type, c_profile_id FROM c_profile';
- $profile = db_get_all($sql);
- $profile_cond = $cond_list['profile'];
- if ($profile) {
- foreach ($profile as $value) {
- if(!empty($profile_cond[$value['name']]) ) {
- if ($value['form_type'] == 'radio' || $value['form_type'] == 'select') {
- $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id = ?';
- $params = array($profile_cond[$value['name']]);
- } else if ($value['form_type'] == 'checkbox') {
- $c_profile_option_id_list = implode(", ", $profile_cond[$value['name']]);
- $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_option_id IN ( '. $c_profile_option_id_list .' )';
- $params = array();
- } else {
- $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ? AND value LIKE ?';
- $params = array($value['c_profile_id'],'%' . $profile_cond[$value['name']] . '%');
- }
- $temp_ids = db_get_col($sql, $params);
- $ids = array_intersect($ids, $temp_ids);
- }
- if($value['name'] == $type[0]) {
- $sql = 'SELECT c_member_id FROM c_member_profile WHERE c_profile_id = ?';
- if ($value['form_type'] == 'radio'
- || $value['form_type'] == 'select'
- || $value['form_type'] == 'checkbox') {
- $sql .= ' ORDER BY c_profile_option_id';
- } else {
- if ($value['name'] == "PNE_POINT") {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= ' ORDER BY cast(value as integer)';
- } else {
- $sql .= ' ORDER BY cast(value as signed)';
- }
- } else {
- $sql .= ' ORDER BY value';
- }
- }
- if ($type[1] == "2") {
- $sql .= ' DESC';
- }
- $params = array($value['c_profile_id']);
- $temp_ids = db_get_col($sql, $params);
- $ids = array_intersect($temp_ids, $ids);
- }
- }
- }
- return $ids;
- }
- /**
- * ログインIDによるメンバーIDリストソート
- *
- * @return array
- */
- function db_admin_c_member_id_list_sort4username($ids, $type)
- {
- $sql = 'SELECT c_member_id FROM c_username ORDER BY username';
- if ($type[1] == '2') {
- $sql .= ' DESC';
- }
- $temp_ids = db_get_col($sql, $params);
- $ids = array_intersect($temp_ids, $ids);
- return $ids;
- }
- /**
- * メールアドレスによるメンバ絞込み
- *
- */
- function db_admin_c_member_id_list4cond_str_mail_address($ids, $cond_list)
- {
- if ( !empty($cond_list['mail_address']) ) {
- $sql = 'SELECT c_member_id FROM c_member_secure' .
- ' WHERE pc_address = ? OR ktai_address = ? OR regist_address = ?';
- $enc_address = t_encrypt($cond_list['mail_address']);
- $params = array($enc_address, $enc_address, $enc_address);
- $ids = array_intersect($ids, db_get_col($sql, $params));
- }
- return $ids;
- }
- /**
- * ログインIDによるメンバ絞込み
- *
- */
- function db_admin_c_member_id_list4cond_username($ids, $cond_list)
- {
- if ( !empty($cond_list['username']) ) {
- $sql = 'SELECT c_member_id FROM c_username WHERE username = ?';
- $params = array($cond_list['username']);
- $ids = array_intersect($ids, db_get_col($sql, $params));
- }
- return $ids;
- }
- /**
- * メンバーIDリスト取得(絞り込み対応)
- */
- function _db_admin_c_member_id_list($cond_list, $order = '')
- {
- $type = explode('-', $order);
- $ids = db_admin_c_member_id_list4cond_c_member($cond_list, $type);
- // ポイントで絞り込み
- if ($cond_list['s_rank'] || $cond_list['e_rank']) {
- $ids = db_admin_c_member_id_list4cond_pne_point($ids, $cond_list);
- }
- // メールアドレスで絞り込み
- if (!empty($cond_list['is_pc_address']) || !empty($cond_list['is_ktai_address'])) {
- $ids = db_admin_c_member_id_list4cond_mail_address($ids, $cond_list);
- }
- // ログインIDでソート
- if ($type[0] == 'username' && OPENPNE_AUTH_MODE != 'email') {
- $ids = db_admin_c_member_id_list_sort4username($ids, $type);
- }
- // プロフィール項目で絞り込み
- $ids = db_admin_c_member_id_list4cond_c_profile($ids, $cond_list, $type);
- // 登録メールアドレスで絞込み
- $ids = db_admin_c_member_id_list4cond_str_mail_address($ids, $cond_list);
- // ログインIDで絞込み
- $ids = db_admin_c_member_id_list4cond_username($ids, $cond_list);
- return $ids;
- }
- /**
- * メンバーリスト取得
- * 誕生年+プロフィール(select,radioのみ)
- */
- function _db_admin_c_member_list($page, $page_size, &$pager, $cond_list, $order)
- {
- $ids = _db_admin_c_member_id_list($cond_list, $order);
- $total_num = count($ids);
- $ids = array_slice($ids, ($page - 1) * $page_size, $page_size);
- $c_member_list = array();
- foreach ($ids as $id) {
- $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
- }
- if ($total_num > 0) {
- $pager = util_make_pager($page, $page_size, $total_num);
- } else {
- $pager = array('page_size' => $page_size);
- }
- return $c_member_list;
- }
- /**
- * プロフィール識別名と c_profile_option_id より c_profile.value を返す
- */
- function db_c_profile_get_profile_value4requested_profile($c_profile_name, $c_profile_option_id)
- {
- $sql = "SELECT po.value FROM c_profile_option po"
- . " LEFT JOIN c_profile p ON po.c_profile_id = p.c_profile_id"
- . " WHERE p.form_type in ('select', 'checkbox', 'radio')"
- . " AND p.name = ?"
- . " AND po.c_profile_option_id = ?";
- $params = array($c_profile_name, intval($c_profile_option_id));
- return db_get_one($sql, $params);
- }
- /**
- * c_profile.name より c_profile.caption を返す
- */
- function db_c_profile_get_caption4name($name)
- {
- $sql = "SELECT caption FROM c_profile WHERE name = ?";
- $params = array($name);
- return db_get_one($sql, $params);
- }
- /**
- * メンバー絞込みパラメータ取得
- */
- function validate_cond($requests)
- {
- $cond_list = array();
- //ID
- if ( !empty($requests['id']) ) {
- $cond_list['id'] = intval($requests['id']);
- }
- //ログインID
- if (isset($requests['username']) && $requests['username'] !== '') {
- $cond_list['username'] = $requests['username'];
- }
- //ニックネーム
- if ( !empty($requests['nickname']) ) {
- $cond_list['nickname'] = $requests['nickname'];
- }
- //誕生年
- if (!empty($requests['s_year'])) {
- $cond_list['s_year'] = intval($requests['s_year']);
- }
- if (!empty($requests['e_year'])) {
- $cond_list['e_year'] = intval($requests['e_year']);
- }
- //プロフィール
- $profile_list = db_member_c_profile_list();
- $profile_req = $requests['profile'];
- if (is_array($profile_req)) {
- $profile_cond = array();
- foreach ($profile_list as $key => $value) {
- if (isset($profile_req[$key])) {
- if ($value['form_type'] == 'select' || $value['form_type'] == 'radio') {
- $profile_cond[$key] = intval($profile_req[$key]);
- } else {
- $profile_cond[$key] = $profile_req[$key];
- }
- }
- }
- $cond_list['profile'] = $profile_cond;
- }
- // 最終ログイン時間
- if (!empty($requests['last_login'])) {
- $cond_list['last_login'] = intval($requests['last_login']);
- }
- // メールアドレス
- if (!empty($requests['mail_address'])) {
- $cond_list['mail_address'] = $requests['mail_address'];
- }
-
- //PCメールアドレスの有無
- if (!empty($requests['is_pc_address'])) {
- $cond_list['is_pc_address'] = intval($requests['is_pc_address']);
- }
- //携帯メールアドレスの有無
- if (!empty($requests['is_ktai_address'])) {
- $cond_list['is_ktai_address'] = intval($requests['is_ktai_address']);
- }
- //ポイント
- if (isset($requests['s_rank']) && $requests['s_rank'] !== '') {
- $cond_list['s_rank'] = intval($requests['s_rank']);
- }
- if (isset($requests['e_rank']) && $requests['e_rank'] !== '') {
- $cond_list['e_rank'] = intval($requests['e_rank']);
- }
- return $cond_list;
- }
- /**
- * メンバー絞り込みパラメータ取得(プロフィール)
- */
- function validate_profile_cond($requests)
- {
- $cond_list = array();
- //プロフィール
- $profile_list = db_member_c_profile_list();
- foreach ($profile_list as $key => $value) {
- if (!empty($requests[$key])) {
- $cond_list[$key] = $requests[$key];
- }
- }
- return $cond_list;
- }
- function do_admin_send_mail($c_member_id, $subject, $body)
- {
- $c_member = db_member_c_member4c_member_id($c_member_id, true);
- if ($c_member['secure']['pc_address']) {
- $send_address = $c_member['secure']['pc_address'];
- } else {
- $send_address = $c_member['secure']['ktai_address'];
- }
- if (OPENPNE_MAIL_QUEUE) {
- //メールキューに蓄積
- put_mail_queue($send_address, $subject, $body);
- } else {
- t_send_email($send_address, $subject, $body);
- }
- }
- //メッセージ受信メール(メール&メッセージキュー蓄積対応)
- function do_admin_send_message($c_member_id_from, $c_member_id_to, $subject, $body)
- {
- //メッセージ
- if (OPENPNE_MESSAGE_QUEUE) {
- //メッセージキューに蓄積
- db_admin_insert_c_message_queue($c_member_id_from, $c_member_id_to, $subject, $body);
- return true;
- } else {
- $c_message_id = db_message_insert_c_message($c_member_id_from, $c_member_id_to, $subject, $body);
- do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from, $subject, $body, $c_message_id);
- do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body);
- return true;
- }
- return false;
- }
- //メッセージ受信メール(メールキュー蓄積対応)
- function do_admin_send_message_mail_send($c_member_id_to, $c_member_id_from, $subject, $body, $c_message_id)
- {
- $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
- $pc_address = $c_member_to['secure']['pc_address'];
- $is_receive_mail = $c_member_to['is_receive_mail'];
- $params = array(
- "c_member_to" => db_member_c_member4c_member_id($c_member_id_to),
- "c_member_from" => db_member_c_member4c_member_id($c_member_id_from),
- 'subject' => $subject,
- 'body' => $body,
- 'c_message_id' => $c_message_id,
- );
- return admin_fetch_send_mail($pc_address, 'm_pc_message_zyushin', $params, $is_receive_mail);
- }
- //◆メッセージ受信メール(携帯)
- function do_admin_send_message_mail_send_ktai($c_member_id_to, $c_member_id_from, $subject, $body)
- {
- $c_member_to = db_member_c_member4c_member_id($c_member_id_to, true);
- $ktai_address = $c_member_to['secure']['ktai_address'];
- $is_receive_ktai_mail = $c_member_to['is_receive_ktai_mail'];
- $p = array('kad' => t_encrypt(db_member_username4c_member_id($c_member_to['c_member_id'], true)));
- $login_url = openpne_gen_url('ktai', 'page_o_login', $p);
- $params = array(
- 'c_member_to' => db_member_c_member4c_member_id($c_member_id_to),
- 'c_member_from' => db_member_c_member4c_member_id($c_member_id_from),
- 'login_url' => $login_url,
- 'subject' => $subject,
- 'body' => $body,
- );
- return admin_fetch_send_mail($ktai_address, 'm_ktai_message_zyushin', $params, $is_receive_ktai_mail);
- }
- function admin_fetch_send_mail($address, $tpl_name, $params = array(), $force = true, $from = '')
- {
- $tpl_name .= '.tpl';
- if ($tpl = fetch_mail_m_tpl($tpl_name, $params)) {
- list($subject, $body) = $tpl;
- if ($from) {
- if (OPENPNE_MAIL_QUEUE) {
- //メールキューに蓄積
- put_mail_queue($address, $subject, $body, $force, $from);
- } else {
- t_send_email($address, $subject, $body, $force, $from);
- }
- } else {
- if (OPENPNE_MAIL_QUEUE) {
- //メールキューに蓄積
- put_mail_queue($address, $subject, $body, $force);
- } else {
- t_send_email($address, $subject, $body, $force);
- }
- }
- return true;
- } else {
- return false;
- }
- }
- function db_access_analysis_c_admin_user_id4username($username)
- {
- $sql = "SELECT c_admin_user_id FROM c_admin_user" .
- " WHERE username = ?";
- $params = array($username);
- return db_get_one($sql,$params);
- }
- function p_access_analysis_month_access_analysis_month($ktai_flag)
- {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql = "SELECT to_char(r_datetime, 'YYYY-MM-01') as ym, count(*) as count" .
- " FROM c_access_log " .
- " where ktai_flag = ?" .
- " group by ym".
- " order by ym asc";
- } else {
- $sql = "SELECT date_format(r_datetime, '%Y-%m-01') as ym, count(*) as count" .
- " FROM c_access_log " .
- " where ktai_flag = ?" .
- " group by ym";
- }
- $params = array(intval($ktai_flag));
- $list = db_get_all($sql,$params);
- return $list;
- }
- function p_access_analysis_day_access_analysis_day($ym, $ktai_flag)
- {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql = "SELECT to_char(r_datetime, 'YYYY-MM-DD') as ymd , count(*) as count" .
- " FROM c_access_log " .
- " where to_char(r_datetime, 'YYYY-MM') = ?" .
- " and ktai_flag = ? " .
- " group by ymd";
- } else {
- $sql = "SELECT left(r_datetime,10) as ymd , count(*) as count" .
- " FROM c_access_log " .
- " where left(r_datetime, 7) = ?" .
- " and ktai_flag = ? " .
- " group by ymd";
- }
- $params = array(substr($ym, 0, 7), intval($ktai_flag));
- $list = db_get_all($sql,$params);
- $year = substr($ym, 0, 4);
- $month = substr($ym, 5,2);
- $return = array();
- $days_num = date("t", mktime (0,0,0,$month,1,$year));
- for($i=1 ; $i<=$days_num; $i++) {
- $date = substr($ym,0,8) . substr("00".$i, -2, 2);
- $count = 0;
- foreach($list as $value) {
- if ($value['ymd'] == $date) {
- $count = $value['count'];
- }
- }
- $return[] = array("ymd"=>$date, "count"=>$count);
- }
- return $return;
- }
- function get_page_name($ktai_flag, $orderby=1)
- {
- if ($orderby == 1) {
- $orderby_str = " order by page_name asc";
- } elseif ($orderby == -1) {
- $orderby_str = " order by page_name desc";
- }
- $sql = "select distinct page_name from c_access_log " .
- " where ktai_flag = ? " .
- $orderby_str;
- $params = array(intval($ktai_flag));
- return db_get_col($sql,$params);
- }
- function p_access_analysis_page_access_analysis_page4ym($ymd, $month_flag, $ktai_flag, $orderby)
- {
- if ($orderby == 1) {
- $orderby_str = " order by page_name asc";
- } elseif ($orderby == -1) {
- $orderby_str = " order by page_name desc";
- } elseif ($orderby == 2) {
- $orderby_str = " order by count asc";
- } elseif ($orderby == -2) {
- $orderby_str = " order by count desc";
- }
- $sql = "select page_name , count(*) as count from c_access_log where ktai_flag = ? ";
- $params = array(intval($ktai_flag));
- if ($month_flag) {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
- } else {
- $sql .= " and left(r_datetime, 7) = ? ";
- }
- array_push($params,substr($ymd,0,7));
- } else {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
- } else {
- $sql .= " and left(r_datetime,10) = ? ";
- }
- array_push($params,$ymd);
- }
- $sql .= " group by page_name ". $orderby_str;
- $list = db_get_all($sql,$params);
- $sum = 0;
- $return = array();
- if (abs($orderby) == 1) {
- $page_name = get_page_name($ktai_flag, $orderby);
- foreach($page_name as $name) {
- $count = 0;
- foreach($list as $value) {
- if ($value['page_name'] == $name) $count = $value['count'];
- }
- 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);
- $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);
- $sum += $count;
- }
- } elseif (abs($orderby) == 2) {
- $page_name = get_page_name($ktai_flag);
- $t_page_name = $page_name;
- //アクセスがゼロのページを取得する
- foreach($page_name as $key=>$name) {
- foreach($list as $value) {
- if ($value['page_name'] == $name) {
- unset($page_name[$key]);//$listに含まれるページネームを削除
- }
- }
- }
- foreach($page_name as $key=>$name) {
- $page_name[$key] = array("page_name"=>$name, "count"=>0);
- }
- if ($orderby == 2) {
- $return = array_merge($page_name , $list);
- } elseif ($orderby == -2) {
- $return = array_merge($list, $page_name);
- }
- foreach($list as $value) {
- $sum += $value['count'];
- }
- foreach($return as $value) {
- 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']);
- $value['is_target_c_member_id'] = $is_target_c_member_id;
- $value['is_target_c_commu_id'] = $is_target_c_commu_id;
- $value['is_target_c_topic_id'] = $is_target_c_topic_id;
- $value['is_target_c_diary_id'] = $is_target_c_diary_id;
- $value['is_c_member_id'] = $is_c_member_id;
- $t_return[] = $value;
- }
- $return = $t_return;
- }
- return array($return, $sum);
- }
- /*
- * target_commu
- *
- */
- function p_access_analysis_target_commu_target_commu4ym_page_name
- ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
- {
- $start = ($page - 1) * $page_size;
- if ($orderby == 1) {
- $orderby_str = " order by target_c_commu_id asc";
- } elseif ($orderby == -1) {
- $orderby_str = " order by target_c_commu_id desc";
- } elseif ($orderby == 2) {
- $orderby_str = " order by count asc";
- } elseif ($orderby == -2) {
- $orderby_str = " order by count desc";
- }
- $sql = "select target_c_commu_id , count(*) as count from c_access_log where ktai_flag = ? ";
- $params = array(intval($ktai_flag));
- if ($month_flag) {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
- } else {
- $sql .= " and left(r_datetime, 7) = ? ";
- }
- array_push($params,substr($ymd,0,7));
- } else {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
- } else {
- $sql .= " and left(r_datetime,10) = ? ";
- }
- array_push($params,$ymd);
- }
- if ($page_name!="all") {
- $sql .= " and page_name = ? ";
- array_push($params,$page_name);
- }
- $sql .= " and target_c_commu_id <> 0 ";
- $sql .= " group by target_c_commu_id " .$orderby_str;
- if ($page_size != -1) {
- $list = db_get_all_limit($sql, $start, $page_size, $params);
- }
- else {
- $list = db_get_all($sql, $params);
- }
- $return = array();
- $sum = 0;
- foreach($list as $key => $value) {
- if ($c_commu = db_commu_c_commu4c_commu_id($value['target_c_commu_id'])) {
- $value['is_c_commu_exists'] = true;
- $return[] = array_merge($value, $c_commu);
- } else {
- $value['is_c_commu_exists'] = false;
- $return[] = $value;
- }
- $sum += $value['count'];
- }
- $sql = "select count(*) from c_access_log where ktai_flag = ? ";
- $params = array(intval($ktai_flag));
- if ($month_flag) {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
- } else {
- $sql .= " and left(r_datetime, 7) = ? ";
- }
- array_push($params,substr($ymd,0,7));
- } else {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $sql .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
- } else {
- $sql .= " and left(r_datetime,10) = ? ";
- }
- array_push($params,$ymd);
- }
- if ($page_name!="all") {
- $sql .= " and page_name = ? ";
- array_push($params,$page_name);
- }
- $sql .= " and target_c_commu_id <> 0 ";
- $sql .= " group by target_c_commu_id ";
- $result = db_get_all($sql,$params);
- $total_num = count($result);
- if ($total_num != 0) {
- $total_page_num = ceil($total_num / $page_size);
- if ($page >= $total_page_num) {
- $next = false;
- }else{
- $next = true;
- }
- if ($page <= 1) {
- $prev = false;
- }else{
- $prev = true;
- }
- }
- $start_num = ($page - 1) * $page_size + 1 ;
- $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
- return array($return, $sum, $prev, $next, $total_num, $start_num, $end_num);
- }
- function p_access_analysis_target_topic_target_topic4ym_page_name
- ($ymd, $month_flag, $page_name, $ktai_flag, $page, $page_size, $orderby=1)
- {
- $start = ($page - 1) * $page_size;
- if ($orderby == 1) {
- $orderby_str = " order by target_c_commu_topic_id asc";
- } elseif ($orderby == -1) {
- $orderby_str = " order by target_c_commu_topic_id desc";
- } elseif ($orderby == 2) {
- $orderby_str = " order by count asc";
- } elseif ($orderby == -2) {
- $orderby_str = " order by count desc";
- }
- $where =" where ktai_flag = ? ";
- $params = array(intval($ktai_flag));
- if ($month_flag) {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $where .= " and to_char(r_datetime, 'YYYY-MM') = ? ";
- } else {
- $where .= " and left(r_datetime, 7) = ? ";
- }
- array_push($params,substr($ymd,0,7));
- } else {
- if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
- $where .= " and to_char(r_datetime, 'YYYY-MM-DD') = ? ";
- } else {
- $where .= " and left(r_datetime,10) = ? ";
- }
- array_push($params,$ymd);
- }
- if ($page_name!="all") {
- $where .= " and page_name = ? ";
- array_push($params,$page_name);
- }
- $where .= ' and target_c_commu_topic_id <> 0 ';
- $sql = "select target_c_commu_topic_id , count(*) as count from c_access_log ";
- $sql .= $where." group by target_c_commu_topic_id " .$orderby_str;
- if ($page_size != -1) {
- $list = db_get_all_limit($sql, $start, $page_size, $params);
- }
- else {
- $list = db_get_all($sql, $params);
- }
- $sql = "select count(*) from c_access_log ";
- $sql .= $where ." group by target_c_commu_topic_id ";
- $result = db_get_all($sql,$params);
- $total_num = count($result);
- $return = array();
- $sum = 0;
- foreach ($list as $key => $value) {
- if ($value['target_c_commu_topic_id']) {
- if ($c_commu_topic = db_commu_c_topic4c_commu_topic_id($value['target_c_commu_topic_id'])) {
- $c_commu_topic['topic_name'] = $c_commu_topic['name'];
- $c_commu = db_commu_c_commu4c_commu_id($c_commu_topic['c_commu_id']);
- $c_commu_topic['commu_name'] = $c_commu['name'];
- $value['is_c_commu_topic_exists'] = true;
- $return[] = array_merge($value, $c_commu_topic);
- } else {
- $value['is_c_commu_topic_exists'] = false;
- $return[] = $value;
- }
- $sum += $value['count'];
- }
- }
- if ($tot…
Large files files are truncated, but you can click here to view the full file