summaryrefslogblamecommitdiffstats
path: root/admin/survey/classes/class.UserSetting.php
blob: c8c62ffcdcd6075e0cbf14049adf33fcc62431ba (plain) (tree)


































                                                                                                                            
                                      































































                                                                                                                  
                                                           















































                                                                                                                                                                           
<?php
/**
 * Created on 12.6.2009
 *
 * @author: Gorazd Vesleič
 *
 * @desc: za uporabnikove nastavitve prikaza vmesnika, 
 * 		  nastavlja globalne nastavitve za vse ankete. 
 * 		  Uporablja tabelo: srv_user_setting
 * 
 *   -- usr_id						# user ID
 *  # za izpis folderjev
 *   -- survey_list_order			# vrstni red stolpcev v Direktoriju
 *   -- survey_list_order_by		# sortiranje po stolpcu
 *   -- survey_list_rows_per_page	# koliko zapisov na stran (25)
 *   -- survey_list_visible			# kateri stolpci so vidni
 *   -- survey_list_widths			# širine posameznih stolpcev
 * 
 *  # vizualizacija
 *   -- icons_always_on				# ali so ikonice vedno vidne
 *   -- full_screen_edit			# ali privzeto editira vprašanja v full screen načinu
 *   
 */

 class UserSetting
{
	static private $instance;				# instanca razreda

	static private $userId = null;			# user ID
	static private $inited = false;			# ali je razred inizializiran
	static private $user_setting = array(); # array z uporabniškimi nastavitvami;
	static private $changed = array(); 		# katera polja so bila spremenjena, uporabimo pri vpisovanju v bazo

	protected function __construct() {}

	private function __clone() {}

	/** Poskrbimo za samo eno instanco razreda
	 *
	 */
	static function getInstance()
	{
		if(!self::$instance)
		{
			self::$instance = new UserSetting();
		}
		return self::$instance;
	}

	/** napolnimo podatke
	 *
	 */
	static function Init($_userId = null)
	{
		global $global_user_id;
		if (self::$inited) {
			return true;
		} else {
			if ($_userId == null) { // ce slucajno ni user_id-ja
				$_userId = $global_user_id;
			}
			if ($_userId != null) {
				self::$userId = $_userId;
				$selectSql = "SELECT * FROM srv_user_setting WHERE usr_id = '".self::$userId."'";
				$sqlUserSetting = sisplet_query($selectSql);	
				if ( mysqli_num_rows( $sqlUserSetting ) > 0 ) {
					self::$user_setting = mysqli_fetch_assoc($sqlUserSetting);
					self::$inited=true;
					return true;
				} else {

					// uporabnik se nima svojih nastavitev. preberemo iz sistemskih
					// TODO
										
					//zaenkrat kar direkt nastavimo privzete nastavitve
					self::$user_setting['icons_always_on'] = 0;
					self::$user_setting['full_screen_edit'] = 0;
					
					self::$user_setting['autoActiveSurvey'] = 0;
					self::$user_setting['lockSurvey'] = 1;
					
					self::$user_setting['activeComments'] = 0;
					
					self::$user_setting['showIntro'] = 1;
					self::$user_setting['showConcl'] = 1;
					self::$user_setting['showSurveyTitle'] = 1;	

					self::$inited=true;
					return true;
				}
			}
			else {
				return false;
			}
				
		}
	}

	static function getUserId()				{ return self::$userId; }
	static function getUserSetting($what)	{ 
		return self::$user_setting[$what] ?? null;
	}

	/** @desc ponastavi nastavitev in shrani v bazo
	 *
	 */
	static function setUserSetting($what, $value) {
		if (isset($what) && isset($value)) {
			self::$changed[$what] = $value;
			self::$user_setting[$what] = $value;
		}
		else
			return false;
	}

	/** @desc v bazi popravimo vse spremenjene zapise zapis
	 *
	 */
	static function saveUserSetting()
	{
		if (self::$inited && is_countable(self::$changed) && count(self::$changed) > 0 ) {

			$str_insert_fields = 'usr_id';
			$str_insert_values = "'".self::$userId."'";
			$str_update_text = '';
			$str_update_prefix = '';
			
			foreach (self::$changed as $what => $value) {
				if (isset(self::$user_setting[$what])) {
					$str_insert_fields .=  ', '.$what;
					$str_insert_values .=  ", '".self::$user_setting[$what]."'";
					$str_update_text	.= $str_update_prefix . $what."='".self::$user_setting[$what]."'";
					$str_update_prefix = ', ';

				}	
				unset(self::$changed[$what]);			
			}

			// sestavimo mysql insert string
			$insertString = 'INSERT INTO srv_user_setting ('.$str_insert_fields.') VALUES ('.$str_insert_values.') ON DUPLICATE KEY UPDATE '.$str_update_text;
			self::$changed = array();
		    $insert = sisplet_query($insertString);
	    	return mysqli_affected_rows($GLOBALS['connect_db']);
		} else { // manjkajo podatki za vpis v bazo
			return false;
		}
	}
}
?>