RT 5.0.6 Documentation
RT::Record
- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
- _PrimaryKeys
- Id
- Delete
- RecordType
- Attributes
- AddAttribute { Name, Description, Content }
- SetAttribute { Name, Description, Content }
- DeleteAttribute NAME
- FirstAttribute NAME
- Create PARAMHASH
- LoadByCols
- _SetLastUpdated
- CreatorObj
- LastUpdatedByObj
- URI
- ValidateName NAME
- SQLType attribute
- _ClassAccessible
- _Accessible COLUMN ATTRIBUTE
- _EncodeLOB BODY MIME_TYPE FILENAME
- _DecodeLOB ContentType, ContentEncoding, Content
- Update ARGSHASH
- Members
- MemberOf
- RefersTo
- ReferredToBy
- DependedOnBy
- HasUnresolvedDependencies
- UnresolvedDependencies
- AllDependedOnBy
- AllDependsOn
- DependsOn
- Links DIRECTION [TYPE]
- FormatType
- FormatLink
- _AddLink
- _DeleteLink
- LockForUpdate
- _NewTransaction PARAMHASH
- Transactions
- SortedTransactions
- Attachments
- TextAttachments
- CustomFieldLookupType
- AddCustomFieldValue { Field => FIELD, Value => VALUE }
- AddCustomFieldDefaultValues
- CustomFieldValueIsEmpty { Field => FIELD, Value => VALUE }
- DeleteCustomFieldValue { Field => FIELD, Value => VALUE }
- FirstCustomFieldValue FIELD
- CustomFieldValuesAsString FIELD
- CustomFieldValues FIELD
- LoadCustomFieldByIdentifier IDENTIFER
- LoadByCustomFieldValue
- HasRight
- ColumnMapClassName
- CustomDateRange name, spec
- CustomDateRanges
- CustomDateRangeFields
- UID
- _AsInsertQuery
- Dependencies
NAME
RT::Record - Base class for RT record objects
SYNOPSIS
DESCRIPTION
METHODS
_PrimaryKeys
The primary keys for RT classes is 'id'
Id
Override "Id" in DBIx::SearchBuilder to avoid a few lookups RT doesn't do on a very common codepath
id
is an alias to Id
and is the preferred way to call this method.
Delete
Delete this record object from the database.
RecordType
Returns a string which is this record's type. It's not localized and by default last part (everything after last ::) of class name is returned.
Attributes
Return this object's attributes as an RT::Attributes object
AddAttribute { Name, Description, Content }
Adds a new attribute for this object.
SetAttribute { Name, Description, Content }
Like AddAttribute, but replaces all existing attributes with the same Name.
DeleteAttribute NAME
Deletes all attributes with the matching name for this object.
FirstAttribute NAME
Returns the first attribute with the matching name for this object (as an RT::Attribute object), or undef
if no such attributes exist. If there is more than one attribute with the matching name on the object, the first value that was set is returned.
Create PARAMHASH
Takes a PARAMHASH of Column -> Value pairs. If any Column has a Validate$PARAMNAME subroutine defined and the value provided doesn't pass validation, this routine returns an error.
If this object's table has any of the following attributes defined as 'Auto', this routine will automatically fill in their values.
- Created
- Creator
- LastUpdated
- LastUpdatedBy
LoadByCols
Override DBIx::SearchBuilder::LoadByCols to do case-insensitive loads if the DB is case sensitive
_SetLastUpdated
This routine updates the LastUpdated and LastUpdatedBy columns of the row in question It takes no options. Arguably, this is a bug
CreatorObj
Returns an RT::User object with the RT account of the creator of this row
LastUpdatedByObj
Returns an RT::User object of the last user to touch this object
URI
Returns this record's URI
ValidateName NAME
Validate the name of the record we're creating. Mostly, just make sure it's not a numeric ID, which is invalid for Name
SQLType attribute
return the SQL type for the attribute 'attribute' as stored in _ClassAccessible
_ClassAccessible
Overrides the "core" _ClassAccessible using $_TABLE_ATTR. Behaves identical to the version in DBIx::SearchBuilder::Record
_Accessible COLUMN ATTRIBUTE
returns the value of ATTRIBUTE for COLUMN
_EncodeLOB BODY MIME_TYPE FILENAME
Takes a potentially large attachment. Returns (ContentEncoding, EncodedBody, MimeType, Filename, NoteArgs) based on system configuration and selected database. Returns a custom (short) text/plain message if DropLongAttachments causes an attachment to not be stored.
Encodes your data as base64 or Quoted-Printable as needed based on your Databases's restrictions and the UTF-8ness of the data being passed in. Since we are storing in columns marked UTF8, we must ensure that binary data is encoded on databases which are strict.
This function expects to receive an octet string in order to properly evaluate and encode it. It will return an octet string.
NoteArgs is currently used to indicate caller that the message is too long and is truncated or dropped. It's a hashref which is expected to be passed to "_NewTransaction" in RT::Record.
_DecodeLOB ContentType
, ContentEncoding
, Content
This function reverses the effects of "_EncodeLOB", by unpacking the data, provided as bytes (not characters!), from the database. This data may also be Base64 or Quoted-Printable encoded, as given by Content-Encoding
. This encoding layer exists because the underlying database column is "text", which rejects non-UTF-8 byte sequences.
Alternatively, if the data lives in external storage, it will be read (or downloaded) and returned.
This function differs in one important way from being the inverse of "_EncodeLOB": for textual data (as judged via "IsTextualContentType" in RT::I18N applied to the given ContentType
), _DecodeLOB
returns character strings, not bytes. The character set used in decoding is taken from the ContentType
, or UTF-8 if not provided; however, for all textual content inserted by current code, the character set used for storage is always UTF-8.
This decoding step is done using Encode's PERLQQ filter, which replaces invalid byte sequences with \x{HH}
. This mirrors how data from query parameters are parsed in "DecodeARGS" in RT::Interface::Web. Since RT is now strict about the bytes it inserts, substitution characters should only be needed for data inserted by older versions of RT, or for ContentType
s which are now believed to be textual, but were not considered so on insertion (and thus not transcoded).
Update ARGSHASH
Updates fields on an object for you using the proper Set methods, skipping unchanged values.
ARGSRef => a hashref of attributes => value for the update
AttributesRef => an arrayref of keys in ARGSRef that should be updated
AttributePrefix => a prefix that should be added to the attributes in AttributesRef
when looking up values in ARGSRef
Bare attributes are tried before prefixed attributes
Returns a list of localized results of the update
"Ticket" # loc
"User" # loc
"Group" # loc
"Queue" # loc
"[_1] could not be set to [_2].", # loc
"That is already the current value", # loc
"No value sent to _Set!", # loc
"Illegal value for [_1]", # loc
"The new value has been set.", # loc
"No column specified", # loc
"Immutable field", # loc
"Nonexistent field?", # loc
"Invalid data", # loc
"Couldn't find row", # loc
"Missing a primary key?: [_1]", # loc
"Found Object", # loc
Members
This returns an RT::Links object which references all the tickets
which are 'MembersOf' this ticket
MemberOf
This returns an RT::Links object which references all the tickets that this
ticket is a 'MemberOf'
RefersTo
This returns an RT::Links object which shows all references for which this ticket is a base
ReferredToBy
This returns an RT::Links object which shows all references for which this ticket is a target
DependedOnBy
This returns an RT::Links object which references all the tickets that depend on this one
HasUnresolvedDependencies
Takes a paramhash of Type (default to '__any'). Returns the number of unresolved dependencies, if $self->UnresolvedDependencies returns an object with one or more members of that type. Returns false otherwise.
UnresolvedDependencies
Returns an RT::Tickets object of tickets which this ticket depends on and which have a status of new, open or stalled. (That list comes from RT::Queue->ActiveStatusArray
AllDependedOnBy
Returns an array of RT::Ticket objects which (directly or indirectly) depends on this ticket; takes an optional 'Type' argument in the param hash, which will limit returned tickets to that type, as well as cause tickets with that type to serve as 'leaf' nodes that stops the recursive dependency search.
AllDependsOn
Returns an array of RT::Ticket objects which this ticket (directly or indirectly) depends on; takes an optional 'Type' argument in the param hash, which will limit returned tickets to that type, as well as cause tickets with that type to serve as 'leaf' nodes that stops the recursive dependency search.
DependsOn
This returns an RT::Links object which references all the tickets that this ticket depends on
Links DIRECTION [TYPE]
Return links (RT::Links) to/from this object.
DIRECTION is either 'Base' or 'Target'.
TYPE is a type of links to return, it can be omitted to get links of any type.
FormatType
Takes a Type and returns a string that is more human readable.
FormatLink
Takes either a Target or a Base and returns a string of human friendly text.
_AddLink
Takes a paramhash of Type and one of Base or Target. Adds that link to this object.
If Silent is true then no transactions will be recorded. You can individually control transactions on both base and target and with SilentBase and SilentTarget respectively. By default both transactions are created.
If the link destination is a local object and does the RT::Record::Role::Status role, this method ensures object Status is not "deleted". Linking to deleted objects is forbidden.
If the link destination (i.e. not $self
) is a local object and the $StrictLinkACL
option is enabled, this method checks the appropriate right on the destination object (if any, as returned by the "ModifyLinkRight" method). The subclass is expected to check the appropriate right on the source object (i.e. $self
) before calling this method. This allows a different right to be used on the source object during creation, for example.
Returns a tuple of (link ID, message, flag if link already existed).
_DeleteLink
Takes a paramhash of Type and one of Base or Target. Removes that link from this object.
If Silent is true then no transactions will be recorded. You can individually control transactions on both base and target and with SilentBase and SilentTarget respectively. By default both transactions are created.
If the link destination (i.e. not $self
) is a local object and the $StrictLinkACL
option is enabled, this method checks the appropriate right on the destination object (if any, as returned by the "ModifyLinkRight" method). The subclass is expected to check the appropriate right on the source object (i.e. $self
) before calling this method.
Returns a tuple of (status flag, message).
LockForUpdate
In a database transaction, gains an exclusive lock on the row, to prevent race conditions. On SQLite, this is a "RESERVED" lock on the entire database.
_NewTransaction PARAMHASH
Private function to create a new RT::Transaction object for this ticket update
Transactions
Returns an RT::Transactions object of all transactions on this record object
SortedTransactions
Returns the result of "Transactions" ordered per the OldestTransactionsFirst preference/option.
Pass an optional value 'ASC' or 'DESC' to force a specific order.
Attachments
Returns an RT::Attachments object of all attachments on this record object (for all its "Transactions").
By default Content and Headers of attachments are not fetched right away from database. Use WithContent
and WithHeaders
options to override this.
TextAttachments
Returns an RT::Attachments object of all attachments, like Attachments, but only those that are text.
By default Content and Headers are fetched. Use WithContent
and WithHeaders
options to override this.
CustomFieldLookupType
Returns the path RT uses to figure out which custom fields apply to this object.
AddCustomFieldValue { Field => FIELD, Value => VALUE }
VALUE should be a string. FIELD can be any identifier of a CustomField supported by "LoadCustomFieldByIdentifier" method.
Adds VALUE as a value of CustomField FIELD. If this is a single-value custom field, deletes the old value. If VALUE is not a valid value for the custom field, returns (0, 'Error message' ) otherwise, returns ($id, 'Success Message') where $id is ID of created ObjectCustomFieldValue object.
AddCustomFieldDefaultValues
Add default values to object's empty custom fields.
CustomFieldValueIsEmpty { Field => FIELD, Value => VALUE }
Check if the custom field value is empty.
Some custom fields could have other special empty values, e.g. "1970-01-01" is empty for Date cf
Return 1 if it is empty, 0 otherwise.
DeleteCustomFieldValue { Field => FIELD, Value => VALUE }
Deletes VALUE as a value of CustomField FIELD.
VALUE can be a string, a CustomFieldValue or a ObjectCustomFieldValue.
If VALUE is not a valid value for the custom field, returns (0, 'Error message' ) otherwise, returns (1, 'Success Message')
FirstCustomFieldValue FIELD
Return the content of the first value of CustomField FIELD for this ticket Takes a field id or name
CustomFieldValuesAsString FIELD
Return the content of the CustomField FIELD for this ticket. If this is a multi-value custom field, values will be joined with newlines.
Takes a field id or name as the first argument
Takes an optional Separator => "," second and third argument if you want to join the values using something other than a newline
CustomFieldValues FIELD
Return a ObjectCustomFieldValues object of all values of the CustomField whose id or Name is FIELD for this record.
Returns an RT::ObjectCustomFieldValues object
LoadCustomFieldByIdentifier IDENTIFER
Find the custom field has id or name IDENTIFIER for this object.
If no valid field is found, returns an empty RT::CustomField object.
LoadByCustomFieldValue
Load an object based on the value of a custom field applied to that object. Loads only one object. If the value isn't unique for that object type, the first found is returned.
Accepts: CustomField => 'Foo', Value => 'Bar'
Returns: ($status, $message) and loads the object, if successful
HasRight
Takes a paramhash with the attributes 'Right' and 'Principal'
'Right' is a ticket-scoped textual right from RT::ACE
'Principal' is an RT::User object
Returns 1 if the principal has the right. Returns undef if not.
ColumnMapClassName
ColumnMap needs a massaged collection class name to load the correct list display. Equivalent to "ColumnMapClassName" in RT::SearchBuilder, but provided for a record instead of a collection.
Returns a string. May be called as a package method.
CustomDateRange name, spec
Takes a "%CustomDateRanges" in RT_Config-style spec string and its name (for diagnostics). Returns a localized string evaluating the calculation. If either date is unset, or anything fails to parse, this returns undef
.
CustomDateRanges
Return all of the custom date ranges of current class.
CustomDateRangeFields
Return all of the fields custom date range could use for current class.
UID
UID used by shredder/seralizer to identify the record. The format is "$Class-$Organization-$Id", e.g.
"RT::Ticket-example.com-20"
_AsInsertQuery
Returns INSERT query string that duplicates current record and can be used to insert record back into DB after delete.
Dependencies
Returns RT::Shredder::Dependencies object.
← Back to index