RIGHT JOIN user_department ON hierarchy.id = user_department.department WHERE hierarchy.id IS NULL', function ($item) { Recycle::deleteObject('user_department', $item->id, 'id'); }); Database::get()->query('ALTER TABLE user_department CHANGE `user` `user` INT(11) NOT NULL'); Database::get()->query('ALTER IGNORE TABLE `user_department` ADD UNIQUE KEY `udep_unique` (`user`,`department`), ADD FOREIGN KEY (user) REFERENCES user(id) ON DELETE CASCADE, ADD FOREIGN KEY (department) REFERENCES hierarchy(id) ON DELETE CASCADE'); } // Unique and foreign keys for course_department table if (DBHelper::indexExists('course_department', 'cdep_index')) { Database::get()->query('DROP INDEX `cdep_index` ON course_department'); } if (!DBHelper::indexExists('course_department', 'cdep_unique')) { Database::get()->queryFunc('SELECT course_department.id FROM course RIGHT JOIN course_department ON course.id = course_department.course WHERE course.id IS NULL', function ($item) { Recycle::deleteObject('course_department', $item->id, 'id'); }); Database::get()->queryFunc('SELECT course_department.id FROM hierarchy RIGHT JOIN course_department ON hierarchy.id = course_department.department WHERE hierarchy.id IS NULL', function ($item) { Recycle::deleteObject('course_department', $item->id, 'id'); }); Database::get()->query('ALTER IGNORE TABLE `course_department` ADD UNIQUE KEY `cdep_unique` (`course`,`department`), ADD FOREIGN KEY (course) REFERENCES course(id) ON DELETE CASCADE, ADD FOREIGN KEY (department) REFERENCES hierarchy(id) ON DELETE CASCADE'); }
DBHelper::indexExists('log', 'log_course_id') or Database::get()->query("CREATE INDEX `log_course_id` ON log (course_id)"); DBHelper::indexExists('log', 'log_module_id') or Database::get()->query("CREATE INDEX `log_module_id` ON log (module_id)"); DBHelper::indexExists('logins', 'logins_id_user_id') or Database::get()->query("CREATE INDEX `logins_id_user_id` ON logins(user_id)"); DBHelper::indexExists('logins', 'logins_id_course_id') or Database::get()->query("CREATE INDEX `logins_id_course_id` ON logins(course_id)"); DBHelper::indexExists('lp_rel_learnPath_module', 'lp_rel_learnPath_id') or Database::get()->query("CREATE INDEX `lp_rel_learnPath_id` ON lp_rel_learnPath_module(learnPath_id)"); DBHelper::indexExists('lp_rel_learnPath_module', 'lp_rel_learnPath_id') or Database::get()->query("CREATE INDEX `lp_rel_module_id` ON lp_rel_learnPath_module(module_id)"); DBHelper::indexExists('lp_user_module_progress', 'lp_learnPath_module_id') or Database::get()->query("CREATE INDEX `lp_learnPath_module_id` ON lp_user_module_progress (learnPath_module_id)"); DBHelper::indexExists('lp_user_module_progress', 'lp_user_id') or Database::get()->query("CREATE INDEX `lp_user_id` ON lp_user_module_progress (user_id)"); DBHelper::indexExists('poll_answer_record', 'poll_ans_id_user_id') or Database::get()->query("CREATE INDEX `poll_ans_id_user_id` ON poll_answer_record(user_id)"); DBHelper::indexExists('poll_answer_record', 'poll_ans_id_user_id') or Database::get()->query("CREATE INDEX `poll_ans_id_pid` ON poll_answer_record(pid)"); DBHelper::indexExists('unit_resources', 'unit_res_unit_id') or Database::get()->query("CREATE INDEX `unit_res_unit_id` ON unit_resources (unit_id)"); DBHelper::indexExists('unit_resources', 'unit_res_visible') or Database::get()->query("CREATE INDEX `unit_res_visible` ON unit_resources (visible)"); DBHelper::indexExists('unit_resources', 'unit_res_res_id') or Database::get()->query("CREATE INDEX `unit_res_res_id` ON unit_resources (res_id)"); DBHelper::indexExists('personal_calendar', 'pcal_start') or Database::get()->query('CREATE INDEX `pcal_start` ON personal_calendar (start)'); DBHelper::indexExists('agenda', 'agenda_start') or Database::get()->query('CREATE INDEX `agenda_start` ON agenda (start)'); DBHelper::indexExists('assignment', 'assignment_deadline') or Database::get()->query('CREATE INDEX `assignment_deadline` ON assignment (deadline)'); // ********************************************** // upgrade courses databases // ********************************************** $res = Database::get()->queryArray("SELECT id, code, lang FROM course ORDER BY code"); $total = count($res); $i = 1; foreach ($res as $row) { updateInfo($i / ($total + 1), $langUpgCourse); if (version_compare($oldversion, '2.2', '<')) { updateInfo(-1, $langUpgCourse . " " . $row->code . " 2.2"); upgrade_course_2_2($row->code, $row->lang); } if (version_compare($oldversion, '2.3', '<')) { updateInfo(-1, $langUpgCourse . " " . $row->code . " 2.3"); upgrade_course_2_3($row->code);
/** * @brief upgrade to 2.8 * @global type $langUpgCourse * @global type $global_messages * @param type $code * @param type $lang * @param type $extramessage * */ function upgrade_course_2_8($code, $lang) { global $langUpgCourse, $global_messages; Database::get()->query("USE `$code`"); DBHelper::fieldExists('exercices', 'public', $code) or Database::get()->query("ALTER TABLE `exercices` ADD `public` TINYINT(4) NOT NULL DEFAULT 1 AFTER `active`"); DBHelper::fieldExists('video', 'visible', $code) or Database::get()->query("ALTER TABLE `video` ADD `visible` TINYINT(4) NOT NULL DEFAULT 1 AFTER `date`"); DBHelper::fieldExists('video', 'public', $code) or Database::get()->query("ALTER TABLE `video` ADD `public` TINYINT(4) NOT NULL DEFAULT 1"); DBHelper::fieldExists('videolinks', 'visible', $code) or Database::get()->query("ALTER TABLE `videolinks` ADD `visible` TINYINT(4) NOT NULL DEFAULT 1 AFTER `date`"); DBHelper::fieldExists('videolinks', 'public', $code) or Database::get()->query("ALTER TABLE `videolinks` ADD `public` TINYINT(4) NOT NULL DEFAULT 1"); if (DBHelper::indexExists('dropbox_file', 'UN_filename', $code)) { Database::get()->query("ALTER TABLE dropbox_file DROP index UN_filename"); } Database::get()->query("ALTER TABLE dropbox_file CHANGE description description VARCHAR(500)"); Database::get()->query("UPDATE accueil SET rubrique = " . quote($global_messages['langDropBox'][$lang]) . " WHERE id = 16 AND define_var = 'MODULE_ID_DROPBOX'"); }