Пример #1
0
 /**
 * BBSを検索するためのwhere句の1部を作成
 *
 * @param $form 条件
    [id] => 1000
    [move_id] => 2
    [q_text] => 検索条件									//条件(※必須)
    [search_title] => title_in_serch			//件名を選択
    [search_all] => subject_in_serch			//本文を選択
    [open_level_code] => 00								//公開範囲(00は選択なし)(※必須)
    [search_all_about] => all_in_serch		//すべてのCommunityを選択
 * @return str_array($like_sql , $err_str , $str_count)
 */
 static function set_bbs_where_list($form, $flag)
 {
     $str_array = array();
     $str_array['like_sql'] = "";
     //成功時の戻り値
     $str_array['err_str'] = "";
     //失敗時の戻り値
     $str_array['str_count'] = 1;
     //成功時のキーワード数
     // 検索キーワードの取得(注意!バイト単位で処理)
     $search_text = $form['q_text'];
     //formから検索文字列を取得
     //〜〜〜〜〜〜〜〜〜〜〜〜〜〜配列として利用(Likeの作成)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
     if ($search_text != '') {
         $search_args = ACSLib::get_query_array_array($search_text);
         //検索文字列配列に変換
     }
     if (count($search_args) > 0) {
         //検索文字列が存在する場合
         $search_args = ACSLib::escape_sql_array($search_args);
         //キーワードwhere句の追記
         //次のいずれかは必須
         $str_like = '';
         //件名を選択している場合
         if ($form['search_title']) {
             $str_title = " bbs.subject";
             $str_like_array = ACSDiary::create_sql_where_field($search_args, $str_title, $flag);
             $str_like = " (" . $str_like_array['str_like'] . ") ";
             $str_array['str_count'] = $str_like_array['str_count'];
         }
         //本文を選択している場合
         if ($form['search_all']) {
             $str_body = " bbs.body";
             if ($str_like != "") {
                 $str_like = $str_like . " OR ";
                 //件名と共に選択している場合
             }
             $where_sql_array = ACSDiary::create_sql_where_field($search_args, $str_body, $flag);
             $where_sql = " (" . $where_sql_array['str_like'] . ") ";
             $str_like = $str_like . $where_sql;
             $str_array['str_count'] = $where_sql_array['str_count'];
         }
         //キーワードwhere句の追記終了
         if ($str_like == "") {
             //キーワードがあるのに、対象がない場合
             $str_array['err_str'] = ACSMsg::get_mdmsg(__FILE__, 'M005');
         } else {
             $str_array['like_sql'] = $str_array['like_sql'] . $str_array['like_sql'] . " AND (" . $str_like . ") ";
         }
     }
     //〜〜〜〜〜〜〜〜〜〜〜〜〜〜特定日記検索〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
     //必ずAND
     if (!$form['search_all_about']) {
         //すべての	Communityを選択していない場合
         $str_array['like_sql'] = $str_array['like_sql'] . " AND bbs.community_id  = " . $form['community_id'];
     }
     // エラーメッセージが配列になってしまう暫定対処
     return $str_array;
 }