--- /dev/null
+<?php\r
+/**\r
+ * ¥á¥Ã¥»¡¼¥¸¡¡¶¦ÄÌ¥¯¥é¥¹\r
+ * \r
+ * ACSMessage.class.php\r
+ * @package acs/webapp/lib/class\r
+ * @author acs\r
+ */\r
+// $Id: ACSMessage.class.php,v 1.1 2009/06/19 09:50:00 acs Exp $\r
+\r
+/*\r
+ * ¥á¥Ã¥»¡¼¥¸¥¯¥é¥¹\r
+ */\r
+class ACSMessage {\r
+\r
+ /**\r
+ * ¿·Ãå¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID\r
+ * @return ¿·Ãå¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_new_message_row_array($user_community_id) {\r
+ $user_community_id = pg_escape_string($user_community_id);\r
+\r
+ $sql = "SELECT message.message_id";\r
+ $sql .= " FROM message, message_receiver";\r
+ $sql .= " WHERE message_receiver.community_id = '$user_community_id'";\r
+ $sql .= " AND message_receiver.message_id = message.message_id";\r
+ $sql .= " AND message_receiver.message_delete_flag = 'f'";\r
+ $sql .= " AND message_receiver.read_flag = 'f'";\r
+ $sql .= " ORDER BY message.post_date DESC";\r
+\r
+ $row_array = ACSDB::_get_row_array($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * ¼õ¿®¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID\r
+ * @return ¼õ¿®¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_receive_message_row_array($user_community_id) {\r
+ $user_community_id = pg_escape_string($user_community_id);\r
+\r
+ $sql = "SELECT message.message_id";\r
+ $sql .= ", message.subject";\r
+ $sql .= ", message.post_date";\r
+ $sql .= ", message_receiver.message_receiver_id";\r
+ $sql .= ", message_receiver.read_flag";\r
+ $sql .= ", community.community_id AS user_id";\r
+ $sql .= ", community.community_name AS user_name";\r
+ $sql .= " FROM message, message_sender, message_receiver, community";\r
+ $sql .= " WHERE message_receiver.community_id = '$user_community_id'";\r
+ $sql .= " AND message_sender.community_id = community.community_id";\r
+ $sql .= " AND message_receiver.message_id = message.message_id";\r
+ $sql .= " AND message.message_id = message_sender.message_id";\r
+ $sql .= " AND message_receiver.message_delete_flag = 'f'";\r
+ $sql .= " ORDER BY message.post_date DESC";\r
+\r
+ $row_array = ACSDB::_get_row_array($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $user_community_id ¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID\r
+ * @return Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¤Î°ìÍ÷ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_send_message_row_array($user_community_id) {\r
+ $user_community_id = pg_escape_string($user_community_id);\r
+\r
+ $sql = "SELECT message.message_id";\r
+ $sql .= ", message.subject";\r
+ $sql .= ", message.post_date";\r
+ $sql .= ", message_sender.message_sender_id";\r
+ $sql .= ", message_receiver.read_flag";\r
+ $sql .= ", community.community_id AS user_id";\r
+ $sql .= ", community.community_name AS user_name";\r
+ $sql .= " FROM message, message_sender, message_receiver, community";\r
+ $sql .= " WHERE message_sender.community_id = '$user_community_id'";\r
+ $sql .= " AND message_receiver.community_id = community.community_id";\r
+ $sql .= " AND message_sender.message_id = message.message_id";\r
+ $sql .= " AND message.message_id = message_receiver.message_id";\r
+ $sql .= " AND message_sender.message_delete_flag = 'f'";\r
+ $sql .= " ORDER BY message.post_date DESC";\r
+\r
+ $row_array = ACSDB::_get_row_array($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * ¼õ¿®¥á¥Ã¥»¡¼¥¸¤Î¾ÜºÙ¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @return ¼õ¿®¥á¥Ã¥»¡¼¥¸¤Î¾ÜºÙ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_receive_message_row($message_id) {\r
+ $message_id = pg_escape_string($message_id);\r
+\r
+ $sql = "SELECT message.*";\r
+ $sql .= ", message_receiver.message_receiver_id";\r
+ $sql .= ", message_receiver.read_flag";\r
+ $sql .= ", community.community_id AS user_id";\r
+ $sql .= ", community.community_name AS user_name";\r
+ $sql .= " FROM message, message_sender, message_receiver, community";\r
+ $sql .= " WHERE message.message_id = '$message_id'";\r
+ $sql .= " AND message_sender.community_id = community.community_id";\r
+ $sql .= " AND message_receiver.message_id = message.message_id";\r
+ $sql .= " AND message.message_id = message_sender.message_id";\r
+ $sql .= " AND message_receiver.message_delete_flag = 'f'";\r
+ $sql .= " ORDER BY message.post_date DESC";\r
+\r
+ $row_array = ACSDB::_get_row($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¤Î¾ÜºÙ¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @return Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¤Î¾ÜºÙ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_send_message_row($message_id) {\r
+ $message_id = pg_escape_string($message_id);\r
+\r
+ $sql = "SELECT message.*";\r
+ $sql .= ", community.community_id AS user_id";\r
+ $sql .= ", community.community_name AS user_name";\r
+ $sql .= " FROM message, message_sender, message_receiver, community";\r
+ $sql .= " WHERE message.message_id = '$message_id'";\r
+ $sql .= " AND message_receiver.community_id = community.community_id";\r
+ $sql .= " AND message_receiver.message_id = message.message_id";\r
+ $sql .= " AND message.message_id = message_sender.message_id";\r
+ $sql .= " AND message_sender.message_delete_flag = 'f'";\r
+ $sql .= " ORDER BY message.post_date DESC";\r
+\r
+ $row_array = ACSDB::_get_row($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * ¥á¥Ã¥»¡¼¥¸¤ò´ûÆɤˤ¹¤ë\r
+ *\r
+ * @param $message_receiver_id ¼õ¿®¥á¥Ã¥»¡¼¥¸ID\r
+ * @return À®¸ù(true) / ¼ºÇÔ(false)\r
+ */\r
+ static function read_message($message_receiver_id) {\r
+ \r
+ // BEGIN\r
+ \r
+ //¥á¥Ã¥»¡¼¥¸¤Î̤ÆÉ¡¦´ûÆɥե饰Êѹ¹ \r
+ $sql = "UPDATE message_receiver";\r
+ $sql .= " SET read_flag = 't'";\r
+ $sql .= " WHERE message_receiver.message_receiver_id = $message_receiver_id";\r
+ $ret = ACSDB::_do_query($sql);\r
+ if(!$ret){\r
+ echo "ERROR: Delete parent article failed.";\r
+ return false;\r
+ }\r
+ \r
+ // COMMIT\r
+ return true;\r
+ }\r
+\r
+ /**\r
+ * ÊÖ¿®»þ¤Î°úÍÑ¥á¥Ã¥»¡¼¥¸¤ò¼èÆÀ¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @return °úÍÑ¥á¥Ã¥»¡¼¥¸¤Î¾ÜºÙ (Ï¢ÁÛÇÛÎó¤ÎÇÛÎó)\r
+ */\r
+ static function get_message_row($message_id) {\r
+ $message_id = pg_escape_string($message_id);\r
+\r
+ $sql = "SELECT message.subject";\r
+ $sql .= ", message.body";\r
+ $sql .= " FROM message";\r
+ $sql .= " WHERE message.message_id = '$message_id'";\r
+\r
+ $row_array = ACSDB::_get_row($sql);\r
+ return $row_array;\r
+ }\r
+\r
+ /**\r
+ * ¥á¥Ã¥»¡¼¥¸¤òÅÐÏ¿¤¹¤ë\r
+ *\r
+ * @param $form ¥á¥Ã¥»¡¼¥¸¾ðÊó¤ÎÇÛÎó\r
+ * @return À®¸ù(ÅÐÏ¿¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸ID) / ¼ºÇÔ(false)\r
+ */\r
+ static function set_message($form) {\r
+ $org_form = $form;\r
+\r
+ ACSLib::escape_sql_array($form);\r
+ ACSLib::get_sql_value_array($form);\r
+\r
+ // BEGIN\r
+ //ACSDB::_do_query("BEGIN");\r
+\r
+ $message_id_seq = ACSDB::get_next_seq('message_id_seq');\r
+ $message_sender_id_seq = ACSDB::get_next_seq('message_sender_id_seq');\r
+ $message_receiver_id_seq = ACSDB::get_next_seq('message_receiver_id_seq');\r
+\r
+ // messege\r
+ $sql1 = "INSERT INTO message";\r
+ $sql1 .= " (message_id, subject, body)";\r
+ $sql1 .= " VALUES ($message_id_seq, $form[subject], $form[body])";\r
+\r
+ $ret = ACSDB::_do_query($sql1);\r
+ if (!$ret) {\r
+ //ACSDB::_do_query("ROLLBACK");\r
+ echo "ERROR: insert message error";\r
+ return $ret;\r
+ }\r
+\r
+ $form = $org_form;\r
+ \r
+ // messege_sender\r
+ $sql2 = "INSERT INTO message_sender";\r
+ $sql2 .= " (message_sender_id, message_id, community_id, message_delete_flag)";\r
+ $sql2 .= " VALUES ($message_sender_id_seq, $message_id_seq, $form[acs_user_info_id], 'f')";\r
+\r
+ $ret = ACSDB::_do_query($sql2);\r
+ if (!$ret) {\r
+ //ACSDB::_do_query("ROLLBACK");\r
+ echo "ERROR: insert message_sender error";\r
+ return $ret;\r
+ }\r
+ \r
+ $form = $org_form;\r
+ \r
+ // messege_receiver\r
+ $sql3 = "INSERT INTO message_receiver";\r
+ $sql3 .= " (message_receiver_id, message_id, community_id, read_flag, message_delete_flag)";\r
+ $sql3 .= " VALUES ($message_receiver_id_seq, $message_id_seq, $form[user_community_id], 'f', 'f')";\r
+\r
+ $ret = ACSDB::_do_query($sql3);\r
+ if (!$ret) {\r
+ //ACSDB::_do_query("ROLLBACK");\r
+ echo "ERROR: insert message_receiver error";\r
+ return $ret;\r
+ }\r
+\r
+ if ($ret) {\r
+ return $message_id_seq;\r
+ } else {\r
+ return false;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * ¼õ¿®¥á¥Ã¥»¡¼¥¸¤òºï½ü¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @return À®¸ù(true) / ¼ºÇÔ(false)\r
+ */\r
+ static function delete_receive_message($message_id) {\r
+ \r
+ // BEGIN\r
+ \r
+ //¥á¥Ã¥»¡¼¥¸¤Îºï½ü(ºï½ü¥Õ¥é¥°°·¤¤) \r
+ $sql = "UPDATE message_receiver";\r
+ $sql .= " SET message_delete_flag = 't'";\r
+ $sql .= " WHERE message_receiver.message_id = $message_id";\r
+ $ret = ACSDB::_do_query($sql);\r
+ if(!$ret){\r
+ echo "ERROR: Delete receive message failed.";\r
+ return false;\r
+ }\r
+ \r
+ // COMMIT\r
+ return true;\r
+ }\r
+ \r
+ /**\r
+ * Á÷¿®ºÑ¥á¥Ã¥»¡¼¥¸¤òºï½ü¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @return À®¸ù(true) / ¼ºÇÔ(false)\r
+ */\r
+ static function delete_send_message($message_id) {\r
+ \r
+ // BEGIN\r
+ \r
+ //¥á¥Ã¥»¡¼¥¸¤Îºï½ü(ºï½ü¥Õ¥é¥°°·¤¤) \r
+ $sql = "UPDATE message_sender";\r
+ $sql .= " SET message_delete_flag = 't'";\r
+ $sql .= " WHERE message_sender.message_id = $message_id";\r
+ $ret = ACSDB::_do_query($sql);\r
+ if(!$ret){\r
+ echo "ERROR: Delete send messege failed.";\r
+ return false;\r
+ }\r
+ \r
+ // COMMIT\r
+ return true;\r
+ }\r
+ \r
+ /**\r
+ * ÄÌÃΥ᡼¥ë¤òÁ÷¿®¤¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @param $receiver_id ¼õ¿®¼ÔID\r
+ * @param $sender_id Á÷¿®¼ÔID\r
+ */\r
+ static function send_info_mail($message_id, $receiver_id, $sender_id) {\r
+ $system_group = ACSMsg::get_mst('system_config_group','D01');\r
+\r
+\r
+ // ¥·¥¹¥Æ¥àURL\r
+ $system_base_url = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_BASE_URL');\r
+ // ¥·¥¹¥Æ¥à¥í¥°¥¤¥óURL\r
+ $system_base_login_url = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_BASE_LOGIN_URL');\r
+ // ¥·¥¹¥Æ¥à¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹ (From:)\r
+ $system_mail_addr = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_MAIL_ADDR');\r
+\r
+ // ÍøÍѼԤθÀ¸ìÀßÄê¤ò°ì»þŪ¤ËÊݸ\r
+ $org_lang = ACSMsg::get_lang();\r
+\r
+ // ³Æ¸À¸ì¤Î¥¿¥¤¥È¥ë¤ò¼èÆÀ\r
+ $mail_titles = array();\r
+ foreach (ACSMsg::get_lang_list_array() as $lang_key => $lang_name) {\r
+ ACSMsg::set_lang($lang_key);\r
+ $mail_titles[$lang_key] = \r
+ ACSMsg::get_serial_msg('lib','ACSWaiting.class.php','MTL%03d')."\n";\r
+ }\r
+\r
+ // ¸À¸ì¤ò°ìö¸µ¤ËÌ᤹\r
+ ACSMsg::set_lang($org_lang);\r
+\r
+ // °ÍÍꦤΥ桼¥¶¾ðÊó\r
+ $user_info_row = ACSUser::get_user_profile_row($sender_id);\r
+ // °ÍÍꤵ¤ì¤ë¦¤Î¥æ¡¼¥¶¾ðÊó\r
+ $target_user_info_row = ACSUser::get_user_profile_row($receiver_id);\r
+\r
+ // ÂÔµ¡¾µÇ§URL\r
+ $message_url = $system_base_login_url . SCRIPT_PATH;\r
+ $message_url .= "?" . MODULE_ACCESSOR . "=User";\r
+ $message_url .= "&" . ACTION_ACCESSOR . "=MessageShow";\r
+ $message_url .= "&id={$receiver_id}";\r
+ $message_url .= "&message_id={$message_id}";\r
+\r
+\r
+ $target_lang = ACSMsg::get_mail_lang_by_inforow($target_user_info_row);\r
+\r
+ // °ìö°ÍÍꤵ¤ì¤ë¦¤Î¸À¸ì¤ËÀßÄꤹ¤ë\r
+ ACSMsg::set_lang($target_lang);\r
+\r
+ $body = $mail_titles[$target_lang];\r
+ $body .= ACSMsg::get_tag_replace( \r
+ ACSMsg::get_serial_msg('lib','ACSMessage.class.php','ADF%03d'),\r
+ array(\r
+ "{TARGET_USER_NAME}" => $target_user_info_row['user_name'],\r
+ "{USER_NAME}" => $user_info_row['user_name'],\r
+ "{USER_COMMUNITY_NAME}" => $user_info_row['community_name'],\r
+ "{MESSAGE_URL}" => $message_url,\r
+ "{SYSTEM_BASE_URL}" => $system_base_url\r
+ )\r
+ );\r
+ $subject = ACSMsg::get_mdmsg(__FILE__,'M002');\r
+\r
+ // ¸À¸ì¤ò¸µ¤ËÌ᤹\r
+ ACSMsg::set_lang($org_lang);\r
+\r
+ $ret = ACSLib::send_mail($system_mail_addr, \r
+ $target_user_info_row['mail_addr'], null, $subject, $body);\r
+ }\r
+\r
+ /**\r
+ * ¼õ¿®¥á¥Ã¥»¡¼¥¸¤Î»ý¤Á¼ç¤¬¤É¤¦¤«È½ÃǤ¹¤ë\r
+ *\r
+ * @param $message_id ¥á¥Ã¥»¡¼¥¸ID\r
+ * @param $community_id ¥æ¡¼¥¶¡¦¥³¥ß¥å¥Ë¥Æ¥£ID\r
+ * @return true or false\r
+ */\r
+ static function check_message_receiver($message_id, $community_id) {\r
+ $message_id = pg_escape_string($message_id);\r
+ $community_id = pg_escape_string($community_id);\r
+\r
+ $sql = "SELECT count(*)";\r
+ $sql .= " FROM message_receiver ";\r
+ $sql .= " WHERE message_id = '$message_id'";\r
+ $sql .= " AND community_id = '$community_id'";\r
+ $sql .= " AND message_delete_flag = 'f'";\r
+ \r
+ $value = ACSDB::_get_value($sql);\r
+ if ($value) {\r
+ return true;\r
+ } else {\r
+ return false;\r
+ }\r
+ }\r
+ \r
+}\r
+?>\r