19 declare(strict_types=1);
    34     protected DatabaseWrapper 
$db;
    41         SlotHandler $slot_handler
    59             throw new \ilMDVocabulariesException(
'Source cannot be empty.');
    62             throw new \ilMDVocabulariesException(
    63                 'Slot ' . $slot->value . 
' is not available for controlled vocabularies.'    67         $id = $this->db->nextId(
'il_md_vocab_contr');
    92             'il_md_vocab_contr_vals',
   108         $result = $this->db->query(
   109             'SELECT value FROM il_md_vocab_contr_vals JOIN il_md_vocab_contr ON id = vocab_id   110             WHERE slot = ' . $this->db->quoteAsString($slot->value) . 
' AND ' .
   111             $this->db->in(
'value', ...$values)
   114         foreach ($result as $row) {
   115             yield (
string) $row[
'value'];
   121         $result = $this->db->query(
   122             'SELECT id, slot, source, active, custom_input FROM il_md_vocab_contr   123             WHERE  id = ' . $this->db->quoteAsInteger($vocab_id)
   126         foreach ($result as $row) {
   129         return $this->factory->null();
   142         $result = $this->db->query(
   143             'SELECT COUNT(*) AS count FROM il_md_vocab_contr WHERE active = 1 AND slot = ' .
   144             $this->db->quoteAsString($slot->value)
   147         foreach ($result as $row) {
   148             return (
int) $row[
'count'];
   175             $active_where = 
'active = 1 AND ';
   178         $result = $this->db->query(
   179             'SELECT value, label FROM il_md_vocab_contr_vals JOIN il_md_vocab_contr ON id = vocab_id   180             WHERE slot = ' . $this->db->quoteAsString($slot->value) . 
' AND ' . $active_where .
   181             $this->db->in(
'value', ...$values)
   184         $labels_by_value = [];
   185         foreach ($result as $row) {
   186             $labels_by_value[(string) $row[
'value']] = (
string) $row[
'label'];
   188         foreach ($values as $value) {
   189             if (!array_key_exists($value, $labels_by_value)) {
   194                 $labels_by_value[$value]
   223         $this->db->manipulate(
   224             'DELETE FROM il_md_vocab_contr_vals WHERE vocab_id = ' .
   225             $this->db->quoteAsString($vocab_id)
   227         $this->db->manipulate(
   228             'DELETE FROM il_md_vocab_contr WHERE id = ' .
   229             $this->db->quoteAsString($vocab_id)
   239         foreach ($slots as $slot) {
   243             $slot_values[] = $slot->value;
   248             $where_active = 
' AND active = 1';
   250         $result = $this->db->query(
   251             'SELECT id, slot, source, active, custom_input FROM il_md_vocab_contr   252             WHERE  ' . $this->db->in(
'slot', ...$slot_values) .
   256         foreach ($result as $row) {
   264         $id = (string) $row[
'id'];
   265         $source = (string) $row[
'source'];
   268         if ($this->slot_handler->dataTypeForSlot($slot) === DataType::VOCAB_VALUE) {
   269             $builder = $this->factory->controlledVocabValue($slot, 
$id, $source, ...$values);
   271             $builder = $this->factory->controlledString($slot, 
$id, $source, ...$values);
   274         return $builder->withIsDeactivated(!$row[
'active'])
   275                        ->withDisallowsCustomInputs(!$row[
'custom_input'])
   284         $result = $this->db->query(
   285             'SELECT value FROM il_md_vocab_contr_vals WHERE vocab_id = ' .
   286             $this->db->quoteAsInteger($vocab_id) . 
" ORDER BY COALESCE(NULLIF(label,''), value) ASC"   288         foreach ($result as $row) {
   289             yield (
string) $row[
'value'];
   296              SlotIdentifier::GENERAL_STRUCTURE,
   297              SlotIdentifier::GENERAL_AGGREGATION_LEVEL,
   298              SlotIdentifier::GENERAL_COVERAGE,
   299              SlotIdentifier::GENERAL_IDENTIFIER_CATALOG,
   300              SlotIdentifier::LIFECYCLE_STATUS,
   301              SlotIdentifier::LIFECYCLE_CONTRIBUTE_PUBLISHER,
   302              SlotIdentifier::METAMETADATA_IDENTIFIER_CATALOG,
   303              SlotIdentifier::METAMETADATA_SCHEMA,
   304              SlotIdentifier::TECHNICAL_REQUIREMENT_BROWSER,
   305              SlotIdentifier::TECHNICAL_REQUIREMENT_OS,
   306              SlotIdentifier::TECHNICAL_OTHER_PLATFORM_REQUIREMENTS,
   307              SlotIdentifier::TECHNICAL_FORMAT,
   308              SlotIdentifier::EDUCATIONAL_INTERACTIVITY_TYPE,
   309              SlotIdentifier::EDUCATIONAL_LEARNING_RESOURCE_TYPE,
   310              SlotIdentifier::EDUCATIONAL_INTERACTIVITY_LEVEL,
   311              SlotIdentifier::EDUCATIONAL_SEMANTIC_DENSITY,
   312              SlotIdentifier::EDCUCATIONAL_INTENDED_END_USER_ROLE,
   313              SlotIdentifier::EDUCATIONAL_CONTEXT,
   314              SlotIdentifier::EDUCATIONAL_DIFFICULTY,
   315              SlotIdentifier::EDUCATIONAL_TYPICAL_AGE_RANGE,
   316              SlotIdentifier::RIGHTS_COST,
   317              SlotIdentifier::RIGHTS_CP_AND_OTHER_RESTRICTIONS,
   318              SlotIdentifier::RELATION_KIND,
   319              SlotIdentifier::RELATION_RESOURCE_IDENTIFIER_CATALOG,
   320              SlotIdentifier::CLASSIFICATION_PURPOSE,
   321              SlotIdentifier::CLASSIFICATION_KEYWORD,
   322              SlotIdentifier::CLASSIFICATION_TAXPATH_SOURCE,
   326         return in_array($slot, $valid_slots, 
true);
 
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins