+=head3 get_marc_contributors
+
+ my $contributors = $biblio->get_marc_contributors;
+
+Get all contributors (but first author) from the MARC record and returns them in an array.
+They are stored in different fields depending on MARC flavour (700..720 for MARC21)
+
+=cut
+
+sub get_marc_contributors {
+ my ( $self, $params ) = @_;
+
+ my ( $mintag, $maxtag, $fields_filter );
+ my $marcflavour = C4::Context->preference('marcflavour');
+
+ if ( $marcflavour eq "UNIMARC" ) {
+ $mintag = "700";
+ $maxtag = "712";
+ $fields_filter = '7..';
+ } else { # marc21/normarc
+ $mintag = "700";
+ $maxtag = "720";
+ $fields_filter = '7..';
+ }
+
+ return $self->_get_marc_authors(
+ {
+ fields_filter => $fields_filter,
+ mintag => $mintag,
+ maxtag => $maxtag
+ }
+ );
+}
+
+=head3 get_marc_authors
+
+ my $authors = $biblio->get_marc_authors;
+
+Get all authors from the MARC record and returns them in an array.
+They are stored in different fields depending on MARC flavour
+(main author from 100 then secondary authors from 700..720).
+
+=cut
+
+sub get_marc_authors {
+ my ( $self, $params ) = @_;
+
+ my ( $mintag, $maxtag, $fields_filter );
+ my $marcflavour = C4::Context->preference('marcflavour');
+
+ if ( $marcflavour eq "UNIMARC" ) {
+ $fields_filter = '200';
+ } else { # marc21/normarc
+ $fields_filter = '100';
+ }
+
+ my @first_authors = @{$self->_get_marc_authors(
+ {
+ fields_filter => $fields_filter,
+ mintag => $mintag,
+ maxtag => $maxtag
+ }
+ )};
+
+ my @other_authors = @{$self->get_marc_contributors};
+
+ return [@first_authors, @other_authors];
+}
+
+