ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilMDControlledVocabsUpdateSteps Class Reference
+ Inheritance diagram for ilMDControlledVocabsUpdateSteps:
+ Collaboration diagram for ilMDControlledVocabsUpdateSteps:

Public Member Functions

 prepare (\ilDBInterface $db)
 Prepare the execution of the steps. More...
 
 step_1 ()
 Add a new table to store deactivated standard vocabularies. More...
 
 step_2 ()
 Add a new table to store controlled vocabularies. More...
 
 step_3 ()
 Add a new table to store values and labels of controlled vocabularies. More...
 
 step_4 ()
 Add columns for the sources of all vocab values. More...
 
 step_5 ()
 Make more space in the columns of vocab values to hold controlled values. More...
 
 step_6 ()
 Normalize existing vocab values. More...
 
 step_7 ()
 Fill source columns with the default value. More...
 
 step_8 ()
 
 prepare (\ilDBInterface $db)
 Prepare the execution of the steps. More...
 

Protected Member Functions

 getAllVocabSlots ()
 
 getTableForVocabSlot (SlotIdentifier $slot)
 
 getValueColumnNameForVocabSlot (SlotIdentifier $slot)
 
 getSourceColumnNameForVocabSlot (SlotIdentifier $slot)
 
 getTranslationsForVocabSlot (SlotIdentifier $slot)
 

Protected Attributes

ilDBInterface $db
 

Detailed Description

Definition at line 24 of file class.ilMDControlledVocabsUpdateSteps.php.

Member Function Documentation

◆ getAllVocabSlots()

ilMDControlledVocabsUpdateSteps::getAllVocabSlots ( )
protected
Returns
SlotIdentifier[]

Definition at line 236 of file class.ilMDControlledVocabsUpdateSteps.php.

236 : \Generator
237 {
238 // Some slots are persisted in the same column and table, so only return one of them.
239 yield from [
240 SlotIdentifier::GENERAL_STRUCTURE,
241 SlotIdentifier::GENERAL_AGGREGATION_LEVEL,
242 SlotIdentifier::LIFECYCLE_STATUS,
243 SlotIdentifier::LIFECYCLE_CONTRIBUTE_ROLE,
244 //SlotIdentifier::METAMETADATA_CONTRIBUTE_ROLE,
245 SlotIdentifier::TECHNICAL_REQUIREMENT_TYPE,
246 SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
247 //SlotIdentifier::TECHNICAL_REQUIREMENT_OS,
248 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE,
249 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL,
250 SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY,
251 SlotIdentifier::EDUCATIONAL_DIFFICULTY,
252 SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE,
253 SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE,
254 SlotIdentifier::EDUCATIONAL_CONTEXT,
255 SlotIdentifier::RIGHTS_COST,
256 SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS,
257 SlotIdentifier::RELATION_KIND,
258 SlotIdentifier::CLASSIFICATION_PURPOSE
259 ];
260 }

References ILIAS\ResourceStorage\Flavour\Machine\DefaultMachines\from().

Referenced by step_4(), step_5(), step_6(), step_7(), and step_8().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSourceColumnNameForVocabSlot()

ilMDControlledVocabsUpdateSteps::getSourceColumnNameForVocabSlot ( SlotIdentifier  $slot)
protected

Definition at line 314 of file class.ilMDControlledVocabsUpdateSteps.php.

314 : string
315 {
316 return match ($slot) {
317 SlotIdentifier::GENERAL_STRUCTURE => 'general_structure_src',
318 SlotIdentifier::GENERAL_AGGREGATION_LEVEL => 'general_aggl_src',
319 SlotIdentifier::LIFECYCLE_STATUS => 'lifecycle_status_src',
320 SlotIdentifier::LIFECYCLE_CONTRIBUTE_ROLE,
321 SlotIdentifier::METAMETADATA_CONTRIBUTE_ROLE => 'role_src',
322 SlotIdentifier::TECHNICAL_REQUIREMENT_TYPE => 'type_src',
323 SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
324 SlotIdentifier::TECHNICAL_REQUIREMENT_OS => 'name_src',
325 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE => 'interactivity_type_src',
326 SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE => 'learning_resource_type_src',
327 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL => 'interactivity_level_src',
328 SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY => 'semantic_density_src',
329 SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE => 'intended_end_user_role_src',
330 SlotIdentifier::EDUCATIONAL_CONTEXT => 'context_src',
331 SlotIdentifier::EDUCATIONAL_DIFFICULTY => 'difficulty_src',
332 SlotIdentifier::RIGHTS_COST => 'costs_src',
333 SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS => 'cpr_and_or_src',
334 SlotIdentifier::RELATION_KIND => 'kind_src',
335 SlotIdentifier::CLASSIFICATION_PURPOSE => 'purpose_src',
336 default => ''
337 };
338 }

