Commit Graph

195 Commits

Author SHA1 Message Date
Andrew Nacin
f36fbb550c New, better error message when we realize we won't be able to copy a file and continue with the update.
fixes #25652.


git-svn-id: https://develop.svn.wordpress.org/trunk@25870 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 18:20:51 +00:00
Andrew Nacin
1a7bfffd0b Only enforce disk free space checks when doing background updates.
see #25652.


git-svn-id: https://develop.svn.wordpress.org/trunk@25869 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 18:17:13 +00:00
Andrew Nacin
c87ad6023d Spell out duplicate hook locations.
props DrewAPicture.
fixes #25658.


git-svn-id: https://develop.svn.wordpress.org/trunk@25868 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 17:21:32 +00:00
Andrew Nacin
ea7d0de723 Updates: Disable maintenance mode once we've finished copying files, to minimize disruption.
props dd32.
fixes #25655.


git-svn-id: https://develop.svn.wordpress.org/trunk@25866 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 17:19:48 +00:00
Andrew Nacin
d0d07cf614 Updates: Saner stats and rollback handling. WP.org now collects basic stats on non-auto updates as they have been hugely informative.
props dd32 for initial patch.
fixes #25657.


git-svn-id: https://develop.svn.wordpress.org/trunk@25863 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 09:48:36 +00:00
Andrew Nacin
bce2656e6d Move upgrader_process_complete for core to its proper place in Core_Upgrader.
This means it will be firing as a JS redirect is taking place if the update is from pre-3.4. Acceptable.

props dd32.
fixes #25659.


git-svn-id: https://develop.svn.wordpress.org/trunk@25861 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-22 04:36:54 +00:00
Andrew Nacin
597e82e94c Rename the automatic_updates_send_email filter to auto_core_update_send_email. (Final name change.)
fixes #25653. Also:
 * Fully document all new hooks, methods, and classes in the upgrader.
 * Rename 'language' to 'translation' inside the upgrader.
 * Improve the readability of the crazy do-while loop in the is_vcs_checkout() method.


git-svn-id: https://develop.svn.wordpress.org/trunk@25859 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-21 22:28:07 +00:00
Andrew Nacin
d96b64c116 Commit [25823] should not have renamed AUTOMATIC_UPDATER_DISABLED to AUTOMATIC_UPDATES_DISABLED.
The proper constant is AUTOMATIC_UPDATER_DISABLED. Keep the filter in line with that too.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25851 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-18 21:23:43 +00:00
Andrew Nacin
fda5b39db2 Use correct variable. fixes #10787.
git-svn-id: https://develop.svn.wordpress.org/trunk@25843 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-18 17:15:36 +00:00
Andrew Nacin
0b22aae62d Notify administrators of successful, failed, and pending core updates.
Blocks future background updates after critical failures, but allow retries in certain situations. More in the ticket.

fixes #10787.


git-svn-id: https://develop.svn.wordpress.org/trunk@25841 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-18 16:29:16 +00:00
Andrew Nacin
142d8c3d30 Delete expired transients on database upgrades.
Reverts [25416], which had all transients being cleared. This leaves much to be desired, but we don't want a core update to be blamed for breaking a site that incorrectly assumes transients aren't transient.

props dartiss, pento.
fixes #20316.


git-svn-id: https://develop.svn.wordpress.org/trunk@25838 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-18 07:47:44 +00:00
Andrew Nacin
92c2bc7797 Introduce email templates for automatic background updates.
The four templates are:
 1. We successfully updated their site. If any of their themes or plugins are out of date, it also mentions that. ('success')
 2. We are not configured to update their site, so we notify them of the new release. ('notify')
 3. We tried but failed to update their site. The error was early in the process, so no harm, no foul. This is the same as template #2, plus one sentence. ('fail')
 4. We tried to update their site, and failed while copying files. ('critical')

With assistance from markjaquith.

see #10787.


git-svn-id: https://develop.svn.wordpress.org/trunk@25837 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-18 06:32:27 +00:00
Andrew Nacin
aa4635548d set_current_screen() is now unnecessary in Automatic_Upgrader_Skin, which is good because it breaks things in the network admin.
fixes #25622.


git-svn-id: https://develop.svn.wordpress.org/trunk@25836 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 23:23:42 +00:00
Andrew Nacin
8cb344e237 In automatic background updates, standardize on 'update'.
New, final filter names:
 * auto_update_{$type} (plugin, theme, core, language)
 * automatic_updates_is_vcs_checkout
 * automatic_updates_disabled

New class name is WP_Automatic_Updater. Method names include update() and should_update().

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25835 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 23:20:56 +00:00
Dion Hulse
3ce626a96b Silence PHP warnings from disk_free_space(). disk_free_space() will produce a warning in error conditions in addition to returning false, this includes a case where the bytes free is greater than PHP_INT_MAX (which is a error condition we don't need to check).
See #25576, #22704


git-svn-id: https://develop.svn.wordpress.org/trunk@25831 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 18:39:04 +00:00
Dion Hulse
d2d9b963a2 For Background updates, ensure that only one update process runs at the same time by using the options table as a lock.
This prevents multiple cron spawns and/or long-running updates from causing multiple update processes to spin up.
This also fixes a case where the upgrader might kick in for ( ! is_main_network() || ! is_main_site() ) in mulisite installs.
See #22704


git-svn-id: https://develop.svn.wordpress.org/trunk@25828 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 05:23:35 +00:00
Andrew Nacin
4644bb87f6 Remove the old wp_auto_updates_maybe_update cron event. Schedule the new wp_maybe_auto_update event at 7 a.m. and 7 p.m. in the site's timezone.
see #27704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25825 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 04:01:06 +00:00
Andrew Nacin
c39143fd2e Make WP_Automatic_Upgrader a proper object that gets instantiated. Renames nearly all of its methods.
Also renames wp_auto_updates_maybe_update() to wp_maybe_auto_update().

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25823 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 00:54:15 +00:00
Dion Hulse
d0bd68cf5f Remove a duplicate semicolon that snuck in. Props JustinSainton. See #18200
git-svn-id: https://develop.svn.wordpress.org/trunk@25822 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-17 00:11:25 +00:00
Dion Hulse
d5aba84213 Allow the WordPress.org Language update API to disallow automated background updates for a specific language pack. See #18200
git-svn-id: https://develop.svn.wordpress.org/trunk@25818 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 22:26:47 +00:00
Dion Hulse
853c9a50bd When a plugin enables Background Plugin updates, don't deactivate the plugin during update as we require a browser to reactivate it afterwards. See #22704
git-svn-id: https://develop.svn.wordpress.org/trunk@25817 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 19:47:21 +00:00
Andrew Nacin
977ca48a58 Merge the should_auto_update() and can_auto_update() methods. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25815 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 19:34:05 +00:00
Dion Hulse
aa5c907e40 Fix a issue where the translation name isn't showing up in the Background Update emails, caused by a PHP Warning/missing variable in [25806]. See #18200
git-svn-id: https://develop.svn.wordpress.org/trunk@25812 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 17:06:58 +00:00
Dion Hulse
549029393f Avoid a few PHP Warnings when files don't exist and use a better method to locate the local filepath.
See #18201


git-svn-id: https://develop.svn.wordpress.org/trunk@25811 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 15:19:59 +00:00
Andrew Nacin
e192eb396e Include translations in the update bubbles (as +1 if there are any). see #18200.
git-svn-id: https://develop.svn.wordpress.org/trunk@25810 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 14:33:21 +00:00
Dion Hulse
96aa66a924 Remove the no longer used Headerless_Upgrader_Skin class, it's been replaced by Language_Pack_Upgrader_Skin.
See #18200, [25806]


git-svn-id: https://develop.svn.wordpress.org/trunk@25807 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 04:18:12 +00:00
Dion Hulse
ddaaa6d88a Language Packs: Many many fixes such as:
- Add a "Update Translations" stand-alone button to the updates page
- Shift Language feedback to before update process completion action links & limit the verbosity of output (name + success/errors)
- Simplify/combine the language update descriptive string to only include a plugin/theme name
- Properly handle cache clearing after language updates to prevent langs being repeditively updated
- Display a "All items up to date" string when there's nothing to do
- Reduce the 'Connection Information' from a <h2> to a <h3> to remove duplicate h2's and screen icons from update screens
- Fix the Direct filesystem method not being used for Language updates because WP_LANG_DIR doesn't exist (check it's parent for writable instead)
See #18200, #22704



git-svn-id: https://develop.svn.wordpress.org/trunk@25806 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 04:14:29 +00:00
Andrew Nacin
4f7112000f Avoid numerous potential PHP warnings when dealing with the pre-r25801 get_core_checksums() return value.
Warnings included current(), filestat(), and md5_file().

see #18201. see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25805 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-16 04:01:12 +00:00
Andrew Nacin
867f084ca0 Significantly simplify get_core_checksums(), as the caching and chunking was causing too much grief.
Make sure we only do our pre-flight is_writable check when the file exists.

