summaryrefslogtreecommitdiff
path: root/rt/etc
diff options
context:
space:
mode:
Diffstat (limited to 'rt/etc')
-rw-r--r--rt/etc/RT_Config.pm374
-rw-r--r--rt/etc/RT_Config.pm.in374
-rw-r--r--rt/etc/RT_SiteConfig.pm1
-rw-r--r--rt/etc/acl.Informix5
-rw-r--r--rt/etc/acl.Oracle19
-rwxr-xr-xrt/etc/acl.Pg96
-rwxr-xr-xrt/etc/acl.mysql12
-rwxr-xr-xrt/etc/config.pm473
-rw-r--r--rt/etc/constraints.mysql42
-rw-r--r--rt/etc/drop.Informix19
-rw-r--r--rt/etc/drop.Oracle37
-rw-r--r--rt/etc/initialdata569
-rw-r--r--rt/etc/schema.Informix342
-rw-r--r--rt/etc/schema.Oracle287
-rwxr-xr-xrt/etc/schema.Pg747
-rw-r--r--rt/etc/schema.SQLite390
-rwxr-xr-xrt/etc/schema.mysql429
-rw-r--r--rt/etc/schema.pm349
-rw-r--r--rt/etc/upgrade/2.1.71211
19 files changed, 1516 insertions, 3260 deletions
diff --git a/rt/etc/RT_Config.pm b/rt/etc/RT_Config.pm
deleted file mode 100644
index 5386a8e05..000000000
--- a/rt/etc/RT_Config.pm
+++ /dev/null
@@ -1,374 +0,0 @@
-#
-# WARNING: NEVER EDIT RT_Config.pm. Instead, copy any sections you want to change to RT_SiteConfig.pm
-# and edit them there.
-#
-
-package RT;
-
-=head1 NAME
-
-RT::Config
-
-=for testing
-
-use RT::Config;
-
-=cut
-
-# {{{ Base Configuration
-
-# $rtname the string that RT will look for in mail messages to
-# figure out what ticket a new piece of mail belongs to
-
-# Your domain name is recommended, so as not to pollute the namespace.
-# once you start using a given tag, you should probably never change it.
-# (otherwise, mail for existing tickets won't get put in the right place
-
-Set($rtname , "example.com");
-
-# You should set this to your organization's DNS domain. For example,
-# fsck.com or asylum.arkham.ma.us. It's used by the linking interface to
-# guarantee that ticket URIs are unique and easy to construct.
-
-Set($Organization , "example.com");
-
-# $user_passwd_min defines the minimum length for user passwords. Setting
-# it to 0 disables this check
-Set($MinimumPasswordLength , "5");
-
-# $Timezone is used to convert times entered by users into GMT and back again
-# It should be set to a timezone recognized by your local unix box.
-Set($Timezone , 'US/Eastern');
-
-# }}}
-
-# }}}
-
-# {{{ Database Configuration
-
-# Database driver beeing used. Case matters
-# Valid types are "mysql", "Oracle" and "Pg"
-
-Set($DatabaseType , 'mysql');
-
-# The domain name of your database server
-# If you're running mysql and it's on localhost,
-# leave it blank for enhanced performance
-Set($DatabaseHost , 'localhost');
-Set($DatabaseRTHost , 'localhost');
-
-# The port that your database server is running on. Ignored unless it's
-# a positive integer. It's usually safe to leave this blank
-Set($DatabasePort , '');
-
-#The name of the database user (inside the database)
-Set($DatabaseUser , 'rt_user');
-
-# Password the DatabaseUser should use to access the database
-Set($DatabasePassword , 'rt_pass');
-
-# The name of the RT's database on your database server
-Set($DatabaseName , 'rt3');
-
-# If you're using Postgres and have compiled in SSL support,
-# set DatabaseRequireSSL to 1 to turn on SSL communication
-Set($DatabaseRequireSSL , undef);
-
-# }}}
-
-# {{{ Incoming mail gateway configuration
-
-# OwnerEmail is the address of a human who manages RT. RT will send
-# errors generated by the mail gateway to this address. This address
-# should _not_ be an address that's managed by your RT instance.
-
-Set($OwnerEmail , 'root');
-
-# If $LoopsToRTOwner is defined, RT will send mail that it believes
-# might be a loop to $RT::OwnerEmail
-
-Set($LoopsToRTOwner , 1);
-
-# If $StoreLoopss is defined, RT will record messages that it believes
-# to be part of mail loops.
-# As it does this, it will try to be careful not to send mail to the
-# sender of these messages
-
-Set($StoreLoops , undef);
-
-# $MaxAttachmentSize sets the maximum size (in bytes) of attachments stored
-# in the database.
-
-# For mysql and oracle, we set this size at 10 megabytes.
-# If you're running a postgres version earlier than 7.1, you will need
-# to drop this to 8192. (8k)
-
-Set($MaxAttachmentSize , 10000000);
-
-# $TruncateLongAttachments: if this is set to a non-undef value,
-# RT will truncate attachments longer than MaxAttachmentLength.
-
-Set($TruncateLongAttachments , undef);
-
-# $DropLongAttachments: if this is set to a non-undef value,
-# RT will silently drop attachments longer than MaxAttachmentLength.
-
-Set($DropLongAttachments , undef);
-
-# If $ParseNewMessageForTicketCcs is true, RT will attempt to divine
-# Ticket 'Cc' watchers from the To and Cc lines of incoming messages
-# Be forewarned that if you have _any_ addresses which forward mail to
-# RT automatically and you enable this option without modifying
-# "RTAddressRegexp" below, you will get yourself into a heap of trouble.
-
-Set($ParseNewMessageForTicketCcs , undef);
-
-# RTAddressRegexp is used to make sure RT doesn't add itself as a ticket CC if
-# the setting above is enabled.
-
-Set($RTAddressRegexp , '^rt\@example.com$');
-
-# RT provides functionality which allows the system to rewrite
-# incoming email addresses. In its simplest form,
-# you can substitute the value in CanonicalizeEmailAddressReplace
-# for the value in CanonicalizeEmailAddressMatch
-# (These values are passed to the CanonicalizeEmailAddress subroutine in RT/User.pm)
-# By default, that routine performs a s/$Match/$Replace/gi on any address passed to it
-
-Set($CanonicalizeEmailAddressMatch , 'subdomain.example.com$');
-Set($CanonicalizeEmailAddressReplace , 'example.com');
-
-# If $SenderMustExistInExternalDatabase is true, RT will refuse to
-# create non-privileged accounts for unknown users if you are using
-# the "LookupSenderInExternalDatabase" option.
-# Instead, an error message will be mailed and RT will forward the
-# message to $RTOwner.
-#
-# If you are not using $LookupSenderInExternalDatabase, this option
-# has no effect.
-#
-# If you define an AutoRejectRequest template, RT will use this
-# template for the rejection message.
-
-Set($SenderMustExistInExternalDatabase , undef);
-
-# }}}
-
-# {{{ Outgoing mail configuration
-
-# RT is designed such that any mail which already has a ticket-id associated
-# with it will get to the right place automatically.
-
-# $CorrespondAddress and $CommentAddress are the default addresses
-# that will be listed in From: and Reply-To: headers of correspondence
-# and comment mail tracked by RT, unless overridden by a queue-specific
-# address.
-
-Set($CorrespondAddress , 'RT_CorrespondAddressNotSet');
-
-Set($CommentAddress , 'RT_CommentAddressNotSet');
-
-#Sendmail Configuration
-
-# $MailCommand defines which method RT will use to try to send mail
-# We know that 'sendmailpipe' works fairly well.
-# If 'sendmailpipe' doesn't work well for you, try 'sendmail'
-#
-# Note that you should remove the '-t' from $SendmailArguments
-# if you use 'sendmail rather than 'sendmailpipe'
-
-Set($MailCommand , 'sendmailpipe');
-
-# $SendmailArguments defines what flags to pass to $Sendmail
-# assuming you picked 'sendmail' or 'sendmailpipe' as the $MailCommand above.
-# If you picked 'sendmailpipe', you MUST add a -t flag to $SendmailArguments
-
-# These options are good for most sendmail wrappers and workalikes
-Set($SendmailArguments , "-oi -t");
-
-# These arguments are good for sendmail brand sendmail 8 and newer
-#Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");
-
-# If you selected 'sendmailpipe' above, you MUST specify the path
-# to your sendmail binary in $SendmailPath.
-# !! If you did not # select 'sendmailpipe' above, this has no effect!!
-Set($SendmailPath , "/usr/sbin/sendmail");
-
-# By default, RT sets the outgoing mail's "From:" header to
-# "SenderName via RT". Setting this option to 0 disables it.
-
-Set($UseFriendlyFromLine , 1);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are SenderName and SenderEmailAddress.
-Set($FriendlyFromLineFormat , "\"%s via RT\" <%s>");
-
-# RT can optionally set a "Friendly" 'To:' header when sending messages to
-# Ccs or AdminCcs (rather than having a blank 'To:' header.
-
-# This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL
-# If you are using sendmail, rather than postfix, qmail, exim or some other MTA,
-# you _must_ disable this option.
-
-Set($UseFriendlyToLine , 0);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are WatcherType and TicketId.
-Set($FriendlyToLineFormat, "\"%s of $RT::rtname Ticket #%s\":;");
-
-# By default RT doesn't notify the person who performs an update, as they
-# already know what they've done. If you'd like to change this behaviour,
-# Set $NotifyActor to 1
-
-Set($NotifyActor, 0);
-
-
-# }}}
-
-# {{{ Logging
-
-# Logging. The default is to log anything except debugging
-# information to syslog. Check the Log::Dispatch POD for
-# information about how to get things by syslog, mail or anything
-# else, get debugging info in the log, etc.
-
-# It might generally make
-# sense to send error and higher by email to some administrator.
-# If you do this, be careful that this email isn't sent to this RT instance.
-
-# the minimum level error that will be logged to the specific device.
-# levels from lowest to highest:
-# debug info notice warning error critical alert emergency
-
-# Mail loops will generate a critical log message.
-Set($LogToSyslog , 'debug');
-Set($LogToScreen , 'error');
-Set($LogToFile , undef);
-Set($LogDir, '/opt/rt3/var/log');
-Set($LogToFileNamed , "rt.log"); #log to rt.log
-
-# }}}
-
-# {{{ Web interface configuration
-
-# Define the directory name to be used for images in rt web
-# documents.
-
-# If you're putting the web ui somewhere other than at the root of
-# your server
-# $WebPath requires a leading / but no trailing /
-
-Set($WebPath , "");
-
-# This is the Scheme, server and port for constructing urls to webrt
-# $WebBaseURL doesn't need a trailing /
-
-Set($WebBaseURL , "http://RT::WebBaseURL.not.configured:80");
-
-Set($WebURL , $WebBaseURL . $WebPath . "/");
-
-# $WebImagesURL points to the base URL where RT can find its images.
-
-Set($WebImagesURL , $WebURL . "NoAuth/images/");
-
-# $RTLogoURL points to the URL of the RT logo displayed in the web UI
-
-Set($LogoURL , $WebImagesURL . "rt.jpg");
-
-# For message boxes, set the entry box width and what type of wrapping
-# to use.
-#
-# Default width: 72
-Set($MessageBoxWidth , 72);
-
-# Default wrapping: "HARD" (choices "SOFT", "HARD")
-Set($MessageBoxWrap, "HARD");
-
-# if TrustHTMLAttachments is not defined, we will display them
-# as text. This prevents malicious HTML and javascript from being
-# sent in a request (although there is probably more to it than that)
-Set($TrustHTMLAttachments , undef);
-
-# If $WebExternalAuth is defined, RT will defer to the environment's
-# REMOTE_USER variable.
-
-Set($WebExternalAuth , undef);
-
-# If $WebFallbackToInternalAuth is undefined, the user is allowed a chance
-# of fallback to the login screen, even if REMOTE_USER failed.
-
-Set($WebFallbackToInternalAuth , undef);
-
-# $WebExternalGecos means to match 'gecos' field as the user identity);
-# useful with mod_auth_pwcheck and IIS Integrated Windows logon.
-
-Set($WebExternalGecos , undef);
-
-# $WebExternalAuto will create users under the same name as REMOTE_USER
-# upon login, if it's missing in the Users table.
-
-Set($WebExternalAuto , undef);
-
-# $WebSessionClass is the class you wish to use for managing Sessions.
-# It defaults to use your SQL database, but if you are using MySQL 3.x and
-# plans to use non-ascii Queue names, uncomment and add this line to
-# RT_SiteConfig.pm will prevent session corruption.
-
-# Set($WebSessionClass , 'Apache::Session::File');
-
-# $MaxInlineBody is the maximum attachment size that we want to see
-# inline when viewing a transaction. 13456 is a random sane-sounding
-# default.
-
-Set($MaxInlineBody, 13456);
-
-# $MyTicketsLength is the length of the table on the front page.
-# For some people, the default of 10 isn't big enough to get a feel for
-# how much work needs to be done before you get some time off.
-
-Set($MyTicketsLength, 10);
-
-# @MasonParameters is the list of parameters for the constructor of
-# HTML::Mason's Apache or CGI Handler. This is normally only useful
-# for debugging, eg. profiling individual components with
-# (preamble => 'my $p = MasonX::Profiler->new($m, $r);');
-
-@MasonParameters = () unless (@MasonParameters);
-
-# }}}
-
-# {{{ RT UTF-8 Settings
-
-# An array that contains languages supported by RT's internationalization
-# interface. Defaults to all *.po lexicons; set it to qw(en ja) will make
-# RT bilingual instead of multilingual, but will save same memory.
-
-@LexiconLanguages = qw(*) unless (@LexiconLanguages);
-
-# An array that contains default encodings used to guess which charset
-# an attachment uses if not specified. Must be recognized by
-# Encode::Guess.
-
-@EmailInputEncodings = qw(utf-8 iso-8859-1 us-ascii) unless (@EmailInputEncodings);
-
-# The charset for localized email. Must be recognized by Encode.
-
-Set($EmailOutputEncoding , 'utf-8');
-
-# }}}
-
-# {{{ RT Date Handling Options (for Time::ParseDate)
-
-# Set this to 1 if your local date convention looks like "dd/mm/yy"
-# instead of "mm/dd/yy".
-
-Set($DateDayBeforeMonth , 1);
-
-# Should "Tuesday" default to meaning "Next Tuesday" or "Last Tuesday"?
-# Set to 0 for "Next" or 1 for "Last".
-
-Set($AmbiguousDayInPast , 1);
-
-# }}}
-
-1;
diff --git a/rt/etc/RT_Config.pm.in b/rt/etc/RT_Config.pm.in
deleted file mode 100644
index 8271a7760..000000000
--- a/rt/etc/RT_Config.pm.in
+++ /dev/null
@@ -1,374 +0,0 @@
-#
-# WARNING: NEVER EDIT RT_Config.pm. Instead, copy any sections you want to change to RT_SiteConfig.pm
-# and edit them there.
-#
-
-package RT;
-
-=head1 NAME
-
-RT::Config
-
-=for testing
-
-use RT::Config;
-
-=cut
-
-# {{{ Base Configuration
-
-# $rtname the string that RT will look for in mail messages to
-# figure out what ticket a new piece of mail belongs to
-
-# Your domain name is recommended, so as not to pollute the namespace.
-# once you start using a given tag, you should probably never change it.
-# (otherwise, mail for existing tickets won't get put in the right place
-
-Set($rtname , "example.com");
-
-# You should set this to your organization's DNS domain. For example,
-# fsck.com or asylum.arkham.ma.us. It's used by the linking interface to
-# guarantee that ticket URIs are unique and easy to construct.
-
-Set($Organization , "example.com");
-
-# $user_passwd_min defines the minimum length for user passwords. Setting
-# it to 0 disables this check
-Set($MinimumPasswordLength , "5");
-
-# $Timezone is used to convert times entered by users into GMT and back again
-# It should be set to a timezone recognized by your local unix box.
-Set($Timezone , 'US/Eastern');
-
-# }}}
-
-# }}}
-
-# {{{ Database Configuration
-
-# Database driver beeing used. Case matters
-# Valid types are "mysql", "Oracle" and "Pg"
-
-Set($DatabaseType , '@DB_TYPE@');
-
-# The domain name of your database server
-# If you're running mysql and it's on localhost,
-# leave it blank for enhanced performance
-Set($DatabaseHost , '@DB_HOST@');
-Set($DatabaseRTHost , '@DB_RT_HOST@');
-
-# The port that your database server is running on. Ignored unless it's
-# a positive integer. It's usually safe to leave this blank
-Set($DatabasePort , '@DB_PORT@');
-
-#The name of the database user (inside the database)
-Set($DatabaseUser , '@DB_RT_USER@');
-
-# Password the DatabaseUser should use to access the database
-Set($DatabasePassword , '@DB_RT_PASS@');
-
-# The name of the RT's database on your database server
-Set($DatabaseName , '@DB_DATABASE@');
-
-# If you're using Postgres and have compiled in SSL support,
-# set DatabaseRequireSSL to 1 to turn on SSL communication
-Set($DatabaseRequireSSL , undef);
-
-# }}}
-
-# {{{ Incoming mail gateway configuration
-
-# OwnerEmail is the address of a human who manages RT. RT will send
-# errors generated by the mail gateway to this address. This address
-# should _not_ be an address that's managed by your RT instance.
-
-Set($OwnerEmail , 'root');
-
-# If $LoopsToRTOwner is defined, RT will send mail that it believes
-# might be a loop to $RT::OwnerEmail
-
-Set($LoopsToRTOwner , 1);
-
-# If $StoreLoopss is defined, RT will record messages that it believes
-# to be part of mail loops.
-# As it does this, it will try to be careful not to send mail to the
-# sender of these messages
-
-Set($StoreLoops , undef);
-
-# $MaxAttachmentSize sets the maximum size (in bytes) of attachments stored
-# in the database.
-
-# For mysql and oracle, we set this size at 10 megabytes.
-# If you're running a postgres version earlier than 7.1, you will need
-# to drop this to 8192. (8k)
-
-Set($MaxAttachmentSize , 10000000);
-
-# $TruncateLongAttachments: if this is set to a non-undef value,
-# RT will truncate attachments longer than MaxAttachmentLength.
-
-Set($TruncateLongAttachments , undef);
-
-# $DropLongAttachments: if this is set to a non-undef value,
-# RT will silently drop attachments longer than MaxAttachmentLength.
-
-Set($DropLongAttachments , undef);
-
-# If $ParseNewMessageForTicketCcs is true, RT will attempt to divine
-# Ticket 'Cc' watchers from the To and Cc lines of incoming messages
-# Be forewarned that if you have _any_ addresses which forward mail to
-# RT automatically and you enable this option without modifying
-# "RTAddressRegexp" below, you will get yourself into a heap of trouble.
-
-Set($ParseNewMessageForTicketCcs , undef);
-
-# RTAddressRegexp is used to make sure RT doesn't add itself as a ticket CC if
-# the setting above is enabled.
-
-Set($RTAddressRegexp , '^rt\@example.com$');
-
-# RT provides functionality which allows the system to rewrite
-# incoming email addresses. In its simplest form,
-# you can substitute the value in CanonicalizeEmailAddressReplace
-# for the value in CanonicalizeEmailAddressMatch
-# (These values are passed to the CanonicalizeEmailAddress subroutine in RT/User.pm)
-# By default, that routine performs a s/$Match/$Replace/gi on any address passed to it
-
-Set($CanonicalizeEmailAddressMatch , 'subdomain.example.com$');
-Set($CanonicalizeEmailAddressReplace , 'example.com');
-
-# If $SenderMustExistInExternalDatabase is true, RT will refuse to
-# create non-privileged accounts for unknown users if you are using
-# the "LookupSenderInExternalDatabase" option.
-# Instead, an error message will be mailed and RT will forward the
-# message to $RTOwner.
-#
-# If you are not using $LookupSenderInExternalDatabase, this option
-# has no effect.
-#
-# If you define an AutoRejectRequest template, RT will use this
-# template for the rejection message.
-
-Set($SenderMustExistInExternalDatabase , undef);
-
-# }}}
-
-# {{{ Outgoing mail configuration
-
-# RT is designed such that any mail which already has a ticket-id associated
-# with it will get to the right place automatically.
-
-# $CorrespondAddress and $CommentAddress are the default addresses
-# that will be listed in From: and Reply-To: headers of correspondence
-# and comment mail tracked by RT, unless overridden by a queue-specific
-# address.
-
-Set($CorrespondAddress , 'RT_CorrespondAddressNotSet');
-
-Set($CommentAddress , 'RT_CommentAddressNotSet');
-
-#Sendmail Configuration
-
-# $MailCommand defines which method RT will use to try to send mail
-# We know that 'sendmailpipe' works fairly well.
-# If 'sendmailpipe' doesn't work well for you, try 'sendmail'
-#
-# Note that you should remove the '-t' from $SendmailArguments
-# if you use 'sendmail rather than 'sendmailpipe'
-
-Set($MailCommand , 'sendmailpipe');
-
-# $SendmailArguments defines what flags to pass to $Sendmail
-# assuming you picked 'sendmail' or 'sendmailpipe' as the $MailCommand above.
-# If you picked 'sendmailpipe', you MUST add a -t flag to $SendmailArguments
-
-# These options are good for most sendmail wrappers and workalikes
-Set($SendmailArguments , "-oi -t");
-
-# These arguments are good for sendmail brand sendmail 8 and newer
-#Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");
-
-# If you selected 'sendmailpipe' above, you MUST specify the path
-# to your sendmail binary in $SendmailPath.
-# !! If you did not # select 'sendmailpipe' above, this has no effect!!
-Set($SendmailPath , "/usr/sbin/sendmail");
-
-# By default, RT sets the outgoing mail's "From:" header to
-# "SenderName via RT". Setting this option to 0 disables it.
-
-Set($UseFriendlyFromLine , 1);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are SenderName and SenderEmailAddress.
-Set($FriendlyFromLineFormat , "\"%s via RT\" <%s>");
-
-# RT can optionally set a "Friendly" 'To:' header when sending messages to
-# Ccs or AdminCcs (rather than having a blank 'To:' header.
-
-# This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL
-# If you are using sendmail, rather than postfix, qmail, exim or some other MTA,
-# you _must_ disable this option.
-
-Set($UseFriendlyToLine , 0);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are WatcherType and TicketId.
-Set($FriendlyToLineFormat, "\"%s of $RT::rtname Ticket #%s\":;");
-
-# By default RT doesn't notify the person who performs an update, as they
-# already know what they've done. If you'd like to change this behaviour,
-# Set $NotifyActor to 1
-
-Set($NotifyActor, 0);
-
-
-# }}}
-
-# {{{ Logging
-
-# Logging. The default is to log anything except debugging
-# information to syslog. Check the Log::Dispatch POD for
-# information about how to get things by syslog, mail or anything
-# else, get debugging info in the log, etc.
-
-# It might generally make
-# sense to send error and higher by email to some administrator.
-# If you do this, be careful that this email isn't sent to this RT instance.
-
-# the minimum level error that will be logged to the specific device.
-# levels from lowest to highest:
-# debug info notice warning error critical alert emergency
-
-# Mail loops will generate a critical log message.
-Set($LogToSyslog , 'debug');
-Set($LogToScreen , 'error');
-Set($LogToFile , undef);
-Set($LogDir, '@RT_LOG_PATH@');
-Set($LogToFileNamed , "rt.log"); #log to rt.log
-
-# }}}
-
-# {{{ Web interface configuration
-
-# Define the directory name to be used for images in rt web
-# documents.
-
-# If you're putting the web ui somewhere other than at the root of
-# your server
-# $WebPath requires a leading / but no trailing /
-
-Set($WebPath , "");
-
-# This is the Scheme, server and port for constructing urls to webrt
-# $WebBaseURL doesn't need a trailing /
-
-Set($WebBaseURL , "http://RT::WebBaseURL.not.configured:80");
-
-Set($WebURL , $WebBaseURL . $WebPath . "/");
-
-# $WebImagesURL points to the base URL where RT can find its images.
-
-Set($WebImagesURL , $WebURL . "NoAuth/images/");
-
-# $RTLogoURL points to the URL of the RT logo displayed in the web UI
-
-Set($LogoURL , $WebImagesURL . "rt.jpg");
-
-# For message boxes, set the entry box width and what type of wrapping
-# to use.
-#
-# Default width: 72
-Set($MessageBoxWidth , 72);
-
-# Default wrapping: "HARD" (choices "SOFT", "HARD")
-Set($MessageBoxWrap, "HARD");
-
-# if TrustHTMLAttachments is not defined, we will display them
-# as text. This prevents malicious HTML and javascript from being
-# sent in a request (although there is probably more to it than that)
-Set($TrustHTMLAttachments , undef);
-
-# If $WebExternalAuth is defined, RT will defer to the environment's
-# REMOTE_USER variable.
-
-Set($WebExternalAuth , undef);
-
-# If $WebFallbackToInternalAuth is undefined, the user is allowed a chance
-# of fallback to the login screen, even if REMOTE_USER failed.
-
-Set($WebFallbackToInternalAuth , undef);
-
-# $WebExternalGecos means to match 'gecos' field as the user identity);
-# useful with mod_auth_pwcheck and IIS Integrated Windows logon.
-
-Set($WebExternalGecos , undef);
-
-# $WebExternalAuto will create users under the same name as REMOTE_USER
-# upon login, if it's missing in the Users table.
-
-Set($WebExternalAuto , undef);
-
-# $WebSessionClass is the class you wish to use for managing Sessions.
-# It defaults to use your SQL database, but if you are using MySQL 3.x and
-# plans to use non-ascii Queue names, uncomment and add this line to
-# RT_SiteConfig.pm will prevent session corruption.
-
-# Set($WebSessionClass , 'Apache::Session::File');
-
-# $MaxInlineBody is the maximum attachment size that we want to see
-# inline when viewing a transaction. 13456 is a random sane-sounding
-# default.
-
-Set($MaxInlineBody, 13456);
-
-# $MyTicketsLength is the length of the table on the front page.
-# For some people, the default of 10 isn't big enough to get a feel for
-# how much work needs to be done before you get some time off.
-
-Set($MyTicketsLength, 10);
-
-# @MasonParameters is the list of parameters for the constructor of
-# HTML::Mason's Apache or CGI Handler. This is normally only useful
-# for debugging, eg. profiling individual components with
-# (preamble => 'my $p = MasonX::Profiler->new($m, $r);');
-
-@MasonParameters = () unless (@MasonParameters);
-
-# }}}
-
-# {{{ RT UTF-8 Settings
-
-# An array that contains languages supported by RT's internationalization
-# interface. Defaults to all *.po lexicons; set it to qw(en ja) will make
-# RT bilingual instead of multilingual, but will save same memory.
-
-@LexiconLanguages = qw(*) unless (@LexiconLanguages);
-
-# An array that contains default encodings used to guess which charset
-# an attachment uses if not specified. Must be recognized by
-# Encode::Guess.
-
-@EmailInputEncodings = qw(utf-8 iso-8859-1 us-ascii) unless (@EmailInputEncodings);
-
-# The charset for localized email. Must be recognized by Encode.
-
-Set($EmailOutputEncoding , 'utf-8');
-
-# }}}
-
-# {{{ RT Date Handling Options (for Time::ParseDate)
-
-# Set this to 1 if your local date convention looks like "dd/mm/yy"
-# instead of "mm/dd/yy".
-
-Set($DateDayBeforeMonth , 1);
-
-# Should "Tuesday" default to meaning "Next Tuesday" or "Last Tuesday"?
-# Set to 0 for "Next" or 1 for "Last".
-
-Set($AmbiguousDayInPast , 1);
-
-# }}}
-
-1;
diff --git a/rt/etc/RT_SiteConfig.pm b/rt/etc/RT_SiteConfig.pm
deleted file mode 100644
index 0afc6045c..000000000
--- a/rt/etc/RT_SiteConfig.pm
+++ /dev/null
@@ -1 +0,0 @@
-1;
diff --git a/rt/etc/acl.Informix b/rt/etc/acl.Informix
deleted file mode 100644
index bca0408dd..000000000
--- a/rt/etc/acl.Informix
+++ /dev/null
@@ -1,5 +0,0 @@
-sub acl {
-return (
-"GRANT RESOURCE TO ${RT::DatabaseUser};");
-}
-1;
diff --git a/rt/etc/acl.Oracle b/rt/etc/acl.Oracle
index c8667c031..59d35a028 100644
--- a/rt/etc/acl.Oracle
+++ b/rt/etc/acl.Oracle
@@ -1,10 +1,9 @@
-sub acl {
-return (
-"CREATE USER ${RT::DatabaseUser} identified by ${RT::DatabasePassword}".
-"temporary tablespace TEMP" .
-"default tablespace USERS" .
-"quota unlimited on USERS;" ,
-"grant connect, resource to ${RT::DatabaseUser};",
-"exit;");
-}
-1;
+CREATE USER !!DB_RT_USER!! identified by !!DB_RT_PASS!!
+temporary tablespace TEMP
+default tablespace USERS
+quota unlimited on USERS;
+
+grant connect, resource to !!DB_RT_USER!!;
+
+exit;
+
diff --git a/rt/etc/acl.Pg b/rt/etc/acl.Pg
index 16ea71b2d..13ac41dcf 100755
--- a/rt/etc/acl.Pg
+++ b/rt/etc/acl.Pg
@@ -1,63 +1,39 @@
-sub acl {
- my $dbh = shift;
+drop user !!DB_RT_USER!!;
+create user !!DB_RT_USER!! with password '!!DB_RT_PASS!!' NOCREATEDB NOCREATEUSER;
- my @acls;
+grant select, insert, update, delete on Groups to !!DB_RT_USER!!;
+grant select, insert, update, delete on Groups_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on ACL to !!DB_RT_USER!!;
+grant select, insert, update, delete on ACL_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Watchers to !!DB_RT_USER!!;
+grant select, insert, update, delete on Watchers_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Links to !!DB_RT_USER!!;
+grant select, insert, update, delete on Links_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Users to !!DB_RT_USER!!;
+grant select, insert, update, delete on Users_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Tickets to !!DB_RT_USER!!;
+grant select, insert, update, delete on Tickets_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on GroupMembers to !!DB_RT_USER!!;
+grant select, insert, update, delete on GroupMembers_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Queues to !!DB_RT_USER!!;
+grant select, insert, update, delete on Queues_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Transactions to !!DB_RT_USER!!;
+grant select, insert, update, delete on Transactions_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on ScripActions to !!DB_RT_USER!!;
+grant select, insert, update, delete on ScripActions_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on ScripConditions to !!DB_RT_USER!!;
+grant select, insert, update, delete on ScripConditions_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Scrips to !!DB_RT_USER!!;
+grant select, insert, update, delete on Scrips_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Attachments to !!DB_RT_USER!!;
+grant select, insert, update, delete on Attachments_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Templates to !!DB_RT_USER!!;
+grant select, insert, update, delete on Templates_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on Keywords to !!DB_RT_USER!!;
+grant select, insert, update, delete on Keywords_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on ObjectKeywords to !!DB_RT_USER!!;
+grant select, insert, update, delete on ObjectKeywords_id_seq to !!DB_RT_USER!!;
+grant select, insert, update, delete on KeywordSelects to !!DB_RT_USER!!;
+grant select, insert, update, delete on KeywordSelects_id_seq to !!DB_RT_USER!!;
- my @tables = qw (
- attachments_id_seq
- Attachments
- queues_id_seq
- Queues
- links_id_seq
- Links
- principals_id_seq
- Principals
- groups_id_seq
- Groups
- scripconditions_id_seq
- ScripConditions
- transactions_id_seq
- Transactions
- scrips_id_seq
- Scrips
- acl_id_seq
- ACL
- groupmembers_id_seq
- GroupMembers
- cachedgroupmembers_id_seq
- CachedGroupMembers
- users_id_seq
- Users
- tickets_id_seq
- Tickets
- scripactions_id_seq
- ScripActions
- templates_id_seq
- Templates
- ticketcustomfieldvalues_id_s
- TicketCustomFieldValues
- customfields_id_seq
- CustomFields
- customfieldvalues_id_seq
- CustomFieldValues
- sessions
- );
-
- # if there's already an rt_user, drop it.
- my @row =
- $dbh->selectrow_array( "select usename from pg_user where usename = '" . $RT::DatabaseUser."'" );
- if ( $row[0] ) {
- push @acls, "drop user ${RT::DatabaseUser};",;
- }
-
- push @acls, "create user ${RT::DatabaseUser} with password '${RT::DatabasePassword}' NOCREATEDB NOCREATEUSER;";
- foreach my $table (@tables) {
- push @acls,
- "GRANT SELECT, INSERT, UPDATE, DELETE ON $table to "
- . $RT::DatabaseUser . ";";
-
- }
- return (@acls);
-}
-1;
diff --git a/rt/etc/acl.mysql b/rt/etc/acl.mysql
index 0ecaa3b15..7feb376f5 100755
--- a/rt/etc/acl.mysql
+++ b/rt/etc/acl.mysql
@@ -1,8 +1,4 @@
-sub acl {
-return (
-"USE mysql;",
-"DELETE FROM user WHERE user = '${RT::DatabaseUser}';",
-"DELETE FROM db where db = '${RT::DatabaseName}';",
-"GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON ${RT::DatabaseName}.* TO ${RT::DatabaseUser}\@${RT::DatabaseRTHost} IDENTIFIED BY '${RT::DatabasePassword}';");
-}
-1;
+
+DELETE FROM user WHERE user like '!!DB_RT_USER!!';
+DELETE FROM db where db LIKE '!!DB_DATABASE!!';
+GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON !!DB_DATABASE!!.* TO !!DB_RT_USER!!@!!DB_RT_HOST!! IDENTIFIED BY '!!DB_RT_PASS!!';
diff --git a/rt/etc/config.pm b/rt/etc/config.pm
new file mode 100755
index 000000000..52b1a0b25
--- /dev/null
+++ b/rt/etc/config.pm
@@ -0,0 +1,473 @@
+# $Header: /home/cvs/cvsroot/freeside/rt/etc/Attic/config.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
+
+package RT;
+
+# {{{ Base Configuration
+
+# $rtname the string that RT will look for in mail messages to
+# figure out what ticket a new piece of mail belongs to
+
+# Your domain name is recommended, so as not to pollute the namespace.
+# once you start using a given tag, you should probably never change it.
+# (otherwise, mail for existing tickets won't get put in the right place
+
+$rtname="example.com";
+
+# You should set this to your organization's DNS domain. For example,
+# fsck.com or asylum.arkham.ma.us. It's used by the linking interface to
+# guarantee that ticket URIs are unique and easy to construct.
+
+$Organization = "example.com";
+
+# $user_passwd_min defines the minimum length for user passwords. Setting
+# it to 0 disables this check
+$MinimumPasswordLength = "5";
+
+# $Timezone is used to convert times entered by users into GMT and back again
+# It should be set to a timezone recognized by your local unix box.
+$Timezone = 'US/Eastern';
+
+# LogDir is where RT writes its logfiles.
+# This directory should be writable by your rt group
+$LogDir = "!!RT_LOG_PATH!!";
+
+# }}}
+
+# {{{ Database Configuration
+
+# Database driver beeing used - i.e. MySQL.
+$DatabaseType="!!DB_TYPE!!";
+
+# The domain name of your database server
+# If you're running mysql and it's on localhost,
+# leave it blank for enhanced performance
+$DatabaseHost="!!DB_HOST!!";
+
+# The port that your database server is running on. Ignored unless it's
+# a positive integer. It's usually safe to leave this blank
+$DatabasePort="!!DB_PORT!!";
+
+
+#The name of the database user (inside the database)
+$DatabaseUser='!!DB_RT_USER!!';
+
+# Password the DatabaseUser should use to access the database
+$DatabasePassword='!!DB_RT_PASS!!';
+
+
+# The name of the RT's database on your database server
+$DatabaseName='!!DB_DATABASE!!';
+
+# If you're using Postgres and have compiled in SSL support,
+# set DatabaseRequireSSL to 1 to turn on SSL communication
+$DatabaseRequireSSL=undef;
+
+# }}}
+
+# {{{ Incoming mail gateway configuration
+
+
+# OwnerEmail is the address of a human who manages RT. RT will send
+# errors generated by the mail gateway to this address. This address
+# should _not_ be an address that's managed by your RT instance.
+
+$OwnerEmail = 'root';
+
+# If $LoopsToRTOwner is defined, RT will send mail that it believes
+# might be a loop to $RT::OwnerEmail
+
+$LoopsToRTOwner = 1;
+
+# If $StoreLoopss is defined, RT will record messages that it believes
+# to be part of mail loops.
+# As it does this, it will try to be careful not to send mail to the
+# sender of these messages
+
+$StoreLoops = undef;
+
+
+# $MaxAttachmentSize sets the maximum size (in bytes) of attachments stored
+# in the database.
+
+# For mysql and oracle, we set this size at 10 megabytes.
+# If you're running a postgres version earlier than 7.1, you will need
+# to drop this to 8192. (8k)
+
+$MaxAttachmentSize = 10000000;
+
+# $TruncateLongAttachments: if this is set to a non-undef value,
+# RT will truncate attachments longer than MaxAttachmentLength.
+
+$TruncateLongAttachments = undef;
+
+
+# $DropLongAttachments: if this is set to a non-undef value,
+# RT will silently drop attachments longer than MaxAttachmentLength.
+
+$DropLongAttachments = undef;
+
+# If $ParseNewMessageForTicketCcs is true, RT will attempt to divine
+# Ticket 'Cc' watchers from the To and Cc lines of incoming messages
+# Be forewarned that if you have _any_ addresses which forward mail to
+# RT automatically and you enable this option without modifying
+# "IsRTAddress" below, you will get yourself into a heap of trouble.
+# And well, this is free software, so there isn't a warrantee, but
+# I disclaim all ability to help you if you do enable this without
+# modifying IsRTAddress below.
+
+$ParseNewMessageForTicketCcs = undef;
+
+# IsRTAddress is used to make sure RT doesn't add itself as a ticket CC if
+# the setting above is enabled.
+
+sub IsRTAddress {
+ my $address = shift;
+
+ # Example: the following rule would tell RT not to Cc
+ # "tickets@noc.example.com"
+ # return(1) if ($address =~ /^tickets\@noc.example.com$/i);
+
+ return(undef)
+}
+
+# CanonicalizeAddress converts email addresses into canonical form.
+# it takes one email address in and returns the proper canonical
+# form. You can dump whatever your proper local config is in here
+
+sub CanonicalizeAddress {
+ my $email = shift;
+ # Example: the following rule would treat all email
+ # coming from a subdomain as coming from second level domain
+ # foo.com
+ #$email =~ s/\@(.*).foo.com/\@foo.com/;
+ return ($email)
+}
+
+# If $LookupSenderInExternalDatabase is defined, RT will attempt to
+# verify the incoming message sender with a known source, using the
+# LookupExternalUserInfo routine below
+
+$LookupSenderInExternalDatabase = undef;
+
+# If $SenderMustExistInExternalDatabase is true, RT will refuse to
+# create non-privileged accounts for unknown users if you are using
+# the "LookupSenderInExternalDatabase" option.
+# Instead, an error message will be mailed and RT will forward the
+# message to $RTOwner.
+#
+# If you are not using $LookupSenderInExternalDatabase, this option
+# has no effect.
+#
+# If you define an AutoRejectRequest template, RT will use this
+# template for the rejection message.
+
+$SenderMustExistInExternalDatabase = undef;
+
+# LookupExternalUserInfo is a site-definable method for synchronizing
+# incoming users with an external data source.
+#
+# This routine takes a tuple of EmailAddress and FriendlyName
+# EmailAddress is the user's email address, ususally taken from
+# an email message's From: header.
+# FriendlyName is a freeform string, ususally taken from the "comment"
+# portion of an email message's From: header.
+#
+# It returns (FoundInExternalDatabase, ParamHash);
+#
+# FoundInExternalDatabase must be set to 1 before return if the user was
+# found in the external database.
+#
+# ParamHash is a Perl parameter hash which can contain at least the following
+# fields. These fields are used to populate RT's users database when the user
+# is created
+#
+# EmailAddress is the email address that RT should use for this user.
+# Name is the 'Name' attribute RT should use for this user.
+# 'Name' is used for things like access control and user lookups.
+# RealName is what RT should display as the user's name when displaying
+# 'friendly' names
+
+sub LookupExternalUserInfo {
+ my ($EmailAddress, $RealName) = @_;
+
+ my $FoundInExternalDatabase = 1;
+ my %params = {};
+
+ #Name is the RT username you want to use for this user.
+ $params{'Name'} = $EmailAddress;
+ $params{'EmailAddress'} = $EmailAddress;
+ $params{'RealName'} = $RealName;
+
+ # See RT's contributed code for examples.
+ # http://www.fsck.com/pub/rt/contrib/
+ return ($FoundInExternalDatabase, %params);
+}
+
+# }}}
+
+# {{{ Outgoing mail configuration
+
+# RT is designed such that any mail which already has a ticket-id associated
+# with it will get to the right place automatically.
+
+# $CorrespondAddress and $CommentAddress are the default addresses
+# that will be listed in From: and Reply-To: headers of correspondence
+# and comment mail tracked by RT, unless overridden by a queue-specific
+# address.
+
+$CorrespondAddress='RT::CorrespondAddress.not.set';
+
+$CommentAddress='RT::CommentAddress.not.set';
+
+
+#Sendmail Configuration
+
+# $MailCommand defines which method RT will use to try to send mail
+# We know that 'sendmailpipe' works fairly well.
+# If 'sendmailpipe' doesn't work well for you, try 'sendmail'
+#
+# Note that you should remove the '-t' from $SendmailArguments
+# if you use 'sendmail rather than 'sendmailpipe'
+
+$MailCommand = 'sendmailpipe';
+
+# $SendmailArguments defines what flags to pass to $Sendmail
+# assuming you picked 'sendmail' or 'sendmailpipe' as the $MailCommand above.
+# If you picked 'sendmailpipe', you MUST add a -t flag to $SendmailArguments
+
+# These options are good for most sendmail wrappers and workalikes
+$SendmailArguments="-oi -t";
+
+# These arguments are good for sendmail brand sendmail 8 and newer
+#$SendmailArguments="-oi -t -ODeliveryMode=b -OErrorMode=m";
+
+# If you selected 'sendmailpipe' above, you MUST specify the path
+# to your sendmail binary in $SendmailPath.
+# !! If you did not # select 'sendmailpipe' above, this has no effect!!
+$SendmailPath = "/usr/sbin/sendmail";
+
+# RT can optionally set a "Friendly" 'To:' header when sending messages to
+# Ccs or AdminCcs (rather than having a blank 'To:' header.
+
+# This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL
+# If you are using sendmail, rather than postfix, qmail, exim or some other MTA,
+# you _must_ disable this option.
+
+$UseFriendlyToLine = 0;
+
+
+# }}}
+
+# {{{ Logging
+
+# Logging. The default is to log anything except debugging
+# information to a logfile. Check the Log::Dispatch POD for
+# information about how to get things by syslog, mail or anything
+# else, get debugging info in the log, etc.
+
+# It might generally make
+# sense to send error and higher by email to some administrator.
+# If you do this, be careful that this email isn't sent to this RT instance.
+
+
+# the minimum level error that will be logged to the specific device.
+# levels from lowest to highest:
+# debug info notice warning error critical alert emergency
+
+
+# Mail loops will generate a critical log message.
+
+$LogToScreen = 'error';
+$LogToFile = 'error';
+#$LogToFileNamed = "$LogDir/rt.log.".$$.".".$<; #log to rt.log.<pid>.<user>
+$LogToFileNamed = "$LogDir/rt.log".$<; #log to rt.log.user;
+
+# }}}
+
+# {{{ Web interface configuration
+
+
+
+# Define the directory name to be used for images in rt web
+# documents.
+
+# If you're putting the web ui somewhere other than at the root of
+# your server
+# $WebPath requires a leading / but no trailing /
+
+$WebPath = "";
+
+# This is the Scheme, server and port for constructing urls to webrt
+# $WebBaseURL doesn't need a trailing /
+
+$WebBaseURL = "http://RT::WebBaseURL.not.configured:80";
+
+$WebURL = $WebBaseURL . $WebPath . "/";
+
+
+
+# $WebImagesURL points to the base URL where RT can find its images.
+# If you're running the FastCGI version of the RT web interface,
+# you should make RT's WebRT/html/NoAuth/images directory available on
+# a static web server and supply that URL as $WebImagesURL.
+
+$WebImagesURL = $WebURL."NoAuth/images/";
+
+# $RTLogoURL points to the URL of the RT logo displayed in the web UI
+
+$LogoURL = $WebImagesURL."rt.jpg";
+
+# If $WebExternalAuth is defined, RT will defer to the environment's
+# REMOTE_USER variable.
+
+$WebExternalAuth = undef;
+
+# $MasonComponentRoot is where your rt instance keeps its mason html files
+# (this should be autoconfigured during 'make install' or 'make upgrade')
+
+$MasonComponentRoot = "!!MASON_HTML_PATH!!";
+
+# $MasonLocalComponentRoot is where your rt instance keeps its site-local
+# mason html files.
+# (this should be autoconfigured during 'make install' or 'make upgrade')
+
+$MasonLocalComponentRoot = "!!MASON_LOCAL_HTML_PATH!!";
+
+# $MasonDataDir Where mason keeps its datafiles
+# (this should be autoconfigured during 'make install' or 'make upgrade')
+
+$MasonDataDir = "!!MASON_DATA_PATH!!";
+
+# RT needs to put session data (for preserving state between connections
+# via the web interface)
+$MasonSessionDir = "!!MASON_SESSION_PATH!!";
+
+
+
+#This is from tobias' prototype web search UI. it may stay and it may go.
+%WebOptions=
+ (
+ # This is for putting in more user-actions at the Transaction
+ # bar. I will typically add "Enter bug in Bugzilla" here.:
+ ExtraTransactionActions => sub { return ""; },
+
+ # Here you can modify the list view. Be aware that the web
+ # interface might crash if TicketAttribute is wrongly set.
+
+ QueueListingCols =>
+ [
+ { Header => 'Id',
+ TicketLink => 1,
+ TicketAttribute => 'Id'
+ },
+
+ { Header => 'Subject',
+ TicketAttribute => 'Subject'
+ },
+ { Header => 'Requestor(s)',
+ TicketAttribute => 'RequestorsAsString'
+ },
+ { Header => 'Status',
+ TicketAttribute => 'Status'
+ },
+
+
+ { Header => 'Queue',
+ TicketAttribute => 'QueueObj->Name'
+ },
+
+
+
+ { Header => 'Told',
+ TicketAttribute => 'ToldObj->AgeAsString'
+ },
+
+ { Header => 'Age',
+ TicketAttribute => 'CreatedObj->AgeAsString'
+ },
+
+ { Header => 'Last',
+ TicketAttribute => 'LastUpdatedObj->AgeAsString'
+ },
+
+ # TODO: It would be nice with a link here to the Owner and all
+ # other request owned by this Owner.
+ { Header => 'Owner',
+ TicketAttribute => 'OwnerObj->Name'
+ },
+
+
+ { Header => 'Take',
+ TicketLink => 1,
+ Constant => 'Take',
+ ExtraLinks => '&Action=Take'
+ },
+
+ ]
+ );
+
+# }}}
+
+# {{{ RT Linking Interface
+
+# $TicketBaseURI is the Base path of the URI for local tickets
+
+# You shouldn't need to touch this. it's used to link tickets both locally
+# and remotely
+
+$TicketBaseURI = "fsck.com-rt://$Organization/$rtname/ticket/";
+
+# A hash table of conversion subs to be used for transforming RT Link
+# URIs to URLs in the web interface. If you want to use RT towards
+# locally installed databases, this is the right place to configure it.
+
+%URI2HTTP=
+ (
+ 'http' => sub {return @_;},
+ 'https' => sub {return @_;},
+ 'ftp' => sub {return @_;},
+ 'fsck.com-rt' => sub {warn "stub!";},
+ 'mozilla.org-bugzilla' => sub {warn "stub!"},
+ 'fsck.com-kb' => sub {warn "stub!"}
+ );
+
+
+# A hash table of subs for fetching content from an URI
+%ContentFromURI=
+ (
+ 'fsck.com-rt' => sub {warn "stub!";},
+ 'mozilla.org-bugzilla' => sub {warn "stub!"},
+ 'fsck.com-kb' => sub {warn "stub!"}
+ );
+
+# }}}
+
+# {{{ No User servicable parts inside
+
+############################################
+############################################
+############################################
+#
+# Don't edit anything below this line unless you really know
+# what you're doing
+#
+#
+############################################
+############################################
+
+# TODO: get this stuff out of the config file and into RT.pm
+
+#Set up us the timezone
+$ENV{'TZ'} = $Timezone; #TODO: Bogus hack to deal with Date::Manip whining
+
+# Configure sendmail if we're using Entity->send('sendmail')
+if ($MailCommand eq 'sendmail') {
+ $MailParams = $SendmailArguments;
+}
+
+
+
+# }}}
+
+
+1;
diff --git a/rt/etc/constraints.mysql b/rt/etc/constraints.mysql
deleted file mode 100644
index fd557d5e4..000000000
--- a/rt/etc/constraints.mysql
+++ /dev/null
@@ -1,42 +0,0 @@
- ALTER TABLE Links ADD FOREIGN KEY (LocalBase) REFERENCES Tickets(id) ;
- ALTER TABLE Links ADD FOREIGN KEY (LocalTarget) REFERENCES Tickets(id);
- ALTER TABLE Tickets ADD FOREIGN KEY (Queue) REFERENCES Queues(id);
- ALTER TABLE Tickets ADD FOREIGN KEY (EffectiveId) REFERENCES Tickets(id);
- ALTER TABLE Tickets ADD FOREIGN KEY (Owner) REFERENCES Principals(id);
- ALTER TABLE Tickets ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE Tickets ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE Transactions ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE Transactions ADD FOREIGN KEY (Ticket) REFERENCES Tickets(id);
- ALTER TABLE Transactions ADD FOREIGN KEY (EffectiveTicket) REFERENCES Tickets(id);
- ALTER TABLE Attachments ADD FOREIGN KEY (TransactionId) REFERENCES Transactions(id);
- ALTER TABLE Attachments ADD FOREIGN KEY (Parent) REFERENCES Attachments(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (ScripCondition) REFERENCES ScripConditions(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (ScripAction) REFERENCES ScripActions(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (Template) REFERENCES Templates(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (Queue) REFERENCES Queues(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE Scrips ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE ACL ADD FOREIGN KEY (PrincipalId) REFERENCES Principals(id);
- ALTER TABLE ACL ADD FOREIGN KEY (DelegatedBy) REFERENCES Principals(id);
- ALTER TABLE ACL ADD FOREIGN KEY (DelegatedFrom) REFERENCES ACL(id);
- ALTER TABLE GroupMembers ADD FOREIGN KEY (GroupId) REFERENCES Groups(id);
- ALTER TABLE GroupMembers ADD FOREIGN KEY (MemberId) REFERENCES Principals(id);
- ALTER TABLE CachedGroupMembers ADD FOREIGN KEY (ImmediateParentId) REFERENCES Principals(id);
- ALTER TABLE CachedGroupMembers ADD FOREIGN KEY (GroupId) REFERENCES Principals(id);
- ALTER TABLE CachedGroupMembers ADD FOREIGN KEY (MemberId) REFERENCES Principals(id);
- ALTER TABLE CachedGroupMembers ADD FOREIGN KEY (Via) REFERENCES CachedGroupMembers(id);
- ALTER TABLE ScripActions ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE ScripActions ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE Templates ADD FOREIGN KEY (Queue) REFERENCES Queues(id);
- ALTER TABLE Templates ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE Templates ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE CustomFields ADD FOREIGN KEY (Queue) REFERENCES Queues(id);
- ALTER TABLE CustomFields ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE CustomFields ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE TicketCustomFieldValues ADD FOREIGN KEY (Ticket) REFERENCES Tickets(id);
- ALTER TABLE TicketCustomFieldValues ADD FOREIGN KEY (CustomField) REFERENCES CustomFields(id);
- ALTER TABLE TicketCustomFieldValues ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE TicketCustomFieldValues ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
- ALTER TABLE CustomFieldValues ADD FOREIGN KEY (CustomField) REFERENCES CustomFields(id);
- ALTER TABLE CustomFieldValues ADD FOREIGN KEY (Creator) REFERENCES Users(id);
- ALTER TABLE CustomFieldValues ADD FOREIGN KEY (LastUpdatedBy) REFERENCES Users(id);
diff --git a/rt/etc/drop.Informix b/rt/etc/drop.Informix
deleted file mode 100644
index ce7cc0181..000000000
--- a/rt/etc/drop.Informix
+++ /dev/null
@@ -1,19 +0,0 @@
-DROP TABLE ACL;
-DROP TABLE ATTACHMENTS;
-DROP TABLE CACHEDGROUPMEMBERS;
-DROP TABLE CUSTOMFIELDS;
-DROP TABLE CUSTOMFIELDVALUES;
-DROP TABLE GROUPMEMBERS;
-DROP TABLE GROUPS;
-DROP TABLE LINKS;
-DROP TABLE PRINCIPALS;
-DROP TABLE QUEUES;
-DROP TABLE SCRIPACTIONS;
-DROP TABLE SCRIPCONDITIONS;
-DROP TABLE SCRIPS;
-DROP TABLE SESSIONS;
-DROP TABLE TEMPLATES;
-DROP TABLE TICKETCUSTOMFIELDVALUES;
-DROP TABLE TICKETS;
-DROP TABLE TRANSACTIONS;
-DROP TABLE USERS;
diff --git a/rt/etc/drop.Oracle b/rt/etc/drop.Oracle
deleted file mode 100644
index dd11376f2..000000000
--- a/rt/etc/drop.Oracle
+++ /dev/null
@@ -1,37 +0,0 @@
-DROP TABLE ACL;
-DROP TABLE ATTACHMENTS;
-DROP TABLE CACHEDGROUPMEMBERS;
-DROP TABLE CUSTOMFIELDS;
-DROP TABLE CUSTOMFIELDVALUES;
-DROP TABLE GROUPMEMBERS;
-DROP TABLE GROUPS;
-DROP TABLE LINKS;
-DROP TABLE PRINCIPALS;
-DROP TABLE QUEUES;
-DROP TABLE SCRIPACTIONS;
-DROP TABLE SCRIPCONDITIONS;
-DROP TABLE SCRIPS;
-DROP TABLE SESSIONS;
-DROP TABLE TEMPLATES;
-DROP TABLE TICKETCUSTOMFIELDVALUES;
-DROP TABLE TICKETS;
-DROP TABLE TRANSACTIONS;
-DROP TABLE USERS;
-DROP SEQUENCE ACL_seq;
-DROP SEQUENCE ATTACHMENTS_seq;
-DROP SEQUENCE CACHEDGROUPMEMBERS_seq;
-DROP SEQUENCE CUSTOMFIELDS_seq;
-DROP SEQUENCE CUSTOMFIELDVALUES_seq;
-DROP SEQUENCE GROUPMEMBERS_seq;
-DROP SEQUENCE GROUPS_seq;
-DROP SEQUENCE LINKS_seq;
-DROP SEQUENCE PRINCIPALS_seq;
-DROP SEQUENCE QUEUES_seq;
-DROP SEQUENCE SCRIPACTIONS_seq;
-DROP SEQUENCE SCRIPCONDITIONS_seq;
-DROP SEQUENCE SCRIPS_seq;
-DROP SEQUENCE TEMPLATES_seq;
-DROP SEQUENCE TICKETCUSTOMFIELDVALUES_seq;
-DROP SEQUENCE TICKETS_seq;
-DROP SEQUENCE TRANSACTIONS_seq;
-DROP SEQUENCE USERS_seq;
diff --git a/rt/etc/initialdata b/rt/etc/initialdata
deleted file mode 100644
index e360c5daf..000000000
--- a/rt/etc/initialdata
+++ /dev/null
@@ -1,569 +0,0 @@
-# Initial data for a fresh RT3 Installation.
-
-@Users = (
- { Name => 'Nobody',
- RealName => 'Nobody in particular',
- Comments => 'Do not delete or modify this user. It is integral '
- . 'to RT\'s internal data structures',
- Privileged => '0', },
-
- { Name => 'root',
- Gecos => 'root',
- RealName => 'Enoch Root',
- Password => 'password',
- EmailAddress => "root\@localhost",
- Comments => 'SuperUser',
- Privileged => '1', } );
-
-@Groups = (
- { Name => '',
- Type => 'Everyone', # loc
- Domain => 'SystemInternal',
- Instance => '',
- Description => 'Pseudogroup for internal use', # loc
- },
- { Type => 'Privileged', # loc
- Domain => 'SystemInternal',
- Instance => '',
- Name => '',
- Description => 'Pseudogroup for internal use', # loc
- },
- { Name => '',
- Type => 'Unprivileged', # loc
- Domain => 'SystemInternal',
- Instance => '',
- Description => 'Pseudogroup for internal use', # loc
- },
- { Name => '',
- Type => 'Owner', # loc
- Domain => 'RT::System-Role',
- Instance => '',
- Description => 'SystemRolegroup for internal use', # loc
- },
- { Name => '',
- Type => 'Requestor', # loc
- Domain => 'RT::System-Role',
- Instance => '',
- Description => 'SystemRolegroup for internal use', # loc
- },
- { Name => '',
- Type => 'Cc', # loc
- Domain => 'RT::System-Role',
- Instance => '',
- Description => 'SystemRolegroup for internal use', # loc
- },
- { Name => '',
- Type => 'AdminCc', # loc
- Domain => 'RT::System-Role',
- Instance => '',
- Description => 'Pseudogroup for internal use', # loc
- }, );
-
-@Queues = ({ Name => 'General',
- Description => 'The default queue',
- CorrespondAddress => "",
- CommentAddress => "", },
- { Name => '___Approvals',
- Description => 'A system-internal queue for the approvals system',
- Disabled => 2, } );
-
-@ScripActions = (
-
- { Name => 'Autoreply To Requestors', # loc
- Description =>
-'Always sends a message to the requestors independent of message sender' , # loc
- ExecModule => 'Autoreply',
- Argument => 'Requestor' },
- { Name => 'Notify Requestors', # loc
- Description => 'Sends a message to the requestors', # loc
- ExecModule => 'Notify',
- Argument => 'Requestor' },
- { Name => 'Notify Owner as Comment', # loc
- Description => 'Sends mail to the owner', # loc
- ExecModule => 'NotifyAsComment',
- Argument => 'Owner' },
- { Name => 'Notify Owner', # loc
- Description => 'Sends mail to the owner', # loc
- ExecModule => 'Notify',
- Argument => 'Owner' },
- { Name => 'Notify AdminCcs as Comment', # loc
- Description => 'Sends mail to the administrative Ccs as a comment', # loc
- ExecModule => 'NotifyAsComment',
- Argument => 'AdminCc' },
- { Name => 'Notify AdminCcs', # loc
- Description => 'Sends mail to the administrative Ccs', # loc
- ExecModule => 'Notify',
- Argument => 'AdminCc' },
-
- { Name => 'Notify Requestors and Ccs as Comment', # loc
- Description => 'Send mail to requestors and Ccs as a comment', # loc
- ExecModule => 'NotifyAsComment',
- Argument => 'Requestor,Cc' },
-
- { Name => 'Notify Requestors and Ccs', # loc
- Description => 'Send mail to requestors and Ccs', # loc
- ExecModule => 'Notify',
- Argument => 'Requestor,Cc' },
-
- { Name => 'Notify Requestors, Ccs and AdminCcs as Comment', # loc
- Description => 'Send mail to all watchers as a "comment"', # loc
- ExecModule => 'NotifyAsComment',
- Argument => 'All' },
- { Name => 'Notify Requestors, Ccs and AdminCcs', # loc
- Description => 'Send mail to all watchers', # loc
- ExecModule => 'Notify',
- Argument => 'All' },
- { Name => 'Notify Other Recipients as Comment', # loc
- Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
- ExecModule => 'NotifyAsComment',
- Argument => 'OtherRecipients' },
- { Name => 'Notify Other Recipients', # loc
- Description => 'Sends mail to explicitly listed Ccs and Bccs', # loc
- ExecModule => 'Notify',
- Argument => 'OtherRecipients' },
- { Name => 'User Defined', # loc
- Description => 'Perform a user-defined action', # loc
- ExecModule => 'UserDefined', },
- { Name => 'Create Tickets', # loc
- Description =>
- 'Create new tickets based on this scrip\'s template', # loc
- ExecModule => 'CreateTickets', },
- { Name => 'Open Tickets',
- Description => 'Open tickets on correspondence', # loc
- ExecModule => 'AutoOpen' },
-);
-
-@ScripConditions = (
- { Name => 'On Create', # loc
- Description => 'When a ticket is created', # loc
- ApplicableTransTypes => 'Create',
- ExecModule => 'AnyTransaction', },
-
- { Name => 'On Transaction', # loc
- Description => 'When anything happens', # loc
- ApplicableTransTypes => 'Any',
- ExecModule => 'AnyTransaction', },
- {
-
- Name => 'On Correspond', # loc
- Description => 'Whenever correspondence comes in', # loc
- ApplicableTransTypes => 'Correspond',
- ExecModule => 'AnyTransaction', },
-
- {
-
- Name => 'On Comment', # loc
- Description => 'Whenever comments come in', # loc
- ApplicableTransTypes => 'Comment',
- ExecModule => 'AnyTransaction' },
- {
-
- Name => 'On Status Change', # loc
- Description => 'Whenever a ticket\'s status changes', # loc
- ApplicableTransTypes => 'Status',
- ExecModule => 'AnyTransaction',
-
- },
- {
-
- Name => 'On Owner Change', # loc
- Description => 'Whenever a ticket\'s owner changes', # loc
- ApplicableTransTypes => 'Any',
- ExecModule => 'OwnerChange',
-
- },
- {
-
- Name => 'On Queue Change', # loc
- Description => 'Whenever a ticket\'s queue changes', # loc
- ApplicableTransTypes => 'Set',
- ExecModule => 'QueueChange',
-
- },
- { Name => 'On Resolve', # loc
- Description => 'Whenever a ticket is resolved', # loc
- ApplicableTransTypes => 'Status',
- ExecModule => 'StatusChange',
- Argument => 'resolved'
-
- },
-
- { Name => 'User Defined', # loc
- Description => 'Whenever a user-defined condition occurs', # loc
- ApplicableTransTypes => 'Any',
- ExecModule => 'UserDefined'
-
- },
-
-);
-
-@Templates = (
- { Queue => '0',
- Name => 'Blank', # loc
- Description => 'A blank template', # loc
- Content => '', },
- { Queue => '0',
- Name => 'Autoreply', # loc
- Description => 'Default Autoresponse template', # loc
- Content => 'Subject: AutoReply: {$Ticket->Subject}
-
-
-Greetings,
-
-This message has been automatically generated in response to the
-creation of a trouble ticket regarding:
- "{$Ticket->Subject()}",
-a summary of which appears below.
-
-There is no need to reply to this message right now. Your ticket has been
-assigned an ID of [{$rtname} #{$Ticket->id()}].
-
-Please include the string:
-
- [{$rtname} #{$Ticket->id}]
-
-in the subject line of all future correspondence about this issue. To do so,
-you may reply to this message.
-
- Thank you,
- {$Ticket->QueueObj->CorrespondAddress()}
-
--------------------------------------------------------------------------
-{$Transaction->Content()}
-'
- },
-
- { Queue => '0',
- Name => 'Transaction', # loc
- Description => 'Default transaction template', # loc
- Content => 'RT-Attach-Message: yes
-
-
-{$Transaction->CreatedAsString}: Request {$Ticket->id} was acted upon.
-Transaction: {$Transaction->Description}
- Queue: {$Ticket->QueueObj->Name}
- Subject: {$Transaction->Subject || $Ticket->Subject || "(No subject given)"}
- Owner: {$Ticket->OwnerObj->Name}
- Requestors: {$Ticket->RequestorAddresses}
- Status: {$Ticket->Status}
- Ticket <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
-
-
-{$Transaction->Content()}
-'
- },
-
- {
-
- Queue => '0',
- Name => 'Admin Correspondence', # loc
- Description => 'Default admin correspondence template', # loc
- Content => 'RT-Attach-Message: yes
-
-
-<URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} >
-
-{$Transaction->Content()}
-'
- },
-
- { Queue => '0',
- Name => 'Correspondence', # loc
- Description => 'Default correspondence template', # loc
- Content => 'RT-Attach-Message: yes
-
-{$Transaction->Content()}
-'
- },
-
- { Queue => '0',
- Name => 'Admin Comment', # loc
- Description => 'Default admin comment template', # loc
- Content =>
-'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]//g; $comment =~ s/^Re//i; $s;}
-
-
-{$RT::WebURL}Ticket/Display.html?id={$Ticket->id}
-This is a comment. It is not sent to the Requestor(s):
-
-{$Transaction->Content()}
-'
- },
-
- { Queue => '0',
- Name => 'Status Change', # loc
- Description => 'Ticket status changed', # loc
- Content => 'Subject: Status Changed to: {$Transaction->NewValue}
-
-
-{$RT::WebURL}Ticket/Display.html?id={$Ticket->id}
-
-{$Transaction->Content()}
-'
- },
-
- {
-
- Queue => '0',
- Name => 'Resolved', # loc
- Description => 'Ticket Resolved', # loc
- Content => 'Subject: Resolved: {$Ticket->Subject}
-
-According to our records, your request has been resolved. If you have any
-further questions or concerns, please respond to this message.
-'
- },
- { Queue => '___Approvals',
- Name => "New Pending Approval", # loc
- Description =>
- "Notify Owners and AdminCcs of new items pending their approval", # loc
- Content => 'Subject: New Pending Approval: {$Ticket->Subject}
-
-Greetings,
-
-There is a new item pending your approval: "{$Ticket->Subject()}",
-a summary of which appears below.
-
-Please visit {$RT::WebURL}Approvals/Display.html?id={$Ticket->id}
-to approve or reject this ticket, or {$RT::WebURL}Approvals/ to
-batch-process all your pending approvals.
-
--------------------------------------------------------------------------
-{$Transaction->Content()}
-'
- },
- { Queue => '___Approvals',
- Name => "Approval Passed", # loc
- Description =>
- "Notify Owner of their ticket has been approved by some approver", # loc
- Content => 'Subject: Ticket Rejected: {$Ticket->Subject}
-
-Greetings,
-
-Your ticket has been approved by { eval { $Approval->OwnerObj->Name } }.
-Other approvals may be pending.
-'
- },
- { Queue => '___Approvals',
- Name => "All Approvals Passed", # loc
- Description =>
- "Notify Owner of their ticket has been approved by all approvers", # loc
- Content => 'Subject: Ticket Rejected: {$Ticket->Subject}
-
-Greetings,
-
-Your ticket has been approved. Its Owner may now start to act on it.
-'
- },
- { Queue => '___Approvals',
- Name => "Approval Rejected", # loc
- Description =>
- "Notify Owner of their rejected ticket", # loc
- Content => 'Subject: Ticket Rejected: {$Ticket->Subject}
-
-Greetings,
-
-Your ticket has been rejected by { eval { $Approval->OwnerObj->Name } }.
-'
- },
-);
-# }}}
-
-@Scrips = (
- { ScripCondition => 'On Correspond',
- ScripAction => 'Open Tickets',
- Template => 'Blank' },
- { ScripCondition => 'On Create',
- ScripAction => 'AutoReply To Requestors',
- Template => 'AutoReply' },
- { ScripCondition => 'On Create',
- ScripAction => 'Notify AdminCcs',
- Template => 'Transaction' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify AdminCcs',
- Template => 'Admin Correspondence' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify Requestors And Ccs',
- Template => 'Correspondence' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify Other Recipients',
- Template => 'Correspondence' },
- { ScripCondition => 'On Comment',
- ScripAction => 'Notify AdminCcs As Comment',
- Template => 'Admin Comment' },
- { ScripCondition => 'On Comment',
- ScripAction => 'Notify Other Recipients As Comment',
- Template => 'Correspondence' },
- { ScripCondition => 'On Resolve',
- ScripAction => 'Notify Requestors',
- Template => 'Resolved' },
- { Description => "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval", # loc
- Queue => '___Approvals',
- ScripCondition => 'User Defined',
- CustomIsApplicableCode => q[
- $self->TicketObj->Type eq 'approval' and
- $self->TransactionObj->Field eq 'Status' and
- $self->TransactionObj->NewValue eq 'open' and
- eval { $T::Approving = ($self->TicketObj->AllDependedOnBy( Type => 'ticket' ))[0] }
- ],
- ScripAction => 'Notify Owner',
- Template => 'New Pending Approval' },
- { Description => "If an approval is rejected, reject the original and delete pending approvals", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Status Change',
- ScripAction => 'User Defined',
- CustomPrepareCode => q[
-# ------------------------------------------------------------------- #
-return(0) unless ( lc($self->TransactionObj->NewValue) eq "rejected" or
- lc($self->TransactionObj->NewValue) eq "deleted" );
-
-my $rejected = 0;
-my $links = $self->TicketObj->DependedOnBy;
-foreach my $link (@{ $links->ItemsArrayRef }) {
- my $obj = $link->BaseObj;
- if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
- if ($obj->Type eq 'ticket') {
- $obj->Comment(
- Content => $self->loc("Your request was rejected."),
- );
- $obj->SetStatus(
- Status => 'rejected',
- Force => 1,
- );
-
- $T::Approval = $self->TicketObj; # so we can access it inside templates
- $self->{TicketObj} = $obj; # we want the original id in the token line
- $rejected = 1;
- }
- else {
- $obj->SetStatus(
- Status => 'deleted',
- Force => 1,
- );
- }
- }
-}
-
-$links = $self->TicketObj->DependsOn;
-foreach my $link (@{ $links->ItemsArrayRef }) {
- my $obj = $link->TargetObj;
- if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
- $obj->SetStatus(
- Status => 'deleted',
- Force => 1,
- );
- }
-}
-
-# Now magically turn myself into a Requestor Notify object...
-require RT::Action::Notify; bless($self, 'RT::Action::Notify');
-$self->{Argument} = 'Requestor'; $self->Prepare;
-
-return $rejected;
-# ------------------------------------------------------------------- #
- ],
- CustomCommitCode => '"never needed"',
- Template => 'Approval Rejected', },
- { Description => "When a ticket has been approved by any approver, add correspondence to the original ticket", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Resolve',
- ScripAction => 'User Defined',
- CustomPrepareCode => q[
-# ------------------------------------------------------------------- #
-return(0) unless ($self->TicketObj->Type eq 'approval');
-
-my $note;
-my $t = $self->TicketObj->Transactions;
-while (my $o = $t->Next) {
- $note .= $o->Content . "\n" if $o->ContentObj
- and $o->Content !~ /Default Approval/;
-}
-
-foreach my $obj ($self->TicketObj->AllDependedOnBy( Type => 'ticket' )) {
- $obj->Comment(
- Content => $self->loc( "Your request has been approved by [_1]. Other approvals may still be pending.", # loc
- $self->TransactionObj->CreatorObj->Name,
- ) . "\n" . $self->loc( "Approver's notes: [_1]", # loc
- $note
- ),
- );
- $T::Approval = $self->TicketObj; # so we can access it inside templates
- $self->{TicketObj} = $obj; # we want the original id in the token line
-}
-
-# Now magically turn myself into a Requestor Notify object...
-require RT::Action::Notify; bless($self, 'RT::Action::Notify');
-$self->{Argument} = 'Requestor'; $self->Prepare;
-
-return 1;
-# ------------------------------------------------------------------- #
- ],
- CustomCommitCode => '"never needed"',
- Template => 'Approval Passed' },
- { Description => "When a ticket has been approved by all approvers, add correspondence to the original ticket", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Resolve',
- ScripAction => 'User Defined',
- CustomPrepareCode => q[
-# ------------------------------------------------------------------- #
-# Find all the tickets that depend on this (that this is approving)
-
-my $Ticket = $self->TicketObj;
-my @TOP = $Ticket->AllDependedOnBy( Type => 'ticket' );
-my $links = $Ticket->DependedOnBy;
-my $passed = 0;
-
-while (my $link = $links->Next) {
- my $obj = $link->BaseObj;
- next if ($obj->HasUnresolvedDependencies( Type => 'approval' ));
-
- if ($obj->Type eq 'ticket') {
- $obj->Comment(
- Content => $self->loc("Your request has been approved."),
- );
- $T::Approval = $Ticket; # so we can access it inside templates
- $self->{TicketObj} = $obj; # we want the original id in the token line
- $passed = 1;
- }
- elsif ($obj->Type eq 'approval') {
- $obj->SetStatus( Status => 'open', Force => 1 );
- }
- elsif ($RT::UseCodeTickets and $obj->Type eq 'code') {
- my $code = $obj->Transactions->First->Content;
- my $rv;
-
- foreach my $TOP (@TOP) {
- local $@;
- $rv++ if eval $code;
- $RT::Logger->error("Cannot eval code: $@") if $@;
- }
-
- if ($rv or !@TOP) {
- $obj->SetStatus( Status => 'resolved', Force => 1,);
- }
- else {
- $obj->SetStatus( Status => 'rejected', Force => 1,);
- }
- }
-}
-
-# Now magically turn myself into a Requestor Notify object...
-require RT::Action::Notify; bless($self, 'RT::Action::Notify');
-$self->{Argument} = 'Requestor'; $self->Prepare;
-
-return 0; # ignore $passed;
-# ------------------------------------------------------------------- #
- ],
- CustomCommitCode => '"never needed"',
- Template => 'All Approvals Passed', },
-
-);
-
-@ACL = (
- { UserId => 'Nobody', # - principalId
- Right => 'OwnTicket', },
-
- { UserId => 'root', # - principalid
- Right => 'SuperUser', },
-
-);
diff --git a/rt/etc/schema.Informix b/rt/etc/schema.Informix
deleted file mode 100644
index ca6173f36..000000000
--- a/rt/etc/schema.Informix
+++ /dev/null
@@ -1,342 +0,0 @@
--- This schema was adopted from the oracle schema by
--- Andre Koppel.
--- Version 0.2 Date 2003.10.21
--- The work is still in progress
-
-CREATE TABLE Attachments (
- id SERIAL,
- TransactionId INTEGER NOT NULL,
- Parent INTEGER DEFAULT 0 NOT NULL,
- MessageId VARCHAR(160),
- Subject VARCHAR(255),
- Filename VARCHAR(255),
- ContentType VARCHAR(80),
- ContentEncoding VARCHAR(80),
- Content BYTE,
- Headers BYTE,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-CREATE INDEX Attachments1 ON Attachments (Parent);
-CREATE INDEX Attachments2 ON Attachments (TransactionId);
-CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId);
-
-
-CREATE TABLE Queues (
- id SERIAL,
- Name VARCHAR(200) DEFAULT '' NOT NULL,
- Description VARCHAR(255) DEFAULT NULL,
- CorrespondAddress VARCHAR(120) DEFAULT NULL,
- CommentAddress VARCHAR(120) DEFAULT NULL,
- InitialPriority INTEGER DEFAULT 0 NOT NULL,
- FinalPriority INTEGER DEFAULT 0 NOT NULL,
- DefaultDueIn INTEGER DEFAULT 0 NOT NULL,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- Disabled INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE UNIQUE INDEX Queues1 ON Queues (Name);
-CREATE INDEX Queues2 ON Queues (Disabled);
-
-
-CREATE TABLE Links (
- id SERIAL,
- Base VARCHAR(240) DEFAULT NULL,
- Target VARCHAR(240) DEFAULT NULL,
- Type VARCHAR(20) DEFAULT '' NOT NULL,
- LocalTarget INTEGER DEFAULT 0 NOT NULL,
- LocalBase INTEGER DEFAULT 0 NOT NULL,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
--- CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type);
-CREATE INDEX Links2 ON Links (Base, Type);
-CREATE INDEX Links3 ON Links (Target, Type);
-CREATE INDEX Links4 ON Links(Type,LocalBase);
-
-
-CREATE TABLE Principals (
- id SERIAL,
- PrincipalType VARCHAR(16) DEFAULT '' NOT NULL,
- ObjectId INTEGER DEFAULT 0,
- Disabled INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX Principals2 ON Principals (ObjectId);
-
-
-CREATE TABLE Groups (
- id SERIAL,
- Name VARCHAR(200) DEFAULT NULL,
- Description VARCHAR(255) DEFAULT NULL,
- Domain VARCHAR(64) DEFAULT '',
- Type VARCHAR(64) DEFAULT '',
- Instance INTEGER DEFAULT 0 NOT NULL,
--- Instance VARCHAR(64) DEFAULT '' NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX Groups1 ON Groups (Domain, Instance, Type, id);
-CREATE INDEX Groups2 ON Groups (Type, Instance, Domain);
-
-
-CREATE TABLE ScripConditions (
- id SERIAL,
- Name VARCHAR(200),
- Description VARCHAR(255),
- ExecModule VARCHAR(60),
- Argument VARCHAR(255),
- ApplicableTransTypes VARCHAR(60),
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-
-CREATE TABLE Transactions (
- id SERIAL,
- EffectiveTicket INTEGER DEFAULT 0 NOT NULL,
- Ticket INTEGER DEFAULT 0 NOT NULL,
- TimeTaken INTEGER DEFAULT 0 NOT NULL,
- Type VARCHAR(20),
- Field VARCHAR(40),
- OldValue VARCHAR(255),
- NewValue VARCHAR(255),
- Data VARCHAR(255),
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-CREATE INDEX Transactions1 ON Transactions (Ticket);
-CREATE INDEX Transactions2 ON Transactions (EffectiveTicket);
-
-
-CREATE TABLE Scrips (
- id SERIAL,
- Description VARCHAR(255) DEFAULT '',
- ScripCondition INTEGER DEFAULT 0 NOT NULL,
- ScripAction INTEGER DEFAULT 0 NOT NULL,
- ConditionRules BYTE,
- ActionRules BYTE,
- CustomIsApplicableCode BYTE,
- CustomPrepareCode BYTE,
- CustomCommitCode BYTE,
- Stage VARCHAR(32),
- Queue INTEGER DEFAULT 0 NOT NULL,
- Template INTEGER DEFAULT 0 NOT NULL,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-
-CREATE TABLE ACL (
- id SERIAL,
- PrincipalType VARCHAR(25) NOT NULL,
- PrincipalId INTEGER NOT NULL,
- RightName VARCHAR(25) NOT NULL,
- ObjectType VARCHAR(25) NOT NULL,
- ObjectId INTEGER DEFAULT 0 NOT NULL,
- DelegatedBy INTEGER DEFAULT 0 NOT NULL,
- DelegatedFrom INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX ACL1 ON ACL(RightName, ObjectType, ObjectId, PrincipalType, PrincipalId);
-
-
-CREATE TABLE GroupMembers (
- id SERIAL,
- GroupId INTEGER DEFAULT 0 NOT NULL,
- MemberId INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE UNIQUE INDEX GroupMembers1 ON GroupMembers (GroupId, MemberId);
-
-
-CREATE TABLE CachedGroupMembers (
- id SERIAL,
- GroupId INTEGER DEFAULT 0,
- MemberId INTEGER DEFAULT 0,
- Via INTEGER DEFAULT 0,
- ImmediateParentId INTEGER DEFAULT 0,
- Disabled INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX DisGrouMem ON CachedGroupMembers (GroupId, MemberId, Disabled);
-CREATE INDEX GrouMem ON CachedGroupMembers (GroupId, MemberId);
-
-
-CREATE TABLE Users (
- id SERIAL,
- Name VARCHAR(200) NOT NULL,
- Password VARCHAR(40),
- Comments BYTE,
- Signature BYTE,
- EmailAddress VARCHAR(120),
- FreeFormContactInfo BYTE,
- Organization VARCHAR(200),
- RealName VARCHAR(120),
- NickName VARCHAR(16),
- Lang VARCHAR(16),
- EmailEncoding VARCHAR(16),
- WebEncoding VARCHAR(16),
- ExternalContactInfoId VARCHAR(100),
- ContactInfoSystem VARCHAR(30),
- ExternalAuthId VARCHAR(100),
- AuthSystem VARCHAR(30),
- Gecos VARCHAR(16),
- HomePhone VARCHAR(30),
- WorkPhone VARCHAR(30),
- MobilePhone VARCHAR(30),
- PagerPhone VARCHAR(30),
- Address1 VARCHAR(200),
- Address2 VARCHAR(200),
- City VARCHAR(100),
- State VARCHAR(100),
- Zip VARCHAR(16),
- Country VARCHAR(50),
- Timezone VARCHAR(50),
- PGPKey BYTE,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
--- CREATE UNIQUE INDEX Users1 ON Users (Name);
-CREATE INDEX Users2 ON Users (Name);
-CREATE INDEX Users3 ON Users (id, EmailAddress);
-CREATE INDEX Users4 ON Users (EmailAddress);
-
-
-CREATE TABLE Tickets (
- id SERIAL,
- EffectiveId INTEGER DEFAULT 0 NOT NULL,
- Queue INTEGER DEFAULT 0 NOT NULL,
- Type VARCHAR(16),
- IssueStatement INTEGER DEFAULT 0 NOT NULL,
- Resolution INTEGER DEFAULT 0 NOT NULL,
- Owner INTEGER DEFAULT 0 NOT NULL,
- Subject VARCHAR(200) DEFAULT '[no subject]',
- InitialPriority INTEGER DEFAULT 0 NOT NULL,
- FinalPriority INTEGER DEFAULT 0 NOT NULL,
- Priority INTEGER DEFAULT 0 NOT NULL,
- TimeEstimated INTEGER DEFAULT 0 NOT NULL,
- TimeWorked INTEGER DEFAULT 0 NOT NULL,
- Status VARCHAR(10),
- TimeLeft INTEGER DEFAULT 0 NOT NULL,
- Told DATETIME YEAR TO SECOND,
- Starts DATETIME YEAR TO SECOND,
- Started DATETIME YEAR TO SECOND,
- Due DATETIME YEAR TO SECOND,
- Resolved DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- Disabled INTEGER DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX Tickets1 ON Tickets (Queue, Status);
-CREATE INDEX Tickets2 ON Tickets (Owner);
-CREATE INDEX Tickets3 ON Tickets (EffectiveId);
-CREATE INDEX Tickets4 ON Tickets (id, Status);
-CREATE INDEX Tickets5 ON Tickets (id, EffectiveId);
-CREATE INDEX Tickets6 ON Tickets (EffectiveId, Type);
-
-
-CREATE TABLE ScripActions (
- id SERIAL,
- Name VARCHAR(200),
- Description VARCHAR(255),
- ExecModule VARCHAR(60),
- Argument VARCHAR(255),
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-
-CREATE TABLE Templates (
- id SERIAL,
- Queue INTEGER DEFAULT 0 NOT NULL,
- Name VARCHAR(200) NOT NULL,
- Description VARCHAR(255),
- Type VARCHAR(16),
- Language VARCHAR(16),
- TranslationOf INTEGER DEFAULT 0 NOT NULL,
- Content BYTE,
- LastUpdated DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-
-CREATE TABLE TicketCustomFieldValues (
- id SERIAL,
- Ticket INTEGER NOT NULL,
- CustomField INTEGER NOT NULL,
- Content VARCHAR(255),
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-CREATE INDEX TicketCustomFieldValues1 ON TicketCustomFieldValues (CustomField,Ticket,Content);
-CREATE INDEX TicketCustomFieldValues2 ON TicketCustomFieldValues (CustomField,Ticket);
-
-CREATE TABLE CustomFields (
- id SERIAL,
- Name VARCHAR(200),
- Type VARCHAR(200),
- Queue INTEGER DEFAULT 0 NOT NULL,
- Description VARCHAR(255),
- SortOrder INTEGER DEFAULT 0 NOT NULL,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- Disabled SMALLINT DEFAULT 0 NOT NULL,
- PRIMARY KEY (id)
-);
-CREATE INDEX CustomFields1 ON CustomFields (Disabled, Queue);
-
-
-CREATE TABLE CustomFieldValues (
- id SERIAL,
- CustomField INTEGER NOT NULL,
- Name VARCHAR(200),
- Description VARCHAR(255),
- SortOrder INTEGER DEFAULT 0 NOT NULL,
- Creator INTEGER DEFAULT 0 NOT NULL,
- Created DATETIME YEAR TO SECOND,
- LastUpdatedBy INTEGER DEFAULT 0 NOT NULL,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
-CREATE INDEX CustomFieldValues1 ON CustomFieldValues (CustomField);
-
-CREATE TABLE sessions (
- id VARCHAR(32) NOT NULL,
- a_session BYTE,
- LastUpdated DATETIME YEAR TO SECOND,
- PRIMARY KEY (id)
-);
-
diff --git a/rt/etc/schema.Oracle b/rt/etc/schema.Oracle
new file mode 100644
index 000000000..0c14cb39d
--- /dev/null
+++ b/rt/etc/schema.Oracle
@@ -0,0 +1,287 @@
+CREATE SEQUENCE KEYWORDSELECTS_seq;
+CREATE TABLE KeywordSelects (
+ id NUMBER(11, 0) PRIMARY KEY,
+ Name VARCHAR2(255),
+ Keyword NUMBER(11, 0),
+ Single NUMBER(11, 0),
+ Depth NUMBER(11, 0) DEFAULT 0,
+ ObjectType VARCHAR2(32) NOT NULL,
+ ObjectField VARCHAR2(32),
+ ObjectValue VARCHAR2(255),
+ Disabled NUMBER(11, 0) DEFAULT 0
+);
+
+CREATE INDEX KeywordSelects1 ON KeywordSelects (Keyword);
+CREATE INDEX KeywordSelects2 ON
+ KeywordSelects(ObjectType, ObjectField, ObjectValue);
+
+
+CREATE SEQUENCE ATTACHMENTS_seq;
+CREATE TABLE Attachments (
+ id NUMBER(11,0) PRIMARY KEY,
+ TransactionId NUMBER(11,0) NOT NULL,
+ Parent NUMBER(11,0),
+ MessageId VARCHAR2(160),
+ Subject VARCHAR2(255),
+ Filename VARCHAR2(255),
+ ContentType VARCHAR2(80),
+ ContentEncoding VARCHAR2(80),
+ Content CLOB,
+ Headers CLOB,
+ Creator NUMBER(11,0),
+ Created DATE,
+ Disabled NUMBER(11,0) DEFAULT 0
+);
+
+CREATE SEQUENCE QUEUES_seq;
+CREATE TABLE Queues (
+ id NUMBER(11, 0) PRIMARY KEY,
+ Name VARCHAR2(40) NOT NULL UNIQUE,
+ Description VARCHAR2(120),
+ CorrespondAddress VARCHAR2(40),
+ CommentAddress VARCHAR2(40),
+ InitialPriority NUMBER(11, 0),
+ FinalPriority NUMBER(11, 0),
+ DefaultDueIn NUMBER(11, 0),
+ Creator NUMBER(11, 0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11, 0),
+ LastUpdated DATE,
+ Disabled NUMBER(11,0) DEFAULT 0
+);
+
+CREATE SEQUENCE LINKS_seq;
+CREATE TABLE Links (
+ id NUMBER(11,0) PRIMARY KEY,
+ Base VARCHAR2(255),
+ Target VARCHAR2(255),
+ Type VARCHAR2(20) NOT NULL,
+ LocalTarget NUMBER(11,0),
+ LocalBase NUMBER(11,0),
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE,
+ Creator NUMBER(11,0),
+ Created DATE
+);
+
+CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type);
+
+
+
+CREATE SEQUENCE GROUPS_seq;
+CREATE TABLE Groups (
+ id NUMBER(11,0) PRIMARY KEY,
+ Name VARCHAR2(16) UNIQUE,
+ Description VARCHAR(64),
+ Pseudo NUMBER(11,0) DEFAULT 0
+);
+
+CREATE SEQUENCE WATCHERS_seq;
+CREATE TABLE Watchers (
+ id NUMBER(11,0) PRIMARY KEY,
+ Type VARCHAR2(16),
+ Scope VARCHAR2(16),
+ Value NUMBER(11,0),
+ Email VARCHAR2(255),
+ Quiet NUMBER(11,0),
+ Owner NUMBER(11,0),
+ Creator NUMBER(11,0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE
+);
+
+
+
+CREATE SEQUENCE SCRIPCONDITIONS_seq;
+CREATE TABLE ScripConditions (
+ id NUMBER(11, 0) PRIMARY KEY,
+ Name VARCHAR2(255),
+ Description VARCHAR2(255),
+ ExecModule VARCHAR2(60),
+ Argument VARCHAR2(255),
+ ApplicableTransTypes VARCHAR2(60),
+ Creator NUMBER(11, 0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11, 0),
+ LastUpdated DATE
+);
+
+
+CREATE SEQUENCE TRANSACTIONS_seq;
+CREATE TABLE Transactions (
+ id NUMBER(11,0) PRIMARY KEY,
+ EffectiveTicket NUMBER(11,0),
+ Ticket NUMBER(11,0),
+ TimeTaken NUMBER(11,0),
+ Type VARCHAR2(20),
+ Field VARCHAR2(40),
+ OldValue VARCHAR2(255),
+ NewValue VARCHAR2(255),
+ Data VARCHAR2(100),
+ Creator NUMBER(11,0),
+ Created DATE,
+ Disabled NUMBER(11,0) DEFAULT 0
+);
+
+CREATE SEQUENCE SCRIPS_seq;
+CREATE TABLE Scrips (
+ id NUMBER(11,0) PRIMARY KEY,
+ ScripCondition NUMBER(11,0),
+ ScripAction NUMBER(11,0),
+ Stage VARCHAR2(32),
+ Queue NUMBER(11,0),
+ Template NUMBER(11,0),
+ Creator NUMBER(11,0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE
+);
+
+
+
+
+CREATE SEQUENCE ACL_seq;
+CREATE TABLE ACL (
+ id NUMBER(11,0) PRIMARY KEY,
+ PrincipalId NUMBER(11,0),
+ PrincipalType VARCHAR2(25),
+ RightName VARCHAR2(25),
+ RightScope VARCHAR2(25),
+ RightAppliesTo NUMBER(11,0)
+);
+
+CREATE SEQUENCE GROUPMEMBERS_seq;
+CREATE TABLE GroupMembers (
+ id NUMBER(11,0) PRIMARY KEY,
+ GroupId NUMBER(11,0),
+ UserId NUMBER(11,0)
+);
+
+CREATE UNIQUE INDEX GroupMembers1 ON GroupMembers (GroupId, UserId);
+
+
+CREATE SEQUENCE OBJECTKEYWORDS_seq;
+CREATE TABLE ObjectKeywords (
+ id NUMBER(11,0) PRIMARY KEY,
+ Keyword NUMBER(11,0) NOT NULL,
+ KeywordSelect NUMBER(11,0) NOT NULL,
+ ObjectType VARCHAR2(32) NOT NULL,
+ ObjectId NUMBER(11,0) NOT NULL
+);
+
+CREATE UNIQUE INDEX ObjectKeywords1 ON ObjectKeywords
+ (ObjectId, ObjectType, KeywordSelect, Keyword);
+CREATE INDEX ObjectKeywords3 ON ObjectKeywords (Keyword);
+
+CREATE SEQUENCE KEYWORDS_seq;
+CREATE TABLE Keywords (
+ id NUMBER(11, 0) PRIMARY KEY,
+ Name VARCHAR2(255) NOT NULL,
+ Description VARCHAR2(255),
+ Parent NUMBER(11, 0),
+ Disabled NUMBER(11, 0) DEFAULT 0
+);
+
+CREATE UNIQUE INDEX Keywords1 ON Keywords (Name, Parent);
+CREATE INDEX Keywords3 ON Keywords (Parent);
+
+CREATE SEQUENCE USERS_seq;
+CREATE TABLE Users (
+ id NUMBER(11,0) PRIMARY KEY,
+ Name VARCHAR2(120) NOT NULL UNIQUE,
+ Password VARCHAR2(40),
+ Comments CLOB,
+ Signature CLOB,
+ EmailAddress VARCHAR2(120),
+ FreeFormContactInfo CLOB,
+ Organization VARCHAR2(200),
+ Privileged NUMBER(11,0),
+ RealName VARCHAR2(120),
+ NickName VARCHAR2(16),
+ Lang VARCHAR2(16),
+ EmailEncoding VARCHAR2(16),
+ WebEncoding VARCHAR2(16),
+ ExternalContactInfoId VARCHAR2(100),
+ ContactInfoSystem VARCHAR2(30),
+ ExternalAuthId VARCHAR2(100),
+ AuthSystem VARCHAR2(30),
+ Gecos VARCHAR2(16),
+ HomePhone VARCHAR2(30),
+ WorkPhone VARCHAR2(30),
+ MobilePhone VARCHAR2(30),
+ PagerPhone VARCHAR2(30),
+ Address1 VARCHAR2(200),
+ Address2 VARCHAR2(200),
+ City VARCHAR2(100),
+ State VARCHAR2(100),
+ Zip VARCHAR2(16),
+ Country VARCHAR2(50),
+ Creator NUMBER(11,0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE,
+ Disabled NUMBER(11,0) DEFAULT 0
+);
+
+
+
+
+CREATE SEQUENCE TICKETS_seq;
+CREATE TABLE Tickets (
+ id NUMBER(11, 0) PRIMARY KEY,
+ EffectiveId NUMBER(11, 0),
+ Queue NUMBER(11,0),
+ Type VARCHAR2(16),
+ IssueStatement NUMBER(11,0),
+ Resolution NUMBER(11,0),
+ Owner NUMBER(11,0),
+ Subject VARCHAR2(200) DEFAULT '',
+ InitialPriority NUMBER(11,0) DEFAULT 0,
+ FinalPriority NUMBER(11,0) DEFAULT 0,
+ Priority NUMBER(11,0) DEFAULT 0,
+ Status VARCHAR2(10),
+ TimeWorked NUMBER(11,0) DEFAULT 0,
+ TimeLeft NUMBER(11,0) DEFAULT 0,
+ Told DATE,
+ Starts DATE,
+ Started DATE,
+ Due DATE,
+ Resolved DATE,
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE,
+ Creator NUMBER(11,0),
+ Created DATE,
+ Disabled NUMBER(11,0) DEFAULT 0
+);
+
+CREATE SEQUENCE SCRIPACTIONS_seq;
+CREATE TABLE ScripActions (
+ id NUMBER(11,0) PRIMARY KEY,
+ Name VARCHAR2(255),
+ Description VARCHAR2(255),
+ ExecModule VARCHAR2(60),
+ Argument VARCHAR2(255),
+ Creator NUMBER(11,0),
+ Created DATE,
+ LastUpdatedBy NUMBER(11,0),
+ LastUpdated DATE
+);
+
+
+CREATE SEQUENCE TEMPLATES_seq;
+CREATE TABLE Templates (
+ id NUMBER(11,0) PRIMARY KEY,
+ Queue NUMBER(11,0) DEFAULT 0 NOT NULL,
+ Name VARCHAR2(40) NOT NULL UNIQUE,
+ Description VARCHAR2(120),
+ Type VARCHAR2(16),
+ Language VARCHAR2(16),
+ TranslationOf NUMBER(11,0),
+ Content CLOB,
+ LastUpdated DATE,
+ LastUpdatedBy NUMBER(11,0),
+ Creator NUMBER(11,0),
+ Created DATE
+);
+
diff --git a/rt/etc/schema.Pg b/rt/etc/schema.Pg
index ba0d6fc6c..21d981b4a 100755
--- a/rt/etc/schema.Pg
+++ b/rt/etc/schema.Pg
@@ -1,578 +1,267 @@
-------------------------------------------------------------------
--- My2Pg 1.23 translated dump
---
-------------------------------------------------------------------
-
-BEGIN;
-
-
-
-
---
--- Sequences for table ATTACHMENTS
---
-
-CREATE SEQUENCE attachments_id_seq;
-
--- {{{ Attachments
-
+CREATE TABLE KeywordSelects (
+ id serial NOT NULL ,
+ Name varchar(255) ,
+ Keyword integer ,
+ Single integer ,
+ Depth integer NOT NULL DEFAULT 0 ,
+ ObjectType varchar(32) NOT NULL ,
+ ObjectField varchar(32) ,
+ ObjectValue varchar(255) ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
+ PRIMARY KEY (id)
+);
+CREATE INDEX KeywordSelects1 ON KeywordSelects (Keyword);
+CREATE INDEX KeywordSelects2 ON KeywordSelects (ObjectType, ObjectField, ObjectValue);
CREATE TABLE Attachments (
- id INTEGER DEFAULT nextval('attachments_id_seq'),
+ id serial NOT NULL ,
TransactionId integer NOT NULL ,
- Parent integer NOT NULL DEFAULT 0 ,
- MessageId varchar(160) NULL ,
- Subject varchar(255) NULL ,
- Filename varchar(255) NULL ,
- ContentType varchar(80) NULL ,
- ContentEncoding varchar(80) NULL ,
- Content text NULL ,
- Headers text NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
+ Parent integer ,
+ MessageId varchar(160) ,
+ Subject varchar(255) ,
+ Filename varchar(255) ,
+ ContentType varchar(80) ,
+ ContentEncoding varchar(80) ,
+ Content TEXT ,
+ Headers TEXT ,
+ Creator integer ,
+ Created timestamp ,
PRIMARY KEY (id)
-
);
-
-CREATE INDEX Attachments1 ON Attachments (Parent) ;
-CREATE INDEX Attachments2 ON Attachments (TransactionId) ;
-CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId) ;
--- }}}
-
--- {{{ Queues
-
-
---
--- Sequences for table QUEUES
---
-
-CREATE SEQUENCE queues_id_seq;
-
+CREATE INDEX Attachments1 ON Attachments (Parent);
+CREATE INDEX Attachments2 ON Attachments (TransactionId);
+CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId);
CREATE TABLE Queues (
- id INTEGER DEFAULT nextval('queues_id_seq'),
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
- CorrespondAddress varchar(120) NULL ,
- CommentAddress varchar(120) NULL ,
- InitialPriority integer NOT NULL DEFAULT 0 ,
- FinalPriority integer NOT NULL DEFAULT 0 ,
- DefaultDueIn integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ Name varchar(120) NOT NULL ,
+ Description varchar(120) ,
+ CorrespondAddress varchar(120) ,
+ CommentAddress varchar(120) ,
+ InitialPriority integer ,
+ FinalPriority integer ,
+ DefaultDueIn integer ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-
);
-CREATE UNIQUE INDEX Queues1 ON Queues (Name) ;
-
--- }}}
-
--- {{{ Links
-
-
-
---
--- Sequences for table LINKS
---
-
-CREATE SEQUENCE links_id_seq;
-
+CREATE UNIQUE INDEX Queues1 ON Queues (Name);
CREATE TABLE Links (
- id INTEGER DEFAULT nextval('links_id_seq'),
- Base varchar(240) NULL ,
- Target varchar(240) NULL ,
+ id serial NOT NULL ,
+ Base varchar(240) ,
+ Target varchar(240) ,
Type varchar(20) NOT NULL ,
- LocalTarget integer NOT NULL DEFAULT 0 ,
- LocalBase integer NOT NULL DEFAULT 0 ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
+ LocalTarget integer ,
+ LocalBase integer ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
+ Creator integer ,
+ Created timestamp ,
PRIMARY KEY (id)
-
);
-CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type) ;
-
--- }}}
-
--- {{{ Principals
-
-
-
---
--- Sequences for table PRINCIPALS
---
-
-CREATE SEQUENCE principals_id_seq;
-
-CREATE TABLE Principals (
- id INTEGER DEFAULT nextval('principals_id_seq') not null,
- PrincipalType VARCHAR(16) not null,
- ObjectId integer,
- Disabled int2 NOT NULL DEFAULT 0 ,
- PRIMARY KEY (id)
-
-);
-
-CREATE INDEX Principals2 ON Principals (ObjectId);
-
-
--- }}}
-
--- {{{ Groups
-
-
-
---
--- Sequences for table GROUPS
---
-
-CREATE SEQUENCE groups_id_seq;
-
+CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type);
CREATE TABLE Groups (
- id INTEGER DEFAULT nextval('groups_id_seq'),
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- Domain varchar(64),
- Type varchar(64),
- Instance varchar(64),
+ id serial NOT NULL ,
+ Name varchar(16) ,
+ Description varchar(64) ,
+ Pseudo integer NOT NULL DEFAULT 0 ,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX Groups1 ON Groups (Name);
+CREATE TABLE Watchers (
+ id serial NOT NULL ,
+ Type varchar(16) ,
+ Scope varchar(16) ,
+ Value integer ,
+ Email varchar(255) ,
+ Quiet integer ,
+ Owner integer ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
PRIMARY KEY (id)
-
);
-CREATE UNIQUE INDEX Groups1 ON Groups (Domain,Instance,Type,id, Name);
-CREATE INDEX Groups2 On Groups (Type, Instance, Domain);
-
-
--- }}}
-
--- {{{ ScripConditions
-
-
-
---
--- Sequences for table SCRIPCONDITIONS
---
-
-CREATE SEQUENCE scripconditions_id_seq;
-
+CREATE INDEX Watchers1 ON Watchers (Scope, Value, Type, Owner);
CREATE TABLE ScripConditions (
- id INTEGER DEFAULT nextval('scripconditions_id_seq'),
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- ExecModule varchar(60) NULL ,
- Argument varchar(255) NULL ,
- ApplicableTransTypes varchar(60) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ Name varchar(255) ,
+ Description varchar(255) ,
+ ExecModule varchar(60) ,
+ Argument varchar(255) ,
+ ApplicableTransTypes varchar(60) ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
PRIMARY KEY (id)
-
);
-
--- }}}
-
--- {{{ Transactions
-
-
---
--- Sequences for table TRANSACTIONS
---
-
-CREATE SEQUENCE transactions_id_seq;
-
CREATE TABLE Transactions (
- id INTEGER DEFAULT nextval('transactions_id_seq'),
- EffectiveTicket integer NOT NULL DEFAULT 0 ,
- Ticket integer NOT NULL DEFAULT 0 ,
- TimeTaken integer NOT NULL DEFAULT 0 ,
- Type varchar(20) NULL ,
- Field varchar(40) NULL ,
- OldValue varchar(255) NULL ,
- NewValue varchar(255) NULL ,
- Data varchar(100) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ EffectiveTicket integer ,
+ Ticket integer ,
+ TimeTaken integer ,
+ Type varchar(20) ,
+ Field varchar(40) ,
+ OldValue varchar(255) ,
+ NewValue varchar(255) ,
+ Data varchar(100) ,
+ Creator integer ,
+ Created timestamp ,
PRIMARY KEY (id)
-
);
CREATE INDEX Transactions1 ON Transactions (Ticket);
CREATE INDEX Transactions2 ON Transactions (EffectiveTicket);
-
--- }}}
-
--- {{{ Scrips
-
-
-
---
--- Sequences for table SCRIPS
---
-
-CREATE SEQUENCE scrips_id_seq;
-
CREATE TABLE Scrips (
- id INTEGER DEFAULT nextval('scrips_id_seq'),
- Description varchar(255),
- ScripCondition integer NOT NULL DEFAULT 0 ,
- ScripAction integer NOT NULL DEFAULT 0 ,
- ConditionRules text NULL ,
- ActionRules text NULL ,
- CustomIsApplicableCode text NULL ,
- CustomPrepareCode text NULL ,
- CustomCommitCode text NULL ,
- Stage varchar(32) NULL ,
- Queue integer NOT NULL DEFAULT 0 ,
- Template integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ ScripCondition integer ,
+ ScripAction integer ,
+ Stage varchar(32) ,
+ Queue integer ,
+ Template integer ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
PRIMARY KEY (id)
-
);
-
--- }}}
-
--- {{{ ACL
-
-
---
--- Sequences for table ACL
---
-
-CREATE SEQUENCE acl_id_seq;
-
CREATE TABLE ACL (
- id INTEGER DEFAULT nextval('acl_id_seq'),
- PrincipalType varchar(25) NOT NULL,
-
- PrincipalId integer NOT NULL ,
- RightName varchar(25) NOT NULL ,
- ObjectType varchar(25) NOT NULL ,
- ObjectId integer NOT NULL DEFAULT 0,
- DelegatedBy integer NOT NULL DEFAULT 0,
- DelegatedFrom integer NOT NULL DEFAULT 0,
+ id serial NOT NULL ,
+ PrincipalId integer ,
+ PrincipalType varchar(25) ,
+ RightName varchar(25) ,
+ RightScope varchar(25) ,
+ RightAppliesTo integer ,
PRIMARY KEY (id)
-
);
-
-CREATE INDEX ACL1 on ACL(RightName, ObjectType, ObjectId,PrincipalType,PrincipalId);
-
-
--- }}}
-
--- {{{ GroupMembers
-
-
-
---
--- Sequences for table GROUPMEMBERS
---
-
-CREATE SEQUENCE groupmembers_id_seq;
-
+CREATE INDEX ACL1 ON ACL (RightScope, PrincipalId);
+CREATE INDEX ACL2 ON ACL (RightScope, RightAppliesTo, RightName, PrincipalType, PrincipalId);
CREATE TABLE GroupMembers (
- id INTEGER DEFAULT nextval('groupmembers_id_seq'),
- GroupId integer NOT NULL DEFAULT 0,
- MemberId integer NOT NULL DEFAULT 0,
+ id serial NOT NULL ,
+ GroupId integer ,
+ UserId integer ,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX GroupMembers1 ON GroupMembers (GroupId, UserId);
+CREATE TABLE ObjectKeywords (
+ id serial NOT NULL ,
+ Keyword integer NOT NULL ,
+ KeywordSelect integer NOT NULL ,
+ ObjectType varchar(32) NOT NULL ,
+ ObjectId integer NOT NULL ,
PRIMARY KEY (id)
-
);
-
--- }}}
-
--- {{{ GroupMembersCache
-
-
-
---
--- Sequences for table CACHEDGROUPMEMBERS
---
-
-CREATE SEQUENCE cachedgroupmembers_id_seq;
-
-CREATE TABLE CachedGroupMembers (
- id int DEFAULT nextval('cachedgroupmembers_id_seq'),
- GroupId int,
- MemberId int,
- Via int,
- ImmediateParentId int,
- Disabled int2 NOT NULL DEFAULT 0 ,
- PRIMARY KEY (id)
-
+CREATE UNIQUE INDEX ObjectKeywords1 ON ObjectKeywords (ObjectId, ObjectType, KeywordSelect, Keyword);
+CREATE INDEX ObjectKeywords2 ON ObjectKeywords (ObjectId, ObjectType);
+CREATE INDEX ObjectKeywords3 ON ObjectKeywords (Keyword);
+CREATE TABLE Keywords (
+ id serial NOT NULL ,
+ Name varchar(255) NOT NULL ,
+ Description varchar(255) ,
+ Parent integer ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
+ PRIMARY KEY (id)
);
-
-CREATE INDEX CachedGroupMembers2 on CachedGroupMembers (MemberId);
-CREATE INDEX CachedGroupMembers3 on CachedGroupMembers (GroupId);
-CREATE INDEX DisGrouMem on CachedGroupMembers (GroupId,MemberId,Disabled);
-
--- }}}
-
--- {{{ Users
-
-
-
---
--- Sequences for table USERS
---
-
-CREATE SEQUENCE users_id_seq;
-
+CREATE UNIQUE INDEX Keywords1 ON Keywords (Name, Parent);
+CREATE INDEX Keywords2 ON Keywords (Name);
+CREATE INDEX Keywords3 ON Keywords (Parent);
CREATE TABLE Users (
- id INTEGER DEFAULT nextval('users_id_seq'),
- Name varchar(200) NOT NULL ,
- Password varchar(40) NULL ,
- Comments text NULL ,
- Signature text NULL ,
- EmailAddress varchar(120) NULL ,
- FreeformContactInfo text NULL ,
- Organization varchar(200) NULL ,
- RealName varchar(120) NULL ,
- NickName varchar(16) NULL ,
- Lang varchar(16) NULL ,
- EmailEncoding varchar(16) NULL ,
- WebEncoding varchar(16) NULL ,
- ExternalContactInfoId varchar(100) NULL ,
- ContactInfoSystem varchar(30) NULL ,
- ExternalAuthId varchar(100) NULL ,
- AuthSystem varchar(30) NULL ,
- Gecos varchar(16) NULL ,
- HomePhone varchar(30) NULL ,
- WorkPhone varchar(30) NULL ,
- MobilePhone varchar(30) NULL ,
- PagerPhone varchar(30) NULL ,
- Address1 varchar(200) NULL ,
- Address2 varchar(200) NULL ,
- City varchar(100) NULL ,
- State varchar(100) NULL ,
- Zip varchar(16) NULL ,
- Country varchar(50) NULL ,
- Timezone varchar(50) NULL ,
- PGPKey text NULL,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ Name varchar(120) NOT NULL ,
+ Password varchar(40) ,
+ Comments TEXT ,
+ Signature TEXT ,
+ EmailAddress varchar(120) ,
+ FreeformContactInfo TEXT ,
+ Organization varchar(200) ,
+ Privileged integer ,
+ RealName varchar(120) ,
+ Nickname varchar(16) ,
+ Lang varchar(16) ,
+ EmailEncoding varchar(16) ,
+ WebEncoding varchar(16) ,
+ ExternalContactInfoId varchar(100) ,
+ ContactInfoSystem varchar(30) ,
+ ExternalAuthId varchar(100) ,
+ AuthSystem varchar(30) ,
+ Gecos varchar(16) ,
+ HomePhone varchar(30) ,
+ WorkPhone varchar(30) ,
+ MobilePhone varchar(30) ,
+ PagerPhone varchar(30) ,
+ Address1 varchar(200) ,
+ Address2 varchar(200) ,
+ City varchar(100) ,
+ State varchar(100) ,
+ Zip varchar(16) ,
+ Country varchar(50) ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-
);
-
-
-CREATE UNIQUE INDEX Users1 ON Users (Name) ;
-CREATE INDEX Users2 ON Users (Name);
+CREATE UNIQUE INDEX Users1 ON Users (Name);
CREATE INDEX Users3 ON Users (id, EmailAddress);
CREATE INDEX Users4 ON Users (EmailAddress);
-
-
--- }}}
-
--- {{{ Tickets
-
-
-
---
--- Sequences for table TICKETS
---
-
-CREATE SEQUENCE tickets_id_seq;
-
CREATE TABLE Tickets (
- id INTEGER DEFAULT nextval('tickets_id_seq'),
- EffectiveId integer NOT NULL DEFAULT 0 ,
- Queue integer NOT NULL DEFAULT 0 ,
- Type varchar(16) NULL ,
- IssueStatement integer NOT NULL DEFAULT 0 ,
- Resolution integer NOT NULL DEFAULT 0 ,
- Owner integer NOT NULL DEFAULT 0 ,
- Subject varchar(200) NULL DEFAULT '[no subject]' ,
- InitialPriority integer NOT NULL DEFAULT 0 ,
- FinalPriority integer NOT NULL DEFAULT 0 ,
- Priority integer NOT NULL DEFAULT 0 ,
- TimeEstimated integer NOT NULL DEFAULT 0 ,
- TimeWorked integer NOT NULL DEFAULT 0 ,
- Status varchar(10) NULL ,
- TimeLeft integer NOT NULL DEFAULT 0 ,
- Told TIMESTAMP NULL ,
- Starts TIMESTAMP NULL ,
- Started TIMESTAMP NULL ,
- Due TIMESTAMP NULL ,
- Resolved TIMESTAMP NULL ,
-
-
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ EffectiveId integer ,
+ Queue integer ,
+ Type varchar(16) ,
+ IssueStatement integer ,
+ Resolution integer ,
+ Owner integer ,
+ Subject varchar(200) DEFAULT '[no subject]' ,
+ InitialPriority integer ,
+ FinalPriority integer ,
+ Priority integer ,
+ Status varchar(10) ,
+ TimeWorked integer ,
+ TimeLeft integer ,
+ Told timestamp ,
+ Starts timestamp ,
+ Started timestamp ,
+ Due timestamp ,
+ Resolved timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
+ Creator integer ,
+ Created timestamp ,
Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-
);
-
-CREATE INDEX Tickets1 ON Tickets (Queue, Status) ;
-CREATE INDEX Tickets2 ON Tickets (Owner) ;
-CREATE INDEX Tickets3 ON Tickets (EffectiveId) ;
-CREATE INDEX Tickets4 ON Tickets (id, Status) ;
-CREATE INDEX Tickets5 ON Tickets (id, EffectiveId) ;
-
--- }}}
-
--- {{{ ScripActions
-
-
-
---
--- Sequences for table SCRIPACTIONS
---
-
-CREATE SEQUENCE scripactions_id_seq;
-
+CREATE INDEX Tickets1 ON Tickets (Queue, Status);
+CREATE INDEX Tickets2 ON Tickets (Owner);
+CREATE INDEX Tickets3 ON Tickets (EffectiveId);
+CREATE INDEX Tickets4 ON Tickets (id, Status);
+CREATE INDEX Tickets5 ON Tickets (id, EffectiveId);
CREATE TABLE ScripActions (
- id INTEGER DEFAULT nextval('scripactions_id_seq'),
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- ExecModule varchar(60) NULL ,
- Argument varchar(255) NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
+ id serial NOT NULL ,
+ Name varchar(255) ,
+ Description varchar(255) ,
+ ExecModule varchar(60) ,
+ Argument varchar(255) ,
+ Creator integer ,
+ Created timestamp ,
+ LastUpdatedBy integer ,
+ LastUpdated timestamp ,
PRIMARY KEY (id)
-
);
-
--- }}}
-
--- {{{ Templates
-
-
-
---
--- Sequences for table TEMPLATES
---
-
-CREATE SEQUENCE templates_id_seq;
-
CREATE TABLE Templates (
- id INTEGER DEFAULT nextval('templates_id_seq'),
- Queue integer NOT NULL DEFAULT 0 ,
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
- Type varchar(16) NULL ,
- Language varchar(16) NULL ,
- TranslationOf integer NOT NULL DEFAULT 0 ,
- Content text NULL ,
- LastUpdated TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- PRIMARY KEY (id)
-
-);
-
--- }}}
-
--- {{{ TicketCustomFieldValues
-
-
-
---
--- Sequences for table TICKETCUSTOMFIELDVALUES
---
-
-CREATE SEQUENCE ticketcustomfieldvalues_id_s;
-
-CREATE TABLE TicketCustomFieldValues (
- id INTEGER DEFAULT nextval('ticketcustomfieldvalues_id_s'),
- Ticket int NOT NULL ,
- CustomField int NOT NULL ,
- Content varchar(255) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
- PRIMARY KEY (id)
-
-);
-
--- }}}
-
--- {{{ CustomFields
-
-
-
---
--- Sequences for table CUSTOMFIELDS
---
-
-CREATE SEQUENCE customfields_id_seq;
-
-CREATE TABLE CustomFields (
- id INTEGER DEFAULT nextval('customfields_id_seq'),
- Name varchar(200) NULL ,
- Type varchar(200) NULL ,
+ id serial NOT NULL ,
Queue integer NOT NULL DEFAULT 0 ,
- Description varchar(255) NULL ,
- SortOrder integer NOT NULL DEFAULT 0 ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
- Disabled int2 NOT NULL DEFAULT 0 ,
+ Name varchar(40) NOT NULL ,
+ Description varchar(120) ,
+ Type varchar(16) ,
+ Language varchar(16) ,
+ TranslationOf integer ,
+ Content TEXT ,
+ LastUpdated timestamp ,
+ LastUpdatedBy integer ,
+ Creator integer ,
+ Created timestamp ,
PRIMARY KEY (id)
-
-);
-
--- }}}
-
--- {{{ CustomFieldValues
-
-
-
---
--- Sequences for table CUSTOMFIELDVALUES
---
-
-CREATE SEQUENCE customfieldvalues_id_seq;
-
-CREATE TABLE CustomFieldValues (
- id INTEGER DEFAULT nextval('customfieldvalues_id_seq'),
- CustomField int NOT NULL ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- SortOrder integer NOT NULL DEFAULT 0 ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created TIMESTAMP NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated TIMESTAMP NULL ,
- PRIMARY KEY (id)
-
-);
-
--- }}}
-
--- {{{ Sessions
-
--- sessions is used by Apache::Session to keep sessions in the database.
--- We should have a reaper script somewhere.
-
-CREATE TABLE sessions (
- id char(32) NOT NULL,
- a_session bytea,
- LastUpdated TIMESTAMP not null default current_timestamp,
- PRIMARY KEY (id)
-
);
-
--- }}}
-
-
-
-COMMIT;
diff --git a/rt/etc/schema.SQLite b/rt/etc/schema.SQLite
deleted file mode 100644
index b10ff46d1..000000000
--- a/rt/etc/schema.SQLite
+++ /dev/null
@@ -1,390 +0,0 @@
---- {{{ Attachments
-
-CREATE TABLE Attachments (
- id INTEGER PRIMARY KEY ,
- TransactionId INTEGER ,
- Parent integer NULL ,
- MessageId varchar(160) NULL ,
- Subject varchar(255) NULL ,
- Filename varchar(255) NULL ,
- ContentType varchar(80) NULL ,
- ContentEncoding varchar(80) NULL ,
- Content LONGTEXT NULL ,
- Headers LONGTEXT NULL ,
- Creator integer NULL ,
- Created DATETIME NULL
-
-) ;
-
-CREATE INDEX Attachments1 ON Attachments (Parent) ;
-CREATE INDEX Attachments2 ON Attachments (TransactionId) ;
-CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId) ;
---- }}}
-
---- {{{ Queues
-CREATE TABLE Queues (
- id INTEGER PRIMARY KEY ,
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
- CorrespondAddress varchar(120) NULL ,
- CommentAddress varchar(120) NULL ,
- InitialPriority integer NULL ,
- FinalPriority integer NULL ,
- DefaultDueIn integer NULL ,
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL ,
- Disabled int2 NOT NULL DEFAULT 0
-
-) ;
-CREATE UNIQUE INDEX Queues1 ON Queues (Name) ;
-
---- }}}
-
---- {{{ Links
-
-CREATE TABLE Links (
- id INTEGER PRIMARY KEY ,
- Base varchar(240) NULL ,
- Target varchar(240) NULL ,
- Type varchar(20) NOT NULL ,
- LocalTarget integer NULL ,
- LocalBase integer NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL ,
- Creator integer NULL ,
- Created DATETIME NULL
-
-) ;
-CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type) ;
-CREATE INDEX Links4 ON Links(Type,LocalBase);
-
---- }}}
-
---- {{{ Principals
-
-CREATE TABLE Principals (
- id INTEGER PRIMARY KEY,
- PrincipalType VARCHAR(16) not null,
- ObjectId integer,
- Disabled int2 NOT NULL DEFAULT 0
-
-) ;
-
---- }}}
-
---- {{{ Groups
-
-CREATE TABLE Groups (
- id INTEGER ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- Domain varchar(64),
- Type varchar(64),
- Instance integer
-
-) ;
-
-CREATE UNIQUE INDEX Groups1 ON Groups (Name,Domain,Type,Instance) ;
-
---- }}}
-
---- {{{ ScripConditions
-
-CREATE TABLE ScripConditions (
- id INTEGER PRIMARY KEY ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- ExecModule varchar(60) NULL ,
- Argument varchar(255) NULL ,
- ApplicableTransTypes varchar(60) NULL ,
-
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
---- }}}
-
---- {{{ Transactions
-CREATE TABLE Transactions (
- id INTEGER PRIMARY KEY ,
- EffectiveTicket integer NULL ,
- Ticket integer NULL ,
- TimeTaken integer NULL ,
- Type varchar(20) NULL ,
- Field varchar(40) NULL ,
- OldValue varchar(255) NULL ,
- NewValue varchar(255) NULL ,
- Data varchar(255) NULL ,
-
- Creator integer NULL ,
- Created DATETIME NULL
-
-) ;
-CREATE INDEX Transactions1 ON Transactions (Ticket);
-CREATE INDEX Transactions2 ON Transactions (EffectiveTicket);
-
---- }}}
-
---- {{{ Scrips
-
-CREATE TABLE Scrips (
- id INTEGER PRIMARY KEY ,
- Description varchar(255),
- ScripCondition integer NULL ,
- ScripAction integer NULL ,
- ConditionRules text NULL ,
- ActionRules text NULL ,
- CustomIsApplicableCode text NULL ,
- CustomPrepareCode text NULL ,
- CustomCommitCode text NULL ,
- Stage varchar(32) NULL ,
- Queue integer NULL ,
- Template integer NULL ,
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
---- }}}
-
---- {{{ ACL
-CREATE TABLE ACL (
- id INTEGER PRIMARY KEY ,
- PrincipalType varchar(25) NOT NULL,
-
- PrincipalId INTEGER,
- RightName varchar(25) NOT NULL ,
- ObjectType varchar(25) NOT NULL ,
- ObjectId INTEGER default 0,
- DelegatedBy integer NOT NULL default 0,
- DelegatedFrom integer NOT NULL default 0
-
-) ;
-
-
---- }}}
-
---- {{{ GroupMembers
-
-CREATE TABLE GroupMembers (
- id INTEGER PRIMARY KEY ,
- GroupId integer NULL,
- MemberId integer NULL
-
-) ;
-
---- }}}
-
---- {{{ CachedGroupMembers
-
-create table CachedGroupMembers (
- id integer primary key ,
- GroupId int,
- MemberId int,
- Via int,
- ImmediateParentId int,
- Disabled int2 NOT NULL DEFAULT 0 # if this cached group member is a member of this group by way of a disabled
- # group or this group is disabled, this will be set to 1
- # this allows us to not find members of disabled subgroups when listing off
- # group members recursively.
- # Also, this allows us to have the ACL system elide members of disabled groups
-
-
-) ;
-
---- }}}
-
---- {{{ Users
-
-CREATE TABLE Users (
- id INTEGER ,
- Name varchar(200) NOT NULL ,
- Password varchar(40) NULL ,
- Comments blob NULL ,
- Signature blob NULL ,
- EmailAddress varchar(120) NULL ,
- FreeformContactInfo blob NULL ,
- Organization varchar(200) NULL ,
- RealName varchar(120) NULL ,
- NickName varchar(16) NULL ,
- Lang varchar(16) NULL ,
- EmailEncoding varchar(16) NULL ,
- WebEncoding varchar(16) NULL ,
- ExternalContactInfoId varchar(100) NULL ,
- ContactInfoSystem varchar(30) NULL ,
- ExternalAuthId varchar(100) NULL ,
- AuthSystem varchar(30) NULL ,
- Gecos varchar(16) NULL ,
- HomePhone varchar(30) NULL ,
- WorkPhone varchar(30) NULL ,
- MobilePhone varchar(30) NULL ,
- PagerPhone varchar(30) NULL ,
- Address1 varchar(200) NULL ,
- Address2 varchar(200) NULL ,
- City varchar(100) NULL ,
- State varchar(100) NULL ,
- Zip varchar(16) NULL ,
- Country varchar(50) NULL ,
- Timezone char(50) NULL ,
- PGPKey text NULL,
-
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
-
-CREATE UNIQUE INDEX Users1 ON Users (Name) ;
-CREATE INDEX Users2 ON Users (Name);
-CREATE INDEX Users3 ON Users (id, EmailAddress);
-CREATE INDEX Users4 ON Users (EmailAddress);
-
-
---- }}}
-
---- {{{ Tickets
-
-CREATE TABLE Tickets (
- id INTEGER PRIMARY KEY ,
- EffectiveId integer NULL ,
- Queue integer NULL ,
- Type varchar(16) NULL ,
- IssueStatement integer NULL ,
- Resolution integer NULL ,
- Owner integer NULL ,
- Subject varchar(200) NULL DEFAULT '[no subject]' ,
- InitialPriority integer NULL ,
- FinalPriority integer NULL ,
- Priority integer NULL ,
- TimeEstimated integer NULL ,
- TimeWorked integer NULL ,
- Status varchar(10) NULL ,
- TimeLeft integer NULL ,
- Told DATETIME NULL ,
- Starts DATETIME NULL ,
- Started DATETIME NULL ,
- Due DATETIME NULL ,
- Resolved DATETIME NULL ,
-
-
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL ,
- Creator integer NULL ,
- Created DATETIME NULL ,
- Disabled int2 NOT NULL DEFAULT 0
-
-) ;
-
-CREATE INDEX Tickets1 ON Tickets (Queue, Status) ;
-CREATE INDEX Tickets2 ON Tickets (Owner) ;
-CREATE INDEX Tickets3 ON Tickets (EffectiveId) ;
-CREATE INDEX Tickets4 ON Tickets (id, Status) ;
-CREATE INDEX Tickets5 ON Tickets (id, EffectiveId) ;
-
---- }}}
-
---- {{{ ScripActions
-
-CREATE TABLE ScripActions (
- id INTEGER PRIMARY KEY ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- ExecModule varchar(60) NULL ,
- Argument varchar(255) NULL ,
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
---- }}}
-
---- {{{ Templates
-
-CREATE TABLE Templates (
- id INTEGER PRIMARY KEY ,
- Queue integer NOT NULL DEFAULT 0 ,
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
- Type varchar(16) NULL ,
- Language varchar(16) NULL ,
- TranslationOf integer NULL ,
- Content blob NULL ,
- LastUpdated DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- Creator integer NULL ,
- Created DATETIME NULL
-
-) ;
-
---- }}}
-
---- {{{ TicketCustomFieldValues
-
-CREATE TABLE TicketCustomFieldValues (
- id INTEGER PRIMARY KEY ,
- Ticket int NOT NULL ,
- CustomField int NOT NULL ,
- Content varchar(255) NULL ,
-
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
-CREATE INDEX TicketCustomFieldValues1 ON TicketCustomFieldValues (CustomField,Ticket,Content);
-CREATE INDEX TicketCustomFieldValues2 ON TicketCustomFieldValues (CustomField,Ticket);
-
---- }}}
-
---- {{{ CustomFields
-
-CREATE TABLE CustomFields (
- id INTEGER PRIMARY KEY ,
- Name varchar(200) NULL ,
- Type varchar(200) NULL ,
- Queue int NULL ,
- Description varchar(255) NULL ,
- SortOrder integer NULL ,
-
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL ,
- Disabled int2 NOT NULL DEFAULT 0
-
-) ;
-
---- }}}
-
---- {{{ CustomFieldValues
-
-CREATE TABLE CustomFieldValues (
- id INTEGER PRIMARY KEY ,
- CustomField int NOT NULL ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- SortOrder integer NULL ,
-
- Creator integer NULL ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NULL ,
- LastUpdated DATETIME NULL
-
-) ;
-
-CREATE INDEX CustomFieldValues1 ON CustomFieldValues (CustomField);
-
---- }}}
diff --git a/rt/etc/schema.mysql b/rt/etc/schema.mysql
index 46f8ec562..7e715c201 100755
--- a/rt/etc/schema.mysql
+++ b/rt/etc/schema.mysql
@@ -1,9 +1,21 @@
-# {{{ Attachments
-
+CREATE TABLE KeywordSelects (
+ id INTEGER NOT NULL AUTO_INCREMENT,
+ Name varchar(255) NULL ,
+ Keyword integer NULL ,
+ Single integer NULL ,
+ Depth integer NOT NULL DEFAULT 0 ,
+ ObjectType varchar(32) NOT NULL ,
+ ObjectField varchar(32) NULL ,
+ ObjectValue varchar(255) NULL ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
+ PRIMARY KEY (id)
+);
+CREATE INDEX KeywordSelects1 ON KeywordSelects (Keyword);
+CREATE INDEX KeywordSelects2 ON KeywordSelects (ObjectType, ObjectField, ObjectValue);
CREATE TABLE Attachments (
id INTEGER NOT NULL AUTO_INCREMENT,
TransactionId integer NOT NULL ,
- Parent integer NOT NULL DEFAULT 0 ,
+ Parent integer NULL ,
MessageId varchar(160) NULL ,
Subject varchar(255) NULL ,
Filename varchar(255) NULL ,
@@ -11,222 +23,161 @@ CREATE TABLE Attachments (
ContentEncoding varchar(80) NULL ,
Content LONGTEXT NULL ,
Headers LONGTEXT NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX Attachments1 ON Attachments (Parent) ;
-CREATE INDEX Attachments2 ON Attachments (TransactionId) ;
-CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId) ;
-# }}}
-
-# {{{ Queues
+);
+CREATE INDEX Attachments1 ON Attachments (Parent);
+CREATE INDEX Attachments2 ON Attachments (TransactionId);
+CREATE INDEX Attachments3 ON Attachments (Parent, TransactionId);
CREATE TABLE Queues (
id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
+ Name varchar(120) NOT NULL ,
+ Description varchar(120) NULL ,
CorrespondAddress varchar(120) NULL ,
CommentAddress varchar(120) NULL ,
- InitialPriority integer NOT NULL DEFAULT 0 ,
- FinalPriority integer NOT NULL DEFAULT 0 ,
- DefaultDueIn integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
+ InitialPriority integer NULL ,
+ FinalPriority integer NULL ,
+ DefaultDueIn integer NULL ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-CREATE UNIQUE INDEX Queues1 ON Queues (Name) ;
-CREATE INDEX Queues2 ON Queues (Disabled) ;
-
-# }}}
-
-# {{{ Links
-
+);
+CREATE UNIQUE INDEX Queues1 ON Queues (Name);
CREATE TABLE Links (
id INTEGER NOT NULL AUTO_INCREMENT,
Base varchar(240) NULL ,
Target varchar(240) NULL ,
Type varchar(20) NOT NULL ,
- LocalTarget integer NOT NULL DEFAULT 0 ,
- LocalBase integer NOT NULL DEFAULT 0 ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LocalTarget integer NULL ,
+ LocalBase integer NULL ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type) ;
-CREATE INDEX Links2 ON Links (Base, Type) ;
-CREATE INDEX Links3 ON Links (Target, Type) ;
-
-# }}}
-
-# {{{ Principals
-
-CREATE TABLE Principals (
- id INTEGER AUTO_INCREMENT not null,
- PrincipalType VARCHAR(16) not null,
- ObjectId integer, # foreign key to Users or Groups, depending
- Disabled int2 NOT NULL DEFAULT 0 ,
- PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX Principals2 ON Principals (ObjectId);
-
-# }}}
-
-# {{{ Groups
-
+);
+CREATE UNIQUE INDEX Links1 ON Links (Base, Target, Type);
CREATE TABLE Groups (
id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- Domain varchar(64),
- Type varchar(64),
- Instance varchar(64),
+ Name varchar(16) NULL ,
+ Description varchar(64) NULL ,
+ Pseudo integer NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX Groups1 ON Groups (Domain,Instance,Type,id);
-CREATE INDEX Groups2 On Groups (Type, Instance, Domain);
-
-# }}}
-
-# {{{ ScripConditions
-
+);
+CREATE UNIQUE INDEX Groups1 ON Groups (Name);
+CREATE TABLE Watchers (
+ id INTEGER NOT NULL AUTO_INCREMENT,
+ Type varchar(16) NULL ,
+ Scope varchar(16) NULL ,
+ Value integer NULL ,
+ Email varchar(255) NULL ,
+ Quiet integer NULL ,
+ Owner integer NULL ,
+ Creator integer NULL ,
+ Created DATETIME NULL ,
+ LastUpdatedBy integer NULL ,
+ LastUpdated DATETIME NULL ,
+ PRIMARY KEY (id)
+);
+CREATE INDEX Watchers1 ON Watchers (Scope, Value, Type, Owner);
CREATE TABLE ScripConditions (
id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NULL ,
+ Name varchar(255) NULL ,
Description varchar(255) NULL ,
ExecModule varchar(60) NULL ,
Argument varchar(255) NULL ,
ApplicableTransTypes varchar(60) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ Transactions
+);
CREATE TABLE Transactions (
id INTEGER NOT NULL AUTO_INCREMENT,
- EffectiveTicket integer NOT NULL DEFAULT 0 ,
- Ticket integer NOT NULL DEFAULT 0 ,
- TimeTaken integer NOT NULL DEFAULT 0 ,
+ EffectiveTicket integer NULL ,
+ Ticket integer NULL ,
+ TimeTaken integer NULL ,
Type varchar(20) NULL ,
Field varchar(40) NULL ,
OldValue varchar(255) NULL ,
NewValue varchar(255) NULL ,
Data varchar(100) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
+);
CREATE INDEX Transactions1 ON Transactions (Ticket);
CREATE INDEX Transactions2 ON Transactions (EffectiveTicket);
-
-# }}}
-
-# {{{ Scrips
-
CREATE TABLE Scrips (
id INTEGER NOT NULL AUTO_INCREMENT,
- Description varchar(255),
- ScripCondition integer NOT NULL DEFAULT 0 ,
- ScripAction integer NOT NULL DEFAULT 0 ,
- ConditionRules text NULL ,
- ActionRules text NULL ,
- CustomIsApplicableCode text NULL ,
- CustomPrepareCode text NULL ,
- CustomCommitCode text NULL ,
+ ScripCondition integer NULL ,
+ ScripAction integer NULL ,
Stage varchar(32) NULL ,
- Queue integer NOT NULL DEFAULT 0 ,
- Template integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
+ Queue integer NULL ,
+ Template integer NULL ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ ACL
+);
CREATE TABLE ACL (
id INTEGER NOT NULL AUTO_INCREMENT,
- PrincipalType varchar(25) NOT NULL, #"User" "Group", "Owner", "Cc" "AdminCc", "Requestor", "Requestor"
-
- PrincipalId integer NOT NULL , #Foreign key to principals
- RightName varchar(25) NOT NULL ,
- ObjectType varchar(25) NOT NULL ,
- ObjectId integer NOT NULL default 0,
- DelegatedBy integer NOT NULL default 0, #foreign key to principals with a userid
- DelegatedFrom integer NOT NULL default 0, #foreign key to ACL
+ PrincipalId integer NULL ,
+ PrincipalType varchar(25) NULL ,
+ RightName varchar(25) NULL ,
+ RightScope varchar(25) NULL ,
+ RightAppliesTo integer NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX ACL1 on ACL(RightName, ObjectType, ObjectId,PrincipalType,PrincipalId);
-
-# }}}
-
-# {{{ GroupMembers
-
+);
+CREATE INDEX ACL1 ON ACL (RightScope, PrincipalId);
+CREATE INDEX ACL2 ON ACL (RightScope, RightAppliesTo, RightName, PrincipalType, PrincipalId);
CREATE TABLE GroupMembers (
id INTEGER NOT NULL AUTO_INCREMENT,
- GroupId integer NOT NULL DEFAULT 0,
- MemberId integer NOT NULL DEFAULT 0, #Foreign key to Principals
+ GroupId integer NULL ,
+ UserId integer NULL ,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX GroupMembers1 ON GroupMembers (GroupId, UserId);
+CREATE TABLE ObjectKeywords (
+ id INTEGER NOT NULL AUTO_INCREMENT,
+ Keyword integer NOT NULL ,
+ KeywordSelect integer NOT NULL ,
+ ObjectType varchar(32) NOT NULL ,
+ ObjectId integer NOT NULL ,
+ PRIMARY KEY (id)
+);
+CREATE UNIQUE INDEX ObjectKeywords1 ON ObjectKeywords (ObjectId, ObjectType, KeywordSelect, Keyword);
+CREATE INDEX ObjectKeywords2 ON ObjectKeywords (ObjectId, ObjectType);
+CREATE INDEX ObjectKeywords3 ON ObjectKeywords (Keyword);
+CREATE TABLE Keywords (
+ id INTEGER NOT NULL AUTO_INCREMENT,
+ Name varchar(255) NOT NULL ,
+ Description varchar(255) NULL ,
+ Parent integer NULL ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-CREATE UNIQUE INDEX GroupMembers1 on GroupMembers (GroupId, MemberId);
-
-
-# }}}
-
-# {{{ GroupMembersCache
-
-create table CachedGroupMembers (
- id int auto_increment,
- GroupId int, # foreign key to Principals
- MemberId int, # foreign key to Principals
- Via int, #foreign key to CachedGroupMembers. (may point to $self->id)
- ImmediateParentId int, #foreign key to prinicpals.
- # this points to the group that the member is
- # a member of, for ease of deletes.
- Disabled int2 NOT NULL DEFAULT 0 , # if this cached group member is a member of this group by way of a disabled
- # group or this group is disabled, this will be set to 1
- # this allows us to not find members of disabled subgroups when listing off
- # group members recursively.
- # Also, this allows us to have the ACL system elide members of disabled groups
- PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX DisGrouMem on CachedGroupMembers (GroupId,MemberId,Disabled);
-CREATE INDEX GrouMem on CachedGroupMembers (GroupId,MemberId);
-
-# }}}
-
-# {{{ Users
-
+);
+CREATE UNIQUE INDEX Keywords1 ON Keywords (Name, Parent);
+CREATE INDEX Keywords2 ON Keywords (Name);
+CREATE INDEX Keywords3 ON Keywords (Parent);
CREATE TABLE Users (
id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NOT NULL ,
+ Name varchar(120) NOT NULL ,
Password varchar(40) NULL ,
Comments blob NULL ,
Signature blob NULL ,
EmailAddress varchar(120) NULL ,
FreeformContactInfo blob NULL ,
Organization varchar(200) NULL ,
+ Privileged integer NULL ,
RealName varchar(120) NULL ,
- NickName varchar(16) NULL ,
+ Nickname varchar(16) NULL ,
Lang varchar(16) NULL ,
EmailEncoding varchar(16) NULL ,
WebEncoding varchar(16) NULL ,
@@ -245,172 +196,72 @@ CREATE TABLE Users (
State varchar(100) NULL ,
Zip varchar(16) NULL ,
Country varchar(50) NULL ,
- Timezone varchar(50) NULL ,
- PGPKey text NULL,
-
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
+ Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-
-CREATE UNIQUE INDEX Users1 ON Users (Name) ;
-CREATE INDEX Users2 ON Users (Name);
+);
+CREATE UNIQUE INDEX Users1 ON Users (Name);
CREATE INDEX Users3 ON Users (id, EmailAddress);
CREATE INDEX Users4 ON Users (EmailAddress);
-
-
-# }}}
-
-# {{{ Tickets
-
CREATE TABLE Tickets (
id INTEGER NOT NULL AUTO_INCREMENT,
- EffectiveId integer NOT NULL DEFAULT 0 ,
- Queue integer NOT NULL DEFAULT 0 ,
+ EffectiveId integer NULL ,
+ Queue integer NULL ,
Type varchar(16) NULL ,
- IssueStatement integer NOT NULL DEFAULT 0 ,
- Resolution integer NOT NULL DEFAULT 0 ,
- Owner integer NOT NULL DEFAULT 0 ,
+ IssueStatement integer NULL ,
+ Resolution integer NULL ,
+ Owner integer NULL ,
Subject varchar(200) NULL DEFAULT '[no subject]' ,
- InitialPriority integer NOT NULL DEFAULT 0 ,
- FinalPriority integer NOT NULL DEFAULT 0 ,
- Priority integer NOT NULL DEFAULT 0 ,
- TimeEstimated integer NOT NULL DEFAULT 0 ,
- TimeWorked integer NOT NULL DEFAULT 0 ,
+ InitialPriority integer NULL ,
+ FinalPriority integer NULL ,
+ Priority integer NULL ,
Status varchar(10) NULL ,
- TimeLeft integer NOT NULL DEFAULT 0 ,
+ TimeWorked integer NULL ,
+ TimeLeft integer NULL ,
Told DATETIME NULL ,
Starts DATETIME NULL ,
Started DATETIME NULL ,
Due DATETIME NULL ,
Resolved DATETIME NULL ,
-
-
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
Disabled int2 NOT NULL DEFAULT 0 ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX Tickets1 ON Tickets (Queue, Status) ;
-CREATE INDEX Tickets2 ON Tickets (Owner) ;
-CREATE INDEX Tickets3 ON Tickets (EffectiveId) ;
-CREATE INDEX Tickets4 ON Tickets (id, Status) ;
-CREATE INDEX Tickets5 ON Tickets (id, EffectiveId) ;
-CREATE INDEX Tickets6 ON Tickets (EffectiveId, Type) ;
-
-# }}}
-
-# {{{ ScripActions
-
+);
+CREATE INDEX Tickets1 ON Tickets (Queue, Status);
+CREATE INDEX Tickets2 ON Tickets (Owner);
+CREATE INDEX Tickets3 ON Tickets (EffectiveId);
+CREATE INDEX Tickets4 ON Tickets (id, Status);
+CREATE INDEX Tickets5 ON Tickets (id, EffectiveId);
CREATE TABLE ScripActions (
id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NULL ,
+ Name varchar(255) NULL ,
Description varchar(255) NULL ,
ExecModule varchar(60) NULL ,
Argument varchar(255) NULL ,
- Creator integer NOT NULL DEFAULT 0 ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
LastUpdated DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ Templates
-
+);
CREATE TABLE Templates (
id INTEGER NOT NULL AUTO_INCREMENT,
Queue integer NOT NULL DEFAULT 0 ,
- Name varchar(200) NOT NULL ,
- Description varchar(255) NULL ,
+ Name varchar(40) NOT NULL ,
+ Description varchar(120) NULL ,
Type varchar(16) NULL ,
Language varchar(16) NULL ,
- TranslationOf integer NOT NULL DEFAULT 0 ,
+ TranslationOf integer NULL ,
Content blob NULL ,
LastUpdated DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- Creator integer NOT NULL DEFAULT 0 ,
- Created DATETIME NULL ,
- PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ TicketCustomFieldValues
-
-CREATE TABLE TicketCustomFieldValues (
- id INTEGER NOT NULL AUTO_INCREMENT,
- Ticket int NOT NULL ,
- CustomField int NOT NULL ,
- Content varchar(255) NULL ,
-
- Creator integer NOT NULL DEFAULT 0 ,
+ LastUpdatedBy integer NULL ,
+ Creator integer NULL ,
Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated DATETIME NULL ,
- PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ CustomFields
-
-CREATE TABLE CustomFields (
- id INTEGER NOT NULL AUTO_INCREMENT,
- Name varchar(200) NULL ,
- Type varchar(200) NULL ,
- Queue integer NOT NULL DEFAULT 0 ,
- Description varchar(255) NULL ,
- SortOrder integer NOT NULL DEFAULT 0 ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated DATETIME NULL ,
- Disabled int2 NOT NULL DEFAULT 0 ,
- PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-CREATE INDEX CustomFields1 on CustomFields (Disabled, Queue);
-
-
-# }}}
-
-# {{{ CustomFieldValues
-
-CREATE TABLE CustomFieldValues (
- id INTEGER NOT NULL AUTO_INCREMENT,
- CustomField int NOT NULL ,
- Name varchar(200) NULL ,
- Description varchar(255) NULL ,
- SortOrder integer NOT NULL DEFAULT 0 ,
-
- Creator integer NOT NULL DEFAULT 0 ,
- Created DATETIME NULL ,
- LastUpdatedBy integer NOT NULL DEFAULT 0 ,
- LastUpdated DATETIME NULL ,
PRIMARY KEY (id)
-) TYPE=InnoDB;
-
-# }}}
-
-# {{{ Sessions
-
-# sessions is used by Apache::Session to keep sessions in the database.
-# We should have a reaper script somewhere.
-
-CREATE TABLE sessions (
- id char(32) NOT NULL,
- a_session LONGTEXT,
- LastUpdated TIMESTAMP,
- PRIMARY KEY (id)
);
-
-# }}}
diff --git a/rt/etc/schema.pm b/rt/etc/schema.pm
new file mode 100644
index 000000000..44e143ecd
--- /dev/null
+++ b/rt/etc/schema.pm
@@ -0,0 +1,349 @@
+# column, type, nullability, length, default, database-local
+
+my $gratuitous = {
+
+'Groups' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', 'NULL', '16', '', '',
+ 'Description', 'varchar', 'NULL', '64', '', '',
+ 'Pseudo', 'integer', '', '', '0', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ['Name'] ],
+ 'index' => [ ],
+},
+
+'ACL' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'PrincipalId', 'integer', 'NULL', '', '', '',
+ 'PrincipalType', 'varchar', 'NULL', '25', '', '',
+ 'RightName', 'varchar', 'NULL', '25', '', '',
+ 'RightScope', 'varchar', 'NULL', '25', '', '',
+ 'RightAppliesTo', 'integer', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ['RightScope', 'PrincipalId'],
+ ['RightScope','RightAppliesTo','RightName','PrincipalType','PrincipalId'] ],
+},
+
+'Watchers' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Type', 'varchar', 'NULL', '16', '', '',
+ 'Scope', 'varchar', 'NULL', '16', '', '',
+ 'Value', 'integer', 'NULL', '', '', '',
+ 'Email', 'varchar', 'NULL', '255', '', '',
+ 'Quiet', 'integer', 'NULL', '', '', '',
+ 'Owner', 'integer', 'NULL', '', '', '',
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ['Scope','Value','Type','Owner'] ],
+},
+
+'Links' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Base', 'varchar', 'NULL', '240', '', '',
+ 'Target', 'varchar', 'NULL', '240', '', '',
+ 'Type', 'varchar', '', '20', '', '',
+ 'LocalTarget', 'integer', 'NULL', '', '', '',
+ 'LocalBase', 'integer', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ['Base', 'Target', 'Type'] ],
+ 'index' => [ ],
+},
+
+'Users' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', '', '120', '', '',
+ 'Password', 'varchar', 'NULL', '40', '', '',
+ 'Comments', 'blob', 'NULL', '', '', '',
+ 'Signature', 'blob', 'NULL', '', '', '',
+ 'EmailAddress', 'varchar', 'NULL', '120', '', '',
+ 'FreeformContactInfo', 'blob', 'NULL', '', '', '',
+ 'Organization', 'varchar', 'NULL', '200', '', '',
+ 'Privileged', 'integer', 'NULL', '', '', '',
+ 'RealName', 'varchar', 'NULL', '120', '', '',
+ 'Nickname', 'varchar', 'NULL', '16', '', '',
+ 'Lang', 'varchar', 'NULL', '16', '', '',
+ 'EmailEncoding', 'varchar', 'NULL', '16', '', '',
+ 'WebEncoding', 'varchar', 'NULL', '16', '', '',
+ 'ExternalContactInfoId', 'varchar', 'NULL', '100', '', '',
+ 'ContactInfoSystem', 'varchar', 'NULL', '30', '', '',
+ 'ExternalAuthId', 'varchar', 'NULL', '100', '', '',
+ 'AuthSystem', 'varchar', 'NULL', '30', '', '',
+ 'Gecos', 'varchar', 'NULL', '16', '', '',
+ 'HomePhone', 'varchar', 'NULL', '30', '', '',
+ 'WorkPhone', 'varchar', 'NULL', '30', '', '',
+ 'MobilePhone', 'varchar', 'NULL', '30', '', '',
+ 'PagerPhone', 'varchar', 'NULL', '30', '', '',
+ 'Address1', 'varchar', 'NULL', '200', '', '',
+ 'Address2', 'varchar', 'NULL', '200', '', '',
+ 'City', 'varchar', 'NULL', '100', '', '',
+ 'State', 'varchar', 'NULL', '100', '', '',
+ 'Zip', 'varchar', 'NULL', '16', '', '',
+ 'Country', 'varchar', 'NULL', '50', '', '',
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ 'Disabled', 'int2', '','','0','',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ['Name'] ],
+ 'index' => [ ['Name'],
+ ['id', 'EmailAddress'],
+ ['EmailAddress'] ],
+},
+
+'Tickets' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'EffectiveId', 'integer', 'NULL', '', '', '',
+ 'Queue', 'integer', 'NULL', '', '', '',
+ 'Type', 'varchar', 'NULL', '16', '', '',
+ 'IssueStatement', 'integer', 'NULL', '', '', '',
+ 'Resolution', 'integer', 'NULL', '', '', '',
+ 'Owner', 'integer', 'NULL', '', '', '',
+ 'Subject', 'varchar', 'NULL', '200', '[no subject]', '',
+ 'InitialPriority', 'integer', 'NULL', '', '', '',
+ 'FinalPriority', 'integer', 'NULL', '', '', '',
+ 'Priority', 'integer', 'NULL', '', '', '',
+ 'Status', 'varchar', 'NULL', '10', '', '',
+ 'TimeWorked', 'integer', 'NULL', '', '', '',
+ 'TimeLeft', 'integer', 'NULL', '', '', '',
+ 'Told', 'timestamp', 'NULL', '', '', '',
+ 'Starts', 'timestamp', 'NULL', '', '', '',
+ 'Started', 'timestamp', 'NULL', '', '', '',
+ 'Due', 'timestamp', 'NULL', '', '', '',
+ 'Resolved', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'Disabled', 'int2', '','','0','',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ [] ],
+ 'index' => [ ['Queue', 'Status'],
+ ['Owner'],
+ ['EffectiveId'],
+ ['id', 'Status'],
+ ['id', 'EffectiveId'] ],
+},
+
+'GroupMembers' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'GroupId', 'integer', 'NULL', '', '', '', #foreign key, Groups::id
+ 'UserId', 'integer', 'NULL', '', '', '', #foreign key, Users::id
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ['GroupId', 'UserId'] ],
+ 'index' => [ ],
+},
+
+'Queues' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', '', '120', '', '', #Textual 'name' for this queue
+ 'Description', 'varchar', 'NULL', '120', '', '', #Textual descr. of this
+ #queue
+ 'CorrespondAddress', 'varchar', 'NULL', '120', '', '',
+ 'CommentAddress', 'varchar', 'NULL', '120', '', '',
+ 'InitialPriority', 'integer', 'NULL', '', '', '',
+ 'FinalPriority', 'integer', 'NULL', '', '', '',
+ 'DefaultDueIn', 'integer', 'NULL', '', '', '',
+
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ 'Disabled', 'int2', '','','0','',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ['Name'] ],
+ 'index' => [ ],
+},
+
+'Transactions' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'EffectiveTicket', 'integer', 'NULL', '', '', '',
+ 'Ticket', 'integer', 'NULL', '', '', '', #Foreign key Ticket::id
+ 'TimeTaken', 'integer', 'NULL', '', '', '', #Time spent on this trans in min
+ 'Type', 'varchar', 'NULL', '20', '', '',
+ 'Field', 'varchar', 'NULL', '40', '', '', #If it's a "Set" transaction, what
+ #field was set.
+ 'OldValue', 'varchar', 'NULL', '255', '', '',
+ 'NewValue', 'varchar', 'NULL', '255', '', '',
+ 'Data', 'varchar', 'NULL', '100', '', '',
+
+
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ['Ticket'], ['EffectiveTicket'] ],
+},
+
+'ScripActions' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', 'NULL', '255', '', '', # Alias
+ 'Description', 'varchar', 'NULL', '255', '', '', #Textual description
+ 'ExecModule', 'varchar', 'NULL', '60', '', '', #This calles RT::Action::___
+ 'Argument', 'varchar', 'NULL', '255', '', '', #We can pass a single argument
+ #to the scrip. sometimes, it's who to send mail to.
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ],
+},
+
+'ScripConditions' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', 'NULL', '255', '', '', # Alias
+ 'Description', 'varchar', 'NULL', '255', '', '', #Textual description
+ 'ExecModule', 'varchar', 'NULL', '60', '', '', #This calles RT::Condition::
+ 'Argument', 'varchar', 'NULL', '255', '', '', #We can pass a single argument
+ #to the scrip. sometimes, it's who to send mail to.
+ 'ApplicableTransTypes', 'varchar', 'NULL', '60', '', '',#Transaction types this scrip
+ # acts on. comma or / delimited is just great.
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ],
+},
+'Scrips' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'ScripCondition', 'integer', 'NULL', '', '', '', #Foreign key ScripConditions::id
+ 'ScripAction', 'integer', 'NULL', '', '', '', #Foreign key ScripActions::id
+ 'Stage', 'varchar', 'NULL', '32','','', #What stage does this scrip
+ #Happen in. for now, everything is 'TransactionCreate',
+ 'Queue', 'integer', 'NULL', '', '', '', #Foreign key Queues::id
+ 'Template', 'integer', 'NULL', '', '', '', #Foreign key Templates::id
+
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ],
+},
+
+'Attachments' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'TransactionId', 'integer', '', '', '', '', #Foreign key Transactions::Id
+ 'Parent', 'integer', 'NULL', '', '', '', # Attachments::Id
+ 'MessageId', 'varchar', 'NULL', '160', '', '', #RFC822 messageid, if any
+ 'Subject', 'varchar', 'NULL', '255', '', '',
+ 'Filename', 'varchar', 'NULL', '255', '', '',
+ 'ContentType', 'varchar', 'NULL', '80', '', '',
+ 'ContentEncoding', 'varchar', 'NULL', '80', '', '',
+ 'Content', 'long varbinary', 'NULL', '', '', '',
+ 'Headers', 'long varbinary', 'NULL', '', '', '',
+
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ ],
+ 'index' => [ ['Parent'], ['TransactionId'], ['Parent', 'TransactionId'] ],
+},
+
+'Templates' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Queue', 'integer', 'NOT NULL', '', '0', '',
+ 'Name', 'varchar', '', '40', '', '',
+ 'Description', 'varchar', 'NULL', '120', '', '',
+ 'Type', 'varchar', 'NULL', '16', '','',
+ 'Language', 'varchar', 'NULL', '16', '', '',
+ 'TranslationOf', 'integer', 'NULL', '', '', '',
+ 'Content', 'blob', 'NULL', '', '', '',
+ 'LastUpdated', 'timestamp', 'NULL', '', '', '',
+ 'LastUpdatedBy', 'integer', 'NULL', '', '', '',
+ 'Creator', 'integer', 'NULL', '', '', '',
+ 'Created', 'timestamp', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ [''] ],
+ 'index' => [ ],
+},
+
+'Keywords' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name', 'varchar', 'NOT NULL', '255', '', '',
+ 'Description', 'varchar', 'NULL', '255', '', '',
+ 'Parent', 'integer', 'NULL', '', '', '',
+ 'Disabled', 'int2', '','','0','',
+],
+ 'primary_key' => 'id',
+ 'unique' => [ [ 'Name', 'Parent' ] ],
+ 'index' => [ [ 'Name', ], [ 'Parent' ] ],
+},
+
+'ObjectKeywords' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Keyword', 'integer', 'NOT NULL', '', '', '',
+ 'KeywordSelect', 'integer', 'NOT NULL', '', '', '',
+ 'ObjectType', 'varchar', 'NOT NULL', '32', '', '',
+ 'ObjectId', 'integer', 'NOT NULL', '', '', '',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ [ 'ObjectId', 'ObjectType','KeywordSelect', 'Keyword' ] ],
+ 'index' => [ [ 'ObjectId', 'ObjectType' ] , ['Keyword'] ],
+
+},
+
+'KeywordSelects' => {
+ 'columns' => [
+ 'id', 'serial', '', '', '', '',
+ 'Name','varchar','NULL','255','','',
+ 'Keyword', 'integer', 'NULL', '', '', '',
+ 'Single', 'integer', 'NULL', '', '', '',
+ 'Depth', 'integer', 'NOT NULL', '', 0, '',
+ 'ObjectType', 'varchar', 'NOT NULL', '32', '', '',
+ 'ObjectField', 'varchar', 'NULL', '32', '', '',
+ 'ObjectValue', 'varchar', 'NULL', '255', '', '',
+ 'Disabled', 'int2', '','','0','',
+ ],
+ 'primary_key' => 'id',
+ 'unique' => [ [ ] ],
+ 'index' => [ [ 'Keyword' ], [ 'ObjectType', 'ObjectField', 'ObjectValue'] ],
+},
+
+};
diff --git a/rt/etc/upgrade/2.1.71 b/rt/etc/upgrade/2.1.71
deleted file mode 100644
index cb89a3ac3..000000000
--- a/rt/etc/upgrade/2.1.71
+++ /dev/null
@@ -1,211 +0,0 @@
-@Queues = ( {
- Name => '___Approvals',
- Description => 'A system-internal queue for the approvals system',
- Disabled => 2,
- }
-);
-
-
-
-
-
-# {{{ Templates
-@Templates = (
- {
- Queue => '___Approvals',
- Name => "New Pending Approval", # loc
- Description => "Notify Owners and AdminCcs of new items pending their approval", # loc
- Content => 'Subject: New Pending Approval: {$Ticket->Subject}
-
-Greetings,
-
-There is a new item pending your approval: "{$Ticket->Subject()}",
-a summary of which appears below.
-
-Please visit {$RT::WebURL}Approvals/Display.html?id={$Ticket->id}
-to approve or reject this ticket, or {$RT::WebURL}Approvals/ to
-batch-process all your pending approvals.
-
--------------------------------------------------------------------------
-{$Transaction->Content()}
-'
- },
-);
-
-# }}}
-
-1;
-
-@ScripActions = (
- { Name => 'Open Tickets',
- Description => 'Open tickets on correspondence',
- ExecModule => 'AutoOpen' },
-
-);
-
- @Scrips = (
- { ScripCondition => 'On Correspond',
- ScripAction => 'Open Tickets',
- Template => 'Blank',
- Queue => '0'
- },
- { ScripCondition => 'On Create',
- ScripAction => 'AutoReply To Requestors',
- Template => 'AutoReply' },
- { ScripCondition => 'On Create',
- ScripAction => 'Notify AdminCcs',
- Template => 'Transaction' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify AdminCcs',
- Template => 'Admin Correspondence' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify Requestors And Ccs',
- Template => 'Correspondence' },
- { ScripCondition => 'On Correspond',
- ScripAction => 'Notify Other Recipients',
- Template => 'Correspondence' },
- { ScripCondition => 'On Comment',
- ScripAction => 'Notify AdminCcs As Comment',
- Template => 'Admin Comment' },
- { ScripCondition => 'On Comment',
- ScripAction => 'Notify Other Recipients As Comment',
- Template => 'Correspondence' },
- { ScripCondition => 'On Resolve',
- ScripAction => 'Notify Requestors',
- Template => 'Resolved' },
-
-
- {
- Description => "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Create',
- ScripAction => 'Notify AdminCcs',
- Template => 'New Pending Approval'
- },
- {
- Description => "If an approval is rejected, reject the original and delete pending approvals", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Status Change',
- ScripAction => 'User Defined',
- CustomCommitCode => q[
-# ------------------------------------------------------------------- #
-return(1) unless ( lc($self->TransactionObj->NewValue) eq "rejected" or
- lc($self->TransactionObj->NewValue) eq "deleted" );
-
-my $links = $self->TicketObj->DependedOnBy;
-foreach my $link (@{ $links->ItemsArrayRef }) {
- my $obj = $link->BaseObj;
- if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
- if ($obj->Type eq 'ticket') {
- $obj->Correspond(
- Content => $self->loc("Your request was rejected."),
- );
- $obj->SetStatus(
- Status => 'rejected',
- Force => 1,
- );
- }
- else {
- $obj->SetStatus(
- Status => 'deleted',
- Force => 1,
- );
- }
- }
-}
-
-$links = $self->TicketObj->DependsOn;
-foreach my $link (@{ $links->ItemsArrayRef }) {
- my $obj = $link->TargetObj;
- if ($obj->QueueObj->IsActiveStatus($obj->Status)) {
- $obj->SetStatus(
- Status => 'deleted',
- Force => 1,
- );
- }
-}
-
-return 1;
-# ------------------------------------------------------------------- #
- ],
- CustomPrepareCode => '1',
- Template => 'Admin Comment',
- },
- {
- Description => "When a ticket has been approved by any approver, add correspondence to the original ticket", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Resolve',
- ScripAction => 'User Defined',
- CustomPrepareCode => 'return(1);',
- CustomCommitCode => q[
-# ------------------------------------------------------------------- #
-return(1) unless ($self->TicketObj->Type eq 'approval');
-
-foreach my $obj ($self->TicketObj->AllDependedOnBy( Type => 'ticket' )) {
- $obj->Correspond(
- Content => $self->loc( "Your request has been approved by [_1]. Other approvals may still be pending.", # loc
- $self->TransactionObj->CreatorObj->Name,
- ) . "\n" . $self->loc( "Approver's notes: [_1]", # loc
- $self->TicketObj->Transactions->Last->Content,
- ),
- _reopen => 0,
- );
-}
-
-return 1;
-# ------------------------------------------------------------------- #
- ],
- Template => 'Admin Comment'
- },
- {
- Description => "When a ticket has been approved by all approvers, add correspondence to the original ticket", # loc
- Queue => '___Approvals',
- ScripCondition => 'On Resolve',
- ScripAction => 'User Defined',
- CustomPrepareCode => 'return(1);',
- CustomCommitCode => q[
-# ------------------------------------------------------------------- #
-# Find all the tickets that depend on this (that this is approving)
-
-my $Ticket = $self->TicketObj;
-my @TOP = $Ticket->AllDependedOnBy( Type => 'ticket' );
-my $links = $Ticket->DependedOnBy;
-
-while (my $link = $links->Next) {
- my $obj = $link->BaseObj;
- next if ($obj->HasUnresolvedDependencies( Type => 'approval' ));
-
- if ($obj->Type eq 'ticket') {
- $obj->Correspond(
- Content => $self->loc("Your request has been approved."),
- _reopen => 0,
- );
- }
- elsif ($obj->Type eq 'code') {
- my $code = $obj->Transactions->First->Content;
- my $rv;
-
- foreach my $TOP (@TOP) {
- local $@;
- $rv++ if eval $code;
- $RT::Logger->error("Cannot eval code: $@") if $@;
- }
-
- if ($rv or !@TOP) {
- $obj->SetStatus( Status => 'resolved', Force => 1,);
- }
- else {
- $obj->SetStatus( Status => 'rejected', Force => 1,);
- }
- }
-}
-
-return 1;
-# ------------------------------------------------------------------- #
- ],
- Template => 'Admin Comment',
- },
-);
-
-# }}}
-