- NAME
- DESCRIPTION
- METHODS
  - Load ID or NAME
  - Create PARAMHASH
  - ValidateName NAME
  - ValidateCatalog
  - Delete
  - CurrentUserHasRight RIGHTNAME
  - CurrentUserCanSee
  - URI
  - CatalogObj
  - SetCatalog
  - Owner
  - HeldBy
  - Contacts
  - AddRoleMember
  - DeleteRoleMember
  - RoleGroup
- INTERNAL METHODS
  - CustomFieldLookupType
  - ACLEquivalenceObjects
  - ModifyLinkRight
  - LoadCustomFieldByIdentifier
- PRIVATE METHODS
  - _Set
  - _Value

# NAME

RT::Asset - Represents a single asset record

# DESCRIPTION

An Asset is a small record object upon which zero to many custom fields are applied. The core fields are:

id
Name

  Limited to 255 characters.

Description

  Limited to 255 characters.

Catalog
Status
Creator
Created
LastUpdatedBy
LastUpdated

All of these are readable through methods of the same name and mutable through methods of the same name with `Set` prefixed. The last four are automatically managed.

# METHODS

## Load ID or NAME

Loads the specified Asset into the current object.

## Create PARAMHASH

Create takes a hash of values and creates a row in the database. Available keys are:

Name
Description
Catalog

  Name or numeric ID

CustomField-<ID>

  Sets the value for this asset of the custom field specified by `<ID>`.

  `<ID>` should be a numeric ID, but may also be a Name if and only if your custom fields have unique names. Without unique names, the behaviour is undefined.

Status
Owner, HeldBy, Contact

  A single principal ID or array ref of principal IDs to add as members of the respective role groups for the new asset.

  User Names and EmailAddresses may also be used, but Groups must be referenced by ID.

RefersTo, ReferredToBy, DependsOn, DependedOnBy, Parents, Children, and aliases

  Any of these link types accept either a single value or arrayref of values parseable by RT::URI.

LazyRoleGroups

  A boolean to control if to create role groups immediately or just when necessary. It defaults to `$RT::Record::Role::Roles::LAZY_ROLE_GROUPS`, which is false by default.

Returns a tuple of (status, msg) on failure and (id, msg, non-fatal errors) on success, where the third value is an array reference of errors that occurred but didn't prevent creation.

## ValidateName NAME

Requires that Names contain at least one non-digit. Empty names are OK.

## ValidateCatalog

Takes a catalog name or ID. Returns true if the catalog exists and is not disabled, otherwise false.

## Delete

Assets may not be deleted. Always returns failure.

You should disable the asset instead with `$asset->SetStatus('deleted')`.

## CurrentUserHasRight RIGHTNAME

Returns true if the current user has the right for this asset, or globally if this is called on an unloaded object.

## CurrentUserCanSee

Returns true if the current user can see the asset, either because they just created it or they have the ShowAsset right.

## URI

Returns this asset's URI

## CatalogObj

Returns the RT::Catalog object for this asset's catalog.

## SetCatalog

Validates the supplied catalog and updates the column if valid. Transitions Status if necessary. Returns a (status, message) tuple.

## Owner

Returns an RT::User object for this asset's Owner role group. On error, returns undef.

## HeldBy

Returns an RT::Group object for this asset's HeldBy role group. The object may be unloaded if permissions aren't satisfied.

## Contacts

Returns an RT::Group object for this asset's Contact role group. The object may be unloaded if permissions aren't satisfied.

## AddRoleMember

Checks ModifyAsset before calling "_AddRoleMember" in RT::Record::Role::Roles.

## DeleteRoleMember

Checks ModifyAsset before calling "_DeleteRoleMember" in RT::Record::Role::Roles.

## RoleGroup

An ACL'd version of "_RoleGroup" in RT::Record::Role::Roles. Checks ShowAsset.

# INTERNAL METHODS

Public methods, but you shouldn't need to call these unless you're extending Assets.

## CustomFieldLookupType

## ACLEquivalenceObjects

## ModifyLinkRight

## LoadCustomFieldByIdentifier

Finds and returns the custom field of the given name for the asset, overriding "LoadCustomFieldByIdentifier" in RT::Record to look for catalog-specific CFs before global ones.

# PRIVATE METHODS

Documented for internal use only, do not call these from outside RT::Asset itself.

## _Set

Checks if the current user can ModifyAsset before calling `SUPER::_Set` and records a transaction against this object if `SUPER::_Set` was successful.

## _Value

Checks "CurrentUserCanSee" before calling `SUPER::_Value`.

← Back to index