Страниц (3): « 1 [2] 3 »
Найдено сообщений: 38 |
sqrt |
Отправлено: 29 октября 2016 — 04:07 • Тема: Мод: Ограничение времени редактирования сообщений • Форум: Модификации и дополнения |
Ответов: 44 Просмотров: 38492
 |
Ух ты, как тема актуализировалась!
Может, кто сможет предложить вариант модификации файлов postings.php и topic.php так, чтобы можно простому пользователю было хотя бы так же на заданное время редактирования редактировать и удалять опросы в теме, а то пока что-то не выходит.
Так, postings.php
Спойлер (Отобразить)CODE:function poll_edit() {
global $fm;
$allforums = $fm->_Read(FM_ALLFORUMS);
if (( $topic_id = $fm->_Intval('topic') ) === 0 || ( $forum_id = $fm->_Intval('forum') ) === 0 || !isset( $allforums[$forum_id] )) {
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['CorrectPost']);
}
$fm->_GetModerators($forum_id, $allforums);
if ($fm->_Moderator === false ) {
$fm->_Message($fm->LANG['Poll'], $fm->LANG['EditNo']);
}
$forumname = $allforums[$forum_id]['name'];
$list = $fm->_Read2Write($fp_list, 'forum' . $forum_id . '/list.php');
if (!isset( $list[$topic_id] ) || !file_exists('forum' . $forum_id . '/' . $topic_id . '-poll.php')) {
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['CorrectPost']);
}
$topicname = ( isset( $list[$topic_id]['tnun'] ) ) ? $list[$topic_id]['name'] . ' - ' . $list[$topic_id]['tnun'] : $list[$topic_id]['name'];
$poll_data = $fm->_Read2Write($fp_poll, 'forum' . $forum_id . '/' . $topic_id . '-poll.php', false);
if ($fm->_Boolean($fm->input, 'savepoll') === true) {
if ($fm->_Boolean($fm->input, 'delpoll') === true) {
if ($fm->_Boolean($fm->input, 'request') === true && $fm->_POST === true) {
$fm->_Fclose($fp_poll);
unlink('forum' . $forum_id . '/' . $topic_id . '-poll.php');
$list[$topic_id]['poll'] = false;
$fm->_Write($fp_list, $list);
// Запишем в лог информацию об удалении опроса
$fm->_WriteLog(sprintf($fm->LANG['DeletePollLog'], $list[$topic_id]['name'], strip_tags($forumname)), 2);
$fm->_Message($fm->LANG['PollDel'], $fm->LANG['PollDeleteOk'], 'topic.php?forum=' . $forum_id . '&topic=' . $topic_id);
}
...
CODE:if ($fm->_Moderator === false && $fm->exbb['edit_time'] && $fm->_Nowtime - $post_id > $fm->exbb['edit_time'] * 60) {
$fm->_Message($fm->LANG['Poll'], $fm->LANG['EditNo']);
}
- не катит. Что-то еще там где-то не дает.
topic.php
Спойлер (Отобразить)CODE:function poll($forum_id, $topic_id) {
global $fm, $topic, $firstkey, $_icon;
$pollfile = 'forum' . $forum_id . '/' . $topic_id . '-poll.php';
if (!file_exists($pollfile)) {
return '';
}
$poll_data = $fm->_Read($pollfile, false);
if (!$poll_data['pollname']) {
$poll_data['pollname'] = $topic['name'];
}
$poll_title = $poll_data['pollname'];
$moderlinks = $pollch = $do = '';
if (isset( $poll_data['ids'][$fm->user['id']] ) || $topic['state'] == 'closed') {
foreach ($poll_data['choices'] as $choice) {
$pid = $choice[0];
$ptext = $choice[1];
$votes = $choice[2];
if (!$ptext) {
continue;
}
$percent = ( $votes == 0 ) ? 0 : $votes / $poll_data['votes'] * 100;
$percent = sprintf('%.2f', $percent) . '%';
$width = ( $percent > 0 ) ? (int)$percent * 2 : 0;
include( './templates/' . DEF_SKIN . '/poll_data.tpl' );
}
$do = '<b>' . $fm->LANG['VoteCount'] . $poll_data['votes'] . '</b>';
}
else {
foreach ($poll_data['choices'] as $choice) {
$pid = $choice[0];
$ptext = $choice[1];
if (!$ptext) {
continue;
}
include( './templates/' . DEF_SKIN . '/poll_view.tpl' );
}
$do = '<input type="submit" name="submit" value="' . $fm->LANG['Vote'] . '" class="button" />';
}
$edit = '<a href="postings.php?action=poll&forum=' . $forum_id . '&topic=' . $topic_id . '">' . $_icon['edit'] . '</a>' . $_icon['divider'];
$del = '<a href="postings.php?action=poll&delpoll=yes&savepoll=yes&forum=' . $forum_id . '&topic=' . $topic_id . '">' . $_icon['del'] . '</a>';
$moderlinks = ( $fm->_Moderator === true) ? $edit . ' ' . $del : null;
include( './templates/' . DEF_SKIN . '/poll.tpl' );
unset( $poll_data, $pollch );
return $poll_html;
}
Так, например, вот такая история
CODE:
$moderlinks = ( $fm->_Moderator === true || ( $fm->user['id'] === $member_id && $fm->user['id'] && $topic['state'] != 'closed' )) ? $edit . ' ' . $del : null;
не работает, - кнопки у простого пользователя все равно не появляются...
Примечание по вышеуказанному коду для topic.php: Сделал так, чтобы гости видели опрос и результаты голосования, но голосовать по-прежнему права не имеют (иначе там чехарда просто получится). |
sqrt |
Отправлено: 2 октября 2016 — 19:35 • Тема: Мод: Ограничение времени редактирования сообщений • Форум: Модификации и дополнения |
Ответов: 44 Просмотров: 38492
 |
Если необходимо, чтобы у пользователей была возможность помимо редактирования в течение заданного времени еще и возможность удалить свое сообщение в течение этого же заданного времени, то нужно:
postings.php: (право удаления в течение установленного времени редактирования)
В функции function deletepost():
Найти:
CODE:if ($fm->_Moderator === false) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['PostDeleting'], $fm->LANG['EditNo']);
}
Заменить на:
CODE:if ($fm->_Moderator === false && $fm->exbb['edit_time'] && $fm->_Nowtime - $post_id > $fm->exbb['edit_time'] * 60) {
$fm->_FcloseAll();
$fm->_Message($fm->LANG['PostDeleting'], $fm->LANG['EditNo']);
}
topic.php: (отображение кнопки удаления)
Найти:
CODE:$del = ( $fm->_Moderator === true) ? '<a href="postings.php?action=processedit&deletepost=yes&forum=' . $forum_id . '&topic=' . $topic_id . '&postid=' . $key . '" onClick="DelPost(this,' . $key . '); return false">' . $_icon['del'] . '</a>' . $_icon['divider'] : '';
Заменить на:
CODE:$del = ( $fm->_Moderator === true || ( $fm->user['id'] === $member_id && $fm->user['id'] && $topic['state'] != 'closed' )) ? '<a href="postings.php?action=processedit&deletepost=yes&forum=' . $forum_id . '&topic=' . $topic_id . '&postid=' . $key . '" onClick="DelPost(this,' . $key . '); return false">' . $_icon['del'] . '</a>' . $_icon['divider'] : '';
ну, т.е. то же, что и для редактирования. |
sqrt |
Отправлено: 1 октября 2016 — 18:53 • Тема: ExBB 1.1.3 • Форум: Релизы |
Ответов: 142 Просмотров: 107867
 |
