/**
  * Given an institution entity it reurns the course count
  * for that institution
  * @param Institution $ins
  */
 public function getCourseCountByInstitution(Institution $ins)
 {
     $courses = $ins->getCourses();
     $courseCount = 0;
     foreach ($courses as $course) {
         if ($course->getStatus() < 100) {
             $courseCount++;
         }
     }
     return $courseCount;
 }
Пример #2
0
 public function createInstitutionIfNotExists(Institution $institution)
 {
     $em = $this->scraper->getManager();
     $ins = $em->getRepository('ClassCentralSiteBundle:Institution')->findOneBy(array('slug' => $institution->getSlug()));
     if ($ins) {
         // Institution exists
         return $ins;
     }
     if ($this->scraper->doCreate()) {
         $this->scraper->out("NEW INSTITUTION:  {$institution->getName()}");
         if ($this->scraper->doModify()) {
             $em->persist($institution);
             $em->flush();
         }
     }
     return $institution;
 }
 private static function getFromInstitution(Institution $entity)
 {
     $info = new PageHeaderInfo("Institution");
     $info->setName($entity->getName() . ' | Free Online Courses');
     $info->setUrl($entity->getUrl());
     $info->setDescription($entity->getDescription());
     if ($entity->getImageUrl()) {
         $info->setImageUrl($entity->getImageDir() . '/' . $entity->getImageUrl());
     }
     return $info;
 }
Пример #4
0
 public function getAverageRatingForInstitution(Institution $ins)
 {
     $numCourses = 0;
     $numRatings = 0;
     $avgRatingSum = 0;
     $rating = 0;
     foreach ($ins->getCourses() as $course) {
         if ($course->getStatus() == CourseStatus::AVAILABLE) {
             $numCourses++;
             $courseRatings = $this->calculateAverageRating($course->getId());
             $numRatings += $courseRatings['numRatings'];
             $avgRatingSum += $courseRatings['rating'];
         }
     }
     if ($numCourses > 0) {
         $rating = $avgRatingSum / $numCourses;
     }
     return array('rating' => $rating, 'numRatings' => $numRatings);
 }
Пример #5
0
 private function getOnDemandCourse($data = array())
 {
     $dbLanguageMap = $this->dbHelper->getLanguageMap();
     $course = new Course();
     $course->setShortName(substr('coursera_' . $data['elements'][0]['slug'], 0, 49));
     $course->setInitiative($this->initiative);
     $course->setName($data['elements'][0]['name']);
     $course->setDescription($data['elements'][0]['description']);
     $course->setLongDescription(nl2br($data['elements'][0]['description']));
     $course->setStream($this->dbHelper->getStreamBySlug('cs'));
     // Default to Computer Science
     $course->setUrl('https://www.coursera.org/learn/' . $data['elements'][0]['slug']);
     $lang = self::$languageMap[$data['elements']['0']['primaryLanguageCodes'][0]];
     if (isset($dbLanguageMap[$lang])) {
         $course->setLanguage($dbLanguageMap[$lang]);
     } else {
         $this->out("Language not found " . $data['elements']['0']['primaryLanguageCodes'][0]);
     }
     $course->setCertificate(false);
     $course->setVerifiedCertificate($data['elements'][0]['isVerificationEnabled']);
     // Add the university
     foreach ($data['linked']['partners.v1'] as $university) {
         $ins = new Institution();
         $ins->setName($university['name']);
         $ins->setIsUniversity(true);
         $ins->setSlug($university['shortName']);
         $course->addInstitution($this->dbHelper->createInstitutionIfNotExists($ins));
     }
     foreach ($data['linked']['instructors.v1'] as $courseraInstructor) {
         if (!empty($courseraInstructor['fullName'])) {
             $insName = $courseraInstructor['fullName'];
         } else {
             $insName = $courseraInstructor['firstName'] . ' ' . $courseraInstructor['lastName'];
         }
         $course->addInstructor($this->dbHelper->createInstructorIfNotExists($insName));
     }
     // Get Course Details like Syllabus and length
     $courseDetails = json_decode(file_get_contents(sprintf(self::ONDEMAND_OPENCOURSE_API, $data['elements'][0]['slug'])), true);
     if (!empty($courseDetails)) {
         $syllabus = '';
         foreach ($courseDetails['courseMaterial']['elements'] as $item) {
             $syllabus .= "<b>{$item['name']}</b><br/>{$item['description']}<br/><br/>";
         }
         $course->setSyllabus($syllabus);
     }
     // Calculate the length of the course
     $schedule = json_decode(file_get_contents(sprintf(self::ONDEMAND_COURSE_SCHEDULE, $data['elements'][0]['id'])), true);
     if (!empty($schedule)) {
         $length = 0;
         foreach ($schedule['elements'][0]['defaultSchedule']['periods'] as $period) {
             $length += $period['numberOfWeeks'];
         }
         if ($length > 0) {
             $course->setLength($length);
         }
     }
     return $course;
 }
Пример #6
0
 private function getOnDemandCourse($data = array())
 {
     $dbLanguageMap = $this->dbHelper->getLanguageMap();
     $course = new Course();
     $course->setShortName(substr('coursera_' . $data['elements'][0]['slug'], 0, 49));
     $course->setInitiative($this->initiative);
     $course->setName($data['elements'][0]['name']);
     $course->setDescription($data['elements'][0]['description']);
     $course->setLongDescription(nl2br($data['elements'][0]['description']));
     $course->setStream($this->dbHelper->getStreamBySlug('cs'));
     // Default to Computer Science
     $course->setUrl('https://www.coursera.org/learn/' . $data['elements'][0]['slug']);
     $lang = self::$languageMap[$data['elements']['0']['primaryLanguageCodes'][0]];
     if (isset($dbLanguageMap[$lang])) {
         $course->setLanguage($dbLanguageMap[$lang]);
     } else {
         $this->out("Language not found " . $data['elements']['0']['primaryLanguageCodes'][0]);
     }
     $course->setCertificate(false);
     $course->setVerifiedCertificate($data['elements'][0]['isVerificationEnabled']);
     // Add the university
     foreach ($data['linked']['partners.v1'] as $university) {
         $ins = new Institution();
         $ins->setName($university['name']);
         $ins->setIsUniversity(true);
         $ins->setSlug($university['shortName']);
         $course->addInstitution($this->dbHelper->createInstitutionIfNotExists($ins));
     }
     foreach ($data['linked']['instructors.v1'] as $courseraInstructor) {
         if (!empty($courseraInstructor['fullName'])) {
             $insName = $courseraInstructor['fullName'];
         } else {
             $insName = $courseraInstructor['firstName'] . ' ' . $courseraInstructor['lastName'];
         }
         $course->addInstructor($this->dbHelper->createInstructorIfNotExists($insName));
     }
     return $course;
 }