PHP Classes

File: vendor/jackbooted/config/PreferenceLoader.php

Recommend this page to a friend!
  Classes of Brett Dutton   JackBooted PHP Framework   vendor/jackbooted/config/PreferenceLoader.php   Download  
File: vendor/jackbooted/config/PreferenceLoader.php
Role: Class source
Content type: text/plain
Description: Class source
Class: JackBooted PHP Framework
Web application framework using simplified MVC
Author: By
Last change:
Date: 8 years ago
Size: 4,144 bytes
 

Contents

Class file image Download
<?php
namespace Jackbooted\Config;

use \
Jackbooted\DB\DB;
use \
Jackbooted\DB\DBTable;
/** 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 PreferenceLoader extends \Jackbooted\Util\JB {
   
/** Preferences Object
     * @type Preferences
     */
   
private $prefs;

    function
__construct ( $ser=NULL, $user=NULL ) {
       
parent::__construct();
       
//echo ( "<br>function LoadPrefs ( $ser=NULL, $user=NULL ) {" );
       
$this->prefs = new Preferences ();

       
// Make sure that we have the correct server
       
$server = ( $ser == NULL ) ? Cfg::get ( "server" ) : $ser;

       
// Load up thi s domain information from
        // the user information If there is no information
        // in the user, check the alternate domain
       
$sql = "SELECT * FROM tblUser WHERE ";
        if (
$user != NULL ) $sql .= "fldUser='$user'";
        else if (
$server != NULL ) $sql .= "'$server' LIKE fldDomain";
       
$sql .= " LIMIT 1";

        if (
$this->_loadUserTable ( $sql ) ) {
           
$this->_loadGroupTable ( );
        }
       
// if not work then try the alternate domain
       
else {
           
$sql = "SELECT * FROM tblUser WHERE '$server' LIKE fldAltDomain LIMIT 1";
            if (
$this->_loadUserTable ( $sql ) ) {
               
// If it is in the alternate domain the
                // use these preferences
               
$server = $this->prefs->userPrefs["fldDomain"];
               
Cfg::set ( 'server', $server );

               
$this->_loadGroupTable ( );
            }
        }
    }

    function
getPreferences () {
        return (
$this->prefs );
    }

   
/** Function to load the User information and from a Database table
     * @param $sql The SQL string that returns the "Table" to load
     * @returns boolean
     * @private
     */
   
function _loadUserTable ( $sql ) {
       
// Create and Load the Table
       
$tab = new DBTable ( DB::DEF, $sql, null, DB::FETCH_ASSOC );

       
// If Table is empty return false
       
if ( $tab->isEmpty ( ) ) {
            return (
FALSE );
        }

       
// Load up the information
       
foreach ( $tab as $row ) {
            foreach (
$row as $key => $val ) {
                switch (
$key ) {
                case
"fldPicture":
                case
"fldPhoto" : $typ = "IMAGE"; break;
                default:
$typ = "DATA"; break;
                }

               
// Put the value and data type into the User Prefs/Types arrays
               
$this->prefs->put ( $key, $val, $typ );
            }
        }

       
// return true/success
       
return ( TRUE );
    }
   
/** Function to load the user Group details
     * @returns boolean
     * @private
     */
   
function _loadGroupTable ( ) {

       
// Load the first group because it is the Global Group
       
$sql = DB::limit ( "SELECT * FROM tblGroup", 0, 1 );
       
$tab = new DBTable ( DB::DEF, $sql, null, DB::FETCH_ASSOC );
        if (
$tab->isEmpty () ) return ( false );

       
$fldGroup = [];
       
$fldGroup[$tab->getValue ( "fldGroupID" )] = $tab->getValue ( "fldName" );

       
// get the groups that are related to this client
       
$sql = ( "SELECT g.* FROM tblGroup g, tblUserGroupMap map " .
                
"WHERE map.fldUserID='" . $this->prefs->get ( "fldIserID" ) . "' " .
                
"AND map.fldGroupID=g.fldGroupID " );
       
$tab = new DBTable ( DB::DEF, $sql, null, DB::FETCH_ASSOC );
        if ( !
$tab->isEmpty () ) {
            for (
$i=0; $i<$tab->getRowCount (); $i++ ) {
               
$fldGroup[$tab->getValue ( "fldGroupID", $i )] = $tab->getValue ( "fldName", $i );
            }
        }

       
$this->prefs->put ( "fldGroup", $fldGroup );

       
// return true/success
       
return ( TRUE );
    }
}