ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (1): [1]   

> Без описания
NordWest
Отправлено: 9 ноября 2013 — 18:25
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Суть проблемы такова.
При переносе в другую тему поста, содержащего вложение, пост преносится с неизменным id вложения. Если в новом месте до этого не было вложений, то проблем не возникает. Если же вложения уже были - очень вероятно, что идентификаторы вложений совпадут. Это приведёт к недоступности перенесённого вложения.

Предварительное решение этой проблемы такое

Открываем файл postings.php в котором ищем строку

CODE:
$newattach_id++;


после которой вставляем

CODE:
$newtopic[$post_id]['attach_id'] = $newattach_id;


Решение предварительное потому, что не проводил тестирование на чистом форуме.
 
 
гость
Отправлено: 10 ноября 2013 — 05:21
Post Id


Пользователь
Junior Member


Покинул форум
Сообщений всего: 51
Дата рег-ции: Окт. 2013  
Репутация: 0




Спасибо Превосходно



NordWest пишет:
Решение предварительное потому, что не проводил тестирование на чистом форуме.


Сейчас гоняю как раз на форуме с последней сборки, полет нормальный. Аттачи переносятся без потерь.
 
 
Zeg
Отправлено: 13 ноября 2013 — 15:47
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 891
Дата рег-ции: Март 2009  
Откуда: Беларусь
Репутация: 89




А как вообще выглядел кусок кода до внесения изменений из первого поста. Просто у меня так, как приводится ниже. Мне кажется это уже решало проблему с аттачами:

CODE:
function UpdateAttaches(&$newtopic,&$attaches) {
...
$newattach_id++;
$new_attach[$newattach_id] = $old_attach[$attach_id];
$newtopic[$post_id]['attach_id'] = $newattach_id;
unset($old_attach[$attach_id]);
...
 
 
NordWest
Отправлено: 13 ноября 2013 — 16:04
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Zeg
Забавно, если всё так как вы написали - у вас всё ОК, ничего делать не нужно.
Что за дистрибутив?
 
 
Zeg
Отправлено: 13 ноября 2013 — 21:06
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 891
Дата рег-ции: Март 2009  
Откуда: Беларусь
Репутация: 89




Я не помню, где я взял исправленную функцию, но она такая:

CODE:
function UpdateAttaches(&$newtopic,&$attaches) {
global $fm, $forum_id, $topic_id, $toforum_id, $newtopic_id;

//echo '<b>['.$topic_id.'-'.$newtopic_id.']</b>';
$old_attach = $fm->_Read2Write($fp_old, 'forum'.$forum_id.'/attaches-'.$topic_id.'.php');
$new_attach = $fm->_Read2Write($fp_new, 'forum'.$toforum_id.'/attaches-'.$newtopic_id.'.php');
$newattach_id = (count($new_attach) == 0) ? 0:max(array_keys($new_attach));
foreach ($attaches as $post_id => $attach_id) {
if (!isset($old_attach[$attach_id]) || !file_exists('uploads/'.$old_attach[$attach_id]['id'])) {
if (file_exists('uploads/'.$old_attach[$attach_id]['id'])) {
unlink('uploads/'.$old_attach[$attach_id]['id']);
}
unset($newtopic[$post_id]['attach_id'],$newtopic[$post_id]['attach_file']);
} else {
$newattach_id++;
$new_attach[$newattach_id] = $old_attach[$attach_id];
$newtopic[$post_id]['attach_id'] = $newattach_id;
unset($old_attach[$attach_id]);
}
}
unset($attaches);
$fm->_Write($fp_old,$old_attach);
$fm->_Write($fp_new,$new_attach);

if (count($old_attach) === 0) {
unlink('forum'.$forum_id.'/attaches-'.$topic_id.'.php');
}
if (count($new_attach) === 0) {
unlink('forum'.$toforum_id.'/attaches-'.$newtopic_id.'.php');
}
return TRUE;
}
 
 
NordWest
Отправлено: 13 ноября 2013 — 21:12
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Ну что - чудеса да и только. В последнем дистрибутиве код выглядит так

CODE:
foreach ($attaches as $post_id => $attach_id) {
if (!isset($old_attach[$attach_id]) || !file_exists('uploads/'.$old_attach[$attach_id]['id'])) {
if (file_exists('uploads/'.$old_attach[$attach_id]['id'])) {
unlink('uploads/'.$old_attach[$attach_id]['id']);
}
unset($newtopic[$post_id]['attach_id'],$newtopic[$post_id]['attach_file']);
} else {
$newattach_id++;
$new_attach[$newattach_id] = $old_attach[$attach_id];
$_attaches[$post_id] = $newattach_id;
unset($old_attach[$attach_id]);
}
}
 
 
Zeg
Отправлено: 13 ноября 2013 — 22:39
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 891
Дата рег-ции: Март 2009  
Откуда: Беларусь
Репутация: 89




Значит, не все правки внесены в дистрибутив. Жесточайше срочно внести новую функцию переноса аттачей ! Радость
 
 
BON
Отправлено: 23 ноября 2013 — 07:32
Post Id



Администратор
ExBB Team
Admin


Покинул форум
Сообщений всего: 2762
Дата рег-ции: Нояб. 2010  
Откуда: СССР/Белгород
Репутация: 72




так чья функция правильнее ?
 
 
NordWest
Отправлено: 23 ноября 2013 — 08:22
Post Id



Пользователь
Super Member


Покинул форум
Сообщений всего: 994
Дата рег-ции: Дек. 2011  
Откуда: Северо-Запад
Репутация: 76




Они одинаковые. В моем варианте получается на одну строку больше.
CODE:
$_attaches[$post_id] = $newattach_id;

Эта строка была в финале и вроде ничему не мешала. Можете её не удалять а просто закоментировать.
 
 
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Проблема с переносом постов, содержащих вложения
Темы Форум Информация о теме Обновление
Не создаются категории и форум
Проблема с созданием категрии и форума в часнеости.
Решение проблем Ответов: 4
Автор темы: Kolyabis
16 июля 2015 — 18:23
Автор: electron
Неактивные ссылки
Проблема.
Общие вопросы Ответов: 45
Автор темы: Sasa1
3 мая 2012 — 15:07
Автор: BON
Ошибка при загрузке аватары пользователем.
Проблема с загрузкой аватар
Решение проблем Ответов: 12
Автор темы: Necrodriver
28 января 2011 — 15:13
Автор: BON
Модератор в ExBBDarkGrey Style v1.0.10
Проблема
Решение проблем Ответов: 4
Автор темы: Marlboro
3 марта 2012 — 17:17
Автор: altjo
Перенаправление на rel= с разела "объявления"
Проблема с переходом
Решение проблем Ответов: 2
Автор темы: mastersound
31 мая 2011 — 21:19
Автор: mastersound
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.099]     [ ]