Upload via GUI (39 Dateien)

This commit is contained in:
2026-08-14 07:59:43 +00:00
parent 05a2e1c7b6
commit 90f388f49c
31 changed files with 16919 additions and 5554 deletions
+198
View File
@@ -0,0 +1,198 @@
<?php
/**
* WP Multi Modul: Benutzer für Kommentare sperren
*
* Automatisch aus wp-multi.php ausgelagert. Wird über den Loader in
* wp-multi.php eingebunden (nur wenn das WP Multi Toolkit aktiv ist).
*/
if (!defined('ABSPATH')) { exit; }
/*
* User Kommentar Blocken
*/
function wp_multi_create_blocked_users_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'blocked_users';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
username varchar(100) DEFAULT '' NOT NULL,
email varchar(100) DEFAULT '' NOT NULL,
ip_address varchar(45) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
function wp_multi_activate() {
wp_multi_create_blocked_users_table();
}
register_activation_hook( WP_MULTI_FILE, 'wp_multi_activate' );
function wp_multi_block_user($username = '', $email = '', $ip_address = '') {
global $wpdb;
if (empty($username) && empty($email) && empty($ip_address)) {
return false;
}
$result = $wpdb->insert(
$wpdb->prefix . 'blocked_users',
[
'username' => $username,
'email' => $email,
'ip_address' => $ip_address
]
);
return $result !== false;
}
function wp_multi_delete_blocked_user($id) {
global $wpdb;
return $wpdb->delete($wpdb->prefix . 'blocked_users', ['id' => $id], ['%d']);
}
// Der Menüpunkt "Gesperrte Benutzer" wird zentral in wp_multi_register_admin_menus() registriert.
function wp_multi_blocked_users_page() {
global $wpdb;
$notices = array();
if (isset($_POST['block_username']) || isset($_POST['block_email']) || isset($_POST['block_ip'])) {
check_admin_referer('wp_multi_block_user');
$username = sanitize_text_field($_POST['block_username']);
$email = sanitize_email($_POST['block_email']);
$ip_address = sanitize_text_field($_POST['block_ip']);
if (wp_multi_block_user($username, $email, $ip_address)) {
$notices[] = array('success', __('Benutzer wurde gesperrt!', 'wp-multi'));
} else {
$notices[] = array('error', __('Fehler beim Sperren des Benutzers!', 'wp-multi'));
}
}
if (isset($_GET['delete']) && isset($_GET['_wpnonce'])) {
if (wp_verify_nonce($_GET['_wpnonce'], 'wp_multi_delete_user_' . $_GET['delete'])) {
$user_id = intval($_GET['delete']);
if ($user_id > 0 && wp_multi_delete_blocked_user($user_id)) {
$notices[] = array('success', __('Benutzer wurde gelöscht!', 'wp-multi'));
} else {
$notices[] = array('error', __('Fehler beim Löschen des Benutzers!', 'wp-multi'));
}
}
}
$search_query = '';
if (isset($_GET['search'])) {
$search_query = sanitize_text_field($_GET['search']);
}
$blocked_users = $wpdb->get_results($wpdb->prepare(
"SELECT * FROM {$wpdb->prefix}blocked_users WHERE username LIKE %s OR email LIKE %s OR ip_address LIKE %s",
'%' . $search_query . '%', '%' . $search_query . '%', '%' . $search_query . '%'
));
wpmt_admin_page_open(
__('Gesperrte Benutzer', 'wp-multi'),
__('Benutzer per Name, E-Mail oder IP von Kommentaren ausschließen', 'wp-multi')
);
foreach ($notices as $notice) {
wpmt_admin_notice($notice[0], $notice[1]);
}
echo '<div class="wpm-grid wpm-grid--2">';
wpmt_admin_card_open(__('Benutzer sperren', 'wp-multi'));
?>
<form method="post">
<?php wp_nonce_field('wp_multi_block_user'); ?>
<div class="wpm-field">
<label class="wpm-field__label"><?php _e('Benutzername', 'wp-multi'); ?></label>
<input type="text" name="block_username" placeholder="Benutzername">
</div>
<div class="wpm-field">
<label class="wpm-field__label"><?php _e('E-Mail-Adresse', 'wp-multi'); ?></label>
<input type="email" name="block_email" placeholder="E-Mail-Adresse">
</div>
<div class="wpm-field">
<label class="wpm-field__label"><?php _e('IP-Adresse', 'wp-multi'); ?></label>
<input type="text" name="block_ip" placeholder="IP-Adresse">
</div>
<p><input type="submit" class="wpm-btn wpm-btn--primary" value="<?php esc_attr_e('Benutzer sperren', 'wp-multi'); ?>"></p>
</form>
<?php
wpmt_admin_card_close();
wpmt_admin_card_open(__('Suchen', 'wp-multi'));
?>
<form method="get">
<input type="hidden" name="page" value="wp-multi-blocked-users">
<div class="wpm-field">
<label class="wpm-field__label"><?php _e('Suchbegriff', 'wp-multi'); ?></label>
<input type="text" name="search" value="<?php echo esc_attr($search_query); ?>" placeholder="<?php esc_attr_e('Benutzername, E-Mail oder IP', 'wp-multi'); ?>">
</div>
<p><input type="submit" class="wpm-btn" value="<?php esc_attr_e('Suchen', 'wp-multi'); ?>"></p>
</form>
<?php
wpmt_admin_card_close();
echo '</div>';
wpmt_admin_card_open(__('Gesperrte Benutzer', 'wp-multi'));
?>
<div class="wpm-table-wrap">
<table class="wpm-table">
<thead>
<tr>
<th><?php _e('Benutzername', 'wp-multi'); ?></th>
<th><?php _e('E-Mail-Adresse', 'wp-multi'); ?></th>
<th><?php _e('IP-Adresse', 'wp-multi'); ?></th>
<th><?php _e('Aktionen', 'wp-multi'); ?></th>
</tr>
</thead>
<tbody>
<?php if ($blocked_users) : ?>
<?php foreach ($blocked_users as $user) : ?>
<tr>
<td><?php echo esc_html($user->username); ?></td>
<td><?php echo esc_html($user->email); ?></td>
<td><?php echo esc_html($user->ip_address); ?></td>
<td>
<a href="<?php echo esc_url(wp_nonce_url(admin_url('admin.php?page=wp-multi-blocked-users&delete=' . $user->id), 'wp_multi_delete_user_' . $user->id)); ?>" class="wpm-btn wpm-btn--danger"><?php _e('Löschen', 'wp-multi'); ?></a>
</td>
</tr>
<?php endforeach; ?>
<?php else : ?>
<tr>
<td colspan="4"><?php _e('Keine gesperrten Benutzer gefunden.', 'wp-multi'); ?></td>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
<?php
wpmt_admin_card_close();
wpmt_admin_page_close();
}
function wp_multi_check_blocked_user($commentdata) {
global $wpdb;
$username = isset($commentdata['comment_author']) ? $commentdata['comment_author'] : '';
$email = isset($commentdata['comment_author_email']) ? $commentdata['comment_author_email'] : '';
$ip_address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$blocked_user = $wpdb->get_row($wpdb->prepare(
"SELECT * FROM {$wpdb->prefix}blocked_users WHERE username = %s OR email = %s OR ip_address = %s",
$username, $email, $ip_address
));
if ($blocked_user) {
wp_die('Ihr Kommentar konnte nicht abgesendet werden, da Sie gesperrt sind. Bitte wenden Sie sich an den Support.');
}
return $commentdata;
}
add_filter('preprocess_comment', 'wp_multi_check_blocked_user');