Files
root b6df4dbb92 Snapshot: MLS sync fixes, image refresh, plugin/theme updates
MLS plugin fixes from this session:
- Fix silent insert failures: location column NOT NULL was rejecting wpdb->insert calls,
  causing ~18k new properties since Dec 2025 to be lost. Inserts now build raw SQL
  with ST_PointFromText so the spatial column is populated atomically.
- Auto-refresh expired media URLs in MLS_Media_Handler::fetch_and_cache(), guarded by
  a property-level GET_LOCK so concurrent fetches share one API refresh.
- Normalize WP_Error to null in mls_get_property_image() so callers can rely on the
  documented string|null contract.
- Support comma-separated property_type filters in MLS_Query and MLS_Cluster so the
  homepage "View All Commercial" link (?property_type=Commercial+Sale,Land,Farm)
  actually filters correctly.
- Incremental sync now looks back 10 minutes past the latest modification timestamp
  as a safety margin against missed records.
- Smart sync exits silently (info-level, not warning) when a full sync is in progress.

Operational:
- New cron: weekly full sync Sundays at 3 AM (/usr/local/bin/mls-full-sync).
- New cron: hourly 2GB cap on mls-thumbnails/ and cache/transformed-images/
  (/usr/local/bin/mls-image-cache-cap).
- Logrotate config for wp-content/debug.log (2-day retention, daily rotation,
  delaycompress).

Repo policy:
- CLAUDE.md updated with explicit "commit everything except build artifacts" policy.
- .gitignore: untrack runtime image caches and debug.log rotations.

Other modifications in this snapshot are pre-existing in-flight theme/plugin/db_content_updates work.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 15:32:23 +00:00

84 lines
3.3 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Admin/Settings/LiteConnect Education modal template for Lite.
*
* @since 1.7.4
*/
use WPForms\Integrations\AI\Helpers as AIHelpers;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
?>
<script type="text/html" id="tmpl-wpforms-settings-lite-connect-modal-content">
<div class="wpforms-settings-lite-connect-modal-content">
<img src="<?php echo esc_url( WPFORMS_PLUGIN_URL . 'assets/images/sullie-alt.png' ); ?>" alt="<?php esc_attr_e( 'Sullie the WPForms mascot', 'wpforms-lite' ); ?>" class="wpforms-mascot">
<h2><?php esc_html_e( 'Form Entry Backups', 'wpforms-lite' ); ?></h2>
<p>
<?php esc_html_e( 'If your email notifications aren\'t delivered, youll lose form entries. Turn on free backups now and restore your entries when you upgrade to Pro.', 'wpforms-lite' ); ?>
</p>
<div class="wpforms-features">
<section>
<img src="<?php echo esc_url( WPFORMS_PLUGIN_URL . 'assets/images/lite-connect/cloud.svg' ); ?>" alt="<?php esc_attr_e( 'Backup and Restore.', 'wpforms-lite' ); ?>">
<aside>
<h4><?php esc_html_e( 'Backup & Restore', 'wpforms-lite' ); ?></h4>
<p>
<?php esc_html_e( 'When you upgrade to WPForms Pro, we\'ll automatically restore all of the entries that you collected in WPForms Lite.', 'wpforms-lite' ); ?>
</p>
</aside>
</section>
<section>
<img src="<?php echo esc_url( WPFORMS_PLUGIN_URL . 'assets/images/lite-connect/lock-alt.svg' ); ?>" alt="<?php esc_attr_e( 'Security and Protection.', 'wpforms-lite' ); ?>">
<aside>
<h4><?php esc_html_e( 'Security & Protection', 'wpforms-lite' ); ?></h4>
<p>
<?php esc_html_e( 'Entries are stored securely and privately until you\'re ready to upgrade. Our team cannot view your forms or entries.', 'wpforms-lite' ); ?>
</p>
</aside>
</section>
<?php if ( ! AIHelpers::is_disabled() ) : ?>
<section>
<img src="<?php echo esc_url( WPFORMS_PLUGIN_URL . 'assets/images/lite-connect/lock-ai.svg' ); ?>" alt="<?php esc_attr_e( 'WPForms AI.', 'wpforms-lite' ); ?>">
<aside>
<h4><?php esc_html_e( 'WPForms AI', 'wpforms-lite' ); ?></h4>
<p>
<?php esc_html_e( 'Build your forms even faster with state-of-the-art generative AI built right into the form builder.', 'wpforms-lite' ); ?>
</p>
</aside>
</section>
<?php endif; ?>
<section>
<img src="<?php echo esc_url( WPFORMS_PLUGIN_URL . 'assets/images/lite-connect/envelope.svg' ); ?>" alt="<?php esc_attr_e( 'WPForms Newsletter.', 'wpforms-lite' ); ?>">
<aside>
<h4><?php esc_html_e( 'WPForms Newsletter', 'wpforms-lite' ); ?></h4>
<p>
<?php esc_html_e( 'Ready to grow your website? Get the latest pro tips and updates from the WPForms team.', 'wpforms-lite' ); ?>
</p>
</aside>
</section>
</div>
<footer>
<?php
printf(
wp_kses( /* translators: %s - WPForms Terms of Service link. */
__( 'By enabling Lite Connect you agree to our <a href="%s" target="_blank" rel="noopener noreferrer">Terms of Service</a> and to share your information with WPForms.', 'wpforms-lite' ),
[
'a' => [
'href' => [],
'target' => [],
'rel' => [],
],
]
),
esc_url( wpforms_utm_link( 'https://wpforms.com/terms/', 'Lite Connect Modal', 'Terms of Service' ) )
);
?>
</footer>
</div>
</script>