/**
  * Updates a given course request in the database.
  * @param int/string $id            The id (an integer number) of the corresponding database record.
  * @param string $wanted_code       The code for the created in the future course.
  * @param string $title
  * @param string $description
  * @param string $category_code
  * @param string $course_language
  * @param string $objetives
  * @param string $target_audience
  * @param int/string $user_id
  * @return bool Returns TRUE on success or FALSE on failure.
  */
 public static function update_course_request($id, $wanted_code, $title, $description, $category_code, $course_language, $objetives, $target_audience, $user_id, $exemplary_content)
 {
     $id = (int) $id;
     $wanted_code = trim($wanted_code);
     $user_id = (int) $user_id;
     $exemplary_content = (bool) $exemplary_content ? 1 : 0;
     if ($wanted_code == '') {
         return false;
     }
     if ($user_id <= 0) {
         return false;
     }
     // Retrieve request data
     $course_request_info = self::get_course_request_info($id);
     if (!is_array($course_request_info)) {
         return false;
     }
     $code = $wanted_code;
     $tutor_name = $course_request_info['tutor_name'];
     $directory = $course_request_info['directory'];
     $visual_code = $course_request_info['visual_code'];
     $request_date = $course_request_info['request_date'];
     $status = $course_request_info['status'];
     $info = $course_request_info['info'];
     if ($wanted_code != $course_request_info['code']) {
         if (self::course_code_exists($wanted_code)) {
             return false;
         }
         $keys = AddCourse::define_course_keys($wanted_code, '');
         if (count($keys)) {
             $visual_code = $keys['currentCourseCode'];
             $code = $keys['currentCourseId'];
             $db_name = $keys['currentCourseDbName'];
             $directory = $keys['currentCourseRepository'];
         } else {
             return false;
         }
     }
     if ($user_id != $course_request_info['code']) {
         $user_info = api_get_user_info($user_id);
         if (is_array($user_info)) {
             $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
         } else {
             $user_id = $course_request_info['code'];
         }
     }
     if ($course_language != $course_request_info['course_language']) {
         $user_info = api_get_user_info($user_id);
         if (is_array($user_info)) {
             $tutor_name = api_get_person_name($user_info['firstname'], $user_info['lastname'], null, null, $course_language);
         }
     }
     $sql = sprintf('UPDATE %s SET
             code = "%s", user_id = "%s", directory = "%s", db_name = "%s",
             course_language = "%s", title = "%s", description = "%s", category_code = "%s",
             tutor_name = "%s", visual_code = "%s", request_date = "%s",
             objetives = "%s", target_audience = "%s", status = "%s", info = "%s", exemplary_content = "%s"
         WHERE id = ' . $id, Database::get_main_table(TABLE_MAIN_COURSE_REQUEST), Database::escape_string($code), intval($user_id), Database::escape_string($directory), Database::escape_string($db_name), Database::escape_string($course_language), Database::escape_string($title), Database::escape_string($description), Database::escape_string($category_code), Database::escape_string($tutor_name), Database::escape_string($visual_code), Database::escape_string($request_date), Database::escape_string($objetives), Database::escape_string($target_audience), Database::escape_string($status), Database::escape_string($info), Database::escape_string($exemplary_content));
     $result_sql = Database::query($sql);
     return $result_sql !== false;
 }
function WSCreateCourseByTitle($params)
{
    global $firstExpirationDelay, $_configuration;
    if (!WSHelperVerifyKey($params)) {
        return return_error(WS_ERROR_SECRET_KEY);
    }
    $table_course = Database::get_main_table(TABLE_MAIN_COURSE);
    $courses_params = $params['courses'];
    $results = array();
    $orig_course_id_value = array();
    foreach ($courses_params as $course_param) {
        $title = $course_param['title'];
        $category_code = 'LANG';
        // TODO: A hard-coded value.
        $wanted_code = '';
        $tutor_firstname = api_get_setting('administratorName');
        $tutor_lastname = api_get_setting('administratorSurname');
        $course_language = 'spanish';
        // TODO: Incorrect default value, it should 'english'.
        if (!empty($course_param['course_language'])) {
            $course_language = $course_param['course_language'];
        }
        $tutor_name = api_get_person_name($tutor_firstname, $tutor_lastname, null, null, $course_language);
        if (!empty($course_param['tutor_name'])) {
            $tutor_name = $course_param['tutor_name'];
        }
        $original_course_id_name = $course_param['original_course_id_name'];
        $original_course_id_value = $course_param['original_course_id_value'];
        $orig_course_id_value[] = $course_param['original_course_id_value'];
        $extra_list = $course_param['extra'];
        // Ensure the database prefix + database name do not get over 40 characters
        $maxlength = 40;
        if (empty($wanted_code)) {
            $wanted_code = CourseManager::generate_course_code(substr($title, 0, $maxlength));
        }
        $courseInfo = CourseManager::getCourseInfoFromOriginalId($original_course_id_value, $original_course_id_name);
        if (!empty($courseInfo)) {
            if ($courseInfo['visibility'] != 0) {
                $sql = "UPDATE {$table_course} SET\n                            course_language='" . Database::escape_string($course_language) . "',\n                            title='" . Database::escape_string($title) . "',\n                            category_code='" . Database::escape_string($category_code) . "',\n                            tutor_name='" . Database::escape_string($tutor_name) . "',\n                            visual_code='" . Database::escape_string($wanted_code) . "',\n                            visibility = '3'\n                        WHERE id ='" . $courseInfo['real_id'] . "'";
                Database::query($sql);
                $results[] = $courseInfo['real_id'];
                continue;
            } else {
                $results[] = 0;
                continue;
            }
        }
        // Set default values.
        if (isset($_user['language']) && $_user['language'] != '') {
            $values['course_language'] = $_user['language'];
        } else {
            $values['course_language'] = api_get_setting('platformLanguage');
        }
        $values['tutor_name'] = api_get_person_name($_user['firstName'], $_user['lastName'], null, null, $values['course_language']);
        $keys = AddCourse::define_course_keys($wanted_code, '', $_configuration['db_prefix']);
        $sql_check = sprintf('SELECT * FROM ' . $table_course . ' WHERE visual_code = "%s"', Database::escape_string($wanted_code));
        $result_check = Database::query($sql_check);
        // I don't know why this api function doesn't work...
        if (Database::num_rows($result_check) < 1) {
            $params = array();
            $params['title'] = $title;
            $params['wanted_code'] = $wanted_code;
            $params['category_code'] = $category_code;
            $params['tutor_name'] = $tutor_name;
            $params['course_language'] = $course_language;
            $params['user_id'] = api_get_user_id();
            //$params['visibility'] = $visibility;
            $course_info = CourseManager::create_course($params);
            if (!empty($course_info)) {
                $course_code = $course_info['code'];
                // Save new fieldlabel into course_field table.
                CourseManager::create_course_extra_field($original_course_id_name, 1, $original_course_id_name, '');
                // Save the external system's id into user_field_value table.
                CourseManager::update_course_extra_field_value($course_code, $original_course_id_name, $original_course_id_value);
                if (is_array($extra_list) && count($extra_list) > 0) {
                    foreach ($extra_list as $extra) {
                        $extra_field_name = $extra['field_name'];
                        $extra_field_value = $extra['field_value'];
                        // Save new fieldlabel into course_field table.
                        CourseManager::create_course_extra_field($extra_field_name, 1, $extra_field_name, '');
                        // Save the external system's id into course_field_value table.
                        CourseManager::update_course_extra_field_value($course_code, $extra_field_name, $extra_field_value);
                    }
                }
            }
            $results[] = $course_code;
            continue;
        } else {
            $results[] = 0;
            continue;
        }
    }
    // end principal foreach
    $count_results = count($results);
    $output = array();
    for ($i = 0; $i < $count_results; $i++) {
        $output[] = array('original_course_id_value' => $orig_course_id_value[$i], 'result' => $results[$i]);
    }
    return $output;
}
class AddCourse extends DbConnection
{
    protected $CourseID;
    protected $CourseName;
    public function __construct()
    {
        if (isset($_POST['Course_id']) && isset($_POST['Course_name'])) {
            $this->CourseID = $_POST['Course_id'];
            $this->CourseName = $_POST['Course_name'];
            $this->script = "success";
            parent::__construct();
        } else {
            parent::__construct();
        }
    }
    public function addData()
    {
        parent::conn();
        if ($this->CourseID && $this->CourseName != null) {
            $sql = "INSERT into courses (COURSE_ID,COURSE_NAME)\n\t\t\tVALUES('{$this->CourseID}','{$this->CourseName}')";
            if (mysqli_query($this->con, $sql)) {
                header("Location:addcourse.php");
            } else {
                echo "Error: " . $sql . "<br>" . mysqli_error($this->con);
            }
        }
    }
}
$addCourse = new AddCourse();
//$addCourse->callData();
$addCourse->addData();
Example #4
0
 /**
  * Creates a file called mysql_dump.sql in the course folder
  * @param $course_code The code of the course
  * @todo Implementation for single database
  */
 public static function create_database_dump($course_code)
 {
     $sql_dump = '';
     $course_code = Database::escape_string($course_code);
     $table_course = Database::get_main_table(TABLE_MAIN_COURSE);
     $sql = "SELECT * FROM {$table_course} WHERE code = '{$course_code}'";
     $res = Database::query($sql);
     $course = Database::fetch_array($res);
     $course_tables = AddCourse::get_course_tables();
     if (!empty($course['id'])) {
         //Cleaning c_x tables
         foreach ($course_tables as $table) {
             $table = Database::get_course_table($table);
             $sql = "SELECT * FROM {$table} WHERE c_id = {$course['id']} ";
             $res_table = Database::query($sql);
             while ($row = Database::fetch_array($res_table, 'ASSOC')) {
                 $row_to_save = array();
                 foreach ($row as $key => $value) {
                     $row_to_save[$key] = $key . "='" . Database::escape_string($row[$key]) . "'";
                 }
                 $sql_dump .= "\nINSERT INTO {$table} SET " . implode(', ', $row_to_save) . ';';
             }
         }
     }
     if (is_dir(api_get_path(SYS_COURSE_PATH) . $course['directory'])) {
         $file_name = api_get_path(SYS_COURSE_PATH) . $course['directory'] . '/mysql_dump.sql';
         $handle = fopen($file_name, 'a+');
         if ($handle !== false) {
             fwrite($handle, $sql_dump);
             fclose($handle);
         } else {
             //TODO trigger exception in a try-catch
         }
     }
 }
Example #5
0
 /**
  * Add course settings and, if not asked otherwise, add a tool link on the course homepage
  * @param int $courseId Course integer ID
  * @param boolean $add_tool_link Whether to add a tool link or not
  * (some tools might just offer a configuration section and act on the backend)
  *
  * @return boolean  False on error, null otherwise
  */
 public function install_course_fields($courseId, $add_tool_link = true)
 {
     $plugin_name = $this->get_name();
     $t_course = Database::get_course_table(TABLE_COURSE_SETTING);
     $courseId = intval($courseId);
     if (empty($courseId)) {
         return false;
     }
     // Adding course settings.
     if (!empty($this->course_settings)) {
         foreach ($this->course_settings as $setting) {
             $variable = $setting['name'];
             $value = '';
             if (isset($setting['init_value'])) {
                 $value = $setting['init_value'];
             }
             $type = 'textfield';
             if (isset($setting['type'])) {
                 $type = $setting['type'];
             }
             if (isset($setting['group'])) {
                 $group = $setting['group'];
                 $sql = "SELECT value\n                            FROM {$t_course}\n                            WHERE\n                                c_id = {$courseId} AND\n                                variable = '" . Database::escape_string($group) . "' AND\n                                subkey = '" . Database::escape_string($variable) . "'\n                            ";
                 $result = Database::query($sql);
                 if (!Database::num_rows($result)) {
                     $params = ['c_id' => $courseId, 'variable' => $group, 'subkey' => $variable, 'value' => $value, 'category' => 'plugins', 'type' => $type];
                     Database::insert($t_course, $params);
                 }
             } else {
                 $sql = "SELECT value FROM {$t_course}\n                            WHERE c_id = {$courseId} AND variable = '{$variable}' ";
                 $result = Database::query($sql);
                 if (!Database::num_rows($result)) {
                     $params = ['c_id' => $courseId, 'variable' => $variable, 'subkey' => $plugin_name, 'value' => $value, 'category' => 'plugins', 'type' => $type];
                     Database::insert($t_course, $params);
                 }
             }
         }
     }
     // Stop here if we don't want a tool link on the course homepage
     if (!$add_tool_link) {
         return true;
     }
     //Add an icon in the table tool list
     $table = Database::get_course_table(TABLE_TOOL_LIST);
     $sql = "SELECT name FROM {$table}\n                WHERE c_id = {$courseId} AND name = '{$plugin_name}' ";
     $result = Database::query($sql);
     if (!Database::num_rows($result)) {
         $tool_link = "{$plugin_name}/start.php";
         //$visibility = AddCourse::string2binary(api_get_setting('course_create_active_tools', $plugin_name));
         $cToolId = AddCourse::generateToolId($courseId);
         Database::insert($table, ['id' => $cToolId, 'c_id' => $courseId, 'name' => $plugin_name, 'link' => $tool_link, 'image' => "{$plugin_name}.png", 'visibility' => 1, 'admin' => 0, 'address' => 'squaregrey.gif', 'added_tool' => 'NO', 'target' => '_self', 'category' => 'plugin', 'session_id' => 0]);
     }
 }