mirror of
https://github.com/silverstripe/silverstripe-contentreview
synced 2024-10-22 17:05:47 +02:00
Moved out common functionality to a static method
This commit is contained in:
parent
c904ec1a15
commit
9317dbaa8c
@ -101,26 +101,7 @@ class ContentReviewDefaultSettings extends DataExtension {
|
|||||||
* @return \ArrayList
|
* @return \ArrayList
|
||||||
*/
|
*/
|
||||||
public function ContentReviewOwners() {
|
public function ContentReviewOwners() {
|
||||||
$contentReviewOwners = new ArrayList();
|
return new ArrayList();
|
||||||
$toplevelGroups = $this->OwnerGroups();
|
return SiteTreeContentReview::merge_owners($this->OwnerGroups(), $this->OwnerUsers());
|
||||||
if($toplevelGroups->count()) {
|
|
||||||
$groupIDs = array();
|
|
||||||
foreach($toplevelGroups as $group) {
|
|
||||||
$familyIDs = $group->collateFamilyIDs();
|
|
||||||
if(is_array($familyIDs)) {
|
|
||||||
$groupIDs = array_merge($groupIDs, array_values($familyIDs));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
array_unique($groupIDs);
|
|
||||||
if(count($groupIDs)) {
|
|
||||||
$groupMembers = DataObject::get('Member')->where("\"Group\".\"ID\" IN (" . implode(",",$groupIDs) . ")")
|
|
||||||
->leftJoin("Group_Members", "\"Member\".\"ID\" = \"Group_Members\".\"MemberID\"")
|
|
||||||
->leftJoin("Group", "\"Group_Members\".\"GroupID\" = \"Group\".\"ID\"");
|
|
||||||
$contentReviewOwners->merge($groupMembers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$contentReviewOwners->merge($this->OwnerUsers());
|
|
||||||
$contentReviewOwners->removeDuplicates();
|
|
||||||
return $contentReviewOwners;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,36 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider
|
|||||||
return self::$schedule;
|
return self::$schedule;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Takes a list of groups and members and return a list of unique member
|
||||||
|
*
|
||||||
|
* @param SS_List $groups
|
||||||
|
* @param SS_List $members
|
||||||
|
* @return ArrayList
|
||||||
|
*/
|
||||||
|
public static function merge_owners(SS_List $groups, SS_List $members) {
|
||||||
|
$contentReviewOwners = new ArrayList();
|
||||||
|
if($groups->count()) {
|
||||||
|
$groupIDs = array();
|
||||||
|
foreach($groups as $group) {
|
||||||
|
$familyIDs = $group->collateFamilyIDs();
|
||||||
|
if(is_array($familyIDs)) {
|
||||||
|
$groupIDs = array_merge($groupIDs, array_values($familyIDs));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
array_unique($groupIDs);
|
||||||
|
if(count($groupIDs)) {
|
||||||
|
$groupMembers = DataObject::get('Member')->where("\"Group\".\"ID\" IN (" . implode(",",$groupIDs) . ")")
|
||||||
|
->leftJoin("Group_Members", "\"Member\".\"ID\" = \"Group_Members\".\"MemberID\"")
|
||||||
|
->leftJoin("Group", "\"Group_Members\".\"GroupID\" = \"Group\".\"ID\"");
|
||||||
|
$contentReviewOwners->merge($groupMembers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$contentReviewOwners->merge($members);
|
||||||
|
$contentReviewOwners->removeDuplicates();
|
||||||
|
return $contentReviewOwners;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param \FieldList $actions
|
* @param \FieldList $actions
|
||||||
@ -189,27 +219,7 @@ class SiteTreeContentReview extends DataExtension implements PermissionProvider
|
|||||||
* @return \ArrayList
|
* @return \ArrayList
|
||||||
*/
|
*/
|
||||||
public function ContentReviewOwners() {
|
public function ContentReviewOwners() {
|
||||||
$contentReviewOwners = new ArrayList();
|
return SiteTreeContentReview::merge_owners($this->OwnerGroups(), $this->OwnerUsers());
|
||||||
$toplevelGroups = $this->OwnerGroups();
|
|
||||||
if($toplevelGroups->count()) {
|
|
||||||
$groupIDs = array();
|
|
||||||
foreach($toplevelGroups as $group) {
|
|
||||||
$familyIDs = $group->collateFamilyIDs();
|
|
||||||
if(is_array($familyIDs)) {
|
|
||||||
$groupIDs = array_merge($groupIDs, array_values($familyIDs));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
array_unique($groupIDs);
|
|
||||||
if(count($groupIDs)) {
|
|
||||||
$groupMembers = DataObject::get('Member')->where("\"Group\".\"ID\" IN (" . implode(",",$groupIDs) . ")")
|
|
||||||
->leftJoin("Group_Members", "\"Member\".\"ID\" = \"Group_Members\".\"MemberID\"")
|
|
||||||
->leftJoin("Group", "\"Group_Members\".\"GroupID\" = \"Group\".\"ID\"");
|
|
||||||
$contentReviewOwners->merge($groupMembers);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$contentReviewOwners->merge($this->OwnerUsers());
|
|
||||||
$contentReviewOwners->removeDuplicates();
|
|
||||||
return $contentReviewOwners;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,17 +26,6 @@ class ContentReviewCMSPageEditControllerTest extends FunctionalTest {
|
|||||||
$controller->reviewed(array('ID'=>'FAIL', 'Message' => null), $dummyForm);
|
$controller->reviewed(array('ID'=>'FAIL', 'Message' => null), $dummyForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testReviewedThrowsExceptionWithWrongAccess() {
|
|
||||||
$visitor = $this->objFromFixture('Member', 'visitor');
|
|
||||||
$this->loginAs($visitor);
|
|
||||||
$page = $this->objFromFixture('Page', 'home');
|
|
||||||
$data = array(
|
|
||||||
'action_reviewed' => 1
|
|
||||||
);
|
|
||||||
$response = $this->post('admin/pages/edit/EditForm', $data);
|
|
||||||
$this->assertEquals(403, $response->getStatusCode());
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testReviewedWithAuthor() {
|
public function testReviewedWithAuthor() {
|
||||||
$author = $this->objFromFixture('Member', 'author');
|
$author = $this->objFromFixture('Member', 'author');
|
||||||
$this->loginAs($author);
|
$this->loginAs($author);
|
||||||
|
Loading…
Reference in New Issue
Block a user