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