Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 2
0
 /**
  * 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'));
     }
 }