Add initial files and database migration for ticket pricing system

- Created new directories and index files for controls, factory, and views.
- Added .htaccess files for URL rewriting in layout and images directories.
- Included a logo image in the layout/images directory.
- Implemented load_prices.php to load ticket prices from the database into settings.
- Developed admin panel settings page for enabling ticket sales.
- Created tickets management page in the admin panel to display and edit ticket prices.
- Added upgrade.php for database migrations, including creating the ticket_prices table and adding weekend price column.
This commit is contained in:
2026-02-23 00:17:46 +01:00
parent 58b2373712
commit 238c9ecaed
37 changed files with 2052 additions and 1841 deletions

View File

@@ -203,6 +203,48 @@ class Apanel
exit;
}
static public function tickets()
{
global $settings;
return \Tpl::view('admin-panel/tickets', [
'tickets' => $settings['tickets']
]);
}
static public function tickets_save()
{
global $mdb;
if (empty($_POST['tickets']) || !is_array($_POST['tickets'])) {
echo json_encode(['status' => 'error', 'message' => 'Brak danych']);
exit;
}
foreach ($_POST['tickets'] as $ticketId => $data) {
$ticketId = preg_replace('/[^a-z0-9\-]/', '', $ticketId);
$price = trim($data['price'] ?? '') !== '' ? (float) $data['price'] : null;
$priceWkd = trim($data['price_weekend'] ?? '') !== '' ? (float) $data['price_weekend'] : null;
$day0 = trim($data['day0'] ?? '') !== '' ? (float) $data['day0'] : null;
$day12 = trim($data['day1_2'] ?? '') !== '' ? (float) $data['day1_2'] : null;
$day37 = trim($data['day3_7'] ?? '') !== '' ? (float) $data['day3_7'] : null;
$stmt = $mdb->pdo->prepare('REPLACE INTO ticket_prices (ticket_id, price, price_weekend, dynamic_price_day0, dynamic_price_day1_2, dynamic_price_day3_7) VALUES (:tid, :price, :priceWkd, :day0, :day12, :day37)');
$stmt->execute([
':tid' => $ticketId,
':price' => $price,
':priceWkd' => $priceWkd,
':day0' => $day0,
':day12' => $day12,
':day37' => $day37,
]);
}
echo json_encode(['status' => 'ok']);
exit;
}
static public function use_ticket() {
global $mdb;
@@ -216,4 +258,22 @@ class Apanel
exit;
}
static public function settings()
{
$enable_sell = \factory\Apanel::getSetting('enable_sell', '1');
return \Tpl::view('admin-panel/settings', [
'enable_sell' => $enable_sell
]);
}
static public function settings_save()
{
$enable_sell = isset($_POST['enable_sell']) ? '1' : '0';
\factory\Apanel::saveSetting('enable_sell', $enable_sell);
echo json_encode(['status' => 'ok']);
exit;
}
}

View File

@@ -8,7 +8,9 @@ class Tickets
{
global $settings;
if ( !$settings['tickets']['enable_sell'] )
$enable_sell = \factory\Apanel::getSetting('enable_sell', '1');
if ( !$enable_sell || $enable_sell === '0' )
return \Tpl::view( 'tickets/disabled-sell' );
return \Tpl::view('tickets/main-view', [
@@ -51,8 +53,13 @@ class Tickets
$addon = 0;
}
$is_weekend = $selected_date && in_array((new \DateTime($selected_date))->format('N'), ['6', '7']);
$base_price = $is_weekend
? ($settings['tickets'][$ticket_id]['price_weekend'] ?? $settings['tickets'][$ticket_id]['price'])
: $settings['tickets'][$ticket_id]['price'];
$basket[$ticket_id][$diffDays]['ticket_id'] = $ticket_id;
$basket[$ticket_id][$diffDays]['ticket_price'] = $settings['tickets'][$ticket_id]['price'] + $addon;
$basket[$ticket_id][$diffDays]['ticket_price'] = $base_price + $addon;
$basket[$ticket_id][$diffDays]['product_id'] = $settings['tickets'][$ticket_id]['product_id'];
$basket[$ticket_id][$diffDays]['quantity'] = 1;
$basket[$ticket_id][$diffDays]['date'] = $selected_date;

View File