diff --git a/actions.php b/actions.php
index bce553bc1..5685c4b1c 100644
--- a/actions.php
+++ b/actions.php
@@ -174,7 +174,7 @@ elseif (filter('op') == 'toggle_check') {
$check = Check::find($check_id);
if (!empty($check) && $check->assignedUsers->pluck('id')->search($user->id) !== false) {
- $check->toggleCheck();
+ $check->toggleCheck($user);
} else {
flash()->error(tr('Impossibile cambiare lo stato del check!'));
}
diff --git a/modules/checklists/modutil.php b/modules/checklists/modutil.php
index 120a0a5c4..46cff9732 100644
--- a/modules/checklists/modutil.php
+++ b/modules/checklists/modutil.php
@@ -10,7 +10,7 @@ function renderChecklist($check, $level = 0)
checked_at) ? 'checked' : '').'>
'.$check->content.'
- '.(!empty($check->checked_at) ? timestampFormat($check->checked_at).' - '.$check->user->username : '').'';
+ '.(!empty($check->checked_at) ? timestampFormat($check->checked_at).' - '.$check->checkUser->username : '').'';
if ($level == 0) {
$result .= '
@@ -20,11 +20,14 @@ function renderChecklist($check, $level = 0)
';
}
- $result .= '
+ if (empty($check->user) || $check->user->id == $user->id) {
+ $result .= '
-
-
+ ';
+ }
+
+ $result .= '
';
$children = $check->children;
diff --git a/modules/checklists/src/Check.php b/modules/checklists/src/Check.php
index 6339feaf9..d7fbb2ef7 100644
--- a/modules/checklists/src/Check.php
+++ b/modules/checklists/src/Check.php
@@ -52,16 +52,18 @@ class Check extends Model
return $model;
}
- public function toggleCheck()
+ public function toggleCheck(User $user)
{
$checked_at = $this->checked_at ? null : date('Y-m-d H:i:s');
$this->checked_at = $checked_at;
+ $this->checkUser()->associate($user);
$this->save();
$children = $this->children;
while (!$children->isEmpty()) {
$child = $children->shift();
$child->checked_at = $checked_at;
+ $child->checkUser()->associate($user);
$child->save();
$children = $children->merge($child->children);
@@ -113,6 +115,11 @@ class Check extends Model
return $this->belongsTo(User::class, 'created_by');
}
+ public function checkUser()
+ {
+ return $this->belongsTo(User::class, 'checked_by');
+ }
+
public function assignedUsers()
{
return $this->belongsToMany(User::class, 'zz_check_user', 'id_check', 'id_utente');
diff --git a/update/2_4_11.sql b/update/2_4_11.sql
index a86fae880..9900679e7 100644
--- a/update/2_4_11.sql
+++ b/update/2_4_11.sql
@@ -213,6 +213,7 @@ CREATE TABLE IF NOT EXISTS `zz_checks` (
`id_plugin` int(11),
`id_record` int(11) NOT NULL,
`created_by` int(11) NOT NULL,
+ `checked_by` int(11) ,
`checked_at` TIMESTAMP NULL,
`content` TEXT,
`id_parent` int(11),
@@ -221,6 +222,7 @@ CREATE TABLE IF NOT EXISTS `zz_checks` (
FOREIGN KEY (`id_module`) REFERENCES `zz_modules`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`id_plugin`) REFERENCES `zz_plugins`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`created_by`) REFERENCES `zz_users`(`id`) ON DELETE CASCADE,
+ FOREIGN KEY (`checked_by`) REFERENCES `zz_users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`id_parent`) REFERENCES `zz_checks`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;