ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ilUnitConfigurationRepository Class Reference

Class ilUnitConfigurationRepository. More...

+ Collaboration diagram for ilUnitConfigurationRepository:

Public Member Functions

 __construct (?int $consumer_id=null)
 
 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 = null
 
ilLanguage $lng
 
ilDBInterface $db
 

Private Attributes

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

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilUnitConfigurationRepository::__construct ( ?int  $consumer_id = null)

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 315 of file class.ilUnitConfigurationRepository.php.

315 : void
316 {
317 $this->units[$unit->getId()] = $unit;
318 }

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)
foreach($_POST as $key=> $value) $res

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 458 of file class.ilUnitConfigurationRepository.php.

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

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 310 of file class.ilUnitConfigurationRepository.php.

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

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 661 of file class.ilUnitConfigurationRepository.php.

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

606 : void
607 {
608 $next_id = $this->db->nextId('il_qpl_qst_fq_unit');
609 $this->db->manipulateF(
610 '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)',
611 ['integer', 'text', 'float', 'integer', 'integer', 'integer', 'integer'],
612 [
613 $next_id,
614 $unit->getUnit(),
615 1,
616 0,
617 $unit->getCategory(),
618 0,
619 $this->getConsumerId()
620 ]
621 );
622 $unit->setId($next_id);
623 $unit->setFactor(1.0);
624 $unit->setBaseUnit(0);
625 $unit->setSequence(0);
626
627 $this->clearUnits();
628 }

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 577 of file class.ilUnitConfigurationRepository.php.

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

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 419 of file class.ilUnitConfigurationRepository.php.

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

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

+ Here is the call graph for this function:

◆ getAllUnitCategories()

ilUnitConfigurationRepository::getAllUnitCategories ( )
Returns
assFormulaQuestionUnitCategory[]

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

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

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

References $categorizedUnits, and $consumer_id.

◆ 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(), 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 367 of file class.ilUnitConfigurationRepository.php.

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

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 387 of file class.ilUnitConfigurationRepository.php.

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

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

+ Here is the call graph for this function:

◆ getUnitCategoryById()

ilUnitConfigurationRepository::getUnitCategoryById ( int  $id)

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

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

References $id, and $res.

◆ getUnits()

ilUnitConfigurationRepository::getUnits ( )
Returns
assFormulaQuestionUnit[]

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

323 : array
324 {
325 if (count($this->units) === 0) {
326 $this->loadUnits();
327 }
328 return $this->units;
329 }

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 335 of file class.ilUnitConfigurationRepository.php.

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

References $DIC, $ilDB, and $units.

◆ saveCategory()

ilUnitConfigurationRepository::saveCategory ( assFormulaQuestionUnitCategory  $category)

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

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

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

+ Here is the call graph for this function:

◆ saveNewUnitCategory()

ilUnitConfigurationRepository::saveNewUnitCategory ( assFormulaQuestionUnitCategory  $category)

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

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

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

+ Here is the call graph for this function:

◆ saveUnit()

ilUnitConfigurationRepository::saveUnit ( assFormulaQuestionUnit  $unit)

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

630 : void
631 {
632 $res = $this->db->queryF(
633 'SELECT unit_id FROM il_qpl_qst_fq_unit WHERE unit_id = %s',
634 ['integer'],
635 [$unit->getId()]
636 );
637 if ($this->db->numRows($res)) {
638 $row = $this->db->fetchAssoc($res);
639
640 if ($unit->getBaseUnit() === 0 || $unit->getBaseUnit() === $unit->getId()) {
641 $unit->setFactor(1);
642 }
643
644 $ar = $this->db->manipulateF(
645 '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',
646 ['text', 'float', 'integer', 'integer', 'integer', 'integer', 'integer'],
647 [
648 $unit->getUnit(), $unit->getFactor(), (int) $unit->getBaseUnit(),
649 $unit->getCategory(),
650 $unit->getSequence(),
651 $unit->getId(),
652 $this->getConsumerId()
653 ]
654 );
655 if ($ar > 0) {
656 $this->clearUnits();
657 }
658 }
659 }

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 449 of file class.ilUnitConfigurationRepository.php.

449 : void
450 {
451 $this->db->manipulateF(
452 'UPDATE il_qpl_qst_fq_unit SET sequence = %s WHERE unit_id = %s AND question_fi = %s',
453 ['integer', 'integer', 'integer'],
454 [$sequence, $unit_id, $this->getConsumerId()]
455 );
456 }

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 = null
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: