Ticket #2198: SiteTree.php.2.diff
| File SiteTree.php.2.diff, 5.2 KB (added by simon_w, 5 years ago) |
|---|
-
sapphire/core/model/SiteTree.php
514 514 if($member && $member->isAdmin()) { 515 515 return true; 516 516 } 517 518 switch(strtolower($perm)) { 519 case 'edit': 520 if((Permission::check('CMS_ACCESS_CMSMain') && 521 (($this->Editors == 'LoggedInUsers' && $member) || 522 ($this->Editors == 'OnlyTheseUsers' && $member && 523 $member->isInGroup($this->EditorsGroup)))) == false) 524 return false; 525 break; 526 527 case 'view': 528 case 'view_page': 529 if(((!$this->Viewers) || ($this->Viewers == 'Anyone') || 530 ($this->Viewers == 'LoggedInUsers' && $member) || 531 ($this->Viewers == 'OnlyTheseUsers' && $member && 532 $member->isInGroup($this->ViewersGroup))) == false) 533 return false; 534 break; 517 518 if(method_exists($this, 'can' . ucfirst($perm))) { 519 $method = 'can' . ucfirst($perm); 520 return $this->$method($member); 535 521 } 522 523 $args = array($perm, $member, true); 524 $this->extend('alternateCan', $args); 525 if($args[2] == false) return false; 536 526 537 527 return true; 538 528 … … 549 539 * 550 540 * @return boolean True if the current user can add children. 551 541 */ 552 public function canAddChildren() { 542 public function canAddChildren($member = null) { 543 if(!isset($member)) { 544 $member = Member::currentUser(); 545 } 546 if($member && $member->isAdmin()) { 547 return true; 548 } 549 550 $args = array($member, true); 551 $this->extend('alternateCanAddChildren', $args); 552 if($args[1] == false) return false; 553 553 554 return $this->canEdit() && $this->stat('allowed_children') != 'none'; 554 555 } 555 556 … … 563 564 * 564 565 * @return boolean True if the current user can view this page. 565 566 */ 566 public function canView() { 567 return $this->can('view'); 567 public function canView($member = null) { 568 if(!isset($member)) { 569 $member = Member::currentUser(); 570 } 571 if($member && $member->isAdmin()) { 572 return true; 573 } 574 575 $args = array($member, true); 576 $this->extend('alternateCanView', $args); 577 if($args[1] == false) return false; 578 579 if(((!$this->Viewers) || ($this->Viewers == 'Anyone') || 580 ($this->Viewers == 'LoggedInUsers' && $member) || 581 ($this->Viewers == 'OnlyTheseUsers' && $member && 582 $member->isInGroup($this->ViewersGroup))) == false) 583 return false; 584 return true; 568 585 } 586 587 /** 588 * This function should return true if the current user can view this 589 * page. 590 * 591 * It can be overloaded to customise the security model for an 592 * application. 593 * 594 * @return boolean True if the current user can view this page. 595 */ 596 public function canView_page($member = null) { 597 if(!isset($member)) { 598 $member = Member::currentUser(); 599 } 600 if($member && $member->isAdmin()) { 601 return true; 602 } 603 604 $args = array($member, true); 605 $this->extend('alternateCanView_page', $args); 606 if($args[1] == false) return false; 607 608 return $this->canView($member); 609 } 569 610 570 611 571 612 /** … … 577 618 * 578 619 * @return boolean True if the current user can delete this page. 579 620 */ 580 public function canDelete() { 621 public function canDelete($member = null) { 622 if(!isset($member)) { 623 $member = Member::currentUser(); 624 } 625 if($member && $member->isAdmin()) { 626 return true; 627 } 628 629 $args = array($member, true); 630 $this->extend('alternateCanDelete', $args); 631 if($args[1] == false) return false; 632 581 633 return $this->stat('can_create') != false; 582 634 } 583 635 … … 592 644 * @return boolean True if the current user can create pages on this 593 645 * class. 594 646 */ 595 public function canCreate() { 647 public function canCreate($member = null) { 648 if(!isset($member)) { 649 $member = Member::currentUser(); 650 } 651 if($member && $member->isAdmin()) { 652 return true; 653 } 654 655 $args = array($member, true); 656 $this->extend('alternateCanCreate', $args); 657 if($args[1] == false) return false; 658 596 659 return $this->stat('can_create') != false || Director::isDev(); 597 660 } 598 661 … … 606 669 * 607 670 * @return boolean True if the current user can edit this page. 608 671 */ 609 public function canEdit() { 610 return $this->can('Edit'); 672 public function canEdit($member = null) { 673 if(!isset($member)) { 674 $member = Member::currentUser(); 675 } 676 if($member && $member->isAdmin()) { 677 return true; 678 } 679 680 $args = array($member, true); 681 $this->extend('alternateCanEdit', $args); 682 if($args[1] == false) return false; 683 684 if((Permission::check('CMS_ACCESS_CMSMain') && 685 (($this->Editors == 'LoggedInUsers' && $member) || 686 ($this->Editors == 'OnlyTheseUsers' && $member && 687 $member->isInGroup($this->EditorsGroup)))) == false) 688 return false; 689 690 return true; 611 691 } 612 692 613 693 /** … … 619 699 * 620 700 * @return boolean True if the current user can publish this page. 621 701 */ 622 public function canPublish() { 702 public function canPublish($member = null) { 703 if(!isset($member)) { 704 $member = Member::currentUser(); 705 } 706 if($member && $member->isAdmin()) { 707 return true; 708 } 709 710 $args = array($member, true); 711 $this->extend('alternateCanPublish', $args); 712 if($args[1] == false) return false; 713 623 714 return $this->canEdit(); 624 715 } 625 716
