diff --git a/plugins/wporg-5ftf/includes/pledge-form.php b/plugins/wporg-5ftf/includes/pledge-form.php index 95e6276..b7ac162 100755 --- a/plugins/wporg-5ftf/includes/pledge-form.php +++ b/plugins/wporg-5ftf/includes/pledge-form.php @@ -271,7 +271,7 @@ function process_form_remove( $pledge_id, $auth_token ) { ); } - $result = Pledge\deactivate( $pledge_id, true ); + $result = Pledge\deactivate( $pledge_id, true, 'Organization admin deactivated via Manage form.' ); if ( is_wp_error( $result ) ) { return $result; diff --git a/plugins/wporg-5ftf/includes/pledge-log.php b/plugins/wporg-5ftf/includes/pledge-log.php index f7bdca7..ef50366 100644 --- a/plugins/wporg-5ftf/includes/pledge-log.php +++ b/plugins/wporg-5ftf/includes/pledge-log.php @@ -21,6 +21,8 @@ add_action( 'transition_post_status', __NAMESPACE__ . '\capture_transition_post_ add_action( FiveForTheFuture\PREFIX . '_add_pledge_contributors', __NAMESPACE__ . '\capture_add_pledge_contributors', 99, 3 ); add_action( FiveForTheFuture\PREFIX . '_remove_contributor', __NAMESPACE__ . '\capture_remove_contributor', 99, 3 ); add_action( FiveForTheFuture\PREFIX . '_email_result', __NAMESPACE__ . '\capture_email_result', 99, 6 ); +add_action( FiveForTheFuture\PREFIX . '_deactivated_pledge', __NAMESPACE__ . '\capture_pledge_deactivation', 99, 4 ); + /** * Adds a meta box for the log on the custom post type. @@ -121,7 +123,7 @@ function add_log_entry( $pledge_id, $type, $message, array $data = array(), $use } elseif ( 'cli' === php_sapi_name() ) { /* - * `wp_shell`, etc can only be run from w.org sandboxes, and the hostname is the best way to identify + * `wp shell`, etc can only be run from w.org sandboxes, and the hostname is the best way to identify * which sandbox was used. */ $entry['user_id'] = gethostname(); @@ -385,3 +387,18 @@ function capture_email_result( $to, $subject, $message, $headers, $result, $pled compact( 'to', 'subject', 'message', 'headers', 'result' ) ); } + +/** + * Capture the results of an attempt to send an email. + */ +function capture_pledge_deactivation( int $pledge_id, bool $notify, string $reason, /* mixed */ $result ) : void { + add_log_entry( + $pledge_id, + 'deactivated_pledge', + sprintf( + 'Reason for deactivation was: %s', + $reason ?? 'No reason given.' + ), + compact( 'notify', 'result' ) + ); +} diff --git a/plugins/wporg-5ftf/includes/pledge.php b/plugins/wporg-5ftf/includes/pledge.php index 38385b3..70b3061 100755 --- a/plugins/wporg-5ftf/includes/pledge.php +++ b/plugins/wporg-5ftf/includes/pledge.php @@ -205,7 +205,7 @@ function handle_activation_action( $post_id ) { $sendback = remove_query_arg( array( 'deactivated', 'reactivated' ), $sendback ); if ( 'deactivate' === $action ) { - deactivate( $post_id ); + deactivate( $post_id, false, 'Site admin deactivated via wp-admin list table.' ); wp_redirect( add_query_arg( 'deactivated', 1, $sendback ) ); exit(); } else { @@ -368,10 +368,11 @@ function create_new_pledge( $name ) { * * @param int $pledge_id The pledge to deactivate. * @param bool $notify Whether the pledge admin should be notified of the deactivation. + * @param string $reason The reason why the pledge is being deactivated. * * @return int|WP_Error Post ID on success. Otherwise WP_Error. */ -function deactivate( $pledge_id, $notify = false ) { +function deactivate( $pledge_id, $notify = false, $reason = '' ) { $pledge = get_post( $pledge_id ); $result = wp_update_post( array( @@ -385,6 +386,8 @@ function deactivate( $pledge_id, $notify = false ) { Email\send_pledge_deactivation_email( $pledge ); } + do_action( FiveForTheFuture\PREFIX . '_deactivated_pledge', $pledge_id, $notify, $reason, $result ); + return $result; }