diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3228387
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.idea
+.venv
diff --git a/admin/listforms.php b/admin/listforms.php
old mode 100755
new mode 100644
index 906648f..8be3e6f
--- a/admin/listforms.php
+++ b/admin/listforms.php
@@ -32,6 +32,11 @@
{
$fid = intval($_GET['fid']);
$vid = intval($_GET['vid']);
+
+ if (isset($_GET['revise'])) {
+ $vid = get_vid();
+ reload_session_from_database($fid, $vid);
+ }
$db->StartTrans();
@@ -47,13 +52,24 @@
$db->Execute($sql);
- $sql = "UPDATE forms
- SET assigned_vid = NULL, done = 0, rpc_id = NULL, assigned = NULL, completed = NULL
- WHERE fid = '$fid'";
+ if (isset($_GET['revise'])) {
+ $sql = "UPDATE forms
+ SET assigned_vid = '$vid', done = 0
+ WHERE fid = '$fid'";
+ } else {
+ $sql = "UPDATE forms
+ SET assigned_vid = NULL, done = 0, rpc_id = NULL, assigned = NULL, completed = NULL
+ WHERE fid = '$fid'";
+ }
$db->Execute($sql);
- $db->CompleteTrans();
+ $db->CompleteTrans();
+
+ if (isset($_GET['revise'])) {
+ header("Location: ../verifyjs.php?fid=" . $fid);
+ exit;
+ }
}
xhtml_head(T_("Listing of forms"),true,array("../css/table.css"));
@@ -63,7 +79,7 @@
{
$qid = intval($_GET['qid']);
- $sql = "SELECT f.fid, v.description as name, q.description as quest, CONCAT('" . T_("Re verify") . "') as link
+ $sql = "SELECT f.fid, v.description as name, q.description as quest, CONCAT('" . T_("Re verify") . "') as link, CONCAT('" . T_("Revise") . "') as linkrevise
FROM forms as f
JOIN questionnaires AS q ON (f.qid = q.qid AND q.qid = '$qid')
LEFT JOIN verifiers AS v ON (v.vid = f.assigned_vid)
@@ -74,7 +90,7 @@
print "
" . T_("Go back") . "";
- xhtml_table($fs,array('fid','name','quest','link'),array(T_('Form ID'),T_('Operator'),T_('Questionnaire'),T_('Re verify')));
+ xhtml_table($fs,array('fid','name','quest','link','linkrevise'),array(T_('Form ID'),T_('Operator'),T_('Questionnaire'),T_('Re verify'),T_('Revise')));
}
else
{
diff --git a/functions/functions.database.php b/functions/functions.database.php
old mode 100755
new mode 100644
index 12fa890..d08ce1d
--- a/functions/functions.database.php
+++ b/functions/functions.database.php
@@ -362,6 +362,113 @@ function get_qid_description($fid)
return $rs;
}
+function reload_session_from_database($fid, $vid, $reviewMode = false)
+{
+ session_reset();
+ session_start();
+ global $db;
+
+ $fid = intval($fid);
+ $vid = intval($vid);
+ $qid_desc = get_qid_description($fid);
+ if (empty($qid_desc)) {
+ return false;
+ }
+ $qid = intval($qid_desc['qid']);
+
+ /*
+ * En mode review, on relit les dernières valeurs vérifiées.
+ * Ici on prend en priorité la valeur du vérificateur courant,
+ * sinon une valeur existante pour ce formulaire.
+ */
+ $sql = "SELECT b.bid as bid,
+ b.tlx as tlx,
+ b.tly as tly,
+ b.brx as brx,
+ b.bry as bry,
+ b.pid as pid,
+ bg.btid as btid,
+ b.bgid as bgid,
+ $fid as fid,
+ bg.sortorder as sortorder,
+ fb.filled,
+ CASE
+ WHEN d.fid IS NOT NULL THEN d.val
+ WHEN c.fid IS NOT NULL THEN c.val
+ ELSE NULL
+ END as val
+ FROM boxes AS b
+ JOIN boxgroupstype as bg ON (bg.bgid = b.bgid AND bg.btid > 0)
+ JOIN pages as p ON (p.pid = b.pid AND p.qid = '$qid')
+ LEFT JOIN formboxes as fb ON (fb.bid = b.bid AND fb.fid = '$fid')
+ LEFT JOIN formboxverifychar AS c ON (
+ c.fid = '$fid'
+ AND c.bid = b.bid
+ AND c.vid = (
+ SELECT c2.vid
+ FROM formboxverifychar c2
+ WHERE c2.fid = '$fid'
+ AND c2.bid = b.bid
+ ORDER BY c2.fbvcid DESC
+ LIMIT 1
+ )
+ )
+ LEFT JOIN formboxverifytext AS d ON (
+ d.fid = '$fid'
+ AND d.bid = b.bid
+ AND d.vid = (
+ SELECT d2.vid
+ FROM formboxverifytext d2
+ WHERE d2.fid = '$fid'
+ AND d2.bid = b.bid
+ ORDER BY d2.fbvtid DESC
+ LIMIT 1
+ )
+ )
+ ORDER BY bg.sortorder ASC";
+
+ $sql2 = "SELECT b.bgid,
+ " . ($reviewMode ? "0" : "0") . " as done,
+ MIN(b.pid) as pid,
+ bg.varname,
+ bg.btid
+ FROM boxes as b, boxgroupstype as bg, pages as p
+ WHERE p.pid = b.pid
+ AND bg.bgid = b.bgid
+ AND p.qid = '$qid'
+ AND bg.btid > 0
+ GROUP BY bg.bgid
+ ORDER BY bg.sortorder ASC";
+
+ $sql3 = "SELECT b.pid,
+ MIN(b.bgid) as bgid,
+ 0 as done,
+ fp.width,
+ fp.height,
+ fp.fid
+ FROM boxes as b
+ JOIN pages as p ON (p.qid = '$qid' AND b.pid = p.pid)
+ JOIN boxgroupstype as bg ON (bg.bgid = b.bgid)
+ LEFT JOIN formpages as fp ON (fp.fid = '$fid' AND fp.pid = p.pid)
+ GROUP BY b.pid
+ ORDER BY MIN(bg.sortorder) ASC";
+
+ $boxes = $db->GetAssoc($sql);
+ $boxgroups = $db->GetAssoc($sql2);
+ $pages = $db->GetAssoc($sql3);
+
+ if (empty($boxes)) {
+ return false;
+ }
+
+ $_SESSION['boxes'] = $boxes;
+ $_SESSION['boxgroups'] = $boxgroups;
+ $_SESSION['pages'] = $pages;
+ $_SESSION['assigned'] = time();
+ $_SESSION['review_mode'] = $reviewMode ? 1 : 0;
+
+ return true;
+}
?>