diff --git a/include/class.file.php b/include/class.file.php index a5c0abef1e851d887494eaedc8d7aaa03533705b..9a200d0fc5457ccbfd8abd523c3e4035783c5860 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -343,6 +343,7 @@ class AttachmentFile { .',size='.db_input($file['size']) .',name='.db_input($file['name']) .',`key`='.db_input($file['key']) + .',ft='.db_input($ft ?: 'T') .',signature='.db_input($file['signature']); if (!(db_query($sql) && ($id = db_insert_id()))) @@ -364,15 +365,9 @@ class AttachmentFile { return false; } - # XXX: ft does not exists during the upgrade when attachments are - # migrated! Neither does `bk` - if ($ft) { - $sql = 'UPDATE '.FILE_TABLE.' SET bk=' - .db_input($bk->getBkChar()) - .', ft='.db_input($ft) - .' WHERE id='.db_input($f->getId()); - db_query($sql); - } + $sql = 'UPDATE '.FILE_TABLE.' SET bk='.db_input($bk->getBkChar()) + .' WHERE id='.db_input($f->getId()); + db_query($sql); return $f->getId(); } diff --git a/include/upgrader/streams/core/15b30765-dd0022fb.task.php b/include/upgrader/streams/core/15b30765-dd0022fb.task.php index a4f39fb785021a4abf4e581f9510ecd8688d9e19..4d7eac01ff94a7622a16b118b5c567d41d3a9af0 100644 --- a/include/upgrader/streams/core/15b30765-dd0022fb.task.php +++ b/include/upgrader/streams/core/15b30765-dd0022fb.task.php @@ -108,7 +108,7 @@ class AttachmentMigrater extends MigrationTask { } # TODO: Add extension-based mime-type lookup - if (!($fileId = AttachmentFile::save($info, false))) { + if (!($fileId = $this->saveAttachment($info))) { return $this->skip($info['attachId'], sprintf('%s: Unable to migrate attachment', $info['path'])); } @@ -227,6 +227,47 @@ class AttachmentMigrater extends MigrationTask { function getErrors() { return $this->errorList; } + + // This is the AttachmentFile::save() method from osTicket 1.7.6. It's + // been ported here so that further changes to the %file table and the + // AttachmentFile::save() method do not affect upgrades from osTicket + // 1.6 to osTicket 1.8 and beyond. + function saveAttachment($file) { + + if(!$file['hash']) + $file['hash']=MD5(md5_file($file['path']).time()); + $file['data'] = file_get_contents($file['path']); + if(!$file['size']) + $file['size']=strlen($file['data']); + + $sql='INSERT INTO '.FILE_TABLE.' SET created=NOW() ' + .',type='.db_input($file['type']) + .',size='.db_input($file['size']) + .',name='.db_input($file['name']) + .',hash='.db_input($file['hash']); + + if (!(db_query($sql) && ($id=db_insert_id()))) + return false; + + $f = new CompatAttachmentFile($id); + $bk = new AttachmentChunkedData($f); + if (!$bk->write($file['data'])) + return false; + + return $id; + } +} + +class CompatAttachmentFile { + var $id; + + function __construct($id) { + $this->id = $id; + } + + function getId() { + return $this->id; + } } return 'AttachmentMigrater';