ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilUnitConfigurationRepository Class Reference

Class ilUnitConfigurationRepository. More...

+ Collaboration diagram for ilUnitConfigurationRepository:

Public Member Functions

 __construct (int $consumer_id)
 
 setConsumerId (int $consumer_id)
 
 getConsumerId ()
 
 isCRUDAllowed (int $category_id)
 
 copyCategory (int $category_id, int $question_fi, ?string $category_name=null)
 
 copyUnitsByCategories (int $from_category_id, int $to_category_id, int $qustion_fi)
 
 getCategoryUnitCount (int $id)
 
 isUnitInUse (int $id)
 
 checkDeleteCategory (int $id)
 
 deleteUnit (int $id)
 
 getCategorizedUnits ()
 
 getUnits ()
 
 loadUnitsForCategory (int $category)
 
 getUnit (int $id)
 
 getUnitCategories ()
 
 getAdminUnitCategories ()
 
 saveUnitOrder (int $unit_id, int $sequence)
 
 checkDeleteUnit (int $id, ?int $category_id=null)
 
 getUnitCategoryById (int $id)
 
 saveCategory (assFormulaQuestionUnitCategory $category)
 
 saveNewUnitCategory (assFormulaQuestionUnitCategory $category)
 
 getAllUnitCategories ()
 
 deleteCategory (int $id)
 
 createNewUnit (assFormulaQuestionUnit $unit)
 
 saveUnit (assFormulaQuestionUnit $unit)
 
 cloneUnits (int $from_consumer_id, int $to_consumer_id)
 

Protected Member Functions

 loadUnits ()
 
 clearUnits ()
 
 addUnit (assFormulaQuestionUnit $unit)
 

Protected Attributes

int $consumer_id = 0
 
ilLanguage $lng
 
ilDBInterface $db
 

Private Attributes

array $units = []
 
array $categorizedUnits = []
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilUnitConfigurationRepository::__construct ( int  $consumer_id)

Definition at line 34 of file class.ilUnitConfigurationRepository.php.

35 {
36 global $DIC;
37
38 $lng = $DIC->language();
39
40 $this->db = $DIC->database();
41 $this->consumer_id = $consumer_id;
42 $this->lng = $lng;
43 }
global $DIC
Definition: shib_login.php:26

References $consumer_id, $DIC, $lng, and ILIAS\Repository\lng().

+ Here is the call graph for this function:

Member Function Documentation

◆ addUnit()

ilUnitConfigurationRepository::addUnit ( assFormulaQuestionUnit  $unit)
protected

Definition at line 310 of file class.ilUnitConfigurationRepository.php.

310 : void
311 {
312 $this->units[$unit->getId()] = $unit;
313 }

References assFormulaQuestionUnit\getId().

Referenced by loadUnits().

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

◆ checkDeleteCategory()

ilUnitConfigurationRepository::checkDeleteCategory ( int  $id)

Definition at line 202 of file class.ilUnitConfigurationRepository.php.

202 : ?string
203 {
204 $res = $this->db->queryF(
205 'SELECT unit_id FROM il_qpl_qst_fq_unit WHERE category_fi = %s',
206 ['integer'],
207 [$id]
208 );
209
210 if ($this->db->numRows($res)) {
211 while ($row = $this->db->fetchAssoc($res)) {
212 $unit_res = $this->checkDeleteUnit((int) $row['unit_id'], $id);
213 if (!is_null($unit_res)) {
214 return $unit_res;
215 }
216 }
217 }
218
219 return null;
220 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
checkDeleteUnit(int $id, ?int $category_id=null)
$res
Definition: ltiservices.php:69

References $id, $res, and checkDeleteUnit().

Referenced by deleteCategory().

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

◆ checkDeleteUnit()

ilUnitConfigurationRepository::checkDeleteUnit ( int  $id,
?int  $category_id = null 
)

Definition at line 453 of file class.ilUnitConfigurationRepository.php.

453 : ?string
454 {
455 $result = $this->db->queryF(
456 "SELECT * FROM il_qpl_qst_fq_var WHERE unit_fi = %s",
457 ['integer'],
458 [$id]
459 );
460 if ($this->db->numRows($result) > 0) {
461 return $this->lng->txt("err_unit_in_variables");
462 }
463
464 $result = $this->db->queryF(
465 "SELECT * FROM il_qpl_qst_fq_res WHERE unit_fi = %s",
466 ['integer'],
467 [$id]
468 );
469 if ($this->db->numRows($result) > 0) {
470 return $this->lng->txt("err_unit_in_results");
471 }
472
473 if (!is_null($category_id)) {
474 $result = $this->db->queryF(
475 "SELECT * FROM il_qpl_qst_fq_unit WHERE baseunit_fi = %s AND category_fi != %s",
476 ['integer', 'integer', 'integer'],
477 [$id, $id, $category_id]
478 );
479 } else {
480 $result = $this->db->queryF(
481 "SELECT * FROM il_qpl_qst_fq_unit WHERE baseunit_fi = %s AND unit_id != %s",
482 ['integer', 'integer'],
483 [$id, $id]
484 );
485 }
486
487 if ($this->db->numRows($result) > 0) {
488 return $this->lng->txt("err_unit_is_baseunit");
489 }
490
491 return null;
492 }

References $id, and ILIAS\Repository\lng().

Referenced by checkDeleteCategory(), and deleteUnit().

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

◆ clearUnits()

ilUnitConfigurationRepository::clearUnits ( )
protected

Definition at line 305 of file class.ilUnitConfigurationRepository.php.

305 : void
306 {
307 $this->units = [];
308 }

Referenced by createNewUnit(), deleteCategory(), deleteUnit(), and saveUnit().

+ Here is the caller graph for this function:

◆ cloneUnits()

ilUnitConfigurationRepository::cloneUnits ( int  $from_consumer_id,
int  $to_consumer_id 
)

Definition at line 656 of file class.ilUnitConfigurationRepository.php.

656 : void
657 {
658 $category_mapping = [];
659
660 $res = $this->db->queryF("SELECT * FROM il_qpl_qst_fq_ucat WHERE question_fi = %s", ['integer'], [$from_consumer_id]);
661 while ($row = $this->db->fetchAssoc($res)) {
662 $new_category_id = $this->copyCategory((int) $row['category_id'], $to_consumer_id);
663 $category_mapping[$row['category_id']] = $new_category_id;
664 }
665
666 foreach ($category_mapping as $old_category_id => $new_category_id) {
667 $res = $this->db->queryF(
668 'SELECT * FROM il_qpl_qst_fq_unit WHERE category_fi = %s',
669 ['integer'],
670 [$old_category_id]
671 );
672
673 $i = 0;
674 $units = [];
675 while ($row = $this->db->fetchAssoc($res)) {
676 $next_id = $this->db->nextId('il_qpl_qst_fq_unit');
677
678 $units[$i]['old_unit_id'] = $row['unit_id'];
679 $units[$i]['new_unit_id'] = $next_id;
680
681 $this->db->insert(
682 'il_qpl_qst_fq_unit',
683 [
684 'unit_id' => ['integer', $next_id],
685 'unit' => ['text', $row['unit']],
686 'factor' => ['float', $row['factor']],
687 'baseunit_fi' => ['integer', (int) $row['baseunit_fi']],
688 'category_fi' => ['integer', (int) $new_category_id],
689 'sequence' => ['integer', (int) $row['sequence']],
690 'question_fi' => ['integer', $to_consumer_id]
691 ]
692 );
693 $i++;
694 }
695
696 foreach ($units as $unit) {
697 //update unit : baseunit_fi
698 $this->db->update(
699 'il_qpl_qst_fq_unit',
700 ['baseunit_fi' => ['integer', (int) $unit['new_unit_id']]],
701 [
702 'baseunit_fi' => ['integer', (int) $unit['old_unit_id']],
703 'question_fi' => ['integer', $to_consumer_id]
704 ]
705 );
706
707 //update var : unit_fi
708 $this->db->update(
709 'il_qpl_qst_fq_var',
710 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
711 [
712 'unit_fi' => ['integer', (int) $unit['old_unit_id']],
713 'question_fi' => ['integer', $to_consumer_id]
714 ]
715 );
716
717 //update res : unit_fi
718 $this->db->update(
719 'il_qpl_qst_fq_res',
720 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
721 [
722 'unit_fi' => ['integer', (int) $unit['old_unit_id']],
723 'question_fi' => ['integer', $to_consumer_id]
724 ]
725 );
726
727 //update res_unit : unit_fi
728 $this->db->update(
729 'il_qpl_qst_fq_res_unit',
730 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
731 [
732 'unit_fi' => ['integer', (int) $unit['old_unit_id']],
733 'question_fi' => ['integer', $to_consumer_id]
734 ]
735 );
736 }
737 }
738 }
copyCategory(int $category_id, int $question_fi, ?string $category_name=null)

References $res, $units, and copyCategory().

+ Here is the call graph for this function:

◆ copyCategory()

ilUnitConfigurationRepository::copyCategory ( int  $category_id,
int  $question_fi,
?string  $category_name = null 
)

Definition at line 66 of file class.ilUnitConfigurationRepository.php.

66 : int
67 {
68 $res = $this->db->queryF(
69 'SELECT category FROM il_qpl_qst_fq_ucat WHERE category_id = %s',
70 ['integer'],
71 [$category_id]
72 );
73 $row = $this->db->fetchAssoc($res);
74
75 if (null === $category_name) {
76 $category_name = $row['category'];
77 }
78
79 $next_id = $this->db->nextId('il_qpl_qst_fq_ucat');
80 $this->db->insert(
81 'il_qpl_qst_fq_ucat',
82 [
83 'category_id' => ['integer', $next_id],
84 'category' => ['text', $category_name],
85 'question_fi' => ['integer', (int) $question_fi]
86 ]
87 );
88
89 return $next_id;
90 }

References $res.

Referenced by cloneUnits().

+ Here is the caller graph for this function:

◆ copyUnitsByCategories()

ilUnitConfigurationRepository::copyUnitsByCategories ( int  $from_category_id,
int  $to_category_id,
int  $qustion_fi 
)

Definition at line 92 of file class.ilUnitConfigurationRepository.php.

92 : void
93 {
94 $res = $this->db->queryF(
95 'SELECT * FROM il_qpl_qst_fq_unit WHERE category_fi = %s',
96 ['integer'],
97 [$from_category_id]
98 );
99 $i = 0;
100 $units = [];
101 while ($row = $this->db->fetchAssoc($res)) {
102 $next_id = $this->db->nextId('il_qpl_qst_fq_unit');
103
104 $units[$i]['old_unit_id'] = $row['unit_id'];
105 $units[$i]['new_unit_id'] = $next_id;
106
107 $this->db->insert(
108 'il_qpl_qst_fq_unit',
109 [
110 'unit_id' => ['integer', $next_id],
111 'unit' => ['text', $row['unit']],
112 'factor' => ['float', $row['factor']],
113 'baseunit_fi' => ['integer', (int) $row['baseunit_fi']],
114 'category_fi' => ['integer', (int) $to_category_id],
115 'sequence' => ['integer', (int) $row['sequence']],
116 'question_fi' => ['integer', (int) $qustion_fi]
117 ]
118 );
119 $i++;
120 }
121
122 foreach ($units as $unit) {
123 //update unit : baseunit_fi
124 $this->db->update(
125 'il_qpl_qst_fq_unit',
126 ['baseunit_fi' => ['integer', (int) $unit['new_unit_id']]],
127 [
128 'baseunit_fi' => ['integer', $unit['old_unit_id']],
129 'category_fi' => ['integer', $to_category_id]
130 ]
131 );
132
133 //update var : unit_fi
134 $this->db->update(
135 'il_qpl_qst_fq_var',
136 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
137 [
138 'unit_fi' => ['integer', $unit['old_unit_id']],
139 'question_fi' => ['integer', $qustion_fi]
140 ]
141 );
142
143 //update res : unit_fi
144 $this->db->update(
145 'il_qpl_qst_fq_res',
146 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
147 [
148 'unit_fi' => ['integer', $unit['old_unit_id']],
149 'question_fi' => ['integer', $qustion_fi]
150 ]
151 );
152
153 //update res_unit : unit_fi
154 $this->db->update(
155 'il_qpl_qst_fq_res_unit',
156 ['unit_fi' => ['integer', (int) $unit['new_unit_id']]],
157 [
158 'unit_fi' => ['integer', $unit['old_unit_id']],
159 'question_fi' => ['integer', $qustion_fi]
160 ]
161 );
162 }
163 }

References $res, and $units.

◆ createNewUnit()

ilUnitConfigurationRepository::createNewUnit ( assFormulaQuestionUnit  $unit)

Definition at line 601 of file class.ilUnitConfigurationRepository.php.

601 : void
602 {
603 $next_id = $this->db->nextId('il_qpl_qst_fq_unit');
604 $this->db->manipulateF(
605 'INSERT INTO il_qpl_qst_fq_unit (unit_id, unit, factor, baseunit_fi, category_fi, sequence, question_fi) VALUES (%s, %s, %s, %s, %s, %s, %s)',
606 ['integer', 'text', 'float', 'integer', 'integer', 'integer', 'integer'],
607 [
608 $next_id,
609 $unit->getUnit(),
610 1,
611 0,
612 $unit->getCategory(),
613 0,
614 $this->getConsumerId()
615 ]
616 );
617 $unit->setId($next_id);
618 $unit->setFactor(1.0);
619 $unit->setBaseUnit(0);
620 $unit->setSequence(0);
621
622 $this->clearUnits();
623 }

References clearUnits(), assFormulaQuestionUnit\getCategory(), assFormulaQuestionUnit\getUnit(), assFormulaQuestionUnit\setBaseUnit(), assFormulaQuestionUnit\setFactor(), assFormulaQuestionUnit\setId(), and assFormulaQuestionUnit\setSequence().

+ Here is the call graph for this function:

◆ deleteCategory()

ilUnitConfigurationRepository::deleteCategory ( int  $id)

Definition at line 572 of file class.ilUnitConfigurationRepository.php.

572 : ?string
573 {
574 $res = $this->checkDeleteCategory($id);
575 if (!is_null($res)) {
576 return $this->lng->txt('err_category_in_use');
577 }
578
579 $res = $this->db->queryF(
580 'SELECT * FROM il_qpl_qst_fq_unit WHERE category_fi = %s',
581 ['integer'],
582 [$id]
583 );
584 while ($row = $this->db->fetchAssoc($res)) {
585 $this->deleteUnit((int) $row['unit_id']);
586 }
587
588 $ar = $this->db->manipulateF(
589 'DELETE FROM il_qpl_qst_fq_ucat WHERE category_id = %s',
590 ['integer'],
591 [$id]
592 );
593
594 if ($ar > 0) {
595 $this->clearUnits();
596 }
597
598 return null;
599 }

References $id, $res, checkDeleteCategory(), clearUnits(), deleteUnit(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ deleteUnit()

ilUnitConfigurationRepository::deleteUnit ( int  $id)

Definition at line 222 of file class.ilUnitConfigurationRepository.php.

222 : ?string
223 {
224 $res = $this->checkDeleteUnit($id);
225 if (!is_null($res)) {
226 return $res;
227 }
228
229 $affectedRows = $this->db->manipulateF(
230 "DELETE FROM il_qpl_qst_fq_unit WHERE unit_id = %s",
231 ['integer'],
232 [$id]
233 );
234
235 if ($affectedRows > 0) {
236 $this->clearUnits();
237 }
238
239 return null;
240 }

References $id, $res, checkDeleteUnit(), and clearUnits().

Referenced by deleteCategory().

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

◆ getAdminUnitCategories()

ilUnitConfigurationRepository::getAdminUnitCategories ( )
Returns
array<int, array{value: int, text: string, qst_id: int}>

Definition at line 414 of file class.ilUnitConfigurationRepository.php.

414 : array
415 {
416 $categories = [];
417
418 $result = $this->db->queryF(
419 "SELECT * FROM il_qpl_qst_fq_ucat WHERE question_fi = %s ORDER BY category",
420 ['integer'],
421 [0]
422 );
423
424 if ($result = $this->db->numRows($result)) {
425 while ($row = $this->db->fetchAssoc($result)) {
426 $value = strcmp('-qpl_qst_formulaquestion_' . $row['category'] . '-', $this->lng->txt($row['category'])) === 0
427 ? $row['category']
428 : $this->lng->txt($row['category']);
429
430 if (trim($row['category']) !== '') {
431 $cat = [
432 'value' => (int) $row['category_id'],
433 'text' => $value,
434 'qst_id' => (int) $row['question_fi']
435 ];
436 $categories[(int) $row['category_id']] = $cat;
437 }
438 }
439 }
440
441 return $categories;
442 }

References ILIAS\Repository\int(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ getAllUnitCategories()

ilUnitConfigurationRepository::getAllUnitCategories ( )
Returns
assFormulaQuestionUnitCategory[]

Definition at line 553 of file class.ilUnitConfigurationRepository.php.

553 : array
554 {
555 $categories = [];
556 $result = $this->db->queryF(
557 "SELECT * FROM il_qpl_qst_fq_ucat WHERE question_fi = %s OR question_fi = %s ORDER BY category",
558 ['integer', 'integer'],
559 [$this->getConsumerId(), 0]
560 );
561
562 if ($result->numRows() > 0) {
563 while ($row = $this->db->fetchAssoc($result)) {
564 $category = new assFormulaQuestionUnitCategory();
565 $category->initFormArray($row);
566 $categories[] = $category;
567 }
568 }
569 return $categories;
570 }

References getConsumerId().

+ Here is the call graph for this function:

◆ getCategorizedUnits()

ilUnitConfigurationRepository::getCategorizedUnits ( )
Returns
assFormulaQuestionUnit[]|assFormulaQuestionUnitCategory[]

Definition at line 265 of file class.ilUnitConfigurationRepository.php.

265 : array
266 {
267 if (count($this->categorizedUnits) === 0) {
268 $result = $this->db->queryF(
269 "
270 SELECT units.*, il_qpl_qst_fq_ucat.category, il_qpl_qst_fq_ucat.question_fi, baseunits.unit baseunit_title
271 FROM il_qpl_qst_fq_unit units
272 INNER JOIN il_qpl_qst_fq_ucat ON il_qpl_qst_fq_ucat.category_id = units.category_fi
273 LEFT JOIN il_qpl_qst_fq_unit baseunits ON baseunits.unit_id = units.baseunit_fi
274 WHERE units.question_fi = %s
275 ORDER BY il_qpl_qst_fq_ucat.category, units.sequence",
276 ['integer'],
277 [$this->getConsumerId()]
278 );
279
280 if ($this->db->numRows($result) > 0) {
281 $category = 0;
282 while ($row = $this->db->fetchAssoc($result)) {
283 $unit = new assFormulaQuestionUnit();
284 $unit->initFormArray($row);
285
286 if ($category !== $unit->getCategory()) {
288 $cat->initFormArray([
289 'category_id' => (int) $row['category_fi'],
290 'category' => $row['category'],
291 'question_fi' => (int) $row['question_fi'],
292 ]);
293 $this->categorizedUnits[] = $cat;
294 $category = $unit->getCategory();
295 }
296
297 $this->categorizedUnits[] = $unit;
298 }
299 }
300 }
301
303 }

References $categorizedUnits, and getConsumerId().

+ Here is the call graph for this function:

◆ getCategoryUnitCount()

ilUnitConfigurationRepository::getCategoryUnitCount ( int  $id)

Definition at line 165 of file class.ilUnitConfigurationRepository.php.

165 : int
166 {
167 $result = $this->db->queryF(
168 "SELECT * FROM il_qpl_qst_fq_unit WHERE category_fi = %s",
169 ['integer'],
170 [$id]
171 );
172
173 return $this->db->numRows($result);
174 }

References $id.

◆ getConsumerId()

ilUnitConfigurationRepository::getConsumerId ( )

Definition at line 50 of file class.ilUnitConfigurationRepository.php.

50 : int
51 {
52 return $this->consumer_id;
53 }

References $consumer_id.

Referenced by getAllUnitCategories(), getCategorizedUnits(), isCRUDAllowed(), and saveUnitOrder().

+ Here is the caller graph for this function:

◆ getUnit()

ilUnitConfigurationRepository::getUnit ( int  $id)
Parameters
int$id
Returns
assFormulaQuestionUnit|null

Definition at line 362 of file class.ilUnitConfigurationRepository.php.

363 {
364 if (count($this->units) === 0) {
365 $this->loadUnits();
366 }
367
368 if (array_key_exists($id, $this->units)) {
369 return $this->units[$id];
370 }
371
372 // Maybe this is a new unit, reload $this->units
373
374 $this->loadUnits();
375
376 return $this->units[$id] ?? null;
377 }

References $id, and loadUnits().

+ Here is the call graph for this function:

◆ getUnitCategories()

ilUnitConfigurationRepository::getUnitCategories ( )
Returns
array<int, array{value: int, text: string, qst_id: int}>

Definition at line 382 of file class.ilUnitConfigurationRepository.php.

382 : array
383 {
384 $categories = [];
385 $result = $this->db->queryF(
386 "SELECT * FROM il_qpl_qst_fq_ucat WHERE question_fi > %s ORDER BY category",
387 ['integer'],
388 [0]
389 );
390
391 if ($this->db->numRows($result)) {
392 while ($row = $this->db->fetchAssoc($result)) {
393 $value = strcmp('-qpl_qst_formulaquestion_' . $row['category'] . '-', $this->lng->txt($row['category'])) === 0
394 ? $row['category']
395 : $this->lng->txt($row['category']);
396
397 if (trim($row['category']) !== '') {
398 $cat = [
399 'value' => (int) $row['category_id'],
400 'text' => $value,
401 'qst_id' => (int) $row['question_fi']
402 ];
403 $categories[(int) $row['category_id']] = $cat;
404 }
405 }
406 }
407
408 return $categories;
409 }

References ILIAS\Repository\int(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ getUnitCategoryById()

ilUnitConfigurationRepository::getUnitCategoryById ( int  $id)

Definition at line 494 of file class.ilUnitConfigurationRepository.php.

495 {
496 $query = 'SELECT * FROM il_qpl_qst_fq_ucat WHERE category_id = ' . $this->db->quote($id, 'integer');
497 $res = $this->db->query($query);
498 if (!$this->db->numRows($res)) {
499 throw new ilException('un_category_not_exist');
500 }
501
502 $row = $this->db->fetchAssoc($res);
503 $category = new assFormulaQuestionUnitCategory();
504 $category->initFormArray($row);
505 return $category;
506 }
Base class for ILIAS Exception handling.

References $id, and $res.

◆ getUnits()

ilUnitConfigurationRepository::getUnits ( )
Returns
assFormulaQuestionUnit[]

Definition at line 318 of file class.ilUnitConfigurationRepository.php.

318 : array
319 {
320 if (count($this->units) === 0) {
321 $this->loadUnits();
322 }
323 return $this->units;
324 }

References $units, and loadUnits().

+ Here is the call graph for this function:

◆ isCRUDAllowed()

ilUnitConfigurationRepository::isCRUDAllowed ( int  $category_id)

Definition at line 55 of file class.ilUnitConfigurationRepository.php.

55 : bool
56 {
57 $res = $this->db->queryF(
58 'SELECT * FROM il_qpl_qst_fq_ucat WHERE category_id = %s',
59 ['integer'],
60 [$category_id]
61 );
62 $row = $this->db->fetchAssoc($res);
63 return isset($row['question_fi']) && (int) $row['question_fi'] === $this->getConsumerId();
64 }

References $res, getConsumerId(), and ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ isUnitInUse()

ilUnitConfigurationRepository::isUnitInUse ( int  $id)

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

176 : bool
177 {
178 $result_1 = $this->db->queryF(
179 "SELECT unit_fi FROM il_qpl_qst_fq_res_unit WHERE unit_fi = %s",
180 ['integer'],
181 [$id]
182 );
183
184 $result_2 = $this->db->queryF(
185 "SELECT unit_fi FROM il_qpl_qst_fq_var WHERE unit_fi = %s",
186 ['integer'],
187 [$id]
188 );
189 $result_3 = $this->db->queryF(
190 "SELECT unit_fi FROM il_qpl_qst_fq_res WHERE unit_fi = %s",
191 ['integer'],
192 [$id]
193 );
194
195 $cnt_1 = $this->db->numRows($result_1);
196 $cnt_2 = $this->db->numRows($result_2);
197 $cnt_3 = $this->db->numRows($result_3);
198
199 return $cnt_1 > 0 || $cnt_2 > 0 || $cnt_3 > 0;
200 }

References $id.

◆ loadUnits()

ilUnitConfigurationRepository::loadUnits ( )
protected

Definition at line 242 of file class.ilUnitConfigurationRepository.php.

242 : void
243 {
244 $result = $this->db->query(
245 "
246 SELECT units.*, il_qpl_qst_fq_ucat.category, baseunits.unit baseunit_title
247 FROM il_qpl_qst_fq_unit units
248 INNER JOIN il_qpl_qst_fq_ucat ON il_qpl_qst_fq_ucat.category_id = units.category_fi
249 LEFT JOIN il_qpl_qst_fq_unit baseunits ON baseunits.unit_id = units.baseunit_fi
250 ORDER BY il_qpl_qst_fq_ucat.category, units.sequence"
251 );
252
253 if ($this->db->numRows($result)) {
254 while ($row = $this->db->fetchAssoc($result)) {
255 $unit = new assFormulaQuestionUnit();
256 $unit->initFormArray($row);
257 $this->addUnit($unit);
258 }
259 }
260 }

References addUnit().

Referenced by getUnit(), and getUnits().

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

◆ loadUnitsForCategory()

ilUnitConfigurationRepository::loadUnitsForCategory ( int  $category)
Parameters
int$category
Returns
assFormulaQuestionUnit[]

Definition at line 330 of file class.ilUnitConfigurationRepository.php.

330 : array
331 {
332 global $DIC;
333 $ilDB = $DIC['ilDB'];
334
335 $units = [];
336 $result = $ilDB->queryF(
337 "SELECT units.*, baseunits.unit baseunit_title, il_qpl_qst_fq_ucat.category
338 FROM il_qpl_qst_fq_unit units
339 INNER JOIN il_qpl_qst_fq_ucat ON il_qpl_qst_fq_ucat.category_id = units.category_fi
340 LEFT JOIN il_qpl_qst_fq_unit baseunits ON baseunits.unit_id = units.baseunit_fi
341 WHERE il_qpl_qst_fq_ucat.category_id = %s
342 ORDER BY units.sequence",
343 ['integer'],
344 [$category]
345 );
346
347 if ($result->numRows() > 0) {
348 while ($row = $ilDB->fetchAssoc($result)) {
349 $unit = new assFormulaQuestionUnit();
350 $unit->initFormArray($row);
351 $units[] = $unit;
352 }
353 }
354
355 return $units;
356 }

References $DIC, $ilDB, and $units.

◆ saveCategory()

ilUnitConfigurationRepository::saveCategory ( assFormulaQuestionUnitCategory  $category)

Definition at line 508 of file class.ilUnitConfigurationRepository.php.

508 : void
509 {
510 $res = $this->db->queryF(
511 'SELECT * FROM il_qpl_qst_fq_ucat WHERE category = %s AND question_fi = %s AND category_id != %s',
512 ['text', 'integer', 'integer'],
513 [$category->getCategory(), $this->getConsumerId(), $category->getId()]
514 );
515 if ($this->db->numRows($res)) {
516 throw new ilException('err_wrong_categoryname');
517 }
518
519 $this->db->manipulateF(
520 'UPDATE il_qpl_qst_fq_ucat SET category = %s WHERE question_fi = %s AND category_id = %s',
521 ['text', 'integer', 'integer'],
522 [$category->getCategory(), $this->getConsumerId(), $category->getId()]
523 );
524 }

References $res, assFormulaQuestionUnitCategory\getCategory(), and assFormulaQuestionUnitCategory\getId().

+ Here is the call graph for this function:

◆ saveNewUnitCategory()

ilUnitConfigurationRepository::saveNewUnitCategory ( assFormulaQuestionUnitCategory  $category)

Definition at line 526 of file class.ilUnitConfigurationRepository.php.

526 : void
527 {
528 $res = $this->db->queryF(
529 'SELECT category FROM il_qpl_qst_fq_ucat WHERE category = %s AND question_fi = %s',
530 ['text', 'integer'],
531 [$category->getCategory(), $this->getConsumerId()]
532 );
533 if ($this->db->numRows($res)) {
534 throw new ilException('err_wrong_categoryname');
535 }
536
537 $next_id = $this->db->nextId('il_qpl_qst_fq_ucat');
538 $this->db->manipulateF(
539 "INSERT INTO il_qpl_qst_fq_ucat (category_id, category, question_fi) VALUES (%s, %s, %s)",
540 ['integer', 'text', 'integer'],
541 [
542 $next_id,
543 $category->getCategory(),
544 $this->getConsumerId()
545 ]
546 );
547 $category->setId($next_id);
548 }

References $res, assFormulaQuestionUnitCategory\getCategory(), and assFormulaQuestionUnitCategory\setId().

+ Here is the call graph for this function:

◆ saveUnit()

ilUnitConfigurationRepository::saveUnit ( assFormulaQuestionUnit  $unit)

Definition at line 625 of file class.ilUnitConfigurationRepository.php.

625 : void
626 {
627 $res = $this->db->queryF(
628 'SELECT unit_id FROM il_qpl_qst_fq_unit WHERE unit_id = %s',
629 ['integer'],
630 [$unit->getId()]
631 );
632 if ($this->db->numRows($res)) {
633 $row = $this->db->fetchAssoc($res);
634
635 if ($unit->getBaseUnit() === 0 || $unit->getBaseUnit() === $unit->getId()) {
636 $unit->setFactor(1);
637 }
638
639 $ar = $this->db->manipulateF(
640 'UPDATE il_qpl_qst_fq_unit SET unit = %s, factor = %s, baseunit_fi = %s, category_fi = %s, sequence = %s WHERE unit_id = %s AND question_fi = %s',
641 ['text', 'float', 'integer', 'integer', 'integer', 'integer', 'integer'],
642 [
643 $unit->getUnit(), $unit->getFactor(), (int) $unit->getBaseUnit(),
644 $unit->getCategory(),
645 $unit->getSequence(),
646 $unit->getId(),
647 $this->getConsumerId()
648 ]
649 );
650 if ($ar > 0) {
651 $this->clearUnits();
652 }
653 }
654 }

References $res, clearUnits(), assFormulaQuestionUnit\getBaseUnit(), assFormulaQuestionUnit\getCategory(), assFormulaQuestionUnit\getFactor(), assFormulaQuestionUnit\getId(), assFormulaQuestionUnit\getSequence(), assFormulaQuestionUnit\getUnit(), and assFormulaQuestionUnit\setFactor().

+ Here is the call graph for this function:

◆ saveUnitOrder()

ilUnitConfigurationRepository::saveUnitOrder ( int  $unit_id,
int  $sequence 
)

Definition at line 444 of file class.ilUnitConfigurationRepository.php.

444 : void
445 {
446 $this->db->manipulateF(
447 'UPDATE il_qpl_qst_fq_unit SET sequence = %s WHERE unit_id = %s AND question_fi = %s',
448 ['integer', 'integer', 'integer'],
449 [$sequence, $unit_id, $this->getConsumerId()]
450 );
451 }

References getConsumerId().

+ Here is the call graph for this function:

◆ setConsumerId()

ilUnitConfigurationRepository::setConsumerId ( int  $consumer_id)

Definition at line 45 of file class.ilUnitConfigurationRepository.php.

45 : void
46 {
47 $this->consumer_id = $consumer_id;
48 }

References $consumer_id.

Field Documentation

◆ $categorizedUnits

array ilUnitConfigurationRepository::$categorizedUnits = []
private

Definition at line 32 of file class.ilUnitConfigurationRepository.php.

Referenced by getCategorizedUnits().

◆ $consumer_id

int ilUnitConfigurationRepository::$consumer_id = 0
protected

◆ $db

ilDBInterface ilUnitConfigurationRepository::$db
protected

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

◆ $lng

ilLanguage ilUnitConfigurationRepository::$lng
protected

Definition at line 27 of file class.ilUnitConfigurationRepository.php.

Referenced by __construct().

◆ $units

array ilUnitConfigurationRepository::$units = []
private

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