/** * 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; }
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; }