| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/clients/client2/web20/web/wp-content/plugins/arni-crm-tracking/ |
Upload File : |
<?php
/**
* Plugin Name: ArNi CRM Tracking
* Plugin URI: https://www.arni-solutions.de
* Description: DSGVO-bewusstes, cookieloses First-Party-Tracking (serverseitig + JavaScript-Events) ohne externe Dienste. Daten im Admin sichtbar und per eigener REST-API für ein CRM abrufbar.
* Version: 1.0.0
* Requires at least: 5.6
* Requires PHP: 7.3
* Author: ArNi Solutions
* Author URI: https://www.arni-solutions.de
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: arni-crm-tracking
*
* @package ArNi_CRM_Tracking
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
define( 'ARNI_CRM_TRACKING_VERSION', '1.0.0' );
define( 'ARNI_CRM_TRACKING_DB_VERSION', '1.1.0' );
define( 'ARNI_CRM_TRACKING_FILE', __FILE__ );
define( 'ARNI_CRM_TRACKING_DIR', plugin_dir_path( __FILE__ ) );
define( 'ARNI_CRM_TRACKING_URL', plugin_dir_url( __FILE__ ) );
define( 'ARNI_CRM_TRACKING_BASENAME', plugin_basename( __FILE__ ) );
define( 'ARNI_CRM_TRACKING_REST_NS', 'arni-tracking/v1' );
define( 'ARNI_CRM_TRACKING_CRON_HOOK', 'arni_crm_tracking_cleanup' );
/* ---------------------------------------------------------------------------
* Klassen laden
* ------------------------------------------------------------------------- */
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-settings.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-helpers.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-geoip.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-database.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-reports.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-tracker.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-frontend.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-rest.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/class-arni-admin.php';
require_once ARNI_CRM_TRACKING_DIR . 'includes/functions.php';
/* ---------------------------------------------------------------------------
* Aktivierung / Deaktivierung
* ------------------------------------------------------------------------- */
register_activation_hook( __FILE__, array( 'Arni_CRM_Tracking_Plugin', 'activate' ) );
register_deactivation_hook( __FILE__, array( 'Arni_CRM_Tracking_Plugin', 'deactivate' ) );
/**
* Zentraler Bootstrap.
*/
final class Arni_CRM_Tracking_Plugin {
/** @var Arni_CRM_Tracking_Plugin|null */
private static $instance = null;
/** @var Arni_CRM_Tracking_Tracker */
public $tracker;
/** @var Arni_CRM_Tracking_Frontend */
public $frontend;
/** @var Arni_CRM_Tracking_Rest */
public $rest;
/** @var Arni_CRM_Tracking_Admin */
public $admin;
/**
* @return Arni_CRM_Tracking_Plugin
*/
public static function instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
// Schema-Upgrades bei Versionswechsel (z. B. nach Plugin-Update).
add_action( 'plugins_loaded', array( $this, 'maybe_upgrade' ) );
$this->tracker = new Arni_CRM_Tracking_Tracker();
$this->frontend = new Arni_CRM_Tracking_Frontend();
$this->rest = new Arni_CRM_Tracking_Rest();
if ( is_admin() ) {
$this->admin = new Arni_CRM_Tracking_Admin();
}
// Cron-Cleanup.
add_action( ARNI_CRM_TRACKING_CRON_HOOK, array( 'Arni_CRM_Tracking_Database', 'cleanup_old_data' ) );
}
/**
* Bei Versionswechsel Tabellen sicher (idempotent) aktualisieren.
*/
public function maybe_upgrade() {
if ( get_option( 'arni_crm_tracking_db_version' ) !== ARNI_CRM_TRACKING_DB_VERSION ) {
Arni_CRM_Tracking_Database::create_tables();
update_option( 'arni_crm_tracking_db_version', ARNI_CRM_TRACKING_DB_VERSION, false );
}
}
/**
* Aktivierungs-Hook: Tabellen, Defaults, Salt/API-Key, Cron.
*/
public static function activate() {
Arni_CRM_Tracking_Database::create_tables();
Arni_CRM_Tracking_Settings::install_defaults();
if ( ! wp_next_scheduled( ARNI_CRM_TRACKING_CRON_HOOK ) ) {
wp_schedule_event( time() + HOUR_IN_SECONDS, 'daily', ARNI_CRM_TRACKING_CRON_HOOK );
}
update_option( 'arni_crm_tracking_db_version', ARNI_CRM_TRACKING_DB_VERSION, false );
}
/**
* Deaktivierungs-Hook: Cron entfernen (Daten bleiben erhalten).
*/
public static function deactivate() {
$timestamp = wp_next_scheduled( ARNI_CRM_TRACKING_CRON_HOOK );
if ( $timestamp ) {
wp_unschedule_event( $timestamp, ARNI_CRM_TRACKING_CRON_HOOK );
}
wp_clear_scheduled_hook( ARNI_CRM_TRACKING_CRON_HOOK );
}
}
Arni_CRM_Tracking_Plugin::instance();