diff --git a/includes/class-notifications.php b/includes/class-notifications.php new file mode 100644 index 0000000..449f203 --- /dev/null +++ b/includes/class-notifications.php @@ -0,0 +1,112 @@ +post_type ) { + return; + } + + // Only send notification on initial submission to pending + // Avoid sending on every save when already pending + if ( 'pending' !== $new_status || 'pending' === $old_status ) { + return; + } + + // Get admin email + $admin_email = get_option( 'admin_email' ); + if ( ! $admin_email ) { + error_log( 'DDHH Job Manager: Cannot send admin notification - admin_email option not set' ); + return; + } + + // Prepare email data + $job_title = $post->post_title; + $author = get_userdata( $post->post_author ); + $author_name = $author ? $author->display_name : 'Unbekannt'; + $author_org = get_user_meta( $post->post_author, 'ddhh_org_name', true ); + if ( empty( $author_org ) ) { + $author_org = 'Nicht angegeben'; + } + + // Get ACF fields + $job_location = get_field( 'job_location', $post->ID ); + $job_type = get_field( 'job_type', $post->ID ); + + // Get submission date + $submission_date = get_the_date( 'd.m.Y H:i', $post->ID ); + + // Get edit link + $edit_link = get_edit_post_link( $post->ID, '' ); + + // Build email subject + $subject = sprintf( 'Neues Stellenangebot zur Prüfung: %s', $job_title ); + + // Build email body + $body = sprintf( + "Ein neues Stellenangebot wurde eingereicht und wartet auf Ihre Prüfung.\n\n" . + "Titel: %s\n" . + "Anbieter: %s (%s)\n" . + "Standort: %s\n" . + "Art: %s\n" . + "Eingereicht am: %s\n\n" . + "Prüfen Sie das Stellenangebot hier:\n%s\n\n" . + "---\n" . + "Diese E-Mail wurde automatisch gesendet.", + $job_title, + $author_name, + $author_org, + $job_location ? $job_location : 'Nicht angegeben', + $job_type ? $job_type : 'Nicht angegeben', + $submission_date, + $edit_link + ); + + // Set email headers + $headers = array( 'Content-Type: text/html; charset=UTF-8' ); + + // Convert plain text to HTML with line breaks + $html_body = nl2br( esc_html( $body ) ); + + // Send email + $sent = wp_mail( $admin_email, $subject, $html_body, $headers ); + + // Log if email fails + if ( ! $sent ) { + error_log( + sprintf( + 'DDHH Job Manager: Failed to send admin notification for job #%d "%s". Email may be disabled in Local WP environment.', + $post->ID, + $job_title + ) + ); + } + } +}