PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / trunk
MxChat – AI Chatbot & Content Generation for WordPress vtrunk
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | includes/admin-transcripts-page.php +74 -3 3.2.10trunk View file →
@@ -754,13 +754,14 @@
754 754 <th class="mxch-leads-col-lead"><?php esc_html_e('Lead', 'mxchat'); ?></th>
755 755 <th class="mxch-leads-col-count"><?php esc_html_e('Conversations', 'mxchat'); ?></th>
756 756 <th class="mxch-leads-col-last"><?php esc_html_e('Last seen', 'mxchat'); ?></th>
757 757 <th class="mxch-leads-col-page"><?php esc_html_e('Top page', 'mxchat'); ?></th>
758 + <th class="mxch-leads-col-consent"><?php esc_html_e('Consent', 'mxchat'); ?></th>
758 759 <th class="mxch-leads-col-actions"></th>
759 760 </tr>
760 761 </thead>
761 762 <tbody id="mxch-leads-tbody">
762 - <tr><td colspan="6" class="mxch-leads-loading"><span class="spinner is-active"></span></td></tr>
763 + <tr><td colspan="7" class="mxch-leads-loading"><span class="spinner is-active"></span></td></tr>
763 764 </tbody>
764 765 </table>
765 766 </div>
766 767
@@ -832,14 +833,15 @@
832 833 </div>
833 834
834 835 <div class="mxch-field">
835 836 <label class="mxch-field-label"><?php esc_html_e('Notification Email', 'mxchat'); ?></label>
836 - <input type="email"
837 + <?php /* type="text", not "email": the browser rejects a comma-separated list outright (plan 2f131a). Validation is server-side in MxChat_Utils. */ ?>
838 + <input type="text"
837 839 name="mxchat_transcripts_options[mxchat_notification_email]"
838 840 class="mxch-input mxchat-autosave-field"
839 841 value="<?php echo esc_attr($email); ?>"
840 842 data-nonce="<?php echo wp_create_nonce('mxchat_autosave_nonce'); ?>">
841 - <p class="mxch-field-description"><?php esc_html_e('Email address where notifications will be sent.', 'mxchat'); ?></p>
843 + <p class="mxch-field-description"><?php printf(esc_html__('Email address where notifications will be sent. Separate up to %d addresses with commas. Defaults to the site admin email.', 'mxchat'), (int) MxChat_Utils::NOTIFICATION_EMAIL_MAX); ?></p>
842 844 </div>
843 845 </div>
844 846 </div>
845 847
@@ -911,8 +913,9 @@
911 913 </div>
912 914 <div class="mxch-card-body">
913 915 <?php
914 916 $auto_delete = isset($options['mxchat_auto_delete_transcripts']) ? $options['mxchat_auto_delete_transcripts'] : 'never';
917 + $mxch_custom_retention = isset($options['mxchat_retention_days']) ? (int) $options['mxchat_retention_days'] : 0;
915 918 ?>
916 919 <div class="mxch-field">
917 920 <label class="mxch-field-label"><?php esc_html_e('Auto-Delete Old Transcripts', 'mxchat'); ?></label>
918 921 <select name="mxchat_transcripts_options[mxchat_auto_delete_transcripts]"
@@ -923,8 +926,76 @@
923 926 <option value="2weeks" <?php selected($auto_delete, '2weeks'); ?>><?php esc_html_e('After 2 Weeks', 'mxchat'); ?></option>
924 927 <option value="1month" <?php selected($auto_delete, '1month'); ?>><?php esc_html_e('After 1 Month', 'mxchat'); ?></option>
925 928 </select>
926 929 <p class="mxch-field-description"><?php esc_html_e('Automatically delete old chat transcripts to manage database size and privacy.', 'mxchat'); ?></p>
930 + <?php if ($mxch_custom_retention > 0) : ?>
931 + <p class="mxch-field-description" id="mxchat-retention-override-note">
932 + <strong><?php
933 + printf(
934 + /* translators: %d: the custom retention value in days */
935 + esc_html__('Overridden by Custom Retention below: transcripts are deleted after %d days.', 'mxchat'),
936 + $mxch_custom_retention
937 + );
938 + ?></strong>
939 + </p>
940 + <?php endif; ?>
941 + <?php
942 + // Surface the cron's real state next to the setting that
943 + // depends on it (plan-bc08a6): a configured retention whose
944 + // cleanup event is missing was previously invisible.
945 + $mxch_retention_days = isset($options['mxchat_retention_days']) ? (int) $options['mxchat_retention_days'] : 0;
946 + if ($auto_delete !== 'never' || $mxch_retention_days > 0) :
947 + $mxch_next_cleanup = wp_next_scheduled('mxchat_cleanup_old_transcripts');
948 + ?>
949 + <p class="mxch-field-description" id="mxchat-next-cleanup-status">
950 + <?php
951 + if ($mxch_next_cleanup) {
952 + printf(
953 + /* translators: %s: localized date and time of the next scheduled transcript cleanup */
954 + esc_html__('Next cleanup: %s', 'mxchat'),
955 + esc_html(wp_date(get_option('date_format') . ' ' . get_option('time_format'), $mxch_next_cleanup))
956 + );
957 + } else {
958 + esc_html_e('Next cleanup: not currently scheduled.', 'mxchat');
959 + }
960 + ?>
961 + </p>
962 + <?php endif; ?>
963 + </div>
964 +
965 + <div class="mxch-field">
966 + <label class="mxch-field-label" for="mxchat_retention_days"><?php esc_html_e('Custom Retention (Days)', 'mxchat'); ?></label>
967 + <input type="number"
968 + id="mxchat_retention_days"
969 + name="mxchat_transcripts_options[mxchat_retention_days]"
970 + class="mxch-input mxchat-autosave-field"
971 + value="<?php echo esc_attr($mxch_custom_retention); ?>"
972 + min="0"
973 + max="3650"
974 + step="1"
975 + data-nonce="<?php echo wp_create_nonce('mxchat_autosave_nonce'); ?>">
976 + <p class="mxch-field-description"><?php esc_html_e('Delete transcripts older than this many days (1&ndash;3650). When greater than 0 this overrides the dropdown above; set 0 to use the dropdown. Developers can adjust the final value with the mxchat_transcript_retention_days filter.', 'mxchat'); ?></p>
977 + </div>
978 + </div>
979 + </div>
980 +
981 + <!-- Privacy & Data Requests Card (plan b81e42) -->
982 + <div class="mxch-card">
983 + <div class="mxch-card-header">
984 + <h3 class="mxch-card-title">
985 + <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
986 + <?php esc_html_e('Privacy & Data Requests', 'mxchat'); ?>
987 + </h3>
988 + </div>
989 + <div class="mxch-card-body">
990 + <div class="mxch-field">
991 + <p class="mxch-field-description">
992 + <?php esc_html_e('Chat conversations — including captured emails, names, and visitor identifiers — are registered with WordPress\'s built-in privacy tools. When you run a personal data export or erasure request from the Tools menu, MxChat data is included automatically, so honouring a GDPR or CCPA request covers the chatbot with no extra steps.', 'mxchat'); ?>
993 + </p>
994 + <p>
995 + <a href="<?php echo esc_url(admin_url('export-personal-data.php')); ?>" class="mxch-btn mxch-btn-secondary mxch-btn-sm"><?php esc_html_e('Export Personal Data', 'mxchat'); ?></a>
996 + <a href="<?php echo esc_url(admin_url('erase-personal-data.php')); ?>" class="mxch-btn mxch-btn-secondary mxch-btn-sm"><?php esc_html_e('Erase Personal Data', 'mxchat'); ?></a>
997 + </p>
927 998 </div>
928 999 </div>
929 1000 </div>
930 1001 </div>