HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /var/www/html/pmw24/wp-content/plugins/advanced-access-manager/Application/Core/Config.php
<?php

/**
 * ======================================================================
 * LICENSE: This file is subject to the terms and conditions defined in *
 * file 'license.txt', which is part of this source code package.       *
 * ======================================================================
 */

/**
 * AAM Core Config
 * 
 * @package AAM
 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
 */
class AAM_Core_Config {
    
    /**
     * Core settings database option
     * 
     * aam-utilities slug is used because AAM Utilities with v3.4 became a core
     * feature instead of independent extension.
     */
    const OPTION = 'aam-utilities';
    
    /**
     * Core config
     * 
     * @var array
     * 
     * @access protected 
     */
    protected static $config = array();
    
    /**
     * Load core AAM settings
     * 
     * @return void
     * 
     * @access public
     */
    public static function bootstrap() {
        // TODO: Remove in July 2019
        add_filter(
            'aam-configpress-compatibility-filter', 
            'AAM_Core_Compatibility::checkConfigPressCompatibility'
        );
        
        if (is_multisite()) {
            self::$config = AAM_Core_Compatibility::normalizeConfigOptions(
                    AAM_Core_API::getOption(self::OPTION, array(), 'site')
            );
        } else {
            self::$config = AAM_Core_Compatibility::getConfig();
        }
    }
    
    /**
     * Get config option
     * 
     * @param string $option
     * @param mixed  $default
     * 
     * @return mixed
     * 
     * @access public
     * @static
     */
    public static function get($option, $default = null) {
        if (array_key_exists($option, self::$config)) {
            $response = self::$config[$option];
        } else {
            $response = self::readConfigPress($option, $default);
        }
        
        return self::normalize($response);
    }
    
    /**
     * Normalize config option
     * 
     * @param string $setting
     * 
     * @return string
     * 
     * @access protected
     * @static
     */
    protected static function normalize($setting) {
        return str_replace(array('{ABSPATH}'), array(ABSPATH), $setting);
    }
    
    /**
     * Set config
     * 
     * @param string $option
     * @param mixed  $value
     * 
     * @return boolean
     * 
     * @access public
     */
    public static function set($option, $value) {
        self::$config[$option] = $value;
        
        //save config to database
        if (is_multisite()) {
            $result = AAM_Core_API::updateOption(self::OPTION, self::$config, 'site');
        } else {
            $result = AAM_Core_API::updateOption(self::OPTION, self::$config);
        }
        
        
        return $result;
    }
    
    /**
     * Delete config option
     * 
     * @param string $option
     * 
     * @access public
     * @static
     */
    public static function delete($option) {
        if (array_key_exists($option, self::$config)) {
            unset(self::$config[$option]);
            
            if (is_multisite()) {
                AAM_Core_API::updateOption(self::OPTION, self::$config, 'site');
            } else {
                AAM_Core_API::updateOption(self::OPTION, self::$config);
            }
        }
    }
    
    /**
     * Get ConfigPress parameter
     * 
     * @param string $param
     * @param mixed  $default
     * 
     * @return mixed
     * 
     * @access public
     * @static
     */
    protected static function readConfigPress($param, $default = null) {
        $config = AAM_Core_ConfigPress::get('aam.' . $param, $default);
        
        if (is_array($config) && isset($config['userFunc'])) {
            if (is_callable($config['userFunc'])) {
                $response = call_user_func($config['userFunc']);
            } else {
                $response = $default;
            }
        } else {
            $response = $config;
        }

        return $response;
    }

}