Update from Git Manager GUI
This commit is contained in:
@@ -52,6 +52,8 @@ if ( ! function_exists('wbf_get_settings') ) {
|
||||
'rules_accept_required' => '1',
|
||||
'rules_title' => 'Forum-Regeln & Nutzungsbedingungen',
|
||||
'rules_content' => "**1. Respektvoller Umgang**\nBehandle alle Mitglieder freundlich und respektvoll. Beleidigungen, Mobbing und Diskriminierung sind nicht toleriert.\n\n**2. Keine Spam-Inhalte**\nWerbung, Spam und irrelevante Links sind verboten.\n\n**3. Keine illegalen Inhalte**\nJegliche Inhalte, die gegen geltendes Recht verstoßen, sind streng verboten.\n\n**4. Themenrelevanz**\nBeiträge sollten zur jeweiligen Kategorie passen.\n\n**5. Urheberrecht**\nVeröffentliche keine Inhalte, an denen du keine Rechte besitzt.\n\n**6. Datenschutz**\nTeile keine persönlichen Daten anderer Personen ohne deren Zustimmung.\n\n**7. Moderations-Entscheidungen**\nEntscheidungen der Moderatoren sind zu respektieren. Bei Fragen wende dich direkt ans Team.\n\nVerstöße können zur Verwarnung oder dauerhaften Sperrung führen.",
|
||||
// Ignore/Block-System: Rollen die nicht geblockt werden können (kommagetrennte Schlüssel)
|
||||
'ignore_blocked_roles' => 'superadmin,admin,moderator',
|
||||
];
|
||||
|
||||
$saved = get_option( 'wbf_settings', [] );
|
||||
@@ -63,6 +65,38 @@ if ( ! function_exists('wbf_get_settings') ) {
|
||||
|
||||
// ── Admin-Seite ───────────────────────────────────────────────────────────────
|
||||
|
||||
/**
|
||||
* Gibt ein Array der Rollen-Keys zurück die nicht geblockt/ignoriert werden können.
|
||||
* Superadmin ist immer enthalten — unabhängig von der Einstellung.
|
||||
*
|
||||
* @return string[] z.B. ['superadmin', 'admin', 'moderator']
|
||||
*/
|
||||
if ( ! function_exists('wbf_get_ignore_blocked_roles') ) {
|
||||
function wbf_get_ignore_blocked_roles() {
|
||||
$raw = wbf_get_settings()['ignore_blocked_roles'] ?? 'superadmin,admin,moderator';
|
||||
$keys = array_filter( array_map( 'trim', explode( ',', $raw ) ) );
|
||||
// superadmin immer schützen
|
||||
if ( ! in_array('superadmin', $keys, true) ) {
|
||||
$keys[] = 'superadmin';
|
||||
}
|
||||
return array_values( $keys );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft ob ein User ignoriert/geblockt werden darf.
|
||||
*
|
||||
* @param object $target Forum-User-Objekt
|
||||
* @return bool true = darf ignoriert werden, false = nicht erlaubt
|
||||
*/
|
||||
if ( ! function_exists('wbf_can_be_ignored') ) {
|
||||
function wbf_can_be_ignored( $target ) {
|
||||
if ( ! $target ) return false;
|
||||
$blocked_roles = wbf_get_ignore_blocked_roles();
|
||||
return ! in_array( $target->role, $blocked_roles, true );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists('wbf_admin_settings') ) {
|
||||
function wbf_admin_settings() {
|
||||
|
||||
@@ -96,6 +130,18 @@ function wbf_admin_settings() {
|
||||
// rules_content separat (nicht in $fields, da textarea mit eigener Behandlung)
|
||||
$settings['rules_content'] = sanitize_textarea_field( $_POST['rules_content'] ?? '' );
|
||||
|
||||
// ignore_blocked_roles: kommagetrennte Liste der gewählten Rollen-Keys
|
||||
$all_role_keys = array_keys( WBF_Roles::get_all() );
|
||||
$checked_roles = array_intersect(
|
||||
array_map( 'sanitize_key', (array)( $_POST['ignore_blocked_roles'] ?? [] ) ),
|
||||
$all_role_keys
|
||||
);
|
||||
// superadmin ist immer blockiert — kann nicht entfernt werden
|
||||
if ( ! in_array('superadmin', $checked_roles, true) ) {
|
||||
$checked_roles[] = 'superadmin';
|
||||
}
|
||||
$settings['ignore_blocked_roles'] = implode( ',', $checked_roles );
|
||||
|
||||
update_option( 'wbf_settings', $settings );
|
||||
echo '<div class="notice notice-success is-dismissible"><p>✅ Einstellungen gespeichert!</p></div>';
|
||||
}
|
||||
@@ -401,6 +447,51 @@ function wbf_admin_settings() {
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- ── Ignore / Block-System ────────────────────────── -->
|
||||
<h2 style="border-bottom:1px solid #ddd;padding-bottom:.4rem;margin-top:1.5rem">
|
||||
🚫 Ignore / Block-System
|
||||
</h2>
|
||||
<table class="form-table" role="presentation">
|
||||
<tr>
|
||||
<th scope="row"><label>Nicht blockierbare Rollen</label></th>
|
||||
<td>
|
||||
<?php
|
||||
$blocked_roles = array_filter( array_map('trim', explode(',', $s['ignore_blocked_roles'] ?? 'superadmin,admin,moderator')) );
|
||||
$all_roles = WBF_Roles::get_sorted();
|
||||
foreach ( $all_roles as $key => $role ):
|
||||
$is_superadmin = ($key === 'superadmin');
|
||||
$is_checked = in_array($key, $blocked_roles, true);
|
||||
$rc = esc_attr($role['color']);
|
||||
$rb = esc_attr($role['bg_color']);
|
||||
?>
|
||||
<label style="display:flex;align-items:center;gap:8px;margin-bottom:7px;cursor:<?php echo $is_superadmin?'not-allowed':'pointer'; ?>">
|
||||
<input type="checkbox"
|
||||
name="ignore_blocked_roles[]"
|
||||
value="<?php echo esc_attr($key); ?>"
|
||||
<?php checked($is_checked, true); ?>
|
||||
<?php echo $is_superadmin ? 'disabled' : ''; ?>
|
||||
style="width:16px;height:16px;accent-color:<?php echo $rc; ?>">
|
||||
<?php if ($is_superadmin): ?>
|
||||
<!-- superadmin immer als hidden mitschicken da disabled nicht übermittelt wird -->
|
||||
<input type="hidden" name="ignore_blocked_roles[]" value="superadmin">
|
||||
<?php endif; ?>
|
||||
<span style="display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:.78rem;font-weight:700;color:<?php echo $rc; ?>;background:<?php echo $rb; ?>;border:1px solid <?php echo $rc; ?>">
|
||||
<i class="<?php echo esc_attr($role['icon'] ?? 'fas fa-user'); ?>"></i>
|
||||
<?php echo esc_html($role['label']); ?>
|
||||
</span>
|
||||
<?php if ($is_superadmin): ?>
|
||||
<span style="font-size:.72rem;color:#999">(immer geschützt)</span>
|
||||
<?php endif; ?>
|
||||
</label>
|
||||
<?php endforeach; ?>
|
||||
<p class="description" style="margin-top:8px">
|
||||
Nutzer mit diesen Rollen können von anderen Mitgliedern <strong>nicht</strong> geblockt oder ignoriert werden.
|
||||
Superadmin ist permanent geschützt und kann nicht abgewählt werden.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php submit_button(
|
||||
'💾 Einstellungen speichern',
|
||||
'primary',
|
||||
|
||||
Reference in New Issue
Block a user