Example #1
0
 /** Get day context singleton instance.
  * @return self
  */
 public static function getInstance()
 {
     if (!self::$instance) {
         $instance = new self();
         $varName = self::getVarName();
         $session =& $_SESSION[$varName];
         $expire = strtotime('today 23:59');
         if (!(is_array($session) && is_int($session['ID']) && $session['EXPIRE'] === $expire)) {
             $session = array('ID' => null, 'EXPIRE' => $expire, 'UNIQUE' => array());
             //global $APPLICATION; $cookie = $APPLICATION->get_cookie($varname);
             if ($cookie = $_COOKIE[$varName]) {
                 try {
                     $cookie = Json::decode($cookie);
                 } catch (ArgumentException $e) {
                 }
             }
             // check if cookie is valid
             if (is_array($cookie) && is_array($cookie['UNIQUE']) && $cookie['EXPIRE'] === $expire && ($id = $cookie['ID']) !== null && is_int($id) && ($id === self::EMPTY_CONTEXT_ID || Internals\ContextTable::getByPrimary($id)->fetch())) {
                 $session['ID'] = $id;
                 $session['UNIQUE'] = $cookie['UNIQUE'];
             }
         }
         $instance->id = $session['ID'];
         self::$session =& $session;
         self::$instance = $instance;
     }
     return self::$instance;
 }
Example #2
0
    /** Get day context singleton instance.
     * @return self
     */
    public static function getInstance()
    {
        if (!self::$instance) {
            $instance = new self();
            $varName = self::getVarName();
            $session =& $_SESSION[$varName];
            $expire = strtotime('today 23:59');
            if (!(is_array($session) && is_int($session['ID']) && $session['EXPIRE'] === $expire)) {
                $session = array('ID' => null, 'EXPIRE' => $expire, 'UNIQUE' => array());
                //global $APPLICATION; $cookie = $APPLICATION->get_cookie($varname);
                if ($cookie = $_COOKIE[$varName]) {
                    try {
                        $cookie = Json::decode($cookie);
                    } catch (ArgumentException $e) {
                    }
                }
                // validate cookie
                if (is_array($cookie) && is_array($cookie['UNIQUE']) && $cookie['EXPIRE'] === $expire && ($id = $cookie['ID']) !== null && is_int($id) && ($id === self::EMPTY_CONTEXT_ID || Internals\ContextTable::getByPrimary($id)->fetch())) {
                    // 1. valid cookie
                    $session['ID'] = $id;
                    $session['UNIQUE'] = $cookie['UNIQUE'];
                } else {
                    // 2. invalid cookie
                    Asset::getInstance()->addString('
					<script type="text/javascript">
						BX.ajax.post(
							"/bitrix/tools/conversion/ajax_counter.php",
							{
								SITE_ID: BX.message("SITE_ID"),
								sessid: BX.message("bitrix_sessid"),
								HTTP_REFERER: "' . \CUtil::JSEscape($_SERVER['HTTP_REFERER']) . '"
							},
							function () {}
						);
					</script>
					');
                }
            }
            $instance->id = $session['ID'];
            self::$session =& $session;
            self::$instance = $instance;
        }
        return self::$instance;
    }