В ExBB 1.1.3 наблюдаю проблему с поиском:
Если поисковый запрос состоит из слова, включающего, например, букву "Р" русскую, а сервер в utf-8, то GET-запрос поиска не обрабатывает ее, а, возможно, и некоторые другие буквы. Это видно, когда введешь слово в строку поиска, содержащее эту букву, скрипт выдаст результаты в виде тем, но при переходе по ссылке в тему пишет, что ничего не найдено, потому что, если, скажем, введено в поиск слово "материал", то в search query будет выдано, как printpage.php?action=1&forum=7&topic=15&post=%EC%E0%F2%E5%E8%E0%EB&stype=OR&color=yes, где %EC%E0%F2%E5%E8%E0%EB - это "матеиал".
Скорее всего, что GET-запрос не обрабатывает некоторые русские буквы:
Цитата:й??кенг??з??ф?вап?олдж?я?сми??б?
йцукенгшщзхъфывапролджэячсмитьбю
и, возможно нужно включать в preg_replace модификатор u:
http://softtime.ru/forum/read.ph...p;id_theme=88259?
т.е.
CODE:$search = preg_replace ("'[^№a-zа-яА-ЯA-ZЁё0-9 ]'iu", "", $_GET['search']);
В search/search.php и search.php корневой есть несколько preg_replace
Вот, например:
CODE:$entered_word = preg_replace('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{1,3})(?![a-zA-Zа-яА-ЯёЁ])/', '', $_SEARCH['entered_word']);
или вот еще:
CODE:$searchinmessage = sprintf($fm->LANG['YOUSEARCH'], preg_replace('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{1,3})(?![a-zA-Zа-яА-ЯёЁ])/', '$1<font color="red">$2</font>', $_SEARCH['entered_word']));
и еще несколько.
Т.е., возможно, надо переделать как-то так:
CODE:$searchinmessage = sprintf($fm->LANG['YOUSEARCH'], preg_replace('/([^a-zA-Zа-яА-ЯёЁ]|^)([a-zA-Zа-яА-ЯёЁ]{1,3})(?![a-zA-Zа-яА-ЯёЁ])/u', '$1<font color="red">$2</font>', $_SEARCH['entered_word'])); |
sqrt |
Отправлено: 17 сентября 2016 — 07:17 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
sqrt пишет:
Хотел бы еще добавить по поводу поиска.
Еще добавлю: ExBB 1.1.3 или ExBB 2.0.0 pre не ищет фразы, содержащие, например, только цифры. Т.е. даже после индексирования:
Цитата:324123423412341234
не найдет и выдаст:
Цитата:Не заданы параметры поиска! Либо запрос короче четырёх символов!
т.е. это даже не то, что ничего не найдено. Возможно, в поисковом механизме A-z обрабатывается, а 0-9 - нет. |
sqrt |
Отправлено: 16 сентября 2016 — 21:07 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
WebMaster пишет:
Проблема с поиском пока ещё не решена. Будет исправлено.
Хотел бы еще добавить по поводу поиска. Сравнивал его и в версии RC1 UTF-8 PHP 5.4, которая когда-то выкладывалась, и в версии Final, и в 1.1.3 и 2.0.0.
В RC1 UTF-8 PHP 5.4 - вроде бы нормально работал. в Final - как-то плоховато. В 1.1.3 (w1251) сравнительно нормально, хотя иногда есть такое, что отдельные слова в тексте сообщений может не находить (естественно, все проиндексировал предварительно). В 2.0.0, который заточен под UTF-8, он находит только слова на латинице, обязательно целиком (неперемешанные с кириллицей), причем только, если выделить для поиска слово с самого начала (если выделить набор символов из середины или части слова, встречающегося в проиндексированном форуме, то не найдет ничего), недлинное (не более 12-14 символов) и, не знаю, вроде как только из сообщений, которые ближе к первому посту, если не сказать, вообще, только из первого поста темы. Вот как-то так.
Применяется поисковый механизм Risearch PHP и в папке search дистрибутива форума в файле readme.txt сказано, что нужно скопировать все файлы из дистрибутива форума в папку с одноименным названием и далее запустить скрипт .../search/_index.php на индексирование. Тут, вот, непонятно: что значит:
Цитата:скопировать все файлы из дистрибутива форума в папку с одноименным названием
Это что, - нужно ВСЕ файлы, входящие в дистрибутив форума, скопировать в папку search или имеется ввиду только файлы из папки data/search с индексами? Это, во-первых. И, во-вторых, файла _index.php в папке search нет. Как же тогда запускать? Или же эта инструкция в файле readme.txt когда-то использовалась в ExBB ранних версий и уже устарела и по наследству просто перетекает из дистрибутива в дистрибутив, не неся семантики (смысла действий) в себе или же она когда-то являлась частью некогда давно разработанного механизма Risearch PHP и теперь, фактически, перестает нести смысл в новых версиях ExBB? |
sqrt |
Отправлено: 14 сентября 2016 — 18:54 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
electron пишет:sqrt пишет:как не работал поиск, так и не работает
Установите это http://exbb.info/community/topic...um=8&topic=5 - станет получше.
sqrt пишет:почему-то не срабатывает модуль не/отображения ссылок гостям. Да-нет, - гостю все скрыто.
в 2.0 все прекрасно работает. у вас наверняка нет прав на запись для файла data/boardinfo.php . всем папкам и файлам в папке data нужно установить права на запись. иначе форум может косячить
Поиск в версии 1.1.3 я сравнивал с 2.0.0 и с 1.0 RC1.
Работает нормально только в 1.1.3.
Что касается прав на запись для data/... везде внутри 777, в т.ч. тест на локалке - и не срабатывает почему-то. |
sqrt |
Отправлено: 14 сентября 2016 — 11:40 • Тема: ExBB 1.1.3 • Форум: Релизы |
Ответов: 142 Просмотров: 107867
 |
