Write log entry on file removal

This commit is contained in:
Michael 2018-10-16 01:39:42 +01:00 committed by fguillot
parent 00228ac12f
commit cc81f9d4f5
7 changed files with 59 additions and 0 deletions

View File

@ -64,6 +64,10 @@ class TaskFileEventBuilder extends BaseEventBuilder
return e('%s attached a file to the task #%d', $author, $eventData['task']['id']);
}
if ($eventName === TaskFileModel::EVENT_DESTROY) {
return e('%s removed a file from the task #%d', $author, $eventData['task']['id']);
}
return '';
}
@ -81,6 +85,10 @@ class TaskFileEventBuilder extends BaseEventBuilder
return e('New attachment on task #%d: %s', $eventData['file']['task_id'], $eventData['file']['name']);
}
if ($eventName === TaskFileModel::EVENT_DESTROY) {
return e('Attachment removed from task #%d: %s', $eventData['file']['task_id'], $eventData['file']['name']);
}
return '';
}
}

View File

@ -51,6 +51,15 @@ abstract class FileModel extends Base
*/
abstract protected function fireCreationEvent($file_id);
/**
* Fire file destruction event
*
* @abstract
* @access protected
* @param integer $file_id
*/
abstract protected function fireDestructionEvent($file_id);
/**
* Get PicoDb query to get all files
*
@ -187,6 +196,8 @@ abstract class FileModel extends Base
public function remove($file_id)
{
try {
$this->fireDestructionEvent($file_id);
$file = $this->getById($file_id);
$this->objectStorage->remove($file['path']);

View File

@ -23,6 +23,7 @@ class ProjectFileModel extends FileModel
* @var string
*/
const EVENT_CREATE = 'project.file.create';
const EVENT_DESTROY = 'project.file.destroy';
/**
* Get the table
@ -70,4 +71,15 @@ class ProjectFileModel extends FileModel
{
$this->queueManager->push($this->projectFileEventJob->withParams($file_id, self::EVENT_CREATE));
}
/**
* Fire file destruction event
*
* @access protected
* @param integer $file_id
*/
protected function fireDestructionEvent($file_id)
{
$this->queueManager->push($this->projectFileEventJob->withParams($file_id, self::EVENT_DESTROY));
}
}

View File

@ -23,6 +23,7 @@ class TaskFileModel extends FileModel
* @var string
*/
const EVENT_CREATE = 'task.file.create';
const EVENT_DESTROY = 'task.file.destroy';
/**
* Get the table
@ -100,4 +101,15 @@ class TaskFileModel extends FileModel
{
$this->queueManager->push($this->taskFileEventJob->withParams($file_id, self::EVENT_CREATE));
}
/**
* Fire file destruction event
*
* @access protected
* @param integer $file_id
*/
protected function fireDestructionEvent($file_id)
{
$this->queueManager->push($this->taskFileEventJob->withParams($file_id, self::EVENT_DESTROY));
}
}

View File

@ -32,6 +32,7 @@ class NotificationSubscriber extends BaseSubscriber implements EventSubscriberIn
CommentModel::EVENT_DELETE => 'handleEvent',
CommentModel::EVENT_USER_MENTION => 'handleEvent',
TaskFileModel::EVENT_CREATE => 'handleEvent',
TaskFileModel::EVENT_DESTROY => 'handleEvent',
TaskLinkModel::EVENT_CREATE_UPDATE => 'handleEvent',
TaskLinkModel::EVENT_DELETE => 'handleEvent',
);

View File

@ -0,0 +1,10 @@
<p class="activity-title">
<?= e('%s removed a file from the task %s',
$this->text->e($author),
$this->url->link(t('#%d', $task['id']), 'TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']))
) ?>
<small class="activity-date"><?= $this->dt->datetime($date_creation) ?></small>
</p>
<div class="activity-description">
<p class="activity-task-title"><?= $this->text->e($file['name']) ?></p>
</div>

View File

@ -0,0 +1,5 @@
<h2><?= $this->text->e($task['title']) ?> (#<?= $task['id'] ?>)</h2>
<p><?= t('Attachment removed "%s"', $file['name']) ?></p>
<?= $this->render('notification/footer', array('task' => $task)) ?>