/** * Helper to remove all users from a course * @param bool $keepClasses if true, all classes will be removed too * @param array $profilesToDelete array of profile labels * @param string $registeredBefore date yyyy-mm-dd hh:mm:ss * @param string $registeredAfter date yyyy-mm-dd hh:mm:ss * @return bool false if an error occured * @throws Exception */ public function removeAllUsers($keepClasses = true, $profilesToDelete = array(), $registeredBefore = null, $registeredAfter = null) { if ($keepClasses && (!is_null($registeredBefore) || !is_null($registeredAfter))) { throw new Exception(get_lang('Cannot combine enrolment date filters and class deletion, please delete the classes independently')); } $courseUserList = new Claro_CourseUserList($this->course->courseId, $this->database); if (empty($profilesToDelete)) { $profilesToDelete = array(USER_PROFILE); } $courseUserIdList = $courseUserList->getFilteredUserIdList($profilesToDelete, $registeredBefore, $registeredAfter); $this->removeUserIdListFromCourse($courseUserIdList); if (!$keepClasses) { $courseClassList = new Claro_CourseClassList($this->course, $this->database); foreach ($courseClassList->getClassListIterator() as $class) { $classUserList = new Claro_ClassUserList($class, $this->database); $this->removeUserIdListFromCourse($classUserList->getClassUserIdList(), $class); } } return !$this->result->hasError(); }