示例#1
0
 public static function syncBadges($userid, $badges)
 {
     if (isset($badges->added) && is_array($badges->added)) {
         foreach ($badges->added as $badge) {
             BadgeDisplay::__DisplayBadges($userid, 'getBadges', $badge->id, true);
         }
     }
     $badges = BadgeDisplay::__DisplayBadges($userid, 'getBadges', null, true);
     $badges = !empty($badges) ? $badges : array();
     self::send($badges);
 }
示例#2
0
 private function __badges_bag()
 {
     require_once 'clinique_badges_bag.php';
     $callFor = required_param('callFor', PARAM_RAW_TRIMMED);
     $uid = required_param('uid', PARAM_RAW_TRIMMED);
     $bid = optional_param('bid', false, PARAM_RAW);
     BadgeDisplay::__DisplayBadges($uid, $callFor, $bid);
 }
 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);
 }