147 lines
4.0 KiB
Perl
147 lines
4.0 KiB
Perl
package TTXGrpCmd;
|
|
#
|
|
# This module is a part of Trouble Ticket Express package
|
|
# http://www.troubleticketexpress.com
|
|
#
|
|
# COPYRIGHT: 2006, United Web Coders
|
|
# http://www.unitedwebcoders.com
|
|
#
|
|
# $Revision: 216 $
|
|
# $Date: 2006-07-21 05:19:45 -0400 (Fri, 21 Jul 2006) $
|
|
#
|
|
|
|
$TTXGrpCmd::VERSION='2.22';
|
|
BEGIN {
|
|
$TTXGrpCmd::REVISION = '$Revision: 216 $';
|
|
if ($TTXGrpCmd::REVISION =~ /(\d+)/) {
|
|
$TTXGrpCmd::REVISION = $1;
|
|
}
|
|
};
|
|
|
|
use strict;
|
|
use TTXCommon;
|
|
require TTXUser;
|
|
use TTXTickets;
|
|
require TTXMail;
|
|
require TTXMarkup;
|
|
require TTXTicket;
|
|
|
|
# ================================================================== checkgroups
|
|
my $groupsenabled;
|
|
sub checkgroups {
|
|
if ($groupsenabled eq undef) {
|
|
eval "use TTXGroups";
|
|
if (!$@) {
|
|
$groupsenabled = 1;
|
|
} else {
|
|
$groupsenabled = 0;
|
|
if ($_[0]->get('usegrpsel')) {
|
|
$_[0]->set('usegrpsel', 0);
|
|
$_[0]->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# ======================================================================= lockdb
|
|
my $lockcnt;
|
|
sub lockdb {
|
|
return ++$lockcnt if $lockcnt;
|
|
my $cfg = TTXData::get('CONFIG');
|
|
return 1 if $cfg->get('dbmode') !~ /sql/;
|
|
my $lockfile = $cfg->get('basedir')."/lockdb.ttx";
|
|
if (! -f $lockfile) {
|
|
if (!open(LOCK, ">$lockfile")) {
|
|
return 0;
|
|
}
|
|
} elsif (!open(LOCK,"+<$lockfile")) {
|
|
return 0;
|
|
}
|
|
flock(LOCK, 2);
|
|
$lockcnt = 1;
|
|
return 1;
|
|
}
|
|
# ===================================================================== unlockdb
|
|
|
|
sub unlockdb {
|
|
return if !$lockcnt;
|
|
my $cfg = TTXData::get('CONFIG');
|
|
return if $cfg->get('dbmode') !~ /sql/;
|
|
--$lockcnt;
|
|
if (!$lockcnt) {
|
|
flock(LOCK, 8);
|
|
close LOCK;
|
|
}
|
|
}
|
|
# =========================================================================== do
|
|
|
|
sub do {
|
|
my ($cfg, $query, $data) = @_;
|
|
checkgroups($cfg);
|
|
lockdb();
|
|
my $tickets = TTXCommon::dbtik();
|
|
if ($tickets eq undef || $tickets->error() ne undef) {
|
|
$data->{ERROR_MESSAGE} = $tickets->errortext();
|
|
return undef;
|
|
}
|
|
my $update = 0;
|
|
my @tidlist = $query->param('tid');
|
|
my $user = $cfg->get('_USER');
|
|
my $userid = $user->{login};
|
|
my $readonly = $user->get('ro') ? 1:0;
|
|
if (!$readonly) {
|
|
foreach my $tid (@tidlist) {
|
|
if ($query->param('del') ne undef) {
|
|
if (!($cfg->get('demo') && $userid ne 'admin') &&
|
|
($cfg->get('grant.delete') eq undef || grep(/^$userid$/, split(/,/, $cfg->get('grant.delete'))))) {
|
|
$tickets->deltik($tid);
|
|
$update = 1;
|
|
}
|
|
} elsif ($query->param('close') ne undef) {
|
|
my $t = $tickets->ticket($tid);
|
|
next if $t eq undef;
|
|
if ($t->{status} ne 'CLS') {
|
|
if ($t->{oper} eq undef) {
|
|
$t->{oper} = $userid;
|
|
}
|
|
$t->{status} = 'CLS';
|
|
$t->{updated} = time();
|
|
$t->{closed} = $t->{updated};
|
|
TTXCommon::logit("CLOSE|$userid|".$t->{id});
|
|
$update = 1;
|
|
}
|
|
} elsif ($query->param('assign') ne undef) {
|
|
my $t = $tickets->ticket($tid);
|
|
next if $t eq undef;
|
|
my $to = TTXCommon::cleanit($query, 'to');
|
|
next if $to eq undef;
|
|
if ($to !~ /^\+/ && $t->{oper} ne $to) {
|
|
my $user = TTXUser->new($to);
|
|
next if ($user eq undef || $user->get('login') eq undef);
|
|
$t->{oper} = $to;
|
|
$t->{status} = 'OPN' if $cfg->get('transferopens') || $t->{status} eq 'PND';
|
|
$update = 1;
|
|
$t->{updated} = time();
|
|
TTXCommon::logit("TRANSFER|$userid|".$t->{id}."|$to");
|
|
TTXTicket::transfernotice({cfg => $cfg, ticket => $t});
|
|
} elsif($cfg->get('usegrpsel')) {
|
|
next if $t->{grp} eq "+$to";
|
|
$t->{grp} = $to;
|
|
TTXGroups::grptransfer({cfg => $cfg, ticket => $t});
|
|
$update = 1;
|
|
$t->{updated} = time();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$tickets->save() if $update;
|
|
unlockdb();
|
|
$query->param(-name => 'tid', -value => '');
|
|
$query->param(-name => 'del', -value => '');
|
|
$query->param(-name => 'close', -value => '');
|
|
$query->param(-name => 'assign', -value => '');
|
|
return 'helpdesk'
|
|
}
|
|
|
|
1;
|
|
#
|