Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2456a72d41 | |||
| b4bf55c611 |
255
wp-multi.php
255
wp-multi.php
@@ -3,7 +3,7 @@
|
|||||||
* Plugin Name: WP Multi
|
* Plugin Name: WP Multi
|
||||||
* Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi
|
* Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi
|
||||||
* Description: Erweiterter Anti-Spam-Schutz mit Honeypot, Keyword-Filter, Link-Limit und mehr. Jetzt mit Statistik im Dashboard und HappyForms-Integration.
|
* Description: Erweiterter Anti-Spam-Schutz mit Honeypot, Keyword-Filter, Link-Limit und mehr. Jetzt mit Statistik im Dashboard und HappyForms-Integration.
|
||||||
* Version: 2.7
|
* Version: 2.8
|
||||||
* Author: M_Viper
|
* Author: M_Viper
|
||||||
* Author URI: https://m-viper.de
|
* Author URI: https://m-viper.de
|
||||||
* Requires at least: 6.7.2
|
* Requires at least: 6.7.2
|
||||||
@@ -16,8 +16,53 @@
|
|||||||
* Support: [Telegram Support](https://t.me/M_Viper04)
|
* Support: [Telegram Support](https://t.me/M_Viper04)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('ABSPATH')) exit;
|
if (!defined('ABSPATH')) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funktion zur Überprüfung des WP Multi Toolkit Plugins
|
||||||
|
function wp_multi_check_dependency() {
|
||||||
|
if (!function_exists('is_plugin_active')) {
|
||||||
|
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prüft, ob WP Multi Toolkit installiert und aktiv ist
|
||||||
|
if (!is_plugin_active('wp-multi-toolkit/wp-multi-toolkit.php')) {
|
||||||
|
add_action('admin_notices', 'wp_multi_dependency_notice');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fehlermeldung für Admin-Bereich mit Download-Button
|
||||||
|
function wp_multi_dependency_notice() {
|
||||||
|
?>
|
||||||
|
<div class="notice notice-error">
|
||||||
|
<p>
|
||||||
|
<?php _e('Das Plugin "WP Multi" benötigt "WP Multi Toolkit", um zu funktionieren. Bitte installieren und aktivieren Sie "WP Multi Toolkit".', 'wp-multi'); ?>
|
||||||
|
<a href="https://git.viper.ipv64.net/M_Viper/wp-multi-toolkit/releases" target="_blank" class="button button-primary" style="margin-left: 10px;">
|
||||||
|
<?php _e('WP Multi Toolkit herunterladen', 'wp-multi'); ?>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plugin nur initialisieren, wenn Abhängigkeit erfüllt ist
|
||||||
|
if (wp_multi_check_dependency()) {
|
||||||
|
// Hier würde der restliche Plugin-Code folgen
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Optional: Plugin komplett deaktivieren, wenn Abhängigkeit fehlt
|
||||||
|
add_action('admin_init', function() {
|
||||||
|
deactivate_plugins(plugin_basename(__FILE__));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Admin - Panel Banner
|
* Admin - Panel Banner
|
||||||
@@ -70,212 +115,6 @@
|
|||||||
}
|
}
|
||||||
add_filter('plugin_row_meta', 'wp_multi_plugin_row_meta', 10, 2);
|
add_filter('plugin_row_meta', 'wp_multi_plugin_row_meta', 10, 2);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Update Widget
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Widget zum Admin-Dashboard hinzufügen
|
|
||||||
function wp_multi_update_dashboard_widget() {
|
|
||||||
wp_add_dashboard_widget(
|
|
||||||
'wp_multi_update_widget',
|
|
||||||
__('Verfügbare Updates für WP Multi', 'wp-multi'),
|
|
||||||
'wp_multi_update_dashboard_widget_content'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
add_action('wp_dashboard_setup', 'wp_multi_update_dashboard_widget');
|
|
||||||
|
|
||||||
// Benutzerdefiniertes Cron-Intervall hinzufügen
|
|
||||||
add_filter('cron_schedules', function ($schedules) {
|
|
||||||
$schedules['hourly'] = array(
|
|
||||||
'interval' => 3600, // 1 Stunde in Sekunden
|
|
||||||
'display' => __('Stündlich', 'wp-multi'),
|
|
||||||
);
|
|
||||||
return $schedules;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Cron-Job registrieren
|
|
||||||
function wp_multi_update_schedule_check() {
|
|
||||||
if (!wp_next_scheduled('wp_multi_update_check_event')) {
|
|
||||||
wp_schedule_event(time(), 'hourly', 'wp_multi_update_check_event');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add_action('wp', 'wp_multi_update_schedule_check');
|
|
||||||
|
|
||||||
// Hilfsfunktion zur Wiederverwendung der Gitea-API-Abfrage
|
|
||||||
function wp_multi_fetch_latest_release($show_prereleases = false) {
|
|
||||||
$api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi/releases';
|
|
||||||
$response = wp_remote_get($api_url, array('timeout' => 10));
|
|
||||||
|
|
||||||
if (is_wp_error($response)) {
|
|
||||||
error_log('WP Multi Update Check Fehler: ' . $response->get_error_message());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$body = wp_remote_retrieve_body($response);
|
|
||||||
$data = json_decode($body, true);
|
|
||||||
|
|
||||||
if (!is_array($data)) {
|
|
||||||
error_log('WP Multi Update Check: Ungültige API-Antwort');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($data as $release) {
|
|
||||||
if (!$show_prereleases && isset($release['prerelease']) && $release['prerelease']) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!empty($release['tag_name'])) {
|
|
||||||
return $release;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cron-Job für Update-Überprüfung
|
|
||||||
function wp_multi_update_check() {
|
|
||||||
$plugin_data = get_plugin_data(__FILE__);
|
|
||||||
$installed_version = $plugin_data['Version'];
|
|
||||||
$show_prereleases = get_option('wp_multi_update_show_prereleases', false);
|
|
||||||
|
|
||||||
$valid_release = wp_multi_fetch_latest_release($show_prereleases);
|
|
||||||
|
|
||||||
if ($valid_release) {
|
|
||||||
$latest_version = $valid_release['tag_name'];
|
|
||||||
$release_notes = isset($valid_release['body']) ? $valid_release['body'] : '';
|
|
||||||
$is_prerelease = isset($valid_release['prerelease']) && $valid_release['prerelease'];
|
|
||||||
|
|
||||||
update_option('wp_multi_update_latest_version', $latest_version);
|
|
||||||
update_option('wp_multi_update_release_notes', $release_notes);
|
|
||||||
update_option('wp_multi_update_is_prerelease', $is_prerelease);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add_action('wp_multi_update_check_event', 'wp_multi_update_check');
|
|
||||||
|
|
||||||
// Callback-Funktion für das Widget
|
|
||||||
function wp_multi_update_dashboard_widget_content() {
|
|
||||||
$plugin_data = get_plugin_data(__FILE__);
|
|
||||||
$installed_version = $plugin_data['Version'];
|
|
||||||
$show_prereleases = get_option('wp_multi_update_show_prereleases', false);
|
|
||||||
|
|
||||||
$valid_release = wp_multi_fetch_latest_release($show_prereleases);
|
|
||||||
|
|
||||||
if ($valid_release === false) {
|
|
||||||
printf('<p>%s</p>', esc_html__('Fehler beim Abrufen der Versionsinformationen von Gitea.', 'wp-multi'));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($valid_release) {
|
|
||||||
$latest_version = $valid_release['tag_name'];
|
|
||||||
$release_notes = isset($valid_release['body']) ? $valid_release['body'] : '';
|
|
||||||
$is_prerelease = isset($valid_release['prerelease']) && $valid_release['prerelease'];
|
|
||||||
|
|
||||||
if (version_compare($installed_version, $latest_version, '>=')) {
|
|
||||||
printf(
|
|
||||||
'<p style="color: green;">%s</p>',
|
|
||||||
sprintf(
|
|
||||||
__('Ihre Version ist aktuell. Version %s ist die neueste Version.', 'wp-multi'),
|
|
||||||
esc_html($installed_version)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
printf(
|
|
||||||
'<p style="color: red;">%s</p>',
|
|
||||||
sprintf(
|
|
||||||
__('Es ist eine neue Version von WP Multi verfügbar! <strong>Version %s</strong> ist jetzt verfügbar.', 'wp-multi'),
|
|
||||||
esc_html($latest_version)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
printf(
|
|
||||||
'<p>%s: <strong>%s</strong></p>',
|
|
||||||
__('Aktuell installierte Version', 'wp-multi'),
|
|
||||||
esc_html($installed_version)
|
|
||||||
);
|
|
||||||
printf(
|
|
||||||
'<p>%s: <strong>%s</strong></p>',
|
|
||||||
__('Neue Version auf Gitea', 'wp-multi'),
|
|
||||||
esc_html($latest_version)
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($is_prerelease && $show_prereleases) {
|
|
||||||
printf('<p style="color: blue;">%s</p>', __('Dieses Update ist ein PreRelease.', 'wp-multi'));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($release_notes)) {
|
|
||||||
printf(
|
|
||||||
'<p><strong>%s:</strong></p><p>%s</p>',
|
|
||||||
__('Information zum Update', 'wp-multi'),
|
|
||||||
nl2br(esc_html($release_notes))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$button_text = $is_prerelease ? __('PreRelease herunterladen', 'wp-multi') : __('Update herunterladen', 'wp-multi');
|
|
||||||
$download_url = isset($valid_release['assets'][0]['browser_download_url']) ? $valid_release['assets'][0]['browser_download_url'] : '#';
|
|
||||||
printf(
|
|
||||||
'<p><a href="%s" class="button button-primary">%s</a></p>',
|
|
||||||
esc_url($download_url),
|
|
||||||
esc_html($button_text)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
printf('<p>%s</p>', esc_html__('Keine Versionsinformationen gefunden.', 'wp-multi'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Füge die Checkbox zu den allgemeinen Einstellungen hinzu
|
|
||||||
function wp_multi_update_general_settings() {
|
|
||||||
// Füge die Option für Pre-Releases unter "Allgemein" hinzu
|
|
||||||
add_settings_section(
|
|
||||||
'wp_multi_update_section',
|
|
||||||
__('WP Multi Update Einstellungen', 'wp-multi'),
|
|
||||||
null,
|
|
||||||
'general'
|
|
||||||
);
|
|
||||||
|
|
||||||
add_settings_field(
|
|
||||||
'wp_multi_update_show_prereleases',
|
|
||||||
__('Pre-Releases anzeigen', 'wp-multi'),
|
|
||||||
'wp_multi_update_show_prereleases_callback',
|
|
||||||
'general',
|
|
||||||
'wp_multi_update_section'
|
|
||||||
);
|
|
||||||
|
|
||||||
register_setting('general', 'wp_multi_update_show_prereleases', array(
|
|
||||||
'type' => 'boolean',
|
|
||||||
'description' => __('Aktivieren, um Pre-Releases im Dashboard und in den Versionsinformationen anzuzeigen.', 'wp-multi'),
|
|
||||||
'default' => 0,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
add_action('admin_init', 'wp_multi_update_general_settings');
|
|
||||||
|
|
||||||
// Callback-Funktion für das Anzeigen der Checkbox
|
|
||||||
function wp_multi_update_show_prereleases_callback() {
|
|
||||||
$checked = get_option('wp_multi_update_show_prereleases', false);
|
|
||||||
echo '<input type="checkbox" name="wp_multi_update_show_prereleases" value="1" ' . checked(1, $checked, false) . '/>';
|
|
||||||
// Hinweistext unter der Checkbox in Rot
|
|
||||||
echo '<p style="color: red;"><small>' . __('Achtung: Pre-Releases sind Beta-Versionen und können Fehler enthalten. Verwenden Sie sie nur, wenn Sie Fehlerberichterstattung oder Tests durchführen möchten.', 'wp-multi') . '</small></p>';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Index Verzeichnis [alphabetical_index]
|
* Index Verzeichnis [alphabetical_index]
|
||||||
|
|||||||
Reference in New Issue
Block a user