Example #1
0
/**
 * orderby:
 *      r_datetime  => 作成順
 *      r_num       => 登録数順
 */
function db_review_search_result4keyword_category($keyword, $category_id, $orderby, $page = 1, $page_size = 30)
{
    $from = " FROM c_review INNER JOIN c_review_comment USING (c_review_id)";
    $wheres = array();
    $params = array();
    if ($keyword) {
        $wheres[] = 'c_review.title LIKE ?';
        $params[] = '%' . check_search_word($keyword) . '%';
    }
    if ($category_id) {
        $wheres[] = 'c_review.c_review_category_id = ?';
        $params[] = intval($category_id);
    }
    if ($wheres) {
        $where = ' WHERE ' . implode(' AND ', $wheres);
    } else {
        $where = '';
    }
    switch ($orderby) {
        case "r_datetime":
        default:
            $order = " ORDER BY r_datetime2 DESC";
            break;
        case "r_num":
            $order = " ORDER BY write_num DESC, r_datetime2 DESC";
            break;
    }
    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
        $group = " GROUP BY c_review.c_review_id" . ", c_review.title" . ", c_review.release_date" . ", c_review.manufacturer" . ", c_review.author" . ", c_review.c_review_category_id" . ", c_review.image_small" . ", c_review.image_medium" . ", c_review.image_large" . ", c_review.url" . ", c_review.asin" . ", c_review.list_price" . ", c_review.retail_price" . ", c_review.r_datetime";
    } else {
        $group = " GROUP BY c_review.c_review_id";
    }
    $sql = "SELECT" . " c_review.*" . ", MAX(c_review_comment.r_datetime) as r_datetime2" . ", COUNT(c_review_comment.c_review_comment_id) AS write_num" . $from . $where . $group . $order;
    $lst = db_get_all_page($sql, $page, $page_size, $params);
    //$lstに書き込み数を追加 + レビュー書き込み内容と日付を追加
    foreach ($lst as $key => $value) {
        $sql = "SELECT body FROM c_review_comment" . " WHERE c_review_id = ?" . " ORDER BY r_datetime DESC";
        $p2 = array(intval($value['c_review_id']));
        $lst[$key]['body'] = db_get_one($sql, $p2);
    }
    $sql = "SELECT COUNT(DISTINCT c_review.c_review_id)" . $from . $where;
    $total_num = db_get_one($sql, $params);
    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($lst, $prev, $next, $total_num, $start_num, $end_num);
}
Example #2
0
function db_admin_album_list($keyword, $page_size, $page)
{
    $page = intval($page);
    $page_size = intval($page_size);
    $wheres = array();
    if ($keyword) {
        //全角空白を半角に統一
        $keyword = str_replace(' ', ' ', $keyword);
        $keyword_list = explode(' ', $keyword);
        for ($i = 0; $i < count($keyword_list); $i++) {
            $keyword = check_search_word($keyword_list[$i]);
            $wheres[] = '(subject LIKE ? OR description LIKE ?)';
            $params[] = '%' . $keyword . '%';
            $params[] = '%' . $keyword . '%';
        }
    }
    if ($wheres) {
        $where = ' WHERE ' . implode(' AND ', $wheres);
    } else {
        $where = '';
    }
    $select = "SELECT *";
    $from = " FROM c_album";
    $order = " ORDER BY r_datetime DESC";
    $sql = $select . $from . $where . $order;
    $list = db_get_all_limit($sql, ($page - 1) * $page_size, $page_size, $params);
    foreach ($list as $key => $value) {
        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
        $list[$key]['count_images'] = db_admin_album_count_c_album_image4c_album_id($value['c_album_id']);
    }
    $sql = "SELECT COUNT(*) " . $from . $where;
    $total_num = db_get_one($sql, $params);
    $total_page_num = ceil($total_num / $page_size);
    $next = $page < $total_page_num;
    $prev = $page > 1;
    return array($list, $prev, $next, $total_num, $total_page_num);
}
Example #3
0
/**
 * 新着日記検索
 * 検索ポイントはタイトル、本文
 * 空白(全角半角問わない)でand検索可
 */
