<?php 
namespace Jackbooted\Config; 
 
use \Jackbooted\Util\Log4PHP; 
/** LoadPrefs.php - Loads up User Preferences 
 * 
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved. 
 * 
 * Written by Brett Dutton of Jackbooted Software 
 * brett at brettdutton dot com 
 * 
 * This software is written and distributed under the GNU General Public 
 * License which means that its source code is freely-distributed and 
 * available to the general public. 
 * 
 */ 
 
class Preferences extends \Jackbooted\Util\JB { 
    const MODULE = "MODULE"; 
    const THEME  = "THEME"; 
    const FUNC   = "FUNCTION"; 
    const FILE   = "FILE"; 
    const IMAGE  = "IMAGE"; 
    const DATA   = "DATA"; 
 
    public static $dataTypes =  [ self::MODULE, self::THEME, self::FUNC, self::FILE, self::IMAGE, self::DATA ]; 
 
    private static $log; 
 
    public static function init ( ) { 
        self::$log = Log4PHP::logFactory ( __CLASS__ ); 
    } 
 
    /** An array of User Preferences 
     * @type Array 
     * @private 
     */ 
    public $userPrefs =  [ ]; 
 
    private $userTypes =  [ ]; 
 
    /** Function returns a User prefeernce 
     * @param $s The key value of the User Prefernce to return 
     * @returns var 
     * @public 
     */ 
    public function get ( $s, $def='' ) { 
        //if not set return 
        if ( !isset ( $this->userTypes[$s] ) ) return ( $def ); 
 
        // return the user preference 
        return ( $this->userPrefs[$s] ); 
    } 
 
    /** 
     * function to return a list of all preferences of a particular type 
     * @param $typ The type of prefeernces to return 
     * @returns Array 
     * @public 
     */ 
    public function listType ( $typ ) { 
        $arr =  [ ]; 
        foreach ( $this->userTypes as $key => $val ) { 
            if ( $val == $typ ) $arr[] = $key; 
        } 
        sort ( $arr ); 
        return ( $arr ); 
    } 
 
    /** Function loads the userPrefs/userTypes with values 
     * @param $key The key ( name ) 
     * @param $val The value to save 
     * @param $typ The type of the value 
     * @public 
     */ 
    public function put ( $key, $val=FALSE, $typ="DATA" ) { 
        //if the $key is not set return 
        if ( ! isset ( $key ) ) return; 
 
        // set the userPrefs/userTpes 
        // If this is already in the system then just ignore type 
        if ( ! isset ( $this->userPrefs[$key] ) ) { 
            // if $typ is empty then set it to DATA 
            if ( $typ == "" ) $typ = "DATA"; 
            $this->userTypes[$key] = $typ; 
        } 
 
        $this->userPrefs[$key] = $val; 
    } 
} 
 
 |