mirror of
https://github.com/WordPress/five-for-the-future.git
synced 2025-04-22 19:13:44 +03:00
parent
8c28881812
commit
574ab7fd4e
|
@ -257,3 +257,43 @@ function send_contributor_inactive_email( array $contributor ) : bool {
|
||||||
|
|
||||||
return send_email( $contributor['user_email'], $subject, $message );
|
return send_email( $contributor['user_email'], $subject, $message );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ask a company to update their pledge for accuracy.
|
||||||
|
*/
|
||||||
|
function send_pledge_update_email( WP_Post $pledge ) : bool {
|
||||||
|
$to = $pledge->{'5ftf_org-pledge-email'};
|
||||||
|
$subject = 'Please review your Five for the Future pledge';
|
||||||
|
$url = get_permalink( $pledge );
|
||||||
|
|
||||||
|
$message = "Hi $pledge->post_title, this is a bi-annual reminder to please review your Five for the Future pledge if you haven't lately. Please make sure your list of contributors and their hours/teams are accurate, especially if any folks at your company have left or changed roles recently.
|
||||||
|
|
||||||
|
Having an accurate roster helps Make team representatives find contributors to work on projects.
|
||||||
|
|
||||||
|
You can view your contributors by visiting $url. To edit your pledge, click on the Edit Pledge link and enter $to.
|
||||||
|
|
||||||
|
Thanks!";
|
||||||
|
$message = str_replace( "\t", '', $message );
|
||||||
|
|
||||||
|
return send_email( $to, $subject, $message, $pledge->ID );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ask a company to update their pledge for accuracy.
|
||||||
|
*/
|
||||||
|
function send_pledge_inactive_email( WP_Post $pledge ) : bool {
|
||||||
|
$to = $pledge->{'5ftf_org-pledge-email'};
|
||||||
|
$subject = 'Please review your Five for the Future pledge';
|
||||||
|
$url = get_permalink( $pledge );
|
||||||
|
|
||||||
|
$message = "Hi $pledge->post_title, we noticed that your Five for the Future pledge doesn't have any confirmed contributors right now. Would you like any help getting plugged into the WordPress project?
|
||||||
|
|
||||||
|
If you're no longer able to sponsor a contributor, that's ok! We understand, and appreciate the effort you've made. You can deactivate your pledge by visiting $url, clicking on the Edit Pledge link, and entering $to. You can reactivate it at any time in the future by contacting us.
|
||||||
|
|
||||||
|
If your pledge doesn't have any contributors in 2 months, then we'll automatically deactivate it. That's necessary in order to help Make team representatives find active contributors who can help with projects.
|
||||||
|
|
||||||
|
Thanks!";
|
||||||
|
$message = str_replace( "\t", '', $message );
|
||||||
|
|
||||||
|
return send_email( $to, $subject, $message, $pledge->ID );
|
||||||
|
}
|
||||||
|
|
|
@ -39,6 +39,10 @@ add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\enqueue_assets' );
|
||||||
add_action( 'pledge_footer', __NAMESPACE__ . '\render_manage_link_request' );
|
add_action( 'pledge_footer', __NAMESPACE__ . '\render_manage_link_request' );
|
||||||
add_action( 'wp_footer', __NAMESPACE__ . '\render_js_templates' );
|
add_action( 'wp_footer', __NAMESPACE__ . '\render_js_templates' );
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
add_action( 'init', __NAMESPACE__ . '\schedule_cron_jobs' );
|
||||||
|
add_action( '5ftf_send_update_reminders', __NAMESPACE__ . '\send_update_reminders' );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register all the things.
|
* Register all the things.
|
||||||
*
|
*
|
||||||
|
@ -549,3 +553,74 @@ function render_js_templates() {
|
||||||
require_once FiveForTheFuture\get_views_path() . 'modal-request-manage-link.php';
|
require_once FiveForTheFuture\get_views_path() . 'modal-request-manage-link.php';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Schedule cron jobs.
|
||||||
|
*
|
||||||
|
* This needs to run on the `init` action, because Cavalcade isn't fully loaded before that, and events
|
||||||
|
* wouldn't be scheduled.
|
||||||
|
*
|
||||||
|
* @see https://dotorg.trac.wordpress.org/changeset/15351/
|
||||||
|
*/
|
||||||
|
function schedule_cron_jobs() {
|
||||||
|
if ( ! wp_next_scheduled( '5ftf_send_update_reminders' ) ) {
|
||||||
|
wp_schedule_event( time(), 'daily', '5ftf_send_update_reminders' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Periodically ask companies to review their pledge for accuracy.
|
||||||
|
*/
|
||||||
|
function send_update_reminders() : void {
|
||||||
|
$resend_interval = 6 * MONTH_IN_SECONDS;
|
||||||
|
$resend_threshold = time() - ( $resend_interval );
|
||||||
|
$deactivation_date = time() + ( 2 * MONTH_IN_SECONDS );
|
||||||
|
|
||||||
|
$pledges = get_posts( array(
|
||||||
|
'post_type' => CPT_ID,
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'posts_per_page' => 15, // Limit # of emails to maintain IP reputation.
|
||||||
|
|
||||||
|
// New pledges haven't had time to become inaccurate yet.
|
||||||
|
'date_query' => array(
|
||||||
|
'column' => 'post_date',
|
||||||
|
'before' => "$resend_interval seconds ago",
|
||||||
|
),
|
||||||
|
|
||||||
|
'meta_query' => array(
|
||||||
|
'relation' => 'AND',
|
||||||
|
|
||||||
|
array(
|
||||||
|
'relation' => 'OR',
|
||||||
|
array(
|
||||||
|
'key' => '5ftf_last_update_reminder',
|
||||||
|
'compare' => 'NOT EXISTS',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'key' => '5ftf_last_update_reminder',
|
||||||
|
'value' => $resend_threshold,
|
||||||
|
'compare' => '<',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
array(
|
||||||
|
'key' => '5ftf_inactive_deactivate_date',
|
||||||
|
'compare' => 'NOT EXISTS',
|
||||||
|
),
|
||||||
|
)
|
||||||
|
) );
|
||||||
|
|
||||||
|
foreach ( $pledges as $pledge ) {
|
||||||
|
$contributor_count = absint( $pledge->{'5ftf_pledge-confirmed-contributors'} );
|
||||||
|
|
||||||
|
if ( $contributor_count ) {
|
||||||
|
Email\send_pledge_update_email( $pledge );
|
||||||
|
} else {
|
||||||
|
Email\send_pledge_inactive_email( $pledge );
|
||||||
|
update_post_meta( $pledge->ID, '5ftf_inactive_deactivate_date', $deactivation_date );
|
||||||
|
}
|
||||||
|
|
||||||
|
update_post_meta( $pledge->ID, '5ftf_last_update_reminder', time() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue