[otrs-cvs] ITSMConfigItem/Kernel/System ITSMConfigItem.pm, 1.45, 1.46

CVS commits notifications of OTRS.org cvs-log at otrs.org
Sat May 3 13:10:29 GMT 2008


Comments:
Update of /home/cvs/ITSMConfigItem/Kernel/System
In directory lancelot:/tmp/cvs-serv23234/Kernel/System

Modified Files:
	ITSMConfigItem.pm 
Log Message:
Fixed bug# 2728 - The CI search function ignore some search criteria.

Author: mh

Index: ITSMConfigItem.pm
===================================================================
RCS file: /home/cvs/ITSMConfigItem/Kernel/System/ITSMConfigItem.pm,v
retrieving revision 1.45
retrieving revision 1.46
diff -C2 -d -r1.45 -r1.46
*** ITSMConfigItem.pm	2 May 2008 19:39:31 -0000	1.45
--- ITSMConfigItem.pm	3 May 2008 13:10:24 -0000	1.46
***************
*** 585,593 ****
  
      my $ConfigItemIDs = $ConfigItemObject->ConfigItemSearchExtended(
!         ClassIDs        => [9, 8, 7, 6],                         # (optional)
!         CurDeplStateIDs => [1, 2, 3, 4],                         # (optional)
!         CurInciStateIDs => [1, 2, 3, 4],                         # (optional)
!         Number          => 'The ConfigItem Number',              # (optional)
!         Name            => 'The Name',                           # (optional)
  
          # config items with created time after ...
--- 585,593 ----
  
      my $ConfigItemIDs = $ConfigItemObject->ConfigItemSearchExtended(
!         Number       => 'The ConfigItem Number',  # (optional)
!         Name         => 'The Name',               # (optional)
!         ClassIDs     => [9, 8, 7, 6],             # (optional)
!         DeplStateIDs => [1, 2, 3, 4],             # (optional)
!         InciStateIDs => [1, 2, 3, 4],             # (optional)
  
          # config items with created time after ...
***************
*** 620,624 ****
  
          PreviousVersionSearch => 1,  # (optional) default 0 (0|1)
!         Limit => 122,                # (optional)
      );
  
--- 620,630 ----
  
          PreviousVersionSearch => 1,  # (optional) default 0 (0|1)
! 
!         OrderBy => 'Number',  # (optional) default ConfigItemID
!         # (ConfigItemID, Number, ClassID, DeplStateID, InciStateID,
!         # CreateTime, CreateBy, ChangeTime, ChangeBy)
! 
!         Limit          => 122,  # (optional)
!         UsingWildcards => 0,    # (optional) default 1
      );
  
***************
*** 628,635 ****
      my ( $Self, %Param ) = @_;
  
      # config item search is required if one of this params are given
      my @ConfigItemSearchParams = (
!         'Number',                        'ConfigItemCreateTimeNewerDate',
!         'ConfigItemCreateTimeOlderDate', 'ConfigItemCreateTimeOlderDate',
          'ConfigItemChangeTimeOlderDate'
      );
--- 634,647 ----
      my ( $Self, %Param ) = @_;
  
+     # set limit
+     my $Limit = $Param{Limit};
+     $Param{Limit} = undef;
+ 
      # config item search is required if one of this params are given
      my @ConfigItemSearchParams = (
!         'Number',
!         'ConfigItemCreateTimeNewerDate',
!         'ConfigItemCreateTimeOlderDate',
!         'ConfigItemChangeTimeNewerDate',
          'ConfigItemChangeTimeOlderDate'
      );
***************
*** 645,672 ****
      }
  
!     # version search is required if 'Name' is given
!     if ( $Param{Name} || $Param{PreviousVersionSearch} ) {
          $RequiredSearch{Version} = 1;
      }
  
!     # xml version search is required if 'What' is given
      if ( $Param{What} ) {
-         if (
-             !$Param{ClassIDs}
-             || ref $Param{ClassIDs} ne 'ARRAY'
-             || !@{ $Param{ClassIDs} }
-             )
-         {
-             $Self->{LogObject}->Log(
-                 Priority => 'error',
-                 Message  => "Need one value in ClassIDs if 'What' is given!"
-             );
-             return;
-         }
- 
          $RequiredSearch{XMLVersion} = 1;
      }
  
!     # config item search is required as fallback
      if ( !%RequiredSearch ) {
          $RequiredSearch{ConfigItem} = 1;
--- 657,671 ----
      }
  
!     # version search is required if Name, What or PreviousVersionSearch is given
!     if ( $Param{Name} || $Param{What} || $Param{PreviousVersionSearch} ) {
          $RequiredSearch{Version} = 1;
      }
  
!     # xml version search is required if What is given
      if ( $Param{What} ) {
          $RequiredSearch{XMLVersion} = 1;
      }
  
!     # use config item search as fallback
      if ( !%RequiredSearch ) {
          $RequiredSearch{ConfigItem} = 1;
***************
*** 674,690 ****
  
      # start config item search
!     my %ConfigItemList;
      if ( $RequiredSearch{ConfigItem} ) {
  
          # search config items
!         my $ConfigItemIDs = $Self->ConfigItemSearch(%Param);
! 
!         return [] if !@{$ConfigItemIDs};
!         return $ConfigItemIDs if !$RequiredSearch{Version} && !$RequiredSearch{XMLVersion};
  
!         # add ids to config item list
!         for my $ConfigItemID ( @{$ConfigItemIDs} ) {
!             $ConfigItemList{$ConfigItemID}++;
!         }
      }
  
--- 673,685 ----
  
      # start config item search
!     my %ConfigItemLists;
      if ( $RequiredSearch{ConfigItem} ) {
  
          # search config items
!         $ConfigItemLists{ConfigItem} = $Self->ConfigItemSearch(%Param);
  
!         return if !$ConfigItemLists{ConfigItem};
!         return if ref $ConfigItemLists{ConfigItem} ne 'ARRAY';
!         return [] if !@{ $ConfigItemLists{ConfigItem} };
      }
  
***************
*** 693,727 ****
  
          # search versions
!         my $VersionIDs = $Self->VersionSearch(%Param);
! 
!         return [] if !@{$VersionIDs};
! 
!         # get config item ids
!         my %ConfigItemListTmp;
!         for my $VersionID ( @{$VersionIDs} ) {
!             my $ConfigItemID = $Self->VersionConfigItemIDGet(
!                 VersionID => $VersionID,
!             );
!             $ConfigItemListTmp{$ConfigItemID} = 1;
!         }
  
!         # add ids to config item list
!         for my $ConfigItemID ( keys %ConfigItemListTmp ) {
!             $ConfigItemList{$ConfigItemID}++;
!         }
      }
  
      # start xml version search
-     my $XMLVersionIDs = {};
      if ( $RequiredSearch{XMLVersion} ) {
  
          # search xml versions
!         $XMLVersionIDs = $Self->XMLVersionSearch(%Param);
  
!         return [] if !%{$XMLVersionIDs};
  
          # get config item ids
          my %ConfigItemListTmp;
!         for my $VersionID ( keys %{$XMLVersionIDs} ) {
              my $ConfigItemID = $Self->VersionConfigItemIDGet(
                  VersionID => $VersionID,
--- 688,711 ----
  
          # search versions
!         $ConfigItemLists{Version} = $Self->VersionSearch(%Param);
  
!         return if !$ConfigItemLists{Version};
!         return if ref $ConfigItemLists{Version} ne 'ARRAY';
!         return [] if !@{ $ConfigItemLists{Version} };
      }
  
      # start xml version search
      if ( $RequiredSearch{XMLVersion} ) {
  
          # search xml versions
!         my $XMLVersionList = $Self->_XMLVersionSearch(%Param);
  
!         return if !$XMLVersionList;
!         return if ref $XMLVersionList ne 'HASH';
!         return [] if !%{$XMLVersionList};
  
          # get config item ids
          my %ConfigItemListTmp;
!         for my $VersionID ( keys %{$XMLVersionList} ) {
              my $ConfigItemID = $Self->VersionConfigItemIDGet(
                  VersionID => $VersionID,
***************
*** 731,744 ****
  
          # add ids to config item list
!         for my $ConfigItemID ( keys %ConfigItemListTmp ) {
!             $ConfigItemList{$ConfigItemID}++;
          }
      }
  
!     # find out number of required search methods
!     my $SearchNumber = keys %RequiredSearch;
  
!     # extract all ids with number of required search methods
!     my @ResultList = grep { $ConfigItemList{$_} eq $SearchNumber } keys %ConfigItemList;
  
      return \@ResultList;
--- 715,757 ----
  
          # add ids to config item list
!         $ConfigItemLists{XMLVersion} = \%ConfigItemListTmp;
!     }
! 
!     # create the result list
!     my @ResultList;
!     if ( $RequiredSearch{ConfigItem} && $RequiredSearch{Version} ) {
! 
!         my %VersionTempList;
!         for my $ConfigItemID ( @{ $ConfigItemLists{Version} } ) {
!             $VersionTempList{$ConfigItemID} = 1;
!         }
! 
!         CONFIGITEMID:
!         for my $ConfigItemID ( @{ $ConfigItemLists{ConfigItem} } ) {
! 
!             next CONFIGITEMID if !$VersionTempList{$ConfigItemID};
! 
!             push @ResultList, $ConfigItemID;
          }
      }
+     elsif ( $RequiredSearch{ConfigItem} ) {
+         @ResultList = @{ $ConfigItemLists{ConfigItem} };
+     }
+     elsif ( $RequiredSearch{Version} ) {
+         @ResultList = @{ $ConfigItemLists{Version} };
+     }
  
!     # consider the XML result
!     if ( $RequiredSearch{XMLVersion} ) {
!         @ResultList = grep { $ConfigItemLists{XMLVersion}->{$_} } @ResultList;
!     }
  
!     # consider limit
!     if ( $Limit && $Limit < scalar @ResultList ) {
! 
!         # extract the limited ids
!         $Limit--;
!         @ResultList = @ResultList[ 0 .. $Limit ];
!     }
  
      return \@ResultList;
***************
*** 750,759 ****
  
      my $ConfigItemIDs = $ConfigItemObject->ConfigItemSearch(
!         Number          => 'The ConfigItem Number',  # (optional)
!         ClassIDs        => [9, 8, 7, 6],             # (optional)
!         CurDeplStateIDs => [1, 2, 3, 4],             # (optional)
!         CurInciStateIDs => [1, 2, 3, 4],             # (optional)
!         CreateBy        => [1, 2, 3],                # (optional)
!         ChangeBy        => [3, 2, 1],                # (optional)
  
          # config items with created time after ...
--- 763,772 ----
  
      my $ConfigItemIDs = $ConfigItemObject->ConfigItemSearch(
!         Number       => 'The ConfigItem Number',  # (optional)
!         ClassIDs     => [9, 8, 7, 6],             # (optional)
!         DeplStateIDs => [1, 2, 3, 4],             # (optional)
!         InciStateIDs => [1, 2, 3, 4],             # (optional)
!         CreateBy     => [1, 2, 3],                # (optional)
!         ChangeBy     => [3, 2, 1],                # (optional)
  
          # config items with created time after ...
***************
*** 768,772 ****
  
          OrderBy => 'Number',  # (optional) default ConfigItemID
!         # (ConfigItemID, Number, ClassID, CurDeplStateID, CurInciStateID,
          # CreateTime, CreateBy, ChangeTime, ChangeBy)
  
--- 781,785 ----
  
          OrderBy => 'Number',  # (optional) default ConfigItemID
!         # (ConfigItemID, Number, ClassID, DeplStateID, InciStateID,
          # CreateTime, CreateBy, ChangeTime, ChangeBy)
  
***************
*** 807,815 ****
      # set array params
      my %ArrayParams = (
!         ClassIDs        => 'class_id',
!         CurDeplStateIDs => 'cur_depl_state_id',
!         CurInciStateIDs => 'cur_inci_state_id',
!         CreateBy        => 'create_by',
!         ChangeBy        => 'change_by',
      );
  
--- 820,828 ----
      # set array params
      my %ArrayParams = (
!         ClassIDs     => 'class_id',
!         DeplStateIDs => 'cur_depl_state_id',
!         InciStateIDs => 'cur_inci_state_id',
!         CreateBy     => 'create_by',
!         ChangeBy     => 'change_by',
      );
  
***************
*** 872,884 ****
      # define order table
      my %OrderByTable = (
!         ConfigItemID   => 'id',
!         Number         => 'configitem_number',
!         ClassID        => 'class_id',
!         CurDeplStateID => 'cur_depl_state_id',
!         CurInciStateID => 'cur_inci_state_id',
!         CreateTime     => 'create_time',
!         CreateBy       => 'create_by',
!         ChangeTime     => 'change_time',
!         ChangeBy       => 'change_by',
      );
  
--- 885,897 ----
      # define order table
      my %OrderByTable = (
!         ConfigItemID => 'id',
!         Number       => 'configitem_number',
!         ClassID      => 'class_id',
!         DeplStateID  => 'cur_depl_state_id',
!         InciStateID  => 'cur_inci_state_id',
!         CreateTime   => 'create_time',
!         CreateBy     => 'create_by',
!         ChangeTime   => 'change_time',
!         ChangeBy     => 'change_by',
      );
  


More information about the cvs-log mailing list