/**
  * コンストラクタ
  *
  * @param $user_community_id
  * @param $acs_user_info_row アクセス者情報
  * @param $folder_id
  */
 function ACSUserFolder($user_community_id, $acs_user_info_row, $folder_id)
 {
     /* フォルダIDの指定がない場合、ルートフォルダを取得する */
     if ($folder_id == "") {
         $folder_row = $this->get_root_folder_row($user_community_id);
         $folder_id = $folder_row['folder_id'];
     }
     // ユーザフォルダでは、取得対象のフォルダ情報と表示するフォルダは同一
     parent::ACSGenericFolder($user_community_id, $acs_user_info_row, $folder_id, array($folder_id));
 }
 /**
  * 再帰的にフォルダIDを取得
  *
  */
 static function get_recursive_folder_id_array($folder_id_array)
 {
     $ret_folder_id_array = $folder_id_array;
     foreach ($folder_id_array as $folder_id) {
         $sub_folder_id_array = ACSGenericFolder::get_sub_folder_id_array($folder_id);
         if (count($sub_folder_id_array)) {
             // サブフォルダがあるとき
             $ret_folder_id_array = array_merge($ret_folder_id_array, ACSGenericFolder::get_recursive_folder_id_array($sub_folder_id_array));
         }
     }
     return $ret_folder_id_array;
 }
 /**
  * 全コミュニティプットファイル検索
  *
  * @param $community_where putコミュニティ検索条件
  * @param $unread_check_user_community_id unreadチェック実施時のユーザコミュニティid
  * @param $form 検索条件
  * @return フォルダ情報の配列
  */
 function search_all_put_file_info_row_array($form, $community_where = "", $unread_check_user_community_id = "", $days = false)
 {
     // 1. コミュニティにプットされてるユーザフォルダのfolder_idを全て取得する
     $sql = "SELECT folder_id";
     $sql .= " FROM put_community";
     if ($community_where != "") {
         $sql .= " WHERE " . $community_where;
     }
     $row_array = ACSDB::_get_row_array($sql);
     $folder_id_array = array();
     foreach ($row_array as $row) {
         array_push($folder_id_array, $row['folder_id']);
     }
     if (count($folder_id_array) == 0) {
         // 0件
         return array();
     }
     // 2. コミュニティフォルダからアクセス可能な中身のフォルダのfolder_idを全て取得する
     $user_folder_id_array = ACSGenericFolder::get_recursive_folder_id_array($folder_id_array);
     if (count($user_folder_id_array) == 0) {
         // 0件
         return array();
     }
     // 3. 検索対象となる、ユーザがプットしたフォルダ以下のフォルダID CSV
     $user_folder_id_array_csv = implode(',', $user_folder_id_array);
     $sql = "SELECT * ";
     if ($unread_check_user_community_id != '') {
         $sql .= ",acs_is_unread_file(" . $unread_check_user_community_id . ",file_info.file_id) as is_unread ";
     }
     $sql .= " FROM folder LEFT OUTER JOIN put_community ON folder.folder_id = put_community.folder_id, folder_file, file_info";
     $sql .= " WHERE folder.folder_id IN ({$user_folder_id_array_csv})";
     $sql .= "  AND folder.folder_id = folder_file.folder_id";
     $sql .= "  AND folder_file.file_id = file_info.file_id";
     if ($form['q'] != '') {
         $query_array_array = ACSLib::get_query_array_array($form['q']);
         $where_sql = '';
         foreach ($query_array_array as $query_array) {
             if (!count($query_array)) {
                 continue;
             }
             $sub_where_sql = '';
             foreach ($query_array as $query) {
                 $query = pg_escape_string($query);
                 ACSLib::escape_ilike($query);
                 if ($sub_where_sql != '') {
                     $sub_where_sql .= " OR ";
                 }
                 $sub_where_sql .= "(";
                 $sub_where_sql .= " file_info.display_file_name ILIKE '%{$query}%'";
                 $sub_where_sql .= " OR file_info.comment ILIKE '%{$query}%'";
                 $sub_where_sql .= ")";
             }
             if ($sub_where_sql != '') {
                 if ($where_sql != '') {
                     $where_sql .= " AND ";
                 }
                 $where_sql .= "({$sub_where_sql})";
             }
         }
         if ($where_sql != '') {
             $sql .= " AND ({$where_sql})";
         }
     }
     //
     // 日数指定がある場合
     if ($days !== false) {
         $sql = $sql . " AND " . ACSLib::get_sql_condition_from_today("file_info.update_date", $days);
     }
     // ORDER
     if ($rows != false) {
         // 表示件数制御 //
         $display_count = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D02'), 'NEW_INFO_TOP_DISPLAY_MAX_COUNT');
         $sql = $sql . " OFFSET 0 LIMIT " . $display_count;
     } else {
         if ($form['order'] == 'update_date') {
             $sql .= " ORDER BY file_info.update_date DESC";
         } else {
             $sql .= " ORDER BY file_info.display_file_name ASC";
         }
     }
     $row_array = ACSDB::_get_row_array($sql);
     return $row_array;
 }