Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #2 from orchestra-io/upgrade-3.4.2

Upgraded to Wordpress 3.4.2
  • Loading branch information...
commit 8e411c53af72df3fa9394c1c068564aff9ce40d5 2 parents e0d50d5 + fd6376f
@helgi helgi authored
Showing with 9,002 additions and 5,344 deletions.
  1. +0 −1  index.php
  2. +68 −10 license.txt
  3. +2 −3 readme.html
  4. +2 −2 wp-activate.php
  5. +60 −96 wp-admin/about.php
  6. +50 −1,570 wp-admin/admin-ajax.php
  7. +0 −1  wp-admin/admin-functions.php
  8. +19 −6 wp-admin/admin-header.php
  9. +0 −2  wp-admin/admin-post.php
  10. +5 −8 wp-admin/admin.php
  11. +0 −2  wp-admin/async-upload.php
  12. +2 −7 wp-admin/comment.php
  13. +7 −7 wp-admin/credits.php
  14. +1 −1  wp-admin/css/colors-classic.css
  15. +289 −86 wp-admin/css/colors-classic.dev.css
  16. +1 −1  wp-admin/css/colors-fresh.css
  17. +278 −115 wp-admin/css/colors-fresh.dev.css
  18. +1 −0  wp-admin/css/customize-controls-rtl.css
  19. +86 −0 wp-admin/css/customize-controls-rtl.dev.css
  20. +1 −0  wp-admin/css/customize-controls.css
  21. +537 −0 wp-admin/css/customize-controls.dev.css
  22. +0 −3  wp-admin/css/farbtastic.css
  23. +1 −1  wp-admin/css/ie-rtl.css
  24. +0 −5 wp-admin/css/ie-rtl.dev.css
  25. +1 −1  wp-admin/css/ie.css
  26. +27 −7 wp-admin/css/ie.dev.css
  27. +1 −1  wp-admin/css/install.css
  28. +6 −3 wp-admin/css/install.dev.css
  29. +1 −1  wp-admin/css/media-rtl.css
  30. +1 −1  wp-admin/css/media.css
  31. +0 −1  wp-admin/css/media.dev.css
  32. +1 −1  wp-admin/css/wp-admin-rtl.css
  33. +401 −287 wp-admin/css/wp-admin-rtl.dev.css
  34. +1 −1  wp-admin/css/wp-admin.css
  35. +1,219 −825 wp-admin/css/wp-admin.dev.css
  36. +77 −15 wp-admin/custom-background.php
  37. +429 −178 wp-admin/custom-header.php
  38. +203 −0 wp-admin/customize.php
  39. +5 −7 wp-admin/edit-comments.php
  40. +32 −21 wp-admin/edit-form-advanced.php
  41. +60 −63 wp-admin/edit-form-comment.php
  42. +16 −16 wp-admin/edit-link-form.php
  43. +4 −4 wp-admin/edit-tag-form.php
  44. +1 −3 wp-admin/edit-tags.php
  45. +14 −22 wp-admin/edit.php
  46. +9 −9 wp-admin/export.php
  47. +3 −3 wp-admin/freedoms.php
  48. BIN  wp-admin/images/icons32-2x.png
  49. BIN  wp-admin/images/icons32-vs-2x.png
  50. BIN  wp-admin/images/menu-2x.png
  51. BIN  wp-admin/images/menu.png
  52. BIN  wp-admin/images/press-this.png
  53. BIN  wp-admin/images/screenshots/captions-1.png
  54. BIN  wp-admin/images/screenshots/captions-2.png
  55. BIN  wp-admin/images/screenshots/flex-header-1.png
  56. BIN  wp-admin/images/screenshots/flex-header-2.png
  57. BIN  wp-admin/images/screenshots/flex-header-3.png
  58. BIN  wp-admin/images/screenshots/flex-header-media-library.png
  59. BIN  wp-admin/images/screenshots/theme-customizer.png
  60. BIN  wp-admin/images/screenshots/twitter-embed-1.png
  61. BIN  wp-admin/images/screenshots/twitter-embed-2.png
  62. BIN  wp-admin/images/stars-rtl.png
  63. BIN  wp-admin/images/stars.png
  64. BIN  wp-admin/images/wordpress-logo-2x.png
  65. BIN  wp-admin/images/wordpress-logo.png
  66. BIN  wp-admin/images/wp-badge-2x.png
  67. +1 −3 wp-admin/import.php
  68. +7 −2 wp-admin/includes/admin.php
  69. +1,787 −0 wp-admin/includes/ajax-actions.php
  70. +2 −3 wp-admin/includes/bookmark.php
  71. +6 −5 wp-admin/includes/class-ftp.php
  72. +3 −5 wp-admin/includes/class-wp-comments-list-table.php
  73. +0 −2  wp-admin/includes/class-wp-filesystem-base.php
  74. +1 −2  wp-admin/includes/class-wp-filesystem-direct.php
  75. +0 −2  wp-admin/includes/class-wp-filesystem-ftpext.php
  76. +0 −2  wp-admin/includes/class-wp-filesystem-ftpsockets.php
  77. +0 −2  wp-admin/includes/class-wp-links-list-table.php
  78. +10 −8 wp-admin/includes/class-wp-list-table.php
  79. +2 −4 wp-admin/includes/class-wp-media-list-table.php
  80. +1 −3 wp-admin/includes/class-wp-ms-sites-list-table.php
  81. +81 −72 wp-admin/includes/class-wp-ms-themes-list-table.php
  82. +1 −4 wp-admin/includes/class-wp-ms-users-list-table.php
  83. +4 −20 wp-admin/includes/class-wp-plugin-install-list-table.php
  84. +36 −43 wp-admin/includes/class-wp-plugins-list-table.php
  85. +16 −14 wp-admin/includes/class-wp-posts-list-table.php
  86. +1 −3 wp-admin/includes/class-wp-terms-list-table.php
  87. +268 −42 wp-admin/includes/class-wp-theme-install-list-table.php
  88. +148 −114 wp-admin/includes/class-wp-themes-list-table.php
  89. +157 −44 wp-admin/includes/class-wp-upgrader.php
  90. +2 −4 wp-admin/includes/class-wp-users-list-table.php
  91. +0 −1  wp-admin/includes/comment.php
  92. +69 −106 wp-admin/includes/dashboard.php
  93. +61 −3 wp-admin/includes/deprecated.php
  94. +4 −3 wp-admin/includes/export.php
  95. +11 −33 wp-admin/includes/file.php
  96. +2 −43 wp-admin/includes/image-edit.php
  97. +136 −14 wp-admin/includes/image.php
  98. +0 −2  wp-admin/includes/import.php
  99. +3 −3 wp-admin/includes/list-table.php
  100. +0 −1  wp-admin/includes/manifest.php
  101. +64 −49 wp-admin/includes/media.php
  102. +0 −2  wp-admin/includes/menu.php
  103. +179 −189 wp-admin/includes/meta-boxes.php
  104. +7 −10 wp-admin/includes/misc.php
  105. +9 −1 wp-admin/includes/ms-deprecated.php
  106. +20 −64 wp-admin/includes/ms.php
  107. +5 −12 wp-admin/includes/nav-menu.php
  108. +46 −35 wp-admin/includes/plugin-install.php
  109. +82 −59 wp-admin/includes/plugin.php
  110. +51 −49 wp-admin/includes/post.php
  111. +28 −22 wp-admin/includes/schema.php
  112. +130 −55 wp-admin/includes/screen.php
  113. +3 −3 wp-admin/includes/taxonomy.php
  114. +136 −68 wp-admin/includes/template.php
  115. +31 −178 wp-admin/includes/theme-install.php
  116. +29 −156 wp-admin/includes/theme.php
  117. +214 −138 wp-admin/includes/update-core.php
  118. +14 −16 wp-admin/includes/update.php
  119. +107 −64 wp-admin/includes/upgrade.php
  120. +23 −38 wp-admin/includes/user.php
  121. +0 −1  wp-admin/includes/widgets.php
  122. +27 −12 wp-admin/index.php
  123. +2 −21 wp-admin/install-helper.php
  124. +16 −11 wp-admin/install.php
  125. +11 −30 wp-admin/js/common.dev.js
  126. +1 −1  wp-admin/js/common.js
  127. +58 −47 wp-admin/js/custom-background.dev.js
  128. +1 −1  wp-admin/js/custom-background.js
  129. +963 −0 wp-admin/js/customize-controls.dev.js
  130. +1 −0  wp-admin/js/customize-controls.js
  131. +1 −2  wp-admin/js/dashboard.dev.js
  132. +1 −1  wp-admin/js/dashboard.js
