Duplicate attachments & external links during task duplication & importing
This commit is contained in:
parent
39d78cf424
commit
59a4c7f73b
|
|
@ -199,10 +199,15 @@ abstract class FileModel extends Base
|
|||
$this->fireDestructionEvent($file_id);
|
||||
|
||||
$file = $this->getById($file_id);
|
||||
$this->objectStorage->remove($file['path']);
|
||||
|
||||
if ($file['is_image'] == 1) {
|
||||
$this->objectStorage->remove($this->getThumbnailPath($file['path']));
|
||||
// Only remove files from disk attached to a single task.
|
||||
$multiple_tasks_count = $this->db->table($this->getTable())->eq('path', $file['path'])->count();
|
||||
if ($multiple_tasks_count === 1) {
|
||||
$this->objectStorage->remove($file['path']);
|
||||
|
||||
if ($file['is_image'] == 1) {
|
||||
$this->objectStorage->remove($this->getThumbnailPath($file['path']));
|
||||
}
|
||||
}
|
||||
|
||||
return $this->db->table($this->getTable())->eq('id', $file['id'])->remove();
|
||||
|
|
|
|||
|
|
@ -31,6 +31,24 @@ class TaskProjectDuplicationModel extends TaskDuplicationModel
|
|||
if ($new_task_id !== false) {
|
||||
$this->tagDuplicationModel->duplicateTaskTagsToAnotherProject($task_id, $new_task_id, $project_id);
|
||||
$this->taskLinkModel->create($new_task_id, $task_id, 4);
|
||||
|
||||
$attachments = $this->taskFileModel->getAll($task_id);
|
||||
$externalLinks = $this->taskExternalLinkModel->getAll($task_id);
|
||||
|
||||
foreach ($attachments as $attachment) {
|
||||
$this->taskFileModel->create($new_task_id, $attachment['name'], $attachment['path'], $attachment['size']);
|
||||
}
|
||||
|
||||
foreach ($externalLinks as $externalLink) {
|
||||
$this->taskExternalLinkModel->create([
|
||||
'task_id' => $new_task_id,
|
||||
'creator_id' => $externalLink['creator_id'],
|
||||
'dependency' => $externalLink['dependency'],
|
||||
'title' => $externalLink['title'],
|
||||
'link_type' => $externalLink['link_type'],
|
||||
'url' => $externalLink['url'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
$hook_values = [ 'source_task_id' => $task_id, 'destination_task_id' => $new_task_id];
|
||||
|
|
|
|||
|
|
@ -13,6 +13,12 @@ class TaskDuplicateAnotherProjectTest extends Base
|
|||
{
|
||||
public function testSuccess()
|
||||
{
|
||||
$this->container['externalLinkManager'] = $this
|
||||
->getMockBuilder('Kanboard\Core\ExternalLink\ExternalLinkManager')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(['push'])
|
||||
->getMock();
|
||||
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$taskCreationModel = new TaskCreationModel($this->container);
|
||||
$taskFinderModel = new TaskFinderModel($this->container);
|
||||
|
|
|
|||
|
|
@ -498,6 +498,12 @@ class ProjectDuplicationModelTest extends Base
|
|||
|
||||
public function testCloneProjectWithTasks()
|
||||
{
|
||||
$this->container['externalLinkManager'] = $this
|
||||
->getMockBuilder('Kanboard\Core\ExternalLink\ExternalLinkManager')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(['push'])
|
||||
->getMock();
|
||||
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$projectDuplicationModel = new ProjectDuplicationModel($this->container);
|
||||
$taskCreationModel = new TaskCreationModel($this->container);
|
||||
|
|
@ -522,6 +528,12 @@ class ProjectDuplicationModelTest extends Base
|
|||
|
||||
public function testCloneProjectWithSwimlanesAndTasks()
|
||||
{
|
||||
$this->container['externalLinkManager'] = $this
|
||||
->getMockBuilder('Kanboard\Core\ExternalLink\ExternalLinkManager')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(['push'])
|
||||
->getMock();
|
||||
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$projectDuplicationModel = new ProjectDuplicationModel($this->container);
|
||||
$swimlaneModel = new SwimlaneModel($this->container);
|
||||
|
|
@ -572,6 +584,12 @@ class ProjectDuplicationModelTest extends Base
|
|||
|
||||
public function testCloneProjectWithTags()
|
||||
{
|
||||
$this->container['externalLinkManager'] = $this
|
||||
->getMockBuilder('Kanboard\Core\ExternalLink\ExternalLinkManager')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(['push'])
|
||||
->getMock();
|
||||
|
||||
$projectModel = new ProjectModel($this->container);
|
||||
$projectDuplicationModel = new ProjectDuplicationModel($this->container);
|
||||
$taskCreationModel = new TaskCreationModel($this->container);
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ class TaskFileModelTest extends Base
|
|||
$this->assertEquals(2, $fileModel->create(1, 'test', 'tmp/foo', 10));
|
||||
|
||||
$this->container['objectStorage']
|
||||
->expects($this->exactly(2))
|
||||
->expects($this->exactly(1))
|
||||
->method('remove')
|
||||
->with('tmp/foo');
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,17 @@ use Kanboard\Model\UserModel;
|
|||
|
||||
class TaskProjectDuplicationModelTest extends Base
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->container['externalLinkManager'] = $this
|
||||
->getMockBuilder('Kanboard\Core\ExternalLink\ExternalLinkManager')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(['push'])
|
||||
->getMock();
|
||||
}
|
||||
|
||||
public function testDuplicateAnotherProject()
|
||||
{
|
||||
$taskProjectDuplicationModel = new TaskProjectDuplicationModel($this->container);
|
||||
|
|
|
|||
Loading…
Reference in New Issue