| 
<?phpnamespace 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 );
 }
 }
 |