Страниц (65): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Найдено сообщений: 970 |
NordWest |
Отправлено: 16 апреля 2018 — 12:01 • Тема: Мод : Бэкап форума • Форум: Модификации и дополнения |
Ответов: 75 Просмотров: 43425
 |
Можно ещё так заменить
CODE:if(strpos($turl,'subfolder')) {
так как тут по логике скрипта использовать функцию preg_match избыточно.
Однако разницу в скорости мы ощутить вряд ли сможем. 
(Добавление)
Нет, беру свои слова обратно - функция strpos работает не совсем корректно. |
NordWest |
Отправлено: 15 апреля 2018 — 22:33 • Тема: Наведение порядка в "Пользователях" • Форум: Обсуждаем |
Ответов: 78 Просмотров: 42412
 |
Возможно я дую на воду, но интегрировать в общедоступный интерфейс функции, которые по уму должны быть доступны только через админку мне кажется опрометчивым в плане безопасности. Задайте себе вопрос зачем при входе в админцентр вас повторно просят авторизоваться? |
NordWest |
Отправлено: 15 апреля 2018 — 18:10 • Тема: Наведение порядка в "Пользователях" • Форум: Обсуждаем |
Ответов: 78 Просмотров: 42412
 |
Parapsixolog пишет:Нужна ли эта сортировка пользователям? Только в админку. Если добавить для пользователей - можно создать большую нагрузку на сервер. |
NordWest |
Отправлено: 15 апреля 2018 — 18:05 • Тема: Мод : Бэкап форума • Форум: Модификации и дополнения |
Ответов: 75 Просмотров: 43425
 |
Если я понял формат то просто меняем одну функцию на другую.
Попробуйте так
CODE:if(preg_match('subfolder',$turl)) { |
NordWest |
Отправлено: 10 апреля 2018 — 21:59 • Тема: Выбор одного стиля для всех пользователей • Форум: Обсуждение |
Ответов: 19 Просмотров: 11773
 |
Parapsixolog пишет: Ведь фактически нужно функцию выбора стиля по умолчанию в админке, из" гостей" переделать в "для всех" Завтра гляну, что можно сделать. |
NordWest |
Отправлено: 10 апреля 2018 — 15:47 • Тема: Создание дефолтного скина для ExBB • Форум: Обсуждение |
Ответов: 94 Просмотров: 77061
 |
electron
А этот стиль я так понял в свободном доступе никогда не был.
Похоже его готовили для платной версии ExBB или я путаю?
|
NordWest |
Отправлено: 10 апреля 2018 — 15:30 • Тема: Выбор одного стиля для всех пользователей • Форум: Обсуждение |
Ответов: 19 Просмотров: 11773
 |
Parapsixolog пишет:То есть выбрал один стиль за всех. Не очень понял суть...
Пользователи, когда регистрируются - у них у всех выставлен дефолтный стиль, стиль, который указан в админке. Меняете в админке дефолтный стиль и его увидят все, за исключением тех, кто в своем профиле выставлял что-то другое, но таких немного.
Вы поясните зачем вам это нужно?
(Добавление)
Ещё раз перечитал ваш пост... Вы хотите принудительно сбросить всех на дефолтный стиль. Такого функционала в движке нет, хотя наверное можно написать - ничего особо сложного не вижу.
А пока можно сделать просто - выставляете нужный вам стиль как дефолтный в админке, а все остальные стили тупо куда-то прячите. Движок устроен так, что не найдя прописанного в профиле стиля попытается использовать дефолтный. |
NordWest |
Отправлено: 10 апреля 2018 — 09:41 • Тема: Дополнение: Создание нового пользователя • Форум: Модификации и дополнения |
Ответов: 0 Просмотров: 2002
 |
Данное дополнение позволит непосредственно из админки добавить нового пользователя.
Дополнение создавалась для версии ExBB FM 1.0 Final но вероятно подойдёт и для ExBB RC1.01
Открываем файл modules/memcontrol/language/russian/lang.php в котором ищем строку
CODE:$this->LANG['RegedDate'] = 'Дата регистрации';
после которой вставляем строки
CODE:$this->LANG['AddUser'] = 'Добавить пользователя';
Открываем файл modules/memcontrol/admintemplates/memblist.tpl в котором ищем строку
CODE:<td class="catbottom" colspan="7" height="28" align="right">
после которой вставляем строки
CODE:<input type="button" value="{$fm->LANG['AddUser']}" onclick="javascript:window.location='setmembers.php?action=new_user'">
Открываем файл setmembers.php в котором ищем строку
CODE:} elseif ($fm->input['action'] == 'log') {
перед которой вставляем строки
Спойлер (Отобразить)CODE:} elseif ($fm->input['action'] == 'new_user')
{
$allusers = $fm->_Read2Write($fp_allusers,FM_USERS);
ksort($allusers, SORT_NUMERIC);
end($allusers);
$user_id = key($allusers) + 1;
$user = array();
$user['id'] = $user_id;
$user['status'] = 'me';
$user['name'] = 'UserId'.$user_id;
$user['pass'] = md5('UserId'.$user_id);
$user['mail'] = '';
$user['title'] = '';
$user['posts'] = 0;
$user['joined'] = time();
$user['ip'] = $fm->_IP;
$user['showemail'] = false;
$user['www'] = '';
$user['icq'] = '';
$user['aim'] = '';
$user['location'] = '';
$user['interests'] = '';
$user['sig'] = '';
$user['sig_on'] = false;
$user['lang'] = $fm->exbb['default_lang'];
$user['skin'] = $fm->exbb['default_style'];
$user['timedif'] = 0;
$user['avatar'] = 'noavatar.gif';
$user['upload'] = false;
$user['visible'] = false;
$user['new_pm'] = false;
$user['sendnewpm'] = false;
$user['posts2page'] = $fm->exbb['posts_per_page'];
$user['topics2page'] = $fm->exbb['topics_per_page'];
$user['last_visit'] = 0;
$allusers[$user_id]['n'] = strtolower($user['name']);
$allusers[$user_id]['m'] = '';
$allusers[$user_id]['p'] = 0;
$fm->_Write($fp_allusers, $allusers);
$fm->_SAVE_STATS(array( "lastreg" => array( $user['name'], 0 ), "last_id" => array( $user['id'], 0 ), "totalmembers" => array( count($allusers), 0 ) ));
$fm->_Read2Write($fp_user, 'members/'.$user_id.'.php');
$fm->_Write($fp_user, $user);
$fm->_WriteLog('Создан новый пользователь '.$user['name'], 1);
unset($user, $allusers);
$fm->_Message($fm->LANG['MainMsg'],'Новый пользователь успешно создан','setmodule.php?module=memcontrol',1); |
NordWest |
Отправлено: 10 апреля 2018 — 02:26 • Тема: Наведение порядка в "Пользователях" • Форум: Обсуждаем |
Ответов: 78 Просмотров: 42412
 |
Yamaliya пишет:дата последней активности нужна и нужна сортировка по этому столбцу. Столбец "Дата последней активности" прикручивается без проблем. А вот сортировка по этому столбцу - так ли это нужно? Ведь в описываемой вами ситуации остаётся очень небольшое количество пользователей, которых вы бы то же хотели удалить, но они не попали под глобальную чистку.
Делаете сортировку по количеству постов в порядке возрастания. На первых двух страницах среди прочих будут и ваши кандидаты на удаление.
Просматриваете, обращаете внимание на дату последнего посещения и руками "подчищаете" тех, кого считаете лишним.  |
NordWest |
Отправлено: 9 апреля 2018 — 15:55 • Тема: Наведение порядка в "Пользователях" • Форум: Обсуждаем |
Ответов: 78 Просмотров: 42412
 |
Создал новую тему для дополнения, позволяющего удалять "мёртвые" акаунты.
Вроде в этот раз ошибок быть не должно. Убрал из кода отображение в списке пользователей даты последней активности и возможность создавать нового пользователя - если нужно, подскажу где почитать отдельно. |
NordWest |
Отправлено: 9 апреля 2018 — 15:48 • Тема: Дополнение: Массовое удаление "мёртвых" акаунтов • Форум: Модификации и дополнения |
Ответов: 33 Просмотров: 19626
 |
Данное дополнение создает в админке возможность массово удалять "мёртвые" учётки. Критерий удаления - отсутствие постов и отсутствие посещения форума в течении последнего года.
Дополнение создавалась для версии ExBB FM 1.0 Final, однако с большой вероятностью подойдёт и для ExBB FM 1.0 RC1.01
Внимание!!! Перед установкой и тестированием данного мода следует сделать резервную копию форума дабы застраховаться от разного рода неожиданностей.
Часть 1.
Открываем файл modules/memcontrol/language/russian/lang.php в котором ищем строку
CODE:$this->LANG['UsersDeleteOk'] = 'Выбранные пользователи успешно удалены!';
перед которой вставляем строку
CODE:$this->LANG['DelUsersOld'] = 'Удалить мёртвые учетные записи';
Затем открываем файл modules/memcontrol/admintemplates/memblist.tpl в котором ищем строки
CODE:<input name="mode" type="submit" value="{$fm->LANG['DelNotify']}">
перед которой вставляем строку
CODE:<input name="clear" type="submit" value="{$fm->LANG['DelUsersOld']}">
(Добавление)
Часть 2.
Открываем файл modules/memcontrol/index.php в котором ищем функцию deletemember() которую целиком заменяем кодом
Спойлер (Отобразить)CODE:function deletuserold() {
global $fm;
$deletedTotal = 0;
$users = $fm->_Read2Write($fp_users,FM_USERS);
$users_id = array_keys($users);
$nowtime = $fm->_Nowtime;
foreach ($users_id as $user_id)
{
$user = $fm->_Getmember($user_id);
if ($user['posts'] == 0 && ($nowtime - $user['last_visit']) > 31536000)
{
if (file_exists('members/'.$user_id.'.php')) unlink('members/'.$user_id.'.php');
if (file_exists('messages/'.$user_id.'-out.php')) {unlink('messages/'.$user_id.'-out.php');}
if (file_exists('messages/'.$user_id.'-msg.php')) {unlink('messages/'.$user_id.'-msg.php');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar')) {unlink('im/avatars/personal/'.$user_id.'-avatar');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.png')) {unlink('im/avatars/personal/'.$user_id.'-avatar.png');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.jpg')) {unlink('im/avatars/personal/'.$user_id.'-avatar.jpg');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.gif')) {unlink('im/avatars/personal/'.$user_id.'-avatar.gif');}
if (file_exists('modules/belong/data/'.$user_id.'.db')) {unlink('modules/belong/data/'.$user_id.'.db');}
if (file_exists('modules/reputation/data/'.$user_id.'.php')) {unlink('modules/reputation/data/'.$user_id.'.php');}
if (file_exists('modules/watches/data/db2_member'.$user_id.'.db')) {unlink('modules/watches/data/db2_member'.$user_id.'.db');}
if (file_exists('modules/watches/data/db3_member'.$user_id.'.db')) {unlink('modules/watches/data/db3_member'.$user_id.'.db');}
if (file_exists('modules/birstday/data/birstday_data.php'))
{
$birstdays = $fm->_Read2Write($fp_birst, 'modules/birstday/data/birstday_data.php', false);
$SaveFlag = false;
foreach ($birstdays as $day => $users) {
foreach ($users as $id => $info) {
if ($id == $user_id) {unset($birstdays[$day][$user_id]); $SaveFlag = true;}
}
if (count($birstdays[$day]) == 0) {unset($birstdays[$day]); $SaveFlag = true;}
}
($SaveFlag === true) ? $fm->_Write($fp_birst, $birstdays) : $fm->_Fclose($fp_birst);
}
if (file_exists('modules/loginza/data/member'.$user_id.'.php'))
{
$loginza = $fm->_Read('modules/loginza/data/member'.$user_id.'.php');
$id_keys = array_keys ($loginza);
$url = $id_keys[0];
$hash = $loginza[$url]['hash'];
if (file_exists('modules/loginza/data/'.$hash.'.php')) {unlink('modules/loginza/data/'.$hash.'.php');}
unlink('modules/loginza/data/member'.$user_id.'.php');
}
if (isset($users[$user_id])) unset($users[$user_id]);
$deletedTotal++;
}
}
ksort($users);
end($users);
$last_id = key($users);
$totalusers = count($users);
reset($users);
$last_name = GetName($last_id);
$fm->_SAVE_STATS(array( "lastreg" => array( $last_name, 0 ), "last_id" => array( $last_id, 0 ), "totalmembers" => array( $totalusers, 0 ) ));
$fm->_Write($fp_users,$users);
$redir = '';
if ($fm->_String('s')) $redir .= '&s='.$fm->input['s'];
if ($fm->_String('order')) $redir .= '&order='.$fm->input['order'];
if ($fm->_Intval('p')) $redir .= '&p='.$fm->input['p'];
if ($fm->_Intval('pg')) $redir .= '&pg='.$fm->input['pg'];
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['UsersDeleteOk'],'setmodule.php?module=memcontrol',1);
}
function deletemember() {
global $fm;
if ($fm->_String('clear') !== '') deletuserold();
if (count($del_ids = $fm->_Array('del')) === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['UsersNotSelected'],'',1);
}
if ($fm->_String('mode') !== '') delet_mail();
$deletedTotal = 0;
$users = $fm->_Read2Write($fp_users,FM_USERS);
foreach ($del_ids as $user_id) {
if (file_exists('members/'.$user_id.'.php')) unlink('members/'.$user_id.'.php');
if (file_exists('messages/'.$user_id.'-out.php')) {unlink('messages/'.$user_id.'-out.php');}
if (file_exists('messages/'.$user_id.'-msg.php')) {unlink('messages/'.$user_id.'-msg.php');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar')) {unlink('im/avatars/personal/'.$user_id.'-avatar');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.png')) {unlink('im/avatars/personal/'.$user_id.'-avatar.png');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.jpg')) {unlink('im/avatars/personal/'.$user_id.'-avatar.jpg');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.gif')) {unlink('im/avatars/personal/'.$user_id.'-avatar.gif');}
if (file_exists('modules/belong/data/'.$user_id.'.db')) {unlink('modules/belong/data/'.$user_id.'.db');}
if (file_exists('modules/reputation/data/'.$user_id.'.php')) {unlink('modules/reputation/data/'.$user_id.'.php');}
if (file_exists('modules/watches/data/db2_member'.$user_id.'.db')) {unlink('modules/watches/data/db2_member'.$user_id.'.db');}
if (file_exists('modules/watches/data/db3_member'.$user_id.'.db')) {unlink('modules/watches/data/db3_member'.$user_id.'.db');}
if (file_exists('modules/birstday/data/birstday_data.php')) {
$birstdays = $fm->_Read2Write($fp_birst, 'modules/birstday/data/birstday_data.php', false);
$SaveFlag = false;
foreach ($birstdays as $day => $users) {
foreach ($users as $id => $info) {
if ($id == $userid) {unset($birstdays[$day][$user_id]); $SaveFlag = true;}
}
if (count($birstdays[$day]) == 0) {unset($birstdays[$day]); $SaveFlag = true;}
}
($SaveFlag === true) ? $fm->_Write($fp_birst, $birstdays) : $fm->_Fclose($fp_birst);
}
if (file_exists('modules/loginza/data/member'.$user_id.'.php'))
{
$loginza = $fm->_Read('modules/loginza/data/member'.$user_id.'.php');
$id_keys = array_keys ($loginza);
$url = $id_keys[0];
$hash = $loginza[$url]['hash'];
if (file_exists('modules/loginza/data/'.$hash.'.php')) {unlink('modules/loginza/data/'.$hash.'.php');}
unlink('modules/loginza/data/member'.$user_id.'.php');
}
if (isset($users[$user_id])) unset($users[$user_id]);
$deletedTotal++;
}
ksort($users);
end($users);
$last_id = key($users);
$totalusers = count($users);
reset($users);
$last_name = GetName($last_id);
$fm->_SAVE_STATS(array( "lastreg" => array( $last_name, 0 ), "last_id" => array( $last_id, 0 ), "totalmembers" => array( $totalusers, 0 ) ));
$fm->_Write($fp_users,$users);
$redir = '';
if ($fm->_String('s')) $redir .= '&s='.$fm->input['s'];
if ($fm->_String('order')) $redir .= '&order='.$fm->input['order'];
if ($fm->_Intval('p')) $redir .= '&p='.$fm->input['p'];
if ($fm->_Intval('pg')) $redir .= '&pg='.$fm->input['pg'];
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['UsersDeleteOk'],'setmodule.php?module=memcontrol'.$redir,1);
}
(Добавление)
Часть 3.
Открываем файл setmembers.php в котором ищем функцию deletemember() которую целиком заменяем кодом
Спойлер (Отобразить)CODE:function deletemember() {
global $fm;
if (($user_id = $fm->_Intval('userid')) === 0 || !file_exists('members/'.$user_id.'.php')) {
$fm->_Message($fm->LANG['UserAdmin'],$fm->LANG['UserNotFound'],'',1);
}
if (unlink('members/' . $user_id . '.php')) {
if (file_exists('messages/'.$user_id.'-out.php')) {unlink('messages/'.$user_id.'-out.php');}
if (file_exists('messages/'.$user_id.'-msg.php')) {unlink('messages/'.$user_id.'-msg.php');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar')) {unlink('im/avatars/personal/'.$user_id.'-avatar');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.png')) {unlink('im/avatars/personal/'.$user_id.'-avatar.png');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.jpg')) {unlink('im/avatars/personal/'.$user_id.'-avatar.jpg');}
if (file_exists('im/avatars/personal/'.$user_id.'-avatar.gif')) {unlink('im/avatars/personal/'.$user_id.'-avatar.gif');}
if (file_exists('modules/belong/data/'.$user_id.'.db')) {unlink('modules/belong/data/'.$user_id.'.db');}
if (file_exists('modules/reputation/data/'.$user_id.'.php')) {unlink('modules/reputation/data/'.$user_id.'.php');}
if (file_exists('modules/watches/data/db2_member'.$user_id.'.db')) {unlink('modules/watches/data/db2_member'.$user_id.'.db');}
if (file_exists('modules/watches/data/db3_member'.$user_id.'.db')) {unlink('modules/watches/data/db3_member'.$user_id.'.db');}
/*start clear birstday data file */
if (file_exists('modules/birstday/data/birstday_data.php')) {
$birstdays = $fm->_Read2Write($fp_birst, 'modules/birstday/data/birstday_data.php', false);
$SaveFlag = false;
foreach ($birstdays as $day => $users) {
foreach ($users as $id => $info) {
if ($id == $user_id) {
unset( $birstdays[$day][$user_id] );
$SaveFlag = true;
}
}
if (count($birstdays[$day]) == 0) {
unset( $birstdays[$day] );
$SaveFlag = true;
}
}
($SaveFlag === true) ? $fm->_Write($fp_birst, $birstdays) : $fm->_Fclose($fp_birst);
}
/*end clear birstday data file */
if (file_exists('modules/loginza/data/member'.$userid.'.php'))
{
$loginza = $fm->_Read('modules/loginza/data/member'.$user_id.'.php');
$id_keys = array_keys ($loginza);
$url = $id_keys[0];
$hash = $loginza[$url]['hash'];
if (file_exists('modules/loginza/data/'.$hash.'.php')) {unlink('modules/loginza/data/'.$hash.'.php');}
unlink('modules/loginza/data/member'.$user_id.'.php');
}
UpdateAllusersInfo();
$fm->_Message($fm->LANG['UserAdmin'], $fm->LANG['UserDeleted'], 'setmodule.php?module=memcontrol', 1);
}
else {$fm->_Message($fm->LANG['UserAdmin'],$fm->LANG['UserNotDeleted'],'',1);}
} |
|
Страниц (65): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
|