OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / modules / Community / actions / WaitingListAction.class.php
diff --git a/webapp/modules/Community/actions/WaitingListAction.class.php b/webapp/modules/Community/actions/WaitingListAction.class.php
new file mode 100644 (file)
index 0000000..707bf82
--- /dev/null
@@ -0,0 +1,193 @@
+<?php
+// $Id: WaitingListAction.class.php,v 1.7 2006/11/20 08:44:12 w-ota Exp $
+
+class WaitingListAction extends BaseAction
+{
+       // GET
+       function getDefaultView() {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+
+               if (!$this->get_execute_privilege()) {
+                       $controller->forward(SECURE_MODULE, SECURE_ACTION);
+                       return;
+               }
+
+               $acs_user_info_row = $user->getAttribute('acs_user_info_row');
+
+               // ÂоݤȤʤë¥æ¡¼¥¶¥³¥ß¥å¥Ë¥Æ¥£ID¤ò¼èÆÀ
+               $community_id = $request->ACSgetParameter('community_id');
+
+               // ¥³¥ß¥å¥Ë¥Æ¥£¾ðÊó
+               $community_row = ACSCommunity::get_community_row($community_id);
+
+               // ÂÔµ¡¼ïÊÌ¥³¡¼¥É
+               $waiting_type_code = $request->ACSgetParameter('waiting_type_code');
+               // ÂÔµ¡¾õÂÖ¥³¡¼¥É
+               $waiting_status_code = $request->ACSgetParameter('waiting_status_code');
+
+               // ÂÔµ¡¼ïÊÌ¥Þ¥¹¥¿
+               $waiting_type_master_array = ACSDB::get_master_array('waiting_type');
+               // ÂÔµ¡¾õÂÖ¥Þ¥¹¥¿
+               $waiting_status_master_array = ACSDB::get_master_array('waiting_status');
+
+               $waiting_type_name = $waiting_type_master_array[$waiting_type_code];
+               $waiting_status_name = $waiting_status_master_array[$waiting_status_code];
+
+               // ÂÔµ¡
+               $waiting_row_array = ACSWaiting::get_waiting_row_array($community_id, $waiting_type_name, $waiting_status_name);
+               if ($waiting_type_name == ACSMsg::get_mst('waiting_type_master','D40') || $waiting_type_name == ACSMsg::get_mst('waiting_type_master','D50')) {
+                       foreach ($waiting_row_array as $index => $waiting_row) {
+                               $waiting_row_array[$index]['entry_user_info_row'] = ACSUser::get_user_info_row_by_user_community_id($waiting_row['entry_user_community_id']);
+                       }
+               }
+
+               // set
+               $request->setAttribute('community_row', $community_row);
+               $request->setAttribute('waiting_type_name', $waiting_type_name);
+               $request->setAttribute('waiting_row_array', $waiting_row_array);
+
+               return View::INPUT;
+       }
+
+       // POST
+       function execute() {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+               $acs_user_info_row = $user->getAttribute('acs_user_info_row');
+
+               // ÂоݤȤʤ륳¥ß¥å¥Ë¥Æ¥£ID¤ò¼èÆÀ
+               $form = $request->ACSgetParameters();
+
+               // ÂÔµ¡¼ïÊÌ¥Þ¥¹¥¿
+               $waiting_type_master_array = ACSDB::get_master_array('waiting_type');
+               // ÂÔµ¡¾õÂÖ¥Þ¥¹¥¿
+               $waiting_status_master_array = ACSDB::get_master_array('waiting_status');
+
+               // ÂÔµ¡¾ðÊó
+               $waiting_row = ACSWaiting::get_waiting_row($form['waiting_id']);
+
+               // ¥³¥ß¥å¥Ë¥Æ¥£¾ðÊó
+               $community_row = ACSCommunity::get_community_row($waiting_row['community_id']);
+
+               // forward
+               $done_obj = new ACSDone();
+
+
+               if ($form['accept_button']) {
+                       // ¾µÇ§¥Ü¥¿¥ó²¡²¼»þ //
+                       ACSDB::_do_query("BEGIN");
+
+                       if ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D20')) {
+                               // ¥³¥ß¥å¥Ë¥Æ¥£¥á¥ó¥ÐÄɲÃ
+                               $community_member_form = array();
+                               $community_member_form['community_id'] = $waiting_row['community_id'];
+                               $community_member_form['user_community_id'] = $waiting_row['waiting_community_id'];
+                               $ret = ACSCommunity::set_community_member($community_member_form);
+                       } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D40')) {
+                               // ¥³¥ß¥å¥Ë¥Æ¥£´Ö¥ê¥ó¥¯ÀßÄê
+                               $ret = ACSCommunity::set_community_link($waiting_row['community_id'], $waiting_row['waiting_community_id']);
+                       } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D50')) {
+                               // ¥³¥ß¥å¥Ë¥Æ¥£´Ö¥ê¥ó¥¯ÀßÄê
+                               $ret = ACSCommunity::set_community_link($waiting_row['waiting_community_id'], $waiting_row['community_id']);
+                       }
+
+                       if ($ret) {
+                               // ¾µÇ§ºÑ¤ß¤ò¥»¥Ã¥È
+                               $ret = ACSWaiting::update_waiting_waiting_status_code($form['waiting_id'], ACSMsg::get_mst('waiting_status_master','D20'), $acs_user_info_row['user_community_id'], $form['reply_message']);
+                               if ($ret) {
+                                       ACSDB::_do_query("COMMIT");
+
+                                       // À°¹çÀ­ÊÝ»ý
+                                       if ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D20')) {
+                                               // »²²Ã¤Î½ÅÊ£¤ò²ò½ü
+                                               ACSWaiting::update_waiting_for_join_community($waiting_row['community_id'], $waiting_row['waiting_community_id']);
+                                               // ¾·ÂԤνÅÊ£¤ò²ò½ü
+                                               ACSWaiting::update_waiting_for_invite_to_community($waiting_row['waiting_community_id'], $waiting_row['community_id']);
+                                       } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D40')) {
+                                               // ¿Æ¥³¥ß¥å¥Ë¥Æ¥£ÄɲäνÅÊ£²ò½ü
+                                               ACSWaiting::update_waiting_for_parent_community_link($waiting_row['community_id'], $waiting_row['waiting_community_id']);
+                                               // ¥µ¥Ö¥³¥ß¥å¥Ë¥Æ¥£ÄɲäνÅÊ£²ò½ü
+                                               ACSWaiting::update_waiting_for_sub_community_link($waiting_row['waiting_community_id'], $waiting_row['community_id']);
+                                       } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master','D50')) {
+                                               // ¥µ¥Ö¥³¥ß¥å¥Ë¥Æ¥£ÄɲäνÅÊ£²ò½ü
+                                               ACSWaiting::update_waiting_for_sub_community_link($waiting_row['community_id'], $waiting_row['waiting_community_id']);
+                                               // ¿Æ¥³¥ß¥å¥Ë¥Æ¥£ÄɲäνÅÊ£²ò½ü
+                                               ACSWaiting::update_waiting_for_parent_community_link($waiting_row['waiting_community_id'], $waiting_row['community_id']);
+                                       }
+
+                                       // ÊÖ¿®¥á¥Ã¥»¡¼¥¸
+                                       if ($form['reply_message'] != '') {
+                                               $ret = ACSWaiting::send_admission_accept_notify_mail($form['waiting_id']);
+                                       }
+
+                                       $done_obj->set_title(
+                                                       ACSMsg::get_tag_replace(ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'FIN_ADM'),
+                                                       array("{WAITING_TYPE_NAME}" => $waiting_row[waiting_type_name])));
+                                       $done_obj->set_message(ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'M001'));
+                               } else {
+                                       $done_obj->set_message(ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'M002'));
+                               }
+                       } else {
+                               ACSDB::_do_query("ROLLBACK");
+                       }
+
+               } elseif ($form['reject_button']) {
+                       // µñÈݥܥ¿¥ó²¡²¼»þ
+                       $ret = ACSWaiting::update_waiting_waiting_status_code($form['waiting_id'], ACSMsg::get_mst('waiting_status_master','D30'), $acs_user_info_row['user_community_id']);
+                       if ($ret) {
+                               $done_obj->set_title(ACSMsg::get_tag_replace(
+                                               ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'FIN_DIS'),
+                                               array("{WAITING_TYPE_NAME}" => $waiting_row[waiting_type_name])));
+                               $done_obj->set_message(
+                                               ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'M001'));
+                       } else {
+                               $done_obj->set_message(
+                                               ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'M002'));
+                       }
+               }
+
+               $done_obj->add_link(ACSMsg::get_tag_replace(
+                               ACSMsg::get_msg('Community', 'WaitingListAction.class.php', 'BACK_TO_CM'),
+                               array("{COMMUNITY_NAME}" => $community_row['community_name'])),
+                               $this->getControllerPath('Community', DEFAULT_ACTION) 
+                                       . '&community_id=' . $community_row['community_id']);
+
+               $request->setAttribute('done_obj', $done_obj);
+               $controller->forward('Common', 'Done');
+       }
+
+       function getRequestMethods() {
+               return Request::POST;
+       }
+
+       function isSecure () {
+               return false;
+       }
+
+       function getCredential () {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+               return array('COMMUNITY_ADMIN');
+       }
+
+       function get_execute_privilege () {
+               $context = $this->getContext();
+               $user = $context->getUser();
+
+               // ¥³¥ß¥å¥Ë¥Æ¥£´ÉÍý¼Ô¤ÏOK
+               if ($user->hasCredential('COMMUNITY_ADMIN')) {
+                       return true;
+               }
+               return false;
+       }
+
+}
+
+?>