Referenced by step_4(), step_7(), and step_8().

+ Here is the caller graph for this function:

◆ getTableForVocabSlot()

ilMDControlledVocabsUpdateSteps::getTableForVocabSlot ( SlotIdentifier  $slot)
protected

Definition at line 262 of file class.ilMDControlledVocabsUpdateSteps.php.

262 : string
263 {
264 return match ($slot) {
265 SlotIdentifier::GENERAL_STRUCTURE,
266 SlotIdentifier::GENERAL_AGGREGATION_LEVEL => 'il_meta_general',
267 SlotIdentifier::LIFECYCLE_STATUS => 'il_meta_lifecycle',
268 SlotIdentifier::LIFECYCLE_CONTRIBUTE_ROLE,
269 SlotIdentifier::METAMETADATA_CONTRIBUTE_ROLE => 'il_meta_contribute',
270 SlotIdentifier::TECHNICAL_REQUIREMENT_TYPE,
271 SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
272 SlotIdentifier::TECHNICAL_REQUIREMENT_OS => 'il_meta_or_composite',
273 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE,
274 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL,
275 SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY,
276 SlotIdentifier::EDUCATIONAL_DIFFICULTY => 'il_meta_educational',
277 SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE => 'il_meta_lr_type',
278 SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE => 'il_meta_end_usr_role',
279 SlotIdentifier::EDUCATIONAL_CONTEXT => 'il_meta_context',
280 SlotIdentifier::RIGHTS_COST,
281 SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS => 'il_meta_rights',
282 SlotIdentifier::RELATION_KIND => 'il_meta_relation',
283 SlotIdentifier::CLASSIFICATION_PURPOSE => 'il_meta_classification',
284 default => ''
285 };
286 }

Referenced by step_4(), step_5(), step_6(), step_7(), and step_8().

+ Here is the caller graph for this function:

◆ getTranslationsForVocabSlot()

ilMDControlledVocabsUpdateSteps::getTranslationsForVocabSlot ( SlotIdentifier  $slot)
protected

Definition at line 340 of file class.ilMDControlledVocabsUpdateSteps.php.

