Kernel::System::SysConfig::DB - Functions to manage system configuration settings interactions with the database.
Create an object. Do not use it directly, instead use:
use Kernel::System::ObjectManager; local $Kernel::OM = Kernel::System::ObjectManager->new(); my $SysConfigDBObject = $Kernel::OM->Get('Kernel::System::SysConfig::DB');
Add a new SysConfig default entry.
my $DefaultID = $SysConfigDBObject->DefaultSettingAdd( Name => "ProductName", # (required) Description => "Setting description", # (required) Navigation => "ASimple::Path::Structure", # (required) IsInvisible => 1, # (optional) 1 or 0, default 0 IsReadonly => 0, # (optional) 1 or 0, default 0 IsRequired => 1, # (optional) 1 or 0, default 0 IsValid => 1, # (optional) 1 or 0, default 0 HasConfigLevel => 200, # (optional) default 0 UserModificationPossible => 0, # (optional) 1 or 0, default 0 UserModificationActive => 0, # (optional) 1 or 0, default 0 UserPreferencesGroup => 'Some Group' # (optional) XMLContentRaw => $XMLString, # (required) the setting XML structure as it is on the config file XMLContentParsed => $XMLParsedToPerl, # (required) the setting XML structure converted into a Perl structure XMLFilename => 'Framework.xml' # (required) the name of the XML file EffectiveValue => $SettingEffectiveValue, # (required) the value as will be stored in the Perl configuration file ExclusiveLockExpiryTime => '2017-02-01 12:23:13', # (optional) If not provided, method will calculate it. UserID => 123, NoCleanup => 0, # (optional) Default 0. If enabled, system WILL NOT DELETE CACHE. In this case, it must be done manually. # USE IT CAREFULLY. );
Returns:
my $DefaultID = 123; # false in case of an error
Add new SysConfig default entries.
my $Success = $SysConfigDBObject->DefaultSettingBulkAdd( Settings => { # (required) Hash of settings "ACL::CacheTTL" => { "EffectiveValue" => "--- '3600'\n", "XMLContentParsed" => { "Description" => [ { "Content" => "Cache time in ...", "Translatable" => 1 }, ], "Name" => "ACL::CacheTTL", "Navigation" => [ { "Content" => "Core::Ticket::ACL" }, ], "Required" => 1, "Valid" => 1, "Value" => [ { "Item" => [ { "Content" => 3600, "ValueRegex" => "^\\d+\$", "ValueType" => "String" }, ], }, ], }, "XMLContentParsedYAML" => "---\nDescription:\n- Content: Cache...", "XMLContentRaw" => "<Setting Name=\"ACL::CacheTTL\" Required=\"1\" ...", "XMLFilename" => "Ticket.xml" }, ... }, SettingList => [ # list of current settings in DB { DefaultID => '123', Name => 'SettingName1', IsDirty => 1, ExclusiveLockGUID => 0, }, # ... ], UserID => 1, # (required) UserID );
my $Success = $SysConfigDBObject->DefaultSettingVersionBulkAdd( Settings => { # (required) Hash of settings "ACL::CacheTTL" => { "EffectiveValue" => "--- '3600'\n", "XMLContentParsed" => { "Description" => [ { "Content" => "Cache time in ...", "Translatable" => 1 }, ], "Name" => "ACL::CacheTTL", "Navigation" => [ { "Content" => "Core::Ticket::ACL" }, ], "Required" => 1, "Valid" => 1, "Value" => [ { "Item" => [ { "Content" => 3600, "ValueRegex" => "^\\d+\$", "ValueType" => "String" }, ], }, ], }, "XMLContentParsedYAML" => "---\nDescription:\n- Content: Cache...", "XMLContentRaw" => "<Setting Name=\"ACL::CacheTTL\" Required=\"1\" ...", "XMLFilename" => "Ticket.xml" }, ... }, SettingList => [ # list of current settings in DB { DefaultID => '123', Name => 'SettingName1', IsDirty => 1, ExclusiveLockGUID => 0, }, # ... ], UserID => 1, # (required) UserID );
Get SysConfig default entry.
my %DefaultSetting = $SysConfigDBObject->DefaultSettingGet( Name => "TheName", # (required) Setting name - prefered parameter. # or DefaultID => 4, # (required) DefaultID. Slightly slower execution. NoCache => 0, # (optional) Default 0. If 1, cache will not be created. );
Returns:
%DefaultSetting = ( DefaultID => "123", Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 HasConfigLevel => 200, UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UserPreferencesGroup => 'Some Group', XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", XMLFilename => "Framework.xml", EffectiveValue => "Product 6", IsDirty => 1, # 1 or 0 ExclusiveLockGUID => 'A32CHARACTERLONGSTRINGFORLOCKING', ExclusiveLockUserID => 1, ExclusiveLockExpiryTime => '2016-05-29 11:09:04', CreateTime => "2016-05-29 11:04:04", CreateBy => 1, ChangeTime => "2016-05-29 11:04:04", ChangeBy => 1, SettingUID => 'Default12320160529110404', );
Default setting lookup.
my %Result = $SysConfigDBObject->DefaultSettingLookup( Name => "TheName", # (required) # or DefaultID => 4, # (required) );
Returns:
%Result = ( DefaultID => 4, Name => 'TheName', );
Delete a default setting from the database.
my $Success = $SysConfigDBObject->DefaultSettingDelete( DefaultID => 123, ); my $Success = $SysConfigDBObject->DefaultSettingDelete( Name => 'Name', );
Returns:
$Success = 1; # or false in case of an error
Update SysConfig default entry.
my $Success = $SysConfigDBObject->DefaultSettingUpdate( DefaultID => 123, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0, optional, default 0 IsReadonly => 0, # 1 or 0, optional, default 0 IsRequired => 1, # 1 or 0, optional, default 0 IsValid => 1, # 1 or 0, optional, default 0 HasConfigLevel => 200, # optional, default 0 UserModificationPossible => 0, # 1 or 0, optional, default 0 UserModificationActive => 0, # 1 or 0, optional, default 0 UserPreferencesGroup => 'Some Group', UserPreferencesGroup => 'Advanced', # optional XMLContentRaw => $XMLString, # the XML structure as it is on the config file XMLContentParsed => $XMLParsedToPerl, XMLFilename => 'Framework.xml', ExclusiveLockGUID => 1, EffectiveValue => $SettingEffectiveValue, UserID => 1, );
Returns:
$Success = 1; # or false in case of an error.
Search for settings which contains given term(Search) in the xml_content_raw column.
my @Result = $SysConfigDBObject->DefaultSettingSearch( Search => 'Entity', # Search term SearchType => 'XMLContent', # XMLContent or Metadata CategoryFiles => ['Framework.xml', 'Ticket.xml', ], # (optional) Valid => 0, # (optional) By default, system returns all Settings (valid and invalid) # if set to 1, search only for valid, # if set to 0, search also for invalid. IncludeInvisible => 0, # (optional) Default 0 );
or
my @Result = $SysConfigDBObject->DefaultSettingSearch( Search => ['Framework.xml' 'Ticket,xml'], SearchType => 'Filename', Valid => 1, );
Returns:
@Result = ( 'ACL::CacheTTL', 'ACLKeysLevel1Change', ... );
Get default setting list with complete data.
my @List = $SysConfigDBObject->DefaultSettingListGet( IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 IsDirty => 1, # 1 or 0 HasConfigLevel => 0, # 1 or 0 UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UserPreferencesGroup => 'Some Group', Navigation => 'ASimple::Path::Structure', Locked => 1, # check for locked settings Category => 'OTRS', # optional (requires CategoryFiles) CategoryFiles => ['Framework.xml', 'Ticket.xml', ], # optional (requires Category) NoCache => 0, # (optional) Default 0. If set, system will not generate cache. );
Returns:
@List = ( { DefaultID => 123, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, IsReadonly => 0, IsRequired => 1, IsValid => 1, HasConfigLevel => 200, UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UserPreferencesGroup => 'Advanced', # optional XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", XMLFilename => "Framework.xml", EffectiveValue => "Product 6", IsDirty => 1, # 1 or 0 ExclusiveLockGUID => 'A32CHARACTERLONGSTRINGFORLOCKING', ExclusiveLockUserID => 1, ExclusiveLockExpiryTime => '2016-05-29 11:09:04', CreateTime => "2016-05-29 11:04:04", CreateBy => 1, ChangeTime => "2016-05-29 11:04:04", ChangeBy => 1, SettingUID => 'Default4717141789', }, { DefaultID => 321, Name => 'FieldName', # ... ChangeTime => '2011-01-01 01:01:01', ChangeBy => 1, SettingUID => 'Default4717141781', }, # ... );
Get list of all settings.
my @DefaultSettings = $SysConfigDBObject->DefaultSettingList( IncludeInvisible => 0, # (optional) Include invisible. Default 0. IsDirty => 0, # (optional) Filter settings by IsDirty. If not provided, returns all settings. Locked => 0, # (optional) Filter locked settings. );
Returns:
@DefaultSettings = ( { DefaultID => '123', Name => 'SettingName1', IsDirty => 1, IsVisible => 1, ExclusiveLockGUID => 0, XMLFilename => 'Filename.xml', }, { DefaultID => '124', Name => 'SettingName2', IsDirty => 0, IsVisible => 1, ExclusiveLockGUID => 'fjewifjowj...', XMLFilename => 'Filename.xml', }, ... );
Lock Default setting(s) to the particular user.
my $ExclusiveLockGUID = $SysConfigDBObject->DefaultSettingLock( DefaultID => 1, # the ID of the setting that needs to be locked # or Name => 'SettingName', # the Name of the setting that needs to be locked # or LockAll => 1, # system locks all settings. Force => 1, # (optional) Force locking (do not check if it's already locked by another user). Default: 0. UserID => 1, # (required) );
Returns:
$ExclusiveLockGUID = 'azzHab72wIlAXDrxHexsI5aENsESxAO7'; # Setting locked or $ExclusiveLockGUID = undef; # Not locked
Check if particular Default Setting is locked.
my $Locked = $SysConfigDBObject->DefaultSettingIsLocked( DefaultID => 1, # the ID of the setting that needs to be checked # or Name => 'SettingName', # the Name of the setting that needs to be checked GetLockUserID => 1, # optional, it will return the ExclusiveLockUserID in case it exist );
Returns:
$Locked = 1; # Locked or $Locked = 123 # The UserID
Check if particular Default Setting is locked.
my $LockedByUser = $SysConfigDBObject->DefaultSettingIsLockedByUser( DefaultID => 1, # the ID of the setting that needs to be checked # or Name => 'SettingName', # the name of the setting that needs to be checked ExclusiveLockUserID => 2, # the user should have locked the setting ExclusiveLockGUID => 'AGUIDSTRING', # the GUID used to locking the setting );
Returns:
$LockedByUser = 1;
Unlock particular or all Default Setting(s).
my $Success = $SysConfigDBObject->DefaultSettingUnlock( DefaultID => 1, # the ID of the setting that needs to be unlocked # or Name => 'SettingName', # the name of the setting that needs to be locked # or UnlockAll => 1, # unlock all settings );
Returns:
$Success = 1;
Removes the IsDirty flag from default settings.
my $Success = $SysConfigDBObject->DefaultSettingDirtyCleanUp( AllSettings => 0, # (default 0) Reset all dirty settings. );
Returns:
$Success = 1; # or false in case of an error
Add a new SysConfig default version entry.
my $DefaultVersionID = $SysConfigDBObject->DefaultSettingVersionAdd( DefaultID => 456, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0, optional, default 0 IsReadonly => 0, # 1 or 0, optional, default 0 IsRequired => 1, # 1 or 0, optional, default 0 IsValid => 1, # 1 or 0, optional, default 0 HasConfigLevel => 200, # optional, default 0 UserModificationPossible => 0, # 1 or 0, optional, default 0 UserModificationActive => 0, # 1 or 0, optional, default 0 UserPreferencesGroup => 'Advanced', # optional XMLContentRaw => $XMLString, # the XML structure as it is on the config file XMLContentParsed => $XMLParsedToPerl, # the setting XML structure converted into YAML XMLFilename => 'Framework.xml' # the name of the XML file EffectiveValue => $YAMLEffectiveValue, # YAML EffectiveValue UserID => 1, NoCleanup => 0, # (optional) Default 0. If enabled, system WILL NOT DELETE CACHE. In this case, it must be done manually. # USE IT CAREFULLY. NoVersionID => 1, # 1 or 0, optional, default 0, prevents the return of DefaultVersionID and returns only 1 in case of success. );
Returns:
my $DefaultVersionID = 123; # false in case of an error
Get SysConfig default version entry.
my %DefaultSettingVersion = $SysConfigDBObject->DefaultSettingVersionGet( DefaultVersionID => 123, );
Returns:
%DefaultSettingVersion = ( DefaultVersionID => 123, DefaultID => 456, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 HasConfigLevel => 200, UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UsePreferencesGroup => 'Advanced', # optional XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", XMLFilename => 'Framework.xml', EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", CreateBy => 44, ChangeTime => "2016-05-29 11:04:04", ChangeBy => 88, );
Delete a default setting version from list based on default version ID or default ID.
my $Success = $SysConfigDBObject->DefaultSettingVersionDelete( DefaultVersionID => 123, );
or
my $Success = $SysConfigDBObject->DefaultSettingVersionDelete( DefaultID => 45, );
or
my $Success = $SysConfigDBObject->DefaultSettingVersionDelete( Name => 'AnyName', );
Returns:
$Success = 1; # or false in case of an error
Get last deployment.
my %DefaultSettingVersionGetLast = $SysConfigDBObject->DefaultSettingVersionGetLast( DefaultID => 456, );
Returns:
%DefaultSettingVersion = ( DefaultVersionID => 123, DefaultID => 456, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 HasConfigLevel => 200, UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UsePreferencesGroup => 'Advanced', # optional XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", XMLFilename => 'Framework.xml', EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", );
Get version setting list with complete data.
my @List = $SysConfigDBObject->DefaultSettingVersionListGet( Name => 'SettingName', # optional # or DefaultID => 123, # optional );
Returns:
@List = ( { DefaultVersionID => 123, DefaultID => 456, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 HasConfigLevel => 200, UserModificationPossible => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 UserPreferencesGroup => 'Advanced', # optional XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", XMLFilename => 'Framework.xml', EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", }, { DefaultVersionID => 321, DefaultID => 890, Name => 'FieldName', # ... CreateTime => '2010-09-11 10:08:00', ChangeTime => '2011-01-01 01:01:01', }, # ... );
Add a new SysConfig modified entry.
my $ModifiedID = $SysConfigDBObject->ModifiedSettingAdd( DefaultID => 456, Name => "ProductName", IsValid => 1, # 1 or 0, optional (uses the value from DefaultSetting if not defined) UserModificationPossible => 0, # 1 or 0, optional (uses the value from DefaultSetting if not defined) UserModificationActive => 0, # 1 or 0, optional (uses the value from DefaultSetting if not defined) ResetToDefault => 0, # 1 or 0, optional, modified 0 EffectiveValue => $SettingEffectiveValue, TargetUserID => 2, # Optional, ID of the user for which the modified setting is meant, # leave it undef for global changes. ExclusiveLockGUID => $LockingString, # the GUID used to lock the setting DeploymentExclusiveLockGUID => $LockingString, # the GUID used to lock the deployment (in case of deployment failure) UserID => 1, );
Returns:
my $ModifiedID = 123; # false in case of an error
Get SysConfig modified value.
my %ModifiedSetting = $SysConfigDBObject->ModifiedSettingGet( ModifiedID => 123, # ModifiedID or NAME are required. Name => 'Setting::Name', TargetUserID => 2, # The ID of the user for which the modified setting is meant, # exclusive with IsGlobal. IsGlobal => 1, # Define a search for settings don't belong an user, # exclusive with TargetUserID. );
Returns:
%ModifiedSetting = ( ModifiedID => "123", DefaultID => 456, Name => "ProductName", IsGlobal => 1, # 1 or 0, optional IsValid => 1, # 1 or 0, optional, modified 0 IsDirty => 1, # 1 or 0, optional, modified 0 ResetToDefault => 1, # 1 or 0, optional, modified 0 UserModificationActive => 0, # 1 or 0, optional, modified 0 EffectiveValue => $SettingEffectiveValue, TargetUserID => 2, # ID of the user for which the modified setting is meant CreateTime => "2016-05-29 11:04:04", CreateBy => 1, ChangeTime => "2016-05-29 11:04:04", ChangeBy => 1, SettingUID => 'Modified12320160529110404', );
Get modified setting list with complete data.
my @List = $SysConfigDBObject->ModifiedSettingListGet( IsInvisible => 1, # 1 or 0 IsReadonly => 0, # 1 or 0 IsRequired => 1, # 1 or 0 IsValid => 1, # 1 or 0 IsDirty => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 TargetUserID => 2, # the ID of the user for which the modified setting is meant, # exclusive with IsGlobal. IsGlobal => 1, # Define a search for settings don't belong an user, # exclusive with TargetUserID. HasConfigLevel => 0, # 1 or 0 UserModificationActive => 0, # 1 or 0 Name => 'ACL::CacheTTL', # setting name ChangeBy => 123, );
Returns:
@List = ( { ModifiedID => 123, Name => "ProductName", Description => "Defines the name of the application ...", Navigation => "ASimple::Path::Structure", IsInvisible => 1, IsReadonly => 0, IsRequired => 1, IsValid => 1, ResetToDefault => 1, # 1 or 0 HasConfigLevel => 200, UserModificationActive => 0, # 1 or 0 XMLContentRaw => "The XML structure as it is on the config file", XMLContentParsed => "XML parsed to Perl", EffectiveValue => "Product 6", IsDirty => 1, # 1 or 0 ExclusiveLockGUID => 'A32CHARACTERLONGSTRINGFORLOCKING', ExclusiveLockUserID => 1, ExclusiveLockExpiryTime => '2016-05-29 11:09:04', CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", }, { ModifiedID => 321, Name => 'FieldName', # ... CreateTime => '2010-09-11 10:08:00', ChangeTime => '2011-01-01 01:01:01', }, # ... );
Delete a modified setting from list.
my $Success = $SysConfigDBObject->ModifiedSettingDelete( ModifiedID => 123, );
Returns:
$Success = 1; # or false in case of an error
Update SysConfig modified.
my $Success = $SysConfigDBObject->ModifiedSettingUpdate( ModifiedID => 123, # (required) DefaultID => 456, # (required) Name => "ProductName", # (required) IsValid => 1, # (optional) 1 or 0, optional (uses the value from DefaultSetting if not defined) IsDirty => 1, # (optional) Default 1. ResetToDefault => 1, # (optional), default 0 UserModificationActive => 1, # (optional) 1 or 0 (uses the value from DefaultSetting if not defined) EffectiveValue => $SettingEffectiveValue, TargetUserID => 2, # (optional), ID of the user for which the modified setting is meant, # leave it undef for global changes. ExclusiveLockGUID => $LockingString, # the GUID used to locking the setting UserID => 1, # (required) );
Returns:
$Success = 1; # or false in case of an error
Removes the IsDirty flag from modified settings.
my $Success = $SysConfigDBObject->ModifiedSettingDirtyCleanUp( TargetUserID => 123, # (optional) ModifiedIDs => [ # (optional) applies to only this list of settings 123, 456, ], );
Returns:
$Success = 1; # or false in case of an error
Add a new SysConfig modified version entry.
my $ModifiedVersionID = $SysConfigDBObject->ModifiedSettingVersionAdd( DefaultVersionID => 456, Name => "ProductName", IsValid => 1, # 1 or 0, optional, optional 0 UserModificationActive => 0, # 1 or 0, optional, optional 0 TargetUserID => 2, # The ID of the user for which the modified setting is meant, # leave it undef for global changes. EffectiveValue => $SettingEffectiveValue, # the value as will be stored in the Perl configuration file DeploymentTimeStamp => '2015-12-12 12:00:00', # unique timestamp per deployment ResetToDefault => 1, # optional, default 0 UserID => 1, );
Returns:
my $ModifiedVersionID = 123; # false in case of an error
Get SysConfig modified version entry.
my %ModifiedSettingVersion = $SysConfigDBObject->ModifiedSettingVersionGet( ModifiedVersionID => 123, );
Returns:
%ModifiedSetting = ( ModifiedVersionID => 123, DefaultVersionID => 456, Name => "ProductName", TargetUserID => 123, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", );
Get version setting list with complete data.
my @List = $SysConfigDBObject->ModifiedSettingVersionListGet( Name => 1, # optional DefaultVersionID => 230, # optional );
Returns:
@List = ( { ModifiedVersionID => 123, ModifiedID => 456, Name => "ProductName", TargetUserID => 78, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", }, { ModifiedVersionID => 789, ModifiedID => 579, Name => "ADifferentProductName", TargetUserID => 909, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 . . . }, # ... );
Get last deployment.
my %ModifiedSettingVersion = $SysConfigDBObject->ModifiedSettingVersionGetLast( Name => 'ProductName', );
Returns:
%ModifiedSettingVersion = ( DefaultVersionID => 123, ModifiedID => 456, Name => "ProductName", TargetUserID => 45, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", );
Get a list of the last deployed version of each modified SysConfig setting
my @List = $SysConfigDBObject->ModifiedSettingVersionListGetLast();
Returns:
@List = ( { ModifiedVersionID => 123, ModifiedID => 456, Name => "ProductName", TargetUserID => 78, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 EffectiveValue => "Product 6", CreateTime => "2016-05-29 11:04:04", ChangeTime => "2016-05-29 11:04:04", }, { ModifiedVersionID => 789, ModifiedID => 579, Name => "ADifferentProductName", TargetUserID => 909, IsValid => 1, # 1 or 0 ResetToDefault => 1, # 1 or 0 UserModificationActive => 0, # 1 or 0 . . . }, # ... );
Delete a modified setting version from list based on modified version ID or modified ID.
my $Success = $SysConfigDBObject->ModifiedSettingVersionDelete( ModifiedVersionID => 123, );
or
my $Success = $SysConfigDBObject->ModifiedSettingVersionDelete( ModifiedID => 45, );
or
my $Success = $SysConfigDBObject->ModifiedSettingVersionDelete( Name => 'AnyName', );
Returns:
$Success = 1; # or false in case of an error
Check if there are not deployed changes on system configuration.
my $Result = $SysConfigDBObject->ConfigurationIsDirty( UserID => 123, # optional, the user that changes a modified setting );
Returns:
$Result = 1; # or 0 if configuration is not dirty.
Adds a new deployment.
my $DeploymentID = $SysConfigDBObject->DeploymentAdd( Comments => 'Some Comments', # optional EffectiveValueStrg => $EffectiveValuesStrgRef, # string reference with the value of all settings, # to be stored in a Perl cache file TargetUserID => 123, # to deploy only user specific settings ExclusiveLockGUID => $LockingString, # the GUID used to locking the deployment, # not needed if TargetUserID is used DeploymentTimeStamp => '1977-12-12 12:00:00', UserID => 123, );
Returns:
$DeploymentID = 123; # or false in case of an error
Gets deployment information.
my %Deployment = $SysConfigDBObject->DeploymentGet( DeploymentID => 123, Valid => 1, # optional (this is deprecated and will be removed in next mayor release). );
Returns:
%Deployment = ( DeploymentID => 123, Comments => 'Some Comments', EffectiveValueStrg => $SettingEffectiveValues, # string with the value of all settings, # as seen in the Perl configuration file. TargetUserID => 123, # optional (only in case of user specific deployments). CreateTime => "2016-05-29 11:04:04", CreateBy => 123, );
Get global deployment list with complete data.
my @List = $SysConfigDBObject->DeploymentListGet();
Returns:
@List = ( { DeploymentID => 123, Comments => 'Some Comments', EffectiveValueStrg => $SettingEffectiveValues, # String with the value of all settings, # as seen in the Perl configuration file. CreateTime => "2016-05-29 11:04:04", CreateBy => 123, }, { DeploymentID => 456, Comments => 'Some Comments', EffectiveValueStrg => $SettingEffectiveValues2, # String with the value of all settings, # as seen in the Perl configuration file. CreateTime => "2016-05-29 12:00:01", CreateBy => 123, }, # ... );
Get DeploymentID -> UserID list of all user deployments.
my %List = $SysConfigDBObject->DeploymentUserList();
Returns: %List = { 9876 => 123, 5432 => 456, # ... };
Get last global deployment.
my %Deployment = $SysConfigDBObject->DeploymentGetLast();
Returns:
%Deployment = ( DeploymentID => 123, Comments => 'Some Comments', EffectiveValueStrg => $SettingEffectiveValues, # String with the value of all settings, # as seen in the Perl configuration file. CreateTime => "2016-05-29 11:04:04", CreateBy => 123, );
Delete a deployment from the database.
my $Success = $SysConfigDBObject->DeploymentDelete( DeploymentID => 123, );
Returns:
$Success = 1; # or false in case of an error
Lock global deployment to a particular user.
my $ExclusiveLockGUID = $SysConfigDBObject->DeploymentLock( UserID => 123, ExclusiveLockGUID => $LockingString, # optional (if specific GUID is needed) Force => 1, # Optional, locks the deployment even if is already # locked to another user, also removes locks for # all settings. );
Returns:
$ExclusiveLockGUID = 'SomeLockingString'; # or false in case of an error or already locked
Check if global deployment is locked.
my $Locked = $SysConfigDBObject->DeploymentIsLocked();
Returns:
$Locked = 1; # or false if it is not locked
Check if global deployment is locked for a determined user.
my $LockedByUser = $SysConfigDBObject->DeploymentIsLockedByUser( ExclusiveLockGUID => $LockingString, # the GUID used to locking the deployment UserID => 123, # the user should have locked the deployment );
Returns:
$LockedByUser = 'SomeLockingString'; # or false in case of not locked
Return a list of modified versions for a global deployment based on the deployment time. Limited to a particular deployment or including also all previous deployments
my %ModifiedVersionList = $SysConfigDBObject->DeploymentModifiedVersionList( DeploymentID => 123, # the deployment id Mode => 'Equals' # (optional) default 'Equals' # Equals: only the settings from the given deployment # GreaterThan: only the settings after the given deployment # GreaterThanEquals: includes the settings of the given deployment and after # SmallerThan: only the settings before the given deployment # SmallerThanEquals: includes the settings of the given deployment and before );
Returns:
%ModifiedVersionIDs = ( 123 => 'Setting1', 124 => 'Setting2', 125 => 'Setting3' );
Unlock global deployment.
my $Success = $SysConfigDBObject->DeploymentUnlock( ExclusiveLockGUID => '12ad34f21b', UserID => 123, );
or
my $Success = $SysConfigDBObject->DeploymentUnlock( All => 1, );
Returns:
$Success = 1; # or false in case of an error
Removes invalid deployments from the database.
my $Success = $SysConfigDBObject->DeploymentListCleanup( );
Returns:
$Success = 1; # Returns 1 if all records are valid (or all invalid was removed) # Returns -1 if there is an invalid deployment that could be in adding process # Returns false in case of an error
Get deployment lock entry.
my %DeploymentLock = $SysConfigDBObject->_DeploymentLockGet();
Returns:
%DeploymentLock = ( DeploymentLoclID => "123", ExclusiveLockGUID => $LockingString, ExclusiveLockUserID => 1, ExclusiveLockExpiryTime => '2016-05-29 11:09:04', CreateTime => "2016-05-29 11:04:04", );
Add batch entries to the DB into a given table.
my $Success = $SysConfigDBObject->_BulkInsert( Table => 'table_name', # (required) Table name Columns => [ # (required) Array of column names 'column_name', ... ], Data => [ # (required) AoA with data [ 'record 1', 'record 2', ], [ ... ], ... ], );
Generates a unique identifier.
my $UID = $TicketNumberObject->_GetUID();
Returns:
my $UID = 14906327941360ed8455f125d0450277;
This software is part of the OTRS project (https://otrs.org/).
This software comes with ABSOLUTELY NO WARRANTY. For details, see the enclosed file COPYING for license information (GPL). If you did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.