/** * Execute. */ public function execute() { mtrace('Sync cohort roles...'); $result = api::sync_all_cohort_roles(); mtrace('Added ' . count($result['rolesadded'])); mtrace('Removed ' . count($result['rolesremoved'])); }
public function test_sync_all_cohort_roles() { $this->setAdminUser(); $params = (object) array('userid' => $this->userassignto->id, 'roleid' => $this->roleid, 'cohortid' => $this->cohort->id); $result = api::create_cohort_role_assignment($params); // Verify roles are assigned when users enter the cohort. $sync = api::sync_all_cohort_roles(); $rolesadded = array(array('useridassignedto' => $this->userassignto->id, 'useridassignedover' => $this->userassignover->id, 'roleid' => $this->roleid)); $rolesremoved = array(); $expected = array('rolesadded' => $rolesadded, 'rolesremoved' => $rolesremoved); $this->assertEquals($sync, $expected); // Verify roles are removed when users leave the cohort. cohort_remove_member($this->cohort->id, $this->userassignover->id); $sync = api::sync_all_cohort_roles(); $rolesadded = array(); $rolesremoved = array(array('useridassignedto' => $this->userassignto->id, 'useridassignedover' => $this->userassignover->id, 'roleid' => $this->roleid)); $expected = array('rolesadded' => $rolesadded, 'rolesremoved' => $rolesremoved); $this->assertEquals($sync, $expected); // Verify roles assigned by any other component are not removed. $usercontext = context_user::instance($this->userassignover->id); role_assign($this->roleid, $this->userassignto->id, $usercontext->id); $sync = api::sync_all_cohort_roles(); $rolesadded = array(); $rolesremoved = array(); $expected = array('rolesadded' => $rolesadded, 'rolesremoved' => $rolesremoved); $this->assertEquals($sync, $expected); // Remove manual role assignment. role_unassign($this->roleid, $this->userassignto->id, $usercontext->id); // Add someone to the cohort again... cohort_add_member($this->cohort->id, $this->userassignover->id); $sync = api::sync_all_cohort_roles(); $rolesadded = array(array('useridassignedto' => $this->userassignto->id, 'useridassignedover' => $this->userassignover->id, 'roleid' => $this->roleid)); $rolesremoved = array(); $expected = array('rolesadded' => $rolesadded, 'rolesremoved' => $rolesremoved); $this->assertEquals($sync, $expected); // Verify no fatal errors when a cohort is deleted. cohort_delete_cohort($this->cohort); $sync = api::sync_all_cohort_roles(); $rolesadded = array(); $rolesremoved = array(array('useridassignedto' => $this->userassignto->id, 'useridassignedover' => $this->userassignover->id, 'roleid' => $this->roleid)); $expected = array('rolesadded' => $rolesadded, 'rolesremoved' => $rolesremoved); $this->assertEquals($sync, $expected); }