const CONTENT_SIZE = 200; // 検索結果コンテンツの文字列最大長
const SEARCH_LIST_CONTENT_ID = 'SEARCH_LIST'; // 検索一覧に表示するコンテンツのID
const DEFAULT_SEARCH_ACT = 'custom_search'; // 検索実行処理
-
+ const CF_USE_PASSWORD = 'use_password'; // 汎用コンテンツに対するパスワードアクセス制御
+
/**
* コンストラクタ
*/
$message = self::MESSAGE_NO_KEYWORD;
} else {
// ##### 検索実行の場合 #####
+ // 設定値取得
+ $configArray = $this->loadContentConfig();
+ $contentUsePassword = $configArray[self::CF_USE_PASSWORD]; // パスワードによるコンテンツ閲覧制限
+
// 総数を取得
-// $totalCount = $this->db->searchContentsCountByKeyword($parsedKeywords, $selectCategory, $this->langId, $isAll, $isTargetContent, $isTargetUser, $isTargetBlog,
-// $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto);
$totalCount = $this->db->searchContentsByKeyword(0/*項目数取得*/, 0/*ダミー*/, $parsedKeywords, $selectCategory, $this->langId, $isAll, $isTargetContent, $isTargetUser, $isTargetBlog,
- $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto);
+ $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, $contentUsePassword);
$this->calcPageLink($pageNo, $totalCount, $this->resultCount); // ページ番号修正
// リンク文字列作成、ページ番号調整
// 検出項目を表示
$this->db->searchContentsByKeyword($this->resultCount, $pageNo, $parsedKeywords, $selectCategory, $this->langId, $isAll, $isTargetContent, $isTargetUser, $isTargetBlog,
- $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, array($this, 'searchItemsLoop'));
+ $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, $contentUsePassword, array($this, 'searchItemsLoop'));
if ($this->isExistsViewData){
// ページリンクを埋め込む
}
return $destUrl;
}
+ /**
+ * 汎用コンテンツ定義値をDBから取得
+ *
+ * @return array 取得データ
+ */
+ function loadContentConfig()
+ {
+ $retVal = array();
+
+ // 汎用コンテンツ定義を読み込み
+ $ret = $this->db->getAllConfig($rows);
+ if ($ret){
+ // 取得データを連想配列にする
+ $configCount = count($rows);
+ for ($i = 0; $i < $configCount; $i++){
+ $key = $rows[$i]['ng_id'];
+ $value = $rows[$i]['ng_value'];
+ $retVal[$key] = $value;
+ }
+ }
+ return $retVal;
+ }
}
?>
* @author 株式会社 毎日メディアサービス
* @copyright Copyright 2010-2013 株式会社 毎日メディアサービス.
* @license http://www.gnu.org/copyleft/gpl.html GPL License
- * @version SVN: $Id: custom_searchDb.php 5969 2013-04-29 13:16:04Z fishbone $
+ * @version SVN: $Id$
* @link http://www.m-media.co.jp
*/
require_once($gEnvManager->getDbPath() . '/baseDb.php');
class custom_searchDb extends BaseDb
{
/**
+ * 汎用コンテンツ定義値を取得をすべて取得
+ *
+ * @param array $rows レコード
+ * @return bool 1行以上取得 = true, 取得なし= false
+ */
+ function getAllConfig(&$rows)
+ {
+ $contentType = '';
+ $queryStr = 'SELECT * FROM content_config ';
+ $queryStr .= 'WHERE ng_type = ? ';
+ $queryStr .= 'ORDER BY ng_index';
+ $retValue = $this->selectRecords($queryStr, array($contentType), $rows);
+ return $retValue;
+ }
+ /**
* すべてのカテゴリ種別を取得
*
* @param string $langId 言語ID
* @param bool $isTargetEvent イベント情報を検索対象とするかどうか
* @param bool $isTargetBbs BBSを検索対象とするかどうか
* @param bool $isTargetPhoto フォトギャラリーを検索対象とするかどうか
+ * @param bool $contentUsePassword 汎用コンテンツのパスワード閲覧制限するかどうか
* @param function $callback コールバック関数
* @return int,bool $limitが0のときintで項目数、$limitが0以外のときはbool(true=1行以上レコード取得、false=レコードなし)
*/
function searchContentsByKeyword($limit, $page, $keywords, $categoryInfo, $langId, $isAll, $isTargetContent, $isTargetUser, $isTargetBlog,
- $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, $callback = NULL)
+ $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, $contentUsePassword, $callback = NULL)
{
$offset = $limit * ($page -1);
if ($offset < 0) $offset = 0;
$queryStr .= 'AND cn_type = ? ';$params[] = $contentType;
$queryStr .= 'AND cn_language_id = ? ';$params[] = $langId;
if (!$all) $queryStr .= 'AND cn_user_limited = false '; // ユーザ制限のないデータ
-
+ if ($contentUsePassword) $queryStr .= 'AND cn_password = \'\' '; // パスワード閲覧制限する場合はパスワードが設定されているコンテンツを検索しない
+
// タイトルと記事を検索
if (!empty($keywords)){
for ($i = 0; $i < count($keywords); $i++){