Ночная регистрация

Автор iceley, 31 января 2010, 21:14:55

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

iceley

SMF 2.0 RC2, UTF-8, дефолтная тема.

Здравствуйте, можно ли реализовать ночную регистрацию и как это сделать? Подобных модов не нашёл. :-[

iceley

Цитата: iceley от 31 января 2010, 21:14:55
SMF 2.0 RC2, UTF-8, дефолтная тема.

Здравствуйте, можно ли реализовать регистрацию только в ночное время и как это сделать? Подобных модов не нашёл. :-[

Drakonsa

Можно, но это нужно писать отдельный мод. В стандартном функционале такого нету.

yrygvay

Music in Soul
Помогу с переездом с UCOZ

smile79

а что подразумевает под собой ночная регистрация?
:-)

Drakonsa

Цитата: smile79 от 31 января 2010, 21:54:18
а что подразумевает под собой ночная регистрация?
Примерно как регистрация на torrents.ru: http://torrents.ru/forum/profile.php?mode=register

yrygvay

да регистрация может быть любой, хоть только 10 минут в день и всё.


Вопрос в друго, если человек хочет такую регистрацию, видно у него с ног сшибательная посещаемость!!
Music in Soul
Помогу с переездом с UCOZ

iceley

Не такая уж сногсшибательна, просто нужно ограничить контенгент людей, которые смогут зарегистрироваться.

Bugo

Скорее всего, по аналогии с этим -> http://www.simplemachines.ru/index.php?topic=8847.msg61249#msg61249
То есть написать запрос к базе данных в отдельном php файле и запускать его 2 раза в день — ночью включать регистрацию, под утро - отключать.

Drakonsa

Для SMF 2.0 RC2
File:  \themes\default\Register.template.php
Find:

// Cycle through each error and display an error message.
foreach ($context['registration_errors'] as $error)
echo '
<li>', $error, '</li>';

echo '
</ul>
</div>';
}




Add after:

   $iCurrentTime = date('H.i',time());
    $modSettings['open_time_registration'] = str_replace(':','.',$modSettings['open_time_registration']);
    $modSettings['close_time_registration'] = str_replace(':','.',$modSettings['close_time_registration']);
 
    if (isset($modSettings['limited_registration']) && $iCurrentTime>=$modSettings['open_time_registration'] && $iCurrentTime<=$modSettings['close_time_registration'])
    {




Find:

var verificationHandle = new smfRegister("registration", ', empty($modSettings['password_strength']) ? 0 : $modSettings['password_strength'], ', regTextStrings);
// Update the authentication status.
updateAuthMethod();
// ]]></script>';


Add after:

  }
        else
        {
        $modSettings['open_time_registration'] = str_replace('.',':',$modSettings['open_time_registration']);
        $modSettings['close_time_registration'] = str_replace('.',':',$modSettings['close_time_registration']);
        $iCurrentTime = date('H:i',time());
            echo '<h3 class="catbg"><span class="left"></span>
   Регистрация закрыта.
</h3>
<div class="windowbg2" style="height: 150px; text-align: center; font-weight: bold; color: red;">
            <p>В данный момент регистрация закрыта</p>
            <br />
            <p>Вы можете зарегистрироваться с '.$modSettings['open_time_registration'].' до '.$modSettings['close_time_registration'].' (сейчас '.$iCurrentTime.')</p>
            <br />
            <p>Приносим извинения за это неудобство</p>
            </div>';
        }




File: \sources\ManageSettings.php
Find:

array('check', 'enable_buddylist'),
array('text', 'default_personal_text'),
'',


Add after:

// Registration Limit
            array('check', 'limited_registration'),
            array('text', 'open_time_registration','5'),
            array('text', 'close_time_registration','5'),
        '',




Сделано за очень мало времени, на мод это не претендует, скорее как полезное решение, вообще так делать не правильно + есть маленький баг :) . Кто хочет может исправлять, ковыркать и издеваться над кодом как душе будет угодно.
Для SMF 1.1 Там примерно тоже самое, только файл в sources ModSettings.php. И в Register.template.php могут быть, точнее будут несколько другие строки для Find 

iceley

Спасибо большое, а что за баг?

Drakonsa

Цитата: iceley от 31 января 2010, 23:43:37
Спасибо большое, а что за баг?
24-ый час, береться как 0:00, в связи с этим он не попадает под условие, если ставить например регистрация с 20:00 до 00:00.
А и еще если ставить 20:00 до 6:00 то тоже не будет попадать.
Вобщем не учитываеться переход на след. день при задании лимитов. 
Настройки выставляються в Адмнистрирование - Характеристики и настройки.
Чтоб было видно текст, надо еще
Find: Themes\default\languages\ManageSettings.russian-utf8
Find:
?>
Add before:

$txt['limited_registration'] = 'Включить ограничение на регистрацию';
$txt['open_time_registration'] = 'Время открытия регистрации';
$txt['close_time_registration'] = 'Время закрытия регистрации';