Описанное далее исправление решает 3 проблемы:
- пропажа прикреплённых файлов при переносе сообщений в существующую тему;
- изменение даты и времени у переносимых в существующую тему сообщений;
- при переносе сообщений в существующую тему теперь правильно указывается название этой темы.
Откройте файл
postings.php, найдите строку:
CODE: if (count($attaches) !== 0) UpdateAttaches($newtopic,$attaches);
Искомая строка встречается в данном файле 2 раза, Вам необходимо запомнить номер строки при второй встрече.
Далее в этом же файле найдите строку:
CODE: $newlastposter = GetName($newtopic[$newlastkey]['p_id']);
Выделите все строки, заключённые между найденными строками (включая найденные). Полученный таким образом фрагмент кода нужно будет заменить на один из следующих:
Если у Вас установлен мод "Поиск тем и сообщений пользователя" (Отобразить)CODE: /* РАЗБИРАЕМСЯ С АТТАЧАМИ ЕСЛИ КОЛ-ВО АТТАЧЕЙ БОЛЬШЕ 0 */
if (count($attaches) !== 0) UpdateAttaches($tmp_newtopic,$attaches);
$newtopic = $fm->_Read2Write($fp_newtopic, 'forum'.$toforum_id.'/'.$newtopic_id.'-thd.php');
$oldfirstkey = key($newtopic);
$newUsers = array();
foreach ($tmp_newtopic as $post_id => $postinfo) {
while (isset($newtopic[$post_id])) {
$post_id++;
}
$newtopic[$post_id] = $postinfo;
$newUsers[$postinfo['p_id']][] = $post_id;
}
unset($tmp_newtopic);
ksort($newtopic);
$newfirstkey = key($newtopic);
if ($oldfirstkey != $newfirstkey) {
$newtopic[$newfirstkey] += array(
'name' => $newtopic[$oldfirstkey]['name'],
'desc' => $newtopic[$oldfirstkey]['desc'],
'state' => $newtopic[$oldfirstkey]['state'],
'pinned' => $newtopic[$oldfirstkey]['pinned']
);
unset($newtopic[$oldfirstkey]['name'], $newtopic[$oldfirstkey]['desc'], $newtopic[$oldfirstkey]['state'],
$newtopic[$oldfirstkey]['pinned']);
if (isset($newtopic[$oldfirstkey]['views'])) {
$newtopic[$newfirstkey]['views'] = $newtopic[$oldfirstkey]['views'];
unset($newtopic[$oldfirstkey]['views']);
}
if (isset($newtopic[$oldfirstkey]['pinmsg'])) {
$newtopic[$newfirstkey]['pinmsg'] = $newtopic[$oldfirstkey]['pinmsg'];
unset($newtopic[$oldfirstkey]['pinmsg']);
}
}
end($newtopic);
$newlastkey = key($newtopic);
$fm->_Write($fp_newtopic,$newtopic);
include('modules/belong/_inExists.php');
$newauthor = GetName($newtopic[$newfirstkey]['p_id']);
$newlastposter = GetName($newtopic[$newlastkey]['p_id']);
Если данный мод не установлен (Отобразить)CODE: /* РАЗБИРАЕМСЯ С АТТАЧАМИ ЕСЛИ КОЛ-ВО АТТАЧЕЙ БОЛЬШЕ 0 */
if (count($attaches) !== 0) UpdateAttaches($tmp_newtopic,$attaches);
$newtopic = $fm->_Read2Write($fp_newtopic, 'forum'.$toforum_id.'/'.$newtopic_id.'-thd.php');
$oldfirstkey = key($newtopic);
foreach ($tmp_newtopic as $post_id => $postinfo) {
while (isset($newtopic[$post_id])) {
$post_id++;
}
$newtopic[$post_id] = $postinfo;
}
unset($tmp_newtopic);
ksort($newtopic);
$newfirstkey = key($newtopic);
if ($oldfirstkey != $newfirstkey) {
$newtopic[$newfirstkey] += array(
'name' => $newtopic[$oldfirstkey]['name'],
'desc' => $newtopic[$oldfirstkey]['desc'],
'state' => $newtopic[$oldfirstkey]['state'],
'pinned' => $newtopic[$oldfirstkey]['pinned']
);
unset($newtopic[$oldfirstkey]['name'], $newtopic[$oldfirstkey]['desc'], $newtopic[$oldfirstkey]['state'],
$newtopic[$oldfirstkey]['pinned']);
if (isset($newtopic[$oldfirstkey]['views'])) {
$newtopic[$newfirstkey]['views'] = $newtopic[$oldfirstkey]['views'];
unset($newtopic[$oldfirstkey]['views']);
}
if (isset($newtopic[$oldfirstkey]['pinmsg'])) {
$newtopic[$newfirstkey]['pinmsg'] = $newtopic[$oldfirstkey]['pinmsg'];
unset($newtopic[$oldfirstkey]['pinmsg']);
}
}
end($newtopic);
$newlastkey = key($newtopic);
$fm->_Write($fp_newtopic,$newtopic);
$newauthor = GetName($newtopic[$newfirstkey]['p_id']);
$newlastposter = GetName($newtopic[$newlastkey]['p_id']);
Далее в этом же файле найдите строку:
CODE: $newlist[$newtopic_id]['postkey'] = $newlastkey;
и над ней вставьте строки:
CODE: $newlist[$newtopic_id]['author'] = $newauthor;
$newlist[$newtopic_id]['a_id'] = $newtopic[$newfirstkey]['p_id'];
$newlist[$newtopic_id]['date'] = $newfirstkey;
Затем найдите строку:
CODE: $topicname = (isset($newlist[$newlasttopic]['tnun'])) ? $newlist[$newlasttopic]['name'].' - '.$newlist[$newlasttopic]['tnun']:$newlist[$newlasttopic]['name'];
и замените её строкой:
CODE: $topicname = (isset($newlist[$newtopic_id]['tnun'])) ? $newlist[$newtopic_id]['name'].' - '.$newlist[$newtopic_id]['tnun']:$newlist[$newtopic_id]['name'];
Чуть ниже найдите строку:
CODE: $list[$newtopic_id]['postkey'] = $newlastkey;
и над ней вставьте строки:
CODE: $list[$newtopic_id]['author'] = $newauthor;
$list[$newtopic_id]['a_id'] = $newtopic[$newfirstkey]['p_id'];
$list[$newtopic_id]['date'] = $newfirstkey;
Теперь найдите строку:
CODE: $fm->_Message($fm->LANG['MoveSelectedInExists'], sprintf($fm->LANG['MoveInExistsOk'],$topicname), 'topic.php?forum='.$toforum_id.'&topic='.$newtopic_id.'postid='.$newlastkey.'#'.$newlastkey);
и замените её строкой:
CODE: $fm->_Message($fm->LANG['MoveSelectedInExists'], sprintf($fm->LANG['MoveInExistsOk'],$topicname), 'topic.php?forum='.$toforum_id.'&topic='.$newtopic_id.'postid='.$post_id.'#'.$post_id);
Наконец, найдите строку:
CODE: echo '<b>['.$topic_id.'-'.$newtopic_id.']</b>';
и (если таковая у Вас имеется) удалите её.
Останется только закачать исправленные файлы мода
Поиск тем и сообщений пользователя (если он у Вас установлен) из прикреплённого архива в папку мода
modules/belong/
О результатах работы этого исправления сообщайте, пожалуйста, в этой теме. Сейчас стоит вопрос о включении данного исправления в готовящийся релиз
ExBB FM 1.0 RC2, поэтому Ваши отчёты о работе данного исправления крайне важны!!
З.Ы. По поводу пропажи прикреплённых файлов при перемещении сообщений в новую тему, а не существующую: мне повторить эту проблему на локалке не удалось. Если кто-либо составит подробный отчёт по проблеме (предшествующие проблеме действия, список сообщений о возникающих ошибках), то решение проблемы (если она вообще существует) заметно ускорится