Skip to content

Commit

Permalink
Keep historic acknowledgement data
Browse files Browse the repository at this point in the history
  • Loading branch information
annda committed Jun 27, 2019
1 parent 656bfe7 commit 8e55e48
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 5 deletions.
2 changes: 2 additions & 0 deletions admin.php
Expand Up @@ -59,6 +59,8 @@ public function html()

echo '</table>';

echo '<p>' . $this->getLang('overviewHistory') . '</p>';

}
}

2 changes: 1 addition & 1 deletion db/latest.version
@@ -1 +1 @@
1
2
27 changes: 27 additions & 0 deletions db/update0002.sql
@@ -0,0 +1,27 @@
PRAGMA foreign_keys=OFF;

CREATE TEMPORARY TABLE acks_temp
(
page TEXT NOT NULL REFERENCES pages (page) ON DELETE CASCADE,
user TEXT NOT NULL,
ack INT NOT NULL,
PRIMARY KEY (page, user)
);

INSERT INTO acks_temp (page,user,ack) SELECT page,user,ack FROM acks;

DROP TABLE acks;

CREATE TABLE acks
(
page TEXT NOT NULL REFERENCES pages (page),
user TEXT NOT NULL,
ack INT NOT NULL,
PRIMARY KEY (page, user, ack)
);

INSERT INTO acks (page,user,ack) SELECT page,user,ack FROM acks_temp;

DROP TABLE acks_temp;

PRAGMA foreign_keys=ON;
8 changes: 4 additions & 4 deletions helper.php
Expand Up @@ -172,7 +172,7 @@ public function saveAcknowledgement($page, $user)
$sqlite = $this->getDB();
if (!$sqlite) return false;

$sql = "REPLACE INTO acks (page, user, ack) VALUES (?,?, strftime('%s','now'))";
$sql = "INSERT INTO acks (page, user, ack) VALUES (?,?, strftime('%s','now'))";

$result = $sqlite->query($sql, $page, $user);
$sqlite->res_close($result);
Expand All @@ -199,9 +199,9 @@ public function getUserAssignments($user)
JOIN pages B
ON A.page = B.page
LEFT JOIN acks C
ON A.page = C.page
ON A.page = C.page AND ( (C.user = ? AND C.ack > B.lastmod) OR (C.user IS NOT ?) )
WHERE AUTH_ISMEMBER(A.assignee, ? , ?)
AND ( (C.user = ? AND C.ack < B.lastmod) OR (C.user IS NOT ?) )";
AND ack IS NULL";

$result = $sqlite->query($sql, $user, implode('///', $groups), $user, $user);
$assignments = $sqlite->res2arr($result);
Expand All @@ -220,7 +220,7 @@ public function getAcknowledgements()
$sqlite = $this->getDB();
if (!$sqlite) return false;

$sql = 'SELECT * FROM acks ORDER BY ack DESC';
$sql = 'SELECT page, user, max(ack) AS ack FROM acks GROUP BY user,page ORDER BY ack DESC';
$result = $sqlite->query($sql);
$acknowledgements = $sqlite->res2arr($result);
$sqlite->res_close($result);
Expand Down
1 change: 1 addition & 0 deletions lang/en/lang.php
Expand Up @@ -17,6 +17,7 @@
$lang['overviewPage'] = 'Page';
$lang['overviewUser'] = 'User';
$lang['overviewTime'] = 'Latest acknowledgement';
$lang['overviewHistory'] = 'You can access previous acknowledgments by querying the database directly. Ask your administrator for assistance.';


$lang['error sqlite plugin missing'] = 'The sqlite plugin is missing';

0 comments on commit 8e55e48

Please sign in to comment.