340 : array
341 {
342 return match ($slot) {
343 SlotIdentifier::GENERAL_AGGREGATION_LEVEL => [
344 '1' => '1',
345 '2' => '2',
346 '3' => '3',
347 '4' => '4'
348 ],
349 SlotIdentifier::TECHNICAL_REQUIREMENT_TYPE => [
350 'browser' => 'browser',
351 'operating system' => 'operating system'
352 ],
353 SlotIdentifier::GENERAL_STRUCTURE => [
354 'atomic' => 'Atomic',
355 'collection' => 'Collection',
356 'networked' => 'Networked',
357 'hierarchical' => 'Hierarchical',
358 'linear' => 'Linear'
359 ],
360 SlotIdentifier::LIFECYCLE_STATUS => [
361 'draft' => 'Draft',
362 'final' => 'Final',
363 'revised' => 'Revised',
364 'unavailable' => 'Unavailable'
365 ],
366 SlotIdentifier::LIFECYCLE_CONTRIBUTE_ROLE,
367 SlotIdentifier::METAMETADATA_CONTRIBUTE_ROLE => [
368 'author' => 'Author',
369 'publisher' => 'Publisher',
370 'unknown' => 'Unknown',
371 'initiator' => 'Initiator',
372 'terminator' => 'Terminator',
373 'editor' => 'Editor',
374 'graphical designer' => 'GraphicalDesigner',
375 'technical implementer' => 'TechnicalImplementer',
376 'content provider' => 'ContentProvider',
377 'technical validator' => 'TechnicalValidator',
378 'educational validator' => 'EducationalValidator',
379 'script writer' => 'ScriptWriter',
380 'instructional designer' => 'InstructionalDesigner',
381 'subject matter expert' => 'SubjectMatterExpert',
382 'creator' => 'Creator',
383 'validator' => 'Validator'
384 ],
385 SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
386 SlotIdentifier::TECHNICAL_REQUIREMENT_OS => [
387 'pc-dos' => 'PC-DOS',
388 'ms-windows' => 'MS-Windows',
389 'macos' => 'MacOS',
390 'unix' => 'Unix',
391 'multi-os' => 'Multi-OS',
392 'none' => 'None',
393 'any' => 'Any',
394 'netscape communicator' => 'NetscapeCommunicator',
395 'ms-internet explorer' => 'MS-InternetExplorer',
396 'opera' => 'Opera',
397 'amaya' => 'Amaya'
398 ],
399 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE => [
400 'active' => 'Active',
401 'expositive' => 'Expositive',
402 'mixed' => 'Mixed'
403 ],
404 SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE => [
405 'exercise' => 'Exercise',
406 'simulation' => 'Simulation',
407 'questionnaire' => 'Questionnaire',
408 'diagram' => 'Diagram',
409 'figure' => 'Figure',
410 'graph' => 'Graph',
411 'index' => 'Index',
412 'slide' => 'Slide',
413 'table' => 'Table',
414 'narrative text' => 'NarrativeText',
415 'exam' => 'Exam',
416 'experiment' => 'Experiment',
417 'problem statement' => 'ProblemStatement',
418 'self assessment' => 'SelfAssessment',
419 'lecture' => 'Lecture'
420 ],
421 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL,
422 SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY => [
423 'very low' => 'VeryLow',
424 'low' => 'Low',
425 'medium' => 'Medium',
426 'high' => 'High',
427 'very high' => 'VeryHigh'
428 ],
429 SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE => [
430 'teacher' => 'Teacher',
431 'author' => 'Author',
432 'learner' => 'Learner',
433 'manager' => 'Manager'
434 ],
435 SlotIdentifier::EDUCATIONAL_CONTEXT => [
436 'school' => 'School',
437 'higher education' => 'HigherEducation',
438 'training' => 'Training',
439 'other' => 'Other'
440 ],
441 SlotIdentifier::EDUCATIONAL_DIFFICULTY => [
442 'very easy' => 'VeryEasy',
443 'easy' => 'Easy',
444 'medium' => 'Medium',
445 'difficult' => 'Difficult',
446 'very difficult' => 'VeryDifficult'
447 ],
448 SlotIdentifier::RIGHTS_COST,
449 SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS => [
450 'yes' => 'Yes',
451 'no' => 'No'
452 ],
453 SlotIdentifier::RELATION_KIND => [
454 'ispartof' => 'IsPartOf',
455 'haspart' => 'HasPart',
456 'isversionof' => 'IsVersionOf',
457 'hasversion' => 'HasVersion',
458 'isformatof' => 'IsFormatOf',
459 'hasformat' => 'HasFormat',
460 'references' => 'References',
461 'isreferencedby' => 'IsReferencedBy',
462 'isbasedon' => 'IsBasedOn',
463 'isbasisfor' => 'IsBasisFor',
464 'requires' => 'Requires',
465 'isrequiredby' => 'IsRequiredBy'
466 ],
467 SlotIdentifier::CLASSIFICATION_PURPOSE => [
468 'discipline' => 'Discipline',
469 'idea' => 'Idea',
470 'prerequisite' => 'Prerequisite',
471 'educational objective' => 'EducationalObjective',
472 'accessibility restrictions' => 'AccessibilityRestrictions',
473 'educational level' => 'EducationalLevel',
474 'skill level' => 'SkillLevel',
475 'security level' => 'SecurityLevel',
476 'competency' => 'Competency'
477 ],
478 default => []
479 };
480 }

Referenced by step_6(), and step_7().

+ Here is the caller graph for this function:

◆ getValueColumnNameForVocabSlot()

ilMDControlledVocabsUpdateSteps::getValueColumnNameForVocabSlot ( SlotIdentifier  $slot)
protected

Definition at line 288 of file class.ilMDControlledVocabsUpdateSteps.php.

288 : string
289 {
290 return match ($slot) {
291 SlotIdentifier::GENERAL_STRUCTURE => 'general_structure',
292 SlotIdentifier::GENERAL_AGGREGATION_LEVEL => 'general_aggl',
293 SlotIdentifier::LIFECYCLE_STATUS => 'lifecycle_status',
294 SlotIdentifier::LIFECYCLE_CONTRIBUTE_ROLE,
295 SlotIdentifier::METAMETADATA_CONTRIBUTE_ROLE => 'role',
296 SlotIdentifier::TECHNICAL_REQUIREMENT_TYPE => 'type',
297 SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
298 SlotIdentifier::TECHNICAL_REQUIREMENT_OS => 'name',
299 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE => 'interactivity_type',
300 SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE => 'learning_resource_type',
301 SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL => 'interactivity_level',
302 SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY => 'semantic_density',
303 SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE => 'intended_end_user_role',
304 SlotIdentifier::EDUCATIONAL_CONTEXT => 'context',
305 SlotIdentifier::EDUCATIONAL_DIFFICULTY => 'difficulty',
306 SlotIdentifier::RIGHTS_COST => 'costs',
307 SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS => 'cpr_and_or',
308 SlotIdentifier::RELATION_KIND => 'kind',
309 SlotIdentifier::CLASSIFICATION_PURPOSE => 'purpose',
310 default => ''
311 };
312 }

