📄 defaultcms.php
字号:
<?php
//The DefaultCMS implementation behaves as usual content management system - i.e. checks provided login/password against system database and uses user roles predefined in it.
class DefaultCMS {
var $autocreateUsers = false; //change this to false to disabe nonexisting users auto creation
var $userid = null;
var $loginStmt;
var $getUserStmt;
var $addUserStmt;
var $getUsersStmt;
function DefaultCMS()
{
$this->loginStmt = new Statement("SELECT * FROM {$GLOBALS['fc_config']['db']['pref']}users WHERE login=? LIMIT 1");
$this->getUserStmt = new Statement("SELECT * FROM {$GLOBALS['fc_config']['db']['pref']}users WHERE id=? LIMIT 1");
$this->addUserStmt = new Statement("INSERT INTO {$GLOBALS['fc_config']['db']['pref']}users (login, password, roles) VALUES(?, ?, ?)");
$this->getUsersStmt = new Statement("SELECT * FROM {$GLOBALS['fc_config']['db']['pref']}users ORDER BY login");
$this->delUserStmt = new Statement("DELETE FROM {$GLOBALS['fc_config']['db']['pref']}users WHERE login=?");
}
function isLoggedIn() {
return $this->userid;
}
function login($login, $password) {
$this->userid = null;
$login = utf8_encode($login);// umlavta fix
if($login && $password)
{
$users_rs = $this->getUsers();
//Try to find user using provided login
if(($rs = $this->loginStmt->process($login)) && ($rec = $rs->next())) {
if($rec['password'] == $password || $rec['password'] == md5($password)) $this->userid = $rec['id'];
} else {
if(($rec = $users_rs->next()) != null && $password == $GLOBALS['fc_config']['adminPassword'])
{
}
//If not - autocreate user with such login and password
else if($this->autocreateUsers) {
$roles = ($password == $GLOBALS['fc_config']['adminPassword'])?ROLE_ADMIN:($GLOBALS['fc_config']['liveSupportMode']?ROLE_CUSTOMER:ROLE_USER);
$this->userid = $this->addUser($login, $password, $roles);
}
}
}
return $this->userid;
}
function logout(){
$this->userid = null;
}
function getUser($userid) {
if($userid) {
$rs = $this->getUserStmt->process($userid);
return $rs->next();
} else {
return null;
}
}
function getUsers() {
return $this->getUsersStmt->process();
}
function getUserProfile($userid) {
if($userid == SPY_USERID) return null;
return "profile.php?userid=$userid";
}
function userInRole($userid, $role) {
if($user = $this->getUser($userid)) {
return ($user['roles'] & $role) != 0;
}
return false;
}
function getGender($userid) {
// 'M' for Male, 'F' for Female, NULL for undefined
$pr = $this->getUser($userid);
$profile = unserialize($pr['profile']);
$gender = $profile['gender'];
if(!isset($gender)) $gender = $profile['t43'];
$ret = strtoupper(substr($gender, 0, 1));
return ($ret != 'M' && $ret != 'F')? NULL : $ret;
}
function addUser($login, $password, $roles){
$user = $this->loginStmt->process($login);
if(($rec = $user->next()) != null) return $rec['id'];
if( $GLOBALS['fc_config']['encryptPass'] > 0 ) $password = md5($password);//encrypt password
return $this->addUserStmt->process($login, $password, $roles);
}
function deleteUser($login){
$this->delUserStmt->process($login);
}
}
$GLOBALS['fc_config']['cms'] = new DefaultCMS();
//clear 'if moderator' message
foreach($GLOBALS['fc_config']['languages'] as $k => $v) {
$GLOBALS['fc_config']['languages'][$k]['dialog']['login']['moderator'] = '';
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -