PluginProbe
Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification / 5.8.0
Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification v5.8.0
5.8.0 5.8.1 5.7.0 5.6.2 5.6.3 5.6.1 5.6.0 5.5.0 5.4.0 5.3.2 5.3.1 5.1.6 5.1.5 trunk 2.1.5 2.11 2.12 2.13 2.15 3.0.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.51 All 41 releases
← All changes | OnUpdate.php +34 -0 5.3.2 → 5.8.0 View file →
@@ -185,8 +185,37 @@
185 185 'plugin' => 'double-opt-in',
186 186 ] );
187 187 }
188 188
189 + if ( version_compare( $currentVersion, '5.6.0' ) < 0 ) {
190 + $logger->info( 'Updating to version 5.6.0 (adds follow-up status table)', [
191 + 'plugin' => 'double-opt-in',
192 + 'current' => $currentVersion,
193 + 'target' => '5.6.0',
194 + ] );
195 +
196 + // New table only. Opt-ins confirmed before this version get no
197 + // rows and are shown as "no status recorded" — deliberately not
198 + // replayed, which would re-send historic mails.
199 + \Forge12\DoubleOptIn\Repository\FollowUpSchema::install();
200 +
201 + update_option( FORGE12_OPTIN_SLUG . '_version', '5.6.0' );
202 + }
203 +
204 + if ( version_compare( $currentVersion, '5.8.0' ) < 0 ) {
205 + $logger->info( 'Updating to version 5.8.0 (adds confirmation mail status columns)', [
206 + 'plugin' => 'double-opt-in',
207 + 'current' => $currentVersion,
208 + 'target' => '5.8.0',
209 + ] );
210 +
211 + // mail_status / mail_error / mail_status_at. Existing rows keep an
212 + // empty status ("recorded before 5.8"), nothing is back-filled.
213 + createTableOptin();
214 +
215 + update_option( FORGE12_OPTIN_SLUG . '_version', '5.8.0' );
216 + }
217 +
189 218 // Safety net: Ensure both tables always exist regardless of stored version.
190 219 // Handles edge cases such as database migrations, manual file uploads, or
191 220 // restored backups that are missing the custom tables.
192 221 global $wpdb;
@@ -206,8 +235,13 @@
206 235 $auditTable = $wpdb->prefix . 'f12_cf7_doubleoptin_audit_log';
207 236 if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $auditTable ) ) !== $auditTable ) {
208 237 $logger->warning( 'Audit log table missing – recreating.', [ 'plugin' => 'double-opt-in', 'table' => $auditTable ] );
209 238 createTableAuditLog();
239 + }
240 +
241 + if ( ! \Forge12\DoubleOptIn\Repository\FollowUpSchema::isCurrent() ) {
242 + $logger->warning( 'Follow-up table missing or outdated – running dbDelta.', [ 'plugin' => 'double-opt-in' ] );
243 + \Forge12\DoubleOptIn\Repository\FollowUpSchema::install();
210 244 }
211 245
212 246 // Always pin the stored version to the live plugin version. The
213 247 // version_compare ladder above only writes the target of the last