prefix . 'message_board'; // Tabelle für Nachrichten
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
message text NOT NULL,
user_id bigint(20) NOT NULL,
created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(WP_MULTI_FILE, 'wp_multi_create_message_board_table');
// Funktion zum Anzeigen der Nachrichten im Adminbereich
function wp_multi_add_message_board() {
if (!current_user_can('administrator')) {
return;
}
global $wpdb;
$table_name = $wpdb->prefix . 'message_board';
$created = false;
// Nachricht erstellen (VOR der Ausgabe, damit sie sofort erscheint)
if (isset($_POST['submit_message']) && !empty($_POST['new_message'])) {
if (!isset($_POST['wp_multi_pinwand_nonce_field']) || !wp_verify_nonce(wp_unslash($_POST['wp_multi_pinwand_nonce_field']), 'wp_multi_pinwand_create_message')) {
wp_die(__('Ungültige oder abgelaufene Anfrage.', 'wp-multi'));
}
$wpdb->insert(
$table_name,
array(
'message' => sanitize_textarea_field(wp_unslash($_POST['new_message'])),
'user_id' => get_current_user_id(),
)
);
$created = true;
}
$messages = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC");
wpmt_admin_page_open(
__('Pinwand', 'wp-multi'),
__('Interne Nachrichten für das Admin-Team', 'wp-multi')
);
if ($created) {
wpmt_admin_notice('success', __('Nachricht wurde erfolgreich erstellt.', 'wp-multi'));
}
wpmt_admin_card_open(__('Neue Nachricht erstellen', 'wp-multi'));
?>
';
foreach ($messages as $message) {
$user_info = get_userdata($message->user_id);
$author = $user_info ? $user_info->user_login : __('Unbekannt', 'wp-multi');
printf(
'',
(int) $message->id,
esc_html($author),
esc_html(date('d-m-Y H:i', strtotime($message->created_at))),
esc_html(wp_trim_words($message->message, 20))
);
}
echo '';
} else {
wpmt_admin_notice('info', __('Keine Nachrichten vorhanden.', 'wp-multi'));
}
wpmt_admin_card_close();
wpmt_admin_page_close();
?>
prefix . 'message_board';
$message_id = intval($_POST['message_id']);
$message = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE id = %d", $message_id));
if ($message) {
// Datum im gewünschten Format (DD-MM-JJJJ HH:MM:SS)
$formatted_date = date('d-m-Y H:i:s', strtotime($message->created_at));
echo json_encode([
'created_at' => $formatted_date,
'message' => nl2br(esc_textarea($message->message)),
'user' => get_userdata($message->user_id)->user_login
]);
}
}
wp_die();
}
add_action('wp_ajax_wp_multi_get_message', 'wp_multi_get_message');
// Funktion zum Löschen einer Nachricht
function wp_multi_delete_message() {
check_ajax_referer('wp_multi_pinwand_nonce', 'nonce');
if (!current_user_can('administrator')) {
wp_die();
}
if (isset($_POST['message_id'])) {
global $wpdb;
$table_name = $wpdb->prefix . 'message_board';
$message_id = intval($_POST['message_id']);
$wpdb->delete($table_name, array('id' => $message_id), array('%d'));
echo 'success';
}
wp_die();
}
add_action('wp_ajax_wp_multi_delete_message', 'wp_multi_delete_message');
// Funktion zum Deaktivieren der Pinwand bei der Deinstallation
function wp_multi_delete_message_board_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'message_board';
$wpdb->query("DROP TABLE IF EXISTS $table_name");
}
register_deactivation_hook(WP_MULTI_FILE, 'wp_multi_delete_message_board_table');
// Funktion, um das Dashboard-Widget zu registrieren
function wp_multi_dashboard_widget() {
wp_add_dashboard_widget(
'wp_multi_pinwand_widget', // Widget-ID
'Pinwand Übersicht', // Widget-Titel
'wp_multi_dashboard_widget_content' // Callback-Funktion
);
}
add_action('wp_dashboard_setup', 'wp_multi_dashboard_widget');
// Callback-Funktion, die den Inhalt des Widgets erstellt
function wp_multi_dashboard_widget_content() {
global $wpdb;
$table_name = $wpdb->prefix . 'message_board';
$messages = $wpdb->get_results("SELECT * FROM $table_name ORDER BY created_at DESC LIMIT 5"); // Zeige die neuesten 5 Nachrichten an
if ($messages) {
echo '';
foreach ($messages as $message) {
$user_info = get_userdata($message->user_id);
echo '- ';
echo '' . esc_html($user_info->user_login) . ' (' . date('d-m-Y H:i:s', strtotime($message->created_at)) . '): ';
echo wp_trim_words($message->message, 10) . '...'; // Zeigt nur eine Vorschau der Nachricht
echo '
';
}
echo '
';
} else {
echo 'Keine neuen Nachrichten.
';
}
}