← All changes
|
includes/admin/plugins/class-charitable-admin-plugins-third-party.php
+36
-0
1.8.12.3
→
1.8.13
View file →
| @@ -404,8 +404,44 @@ | ||
| 404 | 404 | endif; |
| 405 | 405 | delete_transient( 'pushengage_activation_redirect' ); |
| 406 | 406 | } |
| 407 | 407 | |
| 408 | + /* | |
| 409 | + * Record that Charitable drove this WPVibe install, for cross-brand | |
| 410 | + * attribution. The option pair is UNPREFIXED on purpose: whichever | |
| 411 | + * Awesome Motive plugin installs the promoted plugin writes its own | |
| 412 | + * name into `<plugin>_source`, and each brand's own check-in claims | |
| 413 | + * only the installs whose source names IT. The key is `wpvibe_source`, | |
| 414 | + * the plugin's published `vibe-ai` slug notwithstanding, because that | |
| 415 | + * is the key every brand agrees to read - WPForms uses the identical | |
| 416 | + * pair for the same plugin. Guarded so a value another AM plugin | |
| 417 | + * already wrote is never overwritten: the option records who FIRST | |
| 418 | + * drove the install. This method is reached only through Charitable's | |
| 419 | + * own AJAX installer, so the attribution is never claimed for an | |
| 420 | + * activation the user made from the Plugins screen directly. | |
| 421 | + * | |
| 422 | + * Written as a fixed 'Charitable Lite', not a charitable_is_pro() | |
| 423 | + * ternary: this file ships in the Lite plugin, so the driver is | |
| 424 | + * always Charitable Lite. Pro's own copy of this method (Charitable | |
| 425 | + * Pro is a separate, standalone plugin - it never runs alongside | |
| 426 | + * Lite) writes 'Charitable Pro'. Both strings contain 'Charitable', | |
| 427 | + * which is all a receiving check-in matches on. | |
| 428 | + * | |
| 429 | + * Autoload explicitly OFF (fix round 2, ITEM 2): Pro's own copy of | |
| 430 | + * this method omits the third argument, which defaults an option | |
| 431 | + * to autoloaded. Both of these are read only from this one admin | |
| 432 | + * screen and from a weekly check-in - never on the front end, never | |
| 433 | + * on most admin requests - so there is no reason to load either of | |
| 434 | + * them into memory on every request the way autoloaded options are. | |
| 435 | + * Deliberately NOT matching Pro here. | |
| 436 | + * | |
| 437 | + * @since 1.8.13 | |
| 438 | + */ | |
| 439 | + if ( strstr( $basename, 'vibe-ai' ) && ! get_option( 'wpvibe_source' ) ) { | |
| 440 | + update_option( 'wpvibe_source', 'Charitable Lite', false ); | |
| 441 | + update_option( 'wpvibe_date', time(), false ); | |
| 442 | + } | |
| 443 | + | |
| 408 | 444 | if ( is_wp_error( $success ) ) { |
| 409 | 445 | wp_send_json_error( |
| 410 | 446 | array( |
| 411 | 447 | 'error' => $success->get_error_message(), |