ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
class.ilObjGlossary.php
Go to the documentation of this file.
1<?php
2
23{
24 protected \ILIAS\Glossary\Term\TermManager $term_manager;
25 protected \ILIAS\Style\Content\DomainService $content_style_domain;
27 protected array $file_ids = [];
28 protected array $mob_ids = [];
29 protected bool $show_tax = false;
30 protected int $style_id = 0;
31 protected bool $glo_menu_active = false;
32 protected bool $online = false;
33 protected int $snippet_length = 0;
34 protected string $pres_mode = "";
35 protected bool $virtual = false;
36 protected string $virtual_mode = "";
37 protected bool $flashcards_active = false;
38 protected string $flashcards_mode = "";
40 public array $auto_glossaries = array();
41 protected ilObjUser $user;
42
43
44 public function __construct(
45 int $a_id = 0,
46 bool $a_call_by_reference = true
47 ) {
48 global $DIC;
49 $this->tpl = $DIC["tpl"];
50
51 $this->db = $DIC->database();
52 $this->user = $DIC->user();
53 $this->type = "glo";
54 parent::__construct($a_id, $a_call_by_reference);
55 $this->content_style_domain = $DIC
56 ->contentStyle()
57 ->domain();
58 $this->term_manager = $DIC->glossary()->internal()->domain()->term($this);
59 }
60
61 public function create(bool $a_upload = false): int
62 {
63 $id = parent::create();
64
65 // meta data will be created by
66 // import parser
67 if (!$a_upload) {
68 $this->createMetaData();
69 }
70 $this->db->insert(
71 'glossary',
72 array(
73 'id' => array('integer', $this->getId()),
74 'is_online' => array('text', 'n'),
75 'virtual' => array('text', $this->getVirtualMode()),
76 'pres_mode' => array('text', 'table'),
77 'snippet_length' => array('integer', 200)
78 )
79 );
80
81 $this->setPresentationMode("table");
82 $this->setSnippetLength(200);
83
84 $this->updateAutoGlossaries();
85
86 return $id;
87 }
88
89 public function read(): void
90 {
91 parent::read();
92
93 $q = "SELECT * FROM glossary WHERE id = " .
94 $this->db->quote($this->getId(), "integer");
95 $gl_set = $this->db->query($q);
96 $gl_rec = $this->db->fetchAssoc($gl_set);
97 $this->setOnline(ilUtil::yn2tf($gl_rec["is_online"]));
98 $this->setVirtualMode((string) ($gl_rec["virtual"] ?? ""));
99 $this->setActiveGlossaryMenu(ilUtil::yn2tf($gl_rec["glo_menu_active"]));
100 $this->setPresentationMode((string) $gl_rec["pres_mode"]);
101 $this->setSnippetLength((int) $gl_rec["snippet_length"]);
102 $this->setShowTaxonomy((bool) $gl_rec["show_tax"]);
103 $this->setActiveFlashcards(ilUtil::yn2tf($gl_rec["flash_active"]));
104 $this->setFlashcardsMode($gl_rec["flash_mode"]);
105
106 // read auto glossaries
107 $set = $this->db->query(
108 "SELECT * FROM glo_glossaries " .
109 " WHERE id = " . $this->db->quote($this->getId(), "integer")
110 );
111 $glos = array();
112 while ($rec = $this->db->fetchAssoc($set)) {
113 $glos[] = $rec["glo_id"];
114 }
115 $this->setAutoGlossaries($glos);
116 }
117
118 public function setVirtualMode(string $a_mode): void
119 {
120 switch ($a_mode) {
121 case "coll":
122 $this->virtual_mode = $a_mode;
123 $this->virtual = true;
124 break;
125
126 default:
127 $this->virtual_mode = "none";
128 $this->virtual = false;
129 break;
130 }
131 }
132
133 public function getVirtualMode(): string
134 {
135 return $this->virtual_mode;
136 }
137
138 public function isVirtual(): bool
139 {
140 return $this->virtual;
141 }
142
143 public function setPresentationMode(string $a_val): void
144 {
145 $this->pres_mode = $a_val;
146 }
147
148 public function getPresentationMode(): string
149 {
150 return $this->pres_mode;
151 }
152
154 public function setSnippetLength(int $a_val): void
155 {
156 $this->snippet_length = $a_val;
157 }
158
159 public function getSnippetLength(): int
160 {
161 return ($this->snippet_length > 0)
162 ? $this->snippet_length
163 : 200;
164 }
165
166 public function setOnline(bool $a_online): void
167 {
168 $this->online = $a_online;
169 }
170
171 public function getOnline(): bool
172 {
173 return $this->online;
174 }
175
176 public static function _lookupOnline(
177 int $a_id
178 ): bool {
179 global $DIC;
180
181 $db = $DIC->database();
182
183 $q = "SELECT is_online FROM glossary WHERE id = " .
184 $db->quote($a_id, "integer");
185 $lm_set = $db->query($q);
186 $lm_rec = $db->fetchAssoc($lm_set);
187
188 return ilUtil::yn2tf($lm_rec["is_online"]);
189 }
190
194 protected static function lookup(
195 int $a_id,
196 string $a_property
197 ): string {
198 global $DIC;
199
200 $db = $DIC->database();
201
202 $set = $db->query("SELECT $a_property FROM glossary WHERE id = " .
203 $db->quote($a_id, "integer"));
204 $rec = $db->fetchAssoc($set);
205
206 return $rec[$a_property];
207 }
208
209 public static function lookupSnippetLength(int $a_id): int
210 {
211 return (int) self::lookup($a_id, "snippet_length");
212 }
213
214
215 public function setActiveGlossaryMenu(bool $a_act_glo_menu): void
216 {
217 $this->glo_menu_active = $a_act_glo_menu;
218 }
219
220 public function isActiveGlossaryMenu(): bool
221 {
222 return $this->glo_menu_active;
223 }
224
225 public function setShowTaxonomy(bool $a_val): void
226 {
227 $this->show_tax = $a_val;
228 }
229
230 public function getShowTaxonomy(): bool
231 {
232 return $this->show_tax;
233 }
234
235 public function setActiveFlashcards(bool $a_flash): void
236 {
237 $this->flashcards_active = $a_flash;
238 }
239
240 public function isActiveFlashcards(): bool
241 {
242 return $this->flashcards_active;
243 }
244
245 public function setFlashcardsMode(string $a_flash): void
246 {
247 $this->flashcards_mode = $a_flash;
248 }
249
250 public function getFlashcardsMode(): string
251 {
252 return $this->flashcards_mode;
253 }
254
258 public function setAutoGlossaries(
259 array $a_val
260 ): void {
261 $this->auto_glossaries = array();
262 foreach ($a_val as $v) {
263 $this->addAutoGlossary($v);
264 }
265 }
266
267 public function addAutoGlossary(int $glo_id): void
268 {
269 if ($glo_id > 0 && ilObject::_lookupType($glo_id) == "glo" &&
270 !in_array($glo_id, $this->auto_glossaries)) {
271 $this->auto_glossaries[] = $glo_id;
272 }
273 }
274
278 public function getAutoGlossaries(): array
279 {
280 return $this->auto_glossaries;
281 }
282
283 public function removeAutoGlossary(
284 int $a_glo_id
285 ): void {
286 $glo_ids = array();
287 foreach ($this->getAutoGlossaries() as $g) {
288 if ($g != $a_glo_id) {
289 $glo_ids[] = $g;
290 }
291 }
292 $this->setAutoGlossaries($glo_ids);
293 }
294
295 public function update(): bool
296 {
297 $this->updateMetaData();
298
299 $this->db->update(
300 'glossary',
301 array(
302 'is_online' => array('text', ilUtil::tf2yn($this->getOnline())),
303 'virtual' => array('text', $this->getVirtualMode()),
304 'glo_menu_active' => array('text', ilUtil::tf2yn($this->isActiveGlossaryMenu())),
305 'pres_mode' => array('text', $this->getPresentationMode()),
306 'show_tax' => array('integer', $this->getShowTaxonomy()),
307 'snippet_length' => array('integer', $this->getSnippetLength()),
308 'flash_active' => array('text', ilUtil::tf2yn($this->isActiveFlashcards())),
309 'flash_mode' => array('text', $this->getFlashcardsMode())
310 ),
311 array(
312 'id' => array('integer', $this->getId())
313 )
314 );
315
316 $this->updateAutoGlossaries();
317 return parent::update();
318 }
319
320 public function updateAutoGlossaries(): void
321 {
322 // update auto glossaries
323 $this->db->manipulate(
324 "DELETE FROM glo_glossaries WHERE " .
325 " id = " . $this->db->quote($this->getId(), "integer")
326 );
327 foreach ($this->getAutoGlossaries() as $glo_id) {
328 $this->db->insert(
329 'glo_glossaries',
330 array(
331 'id' => array('integer', $this->getId()),
332 'glo_id' => array('integer', $glo_id)
333 )
334 );
335 }
336 }
337
338 public static function lookupAutoGlossaries(
339 int $a_id
340 ): array {
341 global $DIC;
342
343 $db = $DIC->database();
344
345 // read auto glossaries
346 $set = $db->query(
347 "SELECT * FROM glo_glossaries " .
348 " WHERE id = " . $db->quote($a_id, "integer")
349 );
350 $glos = array();
351 while ($rec = $db->fetchAssoc($set)) {
352 $glos[] = (int) $rec["glo_id"];
353 }
354 return $glos;
355 }
356
360 public function getGlossariesForCollection(): array
361 {
362 $set = $this->db->query(
363 "SELECT * FROM glossary_collection " .
364 " WHERE id = " . $this->db->quote($this->getId(), "integer")
365 );
366 $glos = [];
367 while ($rec = $this->db->fetchAssoc($set)) {
368 if (ilObject::_lookupType((int) $rec["glo_id"]) === "glo") { // #46222 (deleted glossary)
369 $glos[] = (int) $rec["glo_id"];
370 }
371 }
372
373 return $glos;
374 }
375
376 public function addGlossaryForCollection(int $glo_id): void
377 {
378 $this->db->replace(
379 "glossary_collection",
380 [
381 "id" => ["integer", $this->getId()],
382 "glo_id" => ["integer", $glo_id]
383 ],
384 []
385 );
386 }
387
388 public function removeGlossaryFromCollection(int $glo_id): void
389 {
390 $this->db->manipulate(
391 "DELETE FROM glossary_collection WHERE " .
392 " id = " . $this->db->quote($this->getId(), "integer") .
393 " AND glo_id = " . $this->db->quote($glo_id, "integer")
394 );
395 }
396
397 public function getTermList(
398 string $searchterm = "",
399 string $a_letter = "",
400 string $a_def = "",
401 int $a_tax_node = 0,
402 bool $a_include_offline_childs = false,
403 bool $a_add_amet_fields = false,
404 ?array $a_amet_filter = null,
405 bool $a_omit_virtual = false,
406 bool $a_include_references = false
407 ): array {
408 if ($a_omit_virtual) {
409 $glo_ref_ids[] = $this->getRefId();
410 } else {
411 $glo_ref_ids = $this->getAllGlossaryIds($a_include_offline_childs, true);
412 }
414 $glo_ref_ids,
415 $searchterm,
416 $a_letter,
417 $a_def,
418 $a_tax_node,
419 $a_add_amet_fields,
420 $a_amet_filter,
421 $a_include_references
422 );
423 return $list;
424 }
425
426 public function getFirstLetters(
427 int $a_tax_node = 0
428 ): array {
429 $glo_ids = $this->getAllGlossaryIds();
430 $first_letters = ilGlossaryTerm::getFirstLetters($glo_ids, $a_tax_node);
431 return $first_letters;
432 }
433
438 public function getAllGlossaryIds(
439 bool $a_include_offline_childs = false,
440 bool $ids_are_ref_ids = false
441 ): array {
442 global $DIC;
443
444 $tree = $DIC->repositoryTree();
445
446 if ($this->isVirtual()) {
447 $glo_ids = array();
448
449 $virtual_mode = $this->getRefId() ? $this->getVirtualMode() : '';
450 if ($virtual_mode === "coll") {
451 $glo_ids = $this->getGlossariesForCollection();
452 if ($ids_are_ref_ids) {
453 $glo_ref_ids = [];
454 foreach ($glo_ids as $obj_id) {
455 $glo_ref_ids[] = current(ilObject::_getAllReferences($obj_id));
456 }
457 $glo_ids = $glo_ref_ids;
458 }
459 }
460 if (!$a_include_offline_childs) {
461 $glo_ids = $this->removeOfflineGlossaries($glo_ids, $ids_are_ref_ids);
462 }
463 // always show entries of current glossary (if no permission is given, user will not come to the presentation screen)
464 // see bug #14477
465 if ($ids_are_ref_ids) {
466 if (!in_array($this->getRefId(), $glo_ids)) {
467 $glo_ids[] = $this->getRefId();
468 }
469 } elseif (!in_array($this->getId(), $glo_ids)) {
470 $glo_ids[] = $this->getId();
471 }
472 } elseif ($ids_are_ref_ids) {
473 $glo_ids = [$this->getRefId()];
474 } else {
475 $glo_ids = [$this->getId()];
476 }
477
478 return $glo_ids;
479 }
480
481 public function createExportDirectory(string $a_type = "xml"): string
482 {
483 return ilExport::_createExportDirectory($this->getId(), $a_type, $this->getType());
484 }
485
486 public function getExportDirectory(string $a_type = "xml"): string
487 {
488 return ilExport::_getExportDirectory($this->getId(), $a_type, $this->getType());
489 }
490
491 public function delete(): bool
492 {
493 // always call parent delete function first!!
494 if (!parent::delete()) {
495 return false;
496 }
497
498 // delete terms
499 if (!$this->isVirtual()) {
500 $terms = $this->getTermList();
501 foreach ($terms as $term) {
502 $this->term_manager->deleteTerm((int) $term["id"]);
503 }
504 }
505
506 // delete term references
507 $refs = new ilGlossaryTermReferences($this->getId());
508 $refs->delete();
509
510 // delete glossary data entry
511 $q = "DELETE FROM glossary WHERE id = " . $this->db->quote($this->getId());
512 $this->db->query($q);
513
514 // delete meta data
515 $this->deleteMetaData();
516
517 return true;
518 }
519
520 public static function getDeletionDependencies(int $obj_id): array
521 {
522 global $DIC;
523
524 $lng = $DIC->language();
525
526 $dep = array();
528 foreach ($sms as $sm) {
529 $lng->loadLanguageModule("content");
530 $dep[$sm] = $lng->txt("glo_used_in_scorm");
531 }
532 return $dep;
533 }
534
535 public function getTaxonomyId(): int
536 {
537 $tax_ids = ilObjTaxonomy::getUsageOfObject($this->getId());
538 if (count($tax_ids) > 0) {
539 // glossaries handle max. one taxonomy
540 return (int) $tax_ids[0];
541 }
542 return 0;
543 }
544
545
546 public function cloneObject(int $target_id, int $copy_id = 0, bool $omit_tree = false): ?ilObject
547 {
548 $new_obj = parent::cloneObject($target_id, $copy_id, $omit_tree);
549 $this->cloneMetaData($new_obj);
550
551 $tax_ass = null;
552 $new_tax_ass = null;
553 $map = [];
554
555 //copy online status if object is not the root copy object
556 $cp_options = ilCopyWizardOptions::_getInstance($copy_id);
557
558 if (!$cp_options->isRootNode($this->getRefId())) {
559 $new_obj->setOnline($this->getOnline());
560 }
561
562 // $new_obj->setTitle($this->getTitle());
563 $new_obj->setDescription($this->getDescription());
564 $new_obj->setVirtualMode($this->getVirtualMode());
565 $new_obj->setPresentationMode($this->getPresentationMode());
566 $new_obj->setSnippetLength($this->getSnippetLength());
567 $new_obj->setAutoGlossaries($this->getAutoGlossaries());
568 $new_obj->setActiveFlashcards($this->isActiveFlashcards());
569 $new_obj->setFlashcardsMode($this->getFlashcardsMode());
570 $new_obj->update();
571
572 // set/copy stylesheet
573 $this->content_style_domain->styleForRefId($this->getRefId())->cloneTo($new_obj->getId());
574
575 // copy taxonomy
576 if (($tax_id = $this->getTaxonomyId()) > 0) {
577 // clone it
578 $tax = new ilObjTaxonomy($tax_id);
579 $new_tax = $tax->cloneObject(0, 0, true);
580 $map = $tax->getNodeMapping();
581
582 // assign new taxonomy to new glossary
583 ilObjTaxonomy::saveUsage($new_tax->getId(), $new_obj->getId());
584
585 $tax_ass = new ilTaxNodeAssignment("glo", $this->getId(), "term", $tax_id);
586 $new_tax_ass = new ilTaxNodeAssignment("glo", $new_obj->getId(), "term", $new_tax->getId());
587 }
588
589 // copy terms
590 $term_mappings = array();
591 foreach (ilGlossaryTerm::getTermList([$this->getRefId()]) as $term) {
592 $new_term_id = ilGlossaryTerm::_copyTerm($term["id"], $new_obj->getId());
593 $term_mappings[$term["id"]] = $new_term_id;
594
595 // copy tax node assignments
596 if ($tax_id > 0) {
597 $assignmts = $tax_ass->getAssignmentsOfItem($term["id"]);
598 foreach ($assignmts as $a) {
599 if ($map[$a["node_id"]] > 0) {
600 $new_tax_ass->addAssignment($map[$a["node_id"]], $new_term_id);
601 }
602 }
603 }
604 }
605
606 // add mapping of term_ids to copy wizard options
607 if (!empty($term_mappings)) {
608 $cp_options->appendMapping($this->getRefId() . '_glo_terms', $term_mappings);
609 }
610
611 // copy collection glossaries
612 foreach ($this->getGlossariesForCollection() as $glo_id) {
613 $new_obj->addGlossaryForCollection($glo_id);
614 }
615
616 return $new_obj;
617 }
618
622 public function removeOfflineGlossaries(
623 array $a_glo_ids,
624 bool $ids_are_ref_ids = false
625 ): array {
626 $glo_ids = $a_glo_ids;
627 if ($ids_are_ref_ids) {
628 $glo_ids = array_map(static function ($id): int {
630 }, $a_glo_ids);
631 }
632
633 $set = $this->db->query(
634 "SELECT id FROM glossary " .
635 " WHERE " . $this->db->in("id", $glo_ids, false, "integer") .
636 " AND is_online = " . $this->db->quote("y", "text")
637 );
638 $online_glo_ids = array();
639 while ($rec = $this->db->fetchAssoc($set)) {
640 $online_glo_ids[] = $rec["id"];
641 }
642
643 if (!$ids_are_ref_ids) {
644 return $online_glo_ids;
645 }
646
647 $online_ref_ids = array_filter($a_glo_ids, static function ($ref_id) use ($online_glo_ids): bool {
648 return in_array(ilObject::_lookupObjectId($ref_id), $online_glo_ids);
649 });
650
651
652 return $online_ref_ids;
653 }
654
655 public static function getAdvMDSubItemTitle(int $a_obj_id, string $a_sub_type, int $a_sub_id): string
656 {
657 global $DIC;
658
659 $lng = $DIC->language();
660
661 if ($a_sub_type == "term") {
662 $lng->loadLanguageModule("glo");
663
664 return $lng->txt("glo_term") . ' "' . ilGlossaryTerm::_lookGlossaryTerm($a_sub_id) . '"';
665 }
666 return "";
667 }
668
672 public function autoLinkGlossaryTerms(
673 int $a_glo_ref_id
674 ): void {
675 // get terms of target glossary
676 $terms = ilGlossaryTerm::getTermList([$a_glo_ref_id]);
677
678 // for each get page: get content
679 $source_terms = ilGlossaryTerm::getTermList([$this->getRefId()]);
680 $found_pages = array();
681 foreach ($source_terms as $source_term) {
682 $pg = new ilGlossaryDefPage($source_term["id"]);
683 $c = $pg->getXMLContent();
684 foreach ($terms as $t) {
685 if (is_int(stripos($c, $t["term"]))) {
686 $found_pages[$source_term["id"]]["terms"][] = $t;
687 if (!isset($found_pages[$source_term["id"]]["page"])) {
688 $found_pages[$source_term["id"]]["page"] = $pg;
689 }
690 }
691 }
692 reset($terms);
693 }
694
695 // ilPCParagraph autoLinkGlossariesPage with page and terms
696 foreach ($found_pages as $id => $fp) {
697 ilPCParagraph::autoLinkGlossariesPage($fp["page"], $fp["terms"]);
698 }
699 }
700
704 public function supportsLongTextQuery(): bool
705 {
706 return true;
707 }
708}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static _getInstance(int $a_copy_id)
static _createExportDirectory(int $a_obj_id, string $a_export_type="xml", string $a_obj_type="")
static _getExportDirectory(int $a_obj_id, string $a_type="xml", string $a_obj_type="", string $a_entity="")
@depricated Get export directory for an repository object
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookGlossaryTerm(int $term_id)
get glossary term
static getTermList(array $a_glo_ref_id, string $searchterm="", string $a_first_letter="", string $a_def="", int $a_tax_node=0, bool $a_add_amet_fields=false, ?array $a_amet_filter=null, bool $a_include_references=false)
Get all terms for given set of glossary ids.
static getFirstLetters(array $a_glo_id, int $a_tax_node=0)
static _copyTerm(int $a_term_id, int $a_glossary_id)
Copy a term to a glossary.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setSnippetLength(int $a_val)
Set definition snippet length (in overview)
static getAdvMDSubItemTitle(int $a_obj_id, string $a_sub_type, int $a_sub_id)
static lookupAutoGlossaries(int $a_id)
ILIAS Style Content DomainService $content_style_domain
static lookupSnippetLength(int $a_id)
removeAutoGlossary(int $a_glo_id)
ilGlossaryDefPage $page_object
getAllGlossaryIds(bool $a_include_offline_childs=false, bool $ids_are_ref_ids=false)
Get all glossary ids.
supportsLongTextQuery()
Is long text search supported.
setActiveGlossaryMenu(bool $a_act_glo_menu)
addGlossaryForCollection(int $glo_id)
setVirtualMode(string $a_mode)
getFirstLetters(int $a_tax_node=0)
setShowTaxonomy(bool $a_val)
ilGlobalTemplateInterface $tpl
ILIAS Glossary Term TermManager $term_manager
setPresentationMode(string $a_val)
removeOfflineGlossaries(array $a_glo_ids, bool $ids_are_ref_ids=false)
Remove offline glossaries from obj id array.
__construct(int $a_id=0, bool $a_call_by_reference=true)
cloneObject(int $target_id, int $copy_id=0, bool $omit_tree=false)
static getDeletionDependencies(int $obj_id)
Get deletion dependencies.
createExportDirectory(string $a_type="xml")
getTermList(string $searchterm="", string $a_letter="", string $a_def="", int $a_tax_node=0, bool $a_include_offline_childs=false, bool $a_add_amet_fields=false, ?array $a_amet_filter=null, bool $a_omit_virtual=false, bool $a_include_references=false)
setAutoGlossaries(array $a_val)
addAutoGlossary(int $glo_id)
static _lookupOnline(int $a_id)
removeGlossaryFromCollection(int $glo_id)
create(bool $a_upload=false)
setFlashcardsMode(string $a_flash)
autoLinkGlossaryTerms(int $a_glo_ref_id)
Auto link glossary terms.
setActiveFlashcards(bool $a_flash)
setOnline(bool $a_online)
static lookup(int $a_id, string $a_property)
Lookup glossary property.
getExportDirectory(string $a_type="xml")
static getScormModulesForGlossary(int $a_glo_id)
Get SCORM modules that assign a certain glossary.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getUsageOfObject(int $a_obj_id, bool $a_include_titles=false)
static saveUsage(int $a_tax_id, int $a_obj_id)
User class.
Class ilObject Basic functions for all objects.
static _lookupObjectId(int $ref_id)
static _lookupType(int $id, bool $reference=false)
static _getAllReferences(int $id)
get all reference ids for object ID
ilDBInterface $db
static autoLinkGlossariesPage(ilPageObject $a_page, array $a_terms)
Auto link glossary of whole page.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static tf2yn(bool $a_tf)
static yn2tf(string $a_yn)
$c
Definition: deliver.php:25
Interface for repository objects to use adv md with subitems.
quote($value, string $type)
query(string $query)
Run a (read-only) Query on the database.
fetchAssoc(ilDBStatement $statement)
$ref_id
Definition: ltiauth.php:66
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
global $lng
Definition: privfeed.php:31
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26
$q
Definition: shib_logout.php:23
$lm_set