Diff -- /var/www/vhosts/3dshawn.com/site1/named_releases.cgi

O Operator
Diff

/var/www/vhosts/3dshawn.com/site1/named_releases.cgi

added on local at 2026-07-10 18:57:30

Added
+51
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to f66164415344
Restore this content →
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.
1#!/usr/bin/perl
2use strict;
3use warnings;
4use CGI ();
5use MODS::Config; use MODS::DBConnect; use MODS::Template; use MODS::PageWrapper;
6my $cgi = CGI->new; my $db = MODS::DBConnect->new; my $tpl = MODS::Template->new;
7$|=1;
8
9my $dbh = $db->db_connect or die "DB connect failed\n";
10
11# POST: create new named release
12if (($ENV{REQUEST_METHOD} || '') eq 'POST' && $cgi->param('save')) {
13 my $name = $cgi->param('name') || '';
14 my $desc = $cgi->param('description') || '';
15 my $by = $cgi->param('released_by') || 'Operator';
16 if (length $name) {
17 my $q_name = $dbh->quote($name);
18 my $q_desc = $dbh->quote($desc);
19 my $q_by = $dbh->quote($by);
20 $db->db_readwrite($dbh, qq~
21 INSERT INTO NAMED_RELEASES (name, description, released_at, released_by, is_locked, created_at)
22 VALUES ($q_name, $q_desc, NOW(), $q_by, 1, NOW())
23 ~, __FILE__, __LINE__);
24 }
25 print "Status: 302 Found\nLocation: /named_releases.cgi\n\n"; exit;
26}
27
28print "Content-Type: text/html; charset=utf-8\nCache-Control: no-cache\n\n";
29
30my @rows = $db->db_readwrite_multiple($dbh, q~
31 SELECT named_release_id AS id, name, description,
32 DATE_FORMAT(released_at, '%b %d, %Y %H:%i') AS released_h,
33 released_by, is_locked
34 FROM NAMED_RELEASES
35 ORDER BY released_at DESC
36 LIMIT 100
37~, __FILE__, __LINE__);
38foreach my $r (@rows) {
39 $r->{lock_pill} = $r->{is_locked} ? 'pill-ok' : 'pill-mute';
40 $r->{lock_lbl} = $r->{is_locked} ? 'PROTECTED' : 'UNLOCKED';
41}
42my $total = scalar @rows;
43
44$db->db_disconnect($dbh);
45
46my $tvars = { rows => \@rows, has_rows => $total ? 1 : 0, total => $total };
47my @body = $tpl->template('named_releases.html', $tvars);
48MODS::PageWrapper->new->wrapper(
49 page_title => 'Named releases', page_key => 'named_releases',
50 body_html => join('', @body), userinfo => { display_name => 'Operator' },
51);