ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
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.

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

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:22
+ 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.

References assFormulaQuestionUnit\getId().

Referenced by loadUnits().

310  : void
311  {
312  $this->units[$unit->getId()] = $unit;
313  }
+ 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.

References $res, checkDeleteUnit(), and null.

Referenced by deleteCategory().

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  }
$res
Definition: ltiservices.php:66
checkDeleteUnit(int $id, ?int $category_id=null)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ 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.

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

Referenced by checkDeleteCategory(), and deleteUnit().

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  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ 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.

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

305  : void
306  {
307  $this->units = [];
308  }
+ 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.

References $res, and copyCategory().

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  }
$res
Definition: ltiservices.php:66
copyCategory(int $category_id, int $question_fi, ?string $category_name=null)
+ 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.

References $res, and null.

Referenced by cloneUnits().

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  }
$res
Definition: ltiservices.php:66
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ 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.

References $res.

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  }
$res
Definition: ltiservices.php:66

◆ createNewUnit()

ilUnitConfigurationRepository::createNewUnit ( assFormulaQuestionUnit  $unit)

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

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

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  }
+ Here is the call graph for this function:

◆ deleteCategory()

ilUnitConfigurationRepository::deleteCategory ( int  $id)

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

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

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  }
$res
Definition: ltiservices.php:66
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ Here is the call graph for this function:

◆ deleteUnit()

ilUnitConfigurationRepository::deleteUnit ( int  $id)

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

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

Referenced by deleteCategory().

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  }
$res
Definition: ltiservices.php:66
checkDeleteUnit(int $id, ?int $category_id=null)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ 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.

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

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  }
+ Here is the call graph for this function:

◆ getAllUnitCategories()

ilUnitConfigurationRepository::getAllUnitCategories ( )
Returns
assFormulaQuestionUnitCategory[]

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

References getConsumerId().

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  }
+ Here is the call graph for this function:

◆ getCategorizedUnits()

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

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

References $categorizedUnits, and getConsumerId().

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()) {
287  $cat = new assFormulaQuestionUnitCategory();
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  }
+ 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  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

◆ getConsumerId()

ilUnitConfigurationRepository::getConsumerId ( )

◆ getUnit()

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

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

References $id, loadUnits(), and null.

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  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
+ 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.

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

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  }
+ Here is the call graph for this function:

◆ getUnitCategoryById()

ilUnitConfigurationRepository::getUnitCategoryById ( int  $id)

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

References $res.

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  }
$res
Definition: ltiservices.php:66
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

◆ getUnits()

ilUnitConfigurationRepository::getUnits ( )
Returns
assFormulaQuestionUnit[]

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

References $units, and loadUnits().

318  : array
319  {
320  if (count($this->units) === 0) {
321  $this->loadUnits();
322  }
323  return $this->units;
324  }
+ Here is the call graph for this function:

◆ isCRUDAllowed()

ilUnitConfigurationRepository::isCRUDAllowed ( int  $category_id)

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

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

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  }
$res
Definition: ltiservices.php:66
+ 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  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23

◆ loadUnits()

ilUnitConfigurationRepository::loadUnits ( )
protected

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

References addUnit().

Referenced by getUnit(), and getUnits().

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  }
+ 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.

References $DIC, $ilDB, and $units.

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  }
global $DIC
Definition: shib_login.php:22

◆ saveCategory()

ilUnitConfigurationRepository::saveCategory ( assFormulaQuestionUnitCategory  $category)

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

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

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  }
$res
Definition: ltiservices.php:66
+ Here is the call graph for this function:

◆ saveNewUnitCategory()

ilUnitConfigurationRepository::saveNewUnitCategory ( assFormulaQuestionUnitCategory  $category)

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

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

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  }
$res
Definition: ltiservices.php:66
+ Here is the call graph for this function:

◆ saveUnit()

ilUnitConfigurationRepository::saveUnit ( assFormulaQuestionUnit  $unit)

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

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

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  }
$res
Definition: ltiservices.php:66
+ 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.

References getConsumerId().

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  }
+ Here is the call graph for this function:

◆ setConsumerId()

ilUnitConfigurationRepository::setConsumerId ( int  $consumer_id)

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

References $consumer_id.

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

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

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

Referenced by getUnits(), and loadUnitsForCategory().


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