HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/root/tmp/creator_direct_audit_helpers.patch
*** Begin Patch
*** Update File: /home/kiwerkzeuge.de/public_html/creator-studio/_lib/bootstrap.php
@@
     return $summary;
 }
 
+function cs_direct_publish_audit_pack_clean_status(mixed $value): string
+{
+    $status = strtolower(trim((string) $value));
+    $status = preg_replace('/[^a-z0-9_]+/', '_', $status) ?? '';
+    $status = trim($status, '_');
+    $aliases = ['ok' => 'ready', 'pending' => 'action_needed', 'todo' => 'action_needed'];
+    $status = $aliases[$status] ?? $status;
+    return in_array($status, ['ready', 'action_needed', 'blocked'], true) ? $status : 'action_needed';
+}
+
+function cs_direct_publish_audit_pack_normalize(array $pack): array
+{
+    $packId = preg_replace('/[^a-zA-Z0-9_.-]+/', '_', trim((string) ($pack['pack_id'] ?? ''))) ?? '';
+    if ($packId === '') {
+        $packId = 'dpaud_' . bin2hex(random_bytes(6));
+    }
+    $metrics = is_array($pack['metrics'] ?? null) ? $pack['metrics'] : [];
+    $evidence = is_array($pack['evidence'] ?? null) ? $pack['evidence'] : [];
+    $readyEvidence = max(0, (int) ($pack['ready_evidence'] ?? $pack['ready_checks'] ?? 0));
+    $totalEvidence = max($readyEvidence, (int) ($pack['total_evidence'] ?? $pack['total_checks'] ?? count($evidence)));
+    $blockedEvidence = max(0, (int) ($pack['blocked_evidence'] ?? $pack['blocked_checks'] ?? 0));
+    $privateHash = cs_clean_lead_text((string) ($pack['private_pack_hash'] ?? $pack['pack_hash'] ?? ''), 64);
+    return [
+        'pack_id' => $packId,
+        'generated_at' => (string) ($pack['generated_at'] ?? cs_now_iso()),
+        'updated_at' => (string) ($pack['updated_at'] ?? cs_now_iso()),
+        'status' => cs_direct_publish_audit_pack_clean_status($pack['status'] ?? 'action_needed'),
+        'metric' => cs_clean_lead_text((string) ($pack['metric'] ?? ($readyEvidence . '/' . max(1, $totalEvidence) . ' evidence')), 120),
+        'next_action' => cs_clean_lead_text((string) ($pack['next_action'] ?? 'Prepare and submit the sanitized Direct Publish evidence pack for TikTok Advanced Access review.'), 240, true),
+        'source' => cs_clean_lead_text((string) ($pack['source'] ?? 'direct_publish_audit_pack_cli'), 80),
+        'is_test' => !empty($pack['is_test']),
+        'ready_evidence' => $readyEvidence,
+        'total_evidence' => $totalEvidence,
+        'blocked_evidence' => $blockedEvidence,
+        'evidence_status' => cs_direct_publish_audit_pack_clean_status($pack['evidence_status'] ?? ($pack['status'] ?? 'action_needed')),
+        'public_direct_blocker' => cs_clean_lead_text((string) ($pack['public_direct_blocker'] ?? ''), 160, true),
+        'advanced_access_next_step' => cs_clean_lead_text((string) ($pack['advanced_access_next_step'] ?? ''), 240, true),
+        'private_pack_present' => !empty($pack['private_pack_present']),
+        'private_pack_hash' => $privateHash,
+        'metrics' => $metrics,
+        'evidence' => $evidence,
+    ];
+}
+
+function cs_direct_publish_audit_pack_load_store(): array
+{
+    $store = cs_load_json(CREATOR_STUDIO_DIRECT_PUBLISH_AUDIT_STORE_PATH, ['packs' => []]);
+    if (!isset($store['packs']) || !is_array($store['packs'])) {
+        $store['packs'] = [];
+    }
+    return $store;
+}
+
+function cs_direct_publish_audit_pack_list(bool $includeTests = false): array
+{
+    $store = cs_direct_publish_audit_pack_load_store();
+    $packs = [];
+    foreach ($store['packs'] as $pack) {
+        if (!is_array($pack)) {
+            continue;
+        }
+        $normalized = cs_direct_publish_audit_pack_normalize($pack);
+        if (!$includeTests && !empty($normalized['is_test'])) {
+            continue;
+        }
+        $packs[] = $normalized;
+    }
+    usort($packs, static fn (array $a, array $b): int => strcmp((string) ($b['generated_at'] ?? ''), (string) ($a['generated_at'] ?? '')));
+    return $packs;
+}
+
+function cs_direct_publish_audit_pack_save(array $pack): array
+{
+    $normalized = cs_direct_publish_audit_pack_normalize($pack);
+    $store = cs_direct_publish_audit_pack_load_store();
+    $store['packs'][$normalized['pack_id']] = $normalized;
+    $store['updated_at'] = cs_now_iso();
+    cs_save_json(CREATOR_STUDIO_DIRECT_PUBLISH_AUDIT_STORE_PATH, $store, 0600);
+    cs_append_jsonl(CREATOR_STUDIO_DIRECT_PUBLISH_AUDIT_LOG_PATH, array_merge(['action' => 'saved'], cs_direct_publish_audit_pack_agent_payload($normalized)));
+    return $normalized;
+}
+
+function cs_direct_publish_audit_pack_summary(?array $packs = null): array
+{
+    $allPacks = $packs ?? cs_direct_publish_audit_pack_list(true);
+    $realPacks = array_values(array_filter($allPacks, static fn (array $pack): bool => empty($pack['is_test'])));
+    $latest = $realPacks[0] ?? ($allPacks[0] ?? null);
+    if (!is_array($latest)) {
+        return [
+            'status' => 'action_needed',
+            'metric' => '0 packs',
+            'next_action' => 'Prepare a sanitized Direct Publish evidence pack before requesting TikTok public-account Advanced Access.',
+            'ready_checks' => 0,
+            'total_checks' => 0,
+            'blocked_checks' => 0,
+            'total' => 0,
+            'test_total' => 0,
+            'latest_generated_at' => '',
+            'direct_audit_pack_hash' => '',
+            'private_pack_present' => false,
+        ];
+    }
+    $metrics = is_array($latest['metrics'] ?? null) ? $latest['metrics'] : [];
+    return [
+        'status' => (string) ($latest['status'] ?? 'action_needed'),
+        'metric' => (string) ($latest['metric'] ?? ''),
+        'next_action' => (string) ($latest['next_action'] ?? ''),
+        'ready_checks' => (int) ($latest['ready_evidence'] ?? 0),
+        'total_checks' => (int) ($latest['total_evidence'] ?? 0),
+        'blocked_checks' => (int) ($latest['blocked_evidence'] ?? 0),
+        'ready_evidence' => (int) ($latest['ready_evidence'] ?? 0),
+        'total_evidence' => (int) ($latest['total_evidence'] ?? 0),
+        'blocked_evidence' => (int) ($latest['blocked_evidence'] ?? 0),
+        'evidence_status' => (string) ($latest['evidence_status'] ?? ($latest['status'] ?? 'action_needed')),
+        'total' => count($realPacks),
+        'test_total' => count($allPacks) - count($realPacks),
+        'latest_generated_at' => (string) ($latest['generated_at'] ?? ''),
+        'direct_audit_pack_hash' => (string) ($latest['private_pack_hash'] ?? ''),
+        'pack_hash' => (string) ($latest['private_pack_hash'] ?? ''),
+        'private_pack_present' => !empty($latest['private_pack_present']),
+        'public_direct_blocker' => (string) ($latest['public_direct_blocker'] ?? ''),
+        'advanced_access_next_step' => (string) ($latest['advanced_access_next_step'] ?? ''),
+        'creator_info_ready_accounts' => (int) ($metrics['creator_info_ready_accounts'] ?? 0),
+        'draft_uploads' => (int) ($metrics['draft_uploads'] ?? 0),
+        'direct_publishes' => (int) ($metrics['direct_publishes'] ?? 0),
+        'self_only_direct_publishes' => (int) ($metrics['self_only_direct_publishes'] ?? ($metrics['direct_publishes'] ?? 0)),
+        'pull_from_url_publishes' => (int) ($metrics['pull_from_url_publishes'] ?? 0),
+        'photo_publishes' => (int) ($metrics['photo_publishes'] ?? 0),
+        'creator_publish_receipts' => (int) ($metrics['creator_publish_receipts'] ?? 0),
+        'ai_disclosure_supported' => !empty($metrics['ai_disclosure_supported']),
+        'compliance_controls_visible' => !empty($metrics['compliance_controls_visible']),
+        'source' => (string) ($latest['source'] ?? 'direct_publish_audit_pack_cli'),
+        'is_test' => !empty($latest['is_test']),
+    ];
+}
+
+function cs_direct_publish_audit_pack_agent_payload(array $summary): array
+{
+    $summary = isset($summary['ready_evidence']) ? $summary : cs_direct_publish_audit_pack_summary([$summary]);
+    return [
+        'status' => (string) ($summary['status'] ?? 'action_needed'),
+        'metric' => (string) ($summary['metric'] ?? ''),
+        'next_action' => (string) ($summary['next_action'] ?? ''),
+        'evidence_status' => (string) ($summary['evidence_status'] ?? ($summary['status'] ?? 'action_needed')),
+        'ready_evidence' => (int) ($summary['ready_evidence'] ?? $summary['ready_checks'] ?? 0),
+        'total_evidence' => (int) ($summary['total_evidence'] ?? $summary['total_checks'] ?? 0),
+        'blocked_evidence' => (int) ($summary['blocked_evidence'] ?? $summary['blocked_checks'] ?? 0),
+        'ready_checks' => (int) ($summary['ready_evidence'] ?? $summary['ready_checks'] ?? 0),
+        'total_checks' => (int) ($summary['total_evidence'] ?? $summary['total_checks'] ?? 0),
+        'blocked_checks' => (int) ($summary['blocked_evidence'] ?? $summary['blocked_checks'] ?? 0),
+        'direct_audit_pack_hash' => (string) ($summary['direct_audit_pack_hash'] ?? $summary['pack_hash'] ?? $summary['private_pack_hash'] ?? ''),
+        'pack_hash' => (string) ($summary['pack_hash'] ?? $summary['direct_audit_pack_hash'] ?? $summary['private_pack_hash'] ?? ''),
+        'private_pack_present' => !empty($summary['private_pack_present']),
+        'public_direct_blocker' => (string) ($summary['public_direct_blocker'] ?? ''),
+        'advanced_access_next_step' => (string) ($summary['advanced_access_next_step'] ?? ''),
+        'creator_info_ready_accounts' => (int) ($summary['creator_info_ready_accounts'] ?? 0),
+        'draft_uploads' => (int) ($summary['draft_uploads'] ?? 0),
+        'direct_publishes' => (int) ($summary['direct_publishes'] ?? 0),
+        'self_only_direct_publishes' => (int) ($summary['self_only_direct_publishes'] ?? $summary['direct_publishes'] ?? 0),
+        'pull_from_url_publishes' => (int) ($summary['pull_from_url_publishes'] ?? 0),
+        'photo_publishes' => (int) ($summary['photo_publishes'] ?? 0),
+        'creator_publish_receipts' => (int) ($summary['creator_publish_receipts'] ?? 0),
+        'ai_disclosure_supported' => !empty($summary['ai_disclosure_supported']),
+        'compliance_controls_visible' => !empty($summary['compliance_controls_visible']),
+        'source' => (string) ($summary['source'] ?? 'direct_publish_audit_pack_cli'),
+        'is_test' => !empty($summary['is_test']),
+    ];
+}
+
+function cs_direct_publish_audit_pack_record_event(array $summary, array $options = []): array
+{
+    $payload = cs_direct_publish_audit_pack_agent_payload($summary);
+    if (array_key_exists('source', $options)) {
+        $payload['source'] = cs_clean_lead_text($options['source'], 80);
+    }
+    if (array_key_exists('is_test', $options)) {
+        $payload['is_test'] = !empty($options['is_test']);
+    }
+    cs_record_openclaw_event('creator_studio.direct_publish_audit_pack.prepared', $payload);
+    cs_record_notification('creator_studio.direct_publish_audit_pack.prepared', $payload, ['is_test' => !empty($payload['is_test'])]);
+    return ['recorded' => true, 'event_type' => 'creator_studio.direct_publish_audit_pack.prepared', 'payload' => $payload];
+}
 function cs_billing_invoice_handoff_load_store(): array
 {
*** End Patch