17
17
$ list = [
18
18
'CURRENTCODE ' => 'NEWCODE ' ,
19
19
];
20
+ $ previewMode = false ;
21
+ $ updateFilesAndDirs = true ;
20
22
21
23
foreach (replaceCodes ($ list ) as $ message ) {
22
24
echo time ()." -- $ message " .PHP_EOL ;
23
25
};
24
26
25
27
function replaceCodes (array $ list ): Generator
26
28
{
29
+ global $ updateFilesAndDirs , $ previewMode ;
27
30
foreach ($ list as $ currentCode => $ newCode ) {
28
31
$ currentCodeExists = CourseManager::course_code_exists ($ currentCode );
29
32
@@ -54,17 +57,22 @@ function replaceCodes(array $list): Generator
54
57
55
58
$ newCode = CourseManager::generate_course_code ($ newCode );
56
59
57
- yield "New code to use for ' $ currentCode' is ' $ newCode' and its directory is ' $ newDirectory' " ;
60
+ yield "New code to use for ' $ currentCode' is ' $ newCode' and its (new) directory is ' $ newDirectory' " ;
61
+
62
+ if (false === $ previewMode ) {
63
+ Database::update (
64
+ 'course ' ,
65
+ [
66
+ 'code ' => $ newCode ,
67
+ 'visual_code ' => $ newVisualCode ,
68
+ 'directory ' => $ newDirectory ,
69
+ ],
70
+ ['code = ? ' => [$ currentCode ]]
71
+ );
72
+ } else {
73
+ yield " Course table not updated: previewMode=true " ;
74
+ }
58
75
59
- Database::update (
60
- 'course ' ,
61
- [
62
- 'code ' => $ newCode ,
63
- 'visual_code ' => $ newVisualCode ,
64
- 'directory ' => $ newDirectory ,
65
- ],
66
- ['code = ? ' => [$ currentCode ]]
67
- );
68
76
69
77
$ tablesWithCode = [
70
78
'course_rel_class ' => ['course_code ' ],
@@ -82,34 +90,51 @@ function replaceCodes(array $list): Generator
82
90
83
91
Database::query ('SET foreign_key_checks = 0 ' );
84
92
85
- foreach ($ tablesWithCode as $ tblName => $ fieldNames ) {
86
- foreach ($ fieldNames as $ fieldName ) {
87
- Database::update (
88
- $ tblName ,
89
- [$ fieldName => $ newCode ],
90
- ["$ fieldName = ? " => [$ currentCode ]]
91
- );
93
+ if (false === $ previewMode ) {
94
+ foreach ($ tablesWithCode as $ tblName => $ fieldNames ) {
95
+ foreach ($ fieldNames as $ fieldName ) {
96
+ Database::update (
97
+ $ tblName ,
98
+ [$ fieldName => $ newCode ],
99
+ ["$ fieldName = ? " => [$ currentCode ]]
100
+ );
101
+ }
92
102
}
103
+ } else {
104
+ yield " Tables with course code not updated for $ currentCode: previewMode=true " ;
93
105
}
94
106
95
107
yield "Replacing course code in exercises content " ;
96
108
97
- ExerciseLib::replaceTermsInContent ("/courses/ $ currentDirectory/ " , "/courses/ $ newDirectory/ " );
98
- ExerciseLib::replaceTermsInContent ("cidReq= $ currentCode " , "cidReq= $ newCode " );
109
+ if (false === $ previewMode ) {
110
+ ExerciseLib::replaceTermsInContent ("/courses/ $ currentDirectory/ " , "/courses/ $ newDirectory/ " );
111
+ ExerciseLib::replaceTermsInContent ("cidReq= $ currentCode " , "cidReq= $ newCode " );
112
+ } else {
113
+ yield " Content replacement not executed: previewMode=true " ;
114
+ }
99
115
100
116
yield "Replacing course code in HTML files " ;
101
117
102
118
$ coursePath = api_get_path (SYS_COURSE_PATH );
103
119
104
- exec ('find ' .$ coursePath .$ currentDirectory .'/document/ -type f -name "*.html" -exec sed -i ' ."'s#/courses/ $ currentDirectory/#/courses/ $ newDirectory/#g' {} + " );
120
+ if (false === $ previewMode && true === $ updateFilesAndDirs ) {
121
+ exec ('find ' .$ coursePath .$ currentDirectory .'/document/ -type f -name "*.html" -exec sed -i ' ."'s#/courses/ $ currentDirectory/#/courses/ $ newDirectory/#g' {} + " );
122
+ exec ('find ' .$ coursePath .$ currentDirectory .'/document/ -type f -name "*.html" -exec sed -i ' ."'s#cidReq= $ currentCode#cidReq= $ newCode#g' {} + " );
123
+ } else {
124
+ yield " File changes ignored (variable updateFilesAndDirs set to false) " ;
125
+ }
105
126
106
127
yield "Renaming course directory " ;
107
128
108
- $ fs = new Filesystem ();
109
- $ fs ->rename (
110
- $ coursePath .$ currentDirectory ,
111
- $ coursePath .$ newDirectory
112
- );
129
+ if (false === $ previewMode && true === $ updateFilesAndDirs ) {
130
+ $ fs = new Filesystem ();
131
+ $ fs ->rename (
132
+ $ coursePath .$ currentDirectory ,
133
+ $ coursePath .$ newDirectory
134
+ );
135
+ } else {
136
+ yield " Directory changes ignored (variable updateFilesAndDirs set to false) " ;
137
+ }
113
138
}
114
139
115
140
yield "Done " ;
0 commit comments