Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

FLUID-4565: Clean install of Wordpress 3.2.1

  • Loading branch information...
commit 6adf2da3c125e6c51aa530a2a1731294de9c91c2 1 parent b21b6ae
@michelled michelled authored
Showing with 35,641 additions and 0 deletions.
  1. +1 −0  .gitignore
  2. +3 −0  README.txt
  3. +18 −0 index.php
  4. +327 −0 license.txt
  5. +109 −0 readme.html
  6. +102 −0 wp-activate.php
  7. +1,555 −0 wp-admin/admin-ajax.php
  8. +51 −0 wp-admin/admin-footer.php
  9. +16 −0 wp-admin/admin-functions.php
  10. +219 −0 wp-admin/admin-header.php
  11. +33 −0 wp-admin/admin-post.php
  12. +238 −0 wp-admin/admin.php
  13. +70 −0 wp-admin/async-upload.php
  14. +289 −0 wp-admin/comment.php
  15. +176 −0 wp-admin/credits.php
  16. +1 −0  wp-admin/css/colors-classic-rtl.css
  17. +98 −0 wp-admin/css/colors-classic-rtl.dev.css
  18. +1 −0  wp-admin/css/colors-classic.css
  19. +2,087 −0 wp-admin/css/colors-classic.dev.css
  20. +1 −0  wp-admin/css/colors-fresh-rtl.css
  21. +98 −0 wp-admin/css/colors-fresh-rtl.dev.css
  22. +1 −0  wp-admin/css/colors-fresh.css
  23. +2,091 −0 wp-admin/css/colors-fresh.dev.css
  24. +1 −0  wp-admin/css/dashboard-rtl.css
  25. +110 −0 wp-admin/css/dashboard-rtl.dev.css
  26. +1 −0  wp-admin/css/dashboard.css
  27. +486 −0 wp-admin/css/dashboard.dev.css
  28. +7 −0 wp-admin/css/farbtastic-rtl.css
  29. +32 −0 wp-admin/css/farbtastic.css
  30. +1 −0  wp-admin/css/global-rtl.css
  31. +181 −0 wp-admin/css/global-rtl.dev.css
  32. +1 −0  wp-admin/css/global.css
  33. +607 −0 wp-admin/css/global.dev.css
  34. +1 −0  wp-admin/css/ie-rtl.css
  35. +156 −0 wp-admin/css/ie-rtl.dev.css
  36. +1 −0  wp-admin/css/ie.css
  37. +494 −0 wp-admin/css/ie.dev.css
  38. +1 −0  wp-admin/css/install-rtl.css
  39. +23 −0 wp-admin/css/install-rtl.dev.css
  40. +1 −0  wp-admin/css/install.css
  41. +213 −0 wp-admin/css/install.dev.css
  42. +1 −0  wp-admin/css/login-rtl.css
  43. +29 −0 wp-admin/css/login-rtl.dev.css
  44. +1 −0  wp-admin/css/login.css
  45. +144 −0 wp-admin/css/login.dev.css
  46. +1 −0  wp-admin/css/media-rtl.css
  47. +92 −0 wp-admin/css/media-rtl.dev.css
  48. +1 −0  wp-admin/css/media.css
  49. +382 −0 wp-admin/css/media.dev.css
  50. +1 −0  wp-admin/css/ms.css
  51. +38 −0 wp-admin/css/ms.dev.css
  52. +1 −0  wp-admin/css/nav-menu-rtl.css
  53. +210 −0 wp-admin/css/nav-menu-rtl.dev.css
  54. +1 −0  wp-admin/css/nav-menu.css
  55. +705 −0 wp-admin/css/nav-menu.dev.css
  56. +1 −0  wp-admin/css/plugin-install-rtl.css
  57. +43 −0 wp-admin/css/plugin-install-rtl.dev.css
  58. +1 −0  wp-admin/css/plugin-install.css
  59. +150 −0 wp-admin/css/plugin-install.dev.css
  60. +1 −0  wp-admin/css/press-this-rtl.css
  61. +140 −0 wp-admin/css/press-this-rtl.dev.css
  62. +1 −0  wp-admin/css/press-this.css
  63. +678 −0 wp-admin/css/press-this.dev.css
  64. +1 −0  wp-admin/css/theme-editor-rtl.css
  65. +3 −0  wp-admin/css/theme-editor-rtl.dev.css
  66. +1 −0  wp-admin/css/theme-editor.css
  67. +82 −0 wp-admin/css/theme-editor.dev.css
  68. +1 −0  wp-admin/css/theme-install-rtl.css
  69. +41 −0 wp-admin/css/theme-install-rtl.dev.css
  70. +1 −0  wp-admin/css/theme-install.css
  71. +155 −0 wp-admin/css/theme-install.dev.css
  72. +1 −0  wp-admin/css/widgets-rtl.css
  73. +47 −0 wp-admin/css/widgets-rtl.dev.css
  74. +1 −0  wp-admin/css/widgets.css
  75. +382 −0 wp-admin/css/widgets.dev.css
  76. +1 −0  wp-admin/css/wp-admin-rtl.css
  77. +1,336 −0 wp-admin/css/wp-admin-rtl.dev.css
  78. +1 −0  wp-admin/css/wp-admin.css
  79. +4,709 −0 wp-admin/css/wp-admin.dev.css
  80. +361 −0 wp-admin/custom-background.php
  81. +791 −0 wp-admin/custom-header.php
  82. +242 −0 wp-admin/edit-comments.php
  83. +315 −0 wp-admin/edit-form-advanced.php
  84. +147 −0 wp-admin/edit-form-comment.php
  85. +129 −0 wp-admin/edit-link-form.php
  86. +93 −0 wp-admin/edit-tag-form.php
  87. +394 −0 wp-admin/edit-tags.php
  88. +263 −0 wp-admin/edit.php
  89. +206 −0 wp-admin/export.php
  90. +42 −0 wp-admin/freedoms.php
  91. +51 −0 wp-admin/gears-manifest.php
  92. BIN  wp-admin/images/align-center.png
  93. BIN  wp-admin/images/align-left.png
  94. BIN  wp-admin/images/align-none.png
  95. BIN  wp-admin/images/align-right.png
  96. BIN  wp-admin/images/archive-link.png
  97. BIN  wp-admin/images/arrows-dark-vs.png
  98. BIN  wp-admin/images/arrows-dark.png
  99. BIN  wp-admin/images/arrows-vs.png
  100. BIN  wp-admin/images/arrows.png
  101. BIN  wp-admin/images/blue-grad.png
  102. BIN  wp-admin/images/bubble_bg-rtl.gif
  103. BIN  wp-admin/images/bubble_bg.gif
  104. BIN  wp-admin/images/button-grad-active.png
  105. BIN  wp-admin/images/button-grad.png
  106. BIN  wp-admin/images/comment-grey-bubble.png
  107. BIN  wp-admin/images/date-button.gif
  108. BIN  wp-admin/images/ed-bg-vs.gif
  109. BIN  wp-admin/images/ed-bg.gif
  110. BIN  wp-admin/images/fade-butt.png
  111. BIN  wp-admin/images/fav-arrow-rtl.gif
  112. BIN  wp-admin/images/fav-arrow.gif
  113. BIN  wp-admin/images/fav-vs.png
  114. BIN  wp-admin/images/fav.png
  115. BIN  wp-admin/images/generic.png
  116. BIN  wp-admin/images/gray-grad.png
  117. BIN  wp-admin/images/gray-star.png
  118. BIN  wp-admin/images/icons32-vs.png
  119. BIN  wp-admin/images/icons32.png
  120. BIN  wp-admin/images/imgedit-icons.png
  121. BIN  wp-admin/images/list.png
  122. BIN  wp-admin/images/loading-publish.gif
  123. BIN  wp-admin/images/loading.gif
  124. BIN  wp-admin/images/logo-ghost.png
  125. BIN  wp-admin/images/logo-login.png
  126. BIN  wp-admin/images/logo.gif
  127. BIN  wp-admin/images/marker.png
  128. BIN  wp-admin/images/mask.png
  129. BIN  wp-admin/images/media-button-image.gif
  130. BIN  wp-admin/images/media-button-music.gif
  131. BIN  wp-admin/images/media-button-other.gif
  132. BIN  wp-admin/images/media-button-video.gif
  133. BIN  wp-admin/images/menu-arrow-frame-rtl.png
  134. BIN  wp-admin/images/menu-arrow-frame.png
  135. BIN  wp-admin/images/menu-arrows.gif
  136. BIN  wp-admin/images/menu-bits-rtl-vs.gif
  137. BIN  wp-admin/images/menu-bits-rtl.gif
  138. BIN  wp-admin/images/menu-bits-vs.gif
  139. BIN  wp-admin/images/menu-bits.gif
  140. BIN  wp-admin/images/menu-dark-rtl-vs.gif
  141. BIN  wp-admin/images/menu-dark-rtl.gif
  142. BIN  wp-admin/images/menu-dark-vs.gif
  143. BIN  wp-admin/images/menu-dark.gif
  144. BIN  wp-admin/images/menu-shadow-rtl.png
  145. BIN  wp-admin/images/menu-shadow.png
  146. BIN  wp-admin/images/menu-vs.png
  147. BIN  wp-admin/images/menu.png
  148. BIN  wp-admin/images/no.png
  149. BIN  wp-admin/images/press-this.png
  150. BIN  wp-admin/images/required.gif
  151. BIN  wp-admin/images/resize-rtl.gif
  152. BIN  wp-admin/images/resize.gif
  153. BIN  wp-admin/images/screen-options-toggle-vs.gif
  154. BIN  wp-admin/images/screen-options-toggle.gif
  155. BIN  wp-admin/images/se.png
  156. BIN  wp-admin/images/sort.gif
  157. BIN  wp-admin/images/star.png
  158. BIN  wp-admin/images/toggle-arrow-rtl.gif
  159. BIN  wp-admin/images/toggle-arrow.gif
  160. BIN  wp-admin/images/upload-classic.png
  161. BIN  wp-admin/images/upload-fresh.png
  162. BIN  wp-admin/images/wheel.png
  163. BIN  wp-admin/images/white-grad-active.png
  164. BIN  wp-admin/images/white-grad.png
  165. BIN  wp-admin/images/widgets-arrow-vs.gif
  166. BIN  wp-admin/images/widgets-arrow.gif
  167. BIN  wp-admin/images/wordpress-logo.png
  168. BIN  wp-admin/images/wp-logo-vs.png
  169. BIN  wp-admin/images/wp-logo.png
  170. BIN  wp-admin/images/wpspin_dark.gif
  171. BIN  wp-admin/images/wpspin_light.gif
  172. BIN  wp-admin/images/xit.gif
  173. BIN  wp-admin/images/yes.png
  174. +147 −0 wp-admin/import.php
  175. +64 −0 wp-admin/includes/admin.php
  176. +269 −0 wp-admin/includes/bookmark.php
  177. +190 −0 wp-admin/includes/class-ftp-pure.php
  178. +250 −0 wp-admin/includes/class-ftp-sockets.php
  179. +906 −0 wp-admin/includes/class-ftp.php
  180. +5,687 −0 wp-admin/includes/class-pclzip.php
  181. +559 −0 wp-admin/includes/class-wp-comments-list-table.php
  182. +332 −0 wp-admin/includes/class-wp-filesystem-base.php
  183. +364 −0 wp-admin/includes/class-wp-filesystem-direct.php
  184. +387 −0 wp-admin/includes/class-wp-filesystem-ftpext.php
  185. +327 −0 wp-admin/includes/class-wp-filesystem-ftpsockets.php
  186. +383 −0 wp-admin/includes/class-wp-filesystem-ssh2.php
  187. +307 −0 wp-admin/includes/class-wp-importer.php
  188. +186 −0 wp-admin/includes/class-wp-links-list-table.php
  189. +908 −0 wp-admin/includes/class-wp-list-table.php
  190. +374 −0 wp-admin/includes/class-wp-media-list-table.php
  191. +340 −0 wp-admin/includes/class-wp-ms-sites-list-table.php
  192. +361 −0 wp-admin/includes/class-wp-ms-themes-list-table.php
  193. +277 −0 wp-admin/includes/class-wp-ms-users-list-table.php
  194. +244 −0 wp-admin/includes/class-wp-plugin-install-list-table.php
  195. +458 −0 wp-admin/includes/class-wp-plugins-list-table.php
