base
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
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;
|
||||
#
|
||||
Reference in New Issue
Block a user