parent
ad23368aed
commit
09bd04ce23
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,267 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
CREATE TABLE track_c_browsers ( |
||||
id int NOT NULL auto_increment, |
||||
browser varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_countries ( |
||||
id int NOT NULL auto_increment, |
||||
code varchar(40) NOT NULL default '', |
||||
country varchar(50) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_os ( |
||||
id int NOT NULL auto_increment, |
||||
os varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_providers ( |
||||
id int NOT NULL auto_increment, |
||||
provider varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_referers ( |
||||
id int NOT NULL auto_increment, |
||||
referer varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_access ( |
||||
access_id int NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL default '', |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int NOT NULL default 0, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code) |
||||
); |
||||
|
||||
CREATE TABLE track_e_lastaccess ( |
||||
access_id bigint NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL, |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int unsigned default NULL, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code), |
||||
KEY access_session_id (access_session_id) |
||||
); |
||||
|
||||
|
||||
CREATE TABLE track_e_default ( |
||||
default_id int NOT NULL auto_increment, |
||||
default_user_id int unsigned NOT NULL default 0, |
||||
default_cours_code varchar(40) NOT NULL default '', |
||||
default_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
default_event_type varchar(20) NOT NULL default '', |
||||
default_value_type varchar(20) NOT NULL default '', |
||||
default_value tinytext NOT NULL, |
||||
PRIMARY KEY (default_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_downloads ( |
||||
down_id int NOT NULL auto_increment, |
||||
down_user_id int unsigned default NULL, |
||||
down_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
down_cours_id varchar(40) NOT NULL default '', |
||||
down_doc_path varchar(255) NOT NULL default '', |
||||
down_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (down_id), |
||||
KEY down_user_id (down_user_id), |
||||
KEY down_cours_id (down_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_exercices ( |
||||
exe_id int NOT NULL auto_increment, |
||||
exe_user_id int unsigned default NULL, |
||||
exe_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
exe_cours_id varchar(40) NOT NULL default '', |
||||
exe_exo_id mediumint unsigned NOT NULL default 0, |
||||
exe_result float(6,2) NOT NULL default 0, |
||||
exe_weighting float(6,2) NOT NULL default 0, |
||||
PRIMARY KEY (exe_id), |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
ALTER TABLE track_e_exercices ADD status varchar(20) NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD data_tracking text NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD start_date datetime NOT NULL default '0000-00-00 00:00:00'; |
||||
ALTER TABLE track_e_exercices ADD steps_counter SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD session_id SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD INDEX ( session_id ) ; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_item_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD exe_duration int UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD COLUMN expired_time_control datetime NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
|
||||
CREATE TABLE track_e_attempt ( |
||||
exe_id int default NULL, |
||||
user_id int NOT NULL default 0, |
||||
question_id int NOT NULL default 0, |
||||
answer text NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
marks float(6,2) NOT NULL default 0, |
||||
course_code varchar(40) NOT NULL default '', |
||||
position int default 0, |
||||
tms datetime NOT NULL default '0000-00-00 00:00:00', |
||||
session_id INT NOT NULL DEFAULT 0 |
||||
); |
||||
ALTER TABLE track_e_attempt ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (user_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (session_id); |
||||
|
||||
CREATE TABLE track_e_attempt_recording ( |
||||
exe_id int unsigned NOT NULL, |
||||
question_id int unsigned NOT NULL, |
||||
marks int NOT NULL, |
||||
insert_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
author int unsigned NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
session_id INT NOT NULL DEFAULT 0 |
||||
); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (session_id); |
||||
|
||||
CREATE TABLE track_e_hotpotatoes ( |
||||
exe_name VARCHAR( 255 ) NOT NULL , |
||||
exe_user_id int unsigned DEFAULT NULL , |
||||
exe_date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL , |
||||
exe_cours_id varchar(40) NOT NULL , |
||||
exe_result smallint default 0 NOT NULL , |
||||
exe_weighting smallint default 0 NOT NULL, |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_links ( |
||||
links_id int NOT NULL auto_increment, |
||||
links_user_id int unsigned default NULL, |
||||
links_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
links_cours_id varchar(40) NOT NULL default '' , |
||||
links_link_id int NOT NULL default 0, |
||||
links_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (links_id), |
||||
KEY links_cours_id (links_cours_id), |
||||
KEY links_user_id (links_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_login ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
logout_date datetime NULL default NULL, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_online ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
course varchar(40) default NULL, |
||||
session_id INT NOT NULL DEFAULT 0, |
||||
access_url_id INT NOT NULL DEFAULT 1, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_open ( |
||||
open_id int NOT NULL auto_increment, |
||||
open_remote_host tinytext NOT NULL, |
||||
open_agent tinytext NOT NULL, |
||||
open_referer tinytext NOT NULL, |
||||
open_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
PRIMARY KEY (open_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_uploads ( |
||||
upload_id int NOT NULL auto_increment, |
||||
upload_user_id int unsigned default NULL, |
||||
upload_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
upload_cours_id varchar(40) NOT NULL default '', |
||||
upload_work_id int NOT NULL default 0, |
||||
upload_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (upload_id), |
||||
KEY upload_user_id (upload_user_id), |
||||
KEY upload_cours_id (upload_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_course_access ( |
||||
course_access_id int NOT NULL auto_increment, |
||||
course_code varchar(40) NOT NULL, |
||||
user_id int NOT NULL, |
||||
login_course_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
logout_course_date datetime default NULL, |
||||
counter int NOT NULL, |
||||
session_id int NOT NULL default 0, |
||||
PRIMARY KEY (course_access_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_hotspot ( |
||||
hotspot_id int NOT NULL auto_increment, |
||||
hotspot_user_id int NOT NULL, |
||||
hotspot_course_code varchar(50) NOT NULL, |
||||
hotspot_exe_id int NOT NULL, |
||||
hotspot_question_id int NOT NULL, |
||||
hotspot_answer_id int NOT NULL, |
||||
hotspot_correct tinyint(3) unsigned NOT NULL, |
||||
hotspot_coordinate text NOT NULL, |
||||
PRIMARY KEY (hotspot_id), |
||||
KEY hotspot_course_code (hotspot_course_code), |
||||
KEY hotspot_user_id (hotspot_user_id), |
||||
KEY hotspot_exe_id (hotspot_exe_id), |
||||
KEY hotspot_question_id (hotspot_question_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_item_property ( |
||||
id int NOT NULL auto_increment PRIMARY KEY, |
||||
course_id int NOT NULL, |
||||
item_property_id int NOT NULL, |
||||
title varchar(255), |
||||
content text, |
||||
progress int NOT NULL default 0, |
||||
lastedit_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
lastedit_user_id int NOT NULL, |
||||
session_id int NOT NULL default 0 |
||||
); |
||||
|
||||
ALTER TABLE track_e_course_access ADD INDEX (user_id); |
||||
ALTER TABLE track_e_course_access ADD INDEX (login_course_date); |
||||
ALTER TABLE track_e_course_access ADD INDEX (course_code); |
||||
ALTER TABLE track_e_course_access ADD INDEX (session_id); |
||||
ALTER TABLE track_e_access ADD INDEX (access_session_id); |
||||
|
||||
ALTER TABLE track_e_online ADD INDEX (course); |
||||
ALTER TABLE track_e_online ADD INDEX (session_id); |
||||
|
||||
ALTER TABLE track_e_item_property ADD INDEX (course_id, item_property_id, session_id); |
||||
ALTER TABLE track_e_downloads ADD INDEX (down_session_id); |
||||
ALTER TABLE track_e_links ADD INDEX (links_session_id); |
||||
ALTER TABLE track_e_uploads ADD INDEX (upload_session_id); |
||||
@ -1,41 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
CREATE TABLE personal_agenda ( |
||||
id int NOT NULL auto_increment, |
||||
user int unsigned, |
||||
title text, |
||||
`text` text, |
||||
`date` datetime default NULL, |
||||
enddate datetime default NULL, |
||||
course varchar(255), |
||||
parent_event_id int null, |
||||
UNIQUE KEY id (id) |
||||
); |
||||
CREATE TABLE personal_agenda_repeat ( |
||||
cal_id INT DEFAULT 0 NOT NULL, |
||||
cal_type VARCHAR(20), |
||||
cal_end INT, |
||||
cal_frequency INT DEFAULT 1, |
||||
cal_days CHAR(7), |
||||
PRIMARY KEY (cal_id) |
||||
); |
||||
CREATE TABLE personal_agenda_repeat_not ( |
||||
cal_id INT NOT NULL, |
||||
cal_date INT NOT NULL, |
||||
PRIMARY KEY ( cal_id, cal_date ) |
||||
); |
||||
CREATE TABLE user_course_category ( |
||||
id int unsigned NOT NULL auto_increment, |
||||
user_id int unsigned NOT NULL default 0, |
||||
title text NOT NULL, |
||||
sort int, |
||||
PRIMARY KEY (id) |
||||
); |
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,268 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
CREATE TABLE track_c_browsers ( |
||||
id int NOT NULL auto_increment, |
||||
browser varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_countries ( |
||||
id int NOT NULL auto_increment, |
||||
code varchar(40) NOT NULL default '', |
||||
country varchar(50) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_os ( |
||||
id int NOT NULL auto_increment, |
||||
os varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_providers ( |
||||
id int NOT NULL auto_increment, |
||||
provider varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_c_referers ( |
||||
id int NOT NULL auto_increment, |
||||
referer varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_access ( |
||||
access_id int NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL default '', |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int NOT NULL default 0, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code) |
||||
); |
||||
|
||||
CREATE TABLE track_e_lastaccess ( |
||||
access_id bigint NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL, |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int unsigned default NULL, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code), |
||||
KEY access_session_id (access_session_id) |
||||
); |
||||
|
||||
|
||||
CREATE TABLE track_e_default ( |
||||
default_id int NOT NULL auto_increment, |
||||
default_user_id int unsigned NOT NULL default 0, |
||||
default_cours_code varchar(40) NOT NULL default '', |
||||
default_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
default_event_type varchar(20) NOT NULL default '', |
||||
default_value_type varchar(20) NOT NULL default '', |
||||
default_value tinytext NOT NULL, |
||||
PRIMARY KEY (default_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_downloads ( |
||||
down_id int NOT NULL auto_increment, |
||||
down_user_id int unsigned default NULL, |
||||
down_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
down_cours_id varchar(40) NOT NULL default '', |
||||
down_doc_path varchar(255) NOT NULL default '', |
||||
down_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (down_id), |
||||
KEY down_user_id (down_user_id), |
||||
KEY down_cours_id (down_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_exercices ( |
||||
exe_id int NOT NULL auto_increment, |
||||
exe_user_id int unsigned default NULL, |
||||
exe_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
exe_cours_id varchar(40) NOT NULL default '', |
||||
exe_exo_id mediumint unsigned NOT NULL default 0, |
||||
exe_result float(6,2) NOT NULL default 0, |
||||
exe_weighting float(6,2) NOT NULL default 0, |
||||
PRIMARY KEY (exe_id), |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
ALTER TABLE track_e_exercices ADD status varchar(20) NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD data_tracking text NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD start_date datetime NOT NULL default '0000-00-00 00:00:00'; |
||||
ALTER TABLE track_e_exercices ADD steps_counter SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD session_id SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD INDEX ( session_id ) ; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_item_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD exe_duration int UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD COLUMN expired_time_control datetime NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE track_e_exercices ADD COLUMN orig_lp_item_view_id INT NOT NULL DEFAULT 0; |
||||
|
||||
CREATE TABLE track_e_attempt ( |
||||
exe_id int default NULL, |
||||
user_id int NOT NULL default 0, |
||||
question_id int NOT NULL default 0, |
||||
answer text NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
marks float(6,2) NOT NULL default 0, |
||||
course_code varchar(40) NOT NULL default '', |
||||
position int default 0, |
||||
tms datetime NOT NULL default '0000-00-00 00:00:00', |
||||
session_id INT NOT NULL DEFAULT 0 |
||||
); |
||||
ALTER TABLE track_e_attempt ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (user_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (session_id); |
||||
|
||||
CREATE TABLE track_e_attempt_recording ( |
||||
exe_id int unsigned NOT NULL, |
||||
question_id int unsigned NOT NULL, |
||||
marks int NOT NULL, |
||||
insert_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
author int unsigned NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
session_id INT NOT NULL DEFAULT 0 |
||||
); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (session_id); |
||||
|
||||
CREATE TABLE track_e_hotpotatoes ( |
||||
exe_name VARCHAR( 255 ) NOT NULL , |
||||
exe_user_id int unsigned DEFAULT NULL , |
||||
exe_date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL , |
||||
exe_cours_id varchar(40) NOT NULL , |
||||
exe_result smallint default 0 NOT NULL , |
||||
exe_weighting smallint default 0 NOT NULL, |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_links ( |
||||
links_id int NOT NULL auto_increment, |
||||
links_user_id int unsigned default NULL, |
||||
links_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
links_cours_id varchar(40) NOT NULL default '' , |
||||
links_link_id int NOT NULL default 0, |
||||
links_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (links_id), |
||||
KEY links_cours_id (links_cours_id), |
||||
KEY links_user_id (links_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_login ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
logout_date datetime NULL default NULL, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_online ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
course varchar(40) default NULL, |
||||
session_id INT NOT NULL DEFAULT 0, |
||||
access_url_id INT NOT NULL DEFAULT 1, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_open ( |
||||
open_id int NOT NULL auto_increment, |
||||
open_remote_host tinytext NOT NULL, |
||||
open_agent tinytext NOT NULL, |
||||
open_referer tinytext NOT NULL, |
||||
open_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
PRIMARY KEY (open_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_uploads ( |
||||
upload_id int NOT NULL auto_increment, |
||||
upload_user_id int unsigned default NULL, |
||||
upload_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
upload_cours_id varchar(40) NOT NULL default '', |
||||
upload_work_id int NOT NULL default 0, |
||||
upload_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (upload_id), |
||||
KEY upload_user_id (upload_user_id), |
||||
KEY upload_cours_id (upload_cours_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_course_access ( |
||||
course_access_id int NOT NULL auto_increment, |
||||
course_code varchar(40) NOT NULL, |
||||
user_id int NOT NULL, |
||||
login_course_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
logout_course_date datetime default NULL, |
||||
counter int NOT NULL, |
||||
session_id int NOT NULL default 0, |
||||
PRIMARY KEY (course_access_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_hotspot ( |
||||
hotspot_id int NOT NULL auto_increment, |
||||
hotspot_user_id int NOT NULL, |
||||
hotspot_course_code varchar(50) NOT NULL, |
||||
hotspot_exe_id int NOT NULL, |
||||
hotspot_question_id int NOT NULL, |
||||
hotspot_answer_id int NOT NULL, |
||||
hotspot_correct tinyint(3) unsigned NOT NULL, |
||||
hotspot_coordinate text NOT NULL, |
||||
PRIMARY KEY (hotspot_id), |
||||
KEY hotspot_course_code (hotspot_course_code), |
||||
KEY hotspot_user_id (hotspot_user_id), |
||||
KEY hotspot_exe_id (hotspot_exe_id), |
||||
KEY hotspot_question_id (hotspot_question_id) |
||||
); |
||||
|
||||
CREATE TABLE track_e_item_property ( |
||||
id int NOT NULL auto_increment PRIMARY KEY, |
||||
course_id int NOT NULL, |
||||
item_property_id int NOT NULL, |
||||
title varchar(255), |
||||
content text, |
||||
progress int NOT NULL default 0, |
||||
lastedit_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
lastedit_user_id int NOT NULL, |
||||
session_id int NOT NULL default 0 |
||||
); |
||||
|
||||
ALTER TABLE track_e_course_access ADD INDEX (user_id); |
||||
ALTER TABLE track_e_course_access ADD INDEX (login_course_date); |
||||
ALTER TABLE track_e_course_access ADD INDEX (course_code); |
||||
ALTER TABLE track_e_course_access ADD INDEX (session_id); |
||||
ALTER TABLE track_e_access ADD INDEX (access_session_id); |
||||
|
||||
ALTER TABLE track_e_online ADD INDEX (course); |
||||
ALTER TABLE track_e_online ADD INDEX (session_id); |
||||
|
||||
ALTER TABLE track_e_item_property ADD INDEX (course_id, item_property_id, session_id); |
||||
ALTER TABLE track_e_downloads ADD INDEX (down_session_id); |
||||
ALTER TABLE track_e_links ADD INDEX (links_session_id); |
||||
ALTER TABLE track_e_uploads ADD INDEX (upload_session_id); |
||||
@ -1,44 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
CREATE TABLE personal_agenda ( |
||||
id int NOT NULL auto_increment, |
||||
user int unsigned, |
||||
title text, |
||||
`text` text, |
||||
`date` datetime default NULL, |
||||
enddate datetime default NULL, |
||||
course varchar(255), |
||||
parent_event_id int null, |
||||
PRIMARY KEY id (id) |
||||
); |
||||
CREATE TABLE personal_agenda_repeat ( |
||||
cal_id INT DEFAULT 0 NOT NULL, |
||||
cal_type VARCHAR(20), |
||||
cal_end INT, |
||||
cal_frequency INT DEFAULT 1, |
||||
cal_days CHAR(7), |
||||
PRIMARY KEY (cal_id) |
||||
); |
||||
CREATE TABLE personal_agenda_repeat_not ( |
||||
cal_id INT NOT NULL, |
||||
cal_date INT NOT NULL, |
||||
PRIMARY KEY ( cal_id, cal_date ) |
||||
); |
||||
CREATE TABLE user_course_category ( |
||||
id int unsigned NOT NULL auto_increment, |
||||
user_id int unsigned NOT NULL default 0, |
||||
title text NOT NULL, |
||||
sort int, |
||||
PRIMARY KEY (id) |
||||
); |
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_user (user); |
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_parent (parent_event_id); |
||||
ALTER TABLE user_course_category ADD INDEX idx_user_c_cat_uid (user_id); |
||||
@ -1,231 +0,0 @@ |
||||
-- This script updates the databases structure before migrating the data from |
||||
-- version 1.8.7 (or 1.8.7.1) to version 1.8.8 |
||||
-- it is intended as a standalone script, however, because of the multiple |
||||
-- databases related difficulties, it should be parsed by a PHP script in |
||||
-- order to connect to and update the right databases. |
||||
-- There is one line per query, allowing the PHP function file() to read |
||||
-- all lines separately into an array. The xxMAINxx-type markers are there |
||||
-- to tell the PHP script which database we're talking about. |
||||
-- By always using the keyword "TABLE" in the queries, we should be able |
||||
-- to retrieve and modify the table name from the PHP script if needed, which |
||||
-- will allow us to deal with the unique-database-type installations |
||||
-- |
||||
-- This first part is for the main database |
||||
|
||||
-- xxMAINxx |
||||
|
||||
DROP PROCEDURE IF EXISTS drop_index; |
||||
CREATE PROCEDURE drop_index(in t_name varchar(128), in i_name varchar(128) ) BEGIN IF ( (SELECT count(*) AS index_exists FROM information_schema.statistics WHERE table_schema = DATABASE( ) AND table_name = t_name AND index_name = i_name ) > 0) THEN SET @s = CONCAT('DROP INDEX ' , i_name , ' ON ' , t_name ); PREPARE stmt FROM @s; EXECUTE stmt; END IF; END; |
||||
|
||||
CREATE TABLE course_request (id int NOT NULL AUTO_INCREMENT, code varchar(40) NOT NULL, user_id int unsigned NOT NULL default '0', directory varchar(40) DEFAULT NULL, db_name varchar(40) DEFAULT NULL, course_language varchar(20) DEFAULT NULL, title varchar(250) DEFAULT NULL, description text, category_code varchar(40) DEFAULT NULL, tutor_name varchar(200) DEFAULT NULL, visual_code varchar(40) DEFAULT NULL, request_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', objetives text, target_audience text, status int unsigned NOT NULL default '0', info int unsigned NOT NULL default '0', exemplary_content int unsigned NOT NULL default '0', PRIMARY KEY (id), UNIQUE KEY code (code)); |
||||
|
||||
CALL drop_index('settings_current', 'unique_setting'); |
||||
CALL drop_index('settings_options', 'unique_setting_option'); |
||||
|
||||
ALTER TABLE settings_current ADD UNIQUE unique_setting (variable(110), subkey(110), category(110), access_url); |
||||
ALTER TABLE settings_options ADD UNIQUE unique_setting_option (variable(165), value(165)); |
||||
ALTER TABLE settings_current CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; |
||||
ALTER TABLE settings_options CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; |
||||
|
||||
ALTER TABLE user MODIFY COLUMN username VARCHAR(40) NOT NULL; |
||||
|
||||
UPDATE settings_current SET variable='chamilo_database_version' WHERE variable='dokeos_database_version'; |
||||
|
||||
ALTER TABLE sys_announcement ADD COLUMN access_url_id INT NOT NULL default 1; |
||||
ALTER TABLE sys_calendar ADD COLUMN access_url_id INT NOT NULL default 1; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('users_copy_files', NULL, 'radio', 'Tools', 'true', 'AllowUsersCopyFilesTitle','AllowUsersCopyFilesComment', NULL,NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('users_copy_files', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('users_copy_files', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_validation', NULL, 'radio', 'Platform', 'false', 'EnableCourseValidation', 'EnableCourseValidationComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('course_validation', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('course_validation', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_validation_terms_and_conditions_url', NULL, 'textfield', 'Platform', '', 'CourseValidationTermsAndConditionsLink', 'CourseValidationTermsAndConditionsLinkComment', NULL, NULL, 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('sso_authentication',NULL,'radio','Security','false','EnableSSOTitle','EnableSSOComment',NULL,NULL,1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('sso_authentication_domain',NULL,'textfield','Security','','SSOServerDomainTitle','SSOServerDomainComment',NULL,NULL,1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('sso_authentication_auth_uri',NULL,'textfield','Security','/?q=user','SSOServerAuthURITitle','SSOServerAuthURIComment',NULL,NULL,1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('sso_authentication_unauth_uri',NULL,'textfield','Security','/?q=logout','SSOServerUnAuthURITitle','SSOServerUnAuthURIComment',NULL,NULL,1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('sso_authentication_protocol',NULL,'radio','Security','http://','SSOServerProtocolTitle','SSOServerProtocolComment',NULL,NULL,1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('sso_authentication', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('sso_authentication', 'false', 'No'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('sso_authentication_protocol', 'http://', 'http://'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('sso_authentication_protocol', 'https://', 'https://'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_asciisvg',NULL,'radio','Editor','false','AsciiSvgTitle','AsciiSvgComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_asciisvg', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_asciisvg', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('include_asciimathml_script',NULL,'radio','Editor','false','IncludeAsciiMathMlTitle','IncludeAsciiMathMlComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('include_asciimathml_script', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('include_asciimathml_script', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_wiris',NULL,'radio','Editor','false','EnabledWirisTitle','EnabledWirisComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_wiris', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_wiris', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_spellcheck',NULL,'radio','Editor','false','AllowSpellCheckTitle','AllowSpellCheckComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_spellcheck', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_spellcheck', 'false', 'No'); |
||||
ALTER TABLE course ADD INDEX idx_course_category_code (category_code); |
||||
ALTER TABLE course ADD INDEX idx_course_directory (directory(10)); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('force_wiki_paste_as_plain_text',NULL,'radio','Editor','false','ForceWikiPasteAsPlainText','ForceWikiPasteAsPlainTextComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('force_wiki_paste_as_plain_text', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('force_wiki_paste_as_plain_text', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_googlemaps',NULL,'radio','Editor','false','EnabledGooglemapsTitle','EnabledGooglemapsComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_googlemaps', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_googlemaps', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_imgmap',NULL,'radio','Editor','true','EnabledImageMapsTitle','EnabledImageMapsComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_imgmap', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_imgmap', 'false', 'No'); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_support_svg',NULL,'radio','Tools','true','EnabledSVGTitle','EnabledSVGComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_support_svg', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_support_svg', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('pdf_export_watermark_enable', NULL,'radio', 'Platform', 'false','PDFExportWatermarkEnableTitle', 'PDFExportWatermarkEnableComment','platform',NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('pdf_export_watermark_enable','true','Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('pdf_export_watermark_enable','false','No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('pdf_export_watermark_by_course', NULL,'radio', 'Platform', 'false','PDFExportWatermarkByCourseTitle', 'PDFExportWatermarkByCourseComment','platform',NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('pdf_export_watermark_by_course','true','Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('pdf_export_watermark_by_course','false','No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('hide_courses_in_sessions', NULL,'radio', 'Platform', 'false','HideCoursesInSessionsTitle', 'HideCoursesInSessionsComment','platform',NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('hide_courses_in_sessions','true','Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('hide_courses_in_sessions','false','No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('pdf_export_watermark_text', NULL,'textfield', 'Platform', '', 'PDFExportWatermarkTextTitle','PDFExportWatermarkTextComment','platform',NULL, 1); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_insertHtml',NULL,'radio','Editor','true','EnabledInsertHtmlTitle','EnabledInsertHtmlComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_insertHtml', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_insertHtml', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('students_export2pdf',NULL,'radio','Tools','true','EnabledStudentExport2PDFTitle','EnabledStudentExport2PDFComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('students_export2pdf', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('students_export2pdf', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('exercise_min_score', NULL,'textfield', 'Course', '', 'ExerciseMinScoreTitle', 'ExerciseMinScoreComment','platform',NULL, 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('exercise_max_score', NULL,'textfield', 'Course', '', 'ExerciseMaxScoreTitle', 'ExerciseMaxScoreComment','platform',NULL, 1); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_users_folders',NULL,'radio','Tools','true','ShowUsersFoldersTitle','ShowUsersFoldersComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_users_folders', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_users_folders', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_default_folders',NULL,'radio','Tools','true','ShowDefaultFoldersTitle','ShowDefaultFoldersComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_default_folders', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_default_folders', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_chat_folder',NULL,'radio','Tools','true','ShowChatFolderTitle','ShowChatFolderComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_chat_folder', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_chat_folder', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_text2audio',NULL,'radio','Tools','false','Text2AudioTitle','Text2AudioComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_text2audio', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_text2audio', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','course_description','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'CourseDescription', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','calendar_event','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Agenda', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','document','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Documents', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','learnpath','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'LearningPath', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','link','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Links', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','announcement','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Announcements', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','forum','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Forums', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','dropbox','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Dropbox', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','quiz','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Quiz', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','user','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Users', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','group','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Groups', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','chat','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Chat', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','student_publication','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'StudentPublications', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','wiki','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Wiki', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','gradebook','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Gradebook', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','survey','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Survey', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','glossary','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Glossary', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','notebook','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Notebook', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','attendance','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Attendances', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','course_progress','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'CourseProgress', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','blog_management','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Blog',1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','tracking','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Stats',1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','course_maintenance','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'Maintenance',1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_hide_tools','course_setting','checkbox','Tools','false','CourseHideToolsTitle','CourseHideToolsComment',NULL,'CourseSettings',1); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enabled_support_pixlr',NULL,'radio','Tools','false','EnabledPixlrTitle','EnabledPixlrComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_support_pixlr', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enabled_support_pixlr', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_groups_to_users',NULL,'radio','Platform','false','ShowGroupsToUsersTitle','ShowGroupsToUsersComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_groups_to_users', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_groups_to_users', 'false', 'No'); |
||||
|
||||
INSERT INTO language (original_name, english_name, isocode, dokeos_folder, available) VALUES ('हिन्दी', 'hindi', 'hi', 'hindi', 0); |
||||
|
||||
ALTER TABLE session ADD COLUMN promotion_id INT NOT NULL; |
||||
|
||||
CREATE TABLE career (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT NOT NULL, status INT NOT NULL default '0', created_at datetime NOT NULL DEFAULT '0000-00-00 00:00:00', updated_at datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (id)); |
||||
CREATE TABLE promotion (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT NOT NULL, status INT NOT NULL default '0', career_id INT NOT NULL, created_at datetime NOT NULL DEFAULT '0000-00-00 00:00:00', updated_at datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY(id)); |
||||
|
||||
CREATE TABLE usergroup ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT NOT NULL,PRIMARY KEY (id)); |
||||
CREATE TABLE usergroup_rel_user ( usergroup_id INT NOT NULL, user_id INT NOT NULL ); |
||||
CREATE TABLE usergroup_rel_course ( usergroup_id INT NOT NULL, course_id INT NOT NULL ); |
||||
CREATE TABLE usergroup_rel_session ( usergroup_id INT NOT NULL, session_id INT NOT NULL ); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('accessibility_font_resize',NULL,'radio','Platform','false','EnableAccessibilityFontResizeTitle','EnableAccessibilityFontResizeComment',NULL,NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('accessibility_font_resize', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('accessibility_font_resize', 'false', 'No'); |
||||
|
||||
CREATE TABLE notification (id BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,dest_user_id INT NOT NULL, dest_mail CHAR(255),title CHAR(255), content CHAR(255), send_freq SMALLINT DEFAULT 1, created_at DATETIME NOT NULL, sent_at DATETIME NULL); |
||||
|
||||
ALTER TABLE notification ADD index mail_notify_sent_index (sent_at); |
||||
ALTER TABLE notification ADD index mail_notify_freq_index (sent_at, send_freq, created_at); |
||||
|
||||
ALTER TABLE session_category ADD COLUMN access_url_id INT NOT NULL default 1; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_quiz_scenario', NULL,'radio','Course','false','EnableQuizScenarioTitle','EnableQuizScenarioComment',NULL,NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_quiz_scenario', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_quiz_scenario', 'false', 'No'); |
||||
|
||||
UPDATE settings_current SET category='Search' WHERE variable='search_enable'; |
||||
|
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('homepage_view', 'activity_big', 'HomepageViewActivityBig'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_nanogong',NULL,'radio','Tools','false','EnableNanogongTitle','EnableNanogongComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_nanogong', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_nanogong', 'false', 'No'); |
||||
|
||||
ALTER TABLE gradebook_evaluation ADD COLUMN locked int NOT NULL DEFAULT 0; |
||||
|
||||
UPDATE settings_current SET selected_value = '1.8.8.14911' WHERE variable = 'chamilo_database_version'; |
||||
|
||||
-- xxSTATSxx |
||||
ALTER TABLE track_e_exercices ADD COLUMN orig_lp_item_view_id INT NOT NULL DEFAULT 0; |
||||
|
||||
-- xxUSERxx |
||||
ALTER TABLE personal_agenda ADD PRIMARY KEY (id); |
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_user (user); |
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_parent (parent_event_id); |
||||
ALTER TABLE user_course_category ADD INDEX idx_user_c_cat_uid (user_id); |
||||
|
||||
-- xxCOURSExx |
||||
ALTER TABLE course_setting CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; |
||||
ALTER TABLE forum_forum ADD start_time DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE forum_forum ADD end_time DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE wiki_mailcue ADD session_id smallint DEFAULT 0; |
||||
|
||||
ALTER TABLE lp ADD COLUMN use_max_score INT DEFAULT 1; |
||||
ALTER TABLE lp_item MODIFY COLUMN max_score FLOAT UNSIGNED DEFAULT 100; |
||||
ALTER TABLE tool MODIFY COLUMN category varchar(20) not null default 'authoring'; |
||||
|
||||
ALTER TABLE lp ADD COLUMN autolunch INT DEFAULT 0; |
||||
ALTER TABLE lp ADD COLUMN created_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE lp ADD COLUMN modified_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE lp ADD COLUMN expired_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE lp ADD COLUMN publicated_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
|
||||
CREATE TABLE quiz_question_option (id int NOT NULL, name varchar(255), position int unsigned NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE quiz_question ADD COLUMN extra varchar(255) DEFAULT NULL; |
||||
ALTER TABLE quiz_question CHANGE question question TEXT NOT NULL; |
||||
|
||||
INSERT INTO course_setting(variable,value,category) VALUES ('enable_lp_auto_launch',0,'learning_path'); |
||||
INSERT INTO course_setting(variable,value,category) VALUES ('pdf_export_watermark_text','','course'); |
||||
|
||||
ALTER TABLE quiz ADD COLUMN propagate_neg INT NOT NULL DEFAULT 0; |
||||
ALTER TABLE quiz_answer MODIFY COLUMN hotspot_type ENUM('square','circle','poly','delineation','oar'); |
||||
|
||||
ALTER TABLE attendance ADD COLUMN locked int NOT NULL default 0; |
||||
CREATE TABLE attendance_sheet_log (id INT NOT NULL AUTO_INCREMENT, attendance_id INT NOT NULL DEFAULT 0, lastedit_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', lastedit_type VARCHAR(200) NOT NULL, lastedit_user_id INT NOT NULL DEFAULT 0, calendar_date_value DATETIME NULL, PRIMARY KEY (id)); |
||||
|
||||
@ -1,144 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
$update = function($_configuration, $mainConnection, $dryRun, $output, $app) { |
||||
|
||||
$mainConnection->beginTransaction(); |
||||
$singleDbForm = false; |
||||
|
||||
$dbNameForm = $_configuration['main_database']; |
||||
|
||||
if ($singleDbForm) { |
||||
$dbStatsForm = isset($_configuration['statistics_database']) ? $_configuration['statistics_database'] : $_configuration['main_database']; |
||||
$dbUserForm = isset($_configuration['user_personal_database']) ? $_configuration['user_personal_database'] : $_configuration['main_database']; |
||||
} |
||||
|
||||
$prefix = ''; |
||||
if ($singleDbForm) { |
||||
$prefix = $_configuration['table_prefix']; |
||||
} |
||||
|
||||
iDatabase::select_db($dbNameForm); |
||||
$output->writeln('Getting the course list: '); |
||||
$res = iDatabase::query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL ORDER BY code"); |
||||
|
||||
if ($res === false) { die('Error while querying the courses list in update_db-1.8.7.1-1.8.8.inc.php'); } |
||||
|
||||
if (iDatabase::num_rows($res) > 0) { |
||||
$i = 0; |
||||
$list = array(); |
||||
while ($row = iDatabase::fetch_array($res)) { |
||||
$list[] = $row; |
||||
$i++; |
||||
} |
||||
foreach ($list as $row_course) { |
||||
/** |
||||
* We connect to the right DB first to make sure we can use the queries |
||||
* without a database name |
||||
*/ |
||||
if (!$singleDbForm) { // otherwise just use the main one |
||||
iDatabase::select_db($row_course['db_name']); |
||||
} |
||||
$output->writeln('Updating course db: ' . $row_course['db_name']); |
||||
|
||||
$table_lp_item_view = $row_course['db_name'].".lp_item_view"; |
||||
$table_lp_view = $row_course['db_name'].".lp_view"; |
||||
$table_lp_item = $row_course['db_name'].".lp_item"; |
||||
|
||||
if ($singleDbForm) { |
||||
$table_lp_item_view = "$prefix{$row_course['db_name']}_lp_item_view"; |
||||
$table_lp_view = "$prefix{$row_course['db_name']}_lp_view"; |
||||
$table_lp_item = "$prefix{$row_course['db_name']}_lp_item"; |
||||
} |
||||
|
||||
// Filling the track_e_exercices.orig_lp_item_view_id field in order to have better traceability in exercises included in a LP see #3188 |
||||
|
||||
$query = "SELECT DISTINCT path as exercise_id, lp_item_id, lp_view_id, user_id, v.lp_id |
||||
FROM $table_lp_item_view iv INNER JOIN $table_lp_view v ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON i.id = lp_item_id |
||||
WHERE item_type = 'quiz'"; |
||||
$result = iDatabase::query($query); |
||||
|
||||
if (iDatabase::num_rows($result) > 0) { |
||||
while ($row = iDatabase::fetch_array($result,'ASSOC')) { |
||||
$sql = "SELECT exe_id FROM $dbStatsForm.track_e_exercices |
||||
WHERE exe_user_id = {$row['user_id']} AND |
||||
exe_cours_id = '{$row_course['code']}' AND |
||||
exe_exo_id = {$row['exercise_id']} AND |
||||
orig_lp_id = {$row['lp_id']} AND |
||||
orig_lp_item_id = {$row['lp_item_id']} "; |
||||
$sub_result = iDatabase::query($sql); |
||||
$exe_list = array(); |
||||
while ($sub_row = iDatabase::fetch_array($sub_result,'ASSOC')) { |
||||
$exe_list[] = $sub_row['exe_id']; |
||||
} |
||||
|
||||
$sql = "SELECT iv.id, iv.view_count |
||||
FROM $table_lp_item_view iv INNER JOIN $table_lp_view v ON v.id = iv.lp_view_id INNER JOIN $table_lp_item i ON i.id = lp_item_id |
||||
WHERE item_type = 'quiz' AND user_id = {$row['user_id']} AND path = {$row['exercise_id']} "; |
||||
$sub_result = iDatabase::query($sql); |
||||
$lp_item_view_id_list = array(); |
||||
while ($sub_row = iDatabase::fetch_array($sub_result,'ASSOC')) { |
||||
$lp_item_view_id_list[] = $sub_row['id']; |
||||
} |
||||
$i = 0; |
||||
foreach($exe_list as $exe_id) { |
||||
$lp_item_view_id = $lp_item_view_id_list[$i]; |
||||
$update = "UPDATE $dbNameForm.track_e_exercices SET orig_lp_item_view_id = '$lp_item_view_id' WHERE exe_id = $exe_id "; |
||||
iDatabase::query($update); |
||||
$i++; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Adding notifications options |
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_invitation', 'MailNotifyInvitation',1,1,'1') "; |
||||
$result = iDatabase::query($sql); |
||||
$id = iDatabase::insert_id(); |
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) "; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_message', 'MailNotifyMessage',1,1,'1')"; |
||||
$result = iDatabase::query($sql); |
||||
$id = iDatabase::insert_id(); |
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) "; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field (field_type, field_variable, field_display_text, field_visible, field_changeable, field_default_value) values (4, 'mail_notify_group_message','MailNotifyGroupMessage',1,1,'1') "; |
||||
$result = iDatabase::query($sql); |
||||
$id = iDatabase::insert_id(); |
||||
|
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '1', 'AtOnce',1) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '8', 'Daily',2) "; |
||||
$result = iDatabase::query($sql); |
||||
$sql = "INSERT INTO $dbNameForm.user_field_options (field_id, option_value, option_display_text, option_order) values ($id, '0', 'No',3) "; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
//Fixing table access_url_rel_course if the platform have courses that were created in Dok€os 1.8.5 |
||||
|
||||
if (!isset($_configuration['multiple_access_urls']) || $_configuration['multiple_access_urls'] == false) { |
||||
$sql = "SELECT code FROM $dbNameForm.course"; |
||||
$result = iDatabase::query($sql); |
||||
while ($row = iDatabase::fetch_array($result)) { |
||||
//Adding course to default URL just in case |
||||
$sql = "INSERT INTO $dbNameForm.access_url_rel_course SET course_code = '".iDatabase::escape_string($row['code'])."', access_url_id = '1' "; |
||||
iDatabase::query($sql); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,329 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
DROP TABLE IF EXISTS track_c_browsers; |
||||
CREATE TABLE track_c_browsers ( |
||||
id int NOT NULL auto_increment, |
||||
browser varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_c_countries; |
||||
CREATE TABLE track_c_countries ( |
||||
id int NOT NULL auto_increment, |
||||
code varchar(40) NOT NULL default '', |
||||
country varchar(50) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_c_os; |
||||
CREATE TABLE track_c_os ( |
||||
id int NOT NULL auto_increment, |
||||
os varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_c_providers; |
||||
CREATE TABLE track_c_providers ( |
||||
id int NOT NULL auto_increment, |
||||
provider varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_c_referers; |
||||
CREATE TABLE track_c_referers ( |
||||
id int NOT NULL auto_increment, |
||||
referer varchar(255) NOT NULL default '', |
||||
counter int NOT NULL default 0, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_access; |
||||
CREATE TABLE track_e_access ( |
||||
access_id int NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL default '', |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int NOT NULL default 0, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_lastaccess; |
||||
CREATE TABLE track_e_lastaccess ( |
||||
access_id bigint NOT NULL auto_increment, |
||||
access_user_id int unsigned default NULL, |
||||
access_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
access_cours_code varchar(40) NOT NULL, |
||||
access_tool varchar(30) default NULL, |
||||
access_session_id int unsigned default NULL, |
||||
PRIMARY KEY (access_id), |
||||
KEY access_user_id (access_user_id), |
||||
KEY access_cours_code (access_cours_code), |
||||
KEY access_session_id (access_session_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_default; |
||||
CREATE TABLE track_e_default ( |
||||
default_id int NOT NULL auto_increment, |
||||
default_user_id int unsigned NOT NULL default 0, |
||||
default_cours_code varchar(40) NOT NULL default '', |
||||
default_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
default_event_type varchar(20) NOT NULL default '', |
||||
default_value_type varchar(20) NOT NULL default '', |
||||
default_value text NOT NULL, |
||||
c_id int unsigned default NULL, |
||||
PRIMARY KEY (default_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_downloads; |
||||
CREATE TABLE track_e_downloads ( |
||||
down_id int NOT NULL auto_increment, |
||||
down_user_id int unsigned default NULL, |
||||
down_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
down_cours_id varchar(40) NOT NULL default '', |
||||
down_doc_path varchar(255) NOT NULL default '', |
||||
down_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (down_id), |
||||
KEY down_user_id (down_user_id), |
||||
KEY down_cours_id (down_cours_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_exercices; |
||||
CREATE TABLE track_e_exercices ( |
||||
exe_id int NOT NULL auto_increment, |
||||
exe_user_id int unsigned default NULL, |
||||
exe_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
exe_cours_id varchar(40) NOT NULL default '', |
||||
exe_exo_id mediumint unsigned NOT NULL default 0, |
||||
exe_result float(6,2) NOT NULL default 0, |
||||
exe_weighting float(6,2) NOT NULL default 0, |
||||
PRIMARY KEY (exe_id), |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
ALTER TABLE track_e_exercices ADD status varchar(20) NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD data_tracking text NOT NULL default ''; |
||||
ALTER TABLE track_e_exercices ADD start_date datetime NOT NULL default '0000-00-00 00:00:00'; |
||||
ALTER TABLE track_e_exercices ADD steps_counter SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD session_id SMALLINT UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD INDEX ( session_id ) ; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD orig_lp_item_id int NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD exe_duration int UNSIGNED NOT NULL default 0; |
||||
ALTER TABLE track_e_exercices ADD COLUMN expired_time_control datetime NOT NULL DEFAULT '0000-00-00 00:00:00'; |
||||
ALTER TABLE track_e_exercices ADD COLUMN orig_lp_item_view_id INT NOT NULL DEFAULT 0; |
||||
ALTER TABLE track_e_exercices ADD COLUMN questions_to_check TEXT NOT NULL DEFAULT ''; |
||||
|
||||
DROP TABLE IF EXISTS track_e_attempt; |
||||
CREATE TABLE track_e_attempt ( |
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, |
||||
exe_id int default NULL, |
||||
user_id int NOT NULL default 0, |
||||
question_id int NOT NULL default 0, |
||||
answer text NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
marks float(6,2) NOT NULL default 0, |
||||
course_code varchar(40) NOT NULL default '', |
||||
position int default 0, |
||||
tms datetime NOT NULL default '0000-00-00 00:00:00', |
||||
session_id INT NOT NULL DEFAULT 0, |
||||
filename VARCHAR(255) DEFAULT NULL |
||||
); |
||||
ALTER TABLE track_e_attempt ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (user_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt ADD INDEX (session_id); |
||||
|
||||
DROP TABLE IF EXISTS track_e_attempt_recording; |
||||
CREATE TABLE track_e_attempt_recording ( |
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, |
||||
exe_id int unsigned NOT NULL, |
||||
question_id int unsigned NOT NULL, |
||||
marks int NOT NULL, |
||||
insert_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
author int unsigned NOT NULL, |
||||
teacher_comment text NOT NULL, |
||||
session_id INT NOT NULL DEFAULT 0 |
||||
); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (exe_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (question_id); |
||||
ALTER TABLE track_e_attempt_recording ADD INDEX (session_id); |
||||
|
||||
DROP TABLE IF EXISTS track_e_hotpotatoes; |
||||
CREATE TABLE track_e_hotpotatoes ( |
||||
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, |
||||
exe_name VARCHAR( 255 ) NOT NULL , |
||||
exe_user_id int unsigned DEFAULT NULL , |
||||
exe_date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL , |
||||
exe_cours_id varchar(40) NOT NULL , |
||||
exe_result smallint default 0 NOT NULL , |
||||
exe_weighting smallint default 0 NOT NULL, |
||||
KEY exe_user_id (exe_user_id), |
||||
KEY exe_cours_id (exe_cours_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_links; |
||||
CREATE TABLE track_e_links ( |
||||
links_id int NOT NULL auto_increment, |
||||
links_user_id int unsigned default NULL, |
||||
links_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
links_cours_id varchar(40) NOT NULL default '' , |
||||
links_link_id int NOT NULL default 0, |
||||
links_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (links_id), |
||||
KEY links_cours_id (links_cours_id), |
||||
KEY links_user_id (links_user_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_login; |
||||
CREATE TABLE track_e_login ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
logout_date datetime NULL default NULL, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_online; |
||||
CREATE TABLE track_e_online ( |
||||
login_id int NOT NULL auto_increment, |
||||
login_user_id int unsigned NOT NULL default 0, |
||||
login_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
login_ip varchar(39) NOT NULL default '', |
||||
course varchar(40) default NULL, |
||||
session_id INT NOT NULL DEFAULT 0, |
||||
access_url_id INT NOT NULL DEFAULT 1, |
||||
PRIMARY KEY (login_id), |
||||
KEY login_user_id (login_user_id) |
||||
); |
||||
DROP TABLE IF EXISTS track_e_open; |
||||
CREATE TABLE track_e_open ( |
||||
open_id int NOT NULL auto_increment, |
||||
open_remote_host tinytext NOT NULL, |
||||
open_agent tinytext NOT NULL, |
||||
open_referer tinytext NOT NULL, |
||||
open_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
PRIMARY KEY (open_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_uploads; |
||||
CREATE TABLE track_e_uploads ( |
||||
upload_id int NOT NULL auto_increment, |
||||
upload_user_id int unsigned default NULL, |
||||
upload_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
upload_cours_id varchar(40) NOT NULL default '', |
||||
upload_work_id int NOT NULL default 0, |
||||
upload_session_id INT NOT NULL DEFAULT 0, |
||||
PRIMARY KEY (upload_id), |
||||
KEY upload_user_id (upload_user_id), |
||||
KEY upload_cours_id (upload_cours_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_course_access; |
||||
CREATE TABLE track_e_course_access ( |
||||
course_access_id int NOT NULL auto_increment, |
||||
course_code varchar(40) NOT NULL, |
||||
user_id int NOT NULL, |
||||
login_course_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
logout_course_date datetime default NULL, |
||||
counter int NOT NULL, |
||||
session_id int NOT NULL default 0, |
||||
PRIMARY KEY (course_access_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_hotspot; |
||||
CREATE TABLE track_e_hotspot ( |
||||
hotspot_id int NOT NULL auto_increment, |
||||
hotspot_user_id int NOT NULL, |
||||
hotspot_course_code varchar(50) NOT NULL, |
||||
hotspot_exe_id int NOT NULL, |
||||
hotspot_question_id int NOT NULL, |
||||
hotspot_answer_id int NOT NULL, |
||||
hotspot_correct tinyint(3) unsigned NOT NULL, |
||||
hotspot_coordinate text NOT NULL, |
||||
PRIMARY KEY (hotspot_id), |
||||
KEY hotspot_course_code (hotspot_course_code), |
||||
KEY hotspot_user_id (hotspot_user_id), |
||||
KEY hotspot_exe_id (hotspot_exe_id), |
||||
KEY hotspot_question_id (hotspot_question_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS track_e_item_property; |
||||
|
||||
CREATE TABLE track_e_item_property ( |
||||
id int NOT NULL auto_increment PRIMARY KEY, |
||||
course_id int NOT NULL, |
||||
item_property_id int NOT NULL, |
||||
title varchar(255), |
||||
content text, |
||||
progress int NOT NULL default 0, |
||||
lastedit_date datetime NOT NULL default '0000-00-00 00:00:00', |
||||
lastedit_user_id int NOT NULL, |
||||
session_id int NOT NULL default 0 |
||||
); |
||||
|
||||
ALTER TABLE track_e_course_access ADD INDEX (user_id); |
||||
ALTER TABLE track_e_course_access ADD INDEX (login_course_date); |
||||
ALTER TABLE track_e_course_access ADD INDEX (course_code); |
||||
ALTER TABLE track_e_course_access ADD INDEX (session_id); |
||||
ALTER TABLE track_e_access ADD INDEX (access_session_id); |
||||
|
||||
ALTER TABLE track_e_online ADD INDEX (course); |
||||
ALTER TABLE track_e_online ADD INDEX (session_id); |
||||
|
||||
ALTER TABLE track_e_item_property ADD INDEX (course_id, item_property_id, session_id); |
||||
ALTER TABLE track_e_downloads ADD INDEX (down_session_id); |
||||
ALTER TABLE track_e_links ADD INDEX (links_session_id); |
||||
ALTER TABLE track_e_uploads ADD INDEX (upload_session_id); |
||||
|
||||
-- |
||||
-- Table structure for LP custom storage API |
||||
-- |
||||
DROP TABLE IF EXISTS track_stored_values; |
||||
CREATE TABLE IF NOT EXISTS track_stored_values ( |
||||
id int unsigned not null AUTO_INCREMENT PRIMARY KEY, |
||||
user_id INT NOT NULL, |
||||
sco_id INT NOT NULL, |
||||
course_id CHAR(40) NOT NULL, |
||||
sv_key CHAR(64) NOT NULL, |
||||
sv_value TEXT NOT NULL |
||||
); |
||||
ALTER TABLE track_stored_values ADD KEY (user_id, sco_id, course_id, sv_key); |
||||
ALTER TABLE track_stored_values ADD UNIQUE (user_id, sco_id, course_id, sv_key); |
||||
|
||||
DROP TABLE IF EXISTS track_stored_value_stack; |
||||
CREATE TABLE IF NOT EXISTS track_stored_values_stack ( |
||||
id int unsigned not null AUTO_INCREMENT PRIMARY KEY, |
||||
user_id INT NOT NULL, |
||||
sco_id INT NOT NULL, |
||||
stack_order INT NOT NULL, |
||||
course_id CHAR(40) NOT NULL, |
||||
sv_key CHAR(64) NOT NULL, |
||||
sv_value TEXT NOT NULL |
||||
); |
||||
ALTER TABLE track_stored_values_stack ADD KEY (user_id, sco_id, course_id, sv_key, stack_order); |
||||
ALTER TABLE track_stored_values_stack ADD UNIQUE (user_id, sco_id, course_id, sv_key, stack_order); |
||||
|
||||
DROP TABLE IF EXISTS track_e_attempt_coeff; |
||||
CREATE TABLE track_e_attempt_coeff ( |
||||
id int unsigned not null auto_increment primary key, |
||||
attempt_id INT NOT NULL, |
||||
marks_coeff float(6,2) |
||||
); |
||||
@ -1,53 +0,0 @@ |
||||
-- MySQL dump |
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
/*!40101 SET NAMES utf8 */; |
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
||||
DROP TABLE IF EXISTS personal_agenda; |
||||
CREATE TABLE personal_agenda ( |
||||
id int NOT NULL auto_increment, |
||||
user int unsigned, |
||||
title text, |
||||
`text` text, |
||||
`date` datetime DEFAULT NULL, |
||||
enddate datetime DEFAULT NULL, |
||||
course varchar(255), |
||||
parent_event_id int NULL, |
||||
all_day int NOT NULL DEFAULT 0, |
||||
PRIMARY KEY id (id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS personal_agenda_repeat; |
||||
CREATE TABLE personal_agenda_repeat ( |
||||
cal_id INT DEFAULT 0 NOT NULL, |
||||
cal_type VARCHAR(20), |
||||
cal_end INT, |
||||
cal_frequency INT DEFAULT 1, |
||||
cal_days CHAR(7), |
||||
PRIMARY KEY (cal_id) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS personal_agenda_repeat_not; |
||||
CREATE TABLE personal_agenda_repeat_not ( |
||||
cal_id INT NOT NULL, |
||||
cal_date INT NOT NULL, |
||||
PRIMARY KEY ( cal_id, cal_date ) |
||||
); |
||||
|
||||
DROP TABLE IF EXISTS user_course_category; |
||||
CREATE TABLE user_course_category ( |
||||
id int unsigned NOT NULL auto_increment, |
||||
user_id int unsigned NOT NULL default 0, |
||||
title text NOT NULL, |
||||
sort int, |
||||
PRIMARY KEY (id) |
||||
); |
||||
|
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_user (user); |
||||
ALTER TABLE personal_agenda ADD INDEX idx_personal_agenda_parent (parent_event_id); |
||||
ALTER TABLE user_course_category ADD INDEX idx_user_c_cat_uid (user_id); |
||||
@ -1,326 +0,0 @@ |
||||
-- This script updates the databases structure before migrating the data from |
||||
-- version 1.8.8 (or version 1.8.8.2, 1.8.8.4) to version 1.9.0 |
||||
-- it is intended as a standalone script, however, because of the multiple |
||||
-- databases related difficulties, it should be parsed by a PHP script in |
||||
-- order to connect to and update the right databases. |
||||
-- There is one line per query, allowing the PHP function file() to read |
||||
-- all lines separately into an array. The xxMAINxx-type markers are there |
||||
-- to tell the PHP script which database we're talking about. |
||||
-- By always using the keyword "TABLE" in the queries, we should be able |
||||
-- to retrieve and modify the table name from the PHP script if needed, which |
||||
-- will allow us to deal with the unique-database-type installations |
||||
-- |
||||
-- This first part is for the main database |
||||
|
||||
-- xxMAINxx |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('filter_terms', NULL, 'textarea', 'Security', '', 'FilterTermsTitle', 'FilterTermsComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('header_extra_content', NULL, 'textarea', 'Tracking', '', 'HeaderExtraContentTitle', 'HeaderExtraContentComment', NULL, NULL, 1),('footer_extra_content', NULL, 'textarea', 'Tracking', '', 'FooterExtraContentTitle', 'FooterExtraContentComment', NULL, NULL,1); |
||||
|
||||
ALTER TABLE sys_calendar ADD COLUMN all_day INTEGER NOT NULL DEFAULT 0; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_documents_preview', NULL, 'radio', 'Tools', 'false', 'ShowDocumentPreviewTitle', 'ShowDocumentPreviewComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_documents_preview', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_documents_preview', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('htmlpurifier_wiki',NULL,'radio','Editor','false','HtmlPurifierWikiTitle','HtmlPurifierWikiComment',NULL,NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('htmlpurifier_wiki', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('htmlpurifier_wiki', 'false', 'No'); |
||||
|
||||
-- CAS feature |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_activate', NULL, 'radio', 'CAS', 'false', 'CasMainActivateTitle', 'CasMainActivateComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_activate', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_activate', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_server', NULL, 'textfield', 'CAS', '', 'CasMainServerTitle', 'CasMainServerComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_server_uri', NULL, 'textfield', 'CAS', '', 'CasMainServerURITitle', 'CasMainServerURIComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_port', NULL, 'textfield', 'CAS', '', 'CasMainPortTitle', 'CasMainPortComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_protocol', NULL, 'radio', 'CAS', '', 'CasMainProtocolTitle', 'CasMainProtocolComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_protocol', 'CAS1', 'CAS1Text'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_protocol', 'CAS2', 'CAS2Text'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_protocol', 'SAML', 'SAMLText'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('cas_add_user_activate', NULL, 'radio', 'CAS', 'false', 'CasUserAddActivateTitle', 'CasUserAddActivateComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_add_user_activate', 'platform', 'casAddUserActivatePlatform'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_add_user_activate', 'extldap', 'casAddUserActivateLDAP'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('cas_add_user_activate', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('update_user_info_cas_with_ldap', NULL, 'radio', 'CAS', 'true', 'UpdateUserInfoCasWithLdapTitle', 'UpdateUserInfoCasWithLdapComment', NULL, NULL, 0) |
||||
|
||||
-- Custom Pages |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('use_custom_pages', NULL, 'radio','Platform','false','UseCustomPagesTitle','UseCustomPagesComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('use_custom_pages', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('use_custom_pages', 'false', 'No'); |
||||
|
||||
-- Pages after login by role |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('student_page_after_login', NULL, 'textfield', 'Platform', '', 'StudentPageAfterLoginTitle', 'StudentPageAfterLoginComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('teacher_page_after_login', NULL, 'textfield', 'Platform', '', 'TeacherPageAfterLoginTitle', 'TeacherPageAfterLoginComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('drh_page_after_login', NULL, 'textfield', 'Platform', '', 'DRHPageAfterLoginTitle', 'DRHPageAfterLoginComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('sessionadmin_page_after_login', NULL, 'textfield', 'Session', '', 'SessionAdminPageAfterLoginTitle', 'SessionAdminPageAfterLoginComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('student_autosubscribe', NULL, 'textfield', 'Platform', '', 'StudentAutosubscribeTitle', 'StudentAutosubscribeComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('teacher_autosubscribe', NULL, 'textfield', 'Platform', '', 'TeacherAutosubscribeTitle', 'TeacherAutosubscribeComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('drh_autosubscribe', NULL, 'textfield', 'Platform', '', 'DRHAutosubscribeTitle', 'DRHAutosubscribeComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('sessionadmin_autosubscribe', NULL, 'textfield', 'Session', '', 'SessionadminAutosubscribeTitle', 'SessionadminAutosubscribeComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('show_tabs', 'custom_tab_1', 'checkbox', 'Platform', 'true', 'ShowTabsTitle', 'ShowTabsComment', NULL, 'TabsCustom1', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('show_tabs', 'custom_tab_2', 'checkbox', 'Platform', 'false', 'ShowTabsTitle', 'ShowTabsComment', NULL, 'TabsCustom2', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('show_tabs', 'custom_tab_3', 'checkbox', 'Platform', 'false', 'ShowTabsTitle', 'ShowTabsComment', NULL, 'TabsCustom3', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('languagePriority1', NULL, 'radio', 'Languages', 'course_lang', 'LanguagePriority1Title', 'LanguagePriority1Comment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('languagePriority2', NULL, 'radio', 'Languages', 'user_profil_lang', 'LanguagePriority2Title', 'LanguagePriority2Comment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('languagePriority3', NULL, 'radio', 'Languages', 'user_selected_lang', 'LanguagePriority3Title', 'LanguagePriority3Comment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('languagePriority4', NULL, 'radio', 'Languages', 'platform_lang', 'LanguagePriority4Title', 'LanguagePriority4Comment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('languagePriority1','platform_lang','PlatformLanguage'), ('languagePriority1','user_profil_lang','UserLanguage'), ('languagePriority1','user_selected_lang','UserSelectedLanguage'), ('languagePriority1','course_lang','CourseLanguage'), ('languagePriority2','platform_lang','PlatformLanguage'), ('languagePriority2','user_profil_lang','UserLanguage'), ('languagePriority2','user_selected_lang','UserSelectedLanguage'), ('languagePriority2','course_lang','CourseLanguage'), ('languagePriority3','platform_lang','PlatformLanguage'), ('languagePriority3','user_profil_lang','UserLanguage'), ('languagePriority3','user_selected_lang','UserSelectedLanguage'), ('languagePriority3','course_lang','CourseLanguage'), ('languagePriority4','platform_lang','PlatformLanguage'), ('languagePriority4','user_profil_lang','UserLanguage'), ('languagePriority4','user_selected_lang','UserSelectedLanguage'), ('languagePriority4','course_lang','CourseLanguage'); |
||||
-- Email is login |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('login_is_email', NULL, 'radio', 'Platform', 'false', 'LoginIsEmailTitle', 'LoginIsEmailComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('login_is_email','true','Yes'),('login_is_email','false','No') ; |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('scorm_cumulative_session_time', NULL, 'radio', 'Course', 'true', 'ScormCumulativeSessionTimeTitle', 'ScormCumulativeSessionTimeComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('scorm_cumulative_session_time','true','Yes'), ('scorm_cumulative_session_time','false','No'); |
||||
CREATE TABLE event_type ( id int unsigned NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, name_lang_var varchar(50) NOT NULL, desc_lang_var varchar(50) NOT NULL, extendable_variables varchar(255) NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE event_type ADD INDEX ( name ); |
||||
CREATE TABLE event_type_email_template ( id int unsigned NOT NULL AUTO_INCREMENT, event_type_id int NOT NULL, language_id int NOT NULL, message text NOT NULL, subject varchar(60) NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE event_type_email_template ADD INDEX ( language_id ); |
||||
INSERT INTO user_field (field_type, field_variable, field_display_text, field_visible, field_changeable) values (1, 'already_logged_in','Already logged in',0,0); |
||||
INSERT INTO user_field (field_type, field_variable, field_display_text, field_visible, field_changeable) values (1, 'update_type','Update script type',0,0); |
||||
CREATE TABLE announcement_rel_group (group_id int NOT NULL, announcement_id int NOT NULL, PRIMARY KEY (group_id, announcement_id)); |
||||
CREATE TABLE group_rel_group ( id int NOT NULL AUTO_INCREMENT, group_id int NOT NULL, subgroup_id int NOT NULL, relation_type int NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE group_rel_group ADD INDEX ( group_id ); |
||||
ALTER TABLE group_rel_group ADD INDEX ( subgroup_id ); |
||||
ALTER TABLE group_rel_group ADD INDEX ( relation_type ); |
||||
|
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('gradebook_enable_grade_model', NULL, 'radio', 'Gradebook', 'false', 'GradebookEnableGradeModelTitle', 'GradebookEnableGradeModelComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('gradebook_enable_grade_model', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('gradebook_enable_grade_model', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('teachers_can_change_grade_model_settings', NULL, 'radio', 'Gradebook', 'true', 'TeachersCanChangeGradeModelSettingsTitle', 'TeachersCanChangeGradeModelSettingsComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('teachers_can_change_grade_model_settings', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('teachers_can_change_grade_model_settings', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('gradebook_locking_enabled', NULL, 'radio', 'Gradebook', 'false', 'GradebookEnableLockingTitle', 'GradebookEnableLockingComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('gradebook_locking_enabled', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('gradebook_locking_enabled', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('teachers_can_change_score_settings', NULL, 'radio', 'Gradebook', 'true', 'TeachersCanChangeScoreSettingsTitle', 'TeachersCanChangeScoreSettingsComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('teachers_can_change_score_settings', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('teachers_can_change_score_settings', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_users_to_change_email_with_no_password', NULL, 'radio', 'User', 'false', 'AllowUsersToChangeEmailWithNoPasswordTitle', 'AllowUsersToChangeEmailWithNoPasswordComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_users_to_change_email_with_no_password', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_users_to_change_email_with_no_password', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_session_admins_to_manage_all_sessions', NULL, 'radio', 'Session', 'false', 'AllowSessionAdminsToSeeAllSessionsTitle', 'AllowSessionAdminsToSeeAllSessionsComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_session_admins_to_manage_all_sessions', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_session_admins_to_manage_all_sessions', 'false', 'No'); |
||||
|
||||
-- Shibboleth and Facebook auth and ldap |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('shibboleth_description', NULL, 'radio', 'Shibboleth', 'false', 'ShibbolethMainActivateTitle', 'ShibbolethMainActivateComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('facebook_description', NULL, 'radio', 'Facebook', 'false', 'FacebookMainActivateTitle', 'FacebookMainActivateComment', NULL, NULL, 0); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('ldap_description', NULL, 'radio', 'LDAP', NULL, 'LdapDescriptionTitle', 'LdapDescriptionComment', NULL, NULL, 0); |
||||
|
||||
ALTER TABLE course_rel_user ADD COLUMN legal_agreement INTEGER DEFAULT 0; |
||||
ALTER TABLE session_rel_course_rel_user ADD COLUMN legal_agreement INTEGER DEFAULT 0; |
||||
ALTER TABLE course ADD COLUMN legal TEXT NOT NULL; |
||||
ALTER TABLE course ADD COLUMN activate_legal INT NOT NULL DEFAULT 0; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_help_link', NULL, 'radio', 'Platform', 'true', 'EnableHelpLinkTitle', 'EnableHelpLinkComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_help_link', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_help_link', 'false', 'No'); |
||||
|
||||
ALTER TABLE gradebook_category MODIFY COLUMN weight FLOAT NOT NULL; |
||||
ALTER TABLE gradebook_link MODIFY COLUMN weight FLOAT NOT NULL; |
||||
ALTER TABLE gradebook_link ADD COLUMN locked INT DEFAULT 0; |
||||
ALTER TABLE gradebook_category ADD COLUMN locked INT DEFAULT 0; |
||||
ALTER TABLE gradebook_category ADD COLUMN default_lowest_eval_exclude TINYINT default null; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_hr_skills_management', NULL, 'radio', 'Gradebook', 'true', 'AllowHRSkillsManagementTitle', 'AllowHRSkillsManagementComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_hr_skills_management', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_hr_skills_management', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_admin_toolbar', NULL, 'radio', 'Platform', 'show_to_admin', 'ShowAdminToolbarTitle', 'ShowAdminToolbarComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_admin_toolbar', 'do_not_show', 'DoNotShow'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_admin_toolbar', 'show_to_admin', 'ShowToAdminsOnly'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_admin_toolbar', 'show_to_admin_and_teachers', 'ShowToAdminsAndTeachers'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_admin_toolbar', 'show_to_all', 'ShowToAllUsers'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_global_chat', NULL, 'radio', 'Platform', 'true', 'AllowGlobalChatTitle', 'AllowGlobalChatComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_global_chat', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_global_chat', 'false', 'No'); |
||||
|
||||
CREATE TABLE chat (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, from_user INTEGER, to_user INTEGER, message TEXT NOT NULL, sent DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', recd INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (id)); |
||||
ALTER TABLE chat ADD INDEX idx_chat_to_user (to_user); |
||||
ALTER TABLE chat ADD INDEX idx_chat_from_user (from_user); |
||||
|
||||
INSERT INTO user_field (field_type, field_variable, field_display_text, field_visible, field_changeable) VALUES (1, 'google_calendar_url','Google Calendar URL',0,0); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('courses_default_creation_visibility', NULL, 'radio', 'Course', '2', 'CoursesDefaultCreationVisibilityTitle', 'CoursesDefaultCreationVisibilityComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('courses_default_creation_visibility', '3', 'OpenToTheWorld'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('courses_default_creation_visibility', '2', 'OpenToThePlatform'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('courses_default_creation_visibility', '1', 'Private'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('courses_default_creation_visibility', '0', 'CourseVisibilityClosed'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_browser_sniffer', NULL, 'radio', 'Tuning', 'false', 'AllowBrowserSnifferTitle', 'AllowBrowserSnifferComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_browser_sniffer', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_browser_sniffer', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_wami_record', NULL, 'radio', 'Tools', 'false', 'EnableWamiRecordTitle', 'EnableWamiRecordComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_wami_record', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_wami_record', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_public_certificates', NULL, 'radio', 'Course', 'false', 'AllowPublicCertificatesTitle', 'AllowPublicCertificatesComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_public_certificates', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_public_certificates', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_iframe_inclusion', NULL, 'radio', 'Editor', 'false', 'EnableIframeInclusionTitle', 'EnableIframeInclusionComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_iframe_inclusion', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_iframe_inclusion', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('show_hot_courses', NULL, 'radio', 'Platform', 'true', 'ShowHotCoursesTitle', 'ShowHotCoursesComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_hot_courses', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('show_hot_courses', 'false', 'No'); |
||||
|
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('gradebook_default_weight', NULL, 'textfield', 'Gradebook', '100', 'GradebookDefaultWeightTitle', 'GradebookDefaultWeightComment', NULL, NULL, 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('gradebook_default_grade_model_id', NULL, 'select', 'Gradebook', '', 'GradebookDefaultGradeModelTitle', 'GradebookDefaultGradeModelComment', NULL, NULL, 1); |
||||
|
||||
UPDATE settings_current SET category = 'Session' WHERE variable IN ('show_tutor_data', 'use_session_mode', 'add_users_by_coach', 'show_session_coach', 'show_session_data', 'allow_coach_to_edit_course_session','hide_courses_in_sessions', 'show_groups_to_users'); |
||||
|
||||
INSERT INTO language (original_name, english_name, isocode, dokeos_folder, available) VALUES ('বাংলা','bengali','bn','bengali',0), ('الصومالية','somali','so','somali',0); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('enable_webcam_clip', NULL, 'radio', 'Tools', 'false', 'EnableWebCamClipTitle', 'EnableWebCamClipComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_webcam_clip', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('enable_webcam_clip', 'false', 'No'); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','documents','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Documents', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','learning_path','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'LearningPath', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','links','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Links', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','announcements','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Announcements', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','forums','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Forums', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','quiz','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Quiz', 1); |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('tool_visible_by_default_at_creation','gradebook','checkbox','Tools','true','ToolVisibleByDefaultAtCreationTitle','ToolVisibleByDefaultAtCreationComment',NULL,'Gradebook', 1); |
||||
|
||||
-- Course ranking |
||||
CREATE TABLE track_course_ranking (id int unsigned not null PRIMARY KEY AUTO_INCREMENT, c_id int unsigned not null, session_id int unsigned not null default 0, url_id int unsigned not null default 0, accesses int unsigned not null default 0, total_score int unsigned not null default 0, users int unsigned not null default 0, creation_date datetime not null); |
||||
|
||||
ALTER TABLE track_course_ranking ADD INDEX idx_tcc_cid (c_id); |
||||
ALTER TABLE track_course_ranking ADD INDEX idx_tcc_sid (session_id); |
||||
ALTER TABLE track_course_ranking ADD INDEX idx_tcc_urlid (url_id); |
||||
ALTER TABLE track_course_ranking ADD INDEX idx_tcc_creation_date (creation_date); |
||||
|
||||
CREATE TABLE user_rel_course_vote ( id int unsigned not null AUTO_INCREMENT PRIMARY KEY, c_id int unsigned not null, user_id int unsigned not null, session_id int unsigned not null default 0, url_id int unsigned not null default 0, vote int unsigned not null default 0); |
||||
|
||||
ALTER TABLE user_rel_course_vote ADD INDEX idx_ucv_cid (c_id); |
||||
ALTER TABLE user_rel_course_vote ADD INDEX idx_ucv_uid (user_id); |
||||
ALTER TABLE user_rel_course_vote ADD INDEX idx_ucv_cuid (user_id, c_id); |
||||
|
||||
--User chat status |
||||
INSERT INTO user_field (field_type, field_variable, field_display_text, field_visible, field_changeable) VALUES (1, 'user_chat_status','User chat status', 0, 0); |
||||
UPDATE settings_current SET selected_value = 'true' WHERE variable = 'more_buttons_maximized_mode'; |
||||
|
||||
--Grade model |
||||
CREATE TABLE grade_model (id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT, default_lowest_eval_exclude TINYINT default null, default_external_eval_prefix VARCHAR(140) default null, PRIMARY KEY (id)); |
||||
CREATE TABLE grade_components (id INTEGER NOT NULL AUTO_INCREMENT, percentage VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL, acronym VARCHAR(255) NOT NULL, grade_model_id INTEGER NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE gradebook_category ADD COLUMN grade_model_id INT DEFAULT 0; |
||||
|
||||
UPDATE settings_current SET title = 'DatabaseVersion' WHERE variable = 'chamilo_database_version'; |
||||
ALTER TABLE gradebook_evaluation MODIFY COLUMN weight FLOAT NOT NULL; |
||||
|
||||
INSERT INTO settings_options(variable, value, display_text) VALUES ('page_after_login', 'main/auth/courses.php', 'CourseCatalog'); |
||||
|
||||
ALTER TABLE settings_current ADD COLUMN access_url_locked INTEGER NOT NULL DEFAULT 0; |
||||
|
||||
-- Event mail |
||||
CREATE TABLE event_email_template ( id int NOT NULL AUTO_INCREMENT, message text, subject varchar(255) DEFAULT NULL, event_type_name varchar(255) DEFAULT NULL, activated tinyint NOT NULL DEFAULT '0', language_id int DEFAULT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE event_email_template ADD INDEX event_name_index (event_type_name); |
||||
|
||||
CREATE TABLE event_sent ( id int NOT NULL AUTO_INCREMENT, user_from int NOT NULL, user_to int DEFAULT NULL, event_type_name varchar(100) DEFAULT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE event_sent ADD INDEX event_name_index (event_type_name); |
||||
|
||||
CREATE TABLE user_rel_event_type ( id int NOT NULL AUTO_INCREMENT, user_id int NOT NULL, event_type_name varchar(255) NOT NULL, PRIMARY KEY (id)); |
||||
ALTER TABLE user_rel_event_type ADD INDEX event_name_index (event_type_name); |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('activate_email_template', NULL, 'radio', 'Platform', 'false', 'ActivateEmailTemplateTitle', 'ActivateEmailTemplateComment', NULL, NULL, 0); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('activate_email_template', 'true', 'Yes'),('activate_email_template', 'false', 'No'); |
||||
|
||||
-- Skills |
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('allow_skills_tool', NULL, 'radio', 'Platform', 'false', 'AllowSkillsToolTitle', 'AllowSkillsToolComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_skills_tool', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) VALUES ('allow_skills_tool', 'false', 'No'); |
||||
|
||||
CREATE TABLE IF NOT EXISTS skill ( id int NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, short_code varchar(100) NOT NULL, description TEXT NOT NULL, access_url_id int NOT NULL, icon varchar(255) NOT NULL, PRIMARY KEY (id)); |
||||
INSERT INTO skill (name) VALUES ('Root'); |
||||
|
||||
CREATE TABLE IF NOT EXISTS skill_rel_gradebook ( id int NOT NULL AUTO_INCREMENT, gradebook_id int NOT NULL, skill_id int NOT NULL, type varchar(10) NOT NULL, PRIMARY KEY (id)); |
||||
CREATE TABLE IF NOT EXISTS skill_rel_skill (id int NOT NULL AUTO_INCREMENT, skill_id int NOT NULL, parent_id int NOT NULL, relation_type int NOT NULL, level int NOT NULL, PRIMARY KEY (id)); |
||||
INSERT INTO skill_rel_skill VALUES(1, 1, 0, 0, 0); |
||||
|
||||
CREATE TABLE IF NOT EXISTS skill_rel_user ( id int NOT NULL AUTO_INCREMENT, user_id int NOT NULL, skill_id int NOT NULL, acquired_skill_at datetime NOT NULL DEFAULT '0000-00-00 00:00:00',assigned_by int NOT NULL,PRIMARY KEY (id)); |
||||
CREATE TABLE IF NOT EXISTS skill_profile ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT NOT NULL, PRIMARY KEY (id)); |
||||
CREATE TABLE IF NOT EXISTS skill_rel_profile ( id INTEGER NOT NULL AUTO_INCREMENT, skill_id INTEGER NOT NULL, profile_id INTEGER NOT NULL, PRIMARY KEY (id)); |
||||
|
||||
-- Removing use_document_title |
||||
DELETE FROM settings_current WHERE variable = 'use_document_title'; |
||||
DELETE FROM settings_options WHERE variable = 'use_document_title'; |
||||
|
||||
ALTER TABLE course MODIFY COLUMN disk_quota bigint unsigned DEFAULT NULL; |
||||
ALTER TABLE user MODIFY COLUMN username VARCHAR(100) NOT NULL; |
||||
|
||||
UPDATE language SET english_name = 'basque' , dokeos_folder = 'basque' where english_name = 'euskera'; |
||||
UPDATE language SET english_name = 'turkish', dokeos_folder = 'turkish' where english_name = 'turkce'; |
||||
|
||||
INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES('platform_unsubscribe_allowed', NULL, 'radio', 'Platform', 'false', 'PlatformUnsubscribeTitle', 'PlatformUnsubscribeComment', NULL, NULL, 1); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('platform_unsubscribe_allowed', 'true', 'Yes'); |
||||
INSERT INTO settings_options (variable, value, display_text) values ('platform_unsubscribe_allowed', 'false', 'No'); |
||||
|
||||
ALTER TABLE usergroup_rel_session ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE usergroup_rel_course ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE usergroup_rel_user ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE admin ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE reservation_category_rights ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
|
||||
|
||||
CREATE TABLE course_type (id int unsigned not null auto_increment primary key, name varchar(50) not null, translation_var char(40) default 'UndefinedCourseTypeLabel', description TEXT default '', props text default ''); |
||||
|
||||
INSERT INTO course_type (id, name) VALUES (1, 'All tools'); |
||||
INSERT INTO course_type (id, name) VALUES (2, 'Entry exam'); |
||||
|
||||
ALTER TABLE course add course_type_id int unsigned default 1; |
||||
|
||||
CREATE TABLE usergroup_rel_question (id int unsigned not null auto_increment primary key, c_id int unsigned not null, question_id int unsigned not null, usergroup_id int unsigned not null, coefficient float(6,2)); |
||||
|
||||
-- Remove settings entry that doesnt exist anymore |
||||
|
||||
DELETE FROM settings_current WHERE variable = 'read_more_limit'; |
||||
DELETE FROM settings_current WHERE variable = 'user_order_by'; |
||||
DELETE FROM settings_options WHERE variable = 'user_order_by'; |
||||
|
||||
ALTER TABLE user_api_key ADD COLUMN api_end_point text DEFAULT NULL; |
||||
ALTER TABLE user_api_key ADD COLUMN created_date datetime DEFAULT NULL; |
||||
ALTER TABLE user_api_key ADD COLUMN validity_start_date datetime DEFAULT NULL; |
||||
ALTER TABLE user_api_key ADD COLUMN validity_end_date datetime DEFAULT NULL; |
||||
ALTER TABLE user_api_key ADD COLUMN description text DEFAULT NULL; |
||||
|
||||
-- Do not move this query |
||||
UPDATE settings_current SET selected_value = '1.9.0.18715' WHERE variable = 'chamilo_database_version'; |
||||
|
||||
-- xxSTATSxx |
||||
ALTER TABLE track_e_default MODIFY COLUMN default_value TEXT; |
||||
ALTER TABLE track_e_exercices ADD COLUMN questions_to_check TEXT NOT NULL DEFAULT ''; |
||||
--CREATE TABLE track_filtered_terms (id int, user_id int, course_id int, session_id int, tool_id char(12), filtered_term varchar(255), created_at datetime); |
||||
CREATE TABLE track_stored_values (id int unsigned not null AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, sco_id INT NOT NULL, course_id CHAR(40) NOT NULL, sv_key CHAR(64) NOT NULL, sv_value TEXT NOT NULL); |
||||
ALTER TABLE track_stored_values ADD KEY (user_id, sco_id, course_id, sv_key); |
||||
ALTER TABLE track_stored_values ADD UNIQUE (user_id, sco_id, course_id, sv_key); |
||||
|
||||
CREATE TABLE track_stored_values_stack (id int unsigned not null AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL, sco_id INT NOT NULL, stack_order INT NOT NULL, course_id CHAR(40) NOT NULL, sv_key CHAR(64) NOT NULL, sv_value TEXT NOT NULL); |
||||
ALTER TABLE track_stored_values_stack ADD KEY (user_id, sco_id, course_id, sv_key, stack_order); |
||||
ALTER TABLE track_stored_values_stack ADD UNIQUE (user_id, sco_id, course_id, sv_key, stack_order); |
||||
|
||||
ALTER TABLE track_e_attempt ADD COLUMN filename VARCHAR(255) DEFAULT NULL; |
||||
ALTER TABLE track_e_default ADD COLUMN c_id INTEGER DEFAULT NULL; |
||||
|
||||
ALTER TABLE track_e_attempt_recording ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE track_e_attempt ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
ALTER TABLE track_e_hotpotatoes ADD COLUMN id INTEGER NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id); |
||||
|
||||
CREATE TABLE track_e_attempt_coeff ( id int unsigned not null auto_increment primary key, attempt_id INT NOT NULL, marks_coeff float(6,2)); |
||||
|
||||
-- xxUSERxx |
||||
ALTER TABLE personal_agenda ADD COLUMN all_day INTEGER NOT NULL DEFAULT 0; |
||||
@ -1,539 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
/** |
||||
* Chamilo LMS |
||||
* |
||||
* @package chamilo.install |
||||
*/ |
||||
|
||||
$update = function($_configuration, $mainConnection, $dryRun, $output, $app) { |
||||
|
||||
$mainConnection->beginTransaction(); |
||||
|
||||
$singleDbForm = isset($_configuration['single_database']) ? $_configuration['single_database'] : false; |
||||
$dbNameForm = $_configuration['main_database']; |
||||
$dbStatsForm = isset($_configuration['statistics_database']) ? $_configuration['statistics_database'] : $_configuration['main_database']; |
||||
$dbUserForm = isset($_configuration['user_personal_database']) ? $_configuration['user_personal_database'] : $_configuration['main_database']; |
||||
|
||||
//Migrate classes to the new classes (usergroups) |
||||
|
||||
$sql = "SELECT selected_value FROM $dbNameForm.settings_current WHERE variable='use_session_mode' "; |
||||
$result = iDatabase::query($sql); |
||||
$result = Database::fetch_array($result); |
||||
$session_mode = $result['selected_value']; |
||||
|
||||
if ($session_mode == 'true') { |
||||
|
||||
$sql = "UPDATE settings_current SET selected_value = 'true' WHERE variable='use_session_mode' "; |
||||
$mainConnection->executeQuery($sql); |
||||
|
||||
$sql = "SELECT * FROM $dbNameForm.class"; |
||||
$result = iDatabase::query($sql); |
||||
$count = 0; |
||||
$new_table = "$dbNameForm.usergroup"; |
||||
$classes_added = 0; |
||||
$mapping_classes = array(); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
$output->writeln('Moving classes to usergroups '); |
||||
while($row = iDatabase::fetch_array($result, 'ASSOC')) { |
||||
$old_id = $row['id']; |
||||
unset($row['id']); |
||||
unset($row['code']); |
||||
$new_user_group_id = Database::insert($new_table, $row); |
||||
|
||||
if (is_numeric($new_user_group_id)) { |
||||
$mapping_classes[$old_id] = $new_user_group_id; |
||||
$classes_added ++; |
||||
} |
||||
} |
||||
$output->writeln("Classes added: $classes_added"); |
||||
} |
||||
|
||||
$sql = "SELECT * FROM $dbNameForm.class_user"; |
||||
$result = iDatabase::query($sql); |
||||
$new_table = "$dbNameForm.usergroup_rel_user"; |
||||
|
||||
if (Database::num_rows($result)) { |
||||
$output->writeln('Moving users from class_user to usergroup_rel_user '); |
||||
while ($row = iDatabase::fetch_array($result, 'ASSOC')) { |
||||
$values = array( |
||||
'usergroup_id' => $mapping_classes[$row['class_id']], |
||||
'user_id' => $row['user_id'] |
||||
); |
||||
Database::insert($new_table, $values); |
||||
$output->writeln("Saving : ".implode(', ', $values)); |
||||
} |
||||
} |
||||
|
||||
$sql = "SELECT * FROM $dbNameForm.course_rel_class"; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
$new_table = "$dbNameForm.usergroup_rel_course"; |
||||
|
||||
if (Database::num_rows($result)) { |
||||
$output->writeln("Moving course_rel_class to usergroup_rel_course"); |
||||
|
||||
while ($row = iDatabase::fetch_array($result, 'ASSOC')) { |
||||
$course_code = $row['course_code']; |
||||
$course_code = addslashes($course_code); |
||||
$sql_course = "SELECT id from $dbNameForm.course WHERE code = '$course_code'"; |
||||
$result_course = iDatabase::query($sql_course); |
||||
$result_course = Database::fetch_array($result_course); |
||||
$course_id = $result_course['id']; |
||||
$values = array( |
||||
'usergroup_id' => $mapping_classes[$row['class_id']], |
||||
'course_id' => $course_id |
||||
); |
||||
Database::insert($new_table, $values); |
||||
$output->writeln("Saving : ".implode(', ', $values)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//Moving Stats DB to the main DB |
||||
|
||||
$stats_table = array( |
||||
"track_c_browsers", |
||||
"track_c_countries", |
||||
"track_c_os", |
||||
"track_c_providers", |
||||
"track_c_referers", |
||||
"track_e_access", |
||||
"track_e_attempt", |
||||
"track_e_attempt_recording", |
||||
"track_e_course_access", |
||||
"track_e_default", |
||||
"track_e_downloads", |
||||
"track_e_exercices", |
||||
"track_e_hotpotatoes", |
||||
"track_e_hotspot", |
||||
"track_e_item_property", |
||||
"track_e_lastaccess", |
||||
"track_e_links", |
||||
"track_e_login", |
||||
"track_e_online", |
||||
"track_e_open", |
||||
"track_e_uploads", |
||||
"track_stored_values", |
||||
"track_stored_values_stack", |
||||
); |
||||
|
||||
if ($dbNameForm != $dbStatsForm) { |
||||
iDatabase::select_db($dbStatsForm); |
||||
foreach ($stats_table as $stat_table) { |
||||
$sql = "ALTER TABLE $dbStatsForm.$stat_table RENAME $dbNameForm.$stat_table"; |
||||
Database::query($sql); |
||||
$output->writeln($sql); |
||||
} |
||||
iDatabase::select_db($dbNameForm); |
||||
} |
||||
|
||||
//Moving user database to the main database |
||||
$users_tables = array( |
||||
"personal_agenda", |
||||
"personal_agenda_repeat", |
||||
"personal_agenda_repeat_not", |
||||
"user_course_category" |
||||
); |
||||
|
||||
if ($dbNameForm != $dbUserForm) { |
||||
iDatabase::select_db($dbUserForm); |
||||
foreach ($users_tables as $table) { |
||||
$sql = "ALTER TABLE $dbUserForm.$table RENAME $dbNameForm.$table"; |
||||
iDatabase::query($sql); |
||||
$output->writeln($sql); |
||||
} |
||||
iDatabase::select_db($dbNameForm); |
||||
} |
||||
|
||||
//Adding admin user in the access_url_rel_user table |
||||
$sql = "SELECT user_id FROM admin WHERE user_id = 1"; |
||||
$result = iDatabase::query($sql); |
||||
$has_user_id = Database::num_rows($result) > 0; |
||||
|
||||
$sql = "SELECT * FROM access_url_rel_user WHERE user_id = 1 AND access_url_id = 1"; |
||||
$result = iDatabase::query($sql); |
||||
$has_entry = Database::num_rows($result) > 0; |
||||
|
||||
if ($has_user_id && !$has_entry) { |
||||
$sql = "INSERT INTO access_url_rel_user VALUES(1, 1)"; |
||||
iDatabase::query($sql); |
||||
$output->writeln($sql); |
||||
} |
||||
$output->writeln("Dropping c_* tables ..."); |
||||
$this->dropCourseTables(); |
||||
|
||||
$output->writeln("Creating c_* tables ..."); |
||||
$this->createCourseTables($output); |
||||
|
||||
$prefix = ''; |
||||
if ($singleDbForm) { |
||||
$prefix = $_configuration['table_prefix']; |
||||
} |
||||
|
||||
$app['monolog']->addInfo("Database prefix: '$prefix'"); |
||||
|
||||
iDatabase::select_db($dbNameForm); |
||||
$res = iDatabase::query("SELECT id, code, db_name, directory, course_language, id as real_id FROM course WHERE target_course_code IS NULL ORDER BY code"); |
||||
|
||||
if ($res === false) { die('Error while querying the courses list in update_db-1.8.8-1.9.0.inc.php'); } |
||||
|
||||
$errors = array(); |
||||
|
||||
if (iDatabase::num_rows($res) > 0) { |
||||
$i = 0; |
||||
$list = array(); |
||||
while ($row = iDatabase::fetch_array($res)) { |
||||
$list[] = $row; |
||||
$i++; |
||||
} |
||||
|
||||
$output->writeln("Moving old course tables to the new structure 1 single database"); |
||||
|
||||
$progress = $this->getHelperSet()->get('progress'); |
||||
$progress->start($output, count($list)); |
||||
|
||||
foreach ($list as $row_course) { |
||||
if (!$singleDbForm) { |
||||
// otherwise just use the main one |
||||
iDatabase::select_db($row_course['db_name']); |
||||
} |
||||
|
||||
if (!$singleDbForm) { |
||||
// otherwise just use the main one |
||||
iDatabase::select_db($row_course['db_name']); |
||||
} else { |
||||
iDatabase::select_db($dbNameForm); |
||||
} |
||||
|
||||
//Course tables to be migrated |
||||
$table_list = array( |
||||
'announcement', |
||||
'announcement_attachment', |
||||
'attendance', |
||||
'attendance_calendar', |
||||
'attendance_result', |
||||
'attendance_sheet', |
||||
'attendance_sheet_log', |
||||
'blog', |
||||
'blog_attachment', |
||||
'blog_comment', |
||||
'blog_post', |
||||
'blog_rating', |
||||
'blog_rel_user', |
||||
'blog_task', |
||||
'blog_task_rel_user', |
||||
'calendar_event', |
||||
'calendar_event_attachment', |
||||
'calendar_event_repeat', |
||||
'calendar_event_repeat_not', |
||||
'chat_connected', |
||||
'course_description', |
||||
'course_setting', |
||||
'document', |
||||
'dropbox_category', |
||||
'dropbox_feedback', |
||||
'dropbox_file', |
||||
'dropbox_person', |
||||
'dropbox_post', |
||||
'forum_attachment', |
||||
'forum_category', |
||||
'forum_forum', |
||||
'forum_mailcue', |
||||
'forum_notification', |
||||
'forum_post', |
||||
'forum_thread', |
||||
'forum_thread_qualify', |
||||
'forum_thread_qualify_log', |
||||
'glossary', |
||||
'group_category', |
||||
'group_info', |
||||
'group_rel_tutor', |
||||
'group_rel_user', |
||||
'item_property', |
||||
'link', |
||||
'link_category', |
||||
'lp', |
||||
'lp_item', |
||||
'lp_item_view', |
||||
'lp_iv_interaction', |
||||
'lp_iv_objective', |
||||
'lp_view', |
||||
'notebook', |
||||
'metadata', |
||||
'online_connected', |
||||
'online_link', |
||||
'permission_group', |
||||
'permission_task', |
||||
'permission_user', |
||||
'quiz', |
||||
'quiz_answer', |
||||
'quiz_question', |
||||
'quiz_question_option', |
||||
'quiz_rel_question', |
||||
'resource', |
||||
'role', |
||||
'role_group', |
||||
'role_permissions', |
||||
'role_user', |
||||
'student_publication', |
||||
'student_publication_assignment', |
||||
'survey', |
||||
'survey_answer', |
||||
'survey_group', |
||||
'survey_invitation', |
||||
'survey_question', |
||||
'survey_question_option', |
||||
'thematic', |
||||
'thematic_advance', |
||||
'thematic_plan', |
||||
'tool', |
||||
'tool_intro', |
||||
'userinfo_content', |
||||
'userinfo_def', |
||||
'wiki', |
||||
'wiki_conf', |
||||
'wiki_discuss', |
||||
'wiki_mailcue' |
||||
); |
||||
|
||||
$output->writeln(''); |
||||
$output->writeln('Course DB'.$row_course['db_name']); |
||||
|
||||
$old_count = 0; |
||||
foreach ($table_list as $table) { |
||||
$just_table_name = $table; |
||||
$old_table = $row_course['db_name'].".".$table; |
||||
|
||||
if ($singleDbForm) { |
||||
$old_table = "$prefix{$row_course['db_name']}_".$table; |
||||
$just_table_name = "$prefix{$row_course['db_name']}_".$table; |
||||
} |
||||
|
||||
$course_id = $row_course['id']; |
||||
$new_table = DB_COURSE_PREFIX.$table; |
||||
|
||||
//Use the old database (if this is the case) |
||||
|
||||
if (!$singleDbForm) { |
||||
// otherwise just use the main one |
||||
iDatabase::select_db($row_course['db_name']); |
||||
} else { |
||||
iDatabase::select_db($dbNameForm); |
||||
} |
||||
|
||||
//Count of rows |
||||
$sql = "SHOW TABLES LIKE '$just_table_name'"; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
|
||||
$sql = "SELECT count(*) FROM $old_table"; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
$old_count = 0; |
||||
if ($result) { |
||||
$row = iDatabase::fetch_row($result); |
||||
$old_count = $row[0]; |
||||
} else { |
||||
$output->writeln("Count(*) in table $old_table failed"); |
||||
} |
||||
|
||||
$sql = "SELECT * FROM $old_table"; |
||||
$result = iDatabase::query($sql); |
||||
|
||||
$count = 0; |
||||
|
||||
/* Loads the main database */ |
||||
iDatabase::select_db($dbNameForm); |
||||
|
||||
while($row = iDatabase::fetch_array($result, 'ASSOC')) { |
||||
$row['c_id'] = $course_id; |
||||
$id = iDatabase::insert($new_table, $row); |
||||
if (is_numeric($id)) { |
||||
$count++; |
||||
} else { |
||||
$errors[$old_table][] = $row; |
||||
} |
||||
} |
||||
|
||||
//$output->writeln("$count/$old_count rows inserted in $new_table"); |
||||
|
||||
if ($old_count != $count) { |
||||
$output->writeln("ERROR count of new and old table doesn't match: $old_count - $new_table"); |
||||
$output->writeln("Check the results: "); |
||||
$output->writeln(print_r($errors, 1)); |
||||
} |
||||
} else { |
||||
$output->writeln(''); |
||||
$output->writeln("Seems that the table $old_table doesn't exists "); |
||||
} |
||||
} |
||||
$progress->advance(); |
||||
} |
||||
|
||||
$progress->finish(); |
||||
|
||||
$output->writeln("End course migration"); |
||||
|
||||
|
||||
/* Start work fix */ |
||||
|
||||
$output->writeln("Starting work fix"); |
||||
|
||||
/* Fixes the work subfolder and work with no parent issues */ |
||||
|
||||
$courseList = \CourseManager::get_real_course_list(); |
||||
|
||||
$work_table = $_configuration['main_database'].".student_publication"; |
||||
$item_table = $_configuration['main_database'].".item_property"; |
||||
|
||||
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php'; |
||||
$sys_course_path = api_get_path(SYS_COURSE_PATH); |
||||
$today = api_get_utc_datetime(); |
||||
$user_id = 1; |
||||
|
||||
foreach ($courseList as $course) { |
||||
$courseId = $course['id']; //int id |
||||
|
||||
//1. Searching for works with no parents |
||||
$sql = "SELECT * FROM $work_table WHERE parent_id = 0 AND filetype ='file' AND c_id = $courseId "; |
||||
$result = Database::query($sql); |
||||
|
||||
$work_list = array(); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
while ($row = Database::fetch_array($result, 'ASSOC')) { |
||||
$work_list[] = $row; |
||||
} |
||||
} |
||||
|
||||
$course_dir = $sys_course_path.$course['directory']; |
||||
$base_work_dir = $course_dir.'/work'; |
||||
|
||||
//2. Looping if there are works with no parents |
||||
if (!empty($work_list)) { |
||||
$work_dir_created = array(); |
||||
|
||||
foreach ($work_list as $work) { |
||||
$session_id = intval($work['session_id']); |
||||
$group_id = intval($work['post_group_id']); |
||||
$work_key = $session_id.$group_id; |
||||
|
||||
//Only create the folder once |
||||
if (!isset($work_dir_created[$work_key])) { |
||||
|
||||
$dir_name = "default_tasks_".$group_id."_".$session_id; |
||||
|
||||
//2.1 Creating a new work folder |
||||
$sql = "INSERT INTO $work_table SET |
||||
c_id = '$courseId', |
||||
url = 'work/".$dir_name."', |
||||
title = 'Tasks', |
||||
description = '', |
||||
author = '', |
||||
active = '1', |
||||
accepted = '1', |
||||
filetype = 'folder', |
||||
post_group_id = '$group_id', |
||||
sent_date = '".$today."', |
||||
parent_id = '0', |
||||
qualificator_id = '', |
||||
user_id = '".$user_id."'"; |
||||
iDatabase::query($sql); |
||||
|
||||
$id = Database::insert_id(); |
||||
//2.2 Adding the folder in item property |
||||
if ($id) { |
||||
//api_item_property_update($row_course, 'work', $id, 'DirectoryCreated', $user_id, $group_id, null, 0, 0 , $session_id); |
||||
$sql = "INSERT INTO $item_table (c_id, tool, ref, insert_date, insert_user_id, lastedit_date, lastedit_type, lastedit_user_id, to_group_id, visibility, id_session) |
||||
VALUES ('$courseId', 'work','$id','$today', '$user_id', '$today', 'DirectoryCreated','$user_id', '$group_id', '1', '$session_id')"; |
||||
|
||||
iDatabase::query($sql); |
||||
$work_dir_created[$work_key] = $id; |
||||
create_unexisting_work_directory($base_work_dir, $dir_name); |
||||
$final_dir = $base_work_dir.'/'.$dir_name; |
||||
} |
||||
} else { |
||||
$final_dir = $base_work_dir.'/'.$dir_name; |
||||
} |
||||
|
||||
//2.3 Updating the url |
||||
if (!empty($work_dir_created[$work_key])) { |
||||
$parent_id = $work_dir_created[$work_key]; |
||||
$new_url = "work/".$dir_name.'/'.basename($work['url']); |
||||
$new_url = Database::escape_string($new_url); |
||||
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $parent_id, contains_file = '1' WHERE id = {$work['id']} AND c_id = $courseId"; |
||||
iDatabase::query($sql); |
||||
if (is_dir($final_dir)) { |
||||
rename($course_dir.'/'.$work['url'], $course_dir.'/'.$new_url); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
//3.0 Moving subfolders to the root |
||||
$sql = "SELECT * FROM $work_table WHERE parent_id <> 0 AND filetype ='folder' AND c_id = $courseId"; |
||||
$result = Database::query($sql); |
||||
$work_list = array(); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
while ($row = Database::fetch_array($result, 'ASSOC')) { |
||||
$work_list[] = $row; |
||||
} |
||||
if (!empty($work_list)) { |
||||
foreach ($work_list as $work_folder) { |
||||
$folder_id = $work_folder['id']; |
||||
check_work($folder_id, $work_folder['url'], $work_table, $base_work_dir, $courseId); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$output->writeln("End work fix"); |
||||
|
||||
//Remove dn_name |
||||
/*$query = "UPDATE course SET db_name = ''"; |
||||
$mainConnection->executeQuery($query);*/ |
||||
|
||||
$mainConnection->commit(); |
||||
} |
||||
}; |
||||
|
||||
function check_work($folder_id, $work_url, $work_table, $base_work_dir, $courseId) { |
||||
$uniq_id = uniqid(); |
||||
//Looking for subfolders |
||||
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='folder' AND c_id = $courseId"; |
||||
$result = Database::query($sql); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
while ($row = Database::fetch_array($result, 'ASSOC')) { |
||||
check_work($row['id'], $row['url'], $work_table, $base_work_dir, $courseId); |
||||
} |
||||
} |
||||
|
||||
//Moving the subfolder in the root |
||||
$new_url = '/'.basename($work_url).'_mv_'.$uniq_id; |
||||
$new_url = Database::escape_string($new_url); |
||||
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = 0 WHERE id = $folder_id AND c_id = $courseId"; |
||||
iDatabase::query($sql); |
||||
|
||||
if (is_dir($base_work_dir.$work_url)) { |
||||
rename($base_work_dir.$work_url, $base_work_dir.$new_url); |
||||
|
||||
//Rename all files inside the folder |
||||
$sql = "SELECT * FROM $work_table WHERE parent_id = $folder_id AND filetype ='file' AND c_id = $courseId"; |
||||
$result = Database::query($sql); |
||||
|
||||
if (Database::num_rows($result)) { |
||||
while ($row = Database::fetch_array($result, 'ASSOC')) { |
||||
$new_url = "work".$new_url.'/'.basename($row['url']); |
||||
$new_url = Database::escape_string($new_url); |
||||
$sql = "UPDATE $work_table SET url = '$new_url', parent_id = $folder_id, contains_file = '1' WHERE id = {$row['id']} AND c_id = $courseId"; |
||||
iDatabase::query($sql); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -1,23 +0,0 @@ |
||||
<?php |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
/** |
||||
* Chamilo LMS |
||||
* |
||||
* @package chamilo.install |
||||
*/ |
||||
if (defined('SYSTEM_INSTALLATION')) { |
||||
$conf_dir = api_get_path(CONFIGURATION_PATH); |
||||
$portfolio_conf_dist = $conf_dir . 'portfolio.conf.dist.php'; |
||||
$portfolio_conf = $conf_dir . 'portfolio.conf.dist.php'; |
||||
|
||||
if (!file_exists($portfolio_conf)) { |
||||
copy($portfolio_conf_dist, $portfolio_conf); |
||||
} |
||||
|
||||
//Adds events.conf file |
||||
if (! file_exists(api_get_path(CONFIGURATION_PATH).'events.conf.php')) { |
||||
copy(api_get_path(CONFIGURATION_PATH).'events.conf.dist.php', api_get_path(CONFIGURATION_PATH).'events.conf.php'); |
||||
} |
||||
} |
||||
@ -1,598 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Symfony\Component\Yaml\Dumper; |
||||
use Symfony\Component\Yaml\Parser; |
||||
use Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand; |
||||
|
||||
class CommonCommand extends AbstractCommand |
||||
{ |
||||
public $portalSettings; |
||||
public $databaseSettings; |
||||
public $adminSettings; |
||||
public $rootSys; |
||||
|
||||
/** |
||||
* @param array $portalSettings |
||||
*/ |
||||
public function setPortalSettings(array $portalSettings) |
||||
{ |
||||
$this->portalSettings = $portalSettings; |
||||
} |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getPortalSettings() |
||||
{ |
||||
return $this->portalSettings; |
||||
} |
||||
|
||||
/** |
||||
* @param array $databaseSettings |
||||
*/ |
||||
public function setDatabaseSettings(array $databaseSettings) |
||||
{ |
||||
$this->databaseSettings = $databaseSettings; |
||||
} |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getDatabaseSettings() |
||||
{ |
||||
return $this->databaseSettings; |
||||
} |
||||
|
||||
/** |
||||
* @param array $adminSettings |
||||
*/ |
||||
public function setAdminSettings(array $adminSettings) |
||||
{ |
||||
$this->adminSettings = $adminSettings; |
||||
} |
||||
|
||||
public function getAdminSettings() |
||||
{ |
||||
return $this->adminSettings; |
||||
} |
||||
|
||||
/** |
||||
* @param string $path |
||||
*/ |
||||
public function setRootSys($path) |
||||
{ |
||||
$this->rootSys = $path; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
|
||||
public function getRootSys() |
||||
{ |
||||
return $this->rootSys; |
||||
} |
||||
|
||||
/** |
||||
* Gets the version name folders located in main/install |
||||
* |
||||
* @return array |
||||
*/ |
||||
public function getAvailableVersions() |
||||
{ |
||||
$installPath = $this->getRootSys().'main/install'; |
||||
$dir = new \DirectoryIterator($installPath); |
||||
$dirList = array(); |
||||
foreach ($dir as $fileInfo) { |
||||
if ($fileInfo->isDir() && !$fileInfo->isDot()) { |
||||
$dirList[] = $fileInfo->getFilename(); |
||||
} |
||||
} |
||||
|
||||
return $dirList; |
||||
} |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getAdminSettingsParams() |
||||
{ |
||||
return array( |
||||
'firstname' => array( |
||||
'attributes' => array( |
||||
'label' => 'Firstname', |
||||
'data' => 'John' |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'lastname' => array( |
||||
'attributes' => array( |
||||
'label' => 'Lastname', |
||||
'data' => 'Doe' |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'username' => array( |
||||
'attributes' => array( |
||||
'label' => 'Username', |
||||
'data' => 'admin' |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'password' => array( |
||||
'attributes' => array( |
||||
'label' => 'Password', |
||||
'data' => 'admin' |
||||
), |
||||
'type' => 'password' |
||||
), |
||||
'email' => array( |
||||
'attributes' => array( |
||||
'label' => 'Email', |
||||
'data' => 'admin@example.org' |
||||
), |
||||
'type' => 'email' |
||||
), |
||||
'language' => array( |
||||
'attributes' => array( |
||||
'label' => 'Language', |
||||
'data' => 'english' |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'phone' => array( |
||||
'attributes' => array( |
||||
'label' => 'Phone', |
||||
'data' => '123456' |
||||
), |
||||
'type' => 'text' |
||||
) |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* @return array |
||||
*/ |
||||
public function getPortalSettingsParams() |
||||
{ |
||||
return array( |
||||
'sitename' => array( |
||||
'attributes' => array( |
||||
'label' => 'Site name', |
||||
'data' => 'Campus Chamilo', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'institution' => array( |
||||
'attributes' => array( |
||||
'data' => 'Chamilo', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'institution_url' => array( |
||||
'attributes' => array( |
||||
'label' => 'URL', |
||||
'data' => 'http://localhost/', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'encrypt_method' => array( |
||||
'attributes' => array( |
||||
'choices' => array( |
||||
'sha1' => 'sha1', |
||||
'md5' => 'md5', |
||||
'none' => 'none' |
||||
), |
||||
'data' => 'sha1' |
||||
), |
||||
|
||||
'type' => 'choice' |
||||
), |
||||
'permissions_for_new_directories' => array( |
||||
'attributes' => array( |
||||
'data' => '0777', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'permissions_for_new_files' => array( |
||||
'attributes' => array( |
||||
'data' => '0666', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
|
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Database parameters that are going to be parsed during the console/browser installation |
||||
* @return array |
||||
*/ |
||||
public function getDatabaseSettingsParams() |
||||
{ |
||||
return array( |
||||
'driver' => array( |
||||
'attributes' => array( |
||||
'choices' => |
||||
array( |
||||
'pdo_mysql' => 'pdo_mysql', |
||||
'pdo_sqlite' => 'pdo_sqlite', |
||||
'pdo_pgsql' => 'pdo_pgsql', |
||||
'pdo_oci' => 'pdo_oci', |
||||
'ibm_db2' => 'ibm_db2', |
||||
'pdo_ibm' => 'pdo_ibm', |
||||
'pdo_sqlsrv' => 'pdo_sqlsrv' |
||||
), |
||||
'data' => 'pdo_mysql' |
||||
), |
||||
'type' => 'choice' |
||||
), |
||||
'host' => array( |
||||
'attributes' => array( |
||||
'label' => 'Host', |
||||
'data' => 'localhost', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'dbname' => array( |
||||
'attributes' => array( |
||||
'label' => 'Database name', |
||||
'data' => 'chamilo', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'user' => array( |
||||
'attributes' => array( |
||||
'label' => 'User', |
||||
'data' => 'root', |
||||
), |
||||
'type' => 'text' |
||||
), |
||||
'password' => array( |
||||
'attributes' => array( |
||||
'label' => 'Password', |
||||
'data' => 'root', |
||||
), |
||||
'type' => 'password' |
||||
) |
||||
); |
||||
} |
||||
/** |
||||
* Gets the installation version path |
||||
* |
||||
* @param string $version |
||||
* |
||||
* @return string |
||||
*/ |
||||
public function getInstallationPath($version) |
||||
{ |
||||
return __DIR__.'/../../../../main/install/'.$version.'/'; |
||||
} |
||||
|
||||
/** |
||||
* Gets the content of a version from the available versions |
||||
* |
||||
* @param string $version |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function getAvailableVersionInfo($version) |
||||
{ |
||||
$versionList = $this->availableVersions(); |
||||
foreach ($versionList as $versionName => $versionInfo) { |
||||
if ($version == $versionName) { |
||||
return $versionInfo; |
||||
} |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* Gets the min version available to migrate with this command |
||||
* @return mixed |
||||
*/ |
||||
public function getMinVersionSupportedByInstall() |
||||
{ |
||||
return key($this->availableVersions()); |
||||
} |
||||
|
||||
/** |
||||
* Gets an array with the supported versions to migrate |
||||
* @return array |
||||
*/ |
||||
public function getVersionNumberList() |
||||
{ |
||||
$versionList = $this->availableVersions(); |
||||
$versionNumberList = array(); |
||||
foreach ($versionList as $version => $info) { |
||||
$versionNumberList[] = $version; |
||||
} |
||||
|
||||
return $versionNumberList; |
||||
} |
||||
|
||||
/** |
||||
* Gets an array with the settings for every supported version |
||||
* |
||||
* @return array |
||||
*/ |
||||
public function availableVersions() |
||||
{ |
||||
$versionList = array( |
||||
'1.8.7' => array( |
||||
'require_update' => false, |
||||
), |
||||
'1.8.8' => array( |
||||
'require_update' => true, |
||||
'pre' => 'migrate-db-1.8.7-1.8.8-pre.sql', |
||||
'post' => null, |
||||
'update_db' => 'update-db-1.8.7-1.8.8.inc.php', |
||||
//'update_files' => 'update-files-1.8.7-1.8.8.inc.php', |
||||
'hook_to_doctrine_version' => '8' //see ChamiloLMS\Migrations\Version8.php file |
||||
), |
||||
'1.8.8.2' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.8.8' |
||||
), |
||||
'1.8.8.4' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.8.8' |
||||
), |
||||
'1.8.8.6' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.8.8' |
||||
), |
||||
'1.9.0' => array( |
||||
'require_update' => true, |
||||
'pre' => 'migrate-db-1.8.8-1.9.0-pre.sql', |
||||
'post' => null, |
||||
'update_db' => 'update-db-1.8.8-1.9.0.inc.php', |
||||
'update_files' => 'update-files-1.8.8-1.9.0.inc.php', |
||||
'hook_to_doctrine_version' => '9' |
||||
), |
||||
'1.9.2' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.9.0' |
||||
), |
||||
'1.9.4' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.9.0' |
||||
), |
||||
'1.9.6' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.9.0' |
||||
), |
||||
'1.9.8' => array( |
||||
'require_update' => false, |
||||
'parent' => '1.9.0' |
||||
), |
||||
'1.10.0' => array( |
||||
'require_update' => true, |
||||
'pre' => 'migrate-db-1.9.0-1.10.0-pre.sql', |
||||
'post' => 'migrate-db-1.9.0-1.10.0-post.sql', |
||||
'update_db' => 'update-db-1.9.0-1.10.0.inc.php', |
||||
'update_files' => null, |
||||
'hook_to_doctrine_version' => '10' |
||||
) |
||||
); |
||||
|
||||
return $versionList; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Gets the Doctrine configuration file path |
||||
* @return string |
||||
*/ |
||||
public function getMigrationConfigurationFile() |
||||
{ |
||||
return api_get_path(SYS_PATH).'src/ChamiloLMS/Migrations/migrations.yml'; |
||||
} |
||||
|
||||
/** |
||||
* Writes the configuration file a yml file |
||||
* @param string $version |
||||
* @return bool |
||||
* |
||||
*/ |
||||
public function writeConfiguration($version) |
||||
{ |
||||
$portalSettings = $this->getPortalSettings(); |
||||
$databaseSettings = $this->getDatabaseSettings(); |
||||
|
||||
$configurationPath = $this->getHelper('configuration')->getNewConfigurationPath(); |
||||
|
||||
// Creates a YML File |
||||
|
||||
$configuration = array(); |
||||
$configuration['system_version'] = $version; |
||||
|
||||
$configuration['db_host'] = $databaseSettings['host']; |
||||
$configuration['db_user'] = $databaseSettings['user']; |
||||
$configuration['db_password'] = $databaseSettings['password']; |
||||
$configuration['main_database'] = $databaseSettings['dbname']; |
||||
$configuration['driver'] = $databaseSettings['driver']; |
||||
|
||||
$configuration['root_web'] = $portalSettings['institution_url']; |
||||
$configuration['root_sys'] = $this->getRootSys(); |
||||
|
||||
$configuration['security_key'] = md5(uniqid(rand().time())); |
||||
|
||||
// Hash function method |
||||
$configuration['password_encryption'] = $portalSettings['encrypt_method']; |
||||
// You may have to restart your web server if you change this |
||||
$configuration['session_stored_in_db'] = false; |
||||
// Session lifetime |
||||
$configuration['session_lifetime'] = 3600; |
||||
// Activation for multi-url access |
||||
$_configuration['multiple_access_urls'] = false; |
||||
//Deny the elimination of users |
||||
$configuration['deny_delete_users'] = false; |
||||
//Prevent all admins from using the "login_as" feature |
||||
$configuration['login_as_forbidden_globally'] = false; |
||||
// Version settings |
||||
$configuration['system_version'] = '1.10.0'; |
||||
|
||||
/* |
||||
$dumper = new Dumper(); |
||||
$yaml = $dumper->dump($configuration, 2); |
||||
|
||||
$newConfigurationFile = $configurationPath.'configuration.yml'; |
||||
file_put_contents($newConfigurationFile, $yaml); |
||||
|
||||
return file_exists($newConfigurationFile);*/ |
||||
|
||||
// Create a configuration.php |
||||
$configurationPath.'configuration.dist.php'; |
||||
|
||||
$contents = file_get_contents($configurationPath.'configuration.dist.php'); |
||||
|
||||
$configuration['{DATE_GENERATED}'] = date('r'); |
||||
$config['{DATABASE_HOST}'] = $configuration['db_host']; |
||||
$config['{DATABASE_USER}'] = $configuration['db_user']; |
||||
$config['{DATABASE_PASSWORD}'] = $configuration['db_password']; |
||||
$config['{DATABASE_MAIN}'] = $configuration['main_database']; |
||||
$config['{DATABASE_DRIVER}'] = $configuration['driver']; |
||||
|
||||
$config['{ROOT_WEB}'] = $portalSettings['institution_url']; |
||||
$config['{ROOT_SYS}'] = $this->getRootSys(); |
||||
|
||||
//$config['{URL_APPEND_PATH}'] = $urlAppendPath; |
||||
$config['{SECURITY_KEY}'] = $configuration['security_key']; |
||||
$config['{ENCRYPT_PASSWORD}'] = $configuration['password_encryption']; |
||||
|
||||
$config['SESSION_LIFETIME'] = 3600; |
||||
$config['{NEW_VERSION}'] = $this->getLatestVersion(); |
||||
$config['NEW_VERSION_STABLE'] = 'true'; |
||||
|
||||
foreach ($config as $key => $value) { |
||||
$contents = str_replace($key, $value, $contents); |
||||
} |
||||
$newConfigurationFile = $configurationPath.'configuration.php'; |
||||
|
||||
return file_put_contents($newConfigurationFile, $contents); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Updates the configuration.yml file |
||||
* @param string $version |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function updateConfiguration($version) |
||||
{ |
||||
global $userPasswordCrypted, $storeSessionInDb; |
||||
|
||||
$_configuration = $this->getHelper('configuration')->getConfiguration(); |
||||
|
||||
$configurationPath = $this->getHelper('configuration')->getConfigurationPath(); |
||||
|
||||
$dumper = new Dumper(); |
||||
|
||||
$_configuration['system_version'] = $version; |
||||
|
||||
if (!isset($_configuration['password_encryption'])) { |
||||
$_configuration['password_encryption'] = $userPasswordCrypted; |
||||
} |
||||
|
||||
if (!isset($_configuration['session_stored_in_db'])) { |
||||
$_configuration['session_stored_in_db'] = $storeSessionInDb; |
||||
} |
||||
|
||||
$yaml = $dumper->dump($_configuration, 2); //inline |
||||
$newConfigurationFile = $configurationPath.'../../../app/config/configuration.yml'; |
||||
file_put_contents($newConfigurationFile, $yaml); |
||||
|
||||
return file_exists($newConfigurationFile); |
||||
} |
||||
|
||||
/** |
||||
* Gets the SQL files relation with versions |
||||
* @return array |
||||
*/ |
||||
public function getDatabaseMap() |
||||
{ |
||||
|
||||
$defaultCourseData = array( |
||||
array( |
||||
'name' => 'course1', |
||||
'sql' => array( |
||||
'db_course1.sql', |
||||
), |
||||
), |
||||
array( |
||||
'name' => 'course2', |
||||
'sql' => array( |
||||
'db_course2.sql' |
||||
) |
||||
), |
||||
); |
||||
|
||||
return array( |
||||
'1.8.7' => array( |
||||
'section' => array( |
||||
'main' => array( |
||||
array( |
||||
'name' => 'chamilo', |
||||
'sql' => array( |
||||
'db_main.sql', |
||||
'db_stats.sql', |
||||
'db_user.sql' |
||||
), |
||||
), |
||||
), |
||||
'course' => $defaultCourseData |
||||
), |
||||
), |
||||
'1.8.8' => array( |
||||
'section' => array( |
||||
'main' => array( |
||||
array( |
||||
'name' => 'chamilo', |
||||
'sql' => array( |
||||
'db_main.sql', |
||||
'db_stats.sql', |
||||
'db_user.sql' |
||||
), |
||||
), |
||||
), |
||||
'course' => $defaultCourseData |
||||
), |
||||
), |
||||
'1.9.0' => array( |
||||
'section' => array( |
||||
'main' => array( |
||||
array( |
||||
'name' => 'chamilo', |
||||
'sql' => array( |
||||
'db_course.sql', |
||||
'db_main.sql', |
||||
'db_stats.sql', |
||||
'db_user.sql' |
||||
), |
||||
), |
||||
), |
||||
) |
||||
), |
||||
'1.10.0' => array( |
||||
'section' => array( |
||||
'main' => array( |
||||
array( |
||||
'name' => 'chamilo', |
||||
'sql' => array( |
||||
'db_course.sql', |
||||
'db_main.sql' |
||||
), |
||||
), |
||||
), |
||||
) |
||||
) |
||||
); |
||||
} |
||||
|
||||
} |
||||
@ -1,509 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Doctrine\Common\Annotations\AnnotationReader; |
||||
use Doctrine\Common\Annotations\AnnotationRegistry; |
||||
use Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand; |
||||
use Symfony\Component\Console\Input\ArrayInput; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console; |
||||
use Symfony\Component\Yaml\Dumper; |
||||
|
||||
/** |
||||
* Class InstallCommand |
||||
*/ |
||||
class InstallCommand extends CommonCommand |
||||
{ |
||||
public $commandLine = true; |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function getLatestVersion() |
||||
{ |
||||
return '1.10.0'; |
||||
} |
||||
|
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('chamilo:install') |
||||
->setDescription('Execute a Chamilo installation to a specified version') |
||||
->addArgument('version', InputArgument::REQUIRED, 'The version to migrate to.', null) |
||||
->addArgument('path', InputArgument::OPTIONAL, 'The path to the chamilo folder'); |
||||
} |
||||
|
||||
/** |
||||
* Executes a command via CLI |
||||
* |
||||
* @param Console\Input\InputInterface $input |
||||
* @param Console\Output\OutputInterface $output |
||||
* |
||||
* @return int|null|void |
||||
*/ |
||||
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
||||
{ |
||||
if (PHP_SAPI != 'cli') { |
||||
$this->commandLine = false; |
||||
} |
||||
|
||||
// Arguments |
||||
$path = $input->getArgument('path'); |
||||
$version = $input->getArgument('version'); |
||||
|
||||
// Setting configuration helper |
||||
$this->getApplication()->getHelperSet()->set(new \Chash\Helpers\ConfigurationHelper(), 'configuration'); |
||||
|
||||
//$configurationPath = $this->getHelper('configuration')->getConfigurationPath($path); |
||||
|
||||
// Getting the new config folder |
||||
$configurationPath = $this->getHelper('configuration')->getNewConfigurationPath($path); |
||||
|
||||
$this->setRootSys(realpath($configurationPath.'/../').'/'); |
||||
|
||||
$dialog = $this->getHelperSet()->get('dialog'); |
||||
|
||||
$defaultVersion = $this->getLatestVersion(); |
||||
|
||||
if (empty($version)) { |
||||
$version = $defaultVersion; |
||||
} |
||||
|
||||
if ($this->commandLine) { |
||||
$output->writeln("<comment>Welcome to the Chamilo $version installation process.</comment>"); |
||||
} else { |
||||
$output->writeln("<comment>Chamilo installation process. </comment>"); |
||||
} |
||||
|
||||
if (!is_writable($configurationPath)) { |
||||
$output->writeln("<comment>Folder ".$configurationPath." must be writable</comment>"); |
||||
return 0; |
||||
} |
||||
|
||||
$sqlFolder = $this->getInstallationPath($version); |
||||
|
||||
if (!is_dir($sqlFolder)) { |
||||
$output->writeln("<comment>Sorry you can't install that version of Chamilo :( Supported versions:</comment> <info>".implode(', ', $this->getAvailableVersions())); |
||||
return 0; |
||||
} |
||||
|
||||
if (file_exists($configurationPath.'configuration.php') || file_exists($configurationPath.'configuration.yml')) { |
||||
if ($this->commandLine) { |
||||
$output->writeln("<comment>There's a Chamilo portal here ".$configurationPath." you must run</comment> <info>chamilo:setup </info><comment>if you want a fresh install.</comment>"); |
||||
} else { |
||||
$output->writeln("<comment>There's a Chamilo portal here ".$configurationPath." </comment>"); |
||||
} |
||||
return 0; |
||||
/* |
||||
if (!$dialog->askConfirmation( |
||||
$output, |
||||
'<question>There is a Chamilo installation located here:</question> '.$configurationPath.' <question>Are you sure you want to continue?</question>(y/N)', |
||||
false |
||||
) |
||||
) { |
||||
return 0; |
||||
} |
||||
|
||||
if (!$dialog->askConfirmation( |
||||
$output, |
||||
'<comment>This will be a fresh installation. Old databases and config files will be deleted. </comment></info> <question>Are you sure?</question>(y/N)', |
||||
false |
||||
) |
||||
) { |
||||
return 0; |
||||
} |
||||
$this->cleanInstallation($output);*/ |
||||
} |
||||
|
||||
$avoidVariables = array( |
||||
//'main_database', //default is chamilo |
||||
'db_glue', |
||||
'table_prefix', |
||||
'course_folder', |
||||
'db_admin_path', |
||||
'cdn_enable', |
||||
'verbose_backup', |
||||
'session_stored_in_db', |
||||
'session_lifetime', |
||||
'deny_delete_users', |
||||
'system_version', |
||||
); |
||||
|
||||
if ($this->commandLine) { |
||||
|
||||
// Ask for portal settings |
||||
|
||||
$params = $this->getPortalSettingsParams(); |
||||
$total = count($params); |
||||
$portalSettings = array(); |
||||
|
||||
$output->writeln("<comment>Portal settings (".$total.") </comment>"); |
||||
|
||||
$counter = 1; |
||||
foreach ($params as $key => $value) { |
||||
$data = $dialog->ask( |
||||
$output, |
||||
"($counter/$total) Please enter the value of the $key (".$value['attributes']['data']."): ", |
||||
$value['attributes']['data'] |
||||
); |
||||
$counter++; |
||||
$portalSettings[$key] = $data; |
||||
} |
||||
$this->setPortalSettings($portalSettings); |
||||
|
||||
// Ask for admin settings |
||||
$output->writeln("<comment>Admin settings: </comment>"); |
||||
$params = $this->getAdminSettingsParams(); |
||||
$total = count($params); |
||||
$adminSettings = array(); |
||||
|
||||
foreach ($params as $key => $value) { |
||||
$data = $dialog->ask( |
||||
$output, |
||||
"($counter/$total) Please enter the value of the $key (".$value['attributes']['data']."): ", |
||||
$value['attributes']['data'] |
||||
); |
||||
$counter++; |
||||
$adminSettings[$key] = $data; |
||||
} |
||||
$this->setAdminSettings($adminSettings); |
||||
|
||||
// Ask for db settings |
||||
$output->writeln("<comment>Database settings: </comment>"); |
||||
$params = $this->getDatabaseSettingsParams(); |
||||
$total = count($params); |
||||
$databaseSettings = array(); |
||||
|
||||
foreach ($params as $key => $value) { |
||||
$data = $dialog->ask( |
||||
$output, |
||||
"($counter/$total) Please enter the value of the $key (".$value['attributes']['data']."): ", |
||||
$value['attributes']['data'] |
||||
); |
||||
$counter++; |
||||
$databaseSettings[$key] = $data; |
||||
} |
||||
$this->setDatabaseSettings($databaseSettings); |
||||
} |
||||
|
||||
$databaseSettings = $this->getDatabaseSettings(); |
||||
$connectionToHost = $this->getUserAccessConnectionToHost(); |
||||
$connectionToHostConnect = $connectionToHost->connect(); |
||||
|
||||
if ($connectionToHostConnect) { |
||||
$output->writeln("<comment>Connection enabled for user: </comment><info>".$databaseSettings['user']); |
||||
} else { |
||||
$output->writeln("<error>No access to the database for user:</error><info>".$databaseSettings['user']."</info>"); |
||||
return 0; |
||||
} |
||||
|
||||
if ($this->commandLine) { |
||||
$databases = $connectionToHost->listDatabases(); |
||||
if (in_array($databaseSettings['dbname'], $databases)) { |
||||
$dialog = $this->getHelperSet()->get('dialog'); |
||||
|
||||
if (!$dialog->askConfirmation( |
||||
$output, |
||||
'<comment>The database '.$databaseSettings['dbname'].' exists and is going to be dropped! </comment></info> <question>Are you sure?</question>(y/N)', |
||||
false |
||||
) |
||||
) { |
||||
return 0; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// When installing always drop the current database |
||||
try { |
||||
$sm = $connectionToHost->getSchemaManager(); |
||||
$sm->dropAndCreateDatabase($databaseSettings['dbname']); |
||||
$connectionToDatabase = $this->getUserAccessConnectionToDatabase(); |
||||
$connect = $connectionToDatabase->connect(); |
||||
} catch (\Exception $e) { |
||||
$output->writeln(sprintf('<error>Could not create database for connection named <comment>%s</comment></error>', $databaseSettings['dbname'])); |
||||
$output->writeln(sprintf('<error>%s</error>', $e->getMessage())); |
||||
return 0; |
||||
} |
||||
|
||||
if ($connect) { |
||||
|
||||
$output->writeln("<comment>Connection to database '".$databaseSettings['dbname']."' established.</comment>"); |
||||
|
||||
$configurationWasSaved = $this->writeConfiguration($version); |
||||
|
||||
if ($configurationWasSaved) { |
||||
|
||||
// $app['chamilo.log'] = $app['log.path'].'/chamilo_install.log'; |
||||
|
||||
// Installing database |
||||
$result = $this->install($version, $output); |
||||
|
||||
if ($result) { |
||||
|
||||
require_once $this->getRootSys().'main/inc/lib/database.constants.inc.php'; |
||||
require_once $this->getRootSys().'main/inc/lib/api.lib.php'; |
||||
|
||||
// In order to use the Database class |
||||
$database = new \Database($this->getHelper('db')->getConnection(), null); |
||||
|
||||
$this->createAdminUser($output); |
||||
|
||||
//@todo ask this during installation |
||||
|
||||
$adminInfo = $this->getAdminSettings(); |
||||
$portalSettings = $this->getPortalSettings(); |
||||
|
||||
api_set_setting('emailAdministrator', $adminInfo['email']); |
||||
api_set_setting('administratorSurname', $adminInfo['lastname']); |
||||
api_set_setting('administratorName', $adminInfo['firstname']); |
||||
api_set_setting('platformLanguage', $adminInfo['language']); |
||||
|
||||
api_set_setting('allow_registration', '1'); |
||||
api_set_setting('allow_registration_as_teacher', '1'); |
||||
|
||||
api_set_setting('permissions_for_new_directories', $portalSettings['permissions_for_new_directories']); |
||||
api_set_setting('permissions_for_new_files', $portalSettings['permissions_for_new_files']); |
||||
|
||||
api_set_setting('Institution', $portalSettings['institution']); |
||||
api_set_setting('InstitutionUrl', $portalSettings['institution_url']); |
||||
api_set_setting('siteName', $portalSettings['sitename']); |
||||
|
||||
// Injecting the chamilo application (because the configuration.php is now set) |
||||
|
||||
$app = require_once $this->getRootSys().'main/inc/global.inc.php'; |
||||
$filesystem = $app['chamilo.filesystem']; |
||||
|
||||
// Creating temp folders |
||||
$filesystem->createFolders($app['temp.paths']->folders); |
||||
$output->writeln("<comment>Temp folders were created.</comment>"); |
||||
|
||||
//$app->run(); |
||||
|
||||
//$versionInfo = $this->getAvailableVersionInfo($version); |
||||
|
||||
// Optional run Doctrine migrations from src/database/migrations |
||||
/* $command = $this->getApplication()->find('migrations:migrate'); |
||||
$definition = $command->getDefinition(); |
||||
|
||||
$arguments = array( |
||||
'command' => 'migrations:migrate', |
||||
'version' => $versionInfo['hook_to_doctrine_version'], |
||||
'--configuration' => $this->getMigrationConfigurationFile() |
||||
); |
||||
$output->writeln("<comment>Executing migrations:migrate ".$versionInfo['hook_to_doctrine_version']." --configuration=".$this->getMigrationConfigurationFile()."<comment>"); |
||||
|
||||
$input = new ArrayInput($arguments, $definition); |
||||
$return = $command->run($input, $output); |
||||
*/ |
||||
//$output->writeln("<comment>Migration ended succesfully</comment>"); |
||||
|
||||
//$output->writeln("<comment>Chamilo was successfully installed. Go to your browser and enter:</comment> <info>".$newConfigurationArray['root_web']); |
||||
return 1; |
||||
} else { |
||||
$output->writeln("<comment>There was an error during installation.</comment>"); |
||||
return 0; |
||||
} |
||||
} else { |
||||
$output->writeln("<comment>Configuration file was not saved</comment>"); |
||||
return 0; |
||||
} |
||||
} else { |
||||
$output->writeln("<comment>Can't create database '".$databaseSettings['dbname']."' </comment>"); |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Creates an admin user |
||||
* |
||||
* @param $newConfigurationArray |
||||
* @param $output |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function createAdminUser($output) |
||||
{ |
||||
//By default admin is = 1 so we update it |
||||
|
||||
$userInfo = $this->getAdminSettings(); |
||||
$userInfo['user_id'] = 1; |
||||
$userInfo['auth_source'] = 'platform'; |
||||
$userInfo['password'] = $this->encryptPassword($this->portalSettings['encrypt_method'], $userInfo['password']); |
||||
|
||||
$result = \UserManager::update($userInfo); |
||||
if ($result) { |
||||
\UserManager::add_user_as_admin($userInfo['user_id']); |
||||
$output->writeln("<comment>User admin created with id: 1</comment>"); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
private function setDoctrineSettings() |
||||
{ |
||||
$config = new \Doctrine\ORM\Configuration(); |
||||
$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache); |
||||
$reader = new AnnotationReader(); |
||||
|
||||
$driverImpl = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader, array()); |
||||
$config->setMetadataDriverImpl($driverImpl); |
||||
$config->setProxyDir(__DIR__ . '/Proxies'); |
||||
$config->setProxyNamespace('Proxies'); |
||||
|
||||
$em = \Doctrine\ORM\EntityManager::create($this->getDatabaseSettings(), $config); |
||||
|
||||
// Fixes some errors |
||||
$platform = $em->getConnection()->getDatabasePlatform(); |
||||
$platform->registerDoctrineTypeMapping('enum', 'string'); |
||||
$platform->registerDoctrineTypeMapping('set', 'string'); |
||||
|
||||
$helpers = array( |
||||
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), |
||||
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em), |
||||
'configuration' => new \Chash\Helpers\ConfigurationHelper() |
||||
); |
||||
|
||||
foreach ($helpers as $name => $helper) { |
||||
$this->getApplication()->getHelperSet()->set($helper, $name); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Installs Chamilo |
||||
* |
||||
* @param string $version |
||||
* @param array $_configuration |
||||
* @param $output |
||||
* @return bool |
||||
*/ |
||||
public function install($version, $output) |
||||
{ |
||||
$this->setDoctrineSettings(); |
||||
$sqlFolder = $this->getInstallationPath($version); |
||||
|
||||
$databaseMap = $this->getDatabaseMap(); |
||||
|
||||
if (isset($databaseMap[$version])) { |
||||
$dbInfo = $databaseMap[$version]; |
||||
$sections = $dbInfo['section']; |
||||
|
||||
foreach ($sections as $sectionData) { |
||||
foreach ($sectionData as $dbInfo) { |
||||
$databaseName = $dbInfo['name']; |
||||
$dbList = $dbInfo['sql']; |
||||
|
||||
$output->writeln("<comment>Creating database</comment> <info>$databaseName ... </info>"); |
||||
|
||||
// Fixing db list |
||||
foreach ($dbList as &$db) { |
||||
$db = $sqlFolder.$db; |
||||
} |
||||
|
||||
$command = $this->getApplication()->find('dbal:import'); |
||||
|
||||
//Importing sql files |
||||
$arguments = array( |
||||
'command' => 'dbal:import', |
||||
'file' => $dbList |
||||
); |
||||
$input = new ArrayInput($arguments); |
||||
$command->run($input, $output); |
||||
|
||||
//Getting extra information about the installation |
||||
$output->writeln("<comment>Database </comment><info>$databaseName </info><comment>process ended!</comment>"); |
||||
} |
||||
} |
||||
|
||||
if (isset($sections) && isset($sections['course'])) { |
||||
//@todo fix this |
||||
foreach ($sections['course'] as $courseInfo) { |
||||
$databaseName = $courseInfo['name']; |
||||
$output->writeln("Inserting course database in chamilo: <info>$databaseName</info>"); |
||||
$this->createCourse($databaseName); |
||||
} |
||||
} |
||||
|
||||
if ($this->commandLine) { |
||||
$output->writeln("<comment>Check your installation status with </comment><info>chamilo:status</info>"); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* In step 3. Tests establishing connection to the database server. |
||||
* If it's a single database environment the function checks if the database exist. |
||||
* If the database doesn't exist we check the creation permissions. |
||||
* |
||||
* @return int 1 when there is no problem; |
||||
* 0 when a new database is impossible to be created, then the single/multiple database configuration is impossible too |
||||
* -1 when there is no connection established. |
||||
*/ |
||||
public function testDatabaseConnection() |
||||
{ |
||||
$conn = $this->testUserAccessConnection(); |
||||
$connect = $conn->connect(); |
||||
return $connect; |
||||
} |
||||
|
||||
public function getUserAccessConnectionToHost() |
||||
{ |
||||
$config = new \Doctrine\DBAL\Configuration(); |
||||
$databaseConnection = $this->getDatabaseSettings(); |
||||
$databaseConnection['dbname'] = null; |
||||
$conn = \Doctrine\DBAL\DriverManager::getConnection($databaseConnection, $config); |
||||
return $conn; |
||||
} |
||||
|
||||
public function getUserAccessConnectionToDatabase() |
||||
{ |
||||
$config = new \Doctrine\DBAL\Configuration(); |
||||
$databaseConnection = $this->getDatabaseSettings(); |
||||
$conn = \Doctrine\DBAL\DriverManager::getConnection($databaseConnection, $config); |
||||
return $conn; |
||||
} |
||||
|
||||
/** |
||||
* Creates a course (only an insert in the DB) |
||||
* @param string $databaseName |
||||
*/ |
||||
public function createCourse($databaseName) |
||||
{ |
||||
$params = array( |
||||
'code' => $databaseName, |
||||
'db_name' => $databaseName, |
||||
'course_language' => 'english', |
||||
'title' => $databaseName, |
||||
'visual_code' => $databaseName |
||||
); |
||||
@\Database::insert(TABLE_MAIN_COURSE, $params); |
||||
} |
||||
|
||||
/** |
||||
* This function gets the hash in md5 or sha1 (it depends in the platform config) of a given password |
||||
* @param string password |
||||
* @return string password with the applied hash |
||||
*/ |
||||
function encryptPassword($encryptionMode, $password, $salt = '') { |
||||
|
||||
switch ($encryptionMode) { |
||||
case 'sha1': |
||||
return empty($salt) ? sha1($password) : sha1($password.$salt); |
||||
case 'none': |
||||
return $password; |
||||
case 'md5': |
||||
default: |
||||
return empty($salt) ? md5($password) : md5($password.$salt); |
||||
} |
||||
} |
||||
|
||||
} |
||||
@ -1,26 +0,0 @@ |
||||
<?php |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Doctrine\Common\Annotations\AnnotationReader; |
||||
use Doctrine\Common\Annotations\AnnotationRegistry; |
||||
use Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand; |
||||
use Symfony\Component\Console\Input\ArrayInput; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console; |
||||
use Symfony\Component\Yaml\Dumper; |
||||
|
||||
/** |
||||
* Class InstallExtendCommand |
||||
*/ |
||||
class InstallExtendCommand extends InstallCommand |
||||
{ |
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('chamilo:install_extend') |
||||
->setDescription('Execute a Chamilo installation to a specified version') |
||||
->addArgument('version', InputArgument::REQUIRED, 'The version to migrate to.', null); |
||||
} |
||||
} |
||||
@ -1,67 +0,0 @@ |
||||
<?php |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand; |
||||
use Symfony\Component\Console\Input\ArrayInput; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console; |
||||
|
||||
/** |
||||
* Class MigrationCommand |
||||
*/ |
||||
class SetupCommand extends AbstractCommand |
||||
{ |
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('chamilo:setup') |
||||
->setDescription('Prepares a portal for a new installation'); |
||||
//->addOption('configuration', null, InputOption::VALUE_OPTIONAL, 'The path to a migrations configuration file.'); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Executes a command via CLI |
||||
* |
||||
* @param Console\Input\InputInterface $input |
||||
* @param Console\Output\OutputInterface $output |
||||
* |
||||
* @return int|null|void |
||||
*/ |
||||
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
||||
{ |
||||
$output->writeln("<comment>This command will clean your installation: drop db, removes config files, cache files</comment>"); |
||||
|
||||
//Drop database chash command |
||||
$command = $this->getApplication()->find('db:drop_databases'); |
||||
|
||||
$arguments = array( |
||||
'command' => 'db:drop_databases' |
||||
); |
||||
$input = new ArrayInput($arguments); |
||||
$command->run($input, $output); |
||||
|
||||
//Clean temp chash command |
||||
$command = $this->getApplication()->find('files:clean_archives'); |
||||
|
||||
$arguments = array( |
||||
'command' => 'files:clean_archives' |
||||
); |
||||
$input = new ArrayInput($arguments); |
||||
$command->run($input, $output); |
||||
|
||||
//Clean files |
||||
$command = $this->getApplication()->find('files:clean_config_files'); |
||||
|
||||
$arguments = array( |
||||
'command' => 'files:clean_archives' |
||||
); |
||||
$input = new ArrayInput($arguments); |
||||
$command->run($input, $output); |
||||
|
||||
$output->writeln("<comment>Cleaned</comment>"); |
||||
} |
||||
} |
||||
|
||||
@ -1,57 +0,0 @@ |
||||
<?php |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console; |
||||
|
||||
/** |
||||
* Class StatusCommand |
||||
*/ |
||||
class StatusCommand extends AbstractCommand |
||||
{ |
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('chamilo:status') |
||||
->setDescription('Show the information of the current Chamilo installation') |
||||
->addOption('configuration', null, InputOption::VALUE_OPTIONAL, 'The path to a migrations configuration file.'); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Executes a command via CLI |
||||
* |
||||
* @param Console\Input\InputInterface $input |
||||
* @param Console\Output\OutputInterface $output |
||||
* |
||||
* @return int|null|void |
||||
*/ |
||||
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
||||
{ |
||||
global $_configuration; |
||||
|
||||
if (empty($_configuration)) { |
||||
$output->writeln("<comment>Chamilo is not installed here!</comment>"); |
||||
exit; |
||||
} |
||||
|
||||
$configurationPath = api_get_path(SYS_PATH).'main/inc/conf/'; |
||||
|
||||
$query = "SELECT selected_value FROM settings_current WHERE variable = 'chamilo_database_version'"; |
||||
$conn = $this->getHelper('main_database')->getConnection(); |
||||
$data = $conn->executeQuery($query); |
||||
$data = $data->fetch(); |
||||
|
||||
$chamiloVersion = $data['selected_value']; |
||||
$output->writeln('<comment>Chamilo status</comment>'); |
||||
$output->writeln("<comment>Chamilo configuration path:</comment> <info>".$configurationPath."</info>"); |
||||
|
||||
$output->writeln('<comment>Chamilo $_configuration[system_version]:</comment> <info>'.$_configuration['system_version'].'</info>'); |
||||
$output->writeln("<comment>Chamilo setting: 'chamilo_database_version':</comment> <info>".$chamiloVersion."</info>"); |
||||
} |
||||
|
||||
} |
||||
|
||||
@ -1,613 +0,0 @@ |
||||
<?php |
||||
|
||||
namespace ChamiloLMS\Command\Database; |
||||
|
||||
use Symfony\Component\Console\Input\ArrayInput; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console; |
||||
use Symfony\Component\Yaml\Dumper; |
||||
use Symfony\Component\Yaml\Parser; |
||||
|
||||
//Constant needed in order to call migrate-db-* and update-files-* |
||||
define('SYSTEM_INSTALLATION', 1); |
||||
|
||||
/** |
||||
* Class UpgradeCommand |
||||
*/ |
||||
class UpgradeCommand extends CommonCommand |
||||
{ |
||||
public $queryList; |
||||
public $databaseList; |
||||
|
||||
protected function configure() |
||||
{ |
||||
$this |
||||
->setName('chamilo:upgrade') |
||||
->setDescription('Execute a chamilo migration to a specified version or the latest available version.') |
||||
->addArgument('version', InputArgument::REQUIRED, 'The version to migrate to.', null) |
||||
->addOption('dry-run', null, InputOption::VALUE_NONE, 'Execute the migration as a dry run.') |
||||
->addOption('configuration', null, InputOption::VALUE_OPTIONAL, 'The path to a migrations configuration file.') |
||||
->addOption('path', null, InputOption::VALUE_OPTIONAL, 'The path to the chamilo folder') |
||||
->addOption('force', null, InputOption::VALUE_NONE, 'Force the update. Only for tests'); |
||||
} |
||||
|
||||
/** |
||||
* Executes a command via CLI |
||||
* |
||||
* @param Console\Input\InputInterface $input |
||||
* @param Console\Output\OutputInterface $output |
||||
* |
||||
* @return int|null|void |
||||
*/ |
||||
protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
||||
{ |
||||
$path = $input->getOption('path'); |
||||
$version = $input->getArgument('version'); |
||||
$dryRun = $input->getOption('dry-run'); |
||||
$force = $input->getOption('force'); |
||||
|
||||
$_configuration = $this->getHelper('configuration')->getConfiguration(); |
||||
|
||||
if (empty($_configuration)) { |
||||
$output->writeln("<comment>Chamilo is not installed here!</comment>"); |
||||
exit; |
||||
} |
||||
|
||||
$configurationPath = $this->getHelper('configuration')->getConfigurationPath($path); |
||||
|
||||
//Checking configuration file |
||||
if (!is_writable($configurationPath)) { |
||||
$output->writeln("<comment>Folder ".$configurationPath." must have writable permissions</comment>"); |
||||
exit; |
||||
} |
||||
|
||||
//Setting configuration variable in order to get the doctrine version: |
||||
$input->setOption('configuration', $this->getMigrationConfigurationFile()); |
||||
$configuration = $this->getMigrationConfiguration($input, $output); |
||||
|
||||
//Doctrine migrations version |
||||
$doctrineVersion = $configuration->getCurrentVersion(); |
||||
|
||||
//Getting supported version number list |
||||
$versionNameList = $this->getVersionNumberList(); |
||||
|
||||
$minVersion = $this->getMinVersionSupportedByInstall(); |
||||
$versionList = $this->availableVersions(); |
||||
|
||||
//Checking version |
||||
if (!in_array($version, $versionNameList)) { |
||||
$output->writeln("<comment>Version '$version' is not available</comment>"); |
||||
$output->writeln("<comment>Available versions: </comment><info>".implode(', ', $versionNameList)."</info>"); |
||||
exit; |
||||
} |
||||
|
||||
$currentVersion = null; |
||||
|
||||
//Checking root_sys and correct Chamilo version to install |
||||
if (empty($_configuration)) { |
||||
$output->writeln("<comment>Can't migrate Chamilo. This is not a Chamilo folder installation.</comment>"); |
||||
exit; |
||||
} |
||||
|
||||
//Checking system_version |
||||
|
||||
if (!isset($_configuration['system_version']) || empty($_configuration['system_version'])) { |
||||
$output->writeln("<comment>You have something wrong in your Chamilo conf file. Check it with chamilo:status.</comment>"); |
||||
exit; |
||||
} |
||||
|
||||
if (version_compare($_configuration['system_version'], $minVersion, '<')) { |
||||
$output->writeln("<comment>Your Chamilo version is not supported! The minimun version is: </comment><info>$minVersion</info> <comment>You want to update from <info>".$_configuration['system_version']."</info> <comment>to</comment> <info>$minVersion</info>"); |
||||
exit; |
||||
} |
||||
|
||||
if (version_compare($version, $_configuration['system_version'], '>')) { |
||||
$currentVersion = $_configuration['system_version']; |
||||
} else { |
||||
$output->writeln("<comment>Please provide a version greater than </comment><info>".$_configuration['system_version']."</info> <comment>your selected version: </comment><info>$version</info>"); |
||||
$output->writeln("<comment>You can also check your installation health with </comment><info>chamilo:status"); |
||||
exit; |
||||
} |
||||
|
||||
$versionInfo = $this->getAvailableVersionInfo($version); |
||||
|
||||
if (isset($versionInfo['hook_to_doctrine_version']) && isset($doctrineVersion)) { |
||||
if ($doctrineVersion == $versionInfo['hook_to_doctrine_version']) { |
||||
$output->writeln("<comment>You already have the latest version. Nothing to update! Doctrine version $doctrineVersion</comment>"); |
||||
exit; |
||||
} |
||||
} |
||||
|
||||
if (isset($versionInfo['parent']) && !empty($versionInfo['parent'])) { |
||||
$versionInfoParent = $this->getAvailableVersionInfo($versionInfo['parent']); |
||||
if ($doctrineVersion == $versionInfoParent['hook_to_doctrine_version']) { |
||||
$output->writeln("<comment>You already have the latest version. Nothing to update! Doctrine version $doctrineVersion</comment>"); |
||||
exit; |
||||
} |
||||
} |
||||
|
||||
$output->writeln("<comment>Welcome to the Chamilo upgrade!</comment>"); |
||||
|
||||
//@todo Too much questions? |
||||
|
||||
$dialog = $this->getHelperSet()->get('dialog'); |
||||
if (!$dialog->askConfirmation( |
||||
$output, |
||||
'<question>Are you sure you want to update Chamilo located here?</question> '.$_configuration['root_sys'].' (y/N)', |
||||
false |
||||
) |
||||
) { |
||||
return; |
||||
} |
||||
|
||||
$dialog = $this->getHelperSet()->get('dialog'); |
||||
if (!$dialog->askConfirmation( |
||||
$output, |
||||
'<question>Are you sure you want to update from version</question> <info>'.$_configuration['system_version'].'</info> <comment>to version </comment><info>'.$version.'</info> (y/N)', |
||||
false |
||||
) |
||||
) { |
||||
return; |
||||
} |
||||
|
||||
$output->writeln('<comment>Migrating from Chamilo version: </comment><info>'.$_configuration['system_version'].'</info><comment> to version <info>'.$version); |
||||
|
||||
//Starting |
||||
$output->writeln('<comment>Starting upgrade for Chamilo with configuration file: </comment><info>'.$configurationPath.'configuration.php</info>'); |
||||
|
||||
$oldVersion = $currentVersion; |
||||
foreach ($versionList as $versionItem => $versionInfo) { |
||||
if (version_compare($versionItem, $currentVersion, '>') && version_compare($versionItem, $version, '<=')) { |
||||
$output->writeln("----------------------------------------------------------------"); |
||||
$output->writeln("<comment>Starting migration from version: </comment><info>$oldVersion</info><comment> to </comment><info>$versionItem "); |
||||
$output->writeln(""); |
||||
|
||||
if (isset($versionInfo['require_update']) && $versionInfo['require_update'] == true) { |
||||
//Greater than my current version |
||||
$this->startMigration($oldVersion, $versionItem, $dryRun, $output); |
||||
$oldVersion = $versionItem; |
||||
$output->writeln("----------------------------------------------------------------"); |
||||
} else { |
||||
$output->writeln("<comment>Version <info>'$versionItem'</info> does not need a DB migration</comment>"); |
||||
} |
||||
} |
||||
} |
||||
|
||||
$this->updateConfiguration($version); |
||||
$output->writeln("<comment>Wow! You just finish to migrate. Too check the current status of your platform. Run </comment><info>chamilo:status</info>"); |
||||
} |
||||
|
||||
/** |
||||
* Starts a migration |
||||
* |
||||
* @param $fromVersion |
||||
* @param $toVersion |
||||
* @param $dryRun |
||||
* @param $output |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function startMigration($fromVersion, $toVersion, $dryRun, $output) |
||||
{ |
||||
//used by monolog |
||||
global $app; |
||||
|
||||
//Needed when using require file |
||||
$_configuration = $this->getHelper('configuration')->getConfiguration(); |
||||
|
||||
$installPath = api_get_path(SYS_CODE_PATH).'install/'.$toVersion.'/'; |
||||
$versionInfo = $this->getAvailableVersionInfo($toVersion); |
||||
|
||||
$mainConnection = $this->getHelper('main_database')->getConnection(); |
||||
|
||||
//Cleaning query list |
||||
$this->queryList = array(); |
||||
|
||||
//Filling sqlList array with "pre" db changes |
||||
if (isset($versionInfo['pre']) && !empty($versionInfo['pre'])) { |
||||
$sqlToInstall = $installPath.$versionInfo['pre']; |
||||
$this->fillQueryList($sqlToInstall, $output, 'pre'); |
||||
|
||||
//Processing sql query list depending of the section |
||||
$result = $this->processQueryList($output, $toVersion, $dryRun, 'pre'); |
||||
} |
||||
|
||||
//Filling sqlList array with "post" db changes |
||||
if (isset($versionInfo['post']) && !empty($versionInfo['post'])) { |
||||
$sqlToInstall = $installPath.$versionInfo['post']; |
||||
$this->fillQueryList($sqlToInstall, $output, 'post'); |
||||
//Processing sql query list depending of the section |
||||
$result = $this->processQueryList($output, $toVersion, $dryRun, 'post'); |
||||
} |
||||
|
||||
//Processing "db" changes |
||||
if (isset($versionInfo['update_db']) && !empty($versionInfo['update_db'])) { |
||||
$sqlToInstall = $installPath.$versionInfo['update_db']; |
||||
if (is_file($sqlToInstall) && file_exists($sqlToInstall)) { |
||||
$output->writeln("<comment>Executing update db: <info>'$sqlToInstall'</info>"); |
||||
require $sqlToInstall; |
||||
$update($_configuration, $mainConnection, $dryRun, $output, $app); |
||||
} |
||||
} |
||||
|
||||
//Processing "update file" changes |
||||
if (isset($versionInfo['update_files']) && !empty($versionInfo['update_files'])) { |
||||
$sqlToInstall = $installPath.$versionInfo['update_files']; |
||||
if (is_file($sqlToInstall) && file_exists($sqlToInstall)) { |
||||
$output->writeln("<comment>Executing update files: <info>'$sqlToInstall'</info>"); |
||||
require $sqlToInstall; |
||||
} |
||||
} |
||||
|
||||
$output->writeln(''); |
||||
$output->writeln("<comment>You have to select yes for the 'Chamilo Migrations'<comment>"); |
||||
|
||||
|
||||
if ($result) { |
||||
$command = $this->getApplication()->find('migrations:migrate'); |
||||
$arguments = array( |
||||
'command' => 'migrations:migrate', |
||||
'version' => $versionInfo['hook_to_doctrine_version'], |
||||
'--configuration' => $this->getMigrationConfigurationFile() |
||||
); |
||||
|
||||
$output->writeln("<comment>Executing migrations:migrate ".$versionInfo['hook_to_doctrine_version']." --configuration=".$this->getMigrationConfigurationFile()."<comment>"); |
||||
|
||||
$input = new ArrayInput($arguments); |
||||
|
||||
$command->run($input, $output); |
||||
$output->writeln("<comment>Migration ended succesfully</comment>"); |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
public function getMigrationTypes() { |
||||
return array( |
||||
'pre', |
||||
'post' |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* Process the queryList array and executes queries to the correct section (main, user, course, etc) |
||||
* |
||||
* @param $output |
||||
* @param $version |
||||
* @param $dryRun |
||||
* @return bool |
||||
* @throws \Exception |
||||
*/ |
||||
public function processQueryList($output, $version, $dryRun, $type) |
||||
{ |
||||
$databases = $this->getDatabaseList($version, $type); |
||||
|
||||
foreach ($databases as $section => &$dbList) { |
||||
foreach ($dbList as &$dbInfo) { |
||||
$output->writeln(""); |
||||
$output->writeln("<comment>Loading section:</comment><info> $section</info> <comment>with database </comment><info>".$dbInfo['database']."</info>"); |
||||
$output->writeln("--------------------------"); |
||||
|
||||
if ($dbInfo['status'] == 'complete') { |
||||
$output->writeln("<comment>Database already updated</comment>"); |
||||
continue; |
||||
} |
||||
|
||||
if (isset($this->queryList[$type]) && isset($this->queryList[$type][$section]) && !empty($this->queryList[$type][$section])) { |
||||
$queryList = $this->queryList[$type][$section]; |
||||
|
||||
try { |
||||
$lines = 0; |
||||
$conn = $this->getHelper($dbInfo['database'])->getConnection(); |
||||
|
||||
$conn->beginTransaction(); |
||||
|
||||
foreach ($queryList as $query) { |
||||
if ($dryRun) { |
||||
$output->writeln($query); |
||||
} else { |
||||
$output->writeln(' <comment>-></comment> ' . $query); |
||||
$conn->executeQuery($query); |
||||
} |
||||
$lines++; |
||||
} |
||||
|
||||
if (!$dryRun) { |
||||
$conn->commit(); |
||||
$output->writeln(sprintf('%d statements executed!', $lines) . PHP_EOL); |
||||
$dbInfo['status'] = 'complete'; |
||||
$this->saveDatabaseList($databases, $version, $type); |
||||
} |
||||
} catch (\Exception $e) { |
||||
$conn->rollback(); |
||||
$output->write(sprintf('<error>Migration failed. Error %s</error>', $e->getMessage())); |
||||
throw $e; |
||||
} |
||||
} else { |
||||
$output->writeln(sprintf("Nothing to execute for section $section!")); |
||||
|
||||
return false; |
||||
} |
||||
} |
||||
|
||||
} |
||||
$this->queryList = array(); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
/** |
||||
* @param string $sqlFilePath |
||||
* @param $output |
||||
* @param string type |
||||
*/ |
||||
public function fillQueryList($sqlFilePath, $output, $type) |
||||
{ |
||||
if (is_file($sqlFilePath) && file_exists($sqlFilePath)) { |
||||
$output->writeln(sprintf("Processing file type:$type '<info>%s</info>'... ", $sqlFilePath)); |
||||
$sections = $this->getSections(); |
||||
|
||||
foreach ($sections as $section) { |
||||
$sqlList = $this->getSQLContents($sqlFilePath, $section); |
||||
$this->setQueryList($sqlList, $section, $type); |
||||
} |
||||
} else { |
||||
$output->writeln(sprintf("File does not exists: '<info>%s</info>'... ", $sqlFilePath)); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param $queryList |
||||
* @param $section |
||||
*/ |
||||
public function setQueryList($queryList, $section, $type) |
||||
{ |
||||
if (!isset($this->queryList[$type][$section])) { |
||||
$this->queryList[$type][$section] = $queryList; |
||||
} else { |
||||
$this->queryList[$type][$section] = array_merge($this->queryList[$type][$section], $queryList); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* @return array |
||||
*/ |
||||
public function getSections() |
||||
{ |
||||
return array( |
||||
'main', |
||||
'user', |
||||
'stats', |
||||
'scorm', |
||||
'course' |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Generates database array info |
||||
* |
||||
* @return mixed |
||||
*/ |
||||
public function generateDatabaseList() |
||||
{ |
||||
$courseList = \CourseManager::get_real_course_list(); |
||||
$courseDbList = array(); |
||||
|
||||
foreach ($courseList as $course) { |
||||
if (!empty($course['db_name'])) { |
||||
$courseDbList[] = array( |
||||
'database' => '_chamilo_course_'.$course['db_name'], |
||||
'status' => 'waiting' |
||||
); |
||||
} |
||||
} |
||||
|
||||
if (empty($courseDbList)) { |
||||
$courseDbList = array( |
||||
array( |
||||
'database'=> 'main_database', |
||||
'status' => 'waiting' |
||||
) |
||||
); |
||||
} |
||||
|
||||
$databaseSection = array( |
||||
'main' => array( |
||||
array( |
||||
'database' => 'main_database', |
||||
'status' => 'waiting' |
||||
) |
||||
), |
||||
'user' => array( |
||||
array( |
||||
'database' => 'user_personal_database', |
||||
'status' => 'waiting' |
||||
) |
||||
), |
||||
'stats' => array( |
||||
array( |
||||
'database' => 'statistics_database', |
||||
'status' => 'waiting' |
||||
) |
||||
), |
||||
// 'scorm' => array('main_database'), |
||||
'course'=> $courseDbList |
||||
); |
||||
|
||||
$this->setDatabaseList($databaseSection); |
||||
|
||||
return $this->databaseList; |
||||
} |
||||
|
||||
public function setDatabaseList($list) |
||||
{ |
||||
$this->databaseList = $list; |
||||
} |
||||
|
||||
/** |
||||
* @param string $version |
||||
* |
||||
* @return mixed|void |
||||
*/ |
||||
public function getDatabaseList($version, $type) |
||||
{ |
||||
$configurationPath = $this->getHelper('configuration')->getConfigurationPath(); |
||||
$newConfigurationFile = $configurationPath.'db_migration_status_'.$version.'_'.$type.'.yml'; |
||||
|
||||
if (file_exists($newConfigurationFile)) { |
||||
$yaml = new Parser(); |
||||
|
||||
return $yaml->parse(file_get_contents($newConfigurationFile)); |
||||
} else { |
||||
|
||||
return $this->generateDatabaseList(); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param string $databaseSection |
||||
* @param string $version |
||||
* |
||||
* @return bool |
||||
*/ |
||||
public function saveDatabaseList($databaseSection, $version, $type) |
||||
{ |
||||
$configurationPath = $this->getHelper('configuration')->getConfigurationPath(); |
||||
$dumper = new Dumper(); |
||||
$yaml = $dumper->dump($databaseSection, 2); //inline |
||||
$newConfigurationFile = $configurationPath.'db_migration_status_'.$version.'_'.$type.'.yml'; |
||||
file_put_contents($newConfigurationFile, $yaml); |
||||
|
||||
return file_exists($newConfigurationFile); |
||||
} |
||||
|
||||
/** |
||||
* |
||||
* @param string $section |
||||
* |
||||
* @return mixed |
||||
*/ |
||||
public function getDatabasesPerSection($section, $version, $type) |
||||
{ |
||||
$databases = $this->getDatabaseList($version, $type); |
||||
if (isset($databases[$section])) { |
||||
return $databases[$section]; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Function originally wrote in install.lib.php |
||||
* |
||||
* @param string $file |
||||
* @param string $section |
||||
* @param bool $printErrors |
||||
* |
||||
* @return array|bool |
||||
*/ |
||||
public function getSQLContents($file, $section, $printErrors = true) |
||||
{ |
||||
//check given parameters |
||||
if (empty($file)) { |
||||
$error = "Missing name of file to parse in get_sql_file_contents()"; |
||||
if ($printErrors) { |
||||
echo $error; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
if (!in_array($section, array('main', 'user', 'stats', 'scorm', 'course'))) { |
||||
$error = "Section '$section' is not authorized in getSQLContents()"; |
||||
if ($printErrors) { |
||||
echo $error; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
$filepath = $file; |
||||
if (!is_file($filepath) or !is_readable($filepath)) { |
||||
$error = "File $filepath not found or not readable in getSQLContents()"; |
||||
if ($printErrors) { |
||||
echo $error; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
//read the file in an array |
||||
// Empty lines should not be executed as SQL statements, because errors occur, see Task #2167. |
||||
$file_contents = file($filepath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); |
||||
if (!is_array($file_contents) or count($file_contents) < 1) { |
||||
$error = "File $filepath looks empty in getSQLContents()"; |
||||
if ($printErrors) { |
||||
echo $error; |
||||
} |
||||
|
||||
return false; |
||||
} |
||||
|
||||
//prepare the resulting array |
||||
$section_contents = array(); |
||||
$record = false; |
||||
foreach ($file_contents as $index => $line) { |
||||
if (substr($line, 0, 2) == '--') { |
||||
//This is a comment. Check if section name, otherwise ignore |
||||
$result = array(); |
||||
if (preg_match('/^-- xx([A-Z]*)xx/', $line, $result)) { //we got a section name here |
||||
if ($result[1] == strtoupper($section)) { |
||||
//we have the section we are looking for, start recording |
||||
$record = true; |
||||
} else { |
||||
//we have another section's header. If we were recording, stop now and exit loop |
||||
if ($record) { |
||||
break; |
||||
} |
||||
$record = false; |
||||
} |
||||
} |
||||
} else { |
||||
if ($record) { |
||||
if (!empty($line)) { |
||||
$section_contents[] = $line; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
//now we have our section's SQL statements group ready, return |
||||
return $section_contents; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Executed only before createCourseTables() |
||||
*/ |
||||
public function dropCourseTables() |
||||
{ |
||||
$list = \CourseManager::get_course_tables(); |
||||
foreach ($list as $table) { |
||||
$sql = "DROP TABLE IF EXISTS ".DB_COURSE_PREFIX.$table; |
||||
\Database::query($sql); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Creates the course tables with the prefix c_ |
||||
* @param $output |
||||
*/ |
||||
public function createCourseTables($output) |
||||
{ |
||||
$command = $this->getApplication()->find('dbal:import'); |
||||
$sqlFolder = $this->getInstallationPath('1.9.0'); |
||||
|
||||
//Importing sql files |
||||
$arguments = array( |
||||
'command' => 'dbal:import', |
||||
'file' => $sqlFolder.'db_course.sql' |
||||
); |
||||
$input = new ArrayInput($arguments); |
||||
$command->run($input, $output); |
||||
} |
||||
} |
||||
|
||||
@ -0,0 +1,48 @@ |
||||
<?php |
||||
|
||||
namespace ChamiloLMS\Component\Installer; |
||||
|
||||
class Installer |
||||
{ |
||||
|
||||
public function __construct() |
||||
{ |
||||
|
||||
} |
||||
|
||||
public function setSettingsAfterInstallation($adminInfo, $portalSettings) |
||||
{ |
||||
// Updating admin user |
||||
$adminInfo['user_id'] = 1; |
||||
$adminInfo['auth_source'] = 'platform'; |
||||
$adminInfo['password'] = api_get_encrypted_password($adminInfo['password']); |
||||
|
||||
$result = \UserManager::update($adminInfo); |
||||
if ($result) { |
||||
\UserManager::add_user_as_admin($adminInfo['user_id']); |
||||
} |
||||
|
||||
// Updating anonymous user |
||||
$anonymousUser['user_id'] = 2; |
||||
$anonymousUser['language'] = $adminInfo['language']; |
||||
\UserManager::update($anonymousUser); |
||||
|
||||
// Updating portal settings |
||||
|
||||
api_set_setting('emailAdministrator', $adminInfo['email']); |
||||
api_set_setting('administratorSurname', $adminInfo['lastname']); |
||||
api_set_setting('administratorName', $adminInfo['firstname']); |
||||
api_set_setting('platformLanguage', $adminInfo['language']); |
||||
|
||||
api_set_setting('allow_registration', '1'); |
||||
api_set_setting('allow_registration_as_teacher', '1'); |
||||
|
||||
api_set_setting('permissions_for_new_directories', $portalSettings['permissions_for_new_directories']); |
||||
api_set_setting('permissions_for_new_files', $portalSettings['permissions_for_new_files']); |
||||
|
||||
api_set_setting('Institution', $portalSettings['institution']); |
||||
api_set_setting('InstitutionUrl', $portalSettings['institution_url']); |
||||
api_set_setting('siteName', $portalSettings['sitename']); |
||||
|
||||
} |
||||
} |
||||
Loading…
Reference in new issue