WordPress.org

Make WordPress Core

Ticket #25603: 25603.23.diff

File 25603.23.diff, 5.9 KB (added by nacin, 6 years ago)
  • src/wp-admin/about.php

     
    5252                        <p><?php _e( 'You&#8217;ll still need to click &#8220;Update Now&#8221; once WordPress 3.8 is released, but we&#8217;ve never had more confidence in that beautiful blue button.' ); ?></p>
    5353                </div>
    5454                <?php
    55                         $can_auto_update = wp_http_supports( 'ssl' );
     55                if ( current_user_can( 'update_core' ) ) {
     56                        $future_minor_update = (object) array(
     57                                'current'       => $wp_version . '.1.next.minor',
     58                                'version'       => $wp_version . '.1.next.minor',
     59                                'php_version'   => $required_php_version,
     60                                'mysql_version' => $required_mysql_version,
     61                        );
     62                        require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
     63                        $updater = new WP_Automatic_Updater;
     64                        $can_auto_update = wp_http_supports( 'ssl' ) && $updater->should_update( 'core', $future_minor_update, ABSPATH );
     65
    5666                        if ( $can_auto_update ) {
    57                                 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
    58                                 $upgrader = new WP_Automatic_Updater;
    59                                 $future_minor_update = (object) array(
    60                                         'current'       => $wp_version . '.1.next.minor',
    61                                         'version'       => $wp_version . '.1.next.minor',
    62                                         'php_version'   => $required_php_version,
    63                                         'mysql_version' => $required_mysql_version,
    64                                 );
    65                                 $can_auto_update = $upgrader->should_update( 'core', $future_minor_update, ABSPATH );
     67                                echo '<p class="about-auto-update cool">' . __( 'This site <strong>is</strong> able to apply these updates automatically. Cool!' ). '</p>';
     68
     69                        // If the updater is disabled entirely, don't show them anything.
     70                        } elseif ( ! $updater->is_disabled() ) {
     71                                echo '<p class="about-auto-update">';
     72                                // If this is is filtered to false, they won't get emails, so don't claim we will.
     73                                // Assumption: If the user can update core, they can see what the admin email is.
     74
     75                                /** This filter is documented in wp-admin/includes/class-wp-upgrader.php */
     76                                if ( apply_filters( 'send_core_update_notification_email', true, $future_minor_update ) ) {
     77                                        printf( __( 'This site <strong>is not</strong> able to apply these updates automatically. But we&#8217;ll email %s when there is a new security release.' ), esc_html( get_site_option( 'admin_email' ) ) );
     78                                } else {
     79                                        _e( 'This site <strong>is not</strong> able to apply these updates automatically.' );
     80                                }
     81                                echo '</p>';
    6682                        }
    67                         if ( $can_auto_update ) : ?>
    68                                 <p class="about-auto-update cool"><?php _e( 'This site <strong>is</strong> able to apply these updates automatically. Cool!' ); ?></p>
    69                         <?php else : ?>
    70                                 <p class="about-auto-update"><?php printf( __( 'This site <strong>is not</strong> able to apply these updates automatically. But we&#8217;ll email %s when there is a new security release.' ), esc_html( get_site_option( 'admin_email' ) ) ); ?></p>
    71                 <?php endif; ?>
     83                }
     84                ?>
    7285        </div>
    7386</div>
    7487
  • src/wp-admin/includes/class-wp-upgrader.php

     
    17391739                // If we can't do an auto core update, we may still be able to email the user.
    17401740                if ( ! $skin->request_filesystem_credentials( false, $context ) || $this->is_vcs_checkout( $context ) ) {
    17411741                        if ( 'core' == $type )
    1742                                 $this->notify_core_update( $item );
     1742                                $this->send_core_update_notification_email( $item );
    17431743                        return false;
    17441744                }
    17451745
     
    17701770
    17711771                if ( ! $update ) {
    17721772                        if ( 'core' == $type )
    1773                                 $this->notify_core_update( $item );
     1773                                $this->send_core_update_notification_email( $item );
    17741774                        return false;
    17751775                }
    17761776
     
    17981798         *
    17991799         * @param object $item The update offer.
    18001800         */
    1801         protected function notify_core_update( $item ) {
    1802                 // See if we need to notify users of a core update.
    1803                 if ( empty( $item->notify_email ) )
    1804                         return false;
    1805 
     1801        protected function send_core_update_notification_email( $item ) {
    18061802                $notify   = true;
    18071803                $notified = get_site_option( 'auto_core_update_notified' );
    18081804
     
    18101806                if ( $notified && $notified['email'] == get_site_option( 'admin_email' ) && $notified['version'] == $item->current )
    18111807                        return false;
    18121808
     1809                // See if we need to notify users of a core update.
     1810                $notify = ! empty( $item->notify_email );
     1811
     1812                /**
     1813                 * Whether to notify the site administrator of a new core update.
     1814                 *
     1815                 * By default, administrators are notified when the update offer received from WordPress.org
     1816                 * sets a particular flag. This allows for discretion in if and when to notify.
     1817                 *
     1818                 * This filter only fires once per release -- if the same email address was already
     1819                 * notified of the same new version, we won't repeatedly email the administrator.
     1820                 *
     1821                 * This filter is also used on about.php to check if a plugin has disabled these notifications.
     1822                 *
     1823                 * @since 3.7.0
     1824                 *
     1825                 * @param bool $notify Whether the site administrator is notified.
     1826                 * @param object $item The update offer.
     1827                 */
     1828                if ( ! apply_filters( 'send_core_update_notification_email', $notify, $item ) )
     1829                        return false;
     1830
    18131831                $this->send_email( 'manual', $item );
    18141832                return true;
    18151833        }
     
    21272145                 * @since 3.7.0
    21282146                 *
    21292147                 * @param bool   $send        Whether to send the email. Default true.
    2130                  * @param string $type        The type of email to send. Can be one of 'success', 'fail', 'manual', 'critical'.
     2148                 * @param string $type        The type of email to send. Can be one of 'success', 'fail', 'critical'.
    21312149                 * @param object $core_update The update offer that was attempted.
    21322150                 * @param mixed  $result      The result for the core update. Can be WP_Error.
    21332151                 */
    2134                 if ( ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) )
     2152                if ( 'manual' !== $type && ! apply_filters( 'auto_core_update_send_email', true, $type, $core_update, $result ) )
    21352153                        return;
    21362154
    21372155                switch ( $type ) {