$33 GRAYBYTE WORDPRESS FILE MANAGER $86

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/home/bravrvjk/itiministry.org/wp-content/plugins/give/src/Session/

HOME
Current File : /home/bravrvjk/itiministry.org/wp-content/plugins/give/src/Session//Accessor.php
<?php

namespace Give\Session;

use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
use stdClass;

/**
 * Class Access
 *
 * In legacy core session data load in array which contains multiple keys like give_purchase, receipt_access etc.
 * This class helps to convert them into objects. Every subclass will treat a specific key as group of session data.
 *
 * @package Give\Session
 */
abstract class Accessor
{
    /**
     * Session Id.
     *
     * @var string
     */
    protected $sessionKey;

    /**
     * Session data as array.
     *
     * We use this array internally to perform database related operations.
     *
     * @var mixed
     */
    protected $data;

    /**
     * Session data as object.
     * Session data in object format will be return when query.
     *
     * @var stdClass
     */
    protected $dataObj;

    /**
     * Class constructor.
     */
    public function __construct()
    {
        $this->get();
    }

    /**
     * Convert session data to object.
     *
     * @since 2.7.0
     *
     * @param array $data
     *
     * @return stdClass
     */
    protected function convertToObject($data)
    {
        $dataObj = new stdClass();
        $data = $this->renameArrayKeysToPropertyNames($data);

        foreach ($data as $key => $value) {
            if (is_array($value)) {
                $dataObj->{$key} = $this->convertToObject($value);
                continue;
            }

            $dataObj->{$key} = $value;
        }

        return $dataObj;
    }

    /**
     * Get data from session.
     *
     * @since 2.7.0
     * @return stdClass
     */
    public function get()
    {
        if ($this->dataObj) {
            return $this->dataObj;
        }

        $this->data = Give()->session->get($this->sessionKey, $this->data);
        $this->dataObj = $this->convertToObject($this->data);

        return $this->dataObj;
    }

    /**
     * Get data from session.
     *
     * @since 2.7.0
     *
     * @param string $key
     *
     * @return stdClass
     */
    public function getByKey($key)
    {
        $result = null;

        if (null !== $this->dataObj) {
            $result = property_exists($this->dataObj, $key) ? $this->dataObj->{$key} : $result;
        }

        return $result;
    }

    /**
     * Save/Replace/Remove data into session
     *
     * @param string $key
     * @param mixed  $data
     *
     * @return string
     */
    public function store($key, $data)
    {
        $this->validateData($data);

        if ( ! empty($this->data[$key])) {
            // Merge data.
            $this->data[$key] = array_merge(
                $this->data[$key],
                $data
            );
        } else {
            $this->data[$key] = $data;
        }

        return $this->set();
    }

    /**
     * Store data into session.
     *
     * @since 2.7.0
     * @return string
     */
    protected function set()
    {
        $this->dataObj = $this->convertToObject($this->data);

        return Give()->session->set($this->sessionKey, $this->data);
    }

    /**
     * Replace session data.
     *
     * @since 2.7.0
     *
     * @param mixed  $data
     *
     * @param string $key
     *
     * @return string
     */
    public function replace($key, $data)
    {
        $this->validateData($data);
        $this->data[$key] = $data;

        return $this->set();
    }

    /**
     * Delete session data.
     *
     * @since 2.7.0
     *
     * @param string $key
     *
     * @return string
     */
    public function delete($key)
    {
        if (array_key_exists($key, $this->data)) {
            unset($this->data[$key]);
        }

        return $this->set();
    }

    /**
     * Return session data in array format.
     *
     * @since 2.7.0
     * @return array
     */
    public function toArray()
    {
        return $this->data;
    }

    /**
     * Rename array key to property name
     *
     * @since 2.7.0
     *
     * @param array $data
     *
     * @return array
     */
    protected function renameArrayKeysToPropertyNames($data)
    {
        foreach ($data as $key => $value) {
            // Convert array key string to property name.
            // Remove other then char, dash, give related prefix and hyphen and prefix.
            $newName = preg_replace('/[^a-zA-Z0-9_\-]/', '', $key);
            $newName = preg_replace('/(-|_)?give(-|_)?/', '', $newName);
            $keyParts = preg_split('/(-|_)/', $newName);
            $keyParts = array_map('ucfirst', array_filter($keyParts));
            $newName = lcfirst(implode('', $keyParts));

            // Remove old key/value pair if renamed.
            if ($key !== $newName) {
                unset($data[$key]);
            }

            if (is_array($value)) {
                // Process array.
                $data[$newName] = $this->renameArrayKeysToPropertyNames($value);
                continue;
            }

            $data[$newName] = $value;
        }

        return $data;
    }

    /**
     * Validate data.
     *
     * @since 2.7.0
     *
     * @param mixed $data
     *
     */
    protected function validateData($data)
    {
        if (is_array($data) && isset($data[0])) {
            throw new InvalidArgumentException('Invalid value. Please pass an associative array');
        }
    }
}


Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
SessionDonation
--
4 Apr 2026 1.57 AM
bravrvjk / bravrvjk
0755
Accessor.php
5.231 KB
24 Nov 2021 4.55 AM
bravrvjk / bravrvjk
0644
Objects.php
0.26 KB
24 Nov 2021 4.55 AM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF