|
Lines 434-439
ShelfPossibleAction($loggedinuser, $shelfnumber, $action);
Link Here
|
| 434 |
C<$loggedinuser,$shelfnumber,$action> |
434 |
C<$loggedinuser,$shelfnumber,$action> |
| 435 |
|
435 |
|
| 436 |
$action can be "view", "add", "delete", "manage", "new_public", "new_private". |
436 |
$action can be "view", "add", "delete", "manage", "new_public", "new_private". |
|
|
437 |
New additional actions are: invite, acceptshare. |
| 437 |
Note that add/delete here refers to adding/deleting entries from the list. Deleting the list itself falls under manage. |
438 |
Note that add/delete here refers to adding/deleting entries from the list. Deleting the list itself falls under manage. |
| 438 |
new_public and new_private refers to creating a new public or private list. |
439 |
new_public and new_private refers to creating a new public or private list. |
| 439 |
The distinction between deleting your own entries from the list or entries from |
440 |
The distinction between deleting your own entries from the list or entries from |
|
Lines 441-446
others is made in DelFromShelf.
Link Here
|
| 441 |
|
442 |
|
| 442 |
Returns 1 if the user can do the $action in the $shelfnumber shelf. |
443 |
Returns 1 if the user can do the $action in the $shelfnumber shelf. |
| 443 |
Returns 0 otherwise. |
444 |
Returns 0 otherwise. |
|
|
445 |
For the actions invite and acceptshare a second errorcode is returned if the |
| 446 |
result is false. See opac-shareshelf.pl |
| 444 |
|
447 |
|
| 445 |
=cut |
448 |
=cut |
| 446 |
|
449 |
|
|
Lines 490-495
sub ShelfPossibleAction {
Link Here
|
| 490 |
#DelFromShelf checks the situation per biblio |
493 |
#DelFromShelf checks the situation per biblio |
| 491 |
return 1 if $user>0 && ($shelf->{allow_delete_own}==1 || $shelf->{allow_delete_other}==1); |
494 |
return 1 if $user>0 && ($shelf->{allow_delete_own}==1 || $shelf->{allow_delete_other}==1); |
| 492 |
} |
495 |
} |
|
|
496 |
elsif($action eq 'invite') { |
| 497 |
#for sharing you must be the owner and the list must be private |
| 498 |
if( $shelf->{category}==1 ) { |
| 499 |
return 1 if $shelf->{owner}==$user; |
| 500 |
return (0, 4); # code 4: should be owner |
| 501 |
} |
| 502 |
else { |
| 503 |
return (0, 5); # code 5: should be private list |
| 504 |
} |
| 505 |
} |
| 506 |
elsif($action eq 'acceptshare') { |
| 507 |
#the key for accepting is checked later in AcceptShare |
| 508 |
#you must not be the owner, list must be private |
| 509 |
if( $shelf->{category}==1 ) { |
| 510 |
return (0, 8) if $shelf->{owner}==$user; |
| 511 |
#code 8: should not be owner |
| 512 |
return 1; |
| 513 |
} |
| 514 |
else { |
| 515 |
return (0, 5); # code 5: should be private list |
| 516 |
} |
| 517 |
} |
| 493 |
elsif($action eq 'manage') { |
518 |
elsif($action eq 'manage') { |
| 494 |
return 1 if $user && $shelf->{owner}==$user; |
519 |
return 1 if $user && $shelf->{owner}==$user; |
| 495 |
} |
520 |
} |
|
Lines 667-672
sub AddShare {
Link Here
|
| 667 |
$dbh->do($sql, undef, ($shelfnumber, $key, SHARE_INVITATION_EXPIRY_DAYS)); |
692 |
$dbh->do($sql, undef, ($shelfnumber, $key, SHARE_INVITATION_EXPIRY_DAYS)); |
| 668 |
} |
693 |
} |
| 669 |
|
694 |
|
|
|
695 |
=head2 AcceptShare |
| 696 |
|
| 697 |
my $result= AcceptShare($shelfnumber, $key, $borrowernumber); |
| 698 |
|
| 699 |
Checks acceptation of a share request. |
| 700 |
Key must be found for this shelf. Invitation must not have expired. |
| 701 |
Returns true when accepted, false otherwise. |
| 702 |
|
| 703 |
=cut |
| 704 |
|
| 705 |
sub AcceptShare { |
| 706 |
my ($shelfnumber, $key, $borrowernumber)= @_; |
| 707 |
return if !$shelfnumber || !$key || !$borrowernumber; |
| 708 |
|
| 709 |
my $sql; |
| 710 |
my $dbh = C4::Context->dbh; |
| 711 |
$sql=" |
| 712 |
UPDATE virtualshelfshares |
| 713 |
SET invitekey=NULL, sharedate=NULL, borrowernumber=? |
| 714 |
WHERE shelfnumber=? AND invitekey=? AND sharedate>NOW() |
| 715 |
"; |
| 716 |
my $i= $dbh->do($sql, undef, ($borrowernumber, $shelfnumber, $key)); |
| 717 |
return if !defined($i) || !$i || $i eq '0E0'; #not found |
| 718 |
return 1; |
| 719 |
} |
| 720 |
|
| 721 |
|
| 670 |
# internal subs |
722 |
# internal subs |
| 671 |
|
723 |
|
| 672 |
sub _shelf_count { |
724 |
sub _shelf_count { |