/**
* Инвайт (edit, reg)
*/
case 'invite_code':
$invite_code = !empty($_POST['invite_code']) ? clean_username($_POST['invite_code']) : $pr_data['invite_code'];
if ($submit)
{
$err = validate_invite_code($invite_code);
if (!$errors AND $err && $mode == 'register')
{
$errors[] = $err;
}
if($invite_code != $pr_data['invite_code'] || $mode == 'register')
{
$pr_data['invite_code'] = $invite_code;
}
}
$tp_data['CAN_EDIT_INVITE_CODE'] = $can_edit;
$tp_data['INVITE_CODE'] = $pr_data['invite_code'];
break;
/**
* Инвайт (edit, reg)
*/
case 'invite_code':
if($bb_cfg['new_user_reg_only_by_invite']){
$invite_code = !empty($_POST['invite_code']) ? clean_username($_POST['invite_code']) : $pr_data['invite_code'];
if ($submit)
{
$err = validate_invite_code($invite_code);
if (!$errors AND $err && $mode == 'register')
{
$errors[] = $err;
}
if($invite_code != $pr_data['invite_code'] || $mode == 'register')
{
$pr_data['invite_code'] = $invite_code;
}
}
$tp_data['CAN_EDIT_INVITE_CODE'] = $can_edit;
$tp_data['INVITE_CODE'] = $pr_data['invite_code'];
}
break;
$user_id = DB()->sql_nextid();
if ($invite_code != '') {
$sql = "UPDATE `invites` SET `active`='0', `new_user_id`=".$user_id.", `activation_date`=".time()." WHERE `invite_code`='".$invite_code."'";
if (!($upd_querry = DB()->sql_query($sql))) message_die(GENERAL_ERROR, 'Ошибка при активации инвайта', '', __LINE__, __FILE__, $sql);
DB()->sql_freeresult($upd_querry);
}
if ($invite_code != '') {
$sql = "UPDATE `invites` SET `active`='0', `new_user_id`=".$user_id.", `activation_date`=".time()." WHERE `invite_code`='".$invite_code."'";
if (!($upd_querry = DB()->sql_query($sql))) message_die(GENERAL_ERROR, 'Ошибка при активации инвайта', '', __LINE__, __FILE__, $sql);
DB()->sql_freeresult($upd_querry);
if($bb_cfg['new_user_reg_only_by_invite']){
if ($invite_code != '') {
$sql = "UPDATE `invites` SET `active`='0', `new_user_id`=".$new_user_id.", `activation_date`=".time()." WHERE `invite_code`='".$invite_code."'";
if (!($upd_querry = DB()->sql_query($sql))) message_die(GENERAL_ERROR, 'Ошибка при активации инвайта', '', __LINE__, __FILE__, $sql);
DB()->sql_freeresult($upd_querry);
}
}
anton4er, проверю
//Invites
$lang['INVITES'] = 'Панель управления инвайтами';
$lang['GET_INVITE'] = 'Выдать инвайт';
$lang['ALL_TIME_GETED_INVITE'] = 'За всё время вами выдано инвайтов:';
$lang['LAST_WEEK_GETED_INVITE'] = 'За последнюю неделю вами выдано инвайтов:';
$lang['ALLOW_GET_INVITE'] = 'На данный момент вы можете выдать инвайтов:';
$lang['REG_INVITES_DISABLE'] = 'Регистрация по инвайтам отключена';
$land['REG_INVITES_DISABLE_MSG'] = 'Чтобы включить, необходимо в <b>config.php</b> поменять значение переменной <b>$bb_cfg[\'new_user_reg_only_by_invite\']</b> с <b>false</b> на <b>true</b>';
$lang['DENNY_GET_INVITE_MSG'] = 'Извините, но на данный момент вы не можете выдавать инвайты.';
$lang['DENNY_GET_INVITE_MSG_1'] = 'Это может быть связано с тем, что:<br /><ul><li>вы уже выдали разрешенное вам максимальное кол-во инвайтов в неделю;</li><li>ваш рейтинг не позволяет выдавать вам инвайты;</li><li>кол-во прошедших месяцев со дня вашей регистрации не позволяет вам выдавать инвайты.</li></ul>';
$lang['INVITE_YOU_CURRENT_RATIO'] = 'Ваш текущий рейтинг:';
$lang['INVITE_TIME_REG_MOUNTH'] = 'Кол-во месяцев, прошедших со дня вашей регистрации:';
$lang['INVITE_CURRENT_RULES'] = 'Текущие правила для получения инвайтов:';
$lang['INVITE_RULES'] = 'Правила для инвайтов';
$lang['INVITE_ADD_RULE'] = 'Добавить правило';
$lang['EDIT_INVITE_RULES'] = 'Редактировать правила для инвайтов';
$lang['INVITE_MIN_RATIO'] = 'Минимальный рейтинг';
$lang['INVITE_MIN_EXP'] = 'Минимальный стаж в месяцах';
$lang['INVITE_ALLOWED_GROUP'] = 'Группа которой разрешено выдавать ивайт';
$lang['ENY_USER'] = 'Пользователи';
$lang['INVITE_NUMBERS_IN_WEEK'] = 'Кол-во инвайтов в неделю';
$lang['YOUR_INVITES'] ='Ваши инвайты';
$lang['INVITE_HISTORY'] = 'История выдачи инвайтов';
$lang['INVITE_GET_DATE'] = 'Дата выдачи';
$lang['INVITE_CODE'] = 'Код инвайта';
$lang['INVITE_ACTIVE'] = 'Активный';
$lang['INVITE_INVITED_USER'] = 'Привлеченный пользователь';
$lang['INVITE_GETED_USER'] = 'Пользователь, выдавший инвайт';
$lang['INVITE_ACTIVATION_DATE'] = 'Дата активации';
$lang['INVITE_NOT_GETED'] = 'Инвайтов не выдавалось';
$lang['CAN_GET_INVITE'] = 'Инвайт не может быть выдан<br /><br />';
$lang['INVITE_GET_SUCCESSFULLY'] = 'Инвайт успешно выдан<br /><br />';
$lang['GO_TO_INVITE_LIST'] ='Нажмите %sздесь%s, чтобы перейти к списку инвайтов';
$lang['INVITE_ACTIV_YES'] = 'Да';
$lang['INVITE_ACTIV_NO'] = 'Нет';
//INVITE REGISTER
$lang['INVITE_TAKEN'] = 'Такого кода инвайта не существует или он уже активирован';
$lang['INVITE_EMPTY'] = 'Вы не указали код инвайта';
INSERT INTO `bb_config` VALUES ('new_user_reg_only_by_invite', '0');
"INVITE_ENABLED" => $new['new_user_reg_only_by_invite'],
<!-- invite_enabled -->
<tr>
<td><h4>{L_INVITE_ENABLED}</h4></td>
<td>
<label><input type="radio" name="new_user_reg_only_by_invite" value="1" <!-- IF INVITE_ENABLED -->checked="checked"<!-- ENDIF --> />{L_YES}</label>
<label><input type="radio" name="new_user_reg_only_by_invite" value="0" <!-- IF not INVITE_ENABLED -->checked="checked"<!-- ENDIF --> />{L_NO}</label>
</td>
</tr>
<!-- invite_enabled [END] -->
admin_lang
//
// Reports [END]
//
$lang['INVITE_ENABLED'] = 'Включить регистрацию только по инвайтам';
$lang['INVITE_ENABLED'] = 'Enable registration by invites only';
INSERT INTO `bb_cron` VALUES (25, 1, 'Prune inactive invites', 'invites_prune.php', 'daily', NULL, '05:00:00', 255, '0', '0', NULL, 1, '', 0, 0, 0);
<?php
if (!defined('BB_ROOT')) die(basename(__FILE__));
$sql = "(SELECT i.invite_id
FROM invites i
LEFT JOIN bb_users u ON (u.user_id = i.new_user_id)
WHERE i.new_user_id <> 0 AND u.username IS NULL)
UNION
(SELECT i.invite_id
FROM invites i
LEFT JOIN bb_users u ON (u.user_id = i.user_id)
WHERE i.user_id <> 0 AND u.username IS NULL)";
$new_id = array();
foreach (DB()->fetch_rowset($sql) as $row)
{
{
$new_id[] = $row['invite_id'];
}
$del_ids = implode(",",$new_id);
DB()->query("DELETE FROM invites WHERE invite_id IN($del_ids)");
}