Обнаружил странную несовместимость версии ExBB 1.1.3:
Если используется браузер Firefox 48.0.2 (ОС любая: и WXP и W10) и в браузере установлено и включено дополнение Flash and Video Download addon версии 2.0 (https://addons.mozilla.org/ru/fi...i#my-submissions), то перестает срабатывать редирект после, например, внесения изменений в форму конфигурационного файла или после отправки сообщений (браузер просто останавливается на окне уведомлений, в частности, например, на фразе:
Цитата:Ваше сообщение было успешно добавлено и не редиректит вновь в тему . |
sqrt |
Отправлено: 13 сентября 2016 — 16:51 • Тема: ExBB 1.1.3 • Форум: Релизы |
Ответов: 142 Просмотров: 107867
 |
ExBB 1.1.3 (чистый).Не могу понять, баг что ли в релизе? Как известно, удалять сообщения могут только модераторы, супермодеры и админы. Взял, создал тему, еще пост (без склеивания), как админ, скопировал ссылку удаления второго поста вида postings.php?action=processedit&deletepost=yes&forum=1&topic=1&postid=1473774090, разлогинился, почистил куки (постить в форуме могут только зарегистрированные, смотреть гости могут). Под гостем перешел по ссылке postings.php?action=processedit&deletepost=yes&forum=3&topic=412&postid=1473774090, получил окно:
Цитата:Вы не администратор или модератор этого форума ,
перехожу в тему - и более не вижу поста 1473774090.
Как такое можно объяснить? |
sqrt |
Отправлено: 11 сентября 2016 — 21:06 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
Получается, чтобы сделать ссылки видимыми для гостей нужно:
fm_class.php
Найти и удалить в function url_text($matches)
строки:
CODE:if (!$this->user['id']) {
return '<i>' . $this->LANG['ViewLinkReged'] . '</i> ';
}
Далее:
CODE:$string = preg_replace_callback("#\[url\](" . $patern . ")\[\/url\]#isx", create_function('$matches', 'if (!' . $this->user['id'] . ') return \'<i>' . $this->LANG['ViewLinkReged'] . '</i> \'; global $fm; $LinkText = preg_replace("#^(.{32})(.+)(.{16})#is","$1...$3",trim($matches[1]));
$Link = (empty($matches[2])) ? "http://".$matches[1]:$matches[1];
if ($fm->exbb[\'redirect\'] && !stristr($Link, \'http://www.\'.$fm->exbb_domain) && !stristr($Link, \'http://\'.$fm->exbb_domain))
$Link = $fm->out_redir.$Link;
return "<a href=\"{$Link}\" target=\"_blank\">".trim($LinkText)."</a> ";'), $string);
$string = preg_replace_callback("#\[url=\s*(" . $patern . ")\s*\](.*?)\[\/url\]#isx", array( $this, 'url_text' ), $string);
$string = preg_replace_callback("#(^|\s|\b)(" . $patern . ")(\[|\s|$)#xis", create_function('$matches', 'if (!' . $this->user['id'] . ') return \'<i>' . $this->LANG['ViewLinkReged'] . '</i> \'; global $fm; $LinkText = preg_replace("#^(.{32})(.+)(.{16})#is","$1...$3",trim($matches[2]));
$Link = (empty($matches[3])) ? "http://".$matches[2]:$matches[2];
if ($fm->exbb[\'redirect\'] && !stristr($Link, \'http://www.\'.$fm->exbb_domain) && !stristr($Link, \'http://\'.$fm->exbb_domain))
$Link = $fm->out_redir.$Link;
return $matches[1]."<a href=\"$Link\" target=\"_blank\">$LinkText</a>".$matches[4];'), $string);
Заменить на:
CODE:$string = preg_replace_callback("#\[url\](" . $patern . ")\[\/url\]#isx", create_function('$matches', 'global $fm; $LinkText = preg_replace("#^(.{32})(.+)(.{16})#is","$1...$3",trim($matches[1]));
$Link = (empty($matches[2])) ? "http://".$matches[1]:$matches[1];
if ($fm->exbb[\'redirect\'] && !stristr($Link, \'http://www.\'.$fm->exbb_domain) && !stristr($Link, \'http://\'.$fm->exbb_domain))
$Link = $fm->out_redir.$Link;
return "<a href=\"{$Link}\" target=\"_blank\">".trim($LinkText)."</a> ";'), $string);
$string = preg_replace_callback("#\[url=\s*(" . $patern . ")\s*\](.*?)\[\/url\]#isx", array( $this, 'url_text' ), $string);
$string = preg_replace_callback("#(^|\s|\b)(" . $patern . ")(\[|\s|$)#xis", create_function('$matches', 'global $fm; $LinkText = preg_replace("#^(.{32})(.+)(.{16})#is","$1...$3",trim($matches[2]));
$Link = (empty($matches[3])) ? "http://".$matches[2]:$matches[2];
if ($fm->exbb[\'redirect\'] && !stristr($Link, \'http://www.\'.$fm->exbb_domain) && !stristr($Link, \'http://\'.$fm->exbb_domain))
$Link = $fm->out_redir.$Link;
return $matches[1]."<a href=\"$Link\" target=\"_blank\">$LinkText</a>".$matches[4];'), $string);
|
sqrt |
Отправлено: 11 сентября 2016 — 19:19 • Тема: Расшифруйте присвоение имени файлу вложения • Форум: Общие вопросы |
Ответов: 1 Просмотров: 2100
 |
Файлам, которые загружаются в сообщения в виде прикреплений в папку uploads, движок присваивает имена не абы как, а со смыслом. Так, например:
Цитата:att-7-57d5ab5dbcef2.ext
означает, что файл был создан в форуме №7, после дефиса идет:
это шестнадцатеричное выражение десятичного числа 1473620829, а это ничто иное, как postid того поста, к которому было прикреплено вложение.
Вопрос в том, что же тогда оставшееся:
на размер, вроде, не похоже. Может быть хеш какой-нибудь там? |
sqrt |
Отправлено: 11 сентября 2016 — 17:50 • Тема: ExBB 1.1.3 • Форум: Релизы |
Ответов: 142 Просмотров: 107867
 |
addpoll.tpl в самом начале файла:
CODE:?php
$err = ($error) ? '<font color="#ff0000">'.implode('<br>', $error).'<br><br>' : '';
echo << //вот это недопустимо!!! (parse error)
<DATA
<div id="navstrip" align="left"><br>
->
CODE:?php
$err = ($error) ? '<font color="#ff0000">'.implode('<br>', $error).'<br><br>' : '';
echo
<<<DATA //а вот это допустимо!!!
<div id="navstrip" align="left"><br> |
sqrt |
Отправлено: 10 сентября 2016 — 20:41 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
WebMaster пишет:Будет исправлено.
Спасибо. И еще: почему-то не срабатывает модуль не/отображения ссылок гостям. Да-нет, - гостю все скрыто. |
sqrt |
Отправлено: 10 сентября 2016 — 10:50 • Тема: ExBB 2.0.0-Pre • Форум: Релизы |
Ответов: 138 Просмотров: 92947
 |
Что-то, смотрю как не работал поиск, так и не работает. Проиндексировал форумы. Нажимал и "пересчитать". На все папки и подпапки и файлы форума (я имею ввиду, вообще, все, включая admin, папку search и все файлы и подпапки в ней) стоят права 777. Ввожу в пост слово "ответ", индексирую в управлении форумом в админке, захожу в поиск, ввожу "ответ", в т.ч. и по выбранному форуму и получаю:
Цитата:По Вашему запросу ничего не найдено.
вот и все. |
sqrt |
Отправлено: 5 ноября 2014 — 10:56 • Тема: Адаптация ядра форума для PHP 5.4 • Форум: Решение проблем |
Ответов: 40 Просмотров: 35199
 |
WebMaster пишет:после каких действий появилась такая ошибка?
Если включить PHP 5.4, на PHP 5.3 этого нет. Правку делал по схеме, указанной в 1-м посте этой темы. |
|
Страниц (3): « 1 [2] 3 »
|