diff --git a/ddhh-job-manager.php b/ddhh-job-manager.php index 037ab53..8fc1dcf 100644 --- a/ddhh-job-manager.php +++ b/ddhh-job-manager.php @@ -42,6 +42,8 @@ require_once DDHH_JM_PLUGIN_DIR . 'includes/class-access-control.php'; require_once DDHH_JM_PLUGIN_DIR . 'includes/class-notifications.php'; require_once DDHH_JM_PLUGIN_DIR . 'includes/class-archive.php'; require_once DDHH_JM_PLUGIN_DIR . 'includes/class-admin-ui.php'; +require_once DDHH_JM_PLUGIN_DIR . 'includes/class-user-preferences.php'; +require_once DDHH_JM_PLUGIN_DIR . 'includes/class-scheduler.php'; require_once DDHH_JM_PLUGIN_DIR . 'includes/class-ddhh-job-manager.php'; /** diff --git a/includes/class-ddhh-job-manager.php b/includes/class-ddhh-job-manager.php index a1adadf..1c85a4c 100644 --- a/includes/class-ddhh-job-manager.php +++ b/includes/class-ddhh-job-manager.php @@ -72,5 +72,11 @@ class DDHH_JM_Job_Manager { if ( is_admin() ) { add_action( 'init', array( 'DDHH_JM_Admin_UI', 'setup_hooks' ) ); } + + // Initialize user preferences + add_action( 'init', array( 'DDHH_JM_User_Preferences', 'setup_hooks' ) ); + + // Initialize scheduler for async email processing + add_action( 'init', array( 'DDHH_JM_Scheduler', 'setup_hooks' ) ); } } diff --git a/includes/class-scheduler.php b/includes/class-scheduler.php new file mode 100644 index 0000000..565059a --- /dev/null +++ b/includes/class-scheduler.php @@ -0,0 +1,84 @@ + $batch, + 'job_id' => $job_id, + ), + 'email-notifications', + true, + 10 + ); + + $batch_count++; + error_log( sprintf( + 'DDHH_JM_Scheduler: Scheduled batch %d with %d users for job ID %d', + $batch_count, + count( $batch ), + $job_id + ) ); + } + + error_log( sprintf( + 'DDHH_JM_Scheduler: Scheduled %d total batches for %d users for job ID %d', + $batch_count, + count( $user_ids ), + $job_id + ) ); + + return $batch_count; + } +} diff --git a/includes/class-user-preferences.php b/includes/class-user-preferences.php new file mode 100644 index 0000000..a6e6b88 --- /dev/null +++ b/includes/class-user-preferences.php @@ -0,0 +1,138 @@ +roles, true ) ) { + return; + } + + // Get current preference + $notify_enabled = get_user_meta( $user->ID, self::META_KEY_NOTIFY, true ); + + // Create nonce for security + wp_nonce_field( self::NONCE_ACTION, 'ddhh_jm_user_preferences_nonce' ); + + ?> +
| Stellenangebote | +
+
+ + Sie erhalten eine E-Mail, wenn ein neues Stellenangebot veröffentlicht wird. + + |
+
|---|