public function getGroupTree(int $parent = 0, string $column = 'children', array $seen = []) : array
{
if ($parent > 0) {
if (empty($seen)) {
$groups = $this->db->run('SELECT * FROM airship_groups WHERE inherits = ? ORDER BY name ASC', $parent);
} else {
$groups = $this->db->run('SELECT * FROM airship_groups WHERE groupid NOT IN ' . $this->db->escapeValueSet($seen, 'int') . ' AND inherits = ? ORDER BY name ASC', $parent);
}
} elseif (empty($seen)) {
$groups = $this->db->run('SELECT * FROM airship_groups WHERE inherits IS NULL ORDER BY name ASC');
} else {
$groups = $this->db->run('SELECT * FROM airship_groups WHERE groupid NOT IN ' . $this->db->escapeValueSet($seen, 'int') . ' AND inherits IS NULL ORDER BY name ASC');
}
if (empty($groups)) {
return [];
}
foreach ($groups as $i => $grp) {
$groups[$i][$column] = $this->getGroupTree((int) $grp['groupid'], $column, $seen);
}
return $groups;
}