Я не помню, где я взял исправленную функцию, но она такая:
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;
}
|