private function __csv() { require_once 'clinique_csv.php'; $retailer = required_param('csv', PARAM_RAW_TRIMMED); ProgressPercent::__analyseCSV($csv); }
public static function __fetchCompleteUserData($userid, $from) { global $DB; $serverTime = time(); $courses = core_enrol_external::get_users_courses_subcat_offline($userid, self::COURSE_CATEGORY_ID); $course_enrols = "SELECT courseid, timemodified FROM (\n\t\t\tSELECT ue.id, userid, courseid, ue.timemodified FROM mdl_enrol e \n\t\t\tJOIN mdl_user_enrolments ue ON e.id = ue.enrolid\n\t\t\tWHERE ue.userid = ? ORDER BY timemodified DESC) tmp\n\t\t\tGROUP BY userid, courseid"; $user_cohort_course = $DB->get_records_sql($course_enrols, array($userid)); $userData = array(); $topics = array(); $modules = array(); $quizDelta = array(); $players = array(); $course_module_dependencies = array(); $activeCourses = array(); foreach ($courses as $i => $course) { $moduleIds = array(); //@TODO performance - courses could have skipped when fetching from db itself rather than skipping it when iterating. $timemodified = $course['timemodified'] > $user_cohort_course[$course['id']]->timemodified ? $course['timemodified'] : $user_cohort_course[$course['id']]->timemodified; $isnewenrol = !empty($from) && $user_cohort_course[$course['id']]->timemodified > $from; if (!empty($from) && $timemodified < $from) { unset($courses[$i]); } $fromtimestamp = !empty($isnewenrol) ? null : $from; try { $topicsWithModules = core_course_external::get_course_contents($course['id'], array(), $fromtimestamp); $topics = array_merge($topics, self::extractTopics($course['id'], $topicsWithModules, $fromtimestamp)); foreach ($topicsWithModules as $topicWithModule) { if (isset($topicWithModule['modules']) && is_array($topicWithModule['modules'])) { $modules = array_merge($modules, self::extractModules($course['id'], $topicWithModule['id'], $topicWithModule['modules'], $userid, $fromtimestamp)); $moduleIds = array_merge($moduleIds, self::extractModuleIds($course['id'], $topicWithModule['id'], $topicWithModule['modules'], $userid, $fromtimestamp)); $quizDelta = array_merge($quizDelta, self::extractQuizDeltaSync($course['id'], $topicWithModule['id'], $topicWithModule['modules'], $userid)); } } $cID = $course['id']; $activecourse_mod = $moduleIds; $activeCourses[] = array("id" => $cID, "modules" => $activecourse_mod); $player = PlayersPercent::__analysePercentage($course['id'], $userid, true); $player = array_merge(array('courseid' => $course['id']), $player); $players[] = $player; $module_hierarchy = self::getModuleIdsByDependency($course['id']); if (!empty($module_hierarchy)) { $course_module_dependencies = array_merge($course_module_dependencies, $module_hierarchy); } } catch (Exception $ex) { } } $courses = array_values($courses); $userData = new stdClass(); $userData->user = self::getProfileDetails($userid); $userData->user_cohorts = self::getUserCohorts($userid); $userData->activeCourses = array_merge($activeCourses, self::getActiveCids($userid, $from)); $userData->course_categories = core_course_external::get_categories(); $userData->courses = $courses; $userData->topics = $topics; $userData->modules = $modules; $userData->module_dependencies = $course_module_dependencies; $userData->completed_modules = self::getCompletedModuleIds($userid); $userData->bookmarks = self::getBookmarks($userid); $userData->notes = self::getNotes($userid, $from); $userData->progress = ProgressPercent::__analyseProgressPercentage($userid, true); $userData->players = $players; $userData->favorites = Favorite::fetchAll($userid, true); $userData->badges = BadgeDisplay::__DisplayBadges($userid, 'getBadges', null, true); $userData->news = self::_NewsData($userid, $from); $userData->resources = self::_ResourcesData($userid, $from); $userData->quizsync = $quizDelta; $userData->server_time = $serverTime; $userData->contentsize = self::getContentSize($from, $courses, $modules); $response = new CliniqueServiceResponce(); $response->response(false, null, $userData); }