#################################################### # Примечание: # # Все что связанно с данным модулем переведено в # # /language/lang_language/lang_main.php # # За локализацию спасибо tmk!!! # #################################################### # ЕСЛИ У ВАС УЖЕ УСТАНОВЛЕНА ПОСЛЕДНЯЯ ВЕРСИЯ # # АДАПТАЦИИ ОТ МЕНЯ ТОГДА ЧИТАТЬ UPDATE.TXT # #################################################### # Для установки с нуля все запросы оптимизированы # #################################################### # УСТАНОВКА # #################################################### # #-----[ COPY ]--------------------------------- # /root/admin/admin_invites.php to /admin/admin_invites.php /root/templates/admin/admin_invites.tpl to /templates/admin/admin_invites.tpl /root/templates/default/invite.tpl to /templates/default/invite.tpl /root/invite.php to /invite.php # #-----[ SQL QUERY ]--------------------------------- # CREATE TABLE `invite_rules` ( `rule_id` INT(4) unsigned NOT NULL auto_increment, `user_rating` INT(4) unsigned NOT NULL default 0, `user_age` INT(4) unsigned NOT NULL default 0, `invites_count` INT(4) unsigned NOT NULL default 0, `user_group` INT(4) unsigned NOT NULL default 0, PRIMARY KEY (`rule_id`)); ); CREATE TABLE `invites` ( `invite_id` INT(8) unsigned NOT NULL auto_increment, `user_id` MEDIUMINT(8) NOT NULL default 0, `new_user_id` MEDIUMINT(8) NOT NULL default 0, `invite_code` VARCHAR(16) NOT NULL default '', `active` ENUM('1','0') default '1', `generation_date` INT(10) NOT NULL default '0', `activation_date` INT(10) NOT NULL default '0', PRIMARY KEY (`invite_id`)); ); # #-----[ ФАЙЛ ]--------------------------------- # language/lang_russian/lang_main.php # #-----[ В КОНЕЦ ФАЙЛА, ВСТАВИТЬ ]-------------- # // Инвайты $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'] = 'Чтобы включить, необходимо в config.php поменять значение переменной $bb_cfg[\'new_user_reg_only_by_invite\'] с false на true'; $lang['DENNY_GET_INVITE_MSG'] = 'Извините, но на данный момент вы не можете выдавать инвайты.'; $lang['DENNY_GET_INVITE_MSG_1'] = 'Это может быть связано с тем, что:
'; $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'] = 'Инвайт не может быть выдан

'; $lang['INVITE_GET_SUCCESSFULLY'] = 'Инвайт успешно выдан

'; $lang['GO_TO_INVITE_LIST'] ='Нажмите %sздесь%s, чтобы перейти к списку инвайтов'; $lang['INVITE_ACTIV_YES'] = 'Да'; $lang['INVITE_ACTIV_NO'] = 'Нет'; $lang['INVITE_TAKEN'] = 'Такого кода инвайта не существует или он уже активирован'; $lang['INVITE_EMPTY'] = 'Вы не указали код инвайта'; $lang['NO_INPUT_INVITE'] = 'Поле для ввода инвайт кода не должно быть пустым'; # #-----[ ФАЙЛ ]--------------------------------- # language/lang_english/lang_main.php # #-----[ В КОНЕЦ ФАЙЛА, ВСТАВИТЬ ]-------------- # // Invites $lang['INVITES'] = 'Invites control panel'; $lang['GET_INVITE'] = 'Get invite'; $lang['ALL_TIME_GETED_INVITE'] = 'Total invites issued by you:'; $lang['LAST_WEEK_GETED_INVITE'] = 'Invites issued at last week:'; $lang['ALLOW_GET_INVITE'] = 'Invites available at this moment:'; $lang['REG_INVITES_DISABLE'] = 'Registration by invites disabled'; $land['REG_INVITES_DISABLE_MSG'] = 'To turn it on you should change $bb_cfg[\'new_user_reg_only_by_invite\'] value to true in config.php file.'; $lang['DENNY_GET_INVITE_MSG'] = 'Sorry, but you can not get invite at this moment.'; $lang['DENNY_GET_INVITE_MSG_1'] = 'The reason may be:
'; $lang['INVITE_YOU_CURRENT_RATIO'] = 'Your current ratio:'; $lang['INVITE_TIME_REG_MOUNTH'] = 'Tracker experience (months):'; $lang['INVITE_CURRENT_RULES'] = 'Actual rules for invites issue:'; $lang['INVITE_RULES'] = 'Invites rules'; $lang['INVITE_ADD_RULE'] = 'Add rule'; $lang['EDIT_INVITE_RULES'] = 'Edit invites rules'; $lang['INVITE_MIN_RATIO'] = 'Minimal ratio'; $lang['INVITE_MIN_EXP'] = 'Minimal experience'; $lang['INVITE_ALLOWED_GROUP'] = 'Inviting allowed group'; $lang['ENY_USER'] = 'Users'; $lang['INVITE_NUMBERS_IN_WEEK'] = 'Invites per week'; $lang['YOUR_INVITES'] ='Your invites'; $lang['INVITE_HISTORY'] = 'Invites issue history'; $lang['INVITE_GET_DATE'] = 'Issue date'; $lang['INVITE_CODE'] = 'Invite code'; $lang['INVITE_ACTIVE'] = 'Active'; $lang['INVITE_INVITED_USER'] = 'Invited user'; $lang['INVITE_GETED_USER'] = 'Inviter'; $lang['INVITE_ACTIVATION_DATE'] = 'Activation date'; $lang['INVITE_NOT_GETED'] = 'No one invite has been issued'; $lang['CAN_GET_INVITE'] = 'Invite can not be issued

'; $lang['INVITE_GET_SUCCESSFULLY'] = 'Invite successfully issued

'; $lang['GO_TO_INVITE_LIST'] ='Click %shere%s, to access invites-list'; $lang['INVITE_ACTIV_YES'] = 'Yes'; $lang['INVITE_ACTIV_NO'] = 'No'; $lang['INVITE_TAKEN'] = 'Incorrect invite'; $lang['INVITE_EMPTY'] = 'Please, enter invite code'; # #-----[ ФАЙЛ ]--------------------------------- # templates/default/page_header.tpl # #-----[ НАЙТИ ]-------------------------------- # {L_SEARCH_SELF} # #-----[ ПОСЛЕ, ВСТАВИТЬ ]--------------------- # {L_GET_INVITE} # #-----[ ФАЙЛ ]--------------------------------- # templates/default/usercp_register.tpl # #-----[ НАЙТИ ]-------------------------------- # # #-----[ ПОСЛЕ, ВСТАВИТЬ ]---------------------- # Код инвайта: *
Внимание!
На данный момент регистрация разрешена только по инвайтам.
Если вы не введете код инвайта, вы не сможете зарегистрироваться.
# #-----[ ФАЙЛ ]--------------------------------- # config.php # #-----[ НАЙТИ ]-------------------------------- # $bb_cfg['new_user_reg_disabled'] = false; // Disable new user registrations # #-----[ ПОСЛЕ, ВСТАВИТЬ ]---------------------- # $bb_cfg['new_user_reg_only_by_invite'] = true; // Disable new user registrations by invites # #-----[ ФАЙЛ ]--------------------------------- # includes/ucp/usercp_register.php # #-----[ НАЙТИ ]-------------------------------- # // field => can_edit $profile_fields = array( 'username' => true, 'user_password' => true, 'user_email' => true, # #-----[ ПОСЛЕ, ВСТАВИТЬ ]---------------------- # 'invite_code' => true, # #-----[ НАЙТИ ]-------------------------------- # $pr_data = array( 'user_id' => ANONYMOUS, 'username' => '', 'user_password' => '', 'user_email' => '', # #-----[ ПОСЛЕ, ВСТАВИТЬ ]---------------------- # 'invite_code' => '', # #-----[ НАЙТИ ]-------------------------------- # /** * Пароль (edit, reg) */ case 'user_password': # #-----[ ПЕРЕД, ВСТАВИТЬ ]---------------------- # /** * Инвайт (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; # #-----[ НАЙТИ ]------------------------------- # $sql_args = DB()->build_array('INSERT', $db_data); DB()->query("INSERT INTO ". BB_USERS . $sql_args); $new_user_id = DB()->sql_nextid(); # #-----[ ПОСЛЕ, ВСТАВИТЬ ]--------------------- # 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, 'Could not activate invite', '', __LINE__, __FILE__, $sql); DB()->sql_freeresult($upd_querry); } } # #-----[ ФАЙЛ ]--------------------------------- # includes/functions_validate.php # #-----[ НАЙТИ ]-------------------------------- # // Check to see if email address is banned or already present in the DB # #-----[ ПЕРЕД, ВСТАВИТЬ ]---------------------- # function validate_invite_code ($invite_code, $check_activ_and_taken = true) { global $lang; $invite_code = str_compact($invite_code); $invite_code = clean_username($invite_code); if($invite_code != ''){ if ($check_activ_and_taken) { $invite_code_sql = DB()->escape($invite_code); $sql = "SELECT `invite_id` FROM `invites` WHERE `invite_code` = '$invite_code_sql' AND `active` = '1'"; if (!($result = DB()->sql_query($sql))){ return message_die(GENERAL_ERROR, 'Error checking code, invite', '', __LINE__, __FILE__, $sql); }else{ $num_row = DB()->num_rows($result); DB()->sql_freeresult($result); if ($num_row == 0) { return $lang['INVITE_TAKEN']; } } } }else{ return $lang['INVITE_EMPTY']; } return false; } # #-----[ ФАЙЛ ]--------------------------------- # includes/functions_group.php # #-----[ В КОНЕЦ ФАЙЛА, ВСТАВИТЬ ]-------------- # function get_groupname ($select_name, $selected_group, $groupid) { global $lang; $groupname = ''; $select_ary = array(); $sql = "SELECT group_id, group_name FROM ". BB_GROUPS ." WHERE group_single_user = 0 ORDER BY group_name"; $select_ary[$lang['ENY_USER']] = '0'; foreach (DB()->fetch_rowset($sql) as $row) { if (isset($select_ary[$row['group_name']])) { $cnt = md5($row['group_name']) .'_cnt'; $$cnt = @$$cnt + 1; $row['group_name'] = $row['group_name'] . ' ['. (int) $$cnt .']'; } $select_ary[$row['group_name']] = $row['group_id']; if ($groupid == $row['group_id']) { $groupname = $row['group_name']; } } if(defined('IN_ADMIN')){ return ($select_ary) ? build_select($select_name, $select_ary, $selected_group) : ''; } else { return $groupname; } } # #Создаём крон-задачу, которая позволяет включать и отключать инвайты из админки #-----[ SQL QUERY ]--------------------------------- INSERT INTO `bb_config` VALUES ('new_user_reg_only_by_invite', '0'); # admin_lang.php # вставить соттветственно в английские и русские ланги, после Reports [END] # $lang['INVITE_ENABLED'] = 'Включить регистрацию только по инвайтам'; $lang['INVITE_ENABLED'] = 'Enable registration by invites only'; # #admin_board.php # Найти: )); break; вставить до: "INVITE_ENABLED" => $new['new_user_reg_only_by_invite'], # #admin_board.tpl # вставить туда, где в админке должно быть управление инвайтами...

{L_INVITE_ENABLED}

   # #-----[EoM]------------------------------------ #