[ 'knowledge_read' => 0, 'form_submit' => 0, 'quiz' => 0, 'manual_approval' => 0, ], 'knowledge_post_ids' => [], 'form_fields' => [], 'quiz_questions' => [], ], $methodConfig); $targetSelection = array_merge([ 'mandant_ids' => [], 'department_ids' => [], 'role_ids' => [], 'einricht_ids' => [], 'fachbereich_ids' => [], 'override_include_contact_ids' => [], 'override_exclude_contact_ids' => [], 'override_include_reason' => '', 'override_exclude_reason' => '', ], $targetSelection); $reminderPolicy = $rules['reminder_policy'] ?? [ 'base_mode' => 'due_date', 'first_escalation_days' => 0, 'step_days' => 7, 'max_level' => 3, 'grace_days' => 7, 'active' => 1, ]; $isReminderActive = (int) ($reminderPolicy['active'] ?? 1) === 1; $formFields = is_array($methodConfig['form_fields']) ? $methodConfig['form_fields'] : []; if ($formFields === []) { $formFields = [[ 'field_key' => '', 'label' => '', 'field_type' => 'text', 'is_required' => 0, 'placeholder' => '', 'options_text' => '', ]]; } $quizQuestions = is_array($methodConfig['quiz_questions']) ? $methodConfig['quiz_questions'] : []; if ($quizQuestions === []) { $quizQuestions = [[ 'question_text' => '', 'option_a' => '', 'option_b' => '', 'option_c' => '', 'option_d' => '', 'correct_option' => 'a', ]]; } $lookupMandants = is_array($lookup['mandants'] ?? null) ? $lookup['mandants'] : []; $lookupDepartments = is_array($lookup['departments'] ?? null) ? $lookup['departments'] : []; $lookupRoles = is_array($lookup['roles'] ?? null) ? $lookup['roles'] : []; $lookupEinrichts = is_array($lookup['einrichts'] ?? null) ? $lookup['einrichts'] : []; $lookupFachbereiche = is_array($lookup['fachbereiche'] ?? null) ? $lookup['fachbereiche'] : []; $lookupContacts = is_array($lookup['contacts'] ?? null) ? $lookup['contacts'] : []; $lookupKnowledgePosts = is_array($lookup['knowledge_posts'] ?? null) ? $lookup['knowledge_posts'] : []; $lookupTaskCategories = is_array($lookup['task_categories'] ?? null) ? $lookup['task_categories'] : []; $hasLookupGaps = ($lookupMandants === [] || $lookupDepartments === [] || $lookupRoles === [] || $lookupContacts === []); $hasTaskCategoryLookupGap = ($lookupTaskCategories === []); $deadlineRuleType = (string) ($task['deadline_rule_type'] ?? 'cycle_end'); if (!in_array($deadlineRuleType, ['cycle_end', 'offset_days', 'weekday', 'monthday'], true)) { $deadlineRuleType = 'cycle_end'; } $deadlineOffsetDays = (int) ($task['deadline_offset_days'] ?? 0); $deadlineWeekday = (int) ($task['deadline_weekday'] ?? 7); if ($deadlineWeekday < 1 || $deadlineWeekday > 7) { $deadlineWeekday = 7; } $deadlineMonthday = (int) ($task['deadline_monthday'] ?? 0); $isRecurringFrequency = (($task['frequency_type'] ?? 'once') === 'recurring'); $recurrenceBasis = (string) ($task['recurrence_basis'] ?? 'calendar'); if (!in_array($recurrenceBasis, ['calendar', 'completion'], true)) { $recurrenceBasis = 'calendar'; } $startDateValueRaw = trim((string) ($task['start_date'] ?? '')); if ($startDateValueRaw === '') { $startDateValue = date('Y-m-d'); } else { try { $startDateValue = (new DateTimeImmutable($startDateValueRaw))->format('Y-m-d'); } catch (Throwable $throwable) { $startDateValue = preg_match('/^\d{4}-\d{2}-\d{2}$/', $startDateValueRaw) ? $startDateValueRaw : date('Y-m-d'); } } $certificateValidityMode = (string) ($task['certificate_validity_mode'] ?? ''); if (!in_array($certificateValidityMode, ['cycle', 'days', 'permanent'], true)) { $certificateDays = (int) ($task['certificate_validity_days'] ?? 0); if ($certificateDays > 0) { $certificateValidityMode = 'days'; } elseif ($isRecurringFrequency) { $certificateValidityMode = 'cycle'; } else { $certificateValidityMode = 'permanent'; } } $ensureLookupRows = static function (array $rows, array $selectedIds, string $labelKey, string $fallbackPrefix): array { $existingIds = []; foreach ($rows as $row) { $rowId = (int) ($row['id'] ?? 0); if ($rowId > 0) { $existingIds[$rowId] = true; } } foreach (array_values(array_unique(array_map('intval', $selectedIds))) as $selectedId) { if ($selectedId <= 0 || isset($existingIds[$selectedId])) { continue; } $rows[] = [ 'id' => $selectedId, $labelKey => $fallbackPrefix . ' #' . $selectedId . ' (nicht gefunden)', ]; } return $rows; }; $lookupMandants = $ensureLookupRows($lookupMandants, (array) ($targetSelection['mandant_ids'] ?? []), 'description', 'Mandant'); $lookupDepartments = $ensureLookupRows($lookupDepartments, (array) ($targetSelection['department_ids'] ?? []), 'description', 'Abteilung'); $lookupRoles = $ensureLookupRows($lookupRoles, (array) ($targetSelection['role_ids'] ?? []), 'description', 'Rolle'); $lookupEinrichts = $ensureLookupRows($lookupEinrichts, (array) ($targetSelection['einricht_ids'] ?? []), 'description', 'Einrichtung'); $lookupFachbereiche = $ensureLookupRows($lookupFachbereiche, (array) ($targetSelection['fachbereich_ids'] ?? []), 'description', 'Fachbereich'); $lookupKnowledgePosts = $ensureLookupRows($lookupKnowledgePosts, (array) ($methodConfig['knowledge_post_ids'] ?? []), 'title', 'Beitrag'); $lookupTaskCategories = $ensureLookupRows($lookupTaskCategories, [(int) ($task['task_category_id'] ?? 0)], 'name', 'Kategorie'); $lookupContacts = $ensureLookupRows( $lookupContacts, array_merge( (array) ($targetSelection['override_include_contact_ids'] ?? []), (array) ($targetSelection['override_exclude_contact_ids'] ?? []), (array) ($targetSelection['responsible_contact_ids'] ?? []) ), 'name', 'Kontakt' ); $contactLabel = static function (array $contact): string { $name = trim((string) ($contact['name'] ?? '')); $email = trim((string) ($contact['email'] ?? '')); if ($name !== '' && $email !== '') { return $name . ' (' . $email . ')'; } if ($name !== '') { return $name; } if ($email !== '') { return $email; } return 'Kontakt #' . (int) ($contact['id'] ?? 0); }; if (!function_exists('task_cert_render_styles')) { require_once dirname(dirname(__DIR__)) . '/bootstrap.php'; } task_cert_render_styles(['admin'], ['vendor/multiselect/MultiSelect.css']); task_cert_render_scripts([ 'vendor/multiselect/MultiSelect.js', 'js/task_cert_admin_form_wizard.js', ]); ?> 0 ? task_cert_view_url('admin.task_detail', ['id' => $taskId]) : ''; $taskSyncAssignmentsEndpoint = $taskCertBaseUrl . '/endpoints/admin/sync_assignments.php'; $taskSyncRedirectUrl = $taskId > 0 ? task_cert_view_url('admin.task_form', ['id' => $taskId]) : $taskFormViewUrl; ?>

0 ? 'Aufgabe bearbeiten' : 'Aufgabe erstellen'; ?>

0): ?> Aufgabenübersicht
Aufgabe wurde erfolgreich gespeichert.
Bestehender Fortschritt im aktuellen Zyklus wurde zurückgesetzt. Zuweisungen: , Einreichungen: , Zertifikate widerrufen: .

Stammdaten

Kategorien konnten nicht geladen werden. Bitte DB-Struktur/Migration prüfen.
Ansprechpartner, die den Mitarbeitenden als Kontakt für diese Aufgabe angezeigt werden.
0): ?>