mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-16 23:00:51 +03:00
Merge pull request #351 from MrZaYaC/master
Добавление captcha при входе
This commit is contained in:
commit
2f0913213e
|
@ -69,30 +69,51 @@ class ActionLogin extends Action {
|
|||
* Проверяем есть ли такой юзер по логину
|
||||
*/
|
||||
if ((func_check(getRequest('login'),'mail') and $oUser=$this->User_GetUserByMail(getRequest('login'))) or $oUser=$this->User_GetUserByLogin(getRequest('login'))) {
|
||||
/**
|
||||
* Сверяем хеши паролей и проверяем активен ли юзер
|
||||
*/
|
||||
/**
|
||||
* Выбираем сценарий валидации
|
||||
*/
|
||||
$oUser->_setValidateScenario('signIn');
|
||||
/**
|
||||
* Заполняем поля (данные)
|
||||
*/
|
||||
$oUser->setCaptcha(getRequestStr('captcha'));
|
||||
/**
|
||||
* Запускаем валидацию
|
||||
*/
|
||||
if ($oUser->_Validate()) {
|
||||
/**
|
||||
* Сверяем хеши паролей и проверяем активен ли юзер
|
||||
*/
|
||||
|
||||
if ($oUser->getPassword()==func_encrypt(getRequest('password'))) {
|
||||
if (!$oUser->getActivate()) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('user_not_activated', array('reactivation_path' => Router::GetPath('login') . 'reactivation')));
|
||||
return;
|
||||
}
|
||||
$bRemember=getRequest('remember',false) ? true : false;
|
||||
/**
|
||||
* Авторизуем
|
||||
*/
|
||||
$this->User_Authorization($oUser,$bRemember);
|
||||
/**
|
||||
* Определяем редирект
|
||||
*/
|
||||
$sUrl=Config::Get('module.user.redirect_after_login');
|
||||
if (getRequestStr('return-path')) {
|
||||
$sUrl=getRequestStr('return-path');
|
||||
}
|
||||
$this->Viewer_AssignAjax('sUrlRedirect',$sUrl ? $sUrl : Config::Get('path.root.web'));
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
/**
|
||||
* Получаем ошибки
|
||||
*/
|
||||
$this->Viewer_AssignAjax('aErrors',$oUser->_getValidateErrors());
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($oUser->getPassword()==func_encrypt(getRequest('password'))) {
|
||||
if (!$oUser->getActivate()) {
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('user_not_activated', array('reactivation_path' => Router::GetPath('login') . 'reactivation')));
|
||||
return;
|
||||
}
|
||||
$bRemember=getRequest('remember',false) ? true : false;
|
||||
/**
|
||||
* Авторизуем
|
||||
*/
|
||||
$this->User_Authorization($oUser,$bRemember);
|
||||
/**
|
||||
* Определяем редирект
|
||||
*/
|
||||
$sUrl=Config::Get('module.user.redirect_after_login');
|
||||
if (getRequestStr('return-path')) {
|
||||
$sUrl=getRequestStr('return-path');
|
||||
}
|
||||
$this->Viewer_AssignAjax('sUrlRedirect',$sUrl ? $sUrl : Config::Get('path.root.web'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
$this->Message_AddErrorSingle($this->Lang_Get('user_login_bad'));
|
||||
}
|
||||
|
|
|
@ -32,6 +32,10 @@ class ModuleUser_EntityUser extends Entity {
|
|||
$this->aValidateRules[] = array('captcha', 'captcha', 'on' => array('registration'));
|
||||
}
|
||||
|
||||
if (Config::Get('general.sign.in.captcha')){
|
||||
$this->aValidateRules[] = array('captcha', 'captcha', 'on' => array('signIn'));
|
||||
}
|
||||
|
||||
parent::__construct($aParam);
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ $config['general']['close'] = false; // использовать з
|
|||
$config['general']['rss_editor_mail'] = '___sys.mail.from_email___'; // мыло редактора РСС
|
||||
$config['general']['reg']['invite'] = false; // использовать режим регистрации по приглашению или нет. Если использовать, то регистрация будет доступна ТОЛЬКО по приглашениям!
|
||||
$config['general']['reg']['activation'] = false; // использовать активацию при регистрации или нет
|
||||
$config['general']['login']['captcha'] = false; // использовать каптчу при входе или нет
|
||||
|
||||
/**
|
||||
* Настройки ACL(Access Control List — список контроля доступа)
|
||||
|
|
|
@ -21,7 +21,12 @@
|
|||
sFieldType = 'password'
|
||||
sFieldRules = 'required="true" rangelength="[2,20]"'
|
||||
sFieldLabel = $aLang.user_password}
|
||||
|
||||
{* Каптча *}
|
||||
{if $oConfig->GetValue('general.reg.login.captcha')}
|
||||
{include file='forms/form.field.captcha.tpl'
|
||||
sFieldName = 'captcha'
|
||||
sFieldLabel = $aLang.registration_captcha}
|
||||
{/if}
|
||||
{* Запомнить *}
|
||||
{include file='forms/form.field.checkbox.tpl'
|
||||
sFieldName='remember'
|
||||
|
|
|
@ -17,6 +17,20 @@
|
|||
|
||||
<small class="validate-error-hide validate-error-login"></small>
|
||||
|
||||
{*
|
||||
* Каптча
|
||||
*
|
||||
* @scripts <framework>/js/livestreet/captcha.js
|
||||
*}
|
||||
|
||||
{if $oConfig->GetValue('general.reg.login.captcha')}
|
||||
{hookb run="registration_captcha" isPopup=$isModal}
|
||||
<p class="form-login-field-captcha"><label for="js-form-login-captcha">{$aLang.registration_captcha}</label>
|
||||
<span {if ! $isModal}style="background-image: url({cfg name='path.framework.libs_vendor.web'}/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId});"{/if} class="form-auth-captcha js-form-auth-captcha"></span>
|
||||
<input type="text" name="captcha" value="" maxlength="3" id="js-form-login-captcha" class="width-100 js-ajax-validate js-form-login-captcha" />
|
||||
<small class="validate-error-hide validate-error-field-captcha"></small></p>
|
||||
{/hookb}
|
||||
{/if}
|
||||
{* Запомнить *}
|
||||
<p><label class="remember-label"><input type="checkbox" name="remember" checked> {$aLang.user_login_remember}</label></p>
|
||||
|
||||
|
|
|
@ -112,8 +112,9 @@ return array(
|
|||
'general_params_close'=> 'Use "closed mode" for your site',
|
||||
'general_params_active'=> 'Use registration activation',
|
||||
'general_params_invite'=> 'Use registration by invitation',
|
||||
|
||||
'language_params'=> 'Language settings',
|
||||
'general_params_login_captcha'=> 'Use captcha on sign in',
|
||||
|
||||
'language_params'=> 'Language settings',
|
||||
'language_params_current'=> 'Current language',
|
||||
'language_params_default'=> 'Default language',
|
||||
|
||||
|
|
|
@ -112,7 +112,8 @@ return array(
|
|||
'general_params_close'=> 'Использовать закрытый режим работы сайта',
|
||||
'general_params_active'=> 'Использовать активацию при регистрации',
|
||||
'general_params_invite'=> 'Использовать режим регистрации по приглашению',
|
||||
|
||||
'general_params_login_captcha'=> 'Использовать captcha при входе',
|
||||
|
||||
'language_params'=> 'Языковые настройки',
|
||||
'language_params_current'=> 'Текущий язык',
|
||||
'language_params_default'=> 'Язык, который будет использоваться по умолчанию',
|
||||
|
|
|
@ -118,106 +118,106 @@ class Install {
|
|||
* @var array
|
||||
*/
|
||||
protected $aValidEnv = array(
|
||||
'safe_mode' => array ('0','off',''),
|
||||
'register_globals' => array ('0','off',''),
|
||||
'allow_url_fopen' => array ('1','on'),
|
||||
'UTF8_support' => '1',
|
||||
'http_input' => array ('','pass'),
|
||||
'http_output' => array ('0','pass'),
|
||||
'func_overload' => array ('0','4', 'no overload'),
|
||||
);
|
||||
/**
|
||||
* Директория, в которой хранятся конфиг-файлы
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sConfigDir="";
|
||||
/**
|
||||
* Директория хранения скинов сайта
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sSkinDir="";
|
||||
/**
|
||||
* Директория хранения языковых файлов движка
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangDir="";
|
||||
/**
|
||||
* Текущий язык инсталлятора
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangCurrent = '';
|
||||
/**
|
||||
* Язык инсталлятора, который будет использован по умолчанию
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangDefault = 'ru';
|
||||
/**
|
||||
* Языковые текстовки
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aLang = array();
|
||||
/**
|
||||
* Инициализация основных настроек
|
||||
*
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->sConfigDir = dirname(__FILE__).'/../application/config';
|
||||
$this->sSkinDir = dirname(__FILE__).'/../application/frontend/skin';
|
||||
$this->sLangDir = dirname(__FILE__).'/../application/frontend/i18n';
|
||||
/**
|
||||
* Загружаем языковые файлы
|
||||
*/
|
||||
$this->LoadLanguageFile($this->sLangDefault);
|
||||
if($sLang=$this->GetRequest('lang')) {
|
||||
$this->sLangCurrent = $sLang;
|
||||
if($this->sLangCurrent!=$this->sLangDefault) $this->LoadLanguageFile($this->sLangCurrent);
|
||||
}
|
||||
/**
|
||||
* Передаем языковые тикеты во вьювер
|
||||
*/
|
||||
foreach ($this->aLang as $sKey=>$sItem) {
|
||||
$this->Assign("lang_{$sKey}",$sItem);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Подгружает указанный языковой файл и записывает поверх существующего языкового массива
|
||||
*
|
||||
* @access protected
|
||||
* @param string $sLang
|
||||
*/
|
||||
protected function LoadLanguageFile($sLang) {
|
||||
$sFilePath=$this->sLangInstallDir.'/'.$sLang.'.php';
|
||||
'safe_mode' => array ('0','off',''),
|
||||
'register_globals' => array ('0','off',''),
|
||||
'allow_url_fopen' => array ('1','on'),
|
||||
'UTF8_support' => '1',
|
||||
'http_input' => array ('','pass'),
|
||||
'http_output' => array ('0','pass'),
|
||||
'func_overload' => array ('0','4', 'no overload'),
|
||||
);
|
||||
/**
|
||||
* Директория, в которой хранятся конфиг-файлы
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sConfigDir="";
|
||||
/**
|
||||
* Директория хранения скинов сайта
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sSkinDir="";
|
||||
/**
|
||||
* Директория хранения языковых файлов движка
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangDir="";
|
||||
/**
|
||||
* Текущий язык инсталлятора
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangCurrent = '';
|
||||
/**
|
||||
* Язык инсталлятора, который будет использован по умолчанию
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sLangDefault = 'ru';
|
||||
/**
|
||||
* Языковые текстовки
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aLang = array();
|
||||
/**
|
||||
* Инициализация основных настроек
|
||||
*
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->sConfigDir = dirname(__FILE__).'/../application/config';
|
||||
$this->sSkinDir = dirname(__FILE__).'/../application/frontend/skin';
|
||||
$this->sLangDir = dirname(__FILE__).'/../application/frontend/i18n';
|
||||
/**
|
||||
* Загружаем языковые файлы
|
||||
*/
|
||||
$this->LoadLanguageFile($this->sLangDefault);
|
||||
if($sLang=$this->GetRequest('lang')) {
|
||||
$this->sLangCurrent = $sLang;
|
||||
if($this->sLangCurrent!=$this->sLangDefault) $this->LoadLanguageFile($this->sLangCurrent);
|
||||
}
|
||||
/**
|
||||
* Передаем языковые тикеты во вьювер
|
||||
*/
|
||||
foreach ($this->aLang as $sKey=>$sItem) {
|
||||
$this->Assign("lang_{$sKey}",$sItem);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Подгружает указанный языковой файл и записывает поверх существующего языкового массива
|
||||
*
|
||||
* @access protected
|
||||
* @param string $sLang
|
||||
*/
|
||||
protected function LoadLanguageFile($sLang) {
|
||||
$sFilePath=$this->sLangInstallDir.'/'.$sLang.'.php';
|
||||
|
||||
if(!file_exists($sFilePath)) return false;
|
||||
if(!file_exists($sFilePath)) return false;
|
||||
|
||||
$aLang = include($sFilePath);
|
||||
$this->aLang = array_merge($this->aLang,$aLang);
|
||||
}
|
||||
/**
|
||||
* Возвращает языковую текстовку
|
||||
*
|
||||
* @param string $sKey
|
||||
* @param array $aParams
|
||||
* @return string
|
||||
*/
|
||||
protected function Lang($sKey,$aParams=array()) {
|
||||
if(!array_key_exists($sKey,$this->aLang))
|
||||
return 'Unknown language key';
|
||||
$aLang = include($sFilePath);
|
||||
$this->aLang = array_merge($this->aLang,$aLang);
|
||||
}
|
||||
/**
|
||||
* Возвращает языковую текстовку
|
||||
*
|
||||
* @param string $sKey
|
||||
* @param array $aParams
|
||||
* @return string
|
||||
*/
|
||||
protected function Lang($sKey,$aParams=array()) {
|
||||
if(!array_key_exists($sKey,$this->aLang))
|
||||
return 'Unknown language key';
|
||||
|
||||
$sValue=$this->aLang[$sKey];
|
||||
if(count($aParams)==0) return $sValue;
|
||||
$sValue=$this->aLang[$sKey];
|
||||
if(count($aParams)==0) return $sValue;
|
||||
|
||||
foreach ($aParams as $k=>$v) {
|
||||
$sValue=str_replace("%%{$k}%%",$v,$sValue);
|
||||
}
|
||||
return $sValue;
|
||||
}
|
||||
foreach ($aParams as $k=>$v) {
|
||||
$sValue=str_replace("%%{$k}%%",$v,$sValue);
|
||||
}
|
||||
return $sValue;
|
||||
}
|
||||
/**
|
||||
* Вытягивает переменную из сессии
|
||||
*
|
||||
|
@ -350,7 +350,7 @@ class Install {
|
|||
|
||||
$sConfig = file_get_contents($sPath);
|
||||
$sName = '$config[\''.implode('\'][\'', explode('.',$sName)).'\']';
|
||||
$sVar = $this->ConvertToString($sVar);
|
||||
$sVar = $this->ConvertToString($sVar);
|
||||
|
||||
/**
|
||||
* Если переменная уже определена в конфиге,
|
||||
|
@ -514,15 +514,15 @@ class Install {
|
|||
* Получаем данные из сессии (если они туда были вложены на предыдущих итерациях шага)
|
||||
*/
|
||||
$this->Assign('install_db_server', 'localhost', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_port', '3306', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_name', 'social', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_user', 'root', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_password', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_create_check', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_port', '3306', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_name', 'social', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_user', 'root', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_password', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_create_check', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_prefix', 'prefix_', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine', 'InnoDB', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine_innodb', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine_myisam', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine', 'InnoDB', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine_innodb', '', self::GET_VAR_FROM_SESSION);
|
||||
$this->Assign('install_db_engine_myisam', '', self::GET_VAR_FROM_SESSION);
|
||||
|
||||
$this->Layout('steps/db.tpl');
|
||||
return true;
|
||||
|
@ -531,9 +531,9 @@ class Install {
|
|||
* Если переданны данные формы, проверяем их на валидность
|
||||
*/
|
||||
$aParams['server'] = $this->GetRequest('install_db_server','');
|
||||
$aParams['port'] = $this->GetRequest('install_db_port','');
|
||||
$aParams['name'] = $this->GetRequest('install_db_name','');
|
||||
$aParams['user'] = $this->GetRequest('install_db_user','');
|
||||
$aParams['port'] = $this->GetRequest('install_db_port','');
|
||||
$aParams['name'] = $this->GetRequest('install_db_name','');
|
||||
$aParams['user'] = $this->GetRequest('install_db_user','');
|
||||
$aParams['password'] = $this->GetRequest('install_db_password','');
|
||||
$aParams['create'] = $this->GetRequest('install_db_create',0);
|
||||
$aParams['convert'] = $this->GetRequest('install_db_convert',0);
|
||||
|
@ -580,10 +580,10 @@ class Install {
|
|||
@chmod($sLocalConfigFile, 0777);
|
||||
|
||||
$this->SaveConfig('db.params.host', $aParams['server'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.port', $aParams['port'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.user', $aParams['user'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.port', $aParams['port'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.user', $aParams['user'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.pass', $aParams['password'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.dbname',$aParams['name'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.params.dbname',$aParams['name'], $sLocalConfigFile);
|
||||
$this->SaveConfig('db.table.prefix', $aParams['prefix'], $sLocalConfigFile);
|
||||
|
||||
if($aParams['engine']=='InnoDB') {
|
||||
|
@ -761,20 +761,21 @@ class Install {
|
|||
/**
|
||||
* Получаем значения запрашиваемых данных либо устанавливаем принятые по умолчанию
|
||||
*/
|
||||
$aParams['install_view_name'] = $this->GetRequest('install_view_name','Your Site',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_view_name'] = $this->GetRequest('install_view_name','Your Site',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_view_description']= $this->GetRequest('install_view_description','Description your site',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_view_keywords'] = $this->GetRequest('install_view_keywords','site, google, internet',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_view_skin'] = $this->GetRequest('install_view_skin','synio',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_view_skin'] = $this->GetRequest('install_view_skin','synio',self::GET_VAR_FROM_SESSION);
|
||||
|
||||
$aParams['install_mail_sender'] = $this->GetRequest('install_mail_sender',$this->GetSessionVar('install_admin_mail','rus.engine@gmail.com'),self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_mail_name'] = $this->GetRequest('install_mail_name','Почтовик Your Site',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_mail_sender'] = $this->GetRequest('install_mail_sender',$this->GetSessionVar('install_admin_mail','rus.engine@gmail.com'),self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_mail_name'] = $this->GetRequest('install_mail_name','Почтовик Your Site',self::GET_VAR_FROM_SESSION);
|
||||
|
||||
$aParams['install_general_close'] = (bool)$this->GetRequest('install_general_close',false,self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_general_invite'] = (bool)$this->GetRequest('install_general_invite',false,self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_general_active'] = (bool)$this->GetRequest('install_general_active',false,self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_general_sign_in_captcha'] = (bool)$this->GetRequest('install_general_sign_in_captcha',false,self::GET_VAR_FROM_SESSION);
|
||||
|
||||
$aParams['install_lang_current'] = $this->GetRequest('install_lang_current','ru',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_lang_default'] = $this->GetRequest('install_lang_default','ru',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_lang_current'] = $this->GetRequest('install_lang_current','ru',self::GET_VAR_FROM_SESSION);
|
||||
$aParams['install_lang_default'] = $this->GetRequest('install_lang_default','ru',self::GET_VAR_FROM_SESSION);
|
||||
|
||||
/**
|
||||
* Передаем параметры во Viewer
|
||||
|
@ -906,7 +907,11 @@ class Install {
|
|||
*/
|
||||
if($this->SaveConfig('general.reg.invite',$aParams['install_general_invite'],$sLocalConfigFile))
|
||||
$this->SetSessionVar('install_general_invite',$aParams['install_general_invite']);
|
||||
|
||||
/**
|
||||
* Использоватьт captcha при входе
|
||||
*/
|
||||
if($this->SaveConfig('general.reg.login.captcha',$aParams['install_general_login_captcha'],$sLocalConfigFile))
|
||||
$this->SetSessionVar('install_general_login_captcha',$aParams['install_general_login_captcha']);
|
||||
/**
|
||||
* Текущий язык
|
||||
*/
|
||||
|
@ -981,26 +986,26 @@ class Install {
|
|||
$this->Assign('validate_utf8', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
}
|
||||
|
||||
if (@extension_loaded('mbstring')){
|
||||
$this->Assign('validate_mbstring', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
} else {
|
||||
$bOk = false;
|
||||
$this->Assign('validate_mbstring', '<span style="color:red;">'.$this->Lang('no').'</span>');
|
||||
}
|
||||
if (@extension_loaded('mbstring')){
|
||||
$this->Assign('validate_mbstring', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
} else {
|
||||
$bOk = false;
|
||||
$this->Assign('validate_mbstring', '<span style="color:red;">'.$this->Lang('no').'</span>');
|
||||
}
|
||||
|
||||
if (@extension_loaded('SimpleXML')){
|
||||
$this->Assign('validate_simplexml', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
} else {
|
||||
if (@extension_loaded('SimpleXML')){
|
||||
$this->Assign('validate_simplexml', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
} else {
|
||||
$bOk = false;
|
||||
$this->Assign('validate_simplexml', '<span style="color:red;">'.$this->Lang('no').'</span>');
|
||||
}
|
||||
}
|
||||
|
||||
$sLocalConfigPath = $this->sConfigDir.'/config.local.php';
|
||||
if(!file_exists($sLocalConfigPath) or !is_writeable($sLocalConfigPath)) {
|
||||
// пытаемся создать файл локального конфига
|
||||
@copy($this->sConfigDir.'/config.local.php.dist',$sLocalConfigPath);
|
||||
}
|
||||
if(!file_exists($sLocalConfigPath) or !is_writeable($sLocalConfigPath)) {
|
||||
$sLocalConfigPath = $this->sConfigDir.'/config.local.php';
|
||||
if(!file_exists($sLocalConfigPath) or !is_writeable($sLocalConfigPath)) {
|
||||
// пытаемся создать файл локального конфига
|
||||
@copy($this->sConfigDir.'/config.local.php.dist',$sLocalConfigPath);
|
||||
}
|
||||
if(!file_exists($sLocalConfigPath) or !is_writeable($sLocalConfigPath)) {
|
||||
$bOk = false;
|
||||
$this->Assign('validate_local_config', '<span style="color:red;">'.$this->Lang('no').'</span>');
|
||||
} else {
|
||||
|
@ -1043,7 +1048,7 @@ class Install {
|
|||
$this->Assign('validate_local_plugins', '<span style="color:green;">'.$this->Lang('yes').'</span>');
|
||||
}
|
||||
|
||||
return $bOk;
|
||||
return $bOk;
|
||||
}
|
||||
/**
|
||||
* Проверяет соединение с базой данных
|
||||
|
@ -1109,7 +1114,7 @@ class Install {
|
|||
if(!$aResult){
|
||||
return array('result'=>false,'errors'=>array($this->Lang('error_db_no_data')));
|
||||
}
|
||||
while($aRow = mysql_fetch_array($aResult, MYSQL_NUM)){
|
||||
while($aRow = mysql_fetch_array($aResult, MYSQL_NUM)){
|
||||
$aDbTables[] = $aRow[0];
|
||||
}
|
||||
/**
|
||||
|
@ -1156,7 +1161,7 @@ class Install {
|
|||
if(!$aResult){
|
||||
return array('result'=>false,'errors'=>array($this->Lang('error_db_no_data')));
|
||||
}
|
||||
while($aRow = mysql_fetch_array($aResult, MYSQL_NUM)){
|
||||
while($aRow = mysql_fetch_array($aResult, MYSQL_NUM)){
|
||||
$aDbTables[] = $aRow[0];
|
||||
}
|
||||
/**
|
||||
|
@ -1209,35 +1214,35 @@ class Install {
|
|||
$sTable1=$aParams['prefix'].'topic';
|
||||
$sTable2=$aParams['prefix'].'favourite';
|
||||
$sQuery = "
|
||||
UPDATE {$sTable1} t
|
||||
SET t.topic_count_favourite = (
|
||||
SELECT count(f.user_id)
|
||||
FROM {$sTable2} f
|
||||
WHERE
|
||||
f.target_id = t.topic_id
|
||||
AND
|
||||
f.target_publish = 1
|
||||
AND
|
||||
f.target_type = 'topic'
|
||||
)
|
||||
";
|
||||
UPDATE {$sTable1} t
|
||||
SET t.topic_count_favourite = (
|
||||
SELECT count(f.user_id)
|
||||
FROM {$sTable2} f
|
||||
WHERE
|
||||
f.target_id = t.topic_id
|
||||
AND
|
||||
f.target_publish = 1
|
||||
AND
|
||||
f.target_type = 'topic'
|
||||
)
|
||||
";
|
||||
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
|
||||
/**
|
||||
* Пересчет количества избранного для комментов
|
||||
*/
|
||||
$sTable1=$aParams['prefix'].'comment';
|
||||
$sQuery = "
|
||||
UPDATE {$sTable1} c
|
||||
SET c.comment_count_favourite = (
|
||||
SELECT count(f.user_id)
|
||||
FROM {$sTable2} f
|
||||
WHERE
|
||||
f.target_id = c.comment_id
|
||||
AND
|
||||
UPDATE {$sTable1} c
|
||||
SET c.comment_count_favourite = (
|
||||
SELECT count(f.user_id)
|
||||
FROM {$sTable2} f
|
||||
WHERE
|
||||
f.target_id = c.comment_id
|
||||
AND
|
||||
f.target_publish = 1
|
||||
AND
|
||||
f.target_type = 'comment'
|
||||
)
|
||||
)
|
||||
";
|
||||
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
|
||||
/**
|
||||
|
@ -1246,36 +1251,36 @@ class Install {
|
|||
$sTable1=$aParams['prefix'].'topic';
|
||||
$sTable2=$aParams['prefix'].'vote';
|
||||
$sQuery = "
|
||||
UPDATE {$sTable1} t
|
||||
SET t.topic_count_vote_up = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = 1
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
), t.topic_count_vote_down = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = -1
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
), t.topic_count_vote_abstain = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = 0
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
)
|
||||
";
|
||||
UPDATE {$sTable1} t
|
||||
SET t.topic_count_vote_up = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = 1
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
), t.topic_count_vote_down = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = -1
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
), t.topic_count_vote_abstain = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} v
|
||||
WHERE
|
||||
v.target_id = t.topic_id
|
||||
AND
|
||||
v.vote_direction = 0
|
||||
AND
|
||||
v.target_type = 'topic'
|
||||
)
|
||||
";
|
||||
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
|
||||
/**
|
||||
* Пересчет количества топиков в блогах
|
||||
|
@ -1283,16 +1288,16 @@ class Install {
|
|||
$sTable1=$aParams['prefix'].'blog';
|
||||
$sTable2=$aParams['prefix'].'topic';
|
||||
$sQuery = "
|
||||
UPDATE {$sTable1} b
|
||||
SET b.blog_count_topic = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} t
|
||||
WHERE
|
||||
t.blog_id = b.blog_id
|
||||
AND
|
||||
t.topic_publish = 1
|
||||
)
|
||||
";
|
||||
UPDATE {$sTable1} b
|
||||
SET b.blog_count_topic = (
|
||||
SELECT count(*)
|
||||
FROM {$sTable2} t
|
||||
WHERE
|
||||
t.blog_id = b.blog_id
|
||||
AND
|
||||
t.topic_publish = 1
|
||||
)
|
||||
";
|
||||
if(!mysql_query($sQuery)) $aErrors[] = mysql_error();
|
||||
/**
|
||||
* Проставляем последнего пользователя и последний комментарий во всех личных сообщениях
|
||||
|
@ -1806,12 +1811,12 @@ class Install {
|
|||
* @return bool
|
||||
*/
|
||||
protected function UpdateDBUser($sLogin,$sPassword,$sMail,$sPrefix="prefix_") {
|
||||
$sQuery = "
|
||||
UPDATE `{$sPrefix}user`
|
||||
SET
|
||||
`user_login` = '{$sLogin}',
|
||||
`user_mail` = '{$sMail}',
|
||||
`user_password` = md5('{$sPassword}')
|
||||
$sQuery = "
|
||||
UPDATE `{$sPrefix}user`
|
||||
SET
|
||||
`user_login` = '{$sLogin}',
|
||||
`user_mail` = '{$sMail}',
|
||||
`user_password` = md5('{$sPassword}')
|
||||
WHERE `user_id` = 1";
|
||||
|
||||
return mysql_query($sQuery);
|
||||
|
@ -1824,10 +1829,10 @@ class Install {
|
|||
* @return bool
|
||||
*/
|
||||
protected function UpdateUserBlog($sBlogName,$sPrefix="prefix_") {
|
||||
$sQuery = "
|
||||
UPDATE `{$sPrefix}blog`
|
||||
SET
|
||||
`blog_title` = '".mysql_real_escape_string($sBlogName)."'
|
||||
$sQuery = "
|
||||
UPDATE `{$sPrefix}blog`
|
||||
SET
|
||||
`blog_title` = '".mysql_real_escape_string($sBlogName)."'
|
||||
WHERE `blog_id` = 1";
|
||||
|
||||
return mysql_query($sQuery);
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
<label><input type="checkbox" class="input-checkbox" name="install_general_close" value="1" ___INSTALL_GENERAL_CLOSE_CHECK___ /> ___LANG_GENERAL_PARAMS_CLOSE___</label>
|
||||
<label><input type="checkbox" class="input-checkbox" name="install_general_active" value="1" ___INSTALL_GENERAL_ACTIVE_CHECK___ /> ___LANG_GENERAL_PARAMS_ACTIVE___</label>
|
||||
<label><input type="checkbox" class="input-checkbox" name="install_general_invite" value="1" ___INSTALL_GENERAL_INVITE_CHECK___ /> ___LANG_GENERAL_PARAMS_INVITE___</label>
|
||||
<label><input type="checkbox" class="input-checkbox" name="install_general_login_captcha" value="1" ___INSTALL_GENERAL_LOGIN_CAPTCHA___ /> ___LANG_GENERAL_PARAMS_LOGIN_CAPTCHA___</label>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
|
|
Loading…
Reference in a new issue