Miscellaneous Config Options/get users owned eprints

From EPrints Documentation
Revision as of 12:27, 1 October 2024 by Alex-ball (talk | contribs)
Jump to: navigation, search

This example should work with v3.4.6+.

Prior to v3.4.6 defining this method resulted in unexpected behaviour when eprint_status checkboxes were used on the Manage deposits page.

Example

$c->{get_users_owned_eprints} = sub 
{
    my( $session, $user, %opts ) = @_;
    # for non-editorial accounts, return the normal list
    if( $user->get_type ne "editor" )
    {
        return $user->owned_eprints_list_actual( %opts );
    }
    # only interested in editor accounts now
    # allow editors to see their items, and items from a specific userid e.g. 99999
    my $extra_userid = 99999;
    my $searchexp = $opts{dataset}->prepare_search( %opts );
    $searchexp->add_field( $opts{dataset}->field( "userid" ), $user->id . " $extra_userid", "IN", "ANY" );
    return $searchexp->perform_search;
};

Prior to v3.4.6, this function was passed a different set of parameters, thus search options had to be hard-coded:

# v3.4.5 and earlier
$c->{get_users_owned_eprints} = sub 
{
    my( $session, $user, $dataset ) = @_;
    my $searchexp = new EPrints::Search(
        session => $session,
        dataset => $dataset,
        # plus any other options
    );
    # Add fields to $searchexp here
    return $searchexp->perform_search;
};