Sorry, we could not display the entire diff because too many files (521) changed.
View
1  index.php
@@ -15,4 +15,3 @@
/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');
-?>
View
78 license.txt
@@ -37,16 +37,15 @@ and
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -55,7 +54,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -96,7 +95,7 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
- GNU GENERAL PUBLIC LICENSE
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -160,6 +159,7 @@ distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
+
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
@@ -294,7 +294,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -316,8 +316,66 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
WRITTEN OFFER
View
5 readme.html
@@ -7,8 +7,8 @@
</head>
<body>
<h1 id="logo">
- <a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" width="250" height="68" /></a>
- <br /> Version 3.3.1
+ <a href="http://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
+ <br /> Version 3.4.2
</h1>
<p style="text-align: center">Semantic Personal Publishing Platform</p>
@@ -104,6 +104,5 @@ <h1 id="logo">
<h1>License</h1>
<p>WordPress is free software, and is released under the terms of the <abbr title="GNU General Public License">GPL</abbr> version 2 or (at your option) any later version. See <a href="license.txt">license.txt</a>.</p>
-
</body>
</html>
View
4 wp-activate.php
@@ -63,9 +63,9 @@ function wpmu_activate_stylesheet() {
<?php
echo '<p class="lead-in">';
if ( $signup->domain . $signup->path == '' ) {
- printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
+ printf( __('Your account has been activated. You may now <a href="%1$s">log in</a> to the site using your chosen username of &#8220;%2$s&#8221;. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%4$s">reset your password</a>.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() );
} else {
- printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
+ printf( __('Your site at <a href="%1$s">%2$s</a> is active. You may now log in to your site using your chosen username of &#8220;%3$s&#8221;. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can <a href="%5$s">reset your password</a>.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, wp_lostpassword_url() );
}
echo '</p>';
} else {
View
156 wp-admin/about.php
@@ -13,13 +13,13 @@
list( $display_version ) = explode( '-', $wp_version );
-include( './admin-header.php' );
+include( ABSPATH . 'wp-admin/admin-header.php' );
?>
<div class="wrap about-wrap">
<h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
-<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! Using WordPress %s will improve your looks, personality, and web publishing experience. Okay, just the last one, but still. :)' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s is already making your website better, faster, and more attractive, just like you!' ), $display_version ); ?></div>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
@@ -34,102 +34,74 @@
</h2>
<div class="changelog point-releases">
- <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 1 ); ?></h3>
- <p><?php printf( _n( '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug.',
- '<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs.', 15 ), '3.3.1', number_format_i18n( 15 ) ); ?>
- <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.3.1' ); ?>
+ <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 2 ); ?></h3>
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 20 ), '3.4.2', number_format_i18n( 20 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.4.2' ); ?>
+ </p>
+
+ <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
+ '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 21 ), '3.4.1', number_format_i18n( 21 ) ); ?>
+ <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_3.4.1' ); ?>
</p>
</div>
<div class="changelog">
- <h3><?php _e( 'Easier Uploading' ); ?></h3>
+ <h3><?php _e( 'Live Theme Previews' ); ?></h3>
<div class="feature-section images-stagger-right">
- <div class="feature-images">
- <img src="images/screenshots/media-icon.png" width="200" class="angled-right" />
- <img src="images/screenshots/drag-and-drop.png" width="200" class="angled-left" />
- </div>
- <div class="left-feature">
- <h4><?php _e( 'File Type Detection' ); ?></h4>
- <p><?php _e( 'We&#8217;ve streamlined things! Instead of needing to click on a specific upload icon based on your file type, now there&#8217;s just one. Once your file is uploaded, the appropriate fields will be displayed for entering information based on the file type.' ); ?></p>
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/theme-customizer.png' ) ); ?>" class="image-50" />
+ <h4><?php _e( 'Try on New Themes' ); ?></h4>
+ <p><?php _e( 'Gone are the days of rushing to update your header, background, and the like as soon as you activate a new theme. You can now customize these options <strong>before</strong> activating a new theme. Note: this feature is available for installed themes only.' ); ?></p>
- <h4><?php _e( 'Drag-and-Drop Media Uploader' ); ?></h4>
- <p><?php _e( 'Adding photos or other files to posts and pages just got easier. Drag files from your desktop and drop them into the uploader. Add one file at a time, or many at once.' ); ?></p>
-
- <h4><?php _e( 'More File Formats' ); ?></h4>
- <p><?php _e( 'We&#8217;ve added the rar and 7z file formats to the list of allowed file types in the uploader.' ); ?></p>
- </div>
+ <h4><?php _e( 'Customize Current Theme' ); ?></h4>
+ <p><?php _e( 'Satisfy your curiosity and try on a fresh coat of paint &mdash; you can also use the live preview mode to customize your current theme. Look for the Customize link on the Themes screen.' ); ?></p>
</div>
</div>
<div class="changelog">
- <h3><?php _e( 'Dashboard Design' ); ?></h3>
+ <h3><?php _e( 'Custom Headers' ); ?></h3>
- <div class="feature-section text-features">
- <h4><?php _e( 'Flyout Menus' ); ?></h4>
- <p><?php _e( 'Speed up navigating the dashboard and reduce repetitive clicking with our new flyout submenus. As you hover over each main menu item in your dashboard navigation, the submenus will magically appear, providing single-click access to any dashboard screen.' ); ?></p>
-
- <div>
- <h4><?php _e( 'Header + Admin Bar = Toolbar' ); ?></h4>
- <p><?php _e( 'To save space and increase efficiency, we&#8217;ve combined the admin bar and the old Dashboard header into one persistent toolbar. Hovering over the toolbar items will reveal submenus when available for quick access. ' ); ?></p>
+ <div class="feature-section">
+ <h4><?php _e( 'Flexible Sizes' ); ?></h4>
+ <p><?php _e( 'You can decide for yourself how tall or wide your custom header image should be. From now on, themes will provide a recommended image size for custom headers rather than a fixed requirement. Note: this feature requires <a href="http://codex.wordpress.org/Custom_Headers">theme support</a>.' ); ?></p>
+ <div class="three-col-images">
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-1.png' ) ); ?>" class="image-30 first-feature" />
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-2.png' ) ); ?>" class="image-30" />
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-3.png' ) ); ?>" class="image-30 last-feature" />
</div>
</div>
- <div class="feature-section screenshot-features">
- <div class="angled-left">
- <img src="images/screenshots/admin-flyouts.png" />
- <h4><?php _e( 'Responsive Design' ); ?></h4>
- <p><?php _e( 'Certain dashboard screens have been updated to look better at various sizes, including improved iPad/tablet support.' ); ?></p>
- </div>
- <div class="angled-right">
- <img src="images/screenshots/help-screen.png" />
- <h4><?php _e( 'Help Tabs' ); ?></h4>
- <p><?php _e( 'The Help tabs located in the upper corner of the dashboard screens below your name have gotten a facelift. Help content is broken into smaller sections for easier access, with links to relevant documentation and the support forums always visible.' ); ?></p>
- </div>
+ <div class="feature-section images-stagger-right">
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/flex-header-media-library.png' ) ); ?>" class="image-50" />
+ <h4><?php _e( 'Choose from Media Library' ); ?></h4>
+ <p><?php _e( 'Tired of re-uploading the same custom header image every time you check out a new theme? Now you can choose header images from your media library for easier customization.' ); ?></p>
</div>
</div>
<div class="changelog">
- <h3><?php _e( 'Feels Like the First Time' ); ?></h3>
+ <h3><?php _e( 'Twitter Embeds' ); ?></h3>
<div class="feature-section images-stagger-right">
- <div class="feature-images">
- <img src="images/screenshots/new-feature-pointer.png" class="angled-right" />
- <img src="images/screenshots/welcome-screen.png" class="angled-left" />
- </div>
- <div class="left-feature">
- <h4><?php _e( 'New Feature Pointers' ); ?></h4>
- <p><?php _e( 'When we add new features, move navigation, or do anything else with the dashboard that might throw you for a loop when you update your WordPress site, we&#8217;ll let you know about it with new feature pointers explaining the change.' ); ?></p>
-
- <h4><?php _e( 'Post-update Changelog' ); ?></h4>
- <p><?php _e( 'This screen! From now on when you update WordPress, you&#8217;ll be brought to this screen &mdash; also accessible any time from the W logo in the corner of the toolbar &mdash; to get an overview of what&#8217;s changed.' ); ?></p>
-
- <h4><?php _e( 'Dashboard Welcome' ); ?></h4>
- <p><?php _e( 'The dashboard home screen will have a Welcome area that displays when a new WordPress installation is accessed for the first time, prompting the site owner to complete various setup tasks. Once dismissed, this welcome can be accessed via the dashboard home screen options tab.' ); ?></p>
- </div>
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-1.png' ) ); ?>" class="image-30" />
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/twitter-embed-2.png' ) ); ?>" class="image-30" />
+ <h4><?php _e( 'Share Tweets with Style' ); ?></h4>
+ <p><?php _e( 'You can now embed individual tweets in posts. It includes action links that allow readers to reply to, retweet, and favorite the tweet without leaving your site. Just paste a tweet URL on its own line.' ); ?></p>
+ <p><?php printf( __( 'This works with URLs from some other sites, too. For more, see the Codex article on <a href="%s">Embeds</a>.' ), __( 'http://codex.wordpress.org/Embeds' ) ); ?></p>
</div>
</div>
+
<div class="changelog">
- <h3><?php _e( 'Content Tools' ); ?></h3>
+ <h3><?php _e( 'Better Captions' ); ?></h3>
- <div class="feature-section three-col">
- <div>
- <h4><?php _e( 'Better Co-Editing' ); ?></h4>
- <img src="images/screenshots/coediting.png" class="element-screenshot" />
- <p><?php _e( 'Have you ever gone to edit a post after someone else has finished with it, only to get an alert that tells you the other person is still editing the post? From now on, you&#8217;ll only get that alert if another person is still on the editing screen &mdash; no more time lag.' ); ?></p>
- </div>
- <div>
- <h4><?php _e( 'Tumblr Importer' ); ?></h4>
- <p><?php _e( 'Want to import content from Tumblr to WordPress? No problem! Go to <span class="no-break">Tools &rarr; Import</span> to get the new Tumblr Importer, which maps your Tumblog posts to the matching WordPress post formats. Tip: Choose a theme designed to display post formats to get the greatest benefit from the importer.' ); ?></p>
- </div>
- <div class="last-feature">
- <h4><?php _e( 'Widget Improvements' ); ?></h4>
- <p><?php _e( 'Changing themes often requires widget re-configuration based on the number and position of sidebars. Now if you change back to a previous theme, the widgets will automatically go back to how you had them arranged in that theme. <em>Note: if you&#8217;ve added new widgets since the switch, you&#8217;ll need to rescue them from the Inactive Widgets area.</em>' ); ?></p>
- </div>
+ <div class="feature-section images-stagger-right">
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-1.png' ) ); ?>" class="image-30" />
+ <img src="<?php echo esc_url( admin_url( 'images/screenshots/captions-2.png' ) ); ?>" class="image-30" />
+ <h4><?php _e( 'HTML Support' ); ?></h4>
+ <p><?php _e( 'Basic HTML support has been added to the caption field in the image uploader. This allows you to add links &mdash; great for photo credits or licensing details &mdash; and basic formatting such as bold and italicized text.' ); ?></p>
</div>
-
</div>
<div class="changelog">
@@ -137,49 +109,43 @@
<div class="feature-section three-col">
<div>
- <h4><?php _e( 'Flexible Permalinks' ); ?></h4>
- <p><?php _e( 'You have more freedom when choosing a post permalink structure. Skip the date information or add a category slug without a performance penalty.' ); ?></p>
- </div>
- <div>
- <h4><?php _e( 'Post Slugs: Less Funky' ); ?></h4>
- <p><?php _e( 'Funky characters in post titles (e.g. curly quotes from a word processor) will no longer result in garbled post slugs.' ); ?></p>
- </div>
- <div class="last-feature">
- <h4><?php _e( 'jQuery and jQuery UI' ); ?></h4>
- <p><?php printf( __( 'WordPress now includes the entire jQuery UI stack and the latest version of jQuery: %s.' ), '1.7.1' ); ?></p>
- </div>
- </div>
+ <h4><?php _e( 'Faster WP_Query' ); ?></h4>
+ <p><?php _e( 'Post queries have been optimized to improve performance, especially for sites with large databases.' ); ?></p>
- <div class="feature-section three-col">
- <div>
- <h4 style="direction:ltr">is_main_query()</h4>
- <p><?php _e( 'This handy method will tell you if a <code>WP_Query</code> object is the main WordPress query or a secondary query.' ); ?></p>
+ <h4><?php _e( 'Faster Translations' ); ?></h4>
+ <p><?php _e( 'The number of strings loaded on the front end was greatly reduced, resulting in faster front page load times for localized installations.' ); ?> <?php _e( 'Also, better support for East Asian languages, right-to-left languages, theme translations, and more.' ); ?></p>
</div>
<div>
- <h4><?php _e( 'WP_Screen API' ); ?></h4>
- <p><?php _e( 'WordPress has a nice new API for working with admin screens. Create rich screens, add help documentation, adapt to screen contexts, and more.' ); ?></p>
+ <h4><?php _e( 'Themes API' ); ?></h4>
+ <p><?php _e( 'WP_Theme, wp_get_themes(), wp_get_theme(). Faster, uses less memory, makes use of persistent caching.' ); ?></p>
+
+ <h4><?php _e( 'Custom Header and Background API' ); ?></h4>
+ <p><?php _e( 'Custom header and background API relocated into the theme support API.' ); ?></p>
</div>
<div class="last-feature">
- <h4><?php _e( 'Editor API Overhaul' ); ?></h4>
- <p><?php _e( 'The new editor API automatically pulls in all the JS and CSS goodness for the editor. It even supports multiple editors on the same page.' ); ?></p>
+ <h4><?php _e( 'XML-RPC API' ); ?></h4>
+ <p><?php printf( __( 'A new <a href="%s">WordPress API</a> that supports custom content types and taxonomies, as well as dozens of other bug fixes and improvements.' ), __( 'http://codex.wordpress.org/XML-RPC_WordPress_API' ) ); ?></p>
+
+ <h4><?php _e( 'External Libraries' ); ?></h4>
+ <p><?php _e( 'jQuery, jQuery UI, TinyMCE, Plupload, PHPMailer, SimplePie, and other libraries were updated. jQuery UI Touch Punch was introduced.' ); ?></p>
</div>
</div>
-
</div>
<div class="return-to-dashboard">
<?php if ( current_user_can( 'update_core' ) && isset( $_GET['updated'] ) ) : ?>
- <a href="<?php echo esc_url( network_admin_url( 'update-core.php' ) ); ?>"><?php
+ <a href="<?php echo esc_url( self_admin_url( 'update-core.php' ) ); ?>"><?php
is_multisite() ? _e( 'Return to Updates' ) : _e( 'Return to Dashboard &rarr; Updates' );
?></a> |
<?php endif; ?>
- <a href="<?php echo esc_url( admin_url() ); ?>"><?php _e( 'Go to Dashboard &rarr; Home' ); ?></a>
+ <a href="<?php echo esc_url( self_admin_url() ); ?>"><?php
+ is_blog_admin() ? _e( 'Go to Dashboard &rarr; Home' ) : _e( 'Go to Dashboard' ); ?></a>
</div>
</div>
<?php
-include( './admin-footer.php' );
+include( ABSPATH . 'wp-admin/admin-footer.php' );
// These are strings we may use to describe maintenance/security releases, where we aim for no new strings.
return;
@@ -205,5 +171,3 @@
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.' );
__( 'For more information, see <a href="%s">the release notes</a>.' );
-
-?>
View
1,620 wp-admin/admin-ajax.php
@@ -4,6 +4,8 @@
*
* @package WordPress
* @subpackage Administration
+ *
+ * @link http://codex.wordpress.org/AJAX_in_Plugins
*/
/**
@@ -11,1581 +13,59 @@
*
* @since 2.1.0
*/
-define('DOING_AJAX', true);
-define('WP_ADMIN', true);
-
-if ( ! isset( $_REQUEST['action'] ) )
- die('-1');
-
-require_once('../wp-load.php');
-
-require_once('./includes/admin.php');
-@header('Content-Type: text/html; charset=' . get_option('blog_charset'));
-send_nosniff_header();
-
-do_action('admin_init');
-
-if ( ! is_user_logged_in() ) {
-
- if ( isset( $_POST['action'] ) && $_POST['action'] == 'autosave' ) {
- $id = isset($_POST['post_ID'])? (int) $_POST['post_ID'] : 0;
-
- if ( ! $id )
- die('-1');
-
- $message = sprintf( __('<strong>ALERT: You are logged out!</strong> Could not save draft. <a href="%s" target="_blank">Please log in again.</a>'), wp_login_url() );
- $x = new WP_Ajax_Response( array(
- 'what' => 'autosave',
- 'id' => $id,
- 'data' => $message
- ) );
- $x->send();
- }
-
- if ( !empty( $_REQUEST['action'] ) )
- do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
-
- die('-1');
-}
-
-if ( isset( $_GET['action'] ) ) :
-switch ( $action = $_GET['action'] ) :
-case 'fetch-list' :
-
- $list_class = $_GET['list_args']['class'];
- check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' );
-
- $current_screen = convert_to_screen( $_GET['list_args']['screen']['id'] );
-
- define( 'WP_NETWORK_ADMIN', $current_screen->is_network );
- define( 'WP_USER_ADMIN', $current_screen->is_user );
-
- $wp_list_table = _get_list_table( $list_class );
- if ( ! $wp_list_table )
- die( '0' );
-
- if ( ! $wp_list_table->ajax_user_can() )
- die( '-1' );
-
- $wp_list_table->ajax_response();
-
- die( '0' );
- break;
-case 'ajax-tag-search' :
- if ( isset( $_GET['tax'] ) ) {
- $taxonomy = sanitize_key( $_GET['tax'] );
- $tax = get_taxonomy( $taxonomy );
- if ( ! $tax )
- die( '0' );
- if ( ! current_user_can( $tax->cap->assign_terms ) )
- die( '-1' );
- } else {
- die('0');
- }
-
- $s = stripslashes( $_GET['q'] );
-
- if ( false !== strpos( $s, ',' ) ) {
- $s = explode( ',', $s );
- $s = $s[count( $s ) - 1];
- }
- $s = trim( $s );
- if ( strlen( $s ) < 2 )
- die; // require 2 chars for matching
-
- $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) );
-
- echo join( $results, "\n" );
- die;
- break;
-case 'wp-compression-test' :
- if ( !current_user_can( 'manage_options' ) )
- die('-1');
-
- if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) {
- update_site_option('can_compress_scripts', 0);
- die('0');
- }
-
- if ( isset($_GET['test']) ) {
- header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' );
- header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
- header( 'Cache-Control: no-cache, must-revalidate, max-age=0' );
- header( 'Pragma: no-cache' );
- header('Content-Type: application/x-javascript; charset=UTF-8');
- $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP );
- $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."';
-
- if ( 1 == $_GET['test'] ) {
- echo $test_str;
- die;
- } elseif ( 2 == $_GET['test'] ) {
- if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) )
- die('-1');
- if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) {
- header('Content-Encoding: deflate');
- $out = gzdeflate( $test_str, 1 );
- } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) {
- header('Content-Encoding: gzip');
- $out = gzencode( $test_str, 1 );
- } else {
- die('-1');
- }
- echo $out;
- die;
- } elseif ( 'no' == $_GET['test'] ) {
- update_site_option('can_compress_scripts', 0);
- } elseif ( 'yes' == $_GET['test'] ) {
- update_site_option('can_compress_scripts', 1);
- }
- }
-
- die('0');
- break;
-case 'imgedit-preview' :
- $post_id = intval($_GET['postid']);
- if ( empty($post_id) || !current_user_can('edit_post', $post_id) )
- die('-1');
-
- check_ajax_referer( "image_editor-$post_id" );
-
- include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
- if ( ! stream_preview_image($post_id) )
- die('-1');
-
- die();
- break;
-case 'menu-quick-search':
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
-
- require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
- _wp_ajax_menu_quick_search( $_REQUEST );
-
- exit;
- break;
-case 'oembed-cache' :
- $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0';
- die( $return );
- break;
-default :
- do_action( 'wp_ajax_' . $_GET['action'] );
- die('0');
- break;
-endswitch;
-endif;
-
-/**
- * Sends back current comment total and new page links if they need to be updated.
- *
- * Contrary to normal success AJAX response ("1"), die with time() on success.
- *
- * @since 2.7
- *
- * @param int $comment_id
- * @return die
- */
-function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
- $total = (int) @$_POST['_total'];
- $per_page = (int) @$_POST['_per_page'];
- $page = (int) @$_POST['_page'];
- $url = esc_url_raw( @$_POST['_url'] );
- // JS didn't send us everything we need to know. Just die with success message
- if ( !$total || !$per_page || !$page || !$url )
- die( (string) time() );
-
- $total += $delta;
- if ( $total < 0 )
- $total = 0;
-
- // Only do the expensive stuff on a page-break, and about 1 other time per page
- if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) {
- $post_id = 0;
- $status = 'total_comments'; // What type of comment count are we looking for?
- $parsed = parse_url( $url );
- if ( isset( $parsed['query'] ) ) {
- parse_str( $parsed['query'], $query_vars );
- if ( !empty( $query_vars['comment_status'] ) )
- $status = $query_vars['comment_status'];
- if ( !empty( $query_vars['p'] ) )
- $post_id = (int) $query_vars['p'];
- }
-
- $comment_count = wp_count_comments($post_id);
-
- if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count
- $total = $comment_count->$status;
- // else use the decremented value from above
- }
-
- $time = time(); // The time since the last comment count
-
- $x = new WP_Ajax_Response( array(
- 'what' => 'comment',
- 'id' => $comment_id, // here for completeness - not used
- 'supplemental' => array(
- 'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ),
- 'total_pages' => ceil( $total / $per_page ),
- 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),
- 'total' => $total,
- 'time' => $time
- )
- ) );
- $x->send();
-}
-
-function _wp_ajax_add_hierarchical_term() {
- $action = $_POST['action'];
- $taxonomy = get_taxonomy(substr($action, 4));
- check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name );
- if ( !current_user_can( $taxonomy->cap->edit_terms ) )
- die('-1');
- $names = explode(',', $_POST['new'.$taxonomy->name]);
- $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0;
- if ( 0 > $parent )
- $parent = 0;
- if ( $taxonomy->name == 'category' )
- $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array();
- else
- $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array();
- $checked_categories = array_map( 'absint', (array) $post_category );
- $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false);
-
- foreach ( $names as $cat_name ) {
- $cat_name = trim($cat_name);
- $category_nicename = sanitize_title($cat_name);
- if ( '' === $category_nicename )
- continue;
- if ( !($cat_id = term_exists($cat_name, $taxonomy->name, $parent)) ) {
- $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent));
- $cat_id = $new_term['term_id'];
- }
- $checked_categories[] = $cat_id;
- if ( $parent ) // Do these all at once in a second
- continue;
- $category = get_term( $cat_id, $taxonomy->name );
- ob_start();
- wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids ));
- $data = ob_get_contents();
- ob_end_clean();
- $add = array(
- 'what' => $taxonomy->name,
- 'id' => $cat_id,
- 'data' => str_replace( array("\n", "\t"), '', $data),
- 'position' => -1
- );
- }
-
- if ( $parent ) { // Foncy - replace the parent and all its children
- $parent = get_term( $parent, $taxonomy->name );
- $term_id = $parent->term_id;
-
- while ( $parent->parent ) { // get the top parent
- $parent = &get_term( $parent->parent, $taxonomy->name );
- if ( is_wp_error( $parent ) )
- break;
- $term_id = $parent->term_id;
- }
-
- ob_start();
- wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids));
- $data = ob_get_contents();
- ob_end_clean();
- $add = array(
- 'what' => $taxonomy->name,
- 'id' => $term_id,
- 'data' => str_replace( array("\n", "\t"), '', $data),
- 'position' => -1
- );
- }
-
- ob_start();
- wp_dropdown_categories( array(
- 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name',
- 'hierarchical' => 1, 'show_option_none' => '&mdash; '.$taxonomy->labels->parent_item.' &mdash;'
- ) );
- $sup = ob_get_contents();
- ob_end_clean();
- $add['supplemental'] = array( 'newcat_parent' => $sup );
+define( 'DOING_AJAX', true );
+define( 'WP_ADMIN', true );
- $x = new WP_Ajax_Response( $add );
- $x->send();
-}
-
-$id = isset($_POST['id'])? (int) $_POST['id'] : 0;
-switch ( $action = $_POST['action'] ) :
-case 'delete-comment' : // On success, die with time() instead of 1
- if ( !$comment = get_comment( $id ) )
- die( (string) time() );
- if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
- die('-1');
-
- check_ajax_referer( "delete-comment_$id" );
- $status = wp_get_comment_status( $comment->comment_ID );
-
- $delta = -1;
- if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) {
- if ( 'trash' == $status )
- die( (string) time() );
- $r = wp_trash_comment( $comment->comment_ID );
- } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) {
- if ( 'trash' != $status )
- die( (string) time() );
- $r = wp_untrash_comment( $comment->comment_ID );
- if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash
- $delta = 1;
- } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) {
- if ( 'spam' == $status )
- die( (string) time() );
- $r = wp_spam_comment( $comment->comment_ID );
- } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) {
- if ( 'spam' != $status )
- die( (string) time() );
- $r = wp_unspam_comment( $comment->comment_ID );
- if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam
- $delta = 1;
- } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) {
- $r = wp_delete_comment( $comment->comment_ID );
- } else {
- die('-1');
- }
-
- if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts
- _wp_ajax_delete_comment_response( $comment->comment_ID, $delta );
+// Require an action parameter
+if ( empty( $_REQUEST['action'] ) )
die( '0' );
- break;
-case 'delete-tag' :
- $tag_id = (int) $_POST['tag_ID'];
- check_ajax_referer( "delete-tag_$tag_id" );
-
- $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
- $tax = get_taxonomy($taxonomy);
-
- if ( !current_user_can( $tax->cap->delete_terms ) )
- die('-1');
-
- $tag = get_term( $tag_id, $taxonomy );
- if ( !$tag || is_wp_error( $tag ) )
- die('1');
-
- if ( wp_delete_term($tag_id, $taxonomy))
- die('1');
- else
- die('0');
- break;
-case 'delete-link' :
- check_ajax_referer( "delete-bookmark_$id" );
- if ( !current_user_can( 'manage_links' ) )
- die('-1');
-
- $link = get_bookmark( $id );
- if ( !$link || is_wp_error( $link ) )
- die('1');
-
- if ( wp_delete_link( $id ) )
- die('1');
- else
- die('0');
- break;
-case 'delete-meta' :
- check_ajax_referer( "delete-meta_$id" );
- if ( !$meta = get_metadata_by_mid( 'post', $id ) )
- die('1');
-
- if ( is_protected_meta( $meta->meta_key, 'post' ) || ! current_user_can( 'delete_post_meta', $meta->post_id, $meta->meta_key ) )
- die('-1');
- if ( delete_meta( $meta->meta_id ) )
- die('1');
- die('0');
- break;
-case 'delete-post' :
- check_ajax_referer( "{$action}_$id" );
- if ( !current_user_can( 'delete_post', $id ) )
- die('-1');
-
- if ( !get_post( $id ) )
- die('1');
-
- if ( wp_delete_post( $id ) )
- die('1');
- else
- die('0');
- break;
-case 'trash-post' :
-case 'untrash-post' :
- check_ajax_referer( "{$action}_$id" );
- if ( !current_user_can( 'delete_post', $id ) )
- die('-1');
-
- if ( !get_post( $id ) )
- die('1');
-
- if ( 'trash-post' == $action )
- $done = wp_trash_post( $id );
- else
- $done = wp_untrash_post( $id );
-
- if ( $done )
- die('1');
-
- die('0');
- break;
-case 'delete-page' :
- check_ajax_referer( "{$action}_$id" );
- if ( !current_user_can( 'delete_page', $id ) )
- die('-1');
-
- if ( !get_page( $id ) )
- die('1');
-
- if ( wp_delete_post( $id ) )
- die('1');
- else
- die('0');
- break;
-case 'dim-comment' : // On success, die with time() instead of 1
-
- if ( !$comment = get_comment( $id ) ) {
- $x = new WP_Ajax_Response( array(
- 'what' => 'comment',
- 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id))
- ) );
- $x->send();
- }
-
- if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) )
- die('-1');
-
- $current = wp_get_comment_status( $comment->comment_ID );
- if ( $_POST['new'] == $current )
- die( (string) time() );
-
- check_ajax_referer( "approve-comment_$id" );
- if ( in_array( $current, array( 'unapproved', 'spam' ) ) )
- $result = wp_set_comment_status( $comment->comment_ID, 'approve', true );
- else
- $result = wp_set_comment_status( $comment->comment_ID, 'hold', true );
-
- if ( is_wp_error($result) ) {
- $x = new WP_Ajax_Response( array(
- 'what' => 'comment',
- 'id' => $result
- ) );
- $x->send();
- }
-
- // Decide if we need to send back '1' or a more complicated response including page links and comment counts
- _wp_ajax_delete_comment_response( $comment->comment_ID );
- die( '0' );
- break;
-case 'add-link-category' : // On the Fly
- check_ajax_referer( $action );
- if ( !current_user_can( 'manage_categories' ) )
- die('-1');
- $names = explode(',', $_POST['newcat']);
- $x = new WP_Ajax_Response();
- foreach ( $names as $cat_name ) {
- $cat_name = trim($cat_name);
- $slug = sanitize_title($cat_name);
- if ( '' === $slug )
- continue;
- if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) {
- $cat_id = wp_insert_term( $cat_name, 'link_category' );
- }
- $cat_id = $cat_id['term_id'];
- $cat_name = esc_html(stripslashes($cat_name));
- $x->add( array(
- 'what' => 'link-category',
- 'id' => $cat_id,
- 'data' => "<li id='link-category-$cat_id'><label for='in-link-category-$cat_id' class='selectit'><input value='" . esc_attr($cat_id) . "' type='checkbox' checked='checked' name='link_category[]' id='in-link-category-$cat_id'/> $cat_name</label></li>",
- 'position' => -1
- ) );
- }
- $x->send();
- break;
-case 'add-tag' :
- check_ajax_referer( 'add-tag', '_wpnonce_add-tag' );
- $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post';
- $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag';
- $tax = get_taxonomy($taxonomy);
-
- if ( !current_user_can( $tax->cap->edit_terms ) )
- die('-1');
-
- $x = new WP_Ajax_Response();
-
- $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST );
-
- if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) {
- $message = __('An error has occurred. Please reload the page and try again.');
- if ( is_wp_error($tag) && $tag->get_error_message() )
- $message = $tag->get_error_message();
-
- $x->add( array(
- 'what' => 'taxonomy',
- 'data' => new WP_Error('error', $message )
- ) );
- $x->send();
- }
-
- set_current_screen( $_POST['screen'] );
-
- $wp_list_table = _get_list_table('WP_Terms_List_Table');
-
- $level = 0;
- if ( is_taxonomy_hierarchical($taxonomy) ) {
- $level = count( get_ancestors( $tag->term_id, $taxonomy ) );
- ob_start();
- $wp_list_table->single_row( $tag, $level );
- $noparents = ob_get_clean();
- }
-
- ob_start();
- $wp_list_table->single_row( $tag );
- $parents = ob_get_clean();
-
- $x->add( array(
- 'what' => 'taxonomy',
- 'supplemental' => compact('parents', 'noparents')
- ) );
- $x->add( array(
- 'what' => 'term',
- 'position' => $level,
- 'supplemental' => (array) $tag
- ) );
- $x->send();
- break;
-case 'get-tagcloud' :
- if ( isset( $_POST['tax'] ) ) {
- $taxonomy = sanitize_key( $_POST['tax'] );
- $tax = get_taxonomy( $taxonomy );
- if ( ! $tax )
- die( '0' );
- if ( ! current_user_can( $tax->cap->assign_terms ) )
- die( '-1' );
- } else {
- die('0');
- }
-
- $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) );
-
- if ( empty( $tags ) )
- die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') );
-
- if ( is_wp_error( $tags ) )
- die( $tags->get_error_message() );
-
- foreach ( $tags as $key => $tag ) {
- $tags[ $key ]->link = '#';
- $tags[ $key ]->id = $tag->term_id;
- }
-
- // We need raw tag names here, so don't filter the output
- $return = wp_generate_tag_cloud( $tags, array('filter' => 0) );
-
- if ( empty($return) )
- die('0');
-
- echo $return;
-
- exit;
- break;
-case 'get-comments' :
- check_ajax_referer( $action );
-
- set_current_screen( 'edit-comments' );
-
- $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
-
- if ( !current_user_can( 'edit_post', $post_id ) )
- die('-1');
-
- $wp_list_table->prepare_items();
-
- if ( !$wp_list_table->has_items() )
- die('1');
-
- $x = new WP_Ajax_Response();
- ob_start();
- foreach ( $wp_list_table->items as $comment ) {
- if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) )
- continue;
- get_comment( $comment );
- $wp_list_table->single_row( $comment );
- }
- $comment_list_item = ob_get_contents();
- ob_end_clean();
-
- $x->add( array(
- 'what' => 'comments',
- 'data' => $comment_list_item
- ) );
- $x->send();
- break;
-case 'replyto-comment' :
- check_ajax_referer( $action, '_ajax_nonce-replyto-comment' );
-
- set_current_screen( 'edit-comments' );
-
- $comment_post_ID = (int) $_POST['comment_post_ID'];
- if ( !current_user_can( 'edit_post', $comment_post_ID ) )
- die('-1');
-
- $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) );
-
- if ( empty($status) )
- die('1');
- elseif ( in_array($status, array('draft', 'pending', 'trash') ) )
- die( __('ERROR: you are replying to a comment on a draft post.') );
-
- $user = wp_get_current_user();
- if ( $user->ID ) {
- $comment_author = $wpdb->escape($user->display_name);
- $comment_author_email = $wpdb->escape($user->user_email);
- $comment_author_url = $wpdb->escape($user->user_url);
- $comment_content = trim($_POST['content']);
- if ( current_user_can( 'unfiltered_html' ) ) {
- if ( wp_create_nonce( 'unfiltered-html-comment' ) != $_POST['_wp_unfiltered_html_comment'] ) {
- kses_remove_filters(); // start with a clean slate
- kses_init_filters(); // set up the filters
- }
- }
- } else {
- die( __('Sorry, you must be logged in to reply to a comment.') );
- }
-
- if ( '' == $comment_content )
- die( __('ERROR: please type a comment.') );
-
- $comment_parent = absint($_POST['comment_ID']);
- $comment_auto_approved = false;
- $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
-
- $comment_id = wp_new_comment( $commentdata );
- $comment = get_comment($comment_id);
- if ( ! $comment ) die('1');
-
- $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1';
-
-
- // automatically approve parent comment
- if ( !empty($_POST['approve_parent']) ) {
- $parent = get_comment( $comment_parent );
-
- if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) {
- if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) )
- $comment_auto_approved = true;
- }
- }
-
- ob_start();
- if ( 'dashboard' == $_REQUEST['mode'] ) {
- require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
- _wp_dashboard_recent_comments_row( $comment );
- } else {
- if ( 'single' == $_REQUEST['mode'] ) {
- $wp_list_table = _get_list_table('WP_Post_Comments_List_Table');
- } else {
- $wp_list_table = _get_list_table('WP_Comments_List_Table');
- }
- $wp_list_table->single_row( $comment );
- }
- $comment_list_item = ob_get_contents();
- ob_end_clean();
-
- $response = array(
- 'what' => 'comment',
- 'id' => $comment->comment_ID,
- 'data' => $comment_list_item,
- 'position' => $position
- );
-
- if ( $comment_auto_approved )
- $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID );
-
- $x = new WP_Ajax_Response();
- $x->add( $response );
- $x->send();
- break;
-case 'edit-comment' :
- check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' );
-
- set_current_screen( 'edit-comments' );
-
- $comment_id = (int) $_POST['comment_ID'];
- if ( ! current_user_can( 'edit_comment', $comment_id ) )
- die('-1');
-
- if ( '' == $_POST['content'] )
- die( __('ERROR: please type a comment.') );
-
- $_POST['comment_status'] = $_POST['status'];
- edit_comment();
-
- $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
- $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : '';
-
- $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0;
- $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' );
-
- ob_start();
- $wp_list_table->single_row( get_comment( $comment_id ) );
- $comment_list_item = ob_get_contents();
- ob_end_clean();
-
- $x = new WP_Ajax_Response();
-
- $x->add( array(
- 'what' => 'edit_comment',
- 'id' => $comment->comment_ID,
- 'data' => $comment_list_item,
- 'position' => $position
- ));
-
- $x->send();
- break;
-case 'add-menu-item' :
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
-
- check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
-
- require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
- // For performance reasons, we omit some object properties from the checklist.
- // The following is a hacky way to restore them when adding non-custom items.
-
- $menu_items_data = array();
- foreach ( (array) $_POST['menu-item'] as $menu_item_data ) {
- if (
- ! empty( $menu_item_data['menu-item-type'] ) &&
- 'custom' != $menu_item_data['menu-item-type'] &&
- ! empty( $menu_item_data['menu-item-object-id'] )
- ) {
- switch( $menu_item_data['menu-item-type'] ) {
- case 'post_type' :
- $_object = get_post( $menu_item_data['menu-item-object-id'] );
- break;
-
- case 'taxonomy' :
- $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
- break;
- }
-
- $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) );
- $_menu_item = array_shift( $_menu_items );
-
- // Restore the missing menu item properties
- $menu_item_data['menu-item-description'] = $_menu_item->description;
- }
-
- $menu_items_data[] = $menu_item_data;
- }
-
- $item_ids = wp_save_nav_menu_items( 0, $menu_items_data );
- if ( is_wp_error( $item_ids ) )
- die('-1');
- foreach ( (array) $item_ids as $menu_item_id ) {
- $menu_obj = get_post( $menu_item_id );
- if ( ! empty( $menu_obj->ID ) ) {
- $menu_obj = wp_setup_nav_menu_item( $menu_obj );
- $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items
- $menu_items[] = $menu_obj;
- }
- }
+/** Load WordPress Bootstrap */
+require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' );
- if ( ! empty( $menu_items ) ) {
- $args = array(
- 'after' => '',
- 'before' => '',
- 'link_after' => '',
- 'link_before' => '',
- 'walker' => new Walker_Nav_Menu_Edit,
- );
- echo walk_nav_menu_tree( $menu_items, 0, (object) $args );
- }
- break;
-case 'add-meta' :
- check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' );
- $c = 0;
- $pid = (int) $_POST['post_id'];
- $post = get_post( $pid );
+/** Load WordPress Administration APIs */
+require_once( ABSPATH . 'wp-admin/includes/admin.php' );
- if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) {
- if ( !current_user_can( 'edit_post', $pid ) )
- die('-1');
- if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) )
- die('1');
- if ( $post->post_status == 'auto-draft' ) {
- $save_POST = $_POST; // Backup $_POST
- $_POST = array(); // Make it empty for edit_post()
- $_POST['action'] = 'draft'; // Warning fix
- $_POST['post_ID'] = $pid;
- $_POST['post_type'] = $post->post_type;
- $_POST['post_status'] = 'draft';
- $now = current_time('timestamp', 1);
- $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now));
+/** Load Ajax Handlers for WordPress Core */
+require_once( ABSPATH . 'wp-admin/includes/ajax-actions.php' );
- if ( $pid = edit_post() ) {
- if ( is_wp_error( $pid ) ) {
- $x = new WP_Ajax_Response( array(
- 'what' => 'meta',
- 'data' => $pid
- ) );
- $x->send();
- }
- $_POST = $save_POST; // Now we can restore original $_POST again
- if ( !$mid = add_meta( $pid ) )
- die(__('Please provide a custom field value.'));
- } else {
- die('0');
- }
- } else if ( !$mid = add_meta( $pid ) ) {
- die(__('Please provide a custom field value.'));
- }
+@header( 'Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
+@header( 'X-Robots-Tag: noindex' );
- $meta = get_metadata_by_mid( 'post', $mid );
- $pid = (int) $meta->post_id;
- $meta = get_object_vars( $meta );
- $x = new WP_Ajax_Response( array(
- 'what' => 'meta',
- 'id' => $mid,
- 'data' => _list_meta_row( $meta, $c ),
- 'position' => 1,
- 'supplemental' => array('postid' => $pid)
- ) );
- } else { // Update?
- $mid = (int) key( $_POST['meta'] );
- $key = stripslashes( $_POST['meta'][$mid]['key'] );
- $value = stripslashes( $_POST['meta'][$mid]['value'] );
- if ( '' == trim($key) )
- die(__('Please provide a custom field name.'));
- if ( '' == trim($value) )
- die(__('Please provide a custom field value.'));
- if ( ! $meta = get_metadata_by_mid( 'post', $mid ) )
- die('0'); // if meta doesn't exist
- if ( is_protected_meta( $meta->meta_key, 'post' ) || is_protected_meta( $key, 'post' ) ||
- ! current_user_can( 'edit_post_meta', $meta->post_id, $meta->meta_key ) ||
- ! current_user_can( 'edit_post_meta', $meta->post_id, $key ) )
- die('-1');
- if ( $meta->meta_value != $value || $meta->meta_key != $key ) {
- if ( !$u = update_metadata_by_mid( 'post', $mid, $value, $key ) )
- die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
- }
-
- $x = new WP_Ajax_Response( array(
- 'what' => 'meta',
- 'id' => $mid, 'old_id' => $mid,
- 'data' => _list_meta_row( array(
- 'meta_key' => $key,
- 'meta_value' => $value,
- 'meta_id' => $mid
- ), $c ),
- 'position' => 0,
- 'supplemental' => array('postid' => $meta->post_id)
- ) );
- }
- $x->send();
- break;
-case 'add-user' :
- check_ajax_referer( $action );
- if ( !current_user_can('create_users') )
- die('-1');
- if ( !$user_id = add_user() )
- die('0');
- elseif ( is_wp_error( $user_id ) ) {
- $x = new WP_Ajax_Response( array(
- 'what' => 'user',
- 'id' => $user_id
- ) );
- $x->send();
- }
- $user_object = new WP_User( $user_id );
-
- $wp_list_table = _get_list_table('WP_Users_List_Table');
-
- $x = new WP_Ajax_Response( array(
- 'what' => 'user',
- 'id' => $user_id,
- 'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ),
- 'supplemental' => array(
- 'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
- 'role' => $user_object->roles[0]
- )
- ) );
- $x->send();
- break;
-case 'autosave' : // The name of this action is hardcoded in edit_post()
- define( 'DOING_AUTOSAVE', true );
-
- $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' );
-
- $_POST['post_category'] = explode(",", $_POST['catslist']);
- if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) )
- unset($_POST['post_category']);
-
- $do_autosave = (bool) $_POST['autosave'];
- $do_lock = true;
-
- $data = $alert = '';
- /* translators: draft saved date format, see http://php.net/date */
- $draft_saved_date_format = __('g:i:s a');
- /* translators: %s: date and time */
- $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) );
-
- $supplemental = array();
- if ( isset($login_grace_period) )
- $alert .= sprintf( __('Your login has expired. Please open a new browser window and <a href="%s" target="_blank">log in again</a>. '), add_query_arg( 'interim-login', 1, wp_login_url() ) );
-
- $id = $revision_id = 0;
-
- $post_ID = (int) $_POST['post_ID'];
- $_POST['ID'] = $post_ID;
- $post = get_post($post_ID);
- if ( 'auto-draft' == $post->post_status )
- $_POST['post_status'] = 'draft';
-
- if ( $last = wp_check_post_lock( $post->ID ) ) {
- $do_autosave = $do_lock = false;
-
- $last_user = get_userdata( $last );
- $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
- $data = __( 'Autosave disabled.' );
-
- $supplemental['disable_autosave'] = 'disable';
- $alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) );
- }
-
- if ( 'page' == $post->post_type ) {
- if ( !current_user_can('edit_page', $post_ID) )
- die(__('You are not allowed to edit this page.'));
- } else {
- if ( !current_user_can('edit_post', $post_ID) )
- die(__('You are not allowed to edit this post.'));
- }
-
- if ( $do_autosave ) {
- // Drafts and auto-drafts are just overwritten by autosave
- if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) {
- $id = edit_post();
- } else { // Non drafts are not overwritten. The autosave is stored in a special post revision.
- $revision_id = wp_create_post_autosave( $post->ID );
- if ( is_wp_error($revision_id) )
- $id = $revision_id;
- else
- $id = $post->ID;
- }
- $data = $message;
- } else {
- if ( ! empty( $_POST['auto_draft'] ) )
- $id = 0; // This tells us it didn't actually save
- else
- $id = $post->ID;
- }
-
- if ( $do_lock && empty( $_POST['auto_draft'] ) && $id && is_numeric( $id ) ) {
- $lock_result = wp_set_post_lock( $id );
- $supplemental['active-post-lock'] = implode( ':', $lock_result );
- }
-
- if ( $nonce_age == 2 ) {
- $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave');
- $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink');
- $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink');
- $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes');
- $supplemental['replace-_ajax_linking_nonce'] = wp_create_nonce( 'internal-linking' );
- if ( $id ) {
- if ( $_POST['post_type'] == 'post' )
- $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id);
- elseif ( $_POST['post_type'] == 'page' )
- $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id);
- }
- }
-
- if ( ! empty($alert) )
- $supplemental['alert'] = $alert;
-
- $x = new WP_Ajax_Response( array(
- 'what' => 'autosave',
- 'id' => $id,
- 'data' => $id ? $data : '',
- 'supplemental' => $supplemental
- ) );
- $x->send();
- break;
-case 'closed-postboxes' :
- check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' );
- $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array();
- $closed = array_filter($closed);
-
- $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array();
- $hidden = array_filter($hidden);
-
- $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
- if ( $page != sanitize_key( $page ) )
- die('0');
-
- if ( ! $user = wp_get_current_user() )
- die('-1');
-
- if ( is_array($closed) )
- update_user_option($user->ID, "closedpostboxes_$page", $closed, true);
-
- if ( is_array($hidden) ) {
- $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown
- update_user_option($user->ID, "metaboxhidden_$page", $hidden, true);
- }
-
- die('1');
- break;
-case 'hidden-columns' :
- check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' );
- $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : '';
- $hidden = explode( ',', $_POST['hidden'] );
- $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
- if ( $page != sanitize_key( $page ) )
- die('0');
-
- if ( ! $user = wp_get_current_user() )
- die('-1');
-
- if ( is_array($hidden) )
- update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true);
-
- die('1');
- break;
-case 'update-welcome-panel' :
- check_ajax_referer( 'welcome-panel-nonce', 'welcomepanelnonce' );
-
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
-
- update_user_meta( get_current_user_id(), 'show_welcome_panel', empty( $_POST['visible'] ) ? 0 : 1 );
-
- die('1');
- break;
-case 'menu-get-metabox' :
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
-
- require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
- if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) {
- $type = 'posttype';
- $callback = 'wp_nav_menu_item_post_type_meta_box';
- $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' );
- } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) {
- $type = 'taxonomy';
- $callback = 'wp_nav_menu_item_taxonomy_meta_box';
- $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' );
- }
-
- if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) {
- $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] );
- ob_start();
- call_user_func_array($callback, array(
- null,
- array(
- 'id' => 'add-' . $item->name,
- 'title' => $item->labels->name,
- 'callback' => $callback,
- 'args' => $item,
- )
- ));
-
- $markup = ob_get_clean();
-
- echo json_encode(array(
- 'replace-id' => $type . '-' . $item->name,
- 'markup' => $markup,
- ));
- }
-
- exit;
- break;
-case 'menu-quick-search':
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
-
- require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
-
- _wp_ajax_menu_quick_search( $_REQUEST );
-
- exit;
- break;
-case 'wp-link-ajax':
- check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
-
- $args = array();
-
- if ( isset( $_POST['search'] ) )
- $args['s'] = stripslashes( $_POST['search'] );
- $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
-
- require(ABSPATH . WPINC . '/class-wp-editor.php');
- $results = _WP_Editors::wp_link_query( $args );
-
- if ( ! isset( $results ) )
- die( '0' );
-
- echo json_encode( $results );
- echo "\n";
-
- exit;
- break;
-case 'menu-locations-save':
- if ( ! current_user_can( 'edit_theme_options' ) )
- die('-1');
- check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' );
- if ( ! isset( $_POST['menu-locations'] ) )
- die('0');
- set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) );
- die('1');
- break;
-case 'meta-box-order':
- check_ajax_referer( 'meta-box-order' );
- $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false;
- $page_columns = isset( $_POST['page_columns'] ) ? $_POST['page_columns'] : 'auto';
-
- if ( $page_columns != 'auto' )
- $page_columns = (int) $page_columns;
-
- $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
-
- if ( $page != sanitize_key( $page ) )
- die('0');
-
- if ( ! $user = wp_get_current_user() )
- die('-1');
-
- if ( $order )
- update_user_option($user->ID, "meta-box-order_$page", $order, true);
-
- if ( $page_columns )
- update_user_option($user->ID, "screen_layout_$page", $page_columns, true);
-
- die('1');
- break;
-case 'get-permalink':
- check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
- $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
- die(add_query_arg(array('preview' => 'true'), get_permalink($post_id)));
-break;
-case 'sample-permalink':
- check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' );
- $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
- $title = isset($_POST['new_title'])? $_POST['new_title'] : '';
- $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null;
- die(get_sample_permalink_html($post_id, $title, $slug));
-break;
-case 'inline-save':
- check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
-
- if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) )
- exit;
-
- if ( 'page' == $_POST['post_type'] ) {
- if ( ! current_user_can( 'edit_page', $post_ID ) )
- die( __('You are not allowed to edit this page.') );
- } else {
- if ( ! current_user_can( 'edit_post', $post_ID ) )
- die( __('You are not allowed to edit this post.') );
- }
-
- set_current_screen( $_POST['screen'] );
-
- if ( $last = wp_check_post_lock( $post_ID ) ) {
- $last_user = get_userdata( $last );
- $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' );
- printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) );
- exit;
- }
-
- $data = &$_POST;
-
- $post = get_post( $post_ID, ARRAY_A );
- $post = add_magic_quotes($post); //since it is from db
-
- $data['content'] = $post['post_content'];
- $data['excerpt'] = $post['post_excerpt'];
-
- // rename
- $data['user_ID'] = $GLOBALS['user_ID'];
-
- if ( isset($data['post_parent']) )
- $data['parent_id'] = $data['post_parent'];
-
- // status
- if ( isset($data['keep_private']) && 'private' == $data['keep_private'] )
- $data['post_status'] = 'private';
- else
- $data['post_status'] = $data['_status'];
-
- if ( empty($data['comment_status']) )
- $data['comment_status'] = 'closed';
- if ( empty($data['ping_status']) )
- $data['ping_status'] = 'closed';
-
- // update the post
- edit_post();
-
- $wp_list_table = _get_list_table('WP_Posts_List_Table');
-
- $mode = $_POST['post_view'];
- $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) );
-
- exit;
- break;
-case 'inline-save-tax':
- check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' );
-
- $taxonomy = sanitize_key( $_POST['taxonomy'] );
- $tax = get_taxonomy( $taxonomy );
- if ( ! $tax )
- die( '0' );
-
- if ( ! current_user_can( $tax->cap->edit_terms ) )
- die( '-1' );
-
- set_current_screen( 'edit-' . $taxonomy );
-
- $wp_list_table = _get_list_table('WP_Terms_List_Table');
-
- if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) )
- die(-1);
-
- $tag = get_term( $id, $taxonomy );
- $_POST['description'] = $tag->description;
-
- $updated = wp_update_term($id, $taxonomy, $_POST);
- if ( $updated && !is_wp_error($updated) ) {
- $tag = get_term( $updated['term_id'], $taxonomy );
- if ( !$tag || is_wp_error( $tag ) ) {
- if ( is_wp_error($tag) && $tag->get_error_message() )
- die( $tag->get_error_message() );
- die( __('Item not updated.') );
- }
-
- echo $wp_list_table->single_row( $tag );
- } else {
- if ( is_wp_error($updated) && $updated->get_error_message() )
- die( $updated->get_error_message() );
- die( __('Item not updated.') );
- }
-
- exit;
- break;
-case 'find_posts':
- check_ajax_referer( 'find-posts' );
-
- if ( empty($_POST['ps']) )
- exit;
-
- if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) )
- $what = $_POST['post_type'];
- else
- $what = 'post';
-
- $s = stripslashes($_POST['ps']);
- preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
- $search_terms = array_map('_search_terms_tidy', $matches[0]);
-
- $searchand = $search = '';
- foreach ( (array) $search_terms as $term ) {
- $term = esc_sql( like_escape( $term ) );
- $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))";
- $searchand = ' AND ';
- }
- $term = esc_sql( like_escape( $s ) );
- if ( count($search_terms) > 1 && $search_terms[0] != $s )
- $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')";
-
- $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" );
-
- if ( ! $posts ) {
- $posttype = get_post_type_object($what);
- exit($posttype->labels->not_found);
- }
-
- $html = '<table class="widefat" cellspacing="0"><thead><tr><th class="found-radio"><br /></th><th>'.__('Title').'</th><th>'.__('Date').'</th><th>'.__('Status').'</th></tr></thead><tbody>';
- foreach ( $posts as $post ) {
-
- switch ( $post->post_status ) {
- case 'publish' :
- case 'private' :
- $stat = __('Published');
- break;
- case 'future' :
- $stat = __('Scheduled');
- break;
- case 'pending' :
- $stat = __('Pending Review');
- break;
- case 'draft' :
- $stat = __('Draft');
- break;
- }
-
- if ( '0000-00-00 00:00:00' == $post->post_date ) {
- $time = '';
- } else {
- /* translators: date format in table columns, see http://php.net/date */
- $time = mysql2date(__('Y/m/d'), $post->post_date);
- }
-
- $html .= '<tr class="found-posts"><td class="found-radio"><input type="radio" id="found-'.$post->ID.'" name="found_post_id" value="' . esc_attr($post->ID) . '"></td>';
- $html .= '<td><label for="found-'.$post->ID.'">'.esc_html( $post->post_title ).'</label></td><td>'.esc_html( $time ).'</td><td>'.esc_html( $stat ).'</td></tr>'."\n\n";
- }
- $html .= '</tbody></table>';
-
- $x = new WP_Ajax_Response();
- $x->add( array(
- 'what' => $what,
- 'data' => $html
- ));
- $x->send();
-
- break;
-case 'widgets-order' :
- check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' );
-
- if ( !current_user_can('edit_theme_options') )
- die('-1');
-
- unset( $_POST['savewidgets'], $_POST['action'] );
-
- // save widgets order for all sidebars