Пример #1
0
 /**
  * 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();
 }
Пример #2
0
/**
 * 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;
    }
}