Skip to content

Commit 9e8cc73

Browse files
committed
fix(dropdownfield): root and limit miscomputations
Signed-off-by: Thierry Bugier <[email protected]>
1 parent c4d4792 commit 9e8cc73

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

inc/fields/dropdownfield.class.php

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -224,20 +224,25 @@ public function displayField($canEdit = true) {
224224
}
225225
}
226226

227-
// Apply max depth if defined (CommonTreeDropdown)
228-
if (isset($decodedValues['show_ticket_categories_depth'])
229-
&& $decodedValues['show_ticket_categories_depth'] > 0) {
230-
$dparams_cond_crit['level'] = ['<=', $decodedValues['show_ticket_categories_depth']];
231-
}
232-
233227
// Set specific root if defined (CommonTreeDropdown)
228+
$baseLevel = 0;
234229
if (isset($decodedValues['show_ticket_categories_root'])
235230
&& (int) $decodedValues['show_ticket_categories_root'] > 0) {
236231
$sons = (new DBUtils)->getSonsOf(
237-
ItilCategory::getTable(),
232+
$itemtype::getTable(),
238233
$decodedValues['show_ticket_categories_root']
239234
);
240235
$dparams_cond_crit['id'] = $sons;
236+
$rootItem = new $itemtype();
237+
if ($rootItem->getFromDB($decodedValues['show_ticket_categories_root'])) {
238+
$baseLevel = $rootItem->fields['level'];
239+
}
240+
}
241+
242+
// Apply max depth if defined (CommonTreeDropdown)
243+
if (isset($decodedValues['show_ticket_categories_depth'])
244+
&& $decodedValues['show_ticket_categories_depth'] > 0) {
245+
$dparams_cond_crit['level'] = ['<=', $decodedValues['show_ticket_categories_depth'] + $baseLevel];
241246
}
242247

243248
$dparams['condition'] = $dparams_cond_crit;

0 commit comments

Comments
 (0)