| | 225 | } |
|---|
| | 226 | |
|---|
| | 227 | /** |
|---|
| | 228 | * Internal helper for showing the groups recursively |
|---|
| | 229 | * |
|---|
| | 230 | * @access private |
|---|
| | 231 | * @param int $id |
|---|
| | 232 | * @param array &$data |
|---|
| | 233 | */ |
|---|
| | 234 | function list_groups_for_select($id, &$data, $level) |
|---|
| | 235 | { |
|---|
| | 236 | $mc = midcom_db_group::new_collector('owner', (int) $id); |
|---|
| | 237 | $mc->add_value_property('name'); |
|---|
| | 238 | $mc->add_value_property('official'); |
|---|
| | 239 | $mc->add_value_property('id'); |
|---|
| | 240 | |
|---|
| | 241 | // Hide SG0 groups if not in SG0 view |
|---|
| | 242 | if ($_MIDGARD['sitegroup'] !== 0) |
|---|
| | 243 | { |
|---|
| | 244 | $mc->add_constraint('sitegroup', '=', $_MIDGARD['sitegroup']); |
|---|
| | 245 | } |
|---|
| | 246 | |
|---|
| | 247 | // Set the order |
|---|
| | 248 | $mc->add_order('metadata.score'); |
|---|
| | 249 | $mc->add_order('official'); |
|---|
| | 250 | $mc->add_order('name'); |
|---|
| | 251 | |
|---|
| | 252 | // Get the results |
|---|
| | 253 | $mc->execute(); |
|---|
| | 254 | $keys = $mc->list_keys(); |
|---|
| | 255 | |
|---|
| | 256 | // Hide empty groups |
|---|
| | 257 | if ($mc->count() === 0) |
|---|
| | 258 | { |
|---|
| | 259 | return; |
|---|
| | 260 | } |
|---|
| | 261 | |
|---|
| | 262 | $data['parent_id'] = $id; |
|---|
| | 263 | |
|---|
| | 264 | foreach ($keys as $guid => $array) |
|---|
| | 265 | { |
|---|
| | 266 | $group['guid'] = $guid; |
|---|
| | 267 | $group['id'] = $mc->get_subkey($guid, 'id'); |
|---|
| | 268 | $group['name'] = $mc->get_subkey($guid, 'name'); |
|---|
| | 269 | |
|---|
| | 270 | if (($title = $mc->get_subkey($guid, 'official'))) |
|---|
| | 271 | { |
|---|
| | 272 | $group['title'] = $title; |
|---|
| | 273 | } |
|---|
| | 274 | else |
|---|
| | 275 | { |
|---|
| | 276 | $group['title'] = $group['name']; |
|---|
| | 277 | } |
|---|
| | 278 | |
|---|
| | 279 | if (!$group['title']) |
|---|
| | 280 | { |
|---|
| | 281 | $group['title'] = $_MIDCOM->i18n->get_string('unknown', 'midcom.admin.user'); |
|---|
| | 282 | } |
|---|
| | 283 | $group['level'] = $level; |
|---|
| | 284 | |
|---|
| | 285 | $data['groups'][] = $group; |
|---|
| | 286 | $level++; |
|---|
| | 287 | $this->list_groups_for_select($group['id'], &$data, $level); |
|---|
| | 288 | $level--; |
|---|
| | 289 | } |
|---|