--- /dev/null
+<?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());
+ }
+}
+?>