OSDN Git Service

add ACS webapp, sql, htdocs
[acs/acs.git] / webapp / modules / Community / actions / DecideScheduleAction.class.php
diff --git a/webapp/modules/Community/actions/DecideScheduleAction.class.php b/webapp/modules/Community/actions/DecideScheduleAction.class.php
new file mode 100644 (file)
index 0000000..52918f8
--- /dev/null
@@ -0,0 +1,251 @@
+<?php
+require_once(dirname(__FILE__).'/AnswerScheduleAction.class.php');
+//require_once(VALIDATOR_DIR  . 'StringValidator.class.php');
+
+// ÆþÎÏʸ»úºÇÂçĹ(Ⱦ³Ñ¤Ç¤Îʸ»ú¿ô)
+define( '_DECIDESCHEDULEACTION_MAIL_SUBJECT_MAXLEN', 256 );
+define( '_DECIDESCHEDULEACTION_MAIL_MESSAGE_MAXLEN', 4096 );
+
+/**
+ * ¥³¥ß¥å¥Ë¥Æ¥£¤Î¥¹¥±¥¸¥å¡¼¥ë·èÄê
+ *
+ * @author  z-satosi
+ * @version $Revision: 1.3 $
+ */
+class DecideScheduleAction extends AnswerScheduleAction
+{
+       /**
+        * ½é´ü²èÌÌ
+        *
+        * GET¥á¥½¥Ã¥É¤Î¾ì¹ç¡¢¸Æ¤Ð¤ì¤ë¡£
+        * "schedule_id"¥Ñ¥é¥á¡¼¥¿¤¬Ìµ¤¤¾ì¹ç¤Ï¿·µ¬ºîÀ®¤È¤¹¤ë¡£
+        */
+       function getDefaultView () {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request = $context->getRequest();
+               $user = $context->getUser();
+
+               $params =& $request->getParameters();
+
+               // ·èÄêÁªÂò²èÌ̤«¤é¤ÎÁ«°Ü¤Î¾ì¹ç
+               if ($params['post_from_answer']=='t') {
+                       return $this->execute();
+               }
+
+               $target_community_id = $params['community_id'];
+               $target_schedule_id = $params['schedule_id'];
+
+               // ¥í¥°¥¤¥ó¥æ¡¼¥¶¾ðÊó¤ÎÀßÄê
+               $acs_user_info_row =& $user->getAttribute('acs_user_info_row');
+               $request->setAttributeByRef('acs_user_info_row', $acs_user_info_row);
+
+               // ´´»ö¤Ç¤Ê¤¤¥¹¥±¥¸¥å¡¼¥ë¤ä·èÄêºÑ¤Î¾ì¹ç¥»¥­¥å¥ê¥Æ¥£¥¨¥é¡¼
+               // ºÇ¿·¥¹¥±¥¸¥å¡¼¥ë¾ðÊó¤ò¼èÆÀ¤·¤Æ²ÄÈݤò³Îǧ
+               $schedule =& ACSSchedule::get_schedule_instance(
+                                       $params['community_id'], $params['schedule_id']);
+               if ($schedule->is_fixed() || !$schedule->is_organizer($acs_user_info_row)) {
+                       // ¤³¤Î¥Ú¡¼¥¸¤Ø¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
+                       $controller->forward(SECURE_MODULE, SECURE_ACTION);
+                       return;
+               }
+
+               // ·èÄê¸õÊäÆü»þ¤ÎÀßÄê(¥á¡¼¥ë¥Õ¥©¡¼¥à¤«¤é"Ìá¤ë"»þ¤ÎÂбþ)
+               $request->setAttribute('mailentry_adjustment_id',
+                               $request->getParameter('mailentry_adjustment_id'));
+
+               return parent::getDefaultView();
+       }
+
+       /**
+        * ¥á¡¼¥ë¥Õ¥©¡¼¥àÆþÎϲèÌ̤Îɽ¼¨
+        */
+       function getMailInputView (&$controller, &$request, &$user) {
+
+               $params =& $request->getParameters();
+               $schedule =& $request->getAttribute('schedule');
+
+               $target_community_id = $params['community_id'];
+               $target_schedule_id = $params['schedule_id'];
+
+               // ¥í¥°¥¤¥ó¥æ¡¼¥¶¾ðÊó¤ÎÀßÄê
+               $acs_user_info_row =& $user->getAttribute('acs_user_info_row');
+               $request->setAttributeByRef('acs_user_info_row', $acs_user_info_row);
+
+               // ´´»ö¤Ç¤Ê¤¤¥¹¥±¥¸¥å¡¼¥ë¤ä·èÄêºÑ¤Î¾ì¹ç¥»¥­¥å¥ê¥Æ¥£¥¨¥é¡¼
+               if ($schedule->is_fixed() || !$schedule->is_organizer($acs_user_info_row)) {
+                       // ¤³¤Î¥Ú¡¼¥¸¤Ø¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
+                       $controller->forward(SECURE_MODULE, SECURE_ACTION);
+                       return;
+               }
+
+               // ¥³¥ß¥å¥Ë¥Æ¥£¾ðÊó¤Î¼èÆÀ
+               $target_community_row =
+                               ACSCommunity::get_community_row($target_community_id);
+               $request->setAttributeByRef('target_community_row', $target_community_row);
+
+               // ·èÄê¸õÊäÆü»þ¤ÎÀßÄê
+               $request->setAttributeByRef('mailentry_adjustment_id',
+                                               $params['mailentry_adjustment_id']);
+
+               // ¥¨¥é¡¼»þ¤ÎºÆɽ¼¨ÍÑ
+               $request->setAttribute('mail_subject',$params['mail_subject']);
+               $request->setAttribute('mail_message',$params['mail_message']);
+
+               return View::INPUT;
+       }
+
+       /**
+        * ÅÐÏ¿¼Â¹Ô½èÍý
+        * POST¥á¥½¥Ã¥É¤Î¾ì¹ç¡¢¸Æ¤Ð¤ì¤ë
+        */
+       function execute () {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+
+               $params =& $request->getParameters();
+
+               // ¥í¥°¥¤¥ó¥æ¡¼¥¶¾ðÊó¤ÎÀßÄê
+               $acs_user_info_row =& $user->getAttribute('acs_user_info_row');
+               $request->setAttributeByRef('acs_user_info_row', $acs_user_info_row);
+
+               // ´´»ö¤Ç¤Ê¤¤¥¹¥±¥¸¥å¡¼¥ë¤ä·èÄêºÑ¤Î¾ì¹ç¥»¥­¥å¥ê¥Æ¥£¥¨¥é¡¼
+               // ºÇ¿·¥¹¥±¥¸¥å¡¼¥ë¾ðÊó¤ò¼èÆÀ¤·¤Æ²ÄÈݤò³Îǧ
+               $schedule =& ACSSchedule::get_schedule_instance(
+                                       $params['community_id'], $params['schedule_id']);
+               if ($schedule->is_fixed() || !$schedule->is_organizer($acs_user_info_row)) {
+                       // ¤³¤Î¥Ú¡¼¥¸¤Ø¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
+                       $controller->forward(SECURE_MODULE, SECURE_ACTION);
+                       return;
+               }
+
+               // ¸õÊäÆü»þÁªÂò²èÌ̤«¤é¤ÎPOST¤Î¾ì¹ç
+               if ($params['post_from_answer']=='t') {
+                       $request->setAttributeByRef('schedule',$schedule);
+
+                       $return_view = $this->getMailInputView($controller, $request, $user);
+
+               // ¥á¡¼¥ëÆþÎϲèÌ̤«¤é¤ÎPOST¤Î¾ì¹ç
+               } else {
+
+                       // DB¹¹¿·
+                       $schedule->update_decide_schedule($params['mailentry_adjustment_id']);
+
+                       // ¥·¥¹¥Æ¥à¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¼èÆÀ
+                       $system_mail_addr = ACSSystemConfig::get_keyword_value(
+                                       ACSMsg::get_mst('system_config_group','D01'), 'SYSTEM_MAIL_ADDR');
+
+                       // ¥á¡¼¥ëÁ÷¿®Áê¼ê¤ÎÀßÄê
+                       // ¼«Í³»²²Ã¤Î¾ì¹çÂоݤȤʤë¥á¥ó¥Ð¤Î¼èÆÀ
+                       $target_mmb = "";
+                       if ($schedule->is_target_all()===FALSE) {
+                               $p_array =& ACSScheduleParticipant::get_schedule_participant_instance_list(
+                               $schedule->schedule_id,FALSE);
+                               foreach ($p_array as $user_community_id => $schedule_participant) {
+                                       $target_mmb[] = $user_community_id;
+                               }
+                               $p_array = "";
+                       }
+
+                       // ¥á¡¼¥ë¤ÎÁ÷¿®
+                       ACSCommunityMail::send_community_mail(
+                                       $schedule->community_id, $system_mail_addr, 
+                                       $params['mail_subject'], $params['mail_message'], $target_mmb);
+
+                       // ¥ê¥À¥¤¥ì¥¯¥È(¥ê¥í¡¼¥ÉÂкö)
+                       $controller->redirect(
+                                       $this->getControllerPath(
+                                       'Community', 'Schedule') .
+                                       "&community_id=" . $schedule->community_id);
+
+               }
+               return $return_view;
+       }
+
+       function getRequestMethods () {
+               return Request::POST;
+       }
+
+       /**
+        * ÆþÎÏÃÍ¥Á¥§¥Ã¥¯
+        */
+       function validate () {
+               return TRUE;
+       }
+
+       /**
+        * ÆþÎÏÃÍ¥Á¥§¥Ã¥¯(ValidatorManager»ÈÍÑ)
+        */
+       function registerValidators (&$validatorManager) {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+
+               // ¥Ñ¥é¥á¡¼¥¿¼èÆÀ
+               $params =& $request->getParameters();
+
+               // ¥á¡¼¥ëÆþÎϲèÌ̤«¤é¤ÎPOST¤Î¾ì¹ç
+               if ($params['post_from_answer']!='t') {
+
+                       // ·ï̾¤ÎÆþÎÏ¥Á¥§¥Ã¥¯
+                       parent::regValidateName($validatorManager, 
+                               "mail_subject", 
+                               true, 
+                               ACSMsg::get_msg('Community', 'DecideScheduleAction.class.php', 'M050'));
+
+                       if ($params['mail_subject']) {
+                               $validator =& new StringValidator($controller);
+                               $validator->initialize(array(
+                                               'max' => _DECIDESCHEDULEACTION_MAIL_SUBJECT_MAXLEN,
+                                               'max_error' => ACSMsg::get_msg('Community', 'DecideScheduleAction.class.php', 'M051').
+                                                       _DECIDESCHEDULEACTION_MAIL_SUBJECT_MAXLEN));
+                       }
+
+                       // ËÜʸ¤ÎÆþÎÏ¥Á¥§¥Ã¥¯
+                       parent::regValidateName($validatorManager, 
+                               "mail_message", 
+                               true, 
+                               ACSMsg::get_msg('Community', 'DecideScheduleAction.class.php', 'M052'));
+
+                       if ($params['mail_message']) {
+                               $validator =& new StringValidator($controller);
+                               $validator->initialize(array(
+                                               'max' => _DECIDESCHEDULEACTION_MAIL_MESSAGE_MAXLEN,
+                                               'max_error' => ACSMsg::get_msg('Community', 'DecideScheduleAction.class.php', 'M053').
+                                                       _DECIDESCHEDULEACTION_MAIL_MESSAGE_MAXLEN));
+                       }
+               }
+       }
+
+       /**
+        * ÆþÎÏ¥Á¥§¥Ã¥¯¥¨¥é¡¼»þ¤ÎÂбþ
+        */
+       function handleError () {
+               $context = $this->getContext();
+               $controller = $context->getController();
+               $request =  $context->getRequest();
+               $user = $context->getUser();
+
+               $params =& $request->getParameters();
+
+               $schedule =& ACSSchedule::get_schedule_instance(
+                                       $params['community_id'], $params['schedule_id']);
+
+               $request->setAttributeByRef('schedule',$schedule);
+
+               return $this->getMailInputView($controller, $request, $user);
+       }       
+
+       function isSecure () {
+               return false;
+       }
+
+       function getCredential () {
+               return array('COMMUNITY_MEMBER');
+       }
+
+}
+?>