/** * Remove the given Role from the given Page only if it (or it's parents) doesn't already remove the Role * * A call to save() should eventually follow, which will save to disk * * @param Role $role * @param Page $page * @return this * */ public function removeRoleFromPage(Role $role, Page $page) { if ($this->pageDoesNotHaveRole($page, $role)) { return $this; } $pageRole = $this->pagesRolesArray->getPageRole($page, $role); if (!$pageRole) { $pageRole = new PageRole(); } $pageRole->setTrackChanges(); $pageRole->page = $page; $pageRole->role = $role; $pageRole->action = '-'; //if(!$page->parent || $this->pageHasRole($page->parent, $role)) $pageRole->redundant = true; $this->pagesRolesArray->add($pageRole); // we trackChange with the $page since PageRoles are saved by Pages::save if ($role->id != Role::ownerRoleID) { $page->trackChange("roles"); } return $this; }