[Posting] Re-add original file to attachment on upload, if it was previously removed
This commit is contained in:
parent
d076781c74
commit
4cc4523632
|
@ -129,7 +129,9 @@ END;
|
||||||
DB::flush();
|
DB::flush();
|
||||||
if ($processed_attachments != []) {
|
if ($processed_attachments != []) {
|
||||||
foreach ($processed_attachments as $a) {
|
foreach ($processed_attachments as $a) {
|
||||||
DB::persist(GSActorToAttachment::create(['attachment_id' => $a->getId(), 'gsactor_id' => $actor_id]));
|
if (is_null(DB::findBy('gsactor_to_attachment', ['attachment_id' => $a->getId(), 'gsactor_id' => $actor_id]))) {
|
||||||
|
DB::persist(GSActorToAttachment::create(['attachment_id' => $a->getId(), 'gsactor_id' => $actor_id]));
|
||||||
|
}
|
||||||
DB::persist(AttachmentToNote::create(['attachment_id' => $a->getId(), 'note_id' => $note->getId()]));
|
DB::persist(AttachmentToNote::create(['attachment_id' => $a->getId(), 'note_id' => $note->getId()]));
|
||||||
}
|
}
|
||||||
DB::flush();
|
DB::flush();
|
||||||
|
|
|
@ -67,8 +67,23 @@ class GSFile
|
||||||
Event::handle('HashFile', [$file->getPathname(), &$hash]);
|
Event::handle('HashFile', [$file->getPathname(), &$hash]);
|
||||||
try {
|
try {
|
||||||
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
|
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
|
||||||
|
// Attachment Exists
|
||||||
$attachment->livesIncrementAndGet();
|
$attachment->livesIncrementAndGet();
|
||||||
|
if (is_null($attachment->getFilename())) {
|
||||||
|
$mimetype = $attachment->getMimetype();
|
||||||
|
$width = $attachment->getWidth();
|
||||||
|
$height = $attachment->getHeight();
|
||||||
|
Event::handle('AttachmentSanitization', [&$file, &$mimetype, &$width, &$height]);
|
||||||
|
$attachment->setFilename($hash);
|
||||||
|
$attachment->setMimetype($mimetype);
|
||||||
|
$attachment->setWidth($width);
|
||||||
|
$attachment->setHeight($height);
|
||||||
|
$attachment->setSize($file->getSize());
|
||||||
|
$file->move(Common::config('attachments', 'dir'), $hash);
|
||||||
|
DB::persist($attachment);
|
||||||
|
}
|
||||||
} catch (NotFoundException) {
|
} catch (NotFoundException) {
|
||||||
|
// Create an Attachment
|
||||||
// The following properly gets the mimetype with `file` or other
|
// The following properly gets the mimetype with `file` or other
|
||||||
// available methods, so should be safe
|
// available methods, so should be safe
|
||||||
$mimetype = $file->getMimeType();
|
$mimetype = $file->getMimeType();
|
||||||
|
|
|
@ -24,6 +24,9 @@ namespace App\Entity;
|
||||||
use App\Core\DB\DB;
|
use App\Core\DB\DB;
|
||||||
use App\Core\Entity;
|
use App\Core\Entity;
|
||||||
use App\Core\GSFile;
|
use App\Core\GSFile;
|
||||||
|
use App\Util\Exception\DuplicateFoundException;
|
||||||
|
use App\Util\Exception\NotFoundException;
|
||||||
|
use App\Util\Exception\ServerException;
|
||||||
use function App\Core\I18n\_m;
|
use function App\Core\I18n\_m;
|
||||||
use App\Core\Log;
|
use App\Core\Log;
|
||||||
use App\Util\Common;
|
use App\Util\Common;
|
||||||
|
@ -56,7 +59,7 @@ class Attachment extends Entity
|
||||||
private ?int $size;
|
private ?int $size;
|
||||||
private ?int $width;
|
private ?int $width;
|
||||||
private ?int $height;
|
private ?int $height;
|
||||||
private \DateTimeInterface $modified;
|
private DateTimeInterface $modified;
|
||||||
|
|
||||||
public function setId(int $id): self
|
public function setId(int $id): self
|
||||||
{
|
{
|
||||||
|
@ -130,39 +133,6 @@ class Attachment extends Entity
|
||||||
return $this->filename;
|
return $this->filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Maybe this isn't the best way of handling titles
|
|
||||||
*
|
|
||||||
* @param null|Note $note
|
|
||||||
*
|
|
||||||
* @throws \App\Util\Exception\DuplicateFoundException
|
|
||||||
* @throws \App\Util\Exception\NotFoundException
|
|
||||||
* @throws \App\Util\Exception\ServerException
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getBestTitle(?Note $note = null): string
|
|
||||||
{
|
|
||||||
// If we have a note, then the best title is the title itself
|
|
||||||
if (!is_null(($note))) {
|
|
||||||
$attachment_to_note = DB::findOneBy('attachment_to_note', [
|
|
||||||
'attachment_id' => $this->getId(),
|
|
||||||
'note_id' => $note->getId(),
|
|
||||||
]);
|
|
||||||
if (!is_null($attachment_to_note->getTitle())) {
|
|
||||||
return $attachment_to_note->getTitle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Else
|
|
||||||
if (!is_null($filename = $this->getFilename())) {
|
|
||||||
// A filename would do just as well
|
|
||||||
return $filename;
|
|
||||||
} else {
|
|
||||||
// Welp
|
|
||||||
return _m('Untitled Attachment.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setSize(?int $size): self
|
public function setSize(?int $size): self
|
||||||
{
|
{
|
||||||
$this->size = $size;
|
$this->size = $size;
|
||||||
|
@ -250,6 +220,7 @@ class Attachment extends Entity
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
$this->setFilename(null);
|
$this->setFilename(null);
|
||||||
|
$this->setSize(null);
|
||||||
DB::persist($this);
|
DB::persist($this);
|
||||||
DB::flush();
|
DB::flush();
|
||||||
}
|
}
|
||||||
|
@ -291,6 +262,39 @@ class Attachment extends Entity
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO: Maybe this isn't the best way of handling titles
|
||||||
|
*
|
||||||
|
* @param null|Note $note
|
||||||
|
*
|
||||||
|
* @throws DuplicateFoundException
|
||||||
|
* @throws NotFoundException
|
||||||
|
* @throws ServerException
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getBestTitle(?Note $note = null): string
|
||||||
|
{
|
||||||
|
// If we have a note, then the best title is the title itself
|
||||||
|
if (!is_null(($note))) {
|
||||||
|
$attachment_to_note = DB::findOneBy('attachment_to_note', [
|
||||||
|
'attachment_id' => $this->getId(),
|
||||||
|
'note_id' => $note->getId(),
|
||||||
|
]);
|
||||||
|
if (!is_null($attachment_to_note->getTitle())) {
|
||||||
|
return $attachment_to_note->getTitle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Else
|
||||||
|
if (!is_null($filename = $this->getFilename())) {
|
||||||
|
// A filename would do just as well
|
||||||
|
return $filename;
|
||||||
|
} else {
|
||||||
|
// Welp
|
||||||
|
return _m('Untitled Attachment.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find all thumbnails associated with this attachment. Don't bother caching as this is not supposed to be a common operation
|
* Find all thumbnails associated with this attachment. Don't bother caching as this is not supposed to be a common operation
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue