sub getAttachmentFileData { my $self = shift; my $_method = (caller(0))[3]; my $dbgMsg; my $session = $self->SUPER::Session(); # TODO: DEBUGGING $dbgMsg = AXPAttachment->FormatTraceInfo(); $dbgMsg = sprintf $AXPAttachmentResource::MSG_AXPATP610D, $dbgMsg; $session->OutputDebugString($dbgMsg); my %attFlds; my $hasAttachment = 0; # assume we don't have any attachment # create a list of files to transfer from the Attachment object # scan through any associated AttachmentFields and extract file info. my $attFields = $entity->GetAttachmentFields(); %attFlds = ( _ATTACHMENT_FIELDS => $attFields, _COUNT => $attFields->Count(), ); # Process all associated AttachmentField objects for the AttachmentFields object my $afk = $attFlds{_COUNT}; for (my $afx = 0; $afx < $afk; ++$afx) { my $attField = $attFields->Item($afx); my $attAttachments = $attField->GetAttachments(); my $attDisplayNameHeader = $attField->GetDisplayNameHeader(); my $attFieldName = $attField->GetFieldName(); my $attAttachmentsCount = $attAttachments->Count(); my %att; undef %att; # Process all Attachment objects associated with the # Attachments object connected to this AttachmentField object for (my $asx = 0; $asx < $attAttachmentsCount; ++$asx) { my $attachment = $attAttachments->Item($asx); my $attDesc = $attachment->GetDescription(); my $attDispName = $attachment->GetDisplayName(); my $attFileName = $attachment->GetFileName(); my $attFileSize = $attachment->GetFileSize(); $att{$asx} = { _ATTACHMENT => $attachment, _ATTACHMENT_DESCRIPTION => $attDesc, _ATTACHMENT_DISPLAY_NAME => $attDispName, _ATTACHMENT_FILE_NAME => $attFileName, _ATTACHMENT_FILE_SIZE => $attFileSize, }; $hasAttachment = 1; # we got an attachment } $attFlds{$afx} = { _ATTACHMENT_FIELD => $attField, _ATTACHMENTS => $attAttachments, _DISPLAY_NAME_HEADER => $attDisplayNameHeader, _FIELD_NAME => $attFieldName, _ATTACHMENTS_COUNT => $attAttachmentsCount, _ATTACHMENT_HASHREF => \%att, }; } if ($hasAttachment == 0) { %attFlds = (); # no attachment(s) were found, empty the array } # TODO: DEBUGGING $dbgMsg = AXPAttachment->FormatTraceInfo(); $dbgMsg = sprintf $AXPAttachmentResource::MSG_AXPATP611D, $dbgMsg; $session->OutputDebugString($dbgMsg); return \%attFlds; }