/** * To create a record in the course table of main database. Also handles * the categories links creation. * * @param string $courseSysCode * @param string $courseScreenCode * @param int $sourceCourseId * @param string $courseRepository * @param string $courseDbName * @param string $titular * @param string $email * @param array $categories * @param string $intitule * @param string $languageCourse * @param string $uidCreator * @param bool $visibility * @param string $registration ('open', 'close' or 'validation') * @param string $registrationKey * @return bool success; * @author Christophe Gesche <*****@*****.**> */ function register_course($courseSysCode, $courseScreenCode, $sourceCourseId, $courseRepository, $courseDbName, $titular, $email, $categories, $intitule, $languageCourse = '', $uidCreator, $access, $registration, $registrationKey = '', $visibility = true, $extLinkName = '', $extLinkUrl = '', $publicationDate, $expirationDate, $status, $userLimit) { global $versionDb, $clarolineVersion; $tblList = claro_sql_get_main_tbl(); $tbl_course = $tblList['course']; $tbl_category = $tblList['category']; $tbl_rel_course_category = $tblList['rel_course_category']; // Needed parameters if ($courseSysCode == '') { return claro_failure::set_failure('courseSysCode is missing'); } if ($courseScreenCode == '') { return claro_failure::set_failure('courseScreenCode is missing'); } if ($courseDbName == '') { return claro_failure::set_failure('courseDbName is missing'); } if ($courseRepository == '') { return claro_failure::set_failure('course Repository is missing'); } if ($uidCreator == '') { return claro_failure::set_failure('uidCreator is missing'); } if (!in_array($registration, array('open', 'close', 'validation'))) { return claro_failure::set_failure('wrong registration value'); } // Optionnal settings $languageCourse = !empty($languageCourse) ? $languageCourse : 'english'; $sourceCourseId = !is_null($sourceCourseId) && !empty($sourceCourseId) ? claro_sql_escape($sourceCourseId) : "NULL"; $currentVersionFilePath = get_conf('rootSys') . 'platform/currentVersion.inc.php'; file_exists($currentVersionFilePath) && (require $currentVersionFilePath); $defaultProfileId = claro_get_profile_id('user'); // Insert course $sql = "INSERT INTO `" . $tbl_course . "` SET\n code = '" . claro_sql_escape($courseSysCode) . "',\n sourceCourseId = " . $sourceCourseId . ",\n dbName = '" . claro_sql_escape($courseDbName) . "',\n directory = '" . claro_sql_escape($courseRepository) . "',\n language = '" . claro_sql_escape($languageCourse) . "',\n intitule = '" . claro_sql_escape($intitule) . "',\n visibility = '" . ($visibility ? 'VISIBLE' : 'INVISIBLE') . "',\n access = '" . claro_sql_escape($access) . "',\n registration = '" . claro_sql_escape($registration) . "',\n registrationKey = '" . claro_sql_escape($registrationKey) . "',\n diskQuota = NULL,\n creationDate = FROM_UNIXTIME(" . claro_sql_escape($publicationDate) . "),\n expirationDate = FROM_UNIXTIME(" . claro_sql_escape($expirationDate) . "),\n status = '" . claro_sql_escape($status) . "',\n userLimit = '" . (int) $userLimit . "',\n versionDb = '" . claro_sql_escape($versionDb) . "',\n versionClaro = '" . claro_sql_escape($clarolineVersion) . "',\n lastEdit = NOW(),\n lastVisit = NULL,\n titulaires = '" . claro_sql_escape($titular) . "',\n email = '" . claro_sql_escape($email) . "',\n administrativeNumber = '" . claro_sql_escape($courseScreenCode) . "',\n extLinkName = '" . claro_sql_escape($extLinkName) . "',\n extLinkUrl = '" . claro_sql_escape($extLinkUrl) . "',\n defaultProfileId = " . $defaultProfileId; if (claro_sql_query($sql) == false) { return false; } $courseId = mysql_insert_id(); // Insert categories if (link_course_categories($courseId, $categories) === false) { return false; } // Did we insert a session couse ? if (!is_null($sourceCourseId)) { // If yes, flag its source course $sql = "UPDATE `" . $tbl_course . "`\n SET isSourceCourse = 1\n WHERE cours_id = {$sourceCourseId}"; if (claro_sql_query($sql) == false) { return false; } } return true; }
/** * Create links between current course one or more categories. If there * are no category specified, only the root category is linked. * * @param array of categories * @since 1.10 */ public function linkCategories($categories) { if (!is_null($categories) && !empty($categories)) { link_course_categories($this->id, $categories); } else { $this->backlog->failure(get_lang('Categories list is empty')); } }