<?php

/**
 * 年齢チェック処理を行うFilter
 *
 * @package     Maple.filter
 * @author      netnee T.Otogawa <tomokazu.otogawa@netnee.jp>
 * @access      public
 */
class Filter_Agecheck extends Filter
{
    /**
     * コンストラクター
     *
     * @access  public
     */
    function Filter_Agecheck()
    {
        parent::Filter();
    }

    /**
     * 年齢チェック処理を行う
     *
     * @access  public
     * @since   3.0.0
     */
    function execute()
    {
        $log =& LogFactory::getLog();
        $log->trace("Filter_Agecheckの前処理が実行されました", "Filter_Agecheck#execute");

        $container =& DIContainerFactory::getContainer();

        if ($this->getSize() > 0) {
            $session =& $container->getComponent("Session");
            $agechk = $session->getParameter("agechk");

            // ロボットからは認証ページへ遷移しない
            $isRobot = FALSE;
            if (preg_match(ROBOT_PATTERN, $_SERVER["HTTP_USER_AGENT"])){
                $isRobot = TRUE;
            }

            if (empty($agechk) && ($isRobot == FALSE)) {
                $request =& $container->getComponent("Request");
                $d = $request->getParameter("d");
                $agecheck = $request->getParameter("agecheck");
                if (empty($agecheck) && empty($d)) {
                    $log->trace("年齢認証", "Filter_Agecheck#execute");

                    $redirect  = (isset($_SERVER["HTTPS"])) ?
                                     "https://" : "http://";
                    $redirect .= $_SERVER["HTTP_HOST"] .
                                 $_SERVER["REQUEST_URI"];


                    //
                    // 年齢認証画面へリダイレクト
                    //
                    $loc = htmlspecialchars($_SERVER["SCRIPT_NAME"]).
                           "?action=agecheck_customer_agecheck&d=".md5("").
                           "&redirect=".urlencode($redirect);
                    header("Location: ". $loc);
                    exit;
                } else if (!empty($agecheck)) {
                    $session->setParameter("agechk", md5(""));
                    $log->trace("年齢認証されました chk=".$session->getParameter("agechk"), "Filter_Agecheck#execute");

                    //
                    // ポータル画面へリダイレクト
                    //
                    //header("Location: ?action=agecheck_customer_portal");
                }
            } else {
                $log->trace("年齢認証済 chk=".$agechk, "Filter_Agecheck#execute");
            }
            $log->trace("URL =".$_SERVER["QUERY_STRING"], "Filter_Agecheck#execute");
        }

        $filterChain =& $container->getComponent("FilterChain");
        $filterChain->execute();

        $log->trace("Filter_Agecheckの後処理が実行されました", "Filter_Agecheck#execute");
    }
}
?>
