/** * Генерирует форму редактирования пользователя в админ-панели. * * @param $save_link Ссылка на обработчик формы (имя модуля и параметр action) * @param string $a Добавление или редавтирование пользователя (edit or add) * @param int $id Идентификатор пользователя * @param bool $isadmin Редактирование администратора (влияет на выборку и отключает активацию по email) * @param bool $EditProfile Редактирование своего профиля администратором (не может изменить свой статус если не системный администратор) * @return */ function AdminUserEditor($save_link, $a = 'add', $id = '0', $isadmin = false) { $active = array(false, false, false); $SystemAdmin = System::user()->isSuperUser(); $edit = $a == 'edit'; $editProfile = $edit && !$SystemAdmin && $id == System::user()->Get('u_id'); // Администратор редактирует свой профиль $editStatus = false; // Разрешено редактирование статуса $editType = false; // Разрешено редавтировать тип пользователя // Загружаем данные пользователя из БД if ($edit) { $user = System::database()->SelectOne('users', "`id`='{$id}'" . ($isadmin ? " and `type`='1'" : " and `type`='2'")); if (!$user) { AddTextBox('Ошибка', '<p align="center">Пользователь не найден, либо у вас не достаточно прав для редактирования администраторов.</p>'); return; } } // Устатанавливаем ограничения доступа if ($isadmin) { // Редатируем администратора if ($SystemAdmin) { // Только системные администаторы могут редактировать статус и тип администраторов if (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) { // Если он не системный или системных больше 1 $editStatus = true; } $editType = $editStatus; } } else { // Если пользователь $editStatus = true; // Все администраторы с доступом могут редактировать статус пользователя $editType = $SystemAdmin; // Только системные администраторы могут создавать администраторов } if ($editType) { $user_types_db = System::database()->Select('usertypes'); $types = array('member' => array('member', 'Пользователь', false)); foreach ($user_types_db as $type) { $types[$type['id']] = array(SafeDB($type['id'], 11, int), SafeDB($type['name'], 255, str), false); } } if ($edit) { $login = SafeDB($user['login'], 30, str); $mail = SafeDB($user['email'], 50, str); $hideemail = $user['hideemail'] == 1 ? true : false; $snews = $user['servernews'] == 1 ? true : false; $name = SafeDB($user['name'], 50, str); $tname = SafeDB($user['truename'], 250, str); $age = SafeDB($user['age'], 11, str); $city = SafeDB($user['city'], 100, str); $url = SafeDB($user['url'], 250, str); $icq = SafeDB($user['icq'], 15, str); $gmt = SafeDB($user['timezone'], 255, str); $about = SafeDB($user['about'], 0, str); $avatar = SafeDB($user['avatar'], 250, str); $apersonal = SafeDB($user['a_personal'], 1, int); if ($editStatus) { if ($user['active'] == '1') { $active[0] = true; } elseif ($user['active'] == '0' && $user['activate'] == '') { $active[1] = true; } elseif ($user['active'] == '0' && $user['activate'] != '') { $active[2] = true; } } if ($editType) { if ($user['type'] == '1') { $types[$user['access']][2] = true; } else { $types['member'][2] = true; //пользователь } } $caption = 'Сохранить'; if ($isadmin) { if ($editProfile) { $title = 'Редактирование профиля'; } else { $title = 'Редактирование администратора'; } } else { $title = 'Редактирование пользователя'; } } else { $login = ''; $mail = ''; $snews = false; $hideemail = false; $name = ''; $tname = ''; $age = ''; $city = ''; $url = ''; $icq = ''; $gmt = System::config('general/default_timezone'); $about = ''; $avatar = ''; $apersonal = '0'; if ($editStatus) { $active[0] = true; } if ($editType) { $types['member'][2] = true; } $caption = 'Добавить'; $title = 'Добавить пользователя'; } FormRow('Логин', System::site()->Edit('login', $login, false, 'style="width:400px;" class="autofocus"')); FormRow('Пароль', System::site()->Edit('pass', '', true, 'style="width:400px;"')); FormRow('Повторите пароль<br /><small>(для проверки)</small>', System::site()->Edit('rpass', '', true, 'style="width:400px;"')); FormRow('E-mail', System::site()->Edit('email', $mail, false, 'style="width:300px;"') . ' <label for="hideemail">Скрыть</label> ' . System::site()->Check('hideemail', '1', $hideemail, 'id="hideemail"')); FormRow('<label for="snews">Рассылка</label>', System::site()->Check('snews', '1', $snews, 'id="snews"')); FormRow('Ник', System::site()->Edit('nikname', $name, false, 'style="width:400px;"')); FormRow('Настоящее имя', System::site()->Edit('realname', $tname, false, 'style="width:400px;"')); FormRow('Возраст', System::site()->Edit('age', $age, false, 'style="width:400px;"')); FormRow('Город', System::site()->Edit('city', $city, false, 'style="width:400px;"')); FormRow('Сайт', System::site()->Edit('homepage', $url, false, 'style="width:400px;"')); FormRow('ICQ', System::site()->Edit('icq', $icq, false, 'style="width:400px;"')); $gmt = GetGmtData($gmt); FormRow('Часовой пояс', System::site()->Select('gmt', $gmt, false, 'style="width:400px;"')); FormRow('О себе', System::site()->TextArea('about', $about, 'style="width:400px; height:200px;"')); $avatars = GetGalleryAvatarsData($avatar, $apersonal); if ($apersonal == '1') { $selected = GetPersonalAvatar($id); } else { $selected = GetGalleryAvatar($avatars[1]); } System::site()->AddJS(' ShowAvatar = function(){ if(document.userform.avatar.value==\'\'){ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&user='******'general/personal_avatars_dir') . $avatar) . '\'; }else{ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&aname=' : System::config('general/avatars_dir')) . '\'+document.userform.avatar.value; } }'); FormRow('Аватар', System::site()->Select('avatar', $avatars[0], false, 'onchange="ShowAvatar();"')); FormRow('', '<img id="avatarview" src="' . $selected . '" border="0">'); FormRow('Загрузить аватар', System::site()->FFile('upavatar')); if ($editStatus) { FormRow('Активация', System::site()->Radio('activate', 'auto', $active[0]) . 'Активировать' . System::site()->Radio('activate', 'manual', $active[1]) . 'Не активировать' . (!$isadmin ? System::site()->Radio('activate', 'mail', $active[2]) . 'По E-mail' : '')); } if ($editType) { $user_types = array(); foreach ($types as $type) { System::site()->DataAdd($user_types, $type[0], $type[1], $type[2]); } FormRow('Статус', System::site()->Select('status', $user_types)); } TAddSubTitle($title); AddCenterBox($title); AddForm('<form name="userform" action="' . ADMIN_FILE . '?exe=' . $save_link . '&id=' . $id . '" method="post" enctype="multipart/form-data">', System::site()->Button('Отмена', 'onclick="history.go(-1);"') . System::site()->Submit($caption)); }
function IndexUserRegistration($acceptPost = false, $edit = false) { if (!$edit) { System::user()->UnLogin(false); } else { if (!System::user()->Auth) { System::site()->Login(); return; } } System::site()->AddJS(Indent(' function checkData(f){ if(f.login.value = \'\'){ alert("Логин должен быть не менее ' . System::config('user/login_min_length') . ' и не более 15 символов."); f.login.focus(); return false; } } ')); if (!$edit && System::config('user/registration') == 'off') { System::site()->AddTextBox('Ошибка', '<p align="center">Извините, регистрация приостановлена.</p>'); return; } if ($acceptPost) { AcceptPost($login, $pass, $rpass, $email, $hideemail, $nikname, $realname, $age, $homepage, $icq, $city, $avatar, $apersonal, $gmt, $about, $snews); } elseif ($edit) { GetEditUserData($login, $email, $hideemail, $nikname, $realname, $age, $homepage, $icq, $city, $avatar, $apersonal, $gmt, $about, $snews); $pass = ''; $rpass = ''; } else { $login = ''; $pass = ''; $rpass = ''; $email = ''; $hideemail = false; $nikname = ''; $realname = ''; $age = ''; $homepage = ''; $icq = ''; $city = ''; $avatar = 'noavatar.gif'; $apersonal = '0'; $gmt = System::config('general/default_timezone'); $about = ''; $snews = false; } //Генерируем текст формы System::site()->AddBlock('user_form', true, false, 'form'); $vars = array(); if ($edit) { $vars['action'] = 'update'; $vars['laction'] = 'Сохранить'; $topcaption = 'Данные пользователя'; } else { $vars['action'] = 'create'; $vars['laction'] = 'Зарегистрироваться'; $topcaption = 'Регистрация'; } $fields = explode(',', System::config('user/register_call_data')); //email,snews,realname,age,city,icq,gmt,about $activate = System::config('user/activate_type'); //auto, mail, manual $vars['form_name'] = 'userform'; $vars['url'] = Ufu('index.php?name=user&op=registration', 'user/{op}/'); $vars['enctype'] = 'multipart/form-data'; $vars['llogin'] = '******'; $vars['login'] = $login; $vars['lpass'] = '******'; $vars['pass'] = $pass; $vars['lrpass'] = '******'; $vars['rpass'] = $rpass; $vars['lnikname'] = 'Ваше имя на сайте <font color="#FF0000">*</font>'; $vars['nikname'] = $nikname; $vars['lrealname'] = 'Настоящее имя(Ф.И.О.)'; $vars['realname'] = $realname; $vars['use_realname'] = in_array('realname', $fields) || $edit; $vars['lemail'] = 'E-mail <font color="#FF0000">*</font>'; $vars['email'] = $email; $vars['lhideemail'] = 'Скрыть e-mail'; $vars['hideemail'] = $hideemail ? ' checked="checked"' : ''; $vars['use_email'] = in_array('email', $fields) || $activate == 'mail' || $edit; $vars['lage'] = 'Возраст'; $vars['age'] = $age; $vars['use_age'] = in_array('age', $fields) || $edit; $vars['lhomepage'] = 'Сайт'; $vars['homepage'] = $homepage; $vars['use_homepage'] = in_array('homepage', $fields) || $edit; $vars['licq'] = 'Номер ICQ'; $vars['icq'] = $icq; $vars['use_icq'] = in_array('icq', $fields) || $edit; $vars['lcity'] = 'Город'; $vars['city'] = $city; $vars['use_city'] = in_array('city', $fields) || $edit; $vars['lavatar'] = 'Аватар'; $vars['lload_avatar'] = 'Загрузить аватар<br>(Размеры картинки могут быть автоматически уменьшены. Допустимые форматы: gif, jpeg, png.)'; $vars['avatar_onchange_func'] = 'ShowAvatar()'; $vars['avatar_filename'] = $avatar; $vars['use_avatar'] = in_array('avatar', $fields) || $edit; if ($vars['use_avatar']) { System::site()->AddBlock('avatars', true, true, 'avatar'); $avatars = GetFiles(System::config('general/avatars_dir'), false, true, '.gif.jpg.jpeg.png'); if ($apersonal == '1') { $selected = GetPersonalAvatar(System::user()->Get('u_id')); } elseif ($edit) { $selected = GetGalleryAvatar($avatar); } else { $selected = GetGalleryAvatar($avatars[1]); } if ($apersonal == '1') { System::site()->AddSubBlock('avatars', true, array('name' => '', 'caption' => 'Персональный', 'selected' => true)); } for ($i = 0, $c = count($avatars); $i < $c; $i++) { $avars = array(); $sel = $avatar == $avatars[$i]; $avars['name'] = $avatars[$i]; $avars['selected'] = $sel; $avars['caption'] = $avatars[$i]; System::site()->AddSubBlock('avatars', true, $avars); } $vars['av_selected'] = $selected; System::site()->AddJS(' function ShowAvatar(){ if(document.userform.avatar.value==\'\'){ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&user='******'u_id') : System::config('general/personal_avatars_dir') . $avatar) . '\'; }else{ document.userform.avatarview.src = \'' . (System::config('user/secure_avatar_upload') ? 'index.php?name=plugins&p=avatars_render&aname=' : System::config('general/avatars_dir')) . '\'+document.userform.avatar.value; } }'); } $vars['lgmt'] = 'Часовой пояс'; $vars['use_gmt'] = in_array('gmt', $fields) || $edit; if ($vars['use_gmt']) { $gmtd = GetGmtArray(); System::site()->AddBlock('gmt_data', true, true, 'gmt'); for ($i = 0, $c = count($gmtd); $i < $c; $i++) { $gvars['name'] = $gmtd[$i][1]; $gvars['caption'] = $gmtd[$i][0]; $gvars['selected'] = $gmt == $gmtd[$i][1]; System::site()->AddSubBlock('gmt_data', true, $gvars); } } $vars['labout'] = 'Немного о себе'; $vars['about'] = $about; $vars['use_about'] = in_array('about', $fields) || $edit; $vars['kaptcha_url'] = 'index.php?name=plugins&p=antibot'; $vars['kaptcha_width'] = '120'; $vars['kaptcha_height'] = '40'; $vars['lsnews'] = 'Разрешить администраторам сайта присылать Вам уведомления по электронной почте'; $vars['snews'] = $snews ? ' checked="checked"' : ''; $vars['use_snews'] = in_array('snews', $fields) || $edit; System::site()->AddTemplatedBox($topcaption, 'module/user_form.html'); System::site()->SetTitle($topcaption); System::site()->Blocks['user_form']['vars'] = $vars; }
exit; } $user_id = null; $avatar = ''; if (isset($_GET['user'])) { // Аватар из профиля пользователя $user_id = SafeEnv($_GET['user'], 11, int); $avatar = GetPersonalAvatar($user_id, true); } elseif (isset($_GET['aname'])) { // Передано имя файла аватара в папке с аватарами $avatar = GetGalleryAvatar($_GET['aname']); } else { System::log('Plugin::render_avatar Скрипт вызван без параметров.'); } if ($avatar == '' || !is_file($avatar)) { $avatar = GetGalleryAvatar('noavatar.gif'); } // Создаём уменьшенную копию аватара, если нужно и отправляем пользователю if (isset($_GET['size'])) { switch ($_GET['size']) { case 'small': $avatar_64 = System::config('general/personal_avatars_dir') . GetFileName($avatar, true) . '_64x64' . GetFileExt($avatar); if (is_file($avatar_64)) { CreateThumb($avatar_64)->SendToHTTPClient(); } else { CreateThumb($avatar, $avatar_64, 64, 64)->SendToHTTPClient(); } break; case 'smallest': $avatar_24 = System::config('general/personal_avatars_dir') . GetFileName($avatar, true) . '_24x24' . GetFileExt($avatar); if (is_file($avatar_24)) {
/** * Регистрирует данные неавторизованного пользователя. * @global type $config */ public function RegisterGuestData() { $this->Auth = false; $this->Def('u_auth', false); $this->Def('u_level', '3'); $this->Def('u_id', '0'); $this->Def('u_access', '-1'); $this->Def('u_ip', getip()); $this->Def('u_avatar', GetGalleryAvatar('guest.gif')); $this->Def('u_data', array()); }