function p_h_diary_list_all_search_c_diary4c_diary($keyword, $page_size, $page, $c_member_id = '')
{
    $params = array();
    $select = 'SELECT *';
    $from = ' FROM c_diary';
    //自分の日記だけを対象にする事もできる
    if ($c_member_id) {
        $where = ' WHERE c_member_id = ?';
        $params[] = intval($c_member_id);
    } else {
        $where = " WHERE public_flag = 'public'";
    }
    //and検索を実装
    //subject,body を検索
    if ($keyword) {
        //全角空白を半角に統一
        $keyword = str_replace(' ', ' ', $keyword);
        $keyword_list = explode(' ', $keyword);
        foreach ($keyword_list as $word) {
            $word = check_search_word($word);
            $where .= ' AND (subject LIKE ? OR body LIKE ?)';
            $params[] = '%' . $word . '%';
            $params[] = '%' . $word . '%';
        }
    }
    $order = " ORDER BY r_datetime DESC";
    $sql = $select . $from . $where . $order;
    $list = db_get_all_page($sql, $page, $page_size, $params);
    foreach ($list as $key => $value) {
        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
    }
    $sql = 'SELECT COUNT(*)' . $from . $where;
    $total_num = db_get_one($sql, $params);
    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;
        }
    }
    return array($list, $prev, $next, $total_num);
}
Example #4
0
/**
 * トピック検索
 */
function db_commu_search_c_commu_topic($search_word, $page_size, $page, $type = 'all', $c_commu_id = 0)
{
    if (!$search_word) {
        return db_commu_new_topic_list($page_size, $page, $type, $c_commu_id);
    }
    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
        $select = 'SELECT distinct on (ct.c_commu_topic_id) c.name AS commu_name, c.image_filename AS commu_image' . ', ct.*, ctc2.max_datetime';
    } else {
        $select = 'SELECT c.name AS commu_name, c.image_filename AS commu_image' . ', ct.*, ct.r_datetime AS max_datetime';
    }
    $from = ' FROM c_commu AS c, c_commu_topic AS ct, c_commu_topic_comment AS ctc';
    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
        $from .= ', (SELECT c_commu_topic_id, max(r_datetime) as max_datetime' . ' FROM c_commu_topic_comment' . ' GROUP BY c_commu_topic_id' . ') AS ctc2';
    }
    $params = array();
    $where = ' WHERE ct.c_commu_topic_id = ctc.c_commu_topic_id' . ' AND c.c_commu_id = ct.c_commu_id';
    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
        $where .= ' AND ct.c_commu_topic_id = ctc2.c_commu_topic_id';
    }
    if ($c_commu_id) {
        $where .= ' AND ct.c_commu_id = ?';
        $params[] = $c_commu_id;
    } else {
        $where .= " AND c.is_open ='public'";
    }
    if ($search_word) {
        $words = explode(' ', $search_word);
        foreach ($words as $word) {
            $word = check_search_word($word);
            $where .= ' AND ((ct.name LIKE ?) OR (ctc.body LIKE ?))';
            $params[] = '%' . $word . '%';
            $params[] = '%' . $word . '%';
        }
    }
    switch ($type) {
        case 'topic':
            $where .= ' AND event_flag = 0';
            break;
        case 'event':
            $where .= ' AND event_flag = 1';
            break;
        case 'all':
        default:
            break;
    }
    $group = ' GROUP BY ct.c_commu_topic_id';
    $order = ' ORDER BY max_datetime DESC';
    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
        $sql = "SELECT sub_tbl.* FROM (" . $select . $from . $where . ") as sub_tbl " . $order;
    } else {
        $sql = $select . $from . $where . $group . $order;
    }
    $list = db_get_all_page($sql, $page, $page_size, $params);
    foreach ($list as $key => $value) {
        $p = array((int) $value['c_commu_topic_id']);
        $sql = 'SELECT body FROM c_commu_topic_comment WHERE number = 0 AND c_commu_topic_id = ?';
        $list[$key]['body'] = db_get_one($sql, $p);
        $number = db_commu_get_max_c_commu_topic_comment_number4c_topic_id($value['c_commu_topic_id']);
        $list[$key]['max_number'] = $number;
        $start_comment = db_commu_get_start_c_topic_comment($value['c_commu_topic_id']);
        $list[$key]['image_filename1'] = $start_comment['image_filename1'];
        $list[$key]['image_filename2'] = $start_comment['image_filename2'];
        $list[$key]['image_filename3'] = $start_comment['image_filename3'];
    }
    $sql = 'SELECT COUNT(DISTINCT ct.c_commu_topic_id)' . $from . $where;
    $total_num = db_get_one($sql, $params);
    if ($total_num != 0) {
        $total_page_num = ceil($total_num / $page_size);
        $next = $page < $total_page_num;
        $prev = $page > 1;
    }
    $start_num = ($page - 1) * $page_size + 1;
    $end_num = $start_num + $page_size - 1 >= $total_num ? $total_num : $start_num + $page_size - 1;
    return array($list, $prev, $next, $total_num, $start_num, $end_num);
}