Diff -- /var/www/vhosts/3dshawn.com/abforge.3dshawn.com/sites.cgi
Diff

/var/www/vhosts/3dshawn.com/abforge.3dshawn.com/sites.cgi

added on local at 2026-07-01 16:01:38

Added
+95
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to e3ddade263fd
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
2#======================================================================
3# ABForge -- /sites.cgi list / create / edit tracked sites.
4#======================================================================
5use strict;
6use warnings;
7use lib '/var/www/vhosts/3dshawn.com/abforge.3dshawn.com';
8use CGI;
9use MODS::Template;
10use MODS::DBConnect;
11use MODS::Login;
12use MODS::ABForge::Config;
13use MODS::ABForge::Wrapper;
14use MODS::ABForge::Sites;
15
16my $q = CGI->new;
17my $auth = MODS::Login->new;
18my $wrap = MODS::ABForge::Wrapper->new;
19my $tfile = MODS::Template->new;
20my $cfg = MODS::ABForge::Config->new;
21my $db = MODS::DBConnect->new;
22my $sites = MODS::ABForge::Sites->new;
23my $DB = $cfg->settings('database_name');
24
25my $userinfo = $auth->login_verify();
26unless ($userinfo) { print "Status: 302 Found\nLocation: /login.cgi\n\n"; exit; }
27
28my $form = $q->Vars;
29my $dbh = $db->db_connect();
30my $msg = '';
31
32if ($q->request_method eq 'POST' && $form->{create}) {
33 my $id = $sites->create($dbh, $DB, $userinfo->{user_id}, {
34 name => $form->{name}, domain => $form->{domain},
35 timezone => $form->{timezone}, currency => $form->{currency},
36 });
37 if ($id) { print "Location: /sites.cgi?id=$id&created=1\n\n"; exit; }
38 $msg = 'Could not create site — please try again.';
39}
40if ($q->request_method eq 'POST' && $form->{update_id}) {
41 my $ok = $sites->update($dbh, $DB, $form->{update_id}, $userinfo->{user_id}, {
42 name => $form->{name}, domain => $form->{domain},
43 timezone => $form->{timezone}, currency => $form->{currency},
44 sample_rate => $form->{sample_rate}, enable_heatmaps => $form->{enable_heatmaps},
45 status => $form->{status},
46 });
47 $msg = $ok ? 'Saved.' : 'Save failed.';
48}
49if ($q->request_method eq 'POST' && $form->{archive_id}) {
50 $sites->archive($dbh, $DB, $form->{archive_id}, $userinfo->{user_id});
51 print "Location: /sites.cgi?archived=1\n\n"; exit;
52}
53
54my @list = $sites->list_for_user($dbh, $DB, $userinfo->{user_id});
55my $current;
56if ($form->{id}) {
57 $current = $sites->get($dbh, $DB, $form->{id}, $userinfo->{user_id});
58} elsif (!$form->{new} && @list) {
59 $current = $list[0];
60}
61if ($current) {
62 $current->{status_active} = $current->{status} eq 'active' ? 1 : 0;
63 $current->{status_paused} = $current->{status} eq 'paused' ? 1 : 0;
64}
65$db->db_disconnect($dbh);
66
67my $base = $cfg->settings('base_url');
68my $snippet = $current ? $sites->install_snippet($current->{public_token}, $base) : '';
69# HTML-escape so the <script> renders as text inside <pre>, not as a real script tag
70$snippet =~ s/&/&amp;/g;
71$snippet =~ s/</&lt;/g;
72$snippet =~ s/>/&gt;/g;
73
74print "Content-Type: text/html; charset=utf-8\n\n";
75my $tvars = {
76 msg => $msg,
77 show_new => $form->{new} ? 1 : 0,
78 sites => \@list,
79 has_sites => scalar(@list) ? 1 : 0,
80 has_current => $current ? 1 : 0,
81 current => $current || {},
82 snippet => $snippet,
83 created => $form->{created} ? 1 : 0,
84 archived => $form->{archived} ? 1 : 0,
85};
86my $body = join('', $tfile->template('abforge_sites.html', $tvars, $userinfo));
87
88$wrap->render({
89 userinfo => $userinfo,
90 page_key => 'sites',
91 title => 'My Sites',
92 body => $body,
93 sites => \@list,
94 current_site_id => $current ? $current->{id} : '',
95});
Keyboard: j next diff k previous diff g top G bottom r restore c compile-check ? help