/**
  * Given an array built from edX csv returns a course entity
  * @param array $c
  */
 private function getCourseEntity($c = array())
 {
     $defaultStream = $this->dbHelper->getStreamBySlug('cs');
     $langMap = $this->dbHelper->getLanguageMap();
     $defaultLanguage = $langMap['English'];
     $course = new Course();
     $course->setShortName($this->getShortName($c));
     $course->setInitiative($this->initiative);
     $course->setName($c['course-code'] . ': ' . $c['title']);
     $course->setDescription($c['description']);
     $course->setLongDescription(nl2br($c['description']));
     $course->setLanguage($defaultLanguage);
     $course->setStream($defaultStream);
     // Default to Computer Science
     $course->setVideoIntro($c['course-video-youtube']);
     $course->setUrl($c['link']);
     $course->setCertificate(false);
     $course->setVerifiedCertificate($c['course-verified']);
     // Calculate length
     $length = null;
     if (!empty($c['course-end'])) {
         $start = new \DateTime($c['course-start']);
         $end = new \DateTime($c['course-end']);
         $length = ceil($start->diff($end)->days / 7);
     }
     $course->setLength($length);
     return $course;
 }
Exemple #2
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;
 }
 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;
 }
 private function getCourseEntity($udacityCourse = array())
 {
     $defaultStream = $this->dbHelper->getStreamBySlug('cs');
     $langMap = $this->dbHelper->getLanguageMap();
     $defaultLanguage = $langMap['English'];
     $course = new Course();
     $course->setShortName(substr('udacity_' . $udacityCourse['slug'], 0, 50));
     $course->setInitiative($this->initiative);
     $course->setName($udacityCourse['title']);
     $course->setDescription($udacityCourse['short_summary']);
     $course->setLanguage($defaultLanguage);
     $course->setStream($defaultStream);
     // Default to Computer Science
     $course->setCertificate(false);
     $course->setUrl($udacityCourse['homepage']);
     $course->setSyllabus(nl2br($udacityCourse['syllabus']));
     $course->setWorkloadMin(6);
     $course->setWorkloadMax(6);
     // Calculate length
     $length = null;
     $expectedDuration = $udacityCourse['expected_duration'];
     if ($udacityCourse['expected_duration_unit'] == 'months') {
         $length = $expectedDuration * 4;
     } elseif ($udacityCourse['expected_duration_unit'] == 'weeks') {
         $length = $expectedDuration;
     }
     $course->setLength($length);
     // Calculate Description
     $course->setLongDescription(nl2br($udacityCourse['summary'] . '<br/><br/><b>Why Take This Course?</b><br/>' . $udacityCourse['expected_learning']));
     // Intro Video
     if (!empty($udacityCourse['teaser_video']['youtube_url'])) {
         $course->setVideoIntro($udacityCourse['teaser_video']['youtube_url']);
     }
     return $course;
 }
 private function getCourseEntity($c = array())
 {
     $defaultStream = $this->dbHelper->getStreamBySlug('cs');
     $langMap = $this->dbHelper->getLanguageMap();
     $defaultLanguage = $langMap['English'];
     $course = new Course();
     $course->setShortName($c['uuid']);
     $course->setInitiative($this->initiative);
     $course->setName($c['name']);
     $course->setDescription($c['introduction']);
     $course->setLongDescription($c['description']);
     $course->setLanguage($defaultLanguage);
     $course->setStream($defaultStream);
     // Default to Computer Science
     $course->setUrl($c['url']);
     $course->setCertificate($c['has_certificates']);
     $course->setWorkloadMin($c['hours_per_week']);
     $course->setWorkloadMax($c['hours_per_week']);
     // Get the length
     if ($c['runs']) {
         $course->setLength($c['runs'][0]['duration_in_weeks']);
     }
     return $course;
 }