see #18201. see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25801 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 23:02:28 +00:00
Andrew Nacin
14b83f44f1 Use correct variable. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25800 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 22:06:08 +00:00
Andrew Nacin
3b724d5082 Remove accidental debug cruft in [25780]. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25799 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 21:24:01 +00:00
Andrew Nacin
1e8729b5c1 Avoid our pre-flight writable checks if get_core_checksums() doesn't exist yet.
Thus, it will not work for 3.6 => 3.7, only 3.7+.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25798 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 20:34:02 +00:00
Andrew Nacin
0a284a4d5c Only add error data to the files_not_writable WP_Error if the install already has [25775] and [25796] applied.
see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25797 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 20:00:01 +00:00
Andrew Nacin
55d176020b In show_message(), only print error data if it is a string.
see #25576, [25775].


git-svn-id: https://develop.svn.wordpress.org/trunk@25796 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 19:50:48 +00:00
Andrew Nacin
204ca72a66 Core Updates: Verify that all files we're about to copy are actually writable, when using the direct transport.
Once we begin to copy core files, all bets are off. This allows us to fail early when we'll otherwise need to stop midway through due to permissions issues, which is a particularly bad problem when only some files have permissions issues.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25794 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 19:17:56 +00:00
Andrew Nacin
c72ba036cf Use FS_CHMOD_FILE rather than an explicit 0644 in copy_dir() and _copy_dir().
This occurs when we can't copy a file. We chmod it and try again.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25793 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 19:13:33 +00:00
Dion Hulse
fa79184a7d Fix a misspelling of the filter we're checking for, s/fs_method/filesystem_method/.
My bad. See #22704, [25781].


git-svn-id: https://develop.svn.wordpress.org/trunk@25787 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 14:54:29 +00:00
Andrew Nacin
2eebc47254 Hide auto updates from update-core.php directly in get_core_updates(). see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25783 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 05:06:35 +00:00
Andrew Nacin
85d32ce873 Automatic updates: An error code containing 'do_rollback' can be used to trigger a rollback.
This could enable the triggering of a rollback in update_core() in wp-admin/includes/update-core.php.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25782 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-15 02:58:07 +00:00
Andrew Nacin
1918e828da Automatic updates: Include error data in the follow-up API request.
props dd32.
see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25781 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 23:32:47 +00:00
Andrew Nacin
3eac3d0380 Parse absolute paths out of error data. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25780 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 22:24:28 +00:00
Dion Hulse
b492ae85f8 Remove PHP4 compat code from the ZipArchive unzip handler, and pass the failure reason into the WP_Error return.
See #22704


git-svn-id: https://develop.svn.wordpress.org/trunk@25779 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 21:54:33 +00:00
Andrew Nacin
67c80dae13 Account for the possible failure of disk_free_space() in update_core().
see #22704, #25576.


git-svn-id: https://develop.svn.wordpress.org/trunk@25778 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 21:14:39 +00:00
Andrew Nacin
d6a1b681d3 Auto updates: Only attempt a roll back when we've hit a critical error code.
Specifically, this means when we've failed in copying files.

see #22704.


git-svn-id: https://develop.svn.wordpress.org/trunk@25777 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 21:02:46 +00:00
Andrew Nacin
b8efab15d8 Account for possible failures by disk_free_space(), as well as the potential need to copy the unzipped files.
see #25576.


git-svn-id: https://develop.svn.wordpress.org/trunk@25776 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 20:57:28 +00:00
Andrew Nacin
47e85a9b54 In the upgrader, only print additional error data if it is a string.
As in [25576], we sometimes want to return additional data that is not necessarily meant for UI consumption.

see #25576.


git-svn-id: https://develop.svn.wordpress.org/trunk@25775 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 20:19:52 +00:00
Andrew Nacin
5db3863d12 In unzip_file(), confirm we have enough available disk space before extracting.
"enough" is calculated by adding up the uncompressed size of the files in the archive, then adding a 20% buffer.

props dd32.
fixes #25576.


git-svn-id: https://develop.svn.wordpress.org/trunk@25774 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 20:14:13 +00:00
Andrew Nacin
bd26f54af2 More specific error codes in the core upgrader when copying language, plugin, and theme files. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25772 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-14 19:37:53 +00:00
Andrew Nacin
7bf44580a9 Add explicit link to the installation being updated in debugging emails. see #22704.
git-svn-id: https://develop.svn.wordpress.org/trunk@25770 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-12 20:17:20 +00:00
Andrew Nacin
9eff9eaebe Silence possible warnings from is_dir(). fixes #25572.
git-svn-id: https://develop.svn.wordpress.org/trunk@25764 602fd350-edb4-49c9-b593-d223f7449a82
2013-10-11 17:10:18 +00:00