if (!$files_checkpoint->is_done()) { if ($files_checkpoint->has('files')) { $files = $files_checkpoint->get('files'); } else { $files = 0; } if ($files_checkpoint->has('files_qty')) { $files_qty = $files_checkpoint->get('files_qty'); } else { $files_qty = DB::GetOne('SELECT count(*) FROM utils_attachment_file'); $files_checkpoint->set('files_qty', $files_qty); } while ($ret = DB::SelectLimit('SELECT f.id,f.attach_id as aid,f.original FROM utils_attachment_file f ORDER BY f.id', 1, $files++)) { $row = $ret->FetchRow(); if (!$row) { break; } if (file_exists(DATA_DIR . '/Utils_Attachment/' . $row['aid'] . '/' . $row['id'])) { Patch::set_message('Processing file: ' . $files . '/' . $files_qty); $files_checkpoint->require_time(2); $fsid = Utils_FileStorageCommon::write_file($row['original'], DATA_DIR . '/Utils_Attachment/' . $row['aid'] . '/' . $row['id'], 'attachment_file/' . $row['id']); unlink(DATA_DIR . '/Utils_Attachment/' . $row['aid'] . '/' . $row['id']); DB::Execute('UPDATE utils_attachment_file SET filestorage_id=%d WHERE id=%d', array($fsid, $row['id'])); } $files_checkpoint->set('files', $files); } $files_checkpoint->done(); } DB::Execute('DELETE FROM utils_attachment_download WHERE attach_file_id in (SELECT id FROM utils_attachment_file WHERE filestorage_id=0)'); DB::Execute('DELETE FROM utils_attachment_file WHERE filestorage_id=0'); DB::Execute('ALTER TABLE utils_attachment_file ADD FOREIGN KEY (filestorage_id) REFERENCES utils_filestorage_files(id)');
public static function add_file($note, $user, $oryg, $file) { if ($oryg === null) { $oryg = ''; } $fsid = Utils_FileStorageCommon::write_file($oryg, $file); DB::Execute('INSERT INTO utils_attachment_file(attach_id,original,created_by,filestorage_id) VALUES(%d,%s,%d,%d)', array($note, $oryg, $user, $fsid)); Utils_FileStorageCommon::add_link('attachment_file/' . DB::Insert_ID('utils_attachment_file', 'id'), $fsid); }