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