OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / lib / class / ACSMessage.class.php
diff --git a/webapp/lib/class/ACSMessage.class.php b/webapp/lib/class/ACSMessage.class.php
new file mode 100644 (file)
index 0000000..4687a13
--- /dev/null
@@ -0,0 +1,395 @@
+<?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