1<?php
2/**
3 * Copyright 2017 Facebook, Inc.
4 *
5 * You are hereby granted a non-exclusive, worldwide, royalty-free license to
6 * use, copy, modify, and distribute this software in source code or binary
7 * form for use in connection with the web services and APIs provided by
8 * Facebook.
9 *
10 * As with any software that integrates with the Facebook platform, your use
11 * of this software is subject to the Facebook Developer Principles and
12 * Policies [http://developers.facebook.com/policy/]. This copyright notice
13 * shall be included in all copies or substantial portions of the software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 *
23 */
24namespace Facebook\PersistentData;
25
26use Facebook\Exceptions\FacebookSDKException;
27
28/**
29 * Class FacebookSessionPersistentDataHandler
30 *
31 * @package Facebook
32 */
33class FacebookSessionPersistentDataHandler implements PersistentDataInterface
34{
35    /**
36     * @var string Prefix to use for session variables.
37     */
38    protected $sessionPrefix = 'FBRLH_';
39
40    /**
41     * Init the session handler.
42     *
43     * @param boolean $enableSessionCheck
44     *
45     * @throws FacebookSDKException
46     */
47    public function __construct($enableSessionCheck = true)
48    {
49        if ($enableSessionCheck && session_status() !== PHP_SESSION_ACTIVE) {
50            throw new FacebookSDKException(
51                'Sessions are not active. Please make sure session_start() is at the top of your script.',
52                720
53            );
54        }
55    }
56
57    /**
58     * @inheritdoc
59     */
60    public function get($key)
61    {
62        if (isset($_SESSION[$this->sessionPrefix . $key])) {
63            return $_SESSION[$this->sessionPrefix . $key];
64        }
65
66        return null;
67    }
68
69    /**
70     * @inheritdoc
71     */
72    public function set($key, $value)
73    {
74        $_SESSION[$this->sessionPrefix . $key] = $value;
75    }
76}
77