Sorry, we could not display the entire diff because too many files (949) changed.
View
1  .gitignore
@@ -0,0 +1 @@
+wp-config.php
View
3  README.txt
@@ -0,0 +1,3 @@
+This is a clean install of Wordpress which is the base of the Studios site.
+
+Downloaded from wordpress.org Version 3.2.1
View
18 index.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Front to the WordPress application. This file doesn't do anything, but loads
+ * wp-blog-header.php which does and tells WordPress to load the theme.
+ *
+ * @package WordPress
+ */
+
+/**
+ * Tells WordPress to load the WordPress theme and output it.
+ *
+ * @var bool
+ */
+define('WP_USE_THEMES', true);
+
+/** Loads the WordPress Environment and Template */
+require('./wp-blog-header.php');
+?>
View
327 license.txt
@@ -0,0 +1,327 @@
+WordPress - Web publishing software
+
+Copyright 2011 by the contributors
+
+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 St, Fifth Floor, Boston, MA 02110-1301 USA
+
+This program incorporates work covered by the following copyright and
+permission notices:
+
+ b2 is (c) 2001, 2002 Michel Valdrighi - m@tidakada.com -
+ http://tidakada.com
+
+ Wherever third party code has been used, credit has been given in the code's
+ comments.
+
+ b2 is released under the GPL
+
+and
+
+ WordPress - Web publishing software
+
+ Copyright 2003-2010 by the contributors
+
+ WordPress is released under the GPL
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+ 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
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+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
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+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
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+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
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+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
+
+ 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
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+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
+
+
+WRITTEN OFFER
+
+The source code for any program binaries or compressed scripts that are
+included with WordPress can be freely obtained at the following URL:
+
+ http://wordpress.org/download/source/
View
109 readme.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>WordPress &#8250; ReadMe</title>
+ <link rel="stylesheet" href="wp-admin/css/install.css?ver=20100228" type="text/css" />
+</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.2.1
+</h1>
+<p style="text-align: center">Semantic Personal Publishing Platform</p>
+
+<h1>First Things First</h1>
+<p>Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I'm proud to be a part of. Thousands of hours have gone into WordPress, and we're dedicated to making it better every day. Thank you for making it part of your world.</p>
+<p style="text-align: right">&#8212; Matt Mullenweg</p>
+
+<h1>Installation: Famous 5-minute install</h1>
+<ol>
+ <li>Unzip the package in an empty directory and upload everything.</li>
+ <li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser. It will take you through the process to set up a <code>wp-config.php</code> file with your database connection details.
+ <ol>
+ <li>If for some reason this doesn't work, don't worry. It doesn't work on all web hosts. Open up <code>wp-config-sample.php</code> with a text editor like WordPad or similar and fill in your database connection details.</li>
+ <li>Save the file as <code>wp-config.php</code> and upload it.</li>
+ <li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser.</li>
+ </ol>
+ </li>
+ <li>Once the configuration file is set up, the installer will set up the tables needed for your blog. If there is an error, double check your <code>wp-config.php</code> file, and try again. If it fails again, please go to the <a href="http://wordpress.org/support/" title="WordPress support">support forums</a> with as much data as you can gather.</li>
+ <li><strong>If you did not enter a password, note the password given to you.</strong> If you did not provide a username, it will be <code>admin</code>.</li>
+ <li>The installer should then send you to the <a href="wp-login.php">login page</a>. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on 'Profile' to change the password.</li>
+</ol>
+
+<h1>Updating</h1>
+<h2>Using the Automatic Updater</h2>
+<p>If you are updating from version 2.7 or higher, you can use the automatic updater:</p>
+<ol>
+ <li>Open the <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> in your browser and follow the instructions.</li>
+ <li>You wanted more, perhaps? That's it!</li>
+</ol>
+
+<h2>Updating Manually</h2>
+<ol>
+ <li>Before you update anything, make sure you have backup copies of any files you may have modified such as <code>index.php</code>.</li>
+ <li>Delete your old WordPress files, saving ones you've modified.</li>
+ <li>Upload the new files.</li>
+ <li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a>.</span></li>
+</ol>
+
+<h2>Theme Template Changes</h2>
+<p>If you have customized your theme templates, you may have to make some changes across major versions.</p>
+
+<h1>Migrating from other systems</h1>
+<p>WordPress can <a href="http://codex.wordpress.org/Importing_Content">import from a number of systems</a>. First you need to get WordPress installed and working as described above, before using <a href="wp-admin/import.php" title="Import to WordPress">our import tools</a>.</p>
+
+<h1>System Requirements</h1>
+<ul>
+ <li><a href="http://php.net/">PHP</a> version <strong>5.2.4</strong> or higher.</li>
+ <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.0</strong> or higher.</li>
+</ul>
+
+<h2>System Recommendations</h2>
+<ul>
+ <li>The <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> Apache module.</li>
+ <li>A link to <a href="http://wordpress.org/">http://wordpress.org</a> on your site.</li>
+</ul>
+
+<h1>Online Resources</h1>
+<p>If you have any questions that aren't addressed in this document, please take advantage of WordPress' numerous online resources:</p>
+<dl>
+ <dt><a href="http://codex.wordpress.org/">The WordPress Codex</a></dt>
+ <dd>The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.</dd>
+ <dt><a href="http://wordpress.org/news/">The WordPress Blog</a></dt>
+ <dd>This is where you'll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.</dd>
+ <dt><a href="http://planet.wordpress.org/">WordPress Planet</a></dt>
+ <dd>The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.</dd>
+ <dt><a href="http://wordpress.org/support/">WordPress Support Forums</a></dt>
+ <dd>If you've looked everywhere and still can't find an answer, the support forums are very active and have a large community ready to help. To help them help you be sure to use a descriptive thread title and describe your question in as much detail as possible.</dd>
+ <dt><a href="http://codex.wordpress.org/IRC">WordPress <abbr title="Internet Relay Chat">IRC</abbr> Channel</a></dt>
+ <dd>There is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (<a href="irc://irc.freenode.net/wordpress">irc.freenode.net #wordpress</a>)</dd>
+</dl>
+
+<h1><abbr title="eXtensible Markup Language">XML</abbr>-<abbr title="Remote Procedure Call">RPC</abbr> and Atom Interface</h1>
+<p>You can post to your WordPress blog with tools like <a href="http://download.live.com/writer">Windows Live Writer</a>, <a href="http://illuminex.com/ecto/">Ecto</a>, <a href="http://bloggar.com/">w.bloggar</a>, <a href="http://radio.userland.com/">Radio Userland</a> (which means you can use Radio's email-to-blog feature), <a href="http://www.newzcrawler.com/">NewzCrawler</a>, and other tools that support the blogging <abbr title="application programming interface">API</abbr>s! :) You can read more about <a href="http://codex.wordpress.org/XML-RPC_Support"><abbr>XML</abbr>-<abbr>RPC</abbr> support on the Codex</a>.</p>
+
+<h1>Post via Email</h1>
+<p>You can post from an email client! To set this up go to your &quot;Writing&quot; options screen and fill in the connection details for your secret <abbr title="Post Office Protocol version 3">POP3</abbr> account. Then you need to set up <code>wp-mail.php</code> to execute periodically to check the mailbox for new posts. You can do it with <a href="http://en.wikipedia.org/wiki/Cron">cron</a>-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your <code>wp-mail.php</code> <abbr title="Uniform Resource Locator">URL</abbr>.</p>
+<p>Posting is easy: Any email sent to the address you specify will be posted, with the subject as the title. It is best to keep the address discrete. The script will <em>delete</em> emails that are successfully posted.</p>
+
+<h1>User Roles</h1>
+<p>We introduced a very flexible roles system in version 2.0. You can <a href="http://codex.wordpress.org/Roles_and_Capabilities" title="WordPress roles and capabilities">read more about Roles and Capabilities on the Codex</a>.</p>
+
+<h1>Final Notes</h1>
+<ul>
+ <li>If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the <a href="http://wordpress.org/support/">Support Forums</a>.</li>
+ <li>WordPress has a robust plugin <abbr title="application programming interface">API</abbr> that makes extending the code easy. If you are a developer interested in utilizing this, see the <a href="http://codex.wordpress.org/Plugin_API" title="WordPress plugin API">plugin documentation in the Codex</a>. You shouldn't modify any of the core code.</li>
+</ul>
+
+<h1>Share the Love</h1>
+<p>WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better&#8212;you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgable than yourself, or writing the author of a media article that overlooks us.</p>
+
+<p>WordPress is the official continuation of <a href="http://cafelog.com/">b2/caf&#233;log</a>, which came from Michel V. The work has been continued by the <a href="http://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <a href="http://wordpress.org/donate/" title="Donate to WordPress">donating</a>.</p>
+
+<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
102 wp-activate.php
@@ -0,0 +1,102 @@
+<?php
+define( 'WP_INSTALLING', true );
+
+/** Sets up the WordPress Environment. */
+require( dirname(__FILE__) . '/wp-load.php' );
+
+require( './wp-blog-header.php' );
+
+if ( !is_multisite() ) {
+ wp_redirect( site_url( '/wp-login.php?action=register' ) );
+ die();
+}
+
+if ( is_object( $wp_object_cache ) )
+ $wp_object_cache->cache_enabled = false;
+
+do_action( 'activate_header' );
+
+function do_activate_header() {
+ do_action( 'activate_wp_head' );
+}
+add_action( 'wp_head', 'do_activate_header' );
+
+function wpmu_activate_stylesheet() {
+ ?>
+ <style type="text/css">
+ form { margin-top: 2em; }
+ #submit, #key { width: 90%; font-size: 24px; }
+ #language { margin-top: .5em; }
+ .error { background: #f66; }
+ span.h3 { padding: 0 8px; font-size: 1.3em; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-weight: bold; color: #333; }
+ </style>
+ <?php
+}
+add_action( 'wp_head', 'wpmu_activate_stylesheet' );
+
+get_header();
+?>
+
+<div id="content" class="widecolumn">
+ <?php if ( empty($_GET['key']) && empty($_POST['key']) ) { ?>
+
+ <h2><?php _e('Activation Key Required') ?></h2>
+ <form name="activateform" id="activateform" method="post" action="<?php echo network_site_url('wp-activate.php'); ?>">
+ <p>
+ <label for="key"><?php _e('Activation Key:') ?></label>
+ <br /><input type="text" name="key" id="key" value="" size="50" />
+ </p>
+ <p class="submit">
+ <input id="submit" type="submit" name="Submit" class="submit" value="<?php esc_attr_e('Activate') ?>" />
+ </p>
+ </form>
+
+ <?php } else {
+
+ $key = !empty($_GET['key']) ? $_GET['key'] : $_POST['key'];
+ $result = wpmu_activate_signup($key);
+ if ( is_wp_error($result) ) {
+ if ( 'already_active' == $result->get_error_code() || 'blog_taken' == $result->get_error_code() ) {
+ $signup = $result->get_error_data();
+ ?>
+ <h2><?php _e('Your account is now active!'); ?></h2>
+ <?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, network_site_url( 'wp-login.php?action=lostpassword', 'login' ) );
+ } 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, network_site_url( 'wp-login.php?action=lostpassword' ) );
+ }
+ echo '</p>';
+ } else {
+ ?>
+ <h2><?php _e('An error occurred during the activation'); ?></h2>
+ <?php
+ echo '<p>'.$result->get_error_message().'</p>';
+ }
+ } else {
+ extract($result);
+ $url = get_blogaddress_by_id( (int) $blog_id);
+ $user = new WP_User( (int) $user_id);
+ ?>
+ <h2><?php _e('Your account is now active!'); ?></h2>
+
+ <div id="signup-welcome">
+ <p><span class="h3"><?php _e('Username:'); ?></span> <?php echo $user->user_login ?></p>
+ <p><span class="h3"><?php _e('Password:'); ?></span> <?php echo $password; ?></p>
+ </div>
+
+ <?php if ( $url != network_home_url('', 'http') ) : ?>
+ <p class="view"><?php printf( __('Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>'), $url, $url . 'wp-login.php' ); ?></p>
+ <?php else: ?>
+ <p class="view"><?php printf( __('Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?></p>
+ <?php endif;
+ }
+ }
+ ?>
+</div>
+<script type="text/javascript">
+ var key_input = document.getElementById('key');
+ key_input && key_input.focus();
+</script>
+<?php get_footer(); ?>
View
1,555 wp-admin/admin-ajax.php
@@ -0,0 +1,1555 @@
+<?php
+/**
+ * WordPress AJAX Process Execution.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+/**
+ * Executing AJAX process.
+ *
+ * @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 = (object) $_GET['list_args']['screen'];
+ //TODO fix this in a better way see #15336
+ $current_screen->is_network = 'false' === $current_screen->is_network ? false : true;
+ $current_screen->is_user = 'false' === $current_screen->is_user ? false : true;
+
+ 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 );
+
+ $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_post', $comment->comment_post_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 );
+ 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_post_meta_by_id( $id ) )
+ die('1');
+
+ if ( !current_user_can( 'edit_post', $meta->post_id ) || is_protected_meta( $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_post', $comment->comment_post_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 ) {
+ 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_' . $comment_post_ID) != $_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_post_ID = (int) $_POST['comment_post_ID'];
+ if ( ! current_user_can( 'edit_post', $comment_post_ID ) )
+ die('-1');
+
+ if ( '' == $_POST['content'] )
+ die( __('Error: please type a comment.') );
+
+ $comment_id = (int) $_POST['comment_ID'];
+ $_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;
+ }
+ }
+
+ 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 );
+
+ 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));
+
+ 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.'));
+ }
+
+ $meta = get_post_meta_by_id( $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) array_pop( array_keys($_POST['meta']) );
+ $key = $_POST['meta'][$mid]['key'];
+ $value = $_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_post_meta_by_id( $mid ) )
+ die('0'); // if meta doesn't exist
+ if ( !current_user_can( 'edit_post', $meta->post_id ) )
+ die('-1');
+ if ( is_protected_meta( $meta->meta_key ) )
+ die('-1');
+ if ( $meta->meta_value != stripslashes($value) || $meta->meta_key != stripslashes($key) ) {
+ if ( !$u = update_meta( $mid, $key, $value ) )
+ die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems).
+ }
+
+ $key = stripslashes($key);
+ $value = stripslashes($value);
+ $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 ( isset( $_POST['auto_draft'] ) && '1' == $_POST['auto_draft'] )
+ $id = 0; // This tells us it didn't actually save
+ else
+ $id = $post->ID;
+ }
+
+ if ( $do_lock && ( isset( $_POST['auto_draft'] ) && ( $_POST['auto_draft'] != '1' ) ) && $id && is_numeric($id) )
+ wp_set_post_lock( $id );
+
+ 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');
+ 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 ( !preg_match( '/^[a-z_-]+$/', $page ) )
+ die('-1');
+
+ 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 ( !preg_match( '/^[a-z_-]+$/', $page ) )
+ die('-1');
+
+ 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 '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':
+ require_once ABSPATH . 'wp-admin/includes/internal-linking.php';
+
+ 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;
+
+ $results = 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'] ) ? (int) $_POST['page_columns'] : 0;
+ $page = isset( $_POST['page'] ) ? $_POST['page'] : '';
+
+ if ( !preg_match( '/^[a-z_-]+$/', $page ) )
+ die('-1');
+
+ 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.') );