Remedy-ARSTools

 view release on metacpan or  search on metacpan

ARSTools.pm  view on Meta::CPAN

			return (undef);
		}
	}

	#here we go
	if 	($p{'ObjectType'} =~/^active_link$/i){
		#ars_DeleteActiveLink
		ARS::ars_DeleteActiveLink( $self->{'ctrl'}, $p{'ObjectName'} ) || do {
			$self->{'errstr'} = "DeleteObjectFromServer: failed to delete object from server: " . $ARS::ars_errstr;
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		};
	}elsif	($p{'ObjectType'} =~/^char_menu$/i){
		#ars_DeleteCharMenu
		ARS::ars_DeleteCharMenu( $self->{'ctrl'}, $p{'ObjectName'} ) || do {
			$self->{'errstr'} = "DeleteObjectFromServer: failed to delete object from server: " . $ARS::ars_errstr;
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		};
	}elsif	($p{'ObjectType'} =~/^escalation$/i){
		#ars_DeleteEscalation
		ARS::ars_DeleteEscalation( $self->{'ctrl'}, $p{'ObjectName'} ) || do {
			$self->{'errstr'} = "DeleteObjectFromServer: failed to delete object from server: " . $ARS::ars_errstr;
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		};
	}elsif	($p{'ObjectType'} =~/^filter$/i){
		#ars_DeleteFilter
		ARS::ars_DeleteFilter( $self->{'ctrl'}, $p{'ObjectName'} ) || do {
			$self->{'errstr'} = "DeleteObjectFromServer: failed to delete object from server: " . $ARS::ars_errstr;
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		};
	}elsif	($p{'ObjectType'} =~/^schema$/i){
		#ars_DeleteSchema
		ARS::ars_DeleteSchema( $self->{'ctrl'}, $p{'ObjectName'}, 1 ) || do {

			## NOTE: setting deleteOption to 1 (force_delete). whoo chile! be careful!

			$self->{'errstr'} = "DeleteObjectFromServer: failed to delete object from server: " . $ARS::ars_errstr;
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		};
	}else{
		$self->{'errstr'} = "DeleteObjectFromServer: I don't know how to delete the specified ObjectType: " . $p{'ObjectType'};
		warn ($self->{'errstr'}) if $self->{'Debug'};
		return (undef);
	}

	return (1);

}


## ExportDefinition #############################
## export a serialized ARS Object from the ARServer in def or xml format
## on success return the serialized object, on error undef
## ObjectName	=> "Remedy:ARSTools:CrazyActiveLink",
## ObjectType	=> "active_link",
## DefinitionType	=> "xml"
## NOTE: ISS04238696 on BMC ... XML export will not work with overlays on form defs
sub ExportDefinition {
	my ($self, %p) = @_;

	#make sure we got our required and default options, yadda yadda
	foreach ('DefinitionType', 'ObjectName', 'ObjectType'){
		if ((! exists($p{$_})) || ($p{$_} =~/^\s*$/)){
			$self->{'errstr'} = "ExportDefinition: " . $_ . " is a required option";
			warn ($self->{'errstr'}) if $self->{'Debug'};
			return (undef);
		}
	}
	if ($p{'DefinitionType'} =~/^xml$/){
		$p{'DefinitionType'} = "xml";
		$p{'DefinitionType'} = "xml_" . $p{'ObjectType'}; ## <-- yeah that's how it works
	}elsif ($p{'DefinitionType'} =~/^def$/){
		$p{'DefinitionType'} = "def";
	}else{
		$self->{'errstr'} = "ExportDefinition: unknown 'DefinitionType' value: " . $p{'DefinitionType'};
		warn ($self->{'errstr'}) if $self->{'Debug'};
		return (undef);
	}

	#"don't dude me, bro!" -- ghost adventures
	(my $def = ARS::ars_Export(
		$self->{'ctrl'},
		'',			## <-- '' = NULL = "get definition including all views" (if it's a form of course)
		'',			## <-- arsperl says '' is the same as &ARS::AR_VUI_TYPE_NONE, and I can dig it
		$p{'ObjectType'},
		$p{'ObjectName'}
	)) || do {
		$self->{'errstr'} = "ExportDefinition: failed to export definition: " . $ARS::ars_errstr;
		warn ($self->{'errstr'}) if $self->{'Debug'};
		return (undef);
	};

	return($def);
}


## ImportDefinition #############################
## import a serialized ARS Object, this will be either in *.def or *.xml format
## return 1 on success. return undef on failure.
## I s'pose it goes without saying, but you know ...
## be careful, m'kay?
## options:
##	* Definition			=> $string_containing_serialized_def
##	* DefinitionType		=> "xml" | "def"
##	* ObjectName			=> $the_name_of_the_object_to_import
##	* ObjectType			=> "schema" | "filter" | "active_link" | "char_menu" | "escalation" | "dist_map" | "container" | "dist_pool"
##	* UpdateCache			=> 1 | 0 (default 0)
##	* OverwriteExistingObject	=> 1 | 0 (default 0)
sub ImportDefinition {

	my ($self, %p) = @_;

	#make sure we got our required and default options, yadda yadda
	foreach ('Definition', 'DefinitionType', 'ObjectName', 'ObjectType'){
		if ((! exists($p{$_})) || ($p{$_} =~/^\s*$/)){
			$self->{'errstr'} = "ImportDefinition: " . $_ . " is a required option";
			warn ($self->{'errstr'}) if $self->{'Debug'};



( run in 2.382 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )