⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preferences.php

📁 一款基于PHP的网络日记程序。WikyBlog支持:多用户的 BLOG
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?phpdefined('WikyBlog') or die("Not an entry point...");if( !isOwner(true,true) ) return false; //	personal preferences, no need to let others change themglobal $page,$pageOwner,$dbObject,$lang;wbLang::getFile('specPreferences');$page->displayTitle = $lang['user_preferences']; //'User Preferences';$dbObject->links[$lang['user_preferences']] = '/Special/'.$pageOwner['username'].'/Preferences';$dbObject->links['?'] = 'User_Preferences';						//New						class specPreferences{		var $emptyPrefs = array(	/*user*/								'email'=>null, 'timezone'=>null, 'lang'=>null,								'sig'=>null,								/*javascript*/								'ajax'=>null,'nTabs'=>null,'nWin'=>null,								/*template*/								'template'=>null, 'pTemplate'=>null,								/*account display*/								'homeTitle'=>null,								'quickComment'=>null,'share'=>null,								/*blog*/								'isBlog'=>null,'blogT'=>null,								'sBlog'=>null, 'uServices'=>null,								/*editing*/								'textareaY'=>null,'maxHistory'=>null,'fEdits'=>null,								);									var $prefTypes = array(		/*user*/								'email'=>'string','timezone'=>'string', 'lang'=>'string',								'sig'=>'string',								/*javascript*/								'ajax'=>'bool2','nTabs'=>'int','nWin'=>'bool',								/*template*/								'template'=>'string','pTemplate'=>'string',								/*account display*/								'homeTitle'=>'string', 								'quickComment'=>'bool', 'share'=>'bool',								/*Blog*/								'isBlog'=>'bool','blogT'=>'blogT',								'sBlog'=>'bool','uServices'=>'string',								/*editing*/								'textareaY'=>'int','maxHistory'=>'int','fEdits'=>'fEdits',								);									var $values = array();																				function specPreferences(){		global $lang,$dbInfo,$dbObject;				$this->values['bool']['On'] = $lang['on'];		$this->values['bool']['Off'] = $lang['off'];				$this->values['bool2']['On'] = $lang['on'];		$this->values['bool2']['Partial'] = $lang['partial'];		$this->values['bool2']['Off'] = $lang['off'];		$this->values['fEdits']['2'] = $lang['workgroup'];		$this->values['fEdits']['1'] = $lang['registered'];		$this->values['fEdits']['0'] = $lang['anonymous'];		$this->values['fEdits']['-2'] = $lang['none'];				// blog types		$tempObject=null;		$this->values['blogT'] = array();		foreach($dbInfo as $space => $info){			if( !isset($info['dbTable']) ){				continue;			}			$class = wbData::getClass($space,true);			if( !$class ){				continue;			}			$methods = get_class_methods($class); //lower-cased in php4, normal case as of php5			$methods = array_flip($methods);			if( isset($methods['abbrevoutput']) || isset($methods['abbrevOutput']) ){				if( isset($lang[$space]) ){					$this->values['blogT'][$space] = $lang[$space];				}else{					$this->values['blogT'][$space] = $space;				}			}		}				switch($dbObject->title){							case 'setpreference':				$this->setPref($_GET);			break;						default:				$this->prefPage();			break;		}					}	function prefPage(){		global $page,$lang;						switch( $page->userCmd ){			case 'save preferences':				$this->save($_POST);			break;			default:				$this->displayForm();			break;		}	}	function save($array){		global $pageOwner,$page,$lang,$dbObject;		$invalid = array();								////	check timezone			if( !empty($array['timezone']) ){				$num = sscanf($array['timezone'], "%d:%d", $hr,$mim);				if($num !== 2){					$invalid['timezone'] = true;				}			}				/////	check template			if( isset($array['pTemplate']) && ($array['pTemplate'] != '')){				$array['template'] = '';							}elseif( isset($array['template']) ){				$array['template'] = toStorage($array['template']);				$temp = whichTemplate($array,false);//will be warned with the form display				if( !is_array($temp) ){					$invalid['template'] = false; //idea is that false will prevent another message				}			}					/////	Update Services			if( isset($array['sBlog']) && ($array['sBlog'] == 'Off') ){				unset($array['uServices']);			}						if( isset($array['uServices']) ){				$goodUrls = true;				$urls = stringToArray($array['uServices']);				foreach($urls as $url){					$url = trim($url);					if( empty($url) ){						continue;					}					$temp = parse_url($url);					if( empty($temp['host']) || empty($temp['scheme']) ){						$goodUrls = false;					}				}				if( !$goodUrls ){					message('BAD_UPDATE_SERVICES');				}			}								////	Max History			global $maxHistory;			if( !empty($array['maxHistory']) ){				$array['maxHistory'] = (int)$array['maxHistory'];				if( isset($maxHistory) && $array['maxHistory'] > $maxHistory){					$array['maxHistory'] = $maxHistory;				}			}					////	lang			global $userLanguage;			if( isset($array['lang'] )){				$possLangs = $this->getPossible('lang');				if( !isset($possLangs[$array['lang']]) ){					$array['lang'] = $userLanguage;				}			}					//// check against types			foreach($array as $key => $value){				if( !array_key_exists($key,$this->prefTypes) ){					unset($array[$key]);					continue;				}				$type = $this->prefTypes[$key];								//this takes care of bool, bool2				if( isset($this->values[$type]) ){					if( !isset($this->values[$type][$value]) ){						unset($array[$key]);					}					continue;				}								switch($type){					case 'int':						$array[$key] = (int)$array[$key];					break;					case 'string':						$array[$key] = htmlspecialchars($array[$key]);					break;				}			}					////	Valid?			if( count($invalid) > 0){				message('INVALID_PREFS');				//message(showArray($invalid)); //after this..				$this->displayForm();				return false;			}								//		//	Which Have Changed?		//						foreach($array as $key => $value){				if( array_key_exists($key,$this->emptyPrefs) ){					if( empty($_SESSION[$key]) && empty($array[$key]) ){						//both empty, no change					}else{						if( !isset($_SESSION[$key]) ){							$old[$key] = '';						}elseif( $_SESSION[$key] !== $array[$key] ){							$old[$key] = $_SESSION[$key];						}					}										if( empty($array[$key]) && ($value !== '0') ){						unset($_SESSION[$key]);					}else{						$_SESSION[$key] = $array[$key];					}				}			}			if( isset($_SESSION['template']) ){				unset($_SESSION['pTemplate']);			}						$array = $array + $this->emptyPrefs;	//emptyPrefs won't overwrite values, but will set keys										if( empty($old) ){				message('PREFERENCES_UNCHANGED');			}else{					//		//	Preferences Were Changed		//		//		some values need to be changed in the user's browser..					$evalWhich = array('ajax'=>true,'nTabs'=>true,'nWin'=>true);			$evalSet = array();							$_SESSION['wasModified'] = true;					echo $lang['PREFS_CHANGED'];						echo '<table class="tableRows" cellspacing="0">';			echo '<tr><th>'.$lang['preference'].'</th><th>'.$lang['old_value'].'</th><th>'.$lang['new_value'].'</th>';			$i = 0;			$classes[] = ' class="tableRowEven" ';			$classes[] = ' class="tableRowOdd" ';			foreach($old as $key => $oldValue){				$class = $classes[($i%2)];				echo '<tr'.$class.'><td>';								if( isset($lang[$key]) && is_string($lang[$key]) ){					echo $lang[$key];				}else{					echo toDisplay($key);				}								echo '</td><td>';								if( isset($lang[$oldValue]) ){					echo $lang[$oldValue];				}else{					echo $oldValue;				}								echo '</td><td>';								if(isset($lang[$array[$key]]) && is_string($lang[$array[$key]]) ){					echo $lang[$array[$key]];				}else{					echo $array[$key];				}								echo '</td></tr>';								if( isset($evalWhich[$key]) ){					$evalSet[$key] = $array[$key];				}								$i++;			}						echo '<tr><td>';			echo wbLinks::local('/Special/'.$pageOwner['username'].'/Preferences?again=true',$lang['user_preferences']);			echo '</td></tr>';			echo '</table>';									if( $page->ajaxRequest && count($evalSet) > 0){				$addContent = new content();				$addContent->aa = 'eval';				$addContent->bb = '';				foreach($evalSet as $key=>$value){					$addContent->bb .= $key.'="'.$value.'";';				}				$page->contentClasses[] = $addContent;			}										}	}		///	Do not use checkboxes!	function displayForm(){		global $page,$thisServer,$dbObject,$defaultUser,$pageOwner,$lang,$jsNum,$wbWritable,$wbNow;			$page->scripts[] = '/include/'.$jsNum.'/preferences.js';		$page->formAction = '/Special/'.$pageOwner['username'].'/Preferences';		$_SESSION = $_SESSION + $this->emptyPrefs;	//emptyPrefs won't overwrite values, but will set keys				if( isset($_SESSION['pTemplate']) && ($_SESSION['pTemplate'] != '')){			$template = '';		}else{			$template = whichTemplate($_SESSION,true);		}				//!!version 1.3.1		if( empty($_SESSION['sBlog']) ){			$_SESSION['sBlog'] = 'Off';		}		//!!version 1.3.5		if( empty($_SESSION['nWin']) ){			$_SESSION['nWin'] = 'Off';		}		if( empty($_SESSION['sig']) ){			$_SESSION['sig'] = '--[[/'.$_SESSION['username'].'/Home|'.$_SESSION['username'].']]';		}				//Go through dbFromDate function to get times		//yyyy/mm/dd hh:mm:ss		$adjusted = dbFromDate($wbNow,'unix');	 	$serverTime = date("H:i");	 	$adjustedTime = date("H:i",$adjusted);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -