Compare commits
2 Commits
f8addb95f1
...
5b57289a50
| Author | SHA1 | Date | |
|---|---|---|---|
| 5b57289a50 | |||
| e383b20c6b |
@@ -1,6 +1,7 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Giandonato Inverso
|
||||
Copyright (c) 2026 Dillard Blom
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -8,7 +8,8 @@ of the original [PHP Dynamic Qr code](https://github.com/giandonatoinverso/PHP-D
|
||||
project by Giandonato Inverso, built on [AdminLTE](https://adminlte.io/).
|
||||
|
||||
- **Try it free:** [qr.ensembia.com](https://qr.ensembia.com) - fully functional OSS test
|
||||
instance, register your own account any time.
|
||||
instance. Self-service signup isn't live yet, so log in with the temporary shared demo
|
||||
account `admin` / `admin` in the meantime.
|
||||
- **Commercial VIP edition** (self-service create-rights, logo-embedded QR codes):
|
||||
[www.qrforge.eu](https://www.qrforge.eu).
|
||||
- **Self-host it yourself:** this repository, MIT-licensed.
|
||||
|
||||
+2
-1
@@ -51,7 +51,8 @@ require_once BASE_PATH . '/includes/auth_validate.php';
|
||||
This is the free, open-source (MIT) edition of QRForge. It runs unmodified
|
||||
as a live, fully functional try-out at
|
||||
<a href="https://qr.ensembia.com" target="_blank">qr.ensembia.com</a> -
|
||||
register a free account there any time.
|
||||
self-service signup isn't live yet, so log in with the temporary shared
|
||||
demo account <code>admin</code> / <code>admin</code> in the meantime.
|
||||
</p>
|
||||
<p>
|
||||
The commercial VIP edition (paid create-rights and logo-embedded QR codes)
|
||||
|
||||
@@ -118,18 +118,6 @@
|
||||
|
||||
<div class="col-sm-12 mb-2">
|
||||
<div class="row">
|
||||
<div class="col-6 col-md-1">
|
||||
<label for="format">Format *</label>
|
||||
<select name="format" class="form-control" required="required">
|
||||
<option value="png" selected>PNG</option>
|
||||
<option value="gif">GIF</option>
|
||||
<option value="jpeg">JPEG</option>
|
||||
<option value="jpg">JPG</option>
|
||||
<option value="svg">SVG</option>
|
||||
<option value="eps">EPS</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
<label for="frame_text">Frame text</label>
|
||||
@@ -178,6 +166,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-6 col-md-1">
|
||||
<label for="format">Format *</label>
|
||||
<select name="format" class="form-control" required="required">
|
||||
<option value="png" selected>PNG</option>
|
||||
<option value="gif">GIF</option>
|
||||
<option value="jpeg">JPEG</option>
|
||||
<option value="jpg">JPG</option>
|
||||
<option value="svg">SVG</option>
|
||||
<option value="eps">EPS</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<?php if ($_SESSION['type'] === 'super') { ?>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -114,23 +114,6 @@ if (QRCODE_GENERATOR === "internal-chillerlan.qrcode") {
|
||||
|
||||
<div class="col-sm-12 mb-2">
|
||||
<div class="row">
|
||||
<div class="col-6 col-md-1">
|
||||
<label for="format">Format</label>
|
||||
<select name="format" class="form-control">
|
||||
<option value="png">PNG</option>
|
||||
<option value="gif">GIF</option>
|
||||
<option value="jpeg">JPEG</option>
|
||||
<option value="jpg">JPG</option>
|
||||
<option value="svg">SVG</option>
|
||||
<?php
|
||||
if (QRCODE_GENERATOR === "internal-chillerlan.qrcode") {
|
||||
echo ' <option value="svgbw">SVG (BW)</option>';
|
||||
}
|
||||
?>
|
||||
<option value="eps">EPS</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
<label for="frame_text">Frame text</label>
|
||||
@@ -179,6 +162,23 @@ if (QRCODE_GENERATOR === "internal-chillerlan.qrcode") {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-6 col-md-1">
|
||||
<label for="format">Format</label>
|
||||
<select name="format" class="form-control">
|
||||
<option value="png">PNG</option>
|
||||
<option value="gif">GIF</option>
|
||||
<option value="jpeg">JPEG</option>
|
||||
<option value="jpg">JPG</option>
|
||||
<option value="svg">SVG</option>
|
||||
<?php
|
||||
if (QRCODE_GENERATOR === "internal-chillerlan.qrcode") {
|
||||
echo ' <option value="svgbw">SVG (BW)</option>';
|
||||
}
|
||||
?>
|
||||
<option value="eps">EPS</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<?php if ($_SESSION['type'] === 'super') { ?>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-group">
|
||||
|
||||
@@ -177,12 +177,18 @@ function qr_has_full_visibility() {
|
||||
/**
|
||||
* Apply the current session's owner scope to a MysqliDb query builder in place.
|
||||
* No-op when the session has full visibility.
|
||||
*
|
||||
* Uses a single raw, parenthesized condition rather than where()+orWhere() -
|
||||
* the previous two-call form produced "WHERE id = ? AND id_owner = ? OR id_owner
|
||||
* IS NULL" whenever a caller had already added its own where('id', ...) (e.g.
|
||||
* qrcode_image.php, bulk_action.php), and AND binds tighter than OR in SQL, so
|
||||
* the OR silently detached from the id filter and matched *any* id_owner-NULL
|
||||
* row instead of the one actually requested.
|
||||
*/
|
||||
function qr_apply_owner_scope($db) {
|
||||
$scope_owner_id = qr_scope_owner_id();
|
||||
if ($scope_owner_id !== null) {
|
||||
$db->where('id_owner', $scope_owner_id);
|
||||
$db->orWhere('id_owner', NULL, 'IS');
|
||||
$db->where('(id_owner = ' . (int) $scope_owner_id . ' OR id_owner IS NULL)');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user