function groupslugrouter_generate_slug($group) { error_log("[SLUG] ✳️ Slug genereren voor groep: {$group->guid} - {$group->title}"); if (!isset($group->guid) || !isset($group->title)) { error_log("[SLUG] ❌ Ontbrekende groep info."); return false; } // 🧼 Verwijder oude slug-entities $existing_slugs = ossn_get_entities([ 'type' => 'object', 'subtype' => 'groupslugname', 'owner_guid' => $group->guid, 'page_limit' => false, ]); $entity_handler = new OssnEntities; if ($existing_slugs) { foreach ($existing_slugs as $old_slug) { if ($entity_handler->deleteEntity($old_slug->guid)) { error_log("[SLUG] 🔁 Oude slug verwijderd: {$old_slug->value} (entity: {$old_slug->guid})"); } } } // Nieuwe slug maken $base = strtolower(trim($group->title)); $slug = preg_replace('/[^a-z0-9]+/', '-', $base); $slug = trim($slug, '-'); if (empty($slug)) { $slug = 'groep-' . $group->guid; } // Check op dubbele slug $original_slug = $slug; $suffix = 1; while (true) { $existing = groupslugrouter_get_group_by_slug($slug); if (!$existing || $existing->guid === $group->guid) { break; } $slug = $original_slug . '-' . $suffix; $suffix++; } // 🟡 Waarschuwing als suffix > 1 (dus slug was al in gebruik) if ($slug !== $original_slug) { ossn_trigger_message(ossn_print('groupslugrouter:slugexistswarning') . ' ' . $slug, 'error'); error_log("[SLUG] ⚠️ Slug al in gebruik, alternatieve slug aangemaakt: {$slug}"); } $entityParams = [ 'owner_guid' => $group->guid, 'type' => 'object', 'subtype' => 'groupslugname', 'value' => $slug, ]; error_log("[SLUG] 📎 Slug opslaan via ossn_add_entity: " . var_export($entityParams, true)); $result = ossn_add_entity($entityParams); if ($result) { error_log("[SLUG] ✅ Slug opgeslagen: {$slug} voor groep {$group->guid}"); return $slug; } else { error_log("[SLUG] ❌ Slug kon niet opgeslagen worden."); return false; } }