Skip to content
Snippets Groups Projects
Commit e5bf9530 authored by Jared Hancock's avatar Jared Hancock
Browse files

upgrader: Fix upgrade from osTicket 1.6

parent 47ae0e4e
No related branches found
No related tags found
No related merge requests found
...@@ -343,6 +343,7 @@ class AttachmentFile { ...@@ -343,6 +343,7 @@ class AttachmentFile {
.',size='.db_input($file['size']) .',size='.db_input($file['size'])
.',name='.db_input($file['name']) .',name='.db_input($file['name'])
.',`key`='.db_input($file['key']) .',`key`='.db_input($file['key'])
.',ft='.db_input($ft ?: 'T')
.',signature='.db_input($file['signature']); .',signature='.db_input($file['signature']);
if (!(db_query($sql) && ($id = db_insert_id()))) if (!(db_query($sql) && ($id = db_insert_id())))
...@@ -364,15 +365,9 @@ class AttachmentFile { ...@@ -364,15 +365,9 @@ class AttachmentFile {
return false; return false;
} }
# XXX: ft does not exists during the upgrade when attachments are $sql = 'UPDATE '.FILE_TABLE.' SET bk='.db_input($bk->getBkChar())
# migrated! Neither does `bk` .' WHERE id='.db_input($f->getId());
if ($ft) { db_query($sql);
$sql = 'UPDATE '.FILE_TABLE.' SET bk='
.db_input($bk->getBkChar())
.', ft='.db_input($ft)
.' WHERE id='.db_input($f->getId());
db_query($sql);
}
return $f->getId(); return $f->getId();
} }
......
...@@ -108,7 +108,7 @@ class AttachmentMigrater extends MigrationTask { ...@@ -108,7 +108,7 @@ class AttachmentMigrater extends MigrationTask {
} }
# TODO: Add extension-based mime-type lookup # TODO: Add extension-based mime-type lookup
if (!($fileId = AttachmentFile::save($info, false))) { if (!($fileId = $this->saveAttachment($info))) {
return $this->skip($info['attachId'], return $this->skip($info['attachId'],
sprintf('%s: Unable to migrate attachment', $info['path'])); sprintf('%s: Unable to migrate attachment', $info['path']));
} }
...@@ -227,6 +227,47 @@ class AttachmentMigrater extends MigrationTask { ...@@ -227,6 +227,47 @@ class AttachmentMigrater extends MigrationTask {
function getErrors() { function getErrors() {
return $this->errorList; 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'; return 'AttachmentMigrater';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment