/** * isAbleToAnswer 指定されたIDに回答できるかどうか * 強制URLハックのガード * 指定のアンケートの状態と回答者の権限を照らし合わせてガードをかける * 公開状態にない * 期間外 * 停止中 * 繰り返し回答 * 会員以外には許してないのに未ログインである * * @param Controller $controller controller(QuestionnaireAnswerController) * @param array $questionnaire 対象となるアンケートデータ * @return bool */ private function __isAbleToAnswer($controller, $questionnaire) { $answerSummary = ClassRegistry::init('QuestionnaireAnswerSummary'); if (!$controller->isAbleTo($questionnaire)) { return false; } if ($questionnaire['Questionnaire']['status'] != NetCommonsBlockComponent::STATUS_PUBLISHED) { return true; } // 繰り返し回答を許していないのにすでに回答済みか if ($questionnaire['Questionnaire']['is_repeat_allow'] == QuestionnairesComponent::PERMISSION_NOT_PERMIT) { $summary = $answerSummary->getNowSummaryOfThisUser($questionnaire['Questionnaire']['origin_id'], $controller->Auth->user('id'), $controller->Session->id()); if ($summary) { return false; } } return true; }