+=head2 AcceptShare
+
+ my $result= AcceptShare($shelfnumber, $key, $borrowernumber);
+
+Checks acceptation of a share request.
+Key must be found for this shelf. Invitation must not have expired.
+Returns true when accepted, false otherwise.
+
+=cut
+
+sub AcceptShare {
+ my ($shelfnumber, $key, $borrowernumber)= @_;
+ return if !$shelfnumber || !$key || !$borrowernumber;
+
+ my $sql;
+ my $dbh = C4::Context->dbh;
+ $sql="
+UPDATE virtualshelfshares
+SET invitekey=NULL, sharedate=NOW(), borrowernumber=?
+WHERE shelfnumber=? AND invitekey=? AND (sharedate + INTERVAL ? DAY) >NOW()
+ ";
+ my $i= $dbh->do($sql, undef, ($borrowernumber, $shelfnumber, $key, SHARE_INVITATION_EXPIRY_DAYS));
+ return if !defined($i) || !$i || $i eq '0E0'; #not found
+ return 1;
+}
+
+=head2 IsSharedList
+
+ my $bool= IsSharedList( $shelfnumber );
+
+IsSharedList checks if a (private) list has shares.
+Note that such a check would not be useful for public lists. A public list has
+no shares, but is visible for anyone by nature..
+Used to determine the list type in the display of Your lists (all private).
+Returns boolean value.
+
+=cut
+
+sub IsSharedList {
+ my ($shelfnumber) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sql="SELECT id FROM virtualshelfshares WHERE shelfnumber=? AND borrowernumber IS NOT NULL";
+ my $sth = $dbh->prepare($sql);
+ $sth->execute($shelfnumber);
+ my ($rv)= $sth->fetchrow_array;
+ return defined($rv);
+}