mirror of
https://github.com/itflow-org/itflow
synced 2026-08-16 20:45:12 +00:00
Fix share link view accounting and quote response handling
This commit is contained in:
@@ -392,7 +392,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()"));
|
|||||||
"SELECT * FROM shared_items
|
"SELECT * FROM shared_items
|
||||||
WHERE item_client_id = $client_id
|
WHERE item_client_id = $client_id
|
||||||
AND item_active = 1
|
AND item_active = 1
|
||||||
AND item_views != item_view_limit
|
AND (COALESCE(item_view_limit, 0) = 0 OR item_views < item_view_limit)
|
||||||
AND item_expire_at > NOW()
|
AND item_expire_at > NOW()
|
||||||
AND item_type = 'Credential'
|
AND item_type = 'Credential'
|
||||||
AND item_related_id = $credential_id
|
AND item_related_id = $credential_id
|
||||||
|
|||||||
@@ -734,7 +734,7 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num'])
|
|||||||
"SELECT * FROM shared_items
|
"SELECT * FROM shared_items
|
||||||
WHERE item_client_id = $client_id
|
WHERE item_client_id = $client_id
|
||||||
AND item_active = 1
|
AND item_active = 1
|
||||||
AND item_views != item_view_limit
|
AND (COALESCE(item_view_limit, 0) = 0 OR item_views < item_view_limit)
|
||||||
AND item_expire_at > NOW()
|
AND item_expire_at > NOW()
|
||||||
AND item_type = 'File'
|
AND item_type = 'File'
|
||||||
AND item_related_id = $file_id
|
AND item_related_id = $file_id
|
||||||
@@ -846,7 +846,7 @@ $num_root_items = intval($row_root_files['num']) + intval($row_root_docs['num'])
|
|||||||
"SELECT * FROM shared_items
|
"SELECT * FROM shared_items
|
||||||
WHERE item_client_id = $client_id
|
WHERE item_client_id = $client_id
|
||||||
AND item_active = 1
|
AND item_active = 1
|
||||||
AND item_views != item_view_limit
|
AND (COALESCE(item_view_limit, 0) = 0 OR item_views < item_view_limit)
|
||||||
AND item_expire_at > NOW()
|
AND item_expire_at > NOW()
|
||||||
AND item_type = 'Document'
|
AND item_type = 'Document'
|
||||||
AND item_related_id = $document_id
|
AND item_related_id = $document_id
|
||||||
|
|||||||
@@ -56,17 +56,22 @@ if (isset($_GET['id']) && isset($_GET['key'])) {
|
|||||||
exit("Item cannot be viewed at this time (No file, may have been deleted).");
|
exit("Item cannot be viewed at this time (No file, may have been deleted).");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$file_name = escapeSql($file_row['file_name']);
|
||||||
|
$file_reference_name = escapeSql($file_row['file_reference_name']);
|
||||||
|
$client_id = intval($file_row['file_client_id']);
|
||||||
|
$file_path = "../uploads/clients/$client_id/$file_reference_name";
|
||||||
|
|
||||||
|
// Don't burn a view on a file that is missing from disk
|
||||||
|
if (!is_readable($file_path)) {
|
||||||
|
exit("Item cannot be viewed at this time (No file, may have been deleted).");
|
||||||
|
}
|
||||||
|
|
||||||
// Claim the view before the file is served. The checks above stay as a
|
// Claim the view before the file is served. The checks above stay as a
|
||||||
// fast path for messaging - this UPDATE is what enforces the limit.
|
// fast path for messaging - this UPDATE is what enforces the limit.
|
||||||
if (!claimSharedItemView($item_id)) {
|
if (!claimSharedItemView($item_id)) {
|
||||||
exit("Item cannot be viewed at this time (view limit exceeded).");
|
exit("Item cannot be viewed at this time (view limit exceeded).");
|
||||||
}
|
}
|
||||||
|
|
||||||
$file_name = escapeSql($file_row['file_name']);
|
|
||||||
$file_reference_name = escapeSql($file_row['file_reference_name']);
|
|
||||||
$client_id = intval($file_row['file_client_id']);
|
|
||||||
$file_path = "../uploads/clients/$client_id/$file_reference_name";
|
|
||||||
|
|
||||||
// Display file as download
|
// Display file as download
|
||||||
$mime_type = mime_content_type($file_path);
|
$mime_type = mime_content_type($file_path);
|
||||||
header('Content-type: '.$mime_type);
|
header('Content-type: '.$mime_type);
|
||||||
@@ -74,6 +79,6 @@ if (isset($_GET['id']) && isset($_GET['key'])) {
|
|||||||
readfile($file_path);
|
readfile($file_path);
|
||||||
|
|
||||||
//Logging
|
//Logging
|
||||||
logAudit("Share", "View", "Downloaded shared file $file_name via link", $client_id);
|
logAudit("Share", "View", "Downloaded shared file $file_name via link", $client_id, $item_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,15 @@ if (isset($_GET['accept_quote'], $_GET['url_key'])) {
|
|||||||
$client_name = escapeSql($row['client_name']);
|
$client_name = escapeSql($row['client_name']);
|
||||||
$client_id = intval($row['client_id']);
|
$client_id = intval($row['client_id']);
|
||||||
|
|
||||||
mysqli_query($mysqli, "UPDATE quotes SET quote_status = 'Accepted' WHERE quote_id = $quote_id");
|
// Claim the response - only a quote still awaiting one can be accepted,
|
||||||
|
// and only the first request through wins
|
||||||
|
mysqli_query($mysqli, "UPDATE quotes SET quote_status = 'Accepted' WHERE quote_id = $quote_id AND quote_status IN ('Sent', 'Viewed')");
|
||||||
|
|
||||||
|
if (mysqli_affected_rows($mysqli) !== 1) {
|
||||||
|
flashAlert("This quote is no longer awaiting a response", 'error');
|
||||||
|
redirect();
|
||||||
|
}
|
||||||
|
|
||||||
mysqli_query($mysqli, "INSERT INTO history SET history_status = 'Accepted', history_description = 'Client accepted Quote!', history_quote_id = $quote_id");
|
mysqli_query($mysqli, "INSERT INTO history SET history_status = 'Accepted', history_description = 'Client accepted Quote!', history_quote_id = $quote_id");
|
||||||
|
|
||||||
// Notification
|
// Notification
|
||||||
@@ -97,7 +105,15 @@ if (isset($_GET['decline_quote'], $_GET['url_key'])) {
|
|||||||
$client_name = escapeSql($row['client_name']);
|
$client_name = escapeSql($row['client_name']);
|
||||||
$client_id = intval($row['client_id']);
|
$client_id = intval($row['client_id']);
|
||||||
|
|
||||||
mysqli_query($mysqli, "UPDATE quotes SET quote_status = 'Declined' WHERE quote_id = $quote_id");
|
// Claim the response - only a quote still awaiting one can be declined,
|
||||||
|
// and only the first request through wins
|
||||||
|
mysqli_query($mysqli, "UPDATE quotes SET quote_status = 'Declined' WHERE quote_id = $quote_id AND quote_status IN ('Sent', 'Viewed')");
|
||||||
|
|
||||||
|
if (mysqli_affected_rows($mysqli) !== 1) {
|
||||||
|
flashAlert("This quote is no longer awaiting a response", 'error');
|
||||||
|
redirect();
|
||||||
|
}
|
||||||
|
|
||||||
mysqli_query($mysqli, "INSERT INTO history SET history_status = 'Declined', history_description = 'Client declined Quote!', history_quote_id = $quote_id");
|
mysqli_query($mysqli, "INSERT INTO history SET history_status = 'Declined', history_description = 'Client declined Quote!', history_quote_id = $quote_id");
|
||||||
|
|
||||||
// Notification
|
// Notification
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ if ($item_type == "Document") {
|
|||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
$name = mysqli_real_escape_string($mysqli, $doc_title);
|
$name = mysqli_real_escape_string($mysqli, $doc_title);
|
||||||
logAudit("Share", "View", "Viewed shared $item_type $doc_title_escaped via link", $client_id);
|
logAudit("Share", "View", "Viewed shared $item_type $doc_title_escaped via link", $client_id, $item_id);
|
||||||
|
|
||||||
|
|
||||||
} elseif ($item_type == "File") {
|
} elseif ($item_type == "File") {
|
||||||
@@ -268,7 +268,7 @@ if ($item_type == "Document") {
|
|||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
$name = escapeSql($credential_row['credential_name']);
|
$name = escapeSql($credential_row['credential_name']);
|
||||||
logAudit("Share", "View", "Viewed shared $item_type $name via link", $client_id);
|
logAudit("Share", "View", "Viewed shared $item_type $name via link", $client_id, $item_id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user