Diff -- /var/www/vhosts/3dshawn.com/affiliate.3dshawn.com/admin_tracking_action.cgi
Diff

/var/www/vhosts/3dshawn.com/affiliate.3dshawn.com/admin_tracking_action.cgi

added on local at 2026-07-01 13:47:01

Added
+138
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to 63c68acc3df5
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# WebSTLs - Admin Tracking actions (chat send, push link, online toggle)
4#======================================================================
5use strict;
6use warnings;
7
8use lib '/var/www/vhosts/3dshawn.com/affiliate.3dshawn.com';
9use CGI;
10use MODS::DBConnect;
11use MODS::Login;
12use MODS::AffSoft::Config;
13use MODS::AffSoft::Admin;
14use MODS::AffSoft::Tracking;
15
16my $q = CGI->new;
17my $form = $q->Vars;
18my $auth = MODS::Login->new;
19my $db = MODS::DBConnect->new;
20my $cfg = MODS::AffSoft::Config->new;
21my $admin = MODS::AffSoft::Admin->new;
22my $tr = MODS::AffSoft::Tracking->new;
23my $DB = $cfg->settings('database_name');
24
25$|=1;
26my $userinfo = $auth->login_verify();
27if (!$userinfo) {
28 print "Status: 302 Found\nLocation: /login.cgi\n\n";
29 exit;
30}
31$admin->require_admin($userinfo);
32require MODS::AffSoft::Permissions;
33MODS::AffSoft::Permissions->new->require_feature($userinfo, 'admin_view_traffic');
34
35my $admin_id = $userinfo->{user_id};
36$admin_id =~ s/[^0-9]//g;
37
38my $act = $form->{act} || '';
39my $back_to = $form->{back_to} || '';
40
41my $dbh = $db->db_connect();
42unless ($tr->schema_ready($db, $dbh, $DB)) {
43 $db->db_disconnect($dbh);
44 _back($back_to, '?err=schema');
45 exit;
46}
47
48if ($act eq 'send_message') {
49 my $chat_id = $form->{chat_id}; $chat_id =~ s/[^0-9]//g;
50 my $body = $form->{body} || '';
51 if ($chat_id && length $body) {
52 $tr->post_chat_message($db, $dbh, $DB,
53 chat_id => $chat_id,
54 from_role => 'admin',
55 admin_user_id => $admin_id,
56 body => $body,
57 );
58 }
59 $db->db_disconnect($dbh);
60 _back($back_to, '?chat=' . ($chat_id || ''));
61 exit;
62}
63
64if ($act eq 'push_link') {
65 my $sid = $form->{session_id}; $sid =~ s/[^0-9]//g;
66 my $url = $form->{url} || '';
67 my $label = $form->{label} || '';
68 if ($sid && length $url) {
69 $tr->push_link($db, $dbh, $DB,
70 session_id => $sid,
71 admin_user_id => $admin_id,
72 url => $url,
73 label => $label,
74 open_mode => $form->{open_mode} || 'new_tab',
75 );
76 }
77 $db->db_disconnect($dbh);
78 if ($back_to eq 'chat') {
79 my $chat_id = $form->{chat_id} || '';
80 $chat_id =~ s/[^0-9]//g;
81 _back('chat', '?chat=' . $chat_id . '&ok=pushed');
82 } else {
83 _back('visitors', '?id=' . $sid . '&ok=pushed');
84 }
85 exit;
86}
87
88if ($act eq 'toggle_online') {
89 my $value = $form->{value};
90 $value = ($value && $value eq '1') ? 1 : 0;
91 $tr->set_admin_online($db, $dbh, $DB, $value, $admin_id);
92 $db->db_disconnect($dbh);
93 _back('chat', '');
94 exit;
95}
96
97if ($act eq 'close_chat') {
98 my $chat_id = $form->{chat_id}; $chat_id =~ s/[^0-9]//g;
99 if ($chat_id) {
100 $tr->close_chat_by_admin($db, $dbh, $DB, $chat_id, $admin_id);
101 }
102 $db->db_disconnect($dbh);
103 # Land on the Closed view with this chat selected -- otherwise it
104 # vanishes from the default Active list and looks broken.
105 _back('chat', '?view=closed&chat=' . ($chat_id || ''));
106 exit;
107}
108
109if ($act eq 'archive_chat') {
110 my $chat_id = $form->{chat_id}; $chat_id =~ s/[^0-9]//g;
111 if ($chat_id) {
112 $tr->archive_chat_by_admin($db, $dbh, $DB, $chat_id, $admin_id);
113 }
114 $db->db_disconnect($dbh);
115 _back('chat', '?view=archived&chat=' . ($chat_id || ''));
116 exit;
117}
118
119if ($act eq 'reopen_chat') {
120 my $chat_id = $form->{chat_id}; $chat_id =~ s/[^0-9]//g;
121 if ($chat_id) {
122 $tr->reopen_chat_by_admin($db, $dbh, $DB, $chat_id, $admin_id);
123 }
124 $db->db_disconnect($dbh);
125 _back('chat', '?view=active&chat=' . ($chat_id || ''));
126 exit;
127}
128
129$db->db_disconnect($dbh);
130_back($back_to, '?err=unknown_act');
131
132sub _back {
133 my ($where, $qs) = @_;
134 my $loc = ($where eq 'visitors') ? '/admin_visitors.cgi'
135 : ($where eq 'chat') ? '/admin_chat.cgi'
136 : '/admin_chat.cgi';
137 print "Status: 302 Found\nLocation: $loc$qs\n\n";
138}
Keyboard: j next diff k previous diff g top G bottom r restore c compile-check ? help