/** * 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(); }
/** * helper to register a class (and recursively register all its subclasses) to a course * @param Claro_Class $claroClass * @param Claro_Course $courseObj * @param Claro_BatchRegistrationResult $result * @return Claro_BatchRegistrationResult * @since Claroline 1.11.9 */ function object_register_class_to_course($claroClass, $courseObj, $result) { if (!$claroClass->isRegisteredToCourse($courseObj->courseId)) { $claroClass->registerToCourse($courseObj->courseId); $claroClassUserList = new Claro_ClassUserList($claroClass); $courseUserList = new Claro_BatchCourseRegistration($courseObj, Claroline::getDatabase(), $result); $userAlreadyInClass = $claroClassUserList->getClassUserIdList(true); $courseUserList->addUserIdListToCourse($claroClassUserList->getClassUserIdList(), $claroClass, true, $userAlreadyInClass, true); if ($claroClass->hasSubclasses()) { pushClaroMessage("Class has subclass", 'debug'); foreach ($claroClass->getSubClassesIterator() as $subClass) { pushClaroMessage("Process subclass{$subClass->getName()}", 'debug'); $result = object_register_class_to_course($subClass, $courseObj, $result); } } else { pushClaroMessage("Class has no subclass", 'debug'); } return $result; } else { // already registered return $result; } }