Diff -- /var/www/vhosts/3dshawn.com/ptmatrix.3dshawn.com/labels.cgi
Diff

/var/www/vhosts/3dshawn.com/ptmatrix.3dshawn.com/labels.cgi

added on local at 2026-07-01 12:34:16

Added
+138
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to ada2fb243717
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##################################################################################################################################
4# ______ ____ ____ ______ ______ ____ ___ __ ___ ______ _ __ ____ ____ __ __ _ __ _____ ____
5# / ____// __ \ / __ \ / ____/ / ____// __ \ / | / |/ // ____/| | / // __ \ / __ \ / //_/ | | / /|__ / / __ \
6# / / / / / // / / // __/ / /_ / /_/ // /| | / /|_/ // __/ | | /| / // / / // /_/ // ,< | | / / /_ < / / / /
7# / /___ / /_/ // /_/ // /___ / __/ / _, _// ___ | / / / // /___ | |/ |/ // /_/ // _, _// /| | | |/ / ___/ /_ / /_/ /
8# \____/ \____//_____//_____/ /_/ /_/ |_|/_/ |_|/_/ /_//_____/ |__/|__/ \____//_/ |_|/_/ |_| |___/ /____/(_)\____/
9#
10# - Written by: Shawn Pickering
11# - shawn@shawnpickering.com
12##################################################################################################################################
13use strict;
14use lib '/var/www/vhosts/3dshawn.com/ptmatrix.3dshawn.com';
15
16
17#############################################################
18## Variables
19#############################################################
20
21
22
23############################################################
24# Modules
25############################################################
26#Load the CGI module
27use CGI;
28my $query = new CGI;
29my $form = $query->Vars;
30
31#Load the login module
32use MODS::Login;
33my $login = new MODS::Login;
34
35#Load Urls
36use MODS::PTMatrix::Urls;
37my $getlist = new MODS::PTMatrix::Urls;
38my $url = $getlist->urls();
39
40#Load the template module
41use MODS::Template;
42my $tfile = new MODS::Template;
43
44#Page Wrapper Module
45use MODS::PTMatrix::Wrapper;
46my $load = new MODS::PTMatrix::Wrapper;
47
48#Load the database connect module
49use MODS::DBConnect;
50my $db = new MODS::DBConnect;
51
52#Load the configuration file
53use MODS::PTMatrix::Config;
54my $config = new MODS::PTMatrix::Config;
55my $database_name = $config->settings('database_name');
56
57#Shared PM helpers
58use MODS::PTMatrix::PM;
59
60
61
62#############################################################
63## Get form data
64#############################################################
65#Escapes bad characters
66foreach my $line(keys %$form){
67 $form->{$line} =~ s/[^!-~\s]//g; #Remove non ascii chars
68 $form->{$line} = quotemeta("$form->{$line}");
69}
70
71
72
73############################################################
74# Program Controls
75############################################################
76$|=1;
77my $userinfo = $login->login_verify();
78print qq~Content-type:text/html; Cache-Control:no-cache;\n\n~;
79if(!$userinfo){print qq~<script>window.location="$url->{login}";</script>~;}
80elsif(!MODS::PTMatrix::PM::is_company_admin($userinfo)){print qq~<script>window.location="$url->{dashboard}";</script>~;}
81elsif(($ENV{REQUEST_METHOD}||'') eq 'POST'){&label_action;}
82else{&labels_list;}
83
84
85############################################################
86# Subroutines
87############################################################
88sub label_action{
89 my $cid = MODS::PTMatrix::PM::get_company_id($userinfo);
90 my $dbh = $db->db_connect();
91
92 my $act = $form->{act} || '';
93 if($act eq 'create'){
94 my $name = MODS::PTMatrix::PM::sql_quote($form->{name} || '');
95 my $color = MODS::PTMatrix::PM::safe_color($form->{color});
96 my $sql = qq~INSERT IGNORE INTO `${database_name}`.task_labels (company_id, name, color) VALUES ('$cid', '$name', '$color')~;
97 $db->db_readwrite($dbh, $sql, $ENV{SCRIPT_NAME}, __LINE__);
98 }elsif($act eq 'delete'){
99 my $id = MODS::PTMatrix::PM::safe_int($form->{id});
100 my $sql = qq~DELETE FROM `${database_name}`.task_labels WHERE id='$id' AND company_id='$cid'~;
101 $db->db_readwrite($dbh, $sql, $ENV{SCRIPT_NAME}, __LINE__);
102 }
103
104 $db->db_disconnect($dbh);
105 print qq~<script>window.location="$url->{labels}";</script>~;
106}
107
108sub labels_list{
109 my $cid = MODS::PTMatrix::PM::get_company_id($userinfo);
110 my $dbh = $db->db_connect();
111
112 #------------------------------------------------------------------------------------------------------
113 #Every label this company has, plus the usage count for the chip
114 my $sql = qq~SELECT id, name, color, (SELECT COUNT(*) FROM `${database_name}`.task_label_links l WHERE l.label_id=task_labels.id) AS used_n FROM `${database_name}`.task_labels WHERE company_id='$cid' ORDER BY name~;
115 my @labels = $db->db_readwrite_multiple($dbh, $sql, $ENV{SCRIPT_NAME}, __LINE__);
116 #------------------------------------------------------------------------------------------------------
117
118 foreach my $l(@labels){
119 $l->{name} = MODS::PTMatrix::PM::h($l->{name});
120 $l->{color} ||= '#5aa9ff';
121 }
122
123 $db->db_disconnect($dbh);
124
125 #Create all template variables
126 my $tvars;
127 $tvars->{labels} = \@labels;
128 $tvars->{has_labels} = scalar(@labels) ? 1 : 0;
129
130 my $body = join('', $tfile->template('tf_labels.html', $tvars, $userinfo));
131
132 $load->render({
133 userinfo => $userinfo,
134 page_key => 'labels',
135 title => 'Labels',
136 body => $body,
137 });
138}
Keyboard: j next diff k previous diff g top G bottom r restore c compile-check ? help