OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / lib / class / ACSBBS.class.php
diff --git a/webapp/lib/class/ACSBBS.class.php b/webapp/lib/class/ACSBBS.class.php
new file mode 100644 (file)
index 0000000..6459c30
--- /dev/null
@@ -0,0 +1,778 @@
+<?php
+/**
+ * ·Ç¼¨ÈÄ¡¡¶¦ÄÌ¥¯¥é¥¹
+ * 
+ * ACSBBS.class.php
+ * @package  acs/webapp/lib/class
+ * @author   ota                     @editor akitsu
+ * @since    PHP 4.0
+ */
+// $Id: ACSBBS.class.php,v 1.38 2008/05/21 01:53:36 y-yuki Exp $
+
+/*
+ * ¥³¥ß¥å¥Ë¥Æ¥£
+ */
+class ACSBBS {
+
+       /**
+        * ·Ç¼¨ÈĤοƵ­»ö°ìÍ÷¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param ¥³¥ß¥å¥Ë¥Æ¥£ID
+        * @return ·Ç¼¨ÈĤοƵ­»ö°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       static function get_bbs_row_array($community_id) {
+               $community_id = pg_escape_string($community_id);
+
+               $sql  = "SELECT bbs.*, open_level_master.*, acs_get_bbs_last_post_date(bbs.bbs_id) as bbs_last_post_date, acs_get_bbs_res_num(bbs.bbs_id) as bbs_res_num, bbs_file.file_id as file_id, community.community_name as community_name";
+               $sql .= " FROM ((bbs LEFT OUTER JOIN community ON bbs.user_community_id = community.community_id)";
+               $sql .= " LEFT OUTER JOIN bbs_file ON bbs.bbs_id = bbs_file.bbs_id) ,";
+               $sql .= " open_level_master";
+               $sql .= " WHERE bbs.community_id = '$community_id'";
+               $sql .= "  AND bbs.open_level_code = open_level_master.open_level_code";
+               // ºï½ü¥Õ¥é¥°OFF
+               $sql .= "  AND bbs.bbs_delete_flag != 't'";
+               $sql .= " ORDER BY bbs_last_post_date DESC";            //Åê¹ÆÆü¤Î¿·¤·¤¤½ç
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * bbs_id¤ò»ØÄꤷ¤Æ·Ç¼¨ÈĤοƵ­»ö¾ðÊó¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param bbs_id
+        * @return ·Ç¼¨ÈĤοƵ­»ö¾ðÊó (Ï¢ÁÛÇÛÎó)
+        */
+       static function get_bbs_row($bbs_id) {
+               $bbs_id = pg_escape_string($bbs_id);
+               $sql  = "SELECT *, bbs.community_id AS bbs_community_id";
+               $sql .= " FROM bbs LEFT OUTER JOIN community on bbs.user_community_id = community.community_id";
+               $sql .= "  LEFT OUTER JOIN bbs_file USING(bbs_id)";
+               $sql .= ", open_level_master";
+               $sql .= " WHERE bbs.open_level_code = open_level_master.open_level_code";
+               $sql .= "  AND bbs.bbs_id = '$bbs_id'";
+               // ºï½ü¥Õ¥é¥°OFF
+               $sql .= "  AND bbs.bbs_delete_flag != 't'";
+               $row = ACSDB::_get_row($sql);
+               return $row;
+       }
+
+       /**
+        * bbs_id¤ò»ØÄꤷ¤Æ·Ç¼¨ÈĤο®ÍêºÑ¤ß¥³¥ß¥å¥Ë¥Æ¥£°ìÍ÷¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param bbs_id
+        * @return ¥³¥ß¥å¥Ë¥Æ¥£°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       static function get_bbs_trusted_community_row_array($bbs_id) {
+               $bbs_id = pg_escape_string($bbs_id);
+
+               $sql  = "SELECT community.community_id, community.community_name";
+               $sql .= " FROM bbs, bbs_trusted_community, community";
+               $sql .= " WHERE bbs.bbs_id = '$bbs_id'";
+               $sql .= "  AND bbs.bbs_id = bbs_trusted_community.bbs_id";
+               $sql .= "  AND bbs_trusted_community.trusted_community_id = community.community_id";
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+
+       /**
+        * bbs_res_id¤ò»ØÄꤷ¤Æ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param bbs_res_id
+        * @return ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       static function get_bbs_res_row($bbs_res_id) {
+               $bbs_res_id = pg_escape_string($bbs_res_id);
+
+               $sql  = "SELECT *";
+               $sql .= " FROM bbs_res LEFT OUTER JOIN community ON bbs_res.user_community_id = community.community_id";
+               $sql .= " WHERE bbs_res.bbs_res_id = '$bbs_res_id'";
+
+               $row = ACSDB::_get_row($sql);
+               return $row;
+       }
+
+       /**
+        * bbs_id¤ò»ØÄꤷ¤Æ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö°ìÍ÷¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param bbs_id
+        * @return ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       static function get_bbs_res_row_array($bbs_id) {
+               $bbs_id = pg_escape_string($bbs_id);
+
+               $sql  = "SELECT *";
+               $sql .= " FROM bbs_res LEFT OUTER JOIN community ON bbs_res.user_community_id = community.community_id";
+               $sql .= " WHERE bbs_res.bbs_id = '$bbs_id'";
+               $sql .= " ORDER BY bbs_res.post_date ASC";              //Åê¹ÆÆü¤Î¿·¤·¤¤½ç   bbs_res.delete_flag,(ºï½ü¥Õ¥é¥°¤Î¤Ê¤¤¤â¤Î¢ª¢ªºï½ü¥Õ¥é¥°¤Î¤¢¤ë¤â¤Î)
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤοƵ­»ö¤òÅÐÏ¿¤¹¤ë
+        *
+        * @param ¿Æµ­»ö¾ðÊó¤ÎÇÛÎó
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function set_bbs($form) {
+               $org_form = $form;
+
+               ACSLib::escape_sql_array($form);
+               ACSLib::get_sql_value_array($form);
+
+               // BEGIN
+               //ACSDB::_do_query("BEGIN");
+
+               $bbs_id_seq = ACSDB::get_next_seq('bbs_id_seq');
+
+               $sql  = "INSERT INTO bbs";
+               $sql .= " (bbs_id, community_id, user_community_id, subject, body, open_level_code, expire_date,ml_send_flag)";
+               $sql .= " VALUES ($bbs_id_seq, $form[community_id], $form[user_community_id], $form[subject], $form[body], $form[open_level_code], $form[xdate], ". 
+                               ($org_form['is_ml_send']=='t' ? "TRUE" : "FALSE") . ")";
+               $ret = ACSDB::_do_query($sql);
+               if (!$ret) {
+                       ACSDB::_do_query("ROLLBACK");
+                       print "bbs insert error";
+                       return $ret;
+               }
+
+               $form = $org_form;
+               if($form['new_file']!=""){
+                       //²èÁü¥Õ¥¡¥¤¥ë¤ÎÅÐÏ¿
+                       $file_obj = $form['new_file'];
+                       $ret = $file_obj->save_upload_file('BBS');              //¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥¹¥¯¤ËÊݸ
+                       if($ret){
+                               $ret =  $file_obj->add_file();                          //¥Õ¥¡¥¤¥ë¾ðÊó¤òDB¤ØÊݸ
+                       }
+                       if($ret){
+                               $ret = ACSBBSFile::insert_bbs_file($file_obj,$bbs_id_seq);
+                       }
+                       if (!$ret) {
+                               ACSDB::_do_query("ROLLBACK");
+                               print "bbs_file insert error";  
+                               return $ret;
+                       }
+               }
+
+               // bbs_trusted_community
+               $open_level_master_array = ACSDB::get_master_array('open_level');
+               // Èó¸ø³« (¥á¥ó¥Ð¤Î¤ß)
+               if ($open_level_master_array[$form['open_level_code']] == ACSMsg::get_mst('open_level_master','D04')
+                       && is_array($form['trusted_community_id_array'])) {
+                       foreach ($form['trusted_community_id_array'] as $trusted_community_id) {
+                               $trusted_community_id = pg_escape_string($trusted_community_id);
+
+                               $sql  = "INSERT INTO bbs_trusted_community";
+                               $sql .= " (bbs_id, trusted_community_id)";
+                               $sql .= " VALUES ($bbs_id_seq, $trusted_community_id)";
+
+                               $ret = ACSDB::_do_query($sql);
+                               if (!$ret) {
+                                       ACSDB::_do_query("ROLLBACK");
+                                       print "bbs_trusted_community insert error";
+                                       return $ret;
+                               }
+                       }
+               }
+
+               if ($ret) {
+                       $ret = $bbs_id_seq;
+               }
+               
+               // COMMIT
+               //ACSDB::_do_query("COMMIT");
+
+               return $ret;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤοƵ­»ö¤ò¹¹¿·¤¹¤ë
+        *
+        * @param ¿Æµ­»ö¾ðÊó¤ÎÇÛÎó
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function update_bbs($form) {
+               $org_form = $form;
+
+               ACSLib::escape_sql_array($form);
+               ACSLib::get_sql_value_array($form);
+
+               // bbs¹¹¿·
+               $sql  = "UPDATE bbs";
+               $sql .= " SET";
+               $sql .= "  subject = $form[subject],";
+               $sql .= "  body = $form[body]";
+               $sql .= " WHERE";
+               $sql .= "  bbs_id = $form[bbs_id]";
+               $ret = ACSDB::_do_query($sql);
+               if (!$ret) {
+                       ACSDB::_do_query("ROLLBACK");
+                       return $ret;
+               }
+
+               $form = $org_form;
+               if ($_FILES['new_file']['tmp_name'] != '') {
+                       // ²èÁü¥Õ¥¡¥¤¥ëobj¤Î¼èÆÀ
+                       $file_obj = ACSFile::get_upload_file_info_instance($_FILES['new_file'], $form['community_id'], $form['user_community_id']);
+                       // ¥Õ¥¡¥¤¥ë¤ò¥Ç¥£¥¹¥¯¤ËÊݸ
+                       $ret = $file_obj->save_upload_file('BBS');
+                       if (!$ret) {
+                               ACSDB::_do_query("ROLLBACK");
+                               return $ret;
+                       }
+
+                       //¥Õ¥¡¥¤¥ë¾ðÊó¤òDB¤ØÊݸ
+                       $ret = $file_obj->add_file();
+                       if (!$ret) {
+                               ACSDB::_do_query("ROLLBACK");
+                               return $ret;
+                       }
+
+                       // bbs¥Õ¥¡¥¤¥ë¤Î¹¹¿·
+                       $ret = ACSBBSFile::update_bbs_file($file_obj, $form['bbs_id']);
+                       if (!$ret) {
+                               ACSDB::_do_query("ROLLBACK");
+                               return $ret;
+                       }
+               }
+
+               return $ret;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö¤òÅÐÏ¿¤¹¤ë
+        *
+        * @param ÊÖ¿®µ­»ö¾ðÊó¤ÎÇÛÎó
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function set_bbs_res($form) {
+               ACSLib::escape_sql_array($form);
+               ACSLib::get_sql_value_array($form);
+
+               $bbs_res_id_seq = ACSDB::get_next_seq('bbs_res_id_seq');
+
+               $sql  = "INSERT INTO bbs_res";
+               $sql .= " (bbs_id, bbs_res_id, user_community_id, subject, body ,bbs_res_delete_flag)";
+               $sql .= " VALUES ($form[bbs_id], $bbs_res_id_seq,$form[user_community_id], $form[subject], $form[body],'f')";
+
+               $ret = ACSDB::_do_query($sql);
+               return $ret;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤοƵ­»ö¤ò¹¹¿·¤¹¤ë
+        *
+        * @param ¿Æµ­»ö¾ðÊó¤ÎÇÛÎó
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function update_bbs_res($form) {
+               ACSLib::escape_sql_array($form);
+               ACSLib::get_sql_value_array($form);
+
+               // bbs¹¹¿·
+               $sql  = "UPDATE bbs_res";
+               $sql .= " SET";
+               $sql .= "  subject = $form[subject],";
+               $sql .= "  body = $form[body]";
+               $sql .= " WHERE";
+               $sql .= "  bbs_res_id = $form[bbs_res_id]";
+
+               $ret = ACSDB::_do_query($sql);
+               return $ret;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤο·Ãåµ­»ö°ìÍ÷¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID (BBS¤Ø¤Î¥¢¥¯¥»¥¹¼Ô¤È¤Ê¤ë¥æ¡¼¥¶)
+     *        $days ¼èÆÀ¤¹¤ëÆü¿ô(ºÇ¶á²¿Æü´Ö¤Î¿·Ãå¾ðÊó¤ò¼èÆÀ)
+        * @return ¿·Ãåµ­»ö°ìÍ÷
+        *
+        */
+       static function get_new_bbs_row_array($user_community_id, $days=false, $offset=false) {
+
+               // ¥Þ¥¤¥³¥ß¥å¥Ë¥Æ¥£¤Î¥³¥ß¥å¥Ë¥Æ¥£ID¤ÎCSV¤òºîÀ®¤¹¤ë
+               $community_row_array = ACSUser::get_community_row_array($user_community_id);
+               $community_id_array = array();
+               foreach ($community_row_array as $index => $community_row) {
+                       array_push($community_id_array, $community_row['community_id']);
+               }
+               if (count($community_id_array)) {
+                       $community_id_csv = implode(',', $community_id_array);
+               } else {
+                       $community_id_csv = 'null';
+               }
+
+               //
+               $user_community_id = pg_escape_string($user_community_id);
+
+               // ·Ç¼¨ÈĤο·Ãåµ­»ö¤òºÇ¿·½ç¤Ë¼èÆÀ¤¹¤ë
+               $sql = "SELECT
+                       bbs.*, community.*, open_level_master.*,
+                       COALESCE(bbs_res_num_n,0) AS bbs_res_num,
+                       lastts.bbs_last_timestamp AS bbs_last_post_date,
+                       CASE
+                               WHEN acdate.access_date IS NULL THEN TRUE
+                               WHEN lastts.bbs_last_timestamp > acdate.access_date THEN TRUE
+                               ELSE FALSE
+                       END AS is_unread
+               FROM
+                       (((bbs INNER JOIN community
+                       ON bbs.community_id = community.community_id)
+                               INNER JOIN open_level_master
+                               ON bbs.open_level_code = open_level_master.open_level_code)
+                                       LEFT JOIN
+                                               (SELECT bbs_id, count(*) AS bbs_res_num_n
+                                               FROM bbs_res GROUP BY bbs_id) AS rescnt
+                                       ON bbs.bbs_id = rescnt.bbs_id)
+                                               LEFT JOIN acs_view_bbs_last_timestamp AS lastts
+                                               ON bbs.bbs_id = lastts.bbs_id
+                                                       LEFT JOIN
+                                                               (SELECT bbs_id, access_date
+                                                               FROM bbs_access_history
+                                                               WHERE user_community_id='".$user_community_id."') AS acdate
+                                                       ON bbs.bbs_id = acdate.bbs_id
+               WHERE
+                       bbs.community_id IN (".$community_id_csv.")
+                       AND bbs.bbs_delete_flag != 't'";
+
+               if($days !== false){
+                       $sql .= " AND " . ACSLib::get_sql_condition_from_today(
+                       "lastts.bbs_last_timestamp", $days);
+               }
+
+               $sql .= " ORDER BY bbs_last_timestamp DESC, bbs.bbs_id DESC";
+               if($offset !== 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 {
+                       //$sql .= " ORDER BY bbs_last_timestamp DESC, bbs.bbs_id DESC";
+               }
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤο·Ãå¥Ñ¥Ö¥ê¥Ã¥¯¥ê¥ê¡¼¥¹°ìÍ÷¤ò¼èÆÀ¤¹¤ë
+        *
+        * @return ¿·Ãå¥Ñ¥Ö¥ê¥Ã¥¯¥ê¥ê¡¼¥¹°ìÍ÷
+        */
+       static function get_new_bbs_for_press_release_row_array() {
+               $limit = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group','D02'), 'NEW_INFO_TOP_DISPLAY_MAX_COUNT');
+
+               $sql  = "SELECT *";
+               $sql .= " FROM bbs LEFT OUTER JOIN bbs_file USING(bbs_id), open_level_master as BBS_OLM,";
+               $sql .= "  community, community_type_master,";
+               $sql .= "  contents as SELF_C, contents_type_master as SELF_CTM,";  // Á´ÂÎ
+               $sql .= "  open_level_master as SELF_OLM";                          // Á´ÂΤÎopen_level_master
+
+               $sql .= " WHERE bbs.community_id = community.community_id";
+               $sql .= "  AND community.community_type_code = community_type_master.community_type_code";
+               $sql .= "  AND community_type_master.community_type_name = '".ACSMsg::get_mst('community_type_master','D40')."'";
+
+               // BBS: ¥Ñ¥Ö¥ê¥Ã¥¯¥ê¥ê¡¼¥¹
+               $sql .= "  AND bbs.open_level_code = BBS_OLM.open_level_code";
+               $sql .= "  AND BBS_OLM.open_level_name = '".ACSMsg::get_mst('open_level_master','D06')."'";
+               // BBS: ºï½ü¥Õ¥é¥°OFF
+               $sql .= "  AND bbs.bbs_delete_flag != 't'";
+               // BBS: ·ÇºÜ½ªÎ»Æü¤Ë㤷¤Æ¤¤¤Ê¤¤
+               $sql .= "  AND (bbs.expire_date is null OR CURRENT_DATE <= bbs.expire_date::DATE)";
+
+               // ¥³¥ß¥å¥Ë¥Æ¥£: ºï½ü¥Õ¥é¥°OFF
+               $sql .= "  AND community.delete_flag != 't'";
+               // ¥³¥ß¥å¥Ë¥Æ¥£: Èó¸ø³«¥³¥ß¥å¥Ë¥Æ¥£¤Ç¤Ê¤¤
+               $sql .= "  AND community.community_id = SELF_C.community_id";
+               $sql .= "  AND SELF_C.contents_type_code = SELF_CTM.contents_type_code";
+               $sql .= "  AND SELF_C.open_level_code = SELF_OLM.open_level_code";
+               $sql .= "  AND SELF_CTM.contents_type_name = '".ACSMsg::get_mst('contents_type_master','D00')."'";
+               $sql .= "  AND SELF_OLM.open_level_name != '".ACSMsg::get_mst('open_level_master','D03')."'";
+
+               // ORDER
+               $sql .= " ORDER BY bbs.post_date DESC";
+
+               // LIMIT
+               $sql .= " LIMIT $limit";
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤΥ¢¥¯¥»¥¹ÍúÎò¾ðÊó¤ò¼èÆÀ¤¹¤ë
+        *
+        * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID
+        * @param $bbs_id bbs_id
+        * @return ·Ç¼¨ÈĤΥ¢¥¯¥»¥¹ÍúÎò¾ðÊó (Ï¢ÁÛÇÛÎó)
+        */
+       static function get_bbs_access_history_row($user_community_id, $bbs_id) {
+               $user_community_id = pg_escape_string($user_community_id);
+               $bbs_id = pg_escape_string($bbs_id);
+
+               $sql  = "SELECT *";
+               $sql .= " FROM bbs_access_history";
+               $sql .= " WHERE user_community_id = '$user_community_id'";
+               $sql .= "  AND bbs_id = '$bbs_id'";
+
+               $row = ACSDB::_get_row($sql);
+               return $row;
+       }
+
+       /**
+        * ·Ç¼¨ÈĤΥ¢¥¯¥»¥¹ÍúÎò¤òÅÐÏ¿¤¹¤ë
+        *
+        * @param $bbs_id
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function set_bbs_access_history($user_community_id, $bbs_id) {
+               // ·Ç¼¨ÈÄ¥¢¥¯¥»¥¹ÍúÎò
+               $bbs_access_history_row = ACSBBS::get_bbs_access_history_row($user_community_id, $bbs_id);
+
+               $bbs_access_history_form = array(
+                                                                                  'user_community_id' => $user_community_id,
+                                                                                  'bbs_id' => $bbs_id,
+                                                                                  'access_date' => 'now'
+                                                                                  );
+
+               if ($bbs_access_history_row) {
+                       // ¥ì¥³¡¼¥É¤¬Â¸ºß¤¹¤ë¾ì¹ç¤ÏUPDATE
+                       ACSBBSAccessHistoryModel::update_bbs_access_history($bbs_access_history_form);
+               } else {
+                       // ¥ì¥³¡¼¥É¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤ÏINSERT
+                       ACSBBSAccessHistoryModel::insert_bbs_access_history($bbs_access_history_form);
+               }
+       }
+
+       /**
+        * ·Ç¼¨ÈĤοƵ­»ö¤òºï½ü¤¹¤ë
+        *
+        * @param ¿Æµ­»öID
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function delete_bbs($bbs_obj) {
+               $bbs_id = $bbs_obj['bbs_id'];
+               
+               ACSDB::_do_query("BEGIN");
+               //¥µ¥Öµ­»ö¤Î¼èÆÀ
+               $sub_row_array = ACSBBS::get_bbs_res_row_array($bbs_id);
+               $bbs_res_id_array = array();
+               if(count($sub_row_array) > 0){
+                       foreach ($sub_row_array as $index => $sub_row) {
+                               array_push($bbs_res_id_array, $sub_row['bbs_res_id']);
+                       }
+                       //¥µ¥Öµ­»ö¤Îºï½üÀßÄê
+                       $ret = ACSBBS::delete_bbs_res($bbs_res_id_array);
+                       if(!$ret){
+                               ACSDB::_do_query("ROLLBACK");
+                               echo ACSMsg::get_mdmsg(__FILE__,'M001');
+                               return false;
+                       }
+               }
+               //¿Æµ­»ö¤¬»ý¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¾ðÊó¤Îºï½ü
+               $bbs_row = ACSBBSFile::select_bbs_file_row($bbs_id);
+               $file_id = $bbs_row['file_id'];
+               if($file_id != ''){
+                       $ret = ACSBBSFile::delete_bbs_file($file_id,$bbs_id);
+                       if(!$ret){
+                               ACSDB::_do_query("ROLLBACK");
+                               echo ACSMsg::get_mdmsg(__FILE__,'M002');
+                               return false;
+                       }
+               }
+               //¿Æµ­»ö¤Îºï½ü(ºï½ü¥Õ¥é¥°°·¤¤)
+               $sql = "UPDATE bbs";
+               $sql .= " SET bbs_delete_flag = 't'";
+               $sql .= " WHERE bbs.bbs_id = $bbs_id";
+               $ret = ACSDB::_do_query($sql);
+               if(!$ret){
+                       ACSDB::_do_query("ROLLBACK");
+                       echo ACSMsg::get_mdmsg(__FILE__,'M003');
+                       return false;
+               }
+                               
+               ACSDB::_do_query("COMMIT");
+               return true;
+       }
+       
+
+       /**
+        * ·Ç¼¨ÈĤÎÊÖ¿®µ­»ö¤òºï½ü¤¹¤ë
+        *
+        * @param ¿Æµ­»öID
+        * @return À®¸ù(true) / ¼ºÇÔ(false)
+        */
+       static function delete_bbs_res($bbs_res_id_array) {
+               /*
+               if (count($bbs_res_id_array) > 1) {
+                       $bbs_res_id = implode(',', $bbs_res_id_array);
+               }else{
+                       $bbs_res_id = $bbs_res_id_array;
+               }
+               */
+               $bbs_res_id_csv = implode(',', $bbs_res_id_array);
+               ACSDB::_do_query("BEGIN");
+               //¥µ¥Öµ­»ö¤Îºï½ü
+               $sql = "UPDATE bbs_res";
+               $sql .= " SET bbs_res_delete_flag = 't'";
+               $sql .= " WHERE bbs_res.bbs_res_id IN($bbs_res_id_csv)";
+               $ret = ACSDB::_do_query($sql);
+               if(!$ret){
+                       ACSDB::_do_query("ROLLBACK");
+                       echo ACSMsg::get_mdmsg(__FILE__,'M001');
+                       return false;
+               }
+               ACSDB::_do_query("COMMIT");
+               return true;
+       }
+
+       /**
+        * get_bbs_rss_row_array ¥á¥½¥Ã¥É
+        *
+        * RSSɽ¼¨¾ðÊó¤ÎºîÀ®
+        * ¾ò·ï¡§¸ø³«ÈÏ°Ï¡á¥Ñ¥Ö¥ê¥Ã¥¯¥ê¥ê¡¼¥¹ & ºï½ü¥Õ¥é¥°¤Ç¤Ï¤Ê¤¤¤â¤Î
+        * @param  community_id_array £±¸Ä¤Î¤È¤­¤âÊ£¿ô¤Ç¤âÂбþ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë
+        *
+        * @order  bbs_last_post_date ºÇ¿·½ç¤Ë¼èÆÀ
+        * @return row_array          ·Ç¼¨ÈĿƵ­»ö¡¡¤ÎÇÛÎó
+        *
+        * @return $row_array RSS½ÐÎϥǡ¼¥¿
+        */
+       static function get_bbs_rss_row_array($community_id_array,$flag = 0) {
+               if (count($community_id_array) > 1) {
+                       $community_id = implode(',', $community_id_array);
+               }else{
+                       $community_id = $community_id_array;
+               }
+
+               $sql  = "SELECT * ,bbs.bbs_id as bbs_id";
+               $sql .= " FROM (bbs LEFT OUTER JOIN bbs_file ON bbs.bbs_id = bbs_file.bbs_id) , open_level_master ";
+               $sql .= " WHERE bbs.open_level_code = open_level_master.open_level_code";
+               $sql .= "  AND open_level_master.open_level_name = '".ACSMsg::get_mst('open_level_master','D06')."'";   //¸ø³«ÈÏ°Ï¡§¥Ñ¥Ö¥ê¥Ã¥¯¥ê¥ê¡¼¥¹
+               $sql .= "  AND bbs.bbs_delete_flag = 'f'";                                              //ºï½ü¥Õ¥é¥°¤Ç¤Ï¤Ê¤¤¤â¤Î
+               if($flag == 0){
+                       // ½ü³°¤¹¤ë¥³¥ß¥å¥Ë¥Æ¥£ID¤Î»ØÄ꤬¤¢¤Ã¤¿¾ì¹ç¤Î¤ß¡¢¹Ê¤ê¹þ¤à
+                       if ($community_id) {
+                               $sql .= "  AND bbs.community_id NOT IN( $community_id )";       //³ºÅö¤·¤Ê¤¤¥³¥ß¥å¥Ë¥Æ¥£¤¹¤Ù¤Æ
+                       }
+               }else{
+                       $sql .= "  AND bbs.community_id IN( $community_id )";   //³ºÅö¤¹¤ë¥³¥ß¥å¥Ë¥Æ¥£¤Î¤ß
+               }
+               $sql .= " ORDER BY post_date DESC";
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+       
+       /**
+        * BBS¥Õ¥¡¥¤¥ë¾ðÊóarray¼èÆÀ
+        * @param $where_list ¸¡º÷ÍѾò·ï»ØÄê
+        */
+       static function get_bbs_where_array ($where_list , $open_lebel_cd , $no_array) {
+               $sql  = "SELECT *";
+               $sql .= " FROM bbs INNER JOIN open_level_master ON bbs.open_level_code = open_level_master.open_level_code";
+               $sql .= " WHERE bbs.bbs_delete_flag = 'f'";
+               if($open_lebel_cd != '00'){
+                       $sql .= "  AND bbs.open_level_code ='$open_lebel_cd'";
+               }
+               if($where_list != ''){
+                       $sql .= $where_list;
+               }
+               if(count($no_array) > 0){
+                       $no_array = ACSLib::get_sql_value_array($no_array);
+                       $sql .= " AND bbs.bbs_id NOT IN (" . implode(", ", $no_array) . ")";
+               }
+               $sql .= " ORDER BY bbs.post_date DESC";
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+       
+       /**
+        * BBS¤ò¸¡º÷¤¹¤ë¤¿¤á¤Îwhere¶ç¤Î£±Éô¤òºîÀ®
+        *
+        * @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;
+       }
+
+       /**
+        * BBS¤ò¸¡º÷¤¹¤ë¤¿¤á¤Îwhere¶ç¤Î£±Éô¤òºîÀ®2
+        * ·ï̾¤ÈËÜʸ¤¬¤½¤ì¤¾¤ìñÆÈ»ØÄꡦʣ¹ç»ØÄê¤Ë¤Ê¤ë²ÄǽÀ­¤ò»ý¤Ä¤¿¤á
+        * Î󤴤ȤÎ\8e·\8e°\8eÜ\8e°\8eÄ\8eÞ¤ò·«¤êÊÖ¤¹½èÍý¤Î¤ß¤ò¹Ô¤¦´Ø¿ô
+        *
+        * @param  $query_array_array \8e·\8e°\8eÜ\8e°\8eÄ\8eÞÇÛÎó
+        * @param  $str_title Îó̾
+        * @return $where_sql ºîÀ®¤·¤¿SQL¾ò·ïʸ
+        */
+       static function create_sql_where_field($query_array_array , $str_field ,$flag){
+               $str_like = "";
+               foreach ($query_array_array as $query_array) {                  //Á´\8e·\8e°\8eÜ\8e°\8eÄ\8eÞ¤ËÂФ¹¤ë½èÍý
+                       if (!count($query_array)) {
+                               continue;                                                                                                                                                               //£±\8e·\8e°\8eÜ\8e°\8eÄ\8eÞÃæ¤ËÃͤ¬Ìµ¤¤¾ì¹ç¡Ê¶èÀÚ¤êʸ»ú¡©¡Ë
+                       }
+                       foreach ($query_array as $id => $str_q) {                                       //£±\8e·\8e°\8eÜ\8e°\8eÄ\8eÞ¤ËÂФ¹¤ë½èÍý¡Êʸ»ú¼ï¤Î¤¿¤áor½èÍý¡Ë
+                                       $str_q = pg_escape_string($str_q);
+                                       ACSLib::escape_ilike($str_q);
+                                       if($id == 0){
+                                                       $str_like = $str_field . " LIKE '%" . $str_q ."%'";
+                                       }else{
+                                                       $where_sql['str_count'] = 2;
+                                                       $str_like = $str_like . " OR " . $str_field . " LIKE '%" . $str_q ."%'";
+                                       }
+                       }
+                       if ($str_like != '') {                                                                                                  //Á´\8e·\8e°\8eÜ\8e°\8eÄ\8eÞ¤òAND¤«OR¤Ç¤Ä¤Ê¤²¤ë
+                               if($where_sql['str_like'] != '' ){
+                                       switch($flag){
+                                               case 1; //¤¹¤Ù¤Æ¹çÃ×
+                                                       $where_sql['str_like'] = $where_sql['str_like'] ." AND ($str_like)"; break;
+                                               case 2: //¤¹¤Ù¤Æ¹çÃפ»¤º
+                                                       $where_sql['str_like'] = $where_sql['str_like'] ." OR ($str_like)";
+                                       }
+                               }else{
+                                       $where_sql['str_like'] = " ($str_like)";
+                               }
+                       }
+               }
+               return $where_sql;
+       }
+
+       /**
+        * ºÇ¿·¤Î·Ç¼¨ÈĿƵ­»ö°ìÍ÷¤ò¼èÆÀ¤¹¤ë (·Ç¼¨ÈÄRSSÍÑ)
+        *
+        * @param $community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID
+        * @param $term ¼èÆÀ´ü´Ö
+        * @return ·Ç¼¨ÈǿƵ­»ö¤Î°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)
+        */
+       static function get_new_bbs_rss_row_array($community_id, $term) {
+               $community_id = pg_escape_string($community_id);
+               $term = pg_escape_string($term);
+
+               // ·Ç¼¨ÈĤο·Ãåµ­»ö¤òºÇ¿·½ç¤Ë¼èÆÀ¤¹¤ë
+               $sql  = "SELECT *, bbs.bbs_id as bbs_id, acs_get_bbs_last_post_date(bbs.bbs_id) as bbs_last_post_date";
+               $sql .= " FROM (bbs LEFT OUTER JOIN bbs_file ON bbs.bbs_id = bbs_file.bbs_id), community, open_level_master";
+               $sql .= " WHERE bbs.community_id = '$community_id'";
+               $sql .= "  AND bbs.community_id = community.community_id";
+               $sql .= "  AND bbs.open_level_code = open_level_master.open_level_code";
+               // ºï½ü¥Õ¥é¥°OFF
+               $sql .= "  AND bbs.bbs_delete_flag != 't'";
+               // $termÆü°ÊÆâ¤ËÅê¹Æ¤Î¤¢¤Ã¤¿µ­»ö¤ò¼èÆÀ
+               $sql .= "  AND acs_get_bbs_last_post_date(bbs.bbs_id)::DATE > (CURRENT_DATE - '@ $term days'::INTERVAL)";
+               // ºÇ½ªÅê¹ÆÆü»þ¤Ç¥½¡¼¥È
+               $sql .= " ORDER BY bbs_last_post_date DESC";
+
+               $row_array = ACSDB::_get_row_array($sql);
+               return $row_array;
+       }
+
+       /**
+        * ·Ç¼¨ÈÄRSS¤ò½ÐÎϤ¹¤ë
+        *
+        * @param $community_row Âоݥ³¥ß¥å¥Ë¥Æ¥£¾ðÊó
+        * @param $bbs_row_array ·Ç¼¨ÈĿƵ­»ö°ìÍ÷
+        * @param $params ¥Ñ¥é¥á¡¼¥¿Åù
+        */
+       static function print_bbs_rss($community_row, $bbs_row_array, $params) {
+               // »ÈÍÑ¥¯¥é¥¹: acs/webapp/lib/feedcreator/feedcreator.class.php
+               $rss = new UniversalFeedCreator();
+
+               // ³µÍ×Åù <channel>
+               $rss->useCached();
+               $rss->title = $community_row['community_name']; // ¥³¥ß¥å¥Ë¥Æ¥£Ì¾
+               $rss->description = $community_row['community_profile']['contents_value'];  // ¥×¥í¥Õ¥£¡¼¥ë (¸ø³«ÈÏ°ÏÊÌ)
+               $rss->link = $params['base_url'] . $community_row['top_page_url']; // ¥³¥ß¥å¥Ë¥Æ¥£¥È¥Ã¥×¥Ú¡¼¥¸URL
+               $rss->url = $params['base_url'] . $community_row['image_url'];     // ²èÁüURL  <image rdf:resource="...">
+               $rss->syndicationURL = $rss_syndication_url;                              // ¼«¿È¤ÎURL <channel rdf:about="...">
+
+               // ¥í¥´²èÁü <image>
+               $image = new FeedImage();
+               $image->title = $community_row['image_title'];     // ¥Õ¥¡¥¤¥ë̾
+               $image->link = ACSMsg::get_mdmsg(__FILE__,'M006'); // ¸¦µæ¼¼¥í¥´²èÁü
+               $image->url = $params['base_url'] . $community_row['image_url'];
+               $rss->image = $image;
+
+               // 1·ï¤Î¥À¥¤¥¢¥ê¡¼: <item>
+               foreach ($bbs_row_array as $index => $bbs_row) {
+                       // CRLF ¢ª LF
+                       $body = preg_replace('/\r\n/', "\n", $bbs_row['body']);
+
+                       $item = new FeedItem(); 
+                       $item->post_date = $bbs_row['post_date']; 
+                       $item->title = $bbs_row['subject']; 
+                       $item->link = $params['base_url'] . $bbs_row['bbs_res_url'];
+                       $item->description = $body;
+                       if ($bbs_row['file_url'] != '') {
+                               $item->image_link = $params['base_url'] . $bbs_row['file_url'];
+                       }
+                       $item->description2 = $body; //Âè2¤ÎËÜʸ  <content:encoded>
+                       
+                       $rss->addItem($item); 
+               }
+
+               // http-header
+               mb_http_output('pass');
+               header('Content-type: application/xml; charset=UTF-8');
+               echo mb_convert_encoding($rss->createFeed("RSS1.0"), 'UTF-8', mb_internal_encoding());
+       }
+}
+?>