Referenced by step_5(), step_6(), and step_7().

+ Here is the caller graph for this function:

◆ prepare()

ilMDControlledVocabsUpdateSteps::prepare ( \ilDBInterface  $db)

Prepare the execution of the steps.

Do not use anything from the globals or the DIC inside your steps, only use the instance of the database provided here.

Implements ilDatabaseUpdateSteps.

Definition at line 28 of file class.ilMDControlledVocabsUpdateSteps.php.

28 : void
29 {
30 $this->db = $db;
31 }

References $db.

◆ step_1()

ilMDControlledVocabsUpdateSteps::step_1 ( )

Add a new table to store deactivated standard vocabularies.

Definition at line 36 of file class.ilMDControlledVocabsUpdateSteps.php.

36 : void
37 {
38 if (!$this->db->tableExists('il_md_vocab_inactive')) {
39 $this->db->createTable(
40 'il_md_vocab_inactive',
41 [
42 'slot' => [
43 'type' => ilDBConstants::T_TEXT,
44 'notnull' => true,
45 'length' => 64
46 ]
47 ]
48 );
49 $this->db->addPrimaryKey('il_md_vocab_inactive', ['slot']);
50 }
51 }

References ilDBConstants\T_TEXT.

◆ step_2()

ilMDControlledVocabsUpdateSteps::step_2 ( )

Add a new table to store controlled vocabularies.

Definition at line 56 of file class.ilMDControlledVocabsUpdateSteps.php.

56 : void
57 {
58 if (!$this->db->tableExists('il_md_vocab_contr')) {
59 $this->db->createTable(
60 'il_md_vocab_contr',
61 [
62 'id' => [
64 'notnull' => true,
65 'length' => 4
66 ],
67 'slot' => [
68 'type' => ilDBConstants::T_TEXT,
69 'notnull' => true,
70 'length' => 64
71 ],
72 'source' => [
73 'type' => ilDBConstants::T_TEXT,
74 'notnull' => true,
75 'length' => 64
76 ],
77 'active' => [
79 'notnull' => true,
80 'length' => 1,
81 'default' => 1
82 ],
83 'custom_input' => [
85 'notnull' => true,
86 'length' => 1,
87 'default' => 1
88 ],
89 ]
90 );
91 $this->db->addPrimaryKey('il_md_vocab_contr', ['id']);
92 $this->db->createSequence('il_md_vocab_contr');
93 }
94 }

References ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

◆ step_3()

ilMDControlledVocabsUpdateSteps::step_3 ( )

Add a new table to store values and labels of controlled vocabularies.

Definition at line 99 of file class.ilMDControlledVocabsUpdateSteps.php.

99 : void
100 {
101 if (!$this->db->tableExists('il_md_vocab_contr_vals')) {
102 $this->db->createTable(
103 'il_md_vocab_contr_vals',
104 [
105 'vocab_id' => [
106 'type' => ilDBConstants::T_INTEGER,
107 'notnull' => true,
108 'length' => 4
109 ],
110 'value' => [
111 'type' => ilDBConstants::T_TEXT,
112 'notnull' => true,
113 'length' => 255
114 ],
115 'label' => [
116 'type' => ilDBConstants::T_TEXT,
117 'notnull' => true,
118 'length' => 255
119 ]
120 ]
121 );
122 $this->db->addPrimaryKey('il_md_vocab_contr_vals', ['vocab_id', 'value']);
123 }
124 }

References ilDBConstants\T_INTEGER, and ilDBConstants\T_TEXT.

◆ step_4()

ilMDControlledVocabsUpdateSteps::step_4 ( )

Add columns for the sources of all vocab values.

Definition at line 129 of file class.ilMDControlledVocabsUpdateSteps.php.

129 : void
130 {
131 foreach ($this->getAllVocabSlots() as $slot) {
132 $table = $this->getTableForVocabSlot($slot);
133 $src_column = $this->getSourceColumnNameForVocabSlot($slot);
134
135 if ($this->db->tableColumnExists($table, $src_column)) {
136 continue;
137 }
138 $this->db->addTableColumn(
139 $table,
140 $src_column,
141 [
142 'type' => ilDBConstants::T_TEXT,
143 'notnull' => true,
144 'length' => 64
145 ]
146 );
147 }
148 }

References getAllVocabSlots(), getSourceColumnNameForVocabSlot(), getTableForVocabSlot(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ step_5()

ilMDControlledVocabsUpdateSteps::step_5 ( )

Make more space in the columns of vocab values to hold controlled values.

Definition at line 153 of file class.ilMDControlledVocabsUpdateSteps.php.

153 : void
154 {
155 foreach ($this->getAllVocabSlots() as $slot) {
156 $table = $this->getTableForVocabSlot($slot);
157 $value_column = $this->getValueColumnNameForVocabSlot($slot);
158
159 if (!$this->db->tableColumnExists($table, $value_column)) {
160 continue;
161 }
162 $this->db->modifyTableColumn(
163 $table,
164 $value_column,
165 [
166 'type' => ilDBConstants::T_TEXT,
167 'length' => 255
168 ]
169 );
170 }
171 }

References getAllVocabSlots(), getTableForVocabSlot(), getValueColumnNameForVocabSlot(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ step_6()

ilMDControlledVocabsUpdateSteps::step_6 ( )

Normalize existing vocab values.

Definition at line 176 of file class.ilMDControlledVocabsUpdateSteps.php.

176 : void
177 {
178 foreach ($this->getAllVocabSlots() as $slot) {
179 $table = $this->getTableForVocabSlot($slot);
180 $value_column = $this->getValueColumnNameForVocabSlot($slot);
181
182 foreach ($this->getTranslationsForVocabSlot($slot) as $new_value => $old_value) {
183 if ($new_value === $old_value) {
184 continue;
185 }
186 $this->db->update(
187 $table,
188 [$value_column => [ilDBConstants::T_TEXT, $new_value]],
189 [$value_column => [ilDBConstants::T_TEXT, $old_value]]
190 );
191 }
192 }
193 }

References getAllVocabSlots(), getTableForVocabSlot(), getTranslationsForVocabSlot(), getValueColumnNameForVocabSlot(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ step_7()

ilMDControlledVocabsUpdateSteps::step_7 ( )

Fill source columns with the default value.

Definition at line 198 of file class.ilMDControlledVocabsUpdateSteps.php.

198 : void
199 {
200 foreach ($this->getAllVocabSlots() as $slot) {
201 $table = $this->getTableForVocabSlot($slot);
202 $src_column = $this->getSourceColumnNameForVocabSlot($slot);
203 $value_column = $this->getValueColumnNameForVocabSlot($slot);
204 $standard_values = array_keys($this->getTranslationsForVocabSlot($slot));
205
206 $this->db->manipulate(
207 'UPDATE ' . $this->db->quoteIdentifier($table) . ' SET ' .
208 $this->db->quoteIdentifier($src_column) . ' = ' .
209 $this->db->quote(VocabFactory::STANDARD_SOURCE, ilDBConstants::T_TEXT) .
210 ' WHERE ' . $this->db->in($value_column, $standard_values, false, ilDBConstants::T_TEXT)
211 );
212 }
213 }

References getAllVocabSlots(), getSourceColumnNameForVocabSlot(), getTableForVocabSlot(), getTranslationsForVocabSlot(), getValueColumnNameForVocabSlot(), and ilDBConstants\T_TEXT.

+ Here is the call graph for this function:

◆ step_8()

ilMDControlledVocabsUpdateSteps::step_8 ( )

Definition at line 215 of file class.ilMDControlledVocabsUpdateSteps.php.

215 : void
216 {
217 foreach ($this->getAllVocabSlots() as $slot) {
218 $table = $this->getTableForVocabSlot($slot);
219 $src_column = $this->getSourceColumnNameForVocabSlot($slot);
220 if (!$this->db->tableColumnExists($table, $src_column)) {
221 continue;
222 }
223 $this->db->modifyTableColumn(
224 $table,
225 $src_column,
226 [
227 'default' => ""
228 ]
229 );
230 }
231 }

References getAllVocabSlots(), getSourceColumnNameForVocabSlot(), and getTableForVocabSlot().

+ Here is the call graph for this function:

Field Documentation

◆ $db

ilDBInterface ilMDControlledVocabsUpdateSteps::$db
protected

Definition at line 26 of file class.ilMDControlledVocabsUpdateSteps.php.

Referenced by prepare().


The documentation for this class was generated from the following file: