Огромное спасибо, обновление прошло без происшествий, пропавшие форумы открыл на редактирование по id. нажал сохранить и они снова отобразились в списке
2 14.11.2010 23:19
Re: [Релиз] SubForum (24 ответов, оставленных в Расширения v1.3)
Вопрос, еще юзаю версию
Разработчик: Sergey Leschina.
Версия 0.9alpha.5.
все замечательно, и дальше бы юзал, но сегодня возникла необходимость в реализации одной нестандатной штуки, при этом этой версии сабфорума был обнаружен один косяк.
1. создаю новую группу со всеми правами участников
2. делаю новый раздел
3. делаю в новом разделе форум ХХХ
4. делаю несколько форум с родительским форумом ХХХ
5. редактирую настройки форума (запрещаю чтение и редактирование форума всем, даже модераторам, кроме группы созданной 1м шагом)
сохраняю изменения, форум пропадает из списка форумов в админке, на сайте норм, но что бы заново открыть настройки форума приходится копипастить код редактирования форума и подставлять туда id нужного пропавшего форума. не сложно конечно, но хотелось бы что бы все было красиво )
вопросов собственно два
1) при переходе с Версия 0.9alpha.5. на последнюю будет ли решена данная проблема
2) стоит ли ожидать каких нибудь проблем при обновлении модуля (понятно что необходимо сделать и бекапы файла и базы), есть ли опасность падения форума при этом, есть ли опыт обновления уже? есть ли смысл сначала на резервном сервере развернуть копию форума и проверить на нем или опасность несуществена?
3 25.01.2010 22:31
Re: (Обязательно) добавление полей при регистрации (4 ответов, оставленных в Общие вопросы)
в написании кода с нуля я не опытен, максимум что могу - чужое поправить и добавить что то по аналогии, уж извиняйте. к тому же модуль такой есть, в теме "расширения" есть его обсуждение, тока беда с ним, под 1.3.4 версией форума не работает, а разработчик на *.org не отвечает уже пол года и никто доработать его мод не хочет. так что возможно и моя тема будет кому нить полезна ![]()
в общем разобрался я, добилился желаемого результата.
1. взял поля jabber aim icq realname переименовал их в файле локализации в ФИО(полностью), название организации и должность (вот весь файлик):
<?php
$lang_profile = array(
// Navigation and sections
'Profile redirect' => 'Профиль обновлён. Переадресация…',
'Instructions' => 'Вы будете перенаправлены обратно на эту страницу',
'Update profile' => 'Обновить профиль',
// Administration stuff
'User delete redirect' => 'Пользователь удалён. Переадресация…',
'Section admin' => 'Администрирование',
'Delete user' => 'Удалить пользователя',
'Delete warning' => '<strong>Внимание!</strong> Удаление пользователя и/или его сообщений необратимо.',
'Delete posts info' => '<strong>Внимание!</strong> Если вы подтвердите не удалять сообщения пользователя, то сможете сможете удалить их позже вручную.',
'Delete posts' => 'Удалить сообщения',
'Delete posts label' => 'Удалить все сообщения и темы, созданные пользователем %s.',
'Group membership redirect' => 'Обновлено членство в группах. Переадресация…',
'Moderate forums redirect' => 'Обновлены права модератора. Переадресация…',
'Ban redirect' => 'Переадресация…',
'Ban user' => 'Блокировка пользователя',
'Ban user info' => 'Заблокировать пользователя через консоль администрирования.',
'Delete user info' => 'Удалить пользователя и все его сообщения (опционально).',
'User management' => 'Управление учётной записью',
'Group membership' => 'Членство в группах',
'User group' => 'Включить пользователя в группу',
'Moderator assignment' => 'Зоны модерирования',
'Cannot delete admin' => 'Администраторы не могут быть удалены. Для удаления этого пользователя необходимо переместить его в другую пользовательскую группу.',
'Update groups' => 'Обновить пользовательскую группу',
'Update forums' => 'Обновить зоны модерирования',
// Avatar stuff
'Avatar welcome' => 'Установка аватара для большей индивидуальности.', //FIXME: нужно сказать это по-_русски_
'Avatar welcome user' => 'Установка аватара для большей индивидуальности.',
'Avatar deleted redirect' => 'Аватар удалён. Переадресация…',
'Avatars disabled' => 'Администратор отключил поддержку аватаров.',
'No file' => 'Вы не выбрали файл для загрузки.',
'Too large ini' => 'Выбранный файл слишком велик. Сервер отклонил загрузку.',
'Partial upload' => 'Выбранный файл был загружен лишь частично. Попробуйте снова.',
'No tmp directory' => 'Невозможно сохранить загруженный файл во временном хранилище.',
'Bad type' => 'Типа файла, который вы попытались загрузить запрещён. Разрешены файлы форматов gif, jpeg и png.',
'Too large' => 'Размер файла, который вы попытались загрузить превышает порог в %s байт.',
'Move failed' => 'Невозможно сохранить загруженный файл. Обратитесь к администратору форума: %s.',
'Too wide or high' => 'Изображение, которое вы попытались загрузить шире и/или выше допустимых %s×%s пикселов.', //FIXME: нужно русское "pixels"
'Unknown failure' => 'Неизвестная ошибка. Приносим извинения. Попробуйте снова.',
'Avatar' => 'Аватар',
'Current avatar' => 'Текущий аватар',
'No avatar info' => 'Вы ещё не загрузили аватар.',
'Avatar info replace' => 'Загрузка нового аватара приведёт к удалению старого.',
'Avatar info none' => 'Для отображения необходимо загрузить аватар.',
'Avatar info type' => 'Разрешены файлы форматов gif, jpeg и png.',
'Avatar info size' => 'Максимальный размер изображения — %s×%s пикселов и %s байт (%s КБ).',
'Delete avatar info' => 'Удалите аватар чтобы прекратить его отображение.', //FIXME: может его просто отключить? Или это и для профиля?
'Upload avatar file' => 'Загружаемый файл аватара', //FIXME: avatar нужно правильно просклонять
'Avatar upload help' => 'Выберите файл, затем, для установки, обновите профиль.',
'No upload warn' => '<strong>Важно!</strong> Перед обновлением профиля необходимо выбрать файл.',
// About and Identity sections
'Users profile' => 'Профиль пользователя %s',
'Section about' => 'Просмотр',
'Profile welcome' => 'Ваш профиль',
'Profile welcome user' => 'Профиль пользователя %s',
'Identity welcome' => 'Изменение личной и контактной информации',
'Identity welcome user' => 'Изменение личной и контактной информации',
'View your posts' => 'Показать ваши сообщения',
'View your topics' => 'Показать ваши темы',
'View user posts' => 'Показать сообщения',
'View user topics' => 'Показать темы',
'View your subscriptions' => 'Показать темы, на которые вы подписаны',
'View user subscriptions' => 'Показать темы, на которые подписан пользователь',
'Realname' => 'Фамилия Имя Очество (полностью)',
'Location' => 'Местонахождение',
'From' => 'Откуда',
'Registered' => 'Зарегистрирован',
'Website' => 'Сайт',
'IP' => 'IP',
'Note' => 'Примечание',
'Posts' => 'Сообщений',
'Last post' => 'Последнее сообщение',
'Send forum e-mail' => 'Отправить сообщение пользователю используя форум',
'Contact info' => 'Контактная информация',
'Jabber' => 'Название организации',
'ICQ' => 'ICQ',
'MSN' => 'MSN Messenger',
'AOL IM' => 'Подразделение и должность',
'Forbidden title' => 'Статус введённый вами содержит недопустимое слово. Замените это слово.',
'Bad ICQ' => 'Вы ввели некорректный ICQ UIN.',
'Yahoo' => 'Телефон',
'Posts and topics' => 'Активность пользователя',
'Private info' => 'Персональная информация',
'Current signature' => 'Текущая подпись',
'Section identity' => 'Персональное',
'Section settings' => 'Настройки',
'Section avatar' => 'Аватар',
'Section signature' => 'Подпись',
'Signature info' => 'Ваша подпись будет расположена снизу каждого вашего сообщения. Обычно она содержит любимую фразу или росчерк. Это круто!',
'Personal legend' => 'О себе', //FIXME: Не нашёл где это
'Title' => 'Статус',
'Leave blank' => 'Для использования стандартных настроек оставьте незаполненным.',
'Edit count' => 'Изменить количество сообщений', //счёт
'Admin note' => 'Примечание администратора',
'Contact legend' => 'Контактная информация', //FIXME: Не нашёл где это
// Settings section
'Local settings' => 'Local settings', //FIXME: Не нашёл где это
'Settings welcome' => 'Изменение настроек локализации, отображения и e-mail',
'Settings welcome user' => 'Изменение настроек локализации, отображения и e-mail',
'Timezone info' => 'Нужно для корректного отображения времени на форуме.',
'Time format' => 'Формат времени',
'Default' => 'стандартный',
'Date format' => 'Формат даты',
'Display settings' => 'Настройки отображения',
'Styles' => 'Доступные стили',
'Image display' => 'Отображение изображений',
'Show avatars' => 'Показывать пользовательские аватары в сообщениях.',
'Show images sigs' => 'Показывать изображения в подписях.',
'Show images' => 'Показывать изображения в сообщениях.',
'Show sigs' => 'Показывать пользовательские подписи.',
'Show smilies' => 'Показывать смайлы как изображения.',
'Signature display' => 'Отображение подписей',
'Pagination settings' => 'Настройки разбиения страниц',
'Topics per page' => 'Количество тем на странице',
'Posts per page' => 'Количество сообщений на странице',
'E-mail and sub settings' => 'Настройки уведомлений и е-mail адреса',
'Subscription settings' => 'Настройки уведомлений',
'Notify full' => 'Включать копию текста сообщения в e-mail уведомлениях.',
'Subscribe by default' => 'Автоматически подписывать на уведомления о новых сообщениях в теме.',
'UTC-12:00' => '(UTC-12:00) Линия перемены дат',
'UTC-11:00' => '(UTC-11:00) Ниуэ, Самоа',
'UTC-10:00' => '(UTC-10:00) Алеутские, Гавайские о-ва, о-ва Кука',
'UTC-09:30' => '(UTC-09:30) Маркизские о-ва',
'UTC-09:00' => '(UTC-09:00) Аляска, о-ва Гамбье',
'UTC-08:00' => '(UTC-08:00) Тихоокеанское время США',
'UTC-07:00' => '(UTC-07:00) Горное время США',
'UTC-06:00' => '(UTC-06:00) Центральное время США',
'UTC-05:00' => '(UTC-05:00) Восточное время США',
'UTC-04:00' => '(UTC-04:00) Атлантическое время США',
'UTC-03:30' => '(UTC-03:30) Ньюфаундленд',
'UTC-03:00' => '(UTC-03:00) Амазонка, Центральная Гренландия',
'UTC-02:00' => '(UTC-02:00) Среднеатлантическое время',
'UTC-01:00' => '(UTC-01:00) Азорские о-ва, Кабо-Верде, Восточная Гренландия',
'UTC' => '(UTC) Западная Европа, Гринвич',
'UTC+01:00' => '(UTC+01:00) Центральная Европа, Западная Африка',
'UTC+02:00' => '(UTC+02:00) Беларусь, Украина, Восточная Европа, Центральная Африка',
'UTC+03:00' => '(UTC+03:00) Москва, Санкт-Петербург, Волгоград, Восточная Африка',
'UTC+03:30' => '(UTC+03:30) Иран',
'UTC+04:00' => '(UTC+04:00) Самара, Закавказье, Катар, Оман, ОАЭ',
'UTC+04:30' => '(UTC+04:30) Афганистан',
'UTC+05:00' => '(UTC+05:00) Екатеринбург, Пермь, Пакистан',
'UTC+05:30' => '(UTC+05:30) Индия, Шри-Ланка',
'UTC+05:45' => '(UTC+05:45) Непал',
'UTC+06:00' => '(UTC+06:00) Новосибирск, Омск, Казахстан, Бангладеш, Бутан',
'UTC+06:30' => '(UTC+06:30) Кокосовые о-ва, Мьянма',
'UTC+07:00' => '(UTC+07:00) Красноярск, Индокитай',
'UTC+08:00' => '(UTC+08:00) Иркутск, Китай, Западная Австралия',
'UTC+08:45' => '(UTC+08:45) Юго-Западная Австралия',
'UTC+09:00' => '(UTC+09:00) Чита, Корея, Япония',
'UTC+09:30' => '(UTC+09:30) Центральная Австралия',
'UTC+10:00' => '(UTC+10:00) Владивосток, Западная Австралия',
'UTC+10:30' => '(UTC+10:30) Лорд-Хау',
'UTC+11:00' => '(UTC+11:00) Магадан, Соломоновы о-ва',
'UTC+11:30' => '(UTC+11:30) о. Норфолк',
'UTC+12:00' => '(UTC+12:00) Камчатка, Новая Зеландия',
'UTC+12:45' => '(UTC+12:45) о-ва Чатем',
'UTC+13:00' => '(UTC+13:00) о-ва Феникс, Тонга',
'UTC+14:00' => '(UTC+14:00) о-ва Лайн',
// Change Password stuff
'Change pass errors' => '<strong>Внимание!</strong> Следующие проблемы препятствуют обновлению пароля:',
'Pass logout' => 'Пользователь уже на форуме. Пожалуйста, выйдите и попытайтесь снова.',
'Pass key bad' => 'Указанный активационный ключ не подходит(возможно истекло время его использования). Пожалуйста, запросите новый. Если это не подействует, обратитесь к администратору форума: %s.',
'Pass updated' => 'Пароль обновлён. Используйте новый пароль. Переадресация…',
'Change your password' => 'Изменить пароль',
'Change user password' => 'Изменить пароль',
'Old password' => 'Ваш старый пароль',
'Old password help' => 'Нужно ввести ваш текущий пароль.',
'New password' => 'Ваш новый пароль',
'Confirm new password' => 'Подтвердите новый пароль',
'Wrong old password' => 'Ваш старый пароль неверен.',
'Pass updated redirect' => 'Пароль обновлён. Переадресация…',
// Change E-mail stuff
'Change e-mail errors' => '<strong>Внимание!</strong> Следующие проблемы препятствуют обновлению e-mail адреса:',
'E-mail key bad' => 'Указанный активационный ключ не подходит(возможно истекло время его использования). Пожалуйста, запросите новый. Если это не подействует, обратитесь к администратору форума: %s.', //FIXME: неясно что это за ключ.
'E-mail updated' => 'Ваш e-mail адрес обновлён.',
'E-mail updated redirect' => 'Ваш e-mail адрес обновлён. Перенаправление…',
'Wrong password' => 'Введённый пароль неверен.',
'Activate e-mail sent' => 'На указанный e-mail адрес отправлено письмо с инструкциями по активации нового e-mail адреса. Если письмо не пришло в течении суток, обратитесь к администратору форума: %s.',
'Change your e-mail' => 'Изменить e-mail адрес',
'Change user e-mail' => 'Изменить e-mail адрес',
'New e-mail' => 'Новый e-mail адрес',
// Signatures
'Sig welcome' => 'Создание и изменение подписи',
'Sig welcome user' => 'Создание и изменение подписи',
'Signatures disabled' => 'Поддержка подписей отключена администратором форума.',
'Sig too long' => 'Подписи не могут превышать %1$s символов.',
'Sig too many lines' => 'Подпись не может содержать более %s строк.',
'Signature' => 'Подпись',
'Compose signature' => 'Новая подпись',
'Sig max size' => 'Не более %s символов и %s строк.',
// Registration stuff (some of these also used by profile)
'No new regs' => 'Регистрация новых пользователей отключена.',
'Reg cancel redirect' => 'Регистрация отменена. Переадресация…',
'Agreement' => 'Подтверждение',
'Agreement label' => 'Я согласен с вышеуказанными правилами и желаю зарегистрироваться.',
'Agree' => 'Согласен',
'Registration flood' => 'В течении последнего часа с вашего IP адреса уже был зарегистрирован новый пользователь. По прошествии 60 минут вы сможете зарегистрироваться. Это мера безопасности. Приносим извинения за неудобства.',
'Pass too short' => 'Пароль должен быть длиннее 4 символов. Выберите другой(рекомендуется использовать как буквы, так и цифры).',
'Pass not match' => 'Введённые пароли не совпадают.',
'E-mail not match' => 'Введённые e-mail адреса не совпадают.',
'Banned e-mail' => 'E-mail адрес, введённый вами, заблокирован на этом форуме. Выберите другой.',
'Dupe e-mail' => 'Другой пользователь с таким e-mail адресом уже зарегистрирован. Выберите другой.',
'Reg e-mail' => 'Благодарим за регистрацию. На указанный e-mail адрес высланы инструкции по активации вашей учётной записи. Если письмо не пришло в течении суток, обратитесь к администратору форума: %s.',
'Reg complete' => 'Регистрация завершена. Переадресация…',
'Register errors' => '<strong>Внимание!</strong> Следующие проблемы препятствуют регистрации:',
'E-mail info' => '<strong>Важно!</strong> На ваш новый e-mail адрес будет отправлено письмо содержащее активационную ссылку. Для активации нового e-mail адреса необходимо пройти по той ссылке. Рекомендуется проверить правильность введённой информации.',
'Reg e-mail info' => '<strong>Важно!</strong> На указанный e-mail адрес будет отправлено письмо содержащее активационную ссылку. Для активации новой учётной записи адреса необходимо пройти по той ссылке. Рекомендуется проверить правильность введённой информации.',
'Register at' => 'Регистрация: %s',
'Register intro' => 'Регистрация позволяет использовать возможности форума, недоступные гостям. Поля ниже — лишь малая часть того, что вы можете указать в своём профиле. Имеющиеся вопросы относительно форума вы можете задать администратору. Пожалуйста, заполните формы ниже для регистрации.',
'Username' => 'Имя пользователя',
'Username help' => 'От 2 до 25 символов.',
'obyaz dop pole' => 'до 250 символов',
'Password' => 'Пароль',
'Password help' => 'Не менее 4 символов. Регистрозависимый.',
'Confirm password' => 'Подтвердите пароль',
'Confirm password help' => 'В целях безопасности введите ваш пароль повторно.',
'E-mail' => 'E-mail',
'E-mail help' => 'Ваш настоящий e-mail адрес.',
'Confirm e-mail' => 'Подтвердите e-mail адрес',
'Confirm e-mail help' => 'В целях безопасности введите ваш e-mail адрес повторно.',
'Optional legend' => 'Дополнительные настройки',
'Language' => 'Язык',
'Timezone' => 'Часовой пояс',
'Adjust for DST' => 'Включить DST',
'DST label' => 'Переход на летнее/зимнее время.',
'E-mail settings' => 'Настройки e-mail',
'E-mail setting 1' => 'Показывать ваш e-mail адрес другим пользователям.',
'E-mail setting 2' => 'Скрыть ваш e-mail адрес, но разрешить отправлять вам сообщения через форум.',
'E-mail setting 3' => 'Скрыть ваш e-mail адрес и запретить отправлять вам сообщения через форум.',
'Reg rules head' => 'Для регистрации необходимо согласиться с правилами форума ниже.',
'Register' => 'Зарегистрироваться', // Registration button text
// Form validation stuff
'Profile update errors' => '<strong>Внимание!</strong> Следующие проблемы препятствуют обновлению профиля:',
'Username BBCode' => 'Имя пользователя не должно содержать тегов для форматирования текста (BBCode), используемых на форуме. Пожалуйста, выберите другое.',
'Username IP' => 'Имя пользователя не должно выглядеть как IP адрес(четыре набора цифр, разделённых точками). Пожалуйста, выберите другое.',
'Username censor' => 'Выбранное имя пользователя содержит недопустимое слово. Пожалуйста, выберите другое.',
'Username dupe' => 'Пользователь с таким именем пользователя существует. Имя пользователя должно отличаться как минимум на один символ (a-z, а-я, или 0-9). Пожалуйста, выберите другое.',
'Username guest' => 'Имя пользователя guest зарегистрировано. Пожалуйста, выберите другое.',
'Username reserved chars' => 'Имя пользователя не должно содержать символы \', " и [(]). Пожалуйста, выберите другое.',
'Username too long' => 'Имя пользователя не должно быть длиннее 25 символов. Пожалуйста, выберите другое.',
'Username too short' => 'Имя пользователя должно содержать как минимум 2 символа. Пожалуйста, выберите другое.',
'Signature quote/code' => 'Использование кавычек, HTML-тегов и BB-кодов в подписях запрещено.',
'Invalid e-mail' => 'Введённый вами e-mail адрес неверен.',
);Добавлено спустя 1 минуту 4 секунды:
далее в файле register.php добави обязательные поля взяв за образец поле username, вот весь код файла:
<?php
/**
* Allows the creation of new user accounts.
*
* @copyright (C) 2008-2009 PunBB, partially based on code (C) 2008-2009 FluxBB.org
* @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
* @package PunBB
*/
if (!defined('FORUM_ROOT'))
define('FORUM_ROOT', './');
require FORUM_ROOT.'include/common.php';
($hook = get_hook('rg_start')) ? eval($hook) : null;
// If we are logged in, we shouldn't be here
if (!$forum_user['is_guest'])
{
header('Location: '.forum_link($forum_url['index']));
exit;
}
// Load the profile.php language file
require FORUM_ROOT.'lang/'.$forum_user['language'].'/profile.php';
if ($forum_config['o_regs_allow'] == '0')
message($lang_profile['No new regs']);
$errors = array();
// User pressed the cancel button
if (isset($_GET['cancel']))
redirect(forum_link($forum_url['index']), $lang_profile['Reg cancel redirect']);
// User pressed agree but failed to tick checkbox
else if (isset($_GET['agree']) && !isset($_GET['req_agreement']))
redirect(forum_link($forum_url['index']), $lang_profile['Reg cancel redirect']);
// Show the rules
else if ($forum_config['o_rules'] == '1' && !isset($_GET['agree']) && !isset($_POST['form_sent']))
{
// Setup form
$forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
// Setup breadcrumbs
$forum_page['crumbs'] = array(
array($forum_config['o_board_title'], forum_link($forum_url['index'])),
array($lang_common['Register'], forum_link($forum_url['register'])),
$lang_common['Rules']
);
($hook = get_hook('rg_rules_pre_header_load')) ? eval($hook) : null;
define('FORUM_PAGE', 'rules');
require FORUM_ROOT.'header.php';
// START SUBST - <!-- forum_main -->
ob_start();
($hook = get_hook('rg_rules_output_start')) ? eval($hook) : null;
$forum_page['set_count'] = $forum_page['fld_count'] = 0;
?>
<div class="main-head">
<h2 class="hn"><span><?php echo sprintf($lang_profile['Register at'], $forum_config['o_board_title']) ?></span></h2>
</div>
<div class="main-subhead">
<h2 class="hn"><span><?php echo $lang_profile['Reg rules head'] ?></span></h2>
</div>
<div class="main-content main-frm">
<div class="ct-box user-box">
<?php echo $forum_config['o_rules_message'] ?>
</div>
<form class="frm-form" method="get" accept-charset="utf-8" action="<?php echo forum_link($forum_url['register']) ?>">
<?php ($hook = get_hook('rg_rules_pre_group')) ? eval($hook) : null; ?>
<div class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
<?php ($hook = get_hook('rg_rules_pre_agree_checkbox')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box checkbox">
<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="req_agreement" value="1" /></span>
<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Agreement'] ?></span> <?php echo $lang_profile['Agreement label'] ?></label>
</div>
</div>
<?php ($hook = get_hook('rg_rules_pre_group_end')) ? eval($hook) : null; ?>
</div>
<?php ($hook = get_hook('rg_rules_group_end')) ? eval($hook) : null; ?>
<div class="frm-buttons">
<span class="submit"><input type="submit" name="agree" value="<?php echo $lang_profile['Agree'] ?>" /></span>
<span class="cancel"><input type="submit" name="cancel" value="<?php echo $lang_common['Cancel'] ?>" /></span>
</div>
</form>
</div>
<?php
($hook = get_hook('rg_rules_end')) ? eval($hook) : null;
$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_main -->
require FORUM_ROOT.'footer.php';
}
else if (isset($_POST['form_sent']))
{
($hook = get_hook('rg_register_form_submitted')) ? eval($hook) : null;
// Check that someone from this IP didn't register a user within the last hour (DoS prevention)
$query = array(
'SELECT' => '1',
'FROM' => 'users AS u',
'WHERE' => 'u.registration_ip=\''.$forum_db->escape(get_remote_address()).'\' AND u.registered>'.(time() - 3600)
);
($hook = get_hook('rg_register_qr_check_register_flood')) ? eval($hook) : null;
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
if ($forum_db->num_rows($result))
$errors[] = $lang_profile['Registration flood'];
// Did everything go according to plan so far?
if (empty($errors))
{
$username = forum_trim($_POST['req_username']);
$realname = forum_trim($_POST['req_realname']);
$jabber = forum_trim($_POST['req_jabber']);
$aim = forum_trim($_POST['req_aim']);
$yahoo = forum_trim($_POST['req_yahoo']);
$email1 = strtolower(forum_trim($_POST['req_email1']));
if ($forum_config['o_regs_verify'] == '1')
{
$email2 = strtolower(forum_trim($_POST['req_email2']));
$password1 = random_key(8, true);
$password2 = $password1;
}
else
{
$password1 = forum_trim($_POST['req_password1']);
$password2 = forum_trim($_POST['req_password2']);
}
// Validate the username
$errors = array_merge($errors, validate_username($username));
// ... and the password
if (utf8_strlen($password1) < 4)
$errors[] = $lang_profile['Pass too short'];
else if ($password1 != $password2)
$errors[] = $lang_profile['Pass not match'];
// ... and the e-mail address
if (!defined('FORUM_EMAIL_FUNCTIONS_LOADED'))
require FORUM_ROOT.'include/email.php';
if (!is_valid_email($email1))
$errors[] = $lang_profile['Invalid e-mail'];
else if ($forum_config['o_regs_verify'] == '1' && $email1 != $email2)
$errors[] = $lang_profile['E-mail not match'];
// Check if it's a banned e-mail address
$banned_email = is_banned_email($email1);
if ($banned_email && $forum_config['p_allow_banned_email'] == '0')
$errors[] = $lang_profile['Banned e-mail'];
// Check if someone else already has registered with that e-mail address
$dupe_list = array();
$query = array(
'SELECT' => 'u.username',
'FROM' => 'users AS u',
'WHERE' => 'u.email=\''.$forum_db->escape($email1).'\''
);
($hook = get_hook('rg_register_qr_check_email_dupe')) ? eval($hook) : null;
$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
if ($forum_db->num_rows($result) && empty($errors))
{
if ($forum_config['p_allow_dupe_email'] == '0')
$errors[] = $lang_profile['Dupe e-mail'];
while ($cur_dupe = $forum_db->fetch_assoc($result))
$dupe_list[] = $cur_dupe['username'];
}
($hook = get_hook('rg_register_end_validation')) ? eval($hook) : null;
// Did everything go according to plan so far?
if (empty($errors))
{
// Make sure we got a valid language string
if (isset($_POST['language']))
{
$language = preg_replace('#[\.\\\/]#', '', $_POST['language']);
if (!file_exists(FORUM_ROOT.'lang/'.$language.'/common.php'))
message($lang_common['Bad request']);
}
else
$language = $forum_config['o_default_lang'];
$initial_group_id = ($forum_config['o_regs_verify'] == '0') ? $forum_config['o_default_user_group'] : FORUM_UNVERIFIED;
$salt = random_key(12);
$password_hash = forum_hash($password1, $salt);
// Insert the new user into the database. We do this now to get the last inserted id for later use.
$user_info = array(
'username' => $username,
'realname' => $realname,
'jabber' => $jabber,
'aim' => $aim,
'yahoo' => $yahoo,
'group_id' => $initial_group_id,
'salt' => $salt,
'password' => $password1,
'password_hash' => $password_hash,
'email' => $email1,
'email_setting' => $forum_config['o_default_email_setting'],
'timezone' => $_POST['timezone'],
'dst' => isset($_POST['dst']) ? '1' : '0',
'language' => $language,
'style' => $forum_config['o_default_style'],
'registered' => time(),
'registration_ip' => get_remote_address(),
'activate_key' => ($forum_config['o_regs_verify'] == '1') ? '\''.random_key(8, true).'\'' : 'NULL',
'require_verification' => ($forum_config['o_regs_verify'] == '1'),
'notify_admins' => ($forum_config['o_regs_report'] == '1')
);
($hook = get_hook('rg_register_pre_add_user')) ? eval($hook) : null;
add_user($user_info, $new_uid);
// If we previously found out that the e-mail was banned
if ($banned_email && $forum_config['o_mailing_list'] != '')
{
$mail_subject = 'Alert - Banned e-mail detected';
$mail_message = 'User \''.$username.'\' registered with banned e-mail address: '.$email1."\n\n".'User profile: '.forum_link($forum_url['user'], $new_uid)."\n\n".'-- '."\n".'Forum Mailer'."\n".'(Do not reply to this message)';
($hook = get_hook('rg_register_banned_email')) ? eval($hook) : null;
forum_mail($forum_config['o_mailing_list'], $mail_subject, $mail_message);
}
// If we previously found out that the e-mail was a dupe
if (!empty($dupe_list) && $forum_config['o_mailing_list'] != '')
{
$mail_subject = 'Alert - Duplicate e-mail detected';
$mail_message = 'User \''.$username.'\' registered with an e-mail address that also belongs to: '.implode(', ', $dupe_list)."\n\n".'User profile: '.forum_link($forum_url['user'], $new_uid)."\n\n".'-- '."\n".'Forum Mailer'."\n".'(Do not reply to this message)';
($hook = get_hook('rg_register_dupe_email')) ? eval($hook) : null;
forum_mail($forum_config['o_mailing_list'], $mail_subject, $mail_message);
}
($hook = get_hook('rg_register_pre_login_redirect')) ? eval($hook) : null;
// Must the user verify the registration or do we log him/her in right now?
if ($forum_config['o_regs_verify'] == '1')
message(sprintf($lang_profile['Reg e-mail'], '<a href="mailto:'.forum_htmlencode($forum_config['o_admin_email']).'">'.forum_htmlencode($forum_config['o_admin_email']).'</a>'));
$expire = time() + $forum_config['o_timeout_visit'];
forum_setcookie($cookie_name, base64_encode($new_uid.'|'.$password_hash.'|'.$expire.'|'.sha1($salt.$password_hash.forum_hash($expire, $salt))), $expire);
redirect(forum_link($forum_url['index']), $lang_profile['Reg complete']);
}
}
}
// Setup form
$forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
$forum_page['form_action'] = forum_link($forum_url['register']).'?action=register';
// Setup form information
$forum_page['frm_info']['intro'] = '<p>'.$lang_profile['Register intro'].'</p>';
if ($forum_config['o_regs_verify'] != '0')
$forum_page['frm_info']['email'] = '<p class="warn">'.$lang_profile['Reg e-mail info'].'</p>';
// Setup breadcrumbs
$forum_page['crumbs'] = array(
array($forum_config['o_board_title'], forum_link($forum_url['index'])),
array(sprintf($lang_profile['Register at'], $forum_config['o_board_title']), forum_link($forum_url['register'])),
);
($hook = get_hook('rg_register_pre_header_load')) ? eval($hook) : null;
define('FORUM_PAGE', 'register');
require FORUM_ROOT.'header.php';
// START SUBST - <!-- forum_main -->
ob_start();
($hook = get_hook('rg_register_output_start')) ? eval($hook) : null;
?>
<div class="main-head">
<h2 class="hn"><span><?php echo sprintf($lang_profile['Register at'], $forum_config['o_board_title']) ?></span></h2>
</div>
<div class="main-content main-frm">
<div class="ct-box info-box">
<?php echo implode("\n\t\t\t", $forum_page['frm_info'])."\n" ?>
</div>
<?php
// If there were any errors, show them
if (!empty($errors))
{
$forum_page['errors'] = array();
foreach ($errors as $cur_error)
$forum_page['errors'][] = '<li class="warn"><span>'.$cur_error.'</span></li>';
($hook = get_hook('rg_pre_register_errors')) ? eval($hook) : null;
?>
<div class="ct-box error-box">
<h2 class="warn hn"><span><?php echo $lang_profile['Register errors'] ?></span></h2>
<ul class="error-list">
<?php echo implode("\n\t\t\t\t", $forum_page['errors'])."\n" ?>
</ul>
</div>
<?php
}
?>
<div id="req-msg" class="req-warn ct-box error-box">
<p class="important"><?php printf($lang_common['Required warn'], '<em>'.$lang_common['Required'].'</em>') ?></p>
</div>
<form class="frm-form" id="afocus" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
<div class="hidden">
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="csrf_token" value="<?php echo generate_form_token($forum_page['form_action']) ?>" />
</div>
<?php ($hook = get_hook('rg_register_pre_group')) ? eval($hook) : null; ?>
<div class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
<?php ($hook = get_hook('rg_register_pre_username')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Username'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Username help'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php echo(isset($_POST['req_username']) ? forum_htmlencode($_POST['req_username']) : '') ?>" size="35" maxlength="25" /></span>
</div>
</div>
<!--дополнительные обязательные поля при регистрации -->
<?php ($hook = get_hook('rg_register_pre_realname')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Realname'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['obyaz dop pole'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_realname" value="<?php echo(isset($_POST['req_realname']) ? forum_htmlencode($_POST['req_realname']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_jabber')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Jabber'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['obyaz dop pole'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_jabber" value="<?php echo(isset($_POST['req_jabber']) ? forum_htmlencode($_POST['req_jabber']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_aim')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['AOL IM'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['obyaz dop pole'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_aim" value="<?php echo(isset($_POST['req_aim']) ? forum_htmlencode($_POST['req_aim']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_yahoo')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Yahoo'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Username help'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_yahoo" value="<?php echo(isset($_POST['req_yahoo']) ? forum_htmlencode($_POST['req_yahoo']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>
<!--дополнительные обязательные поля при регистрации -->
<?php ($hook = get_hook('rg_register_pre_password')) ? eval($hook) : null; ?>
<?php if ($forum_config['o_regs_verify'] == '0'): ?> <div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password1" size="35" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_confirm_password')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm password'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password2" size="35" /></span>
</div>
</div>
<?php endif; ($hook = get_hook('rg_register_pre_email')) ? eval($hook) : null; ?> <div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['E-mail'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['E-mail help'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_email1" value="<?php echo(isset($_POST['req_email1']) ? forum_htmlencode($_POST['req_email1']) : '') ?>" size="35" maxlength="80" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_email_confirm')) ? eval($hook) : null; ?>
<?php if ($forum_config['o_regs_verify'] == '1'): ?> <div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm e-mail'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Confirm e-mail help'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_email2" value="<?php echo(isset($_POST['req_email2']) ? forum_htmlencode($_POST['req_email2']) : '') ?>" size="35" maxlength="80" /></span>
</div>
</div>
<?php endif;
$languages = array();
$d = dir(FORUM_ROOT.'lang');
while (($entry = $d->read()) !== false)
{
if ($entry != '.' && $entry != '..' && is_dir(FORUM_ROOT.'lang/'.$entry) && file_exists(FORUM_ROOT.'lang/'.$entry.'/common.php'))
$languages[] = $entry;
}
$d->close();
($hook = get_hook('rg_register_pre_language')) ? eval($hook) : null;
// Only display the language selection box if there's more than one language available
if (count($languages) > 1)
{
natcasesort($languages);
?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box select">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Language'] ?></span></label><br />
<span class="fld-input"><select id="fld<?php echo $forum_page['fld_count'] ?>" name="language">
<?php
$select_lang = isset($_POST['language']) ? $_POST['language'] : $forum_config['o_default_lang'];
foreach ($languages as $lang)
{
if ($select_lang == $lang)
echo "\t\t\t\t\t\t".'<option value="'.$lang.'" selected="selected">'.$lang.'</option>'."\n";
else
echo "\t\t\t\t\t\t".'<option value="'.$lang.'">'.$lang.'</option>'."\n";
}
?>
</select></span>
</div>
</div>
<?php
}
$select_timezone = isset($_POST['timezone']) ? $_POST['timezone'] : $forum_config['o_default_timezone'];
$select_dst = isset($_POST['form_sent']) ? isset($_POST['dst']) : $forum_config['o_default_dst'];
($hook = get_hook('rg_register_pre_timezone')) ? eval($hook) : null;
?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box select">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Timezone'] ?></span></label><br />
<span class="fld-input"><select id="fld<?php echo $forum_page['fld_count'] ?>" name="timezone">
<option value="-12"<?php if ($select_timezone == -12) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-12:00'] ?></option>
<option value="-11"<?php if ($select_timezone == -11) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-11:00'] ?></option>
<option value="-10"<?php if ($select_timezone == -10) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-10:00'] ?></option>
<option value="-9.5"<?php if ($select_timezone == -9.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-09:30'] ?></option>
<option value="-9"<?php if ($select_timezone == -9) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-09:00'] ?></option>
<option value="-8"<?php if ($select_timezone == -8) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-08:00'] ?></option>
<option value="-7"<?php if ($select_timezone == -7) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-07:00'] ?></option>
<option value="-6"<?php if ($select_timezone == -6) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-06:00'] ?></option>
<option value="-5"<?php if ($select_timezone == -5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-05:00'] ?></option>
<option value="-4"<?php if ($select_timezone == -4) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-04:00'] ?></option>
<option value="-3.5"<?php if ($select_timezone == -3.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-03:30'] ?></option>
<option value="-3"<?php if ($select_timezone == -3) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-03:00'] ?></option>
<option value="-2"<?php if ($select_timezone == -2) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-02:00'] ?></option>
<option value="-1"<?php if ($select_timezone == -1) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC-01:00'] ?></option>
<option value="0"<?php if ($select_timezone == 0) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC'] ?></option>
<option value="1"<?php if ($select_timezone == 1) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+01:00'] ?></option>
<option value="2"<?php if ($select_timezone == 2) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+02:00'] ?></option>
<option value="3"<?php if ($select_timezone == 3) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+03:00'] ?></option>
<option value="3.5"<?php if ($select_timezone == 3.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+03:30'] ?></option>
<option value="4"<?php if ($select_timezone == 4) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+04:00'] ?></option>
<option value="4.5"<?php if ($select_timezone == 4.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+04:30'] ?></option>
<option value="5"<?php if ($select_timezone == 5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+05:00'] ?></option>
<option value="5.5"<?php if ($select_timezone == 5.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+05:30'] ?></option>
<option value="5.75"<?php if ($select_timezone == 5.75) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+05:45'] ?></option>
<option value="6"<?php if ($select_timezone == 6) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+06:00'] ?></option>
<option value="6.5"<?php if ($select_timezone == 6.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+06:30'] ?></option>
<option value="7"<?php if ($select_timezone == 7) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+07:00'] ?></option>
<option value="8"<?php if ($select_timezone == 8) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+08:00'] ?></option>
<option value="8.75"<?php if ($select_timezone == 8.75) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+08:45'] ?></option>
<option value="9"<?php if ($select_timezone == 9) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+09:00'] ?></option>
<option value="9.5"<?php if ($select_timezone == 9.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+09:30'] ?></option>
<option value="10"<?php if ($select_timezone == 10) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+10:00'] ?></option>
<option value="10.5"<?php if ($select_timezone == 10.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+10:30'] ?></option>
<option value="11"<?php if ($select_timezone == 11) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+11:00'] ?></option>
<option value="11.5"<?php if ($select_timezone == 11.5) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+11:30'] ?></option>
<option value="12"<?php if ($select_timezone == 12) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+12:00'] ?></option>
<option value="12.75"<?php if ($select_timezone == 12.75) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+12:45'] ?></option>
<option value="13"<?php if ($select_timezone == 13) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+13:00'] ?></option>
<option value="14"<?php if ($select_timezone == 14) echo ' selected="selected"' ?>><?php echo $lang_profile['UTC+14:00'] ?></option>
</select></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_dst_checkbox')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box checkbox">
<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="dst"<?php if ($select_dst) echo ' checked="checked"' ?> /></span>
<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Adjust for DST'] ?></span> <?php echo $lang_profile['DST label'] ?></label>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_group_end')) ? eval($hook) : null; ?>
</div>
<?php ($hook = get_hook('rg_register_group_end')) ? eval($hook) : null; ?>
<div class="frm-buttons">
<span class="submit"><input type="submit" name="register" value="<?php echo $lang_profile['Register'] ?>" /></span>
</div>
</form>
</div>
<?php
($hook = get_hook('rg_end')) ? eval($hook) : null;
$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_main -->
require FORUM_ROOT.'footer.php';Добавлено спустя 5 минут 10 секунд:
и последний шаг, в файле include\functions.php
в запросе к базе добавил элементы массива передаваемые в базу (которые были созданы в файле register.php)
вот часть кода этого файла (целиком не опубликовался из за ограничения в количестве символов поста форума):
// Adds a new user. The username must be passed through validate_username() first.
function add_user($user_info, &$new_uid)
{
global $forum_db, $base_url, $lang_common, $forum_config, $forum_user, $forum_url;
$return = ($hook = get_hook('fn_add_user_start')) ? eval($hook) : null;
if ($return != null)
return;
// Add the user
$query = array(
'INSERT' => 'username, group_id, jabber, realname, aim, yahoo, password, email, email_setting, timezone, dst, language, style, registered, registration_ip, last_visit, salt, activate_key',
'INTO' => 'users',
'VALUES' => '\''.$forum_db->escape($user_info['username']).'\', '.$user_info['group_id'].', \''.$forum_db->escape($user_info['jabber']).'\', \''.$forum_db->escape($user_info['realname']).'\', \''.$forum_db->escape($user_info['aim']).'\', \''.$forum_db->escape($user_info['yahoo']).'\', \''.$forum_db->escape($user_info['password_hash']).'\', \''.$forum_db->escape($user_info['email']).'\', '.$user_info['email_setting'].', '.floatval($user_info['timezone']).', '.$user_info['dst'].', \''.$forum_db->escape($user_info['language']).'\', \''.$forum_db->escape($user_info['style']).'\', '.$user_info['registered'].', \''.$forum_db->escape($user_info['registration_ip']).'\', '.$user_info['registered'].', \''.$forum_db->escape($user_info['salt']).'\', '.$user_info['activate_key'].''
);
($hook = get_hook('fn_add_user_qr_insert_user')) ? eval($hook) : null;
$forum_db->query_build($query) or error(__FILE__, __LINE__);
$new_uid = $forum_db->insert_id();
// Must the user verify the registration?
if ($user_info['require_verification'])
{
// Load the "welcome" template
$mail_tpl = forum_trim(file_get_contents(FORUM_ROOT.'lang/'.$forum_user['language'].'/mail_templates/welcome.tpl'));
// The first row contains the subject
$first_crlf = strpos($mail_tpl, "\n");
$mail_subject = forum_trim(substr($mail_tpl, 8, $first_crlf-8));
$mail_message = forum_trim(substr($mail_tpl, $first_crlf));
$mail_subject = str_replace('<board_title>', $forum_config['o_board_title'], $mail_subject);
$mail_message = str_replace('<base_url>', $base_url.'/', $mail_message);
$mail_message = str_replace('<username>', $user_info['username'], $mail_message);
$mail_message = str_replace('<activation_url>', str_replace('&', '&', forum_link($forum_url['change_password_key'], array($new_uid, substr($user_info['activate_key'], 1, -1)))), $mail_message);
$mail_message = str_replace('<activation_url>', str_replace('&', '&', forum_link($forum_url['change_password_key'], array($new_uid, substr($user_info['activate_key'], 1, -1)))), $mail_message);
$mail_message = str_replace('<board_mailer>', sprintf($lang_common['Forum mailer'], $forum_config['o_board_title']), $mail_message);
($hook = get_hook('fn_add_user_send_verification')) ? eval($hook) : null;
forum_mail($user_info['email'], $mail_subject, $mail_message);
}
// Should we alert people on the admin mailing list that a new user has registered?
if ($user_info['notify_admins'] && $forum_config['o_mailing_list'] != '')
{
$mail_subject = 'Alert - New registration';
$mail_message = 'User \''.$user_info['username'].'\' registered in the forums at '.$base_url.'/'."\n\n".'User profile: '.forum_link($forum_url['user'], $new_uid)."\n\n".'-- '."\n".'Forum Mailer'."\n".'(Do not reply to this message)';
forum_mail($forum_config['o_mailing_list'], $mail_subject, $mail_message);
}
($hook = get_hook('fn_add_user_end')) ? eval($hook) : null;
}Добавлено спустя 5 минут 57 секунд:
по аналогии можно переделать и остальные поля, а так же добавить самим новые поля в базу руками
4 25.01.2010 04:09
Re: (Обязательно) добавление полей при регистрации (4 ответов, оставленных в Общие вопросы)
в общем долго думал, что же сделал не так. понял что затупил в одном моменте. эти все данные снимаются при заполнении формы и передаются массивом $user_info = array в скрипт, который уже их заносит в базу. а заносит он не все элементы массива. в общем полез файлик include\functions.php и там нашел вот что
$query = array(
'INSERT' => 'username, group_id, password, email, email_setting, timezone, dst, language, style, registered, registration_ip, last_visit, salt, activate_key',
'INTO' => 'users',
'VALUES' => '\''.$forum_db->escape($user_info['username']).'\', '.$user_info['group_id'].', \''.$forum_db->escape($user_info['password_hash']).'\', \''.$forum_db->escape($user_info['email']).'\', '.$user_info['email_setting'].', '.floatval($user_info['timezone']).', '.$user_info['dst'].', \''.$forum_db->escape($user_info['language']).'\', \''.$forum_db->escape($user_info['style']).'\', '.$user_info['registered'].', \''.$forum_db->escape($user_info['registration_ip']).'\', '.$user_info['registered'].', \''.$forum_db->escape($user_info['salt']).'\', '.$user_info['activate_key'].''
);добавил туда свои элементы массива, тока пока в базу попадают почему то "0", как разберусь почему - отпишусь кому интересно
5 21.01.2010 05:25
Тема: (Обязательно) добавление полей при регистрации (4 ответов, оставленных в Общие вопросы)
как добавить новые поля не придумал, поступил так: в файле lang\Russian\profile.php поменял перевод полей
'Jabber' => 'Название организации',
'AOL IM' => 'Должность',далее в файле register.php скопировал и вставил дважды кусок кода выводящий поле для имени
<?php ($hook = get_hook('rg_register_pre_username')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Username'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['Username help'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php echo(isset($_POST['req_username']) ? forum_htmlencode($_POST['req_username']) : '') ?>" size="35" maxlength="25" /></span>
</div>
</div><?php ($hook = get_hook('rg_register_pre_jabber')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Jabber'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['obyaz dop pole'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_jabber" value="<?php echo(isset($_POST['req_jabber']) ? forum_htmlencode($_POST['req_jabber']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>
<?php ($hook = get_hook('rg_register_pre_aim')) ? eval($hook) : null; ?>
<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
<div class="sf-box text required">
<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['AOL IM'] ?> <em><?php echo $lang_common['Required'] ?></em></span> <small><?php echo $lang_profile['obyaz dop pole'] ?></small></label><br />
<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_aim" value="<?php echo(isset($_POST['req_aim']) ? forum_htmlencode($_POST['req_aim']) : '') ?>" size="50" maxlength="250" /></span>
</div>
</div>соответственно поменял значения передаваемые в скрипт reg_username на reg_aim и reg_jabber
объявил переменные
'jabber' => $jabber,
'aim' => $aim,там же где объявленна переменная $username
и добавил строчки вот сюда:
if (empty($errors))
{
$username = forum_trim($_POST['req_username']);
$jabber = forum_trim($_POST['req_jabber']);
$aim = forum_trim($_POST['req_aim']);
$email1 = strtolower(forum_trim($_POST['req_email1']));
все по аналогии с полем username делал, поля отображаются, если поля не заполнены то просит их заполнить и регистрацию не выполняет. продолжаем регистрацию, входим и поля оказываются пустыми ,в чем проблема? подскажите почему данные до базы не доходят?
6 21.01.2010 04:30
Re: Можно ли сделать премодерацию при регистрации новых пользователей? (16 ответов, оставленных в Безопасность)
тоже понадобилось сделать форум с пред модерацией, решил проблему так:
создал новую групп пользователей, обозвал ее "не подтверждены администратором", назначил ее дефолтной группой и запретил для этой группы все, создание тем, постов и даже просмотр. регулярно захожу, просматриваю юзеров, ботов и левых удаляю а нужных перевожу в группу "участники".
7 19.01.2010 22:29
Re: [Запрос] дополнительные поля при регистрации (3 ответов, оставленных в Расширения v1.3)
Easy Profile Fields новая версия вышла, тока под 1.3.4 версией форума не работает. напишите плз кратенький мануал по ручному добавлению полей а то у самого не получается.
новые поля в профиле добавлять не стал, взял готовые "ася" "яху" "аим" в базе максимальное кол во знаков до 250 увеличил и в ланг файле перевод поправил под себя, вроде все хорошо.
стал по аналогии с полем username эти поля на страничку регистрации переводить, формы отображаются но в базу не пишутся данные из них. может кто помочь? могу выкинуть сюда текст файла register.php
8 02.03.2008 23:41
Re: Обсуждение сборки punbb-1_2_хх-russian-utf только здесь! (374 ответов, оставленных в Вопросы и ответы)
на странице регистрации выдает внизу вот такое предупрежднеие, как бы его убрать?
PHP Warning: session_start() [function.session-start]: open(C:\DOCUME~1\9335~1\LOCALS~1\Temp\php\session\sess_appquhrpsd18epujf47lra4bh3, O_RDWR) failed: Permission denied (13) in C:\Inetpub\wwwroot\forum\register.php on line 37 PHP Warning: Unknown: open(C:\DOCUME~1\9335~1\LOCALS~1\Temp\php\session\sess_appquhrpsd18epujf47lra4bh3, O_RDWR) failed: Permission denied (13) in Unknown on line 0 PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\DOCUME~1\9335~1\LOCALS~1\Temp\php\session) in Unknown on line 0
при проверке картинки пре регистрации все время выдает что с картинки переписанно не верно... пришлось отключить (
9 23.02.2008 12:01
Re: Обсуждение сборки punbb-1_2_хх-russian-utf только здесь! (374 ответов, оставленных в Вопросы и ответы)
мой вопрос настолько глуп что никто не хочет отвечать?
10 21.02.2008 23:20
Re: Обсуждение сборки punbb-1_2_хх-russian-utf только здесь! (374 ответов, оставленных в Вопросы и ответы)
добрый день, старая ошибка
For work with utf-8 encoding needed MBSTRING extension
раскоментировал в пхп.ини модуль, сам модуль залил в пхп\ехт после этого вылезает
For work with utf-8 encoding needed MBSTRING extension!PHP Warning: PHP Startup: mbstring: Unable to initialize module Module compiled with module API=20050922, debug=0, thread-safety=1 PHP compiled with module API=20060613, debug=0, thread-safety=1 These options need to match in Unknown on line 0
подскажите где сделал неправильно
11 19.05.2007 04:43
Re: Переезд с одного адреса на другой (19 ответов, оставленных в Установка и настройка)
в локалке... .у нас сетка на 50 чел.... для них, на биллинговом серваке, поднял форум....
12 19.05.2007 03:07
Re: Переезд с одного адреса на другой (19 ответов, оставленных в Установка и настройка)
192.168.0.200/forum/viewtopic.php?pid=754#p754
Добавлено спустя 1 минуту 4 секунды:
192.168.0.200/forum/viewtopic.php?id=7 вот тут добавляем пост, и при нажатии добавить на страничке с ошибкой вот ссылка ,указанная выше
13 17.05.2007 20:38
Re: Переезд с одного адреса на другой (19 ответов, оставленных в Установка и настройка)
удалил, не помогло, потом удалил все файлы из дириктории кэш...... на всякий случай прошелся поиском по содержимому в каталоге с форумом (на локальном компе), старого адреса больше нигде не осталось..... "Ваш последний визит был: 2007-04-20 19:21:49", в день когда веб сервер упал......... и при постах попрежнему та же фраза "Ссылка, по которой вы пришли неверная или устаревшая"
14 17.05.2007 13:18
Re: Переезд с одного адреса на другой (19 ответов, оставленных в Установка и настройка)
Люди, помогите пожалйста, форум работает на склите, все было хорошо, пока не перенес на другой ип : Неверный запрос. Ссылка, по которой вы пришли неверная или устаревшая.... в админ панели адрес форума поменял, открыл базу блокнотом, и все ипы сменил.... не помогло, что делать.... спасайте