diff --git a/README.md b/README.md index 6da2870..6527d43 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,15 @@ - GitBucket: `https://niphredil.duckdns.org/git/fabio/tonitalia-pluginsoci.git` +## Mailchimp (v1.6+) + +In **TON Iscrizioni → Impostazioni → Integrazione Mailchimp** configura API key e List ID. +I richiedenti che accettano la newsletter nel form vengono iscritti automaticamente alla lista configurata. + ## Documentazione -Vedi `readme.txt` per changelog e note GDPR (formato WordPress.org). +Vedi `readme.txt` per changelog e note GDPR (formato WordPress.org). +Vedi `deploy/wiki-tonitalia-pluginsoci.md` per la guida operativa completa. ## Versione diff --git a/admin/class-admin.php b/admin/class-admin.php index d97a111..df2bfd4 100644 --- a/admin/class-admin.php +++ b/admin/class-admin.php @@ -25,6 +25,8 @@ add_action( 'admin_post_ton_reg_gdpr_erase', array( __CLASS__, 'gdpr_erase' ) ); add_action( 'admin_post_ton_reg_upload_document', array( __CLASS__, 'upload_document' ) ); add_action( 'admin_post_ton_reg_delete_document', array( __CLASS__, 'delete_document' ) ); + add_action( 'admin_post_ton_reg_mailchimp_test', array( __CLASS__, 'mailchimp_test' ) ); + add_action( 'admin_post_ton_reg_mailchimp_retry', array( __CLASS__, 'mailchimp_retry' ) ); } /** @@ -88,6 +90,7 @@ 'ton_reg_captcha_enabled', 'ton_reg_newsletter_required', 'ton_reg_delete_users_on_uninstall', + 'ton_reg_mailchimp_enabled', ); $plain_text = array( @@ -102,10 +105,42 @@ 'ton_reg_rate_limit_max', 'ton_reg_rate_limit_window', 'ton_reg_privacy_version', + 'ton_reg_mailchimp_tags', + ); + + $skip_auto = array( + 'ton_reg_mailchimp_api_key', + 'ton_reg_mailchimp_list_id', + 'ton_reg_mailchimp_permission_ids', + ); + + register_setting( + 'ton_reg_settings', + 'ton_reg_mailchimp_api_key', + array( + 'type' => 'string', + 'sanitize_callback' => array( 'TON_Reg_Mailchimp', 'sanitize_api_key' ), + 'show_in_rest' => false, + 'default' => '', + ) + ); + + register_setting( + 'ton_reg_settings', + 'ton_reg_mailchimp_list_id', + array( + 'type' => 'string', + 'sanitize_callback' => array( 'TON_Reg_Mailchimp', 'sanitize_list_id' ), + 'show_in_rest' => false, + 'default' => '', + ) ); $options = array_keys( TON_Reg_Defaults::options() ); foreach ( $options as $option ) { + if ( in_array( $option, $skip_auto, true ) ) { + continue; + } if ( in_array( $option, $checkboxes, true ) ) { $sanitize = array( __CLASS__, 'sanitize_checkbox' ); } elseif ( in_array( $option, $plain_text, true ) ) { @@ -318,6 +353,7 @@
' . esc_html__( 'Mailchimp: in attesa di sincronizzazione.', 'ton-italia-registration' ) . '
'; + } + return; + } + + $labels = array( + 'pending' => __( 'Mailchimp: sincronizzazione in corso', 'ton-italia-registration' ), + 'synced' => __( 'Mailchimp: iscritto correttamente', 'ton-italia-registration' ), + 'error' => __( 'Mailchimp: errore di sincronizzazione', 'ton-italia-registration' ), + 'skipped' => __( 'Mailchimp: non sincronizzato (integrazione disattiva)', 'ton-italia-registration' ), + ); + + $label = $labels[ $status ] ?? $status; + echo '' . esc_html( $label ) . '
'; + + if ( ! empty( $row->mailchimp_synced_at ) && 'synced' === $status ) { + echo '' . esc_html( self::format_consent_datetime( $row->mailchimp_synced_at ) ) . '
'; + } + + if ( ! empty( $row->mailchimp_error ) && 'error' === $status ) { + echo '' . esc_html( $row->mailchimp_error ) . '
'; + } + + if ( TON_Reg_Mailchimp::is_configured() && in_array( $status, array( 'error', 'pending' ), true ) ) { + $retry_url = wp_nonce_url( + admin_url( 'admin-post.php?action=ton_reg_mailchimp_retry&id=' . (int) $row->id ), + 'ton_reg_mc_retry_' . (int) $row->id + ); + echo '' . esc_html__( 'Riprova iscrizione Mailchimp', 'ton-italia-registration' ) . '
'; + } + } + + /** * @param string $datetime UTC datetime from DB. * @return string */ @@ -403,6 +479,13 @@ $msg = sanitize_text_field( wp_unslash( rawurldecode( $_GET['doc_error'] ) ) ); echo '' . esc_html( $msg ) . '
' . esc_html__( 'Sincronizzazione Mailchimp completata.', 'ton-italia-registration' ) . '
' . esc_html( $msg ) . '
@@ -540,6 +630,39 @@
| + | /> | +
|---|---|
| + | + + + | +
| + | + + + | +
| + | + + + | +