boot-cli 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1413) hide show
  1. checksums.yaml +7 -0
  2. data/bin/boot +9 -0
  3. data/lib/Boot/Lib/Commands/Config.rb +28 -0
  4. data/lib/Boot/Lib/Commands/Help.rb +17 -0
  5. data/lib/Boot/Lib/Commands/New.rb +77 -0
  6. data/lib/Boot/Lib/Commands/Template.rb +87 -0
  7. data/lib/Boot/Lib/Commands/Version.rb +15 -0
  8. data/lib/Boot/Lib/Core/Config.rb +84 -0
  9. data/lib/Boot/Lib/Core/InvalidConfigException.rb +4 -0
  10. data/lib/Boot/Lib/Core/InvalidTemplateException.rb +4 -0
  11. data/lib/Boot/Lib/Core/SubCommand.rb +61 -0
  12. data/lib/Boot/Lib/Core/Template.rb +375 -0
  13. data/lib/Boot/Lib/autoload.rb +23 -0
  14. data/lib/boot-default-config.json +1 -0
  15. data/lib/boot.rb +60 -0
  16. data/lib/template.json-schema +144 -0
  17. data/lib/templates/.document +1 -0
  18. data/lib/templates/.gitmodules +3 -0
  19. data/lib/templates/README.md +3 -0
  20. data/lib/templates/c/static/ext/__dummy-file__ +0 -0
  21. data/lib/templates/c/static/src/main.c +0 -0
  22. data/lib/templates/c/template.json +24 -0
  23. data/lib/templates/gitignores/Actionscript.gitignore +11 -0
  24. data/lib/templates/gitignores/Ada.gitignore +5 -0
  25. data/lib/templates/gitignores/Agda.gitignore +1 -0
  26. data/lib/templates/gitignores/Android.gitignore +27 -0
  27. data/lib/templates/gitignores/AppEngine.gitignore +2 -0
  28. data/lib/templates/gitignores/AppceleratorTitanium.gitignore +3 -0
  29. data/lib/templates/gitignores/ArchLinuxPackages.gitignore +14 -0
  30. data/lib/templates/gitignores/Autotools.gitignore +14 -0
  31. data/lib/templates/gitignores/C++.gitignore +28 -0
  32. data/lib/templates/gitignores/C.gitignore +32 -0
  33. data/lib/templates/gitignores/CFWheels.gitignore +12 -0
  34. data/lib/templates/gitignores/CMake.gitignore +5 -0
  35. data/lib/templates/gitignores/CONTRIBUTING.md +34 -0
  36. data/lib/templates/gitignores/CUDA.gitignore +6 -0
  37. data/lib/templates/gitignores/CakePHP.gitignore +13 -0
  38. data/lib/templates/gitignores/ChefCookbook.gitignore +9 -0
  39. data/lib/templates/gitignores/Clojure.gitignore +12 -0
  40. data/lib/templates/gitignores/CodeIgniter.gitignore +6 -0
  41. data/lib/templates/gitignores/CommonLisp.gitignore +3 -0
  42. data/lib/templates/gitignores/Composer.gitignore +6 -0
  43. data/lib/templates/gitignores/Concrete5.gitignore +3 -0
  44. data/lib/templates/gitignores/Coq.gitignore +3 -0
  45. data/lib/templates/gitignores/CraftCMS.gitignore +3 -0
  46. data/lib/templates/gitignores/DM.gitignore +5 -0
  47. data/lib/templates/gitignores/Dart.gitignore +14 -0
  48. data/lib/templates/gitignores/Delphi.gitignore +57 -0
  49. data/lib/templates/gitignores/Drupal.gitignore +36 -0
  50. data/lib/templates/gitignores/EPiServer.gitignore +4 -0
  51. data/lib/templates/gitignores/Eagle.gitignore +36 -0
  52. data/lib/templates/gitignores/Elisp.gitignore +5 -0
  53. data/lib/templates/gitignores/Elixir.gitignore +4 -0
  54. data/lib/templates/gitignores/Erlang.gitignore +10 -0
  55. data/lib/templates/gitignores/ExpressionEngine.gitignore +19 -0
  56. data/lib/templates/gitignores/ExtJs.gitignore +4 -0
  57. data/lib/templates/gitignores/Fancy.gitignore +2 -0
  58. data/lib/templates/gitignores/Finale.gitignore +13 -0
  59. data/lib/templates/gitignores/ForceDotCom.gitignore +4 -0
  60. data/lib/templates/gitignores/Fortran.gitignore +28 -0
  61. data/lib/templates/gitignores/FuelPHP.gitignore +2 -0
  62. data/lib/templates/gitignores/GWT.gitignore +28 -0
  63. data/lib/templates/gitignores/Gcov.gitignore +5 -0
  64. data/lib/templates/gitignores/GitBook.gitignore +16 -0
  65. data/lib/templates/gitignores/Global/Anjuta.gitignore +3 -0
  66. data/lib/templates/gitignores/Global/Archives.gitignore +27 -0
  67. data/lib/templates/gitignores/Global/BricxCC.gitignore +4 -0
  68. data/lib/templates/gitignores/Global/CVS.gitignore +4 -0
  69. data/lib/templates/gitignores/Global/Cloud9.gitignore +3 -0
  70. data/lib/templates/gitignores/Global/CodeKit.gitignore +3 -0
  71. data/lib/templates/gitignores/Global/DartEditor.gitignore +2 -0
  72. data/lib/templates/gitignores/Global/Dreamweaver.gitignore +3 -0
  73. data/lib/templates/gitignores/Global/Eclipse.gitignore +36 -0
  74. data/lib/templates/gitignores/Global/EiffelStudio.gitignore +2 -0
  75. data/lib/templates/gitignores/Global/Emacs.gitignore +32 -0
  76. data/lib/templates/gitignores/Global/Ensime.gitignore +4 -0
  77. data/lib/templates/gitignores/Global/Espresso.gitignore +1 -0
  78. data/lib/templates/gitignores/Global/FlexBuilder.gitignore +3 -0
  79. data/lib/templates/gitignores/Global/IPythonNotebook.gitignore +2 -0
  80. data/lib/templates/gitignores/Global/JDeveloper.gitignore +13 -0
  81. data/lib/templates/gitignores/Global/JetBrains.gitignore +46 -0
  82. data/lib/templates/gitignores/Global/KDevelop4.gitignore +2 -0
  83. data/lib/templates/gitignores/Global/Kate.gitignore +3 -0
  84. data/lib/templates/gitignores/Global/Lazarus.gitignore +15 -0
  85. data/lib/templates/gitignores/Global/LibreOffice.gitignore +2 -0
  86. data/lib/templates/gitignores/Global/Linux.gitignore +7 -0
  87. data/lib/templates/gitignores/Global/LyX.gitignore +4 -0
  88. data/lib/templates/gitignores/Global/Matlab.gitignore +16 -0
  89. data/lib/templates/gitignores/Global/Mercurial.gitignore +3 -0
  90. data/lib/templates/gitignores/Global/MicrosoftOffice.gitignore +10 -0
  91. data/lib/templates/gitignores/Global/ModelSim.gitignore +23 -0
  92. data/lib/templates/gitignores/Global/Momentics.gitignore +8 -0
  93. data/lib/templates/gitignores/Global/MonoDevelop.gitignore +8 -0
  94. data/lib/templates/gitignores/Global/NetBeans.gitignore +8 -0
  95. data/lib/templates/gitignores/Global/Ninja.gitignore +2 -0
  96. data/lib/templates/gitignores/Global/NotepadPP.gitignore +2 -0
  97. data/lib/templates/gitignores/Global/OSX.gitignore +24 -0
  98. data/lib/templates/gitignores/Global/README.md +10 -0
  99. data/lib/templates/gitignores/Global/Redcar.gitignore +1 -0
  100. data/lib/templates/gitignores/Global/Redis.gitignore +3 -0
  101. data/lib/templates/gitignores/Global/SBT.gitignore +9 -0
  102. data/lib/templates/gitignores/Global/SVN.gitignore +1 -0
  103. data/lib/templates/gitignores/Global/SlickEdit.gitignore +11 -0
  104. data/lib/templates/gitignores/Global/SublimeText.gitignore +14 -0
  105. data/lib/templates/gitignores/Global/SynopsysVCS.gitignore +23 -0
  106. data/lib/templates/gitignores/Global/Tags.gitignore +14 -0
  107. data/lib/templates/gitignores/Global/TextMate.gitignore +3 -0
  108. data/lib/templates/gitignores/Global/TortoiseGit.gitignore +2 -0
  109. data/lib/templates/gitignores/Global/Vagrant.gitignore +1 -0
  110. data/lib/templates/gitignores/Global/Vim.gitignore +6 -0
  111. data/lib/templates/gitignores/Global/VirtualEnv.gitignore +9 -0
  112. data/lib/templates/gitignores/Global/WebMethods.gitignore +14 -0
  113. data/lib/templates/gitignores/Global/Windows.gitignore +18 -0
  114. data/lib/templates/gitignores/Global/Xcode.gitignore +14 -0
  115. data/lib/templates/gitignores/Global/XilinxISE.gitignore +57 -0
  116. data/lib/templates/gitignores/Go.gitignore +24 -0
  117. data/lib/templates/gitignores/Gradle.gitignore +8 -0
  118. data/lib/templates/gitignores/Grails.gitignore +33 -0
  119. data/lib/templates/gitignores/Haskell.gitignore +16 -0
  120. data/lib/templates/gitignores/IGORPro.gitignore +5 -0
  121. data/lib/templates/gitignores/Idris.gitignore +2 -0
  122. data/lib/templates/gitignores/Java.gitignore +12 -0
  123. data/lib/templates/gitignores/Jboss.gitignore +19 -0
  124. data/lib/templates/gitignores/Jekyll.gitignore +3 -0
  125. data/lib/templates/gitignores/Joomla.gitignore +525 -0
  126. data/lib/templates/gitignores/Jython.gitignore +2 -0
  127. data/lib/templates/gitignores/KiCAD.gitignore +11 -0
  128. data/lib/templates/gitignores/Kohana.gitignore +2 -0
  129. data/lib/templates/gitignores/LICENSE +19 -0
  130. data/lib/templates/gitignores/LabVIEW.gitignore +16 -0
  131. data/lib/templates/gitignores/Laravel.gitignore +4 -0
  132. data/lib/templates/gitignores/Leiningen.gitignore +12 -0
  133. data/lib/templates/gitignores/LemonStand.gitignore +21 -0
  134. data/lib/templates/gitignores/Lilypond.gitignore +6 -0
  135. data/lib/templates/gitignores/Lithium.gitignore +2 -0
  136. data/lib/templates/gitignores/Lua.gitignore +41 -0
  137. data/lib/templates/gitignores/Magento.gitignore +126 -0
  138. data/lib/templates/gitignores/Maven.gitignore +9 -0
  139. data/lib/templates/gitignores/Mercury.gitignore +13 -0
  140. data/lib/templates/gitignores/MetaProgrammingSystem.gitignore +16 -0
  141. data/lib/templates/gitignores/Meteor.gitignore +2 -0
  142. data/lib/templates/gitignores/Nanoc.gitignore +10 -0
  143. data/lib/templates/gitignores/Nim.gitignore +1 -0
  144. data/lib/templates/gitignores/Node.gitignore +27 -0
  145. data/lib/templates/gitignores/OCaml.gitignore +20 -0
  146. data/lib/templates/gitignores/Objective-C.gitignore +26 -0
  147. data/lib/templates/gitignores/Opa.gitignore +13 -0
  148. data/lib/templates/gitignores/OpenCart.gitignore +11 -0
  149. data/lib/templates/gitignores/OracleForms.gitignore +8 -0
  150. data/lib/templates/gitignores/Packer.gitignore +5 -0
  151. data/lib/templates/gitignores/Perl.gitignore +20 -0
  152. data/lib/templates/gitignores/Phalcon.gitignore +2 -0
  153. data/lib/templates/gitignores/PlayFramework.gitignore +17 -0
  154. data/lib/templates/gitignores/Plone.gitignore +18 -0
  155. data/lib/templates/gitignores/Prestashop.gitignore +25 -0
  156. data/lib/templates/gitignores/Processing.gitignore +7 -0
  157. data/lib/templates/gitignores/Python.gitignore +57 -0
  158. data/lib/templates/gitignores/Qooxdoo.gitignore +5 -0
  159. data/lib/templates/gitignores/Qt.gitignore +34 -0
  160. data/lib/templates/gitignores/R.gitignore +13 -0
  161. data/lib/templates/gitignores/README.md +79 -0
  162. data/lib/templates/gitignores/ROS.gitignore +47 -0
  163. data/lib/templates/gitignores/Rails.gitignore +35 -0
  164. data/lib/templates/gitignores/RhodesRhomobile.gitignore +9 -0
  165. data/lib/templates/gitignores/Ruby.gitignore +35 -0
  166. data/lib/templates/gitignores/Rust.gitignore +11 -0
  167. data/lib/templates/gitignores/SCons.gitignore +2 -0
  168. data/lib/templates/gitignores/Sass.gitignore +2 -0
  169. data/lib/templates/gitignores/Scala.gitignore +17 -0
  170. data/lib/templates/gitignores/Scrivener.gitignore +7 -0
  171. data/lib/templates/gitignores/Sdcc.gitignore +8 -0
  172. data/lib/templates/gitignores/SeamGen.gitignore +26 -0
  173. data/lib/templates/gitignores/SketchUp.gitignore +1 -0
  174. data/lib/templates/gitignores/Stella.gitignore +12 -0
  175. data/lib/templates/gitignores/SugarCRM.gitignore +25 -0
  176. data/lib/templates/gitignores/Swift.gitignore +33 -0
  177. data/lib/templates/gitignores/Symfony.gitignore +37 -0
  178. data/lib/templates/gitignores/SymphonyCMS.gitignore +6 -0
  179. data/lib/templates/gitignores/TeX.gitignore +126 -0
  180. data/lib/templates/gitignores/Textpattern.gitignore +11 -0
  181. data/lib/templates/gitignores/TurboGears2.gitignore +20 -0
  182. data/lib/templates/gitignores/Typo3.gitignore +18 -0
  183. data/lib/templates/gitignores/Umbraco.gitignore +17 -0
  184. data/lib/templates/gitignores/Unity.gitignore +21 -0
  185. data/lib/templates/gitignores/VVVV.gitignore +6 -0
  186. data/lib/templates/gitignores/VisualStudio.gitignore +196 -0
  187. data/lib/templates/gitignores/Waf.gitignore +3 -0
  188. data/lib/templates/gitignores/WordPress.gitignore +13 -0
  189. data/lib/templates/gitignores/Xojo.gitignore +11 -0
  190. data/lib/templates/gitignores/Yeoman.gitignore +6 -0
  191. data/lib/templates/gitignores/Yii.gitignore +6 -0
  192. data/lib/templates/gitignores/ZendFramework.gitignore +20 -0
  193. data/lib/templates/gitignores/Zephir.gitignore +26 -0
  194. data/lib/templates/templates/boot-template/static/static/___dummy-file___ +1 -0
  195. data/lib/templates/templates/boot-template/static/template.json +7 -0
  196. data/lib/templates/templates/boot-template/template.json +17 -0
  197. data/lib/templates/templates/c/builder/makefile +12 -0
  198. data/lib/templates/templates/c/builder/makefile-pch +12 -0
  199. data/lib/templates/templates/c/misc/main.h +1 -0
  200. data/lib/templates/templates/c/static/lib/___dummy-file___ +1 -0
  201. data/lib/templates/templates/c/static/src/main.c +4 -0
  202. data/lib/templates/templates/c/template.json +32 -0
  203. data/lib/templates/templates/c/vcs/.gitignore +1 -0
  204. data/lib/templates/templates/c/vcs/.svnignore +1 -0
  205. data/lib/templates/templates/gem/Gemfile +3 -0
  206. data/lib/templates/templates/gem/gemname-git.gemspec +13 -0
  207. data/lib/templates/templates/gem/static/[[!gemname]].gemspec +13 -0
  208. data/lib/templates/templates/gem/static/bin/[[!gemname]] +1 -0
  209. data/lib/templates/templates/gem/static/lib/[[!gemname]].rb +0 -0
  210. data/lib/templates/templates/gem/static/test/test_helper.rb +0 -0
  211. data/lib/templates/templates/gem/template.json +33 -0
  212. data/lib/templates/templates/wordpress-plugin/static/wp-content/plugins/[[!plugin-name]]/[[!plugin-name]].php +11 -0
  213. data/lib/templates/templates/wordpress-plugin/template.json +26 -0
  214. data/lib/templates/templates/wordpress-plugin/vcs/git/gitignore.gitignore +1 -0
  215. data/lib/templates/templates/wordpress-theme/static/wp-content/themes/[[!theme-name]]/index.php +1 -0
  216. data/lib/templates/templates/wordpress-theme/static/wp-content/themes/[[!theme-name]]/style.css +12 -0
  217. data/lib/templates/templates/wordpress-theme/template.json +26 -0
  218. data/lib/templates/templates/wordpress-theme/vcs/git/gitignore.gitignore +1 -0
  219. data/lib/templates/wordpress/index.php +17 -0
  220. data/lib/templates/wordpress/license.txt +385 -0
  221. data/lib/templates/wordpress/readme.html +98 -0
  222. data/lib/templates/wordpress/wp-activate.php +131 -0
  223. data/lib/templates/wordpress/wp-admin/about.php +166 -0
  224. data/lib/templates/wordpress/wp-admin/admin-ajax.php +99 -0
  225. data/lib/templates/wordpress/wp-admin/admin-footer.php +99 -0
  226. data/lib/templates/wordpress/wp-admin/admin-functions.php +15 -0
  227. data/lib/templates/wordpress/wp-admin/admin-header.php +249 -0
  228. data/lib/templates/wordpress/wp-admin/admin-post.php +71 -0
  229. data/lib/templates/wordpress/wp-admin/admin.php +361 -0
  230. data/lib/templates/wordpress/wp-admin/async-upload.php +115 -0
  231. data/lib/templates/wordpress/wp-admin/comment.php +330 -0
  232. data/lib/templates/wordpress/wp-admin/credits.php +192 -0
  233. data/lib/templates/wordpress/wp-admin/css/about-rtl.css +454 -0
  234. data/lib/templates/wordpress/wp-admin/css/about.css +454 -0
  235. data/lib/templates/wordpress/wp-admin/css/admin-menu-rtl.css +935 -0
  236. data/lib/templates/wordpress/wp-admin/css/admin-menu.css +935 -0
  237. data/lib/templates/wordpress/wp-admin/css/color-picker-rtl.css +127 -0
  238. data/lib/templates/wordpress/wp-admin/css/color-picker-rtl.min.css +1 -0
  239. data/lib/templates/wordpress/wp-admin/css/color-picker.css +127 -0
  240. data/lib/templates/wordpress/wp-admin/css/color-picker.min.css +1 -0
  241. data/lib/templates/wordpress/wp-admin/css/colors/_admin.scss +521 -0
  242. data/lib/templates/wordpress/wp-admin/css/colors/_mixins.scss +43 -0
  243. data/lib/templates/wordpress/wp-admin/css/colors/_variables.scss +58 -0
  244. data/lib/templates/wordpress/wp-admin/css/colors/blue/colors-rtl.css +330 -0
  245. data/lib/templates/wordpress/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
  246. data/lib/templates/wordpress/wp-admin/css/colors/blue/colors.css +330 -0
  247. data/lib/templates/wordpress/wp-admin/css/colors/blue/colors.min.css +1 -0
  248. data/lib/templates/wordpress/wp-admin/css/colors/blue/colors.scss +11 -0
  249. data/lib/templates/wordpress/wp-admin/css/colors/coffee/colors-rtl.css +330 -0
  250. data/lib/templates/wordpress/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
  251. data/lib/templates/wordpress/wp-admin/css/colors/coffee/colors.css +330 -0
  252. data/lib/templates/wordpress/wp-admin/css/colors/coffee/colors.min.css +1 -0
  253. data/lib/templates/wordpress/wp-admin/css/colors/coffee/colors.scss +7 -0
  254. data/lib/templates/wordpress/wp-admin/css/colors/ectoplasm/colors-rtl.css +330 -0
  255. data/lib/templates/wordpress/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
  256. data/lib/templates/wordpress/wp-admin/css/colors/ectoplasm/colors.css +330 -0
  257. data/lib/templates/wordpress/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
  258. data/lib/templates/wordpress/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
  259. data/lib/templates/wordpress/wp-admin/css/colors/light/colors-rtl.css +338 -0
  260. data/lib/templates/wordpress/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
  261. data/lib/templates/wordpress/wp-admin/css/colors/light/colors.css +338 -0
  262. data/lib/templates/wordpress/wp-admin/css/colors/light/colors.min.css +1 -0
  263. data/lib/templates/wordpress/wp-admin/css/colors/light/colors.scss +38 -0
  264. data/lib/templates/wordpress/wp-admin/css/colors/midnight/colors-rtl.css +330 -0
  265. data/lib/templates/wordpress/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
  266. data/lib/templates/wordpress/wp-admin/css/colors/midnight/colors.css +330 -0
  267. data/lib/templates/wordpress/wp-admin/css/colors/midnight/colors.min.css +1 -0
  268. data/lib/templates/wordpress/wp-admin/css/colors/midnight/colors.scss +5 -0
  269. data/lib/templates/wordpress/wp-admin/css/colors/ocean/colors-rtl.css +330 -0
  270. data/lib/templates/wordpress/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
  271. data/lib/templates/wordpress/wp-admin/css/colors/ocean/colors.css +330 -0
  272. data/lib/templates/wordpress/wp-admin/css/colors/ocean/colors.min.css +1 -0
  273. data/lib/templates/wordpress/wp-admin/css/colors/ocean/colors.scss +8 -0
  274. data/lib/templates/wordpress/wp-admin/css/colors/sunrise/colors-rtl.css +330 -0
  275. data/lib/templates/wordpress/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
  276. data/lib/templates/wordpress/wp-admin/css/colors/sunrise/colors.css +330 -0
  277. data/lib/templates/wordpress/wp-admin/css/colors/sunrise/colors.min.css +1 -0
  278. data/lib/templates/wordpress/wp-admin/css/colors/sunrise/colors.scss +6 -0
  279. data/lib/templates/wordpress/wp-admin/css/common-rtl.css +3289 -0
  280. data/lib/templates/wordpress/wp-admin/css/common.css +3289 -0
  281. data/lib/templates/wordpress/wp-admin/css/customize-controls-rtl.css +1191 -0
  282. data/lib/templates/wordpress/wp-admin/css/customize-controls-rtl.min.css +1 -0
  283. data/lib/templates/wordpress/wp-admin/css/customize-controls.css +1191 -0
  284. data/lib/templates/wordpress/wp-admin/css/customize-controls.min.css +1 -0
  285. data/lib/templates/wordpress/wp-admin/css/customize-widgets-rtl.css +636 -0
  286. data/lib/templates/wordpress/wp-admin/css/customize-widgets-rtl.min.css +1 -0
  287. data/lib/templates/wordpress/wp-admin/css/customize-widgets.css +636 -0
  288. data/lib/templates/wordpress/wp-admin/css/customize-widgets.min.css +1 -0
  289. data/lib/templates/wordpress/wp-admin/css/dashboard-rtl.css +1111 -0
  290. data/lib/templates/wordpress/wp-admin/css/dashboard.css +1111 -0
  291. data/lib/templates/wordpress/wp-admin/css/deprecated-media-rtl.css +407 -0
  292. data/lib/templates/wordpress/wp-admin/css/deprecated-media-rtl.min.css +1 -0
  293. data/lib/templates/wordpress/wp-admin/css/deprecated-media.css +407 -0
  294. data/lib/templates/wordpress/wp-admin/css/deprecated-media.min.css +1 -0
  295. data/lib/templates/wordpress/wp-admin/css/edit-rtl.css +1589 -0
  296. data/lib/templates/wordpress/wp-admin/css/edit.css +1589 -0
  297. data/lib/templates/wordpress/wp-admin/css/farbtastic-rtl.css +41 -0
  298. data/lib/templates/wordpress/wp-admin/css/farbtastic.css +41 -0
  299. data/lib/templates/wordpress/wp-admin/css/forms-rtl.css +1175 -0
  300. data/lib/templates/wordpress/wp-admin/css/forms.css +1175 -0
  301. data/lib/templates/wordpress/wp-admin/css/ie-rtl.css +785 -0
  302. data/lib/templates/wordpress/wp-admin/css/ie-rtl.min.css +1 -0
  303. data/lib/templates/wordpress/wp-admin/css/ie.css +785 -0
  304. data/lib/templates/wordpress/wp-admin/css/ie.min.css +1 -0
  305. data/lib/templates/wordpress/wp-admin/css/install-rtl.css +388 -0
  306. data/lib/templates/wordpress/wp-admin/css/install-rtl.min.css +1 -0
  307. data/lib/templates/wordpress/wp-admin/css/install.css +388 -0
  308. data/lib/templates/wordpress/wp-admin/css/install.min.css +1 -0
  309. data/lib/templates/wordpress/wp-admin/css/l10n-rtl.css +111 -0
  310. data/lib/templates/wordpress/wp-admin/css/l10n.css +111 -0
  311. data/lib/templates/wordpress/wp-admin/css/list-tables-rtl.css +1925 -0
  312. data/lib/templates/wordpress/wp-admin/css/list-tables.css +1925 -0
  313. data/lib/templates/wordpress/wp-admin/css/login-rtl.css +265 -0
  314. data/lib/templates/wordpress/wp-admin/css/login-rtl.min.css +1 -0
  315. data/lib/templates/wordpress/wp-admin/css/login.css +265 -0
  316. data/lib/templates/wordpress/wp-admin/css/login.min.css +1 -0
  317. data/lib/templates/wordpress/wp-admin/css/media-rtl.css +1193 -0
  318. data/lib/templates/wordpress/wp-admin/css/media.css +1193 -0
  319. data/lib/templates/wordpress/wp-admin/css/nav-menus-rtl.css +865 -0
  320. data/lib/templates/wordpress/wp-admin/css/nav-menus.css +865 -0
  321. data/lib/templates/wordpress/wp-admin/css/press-this-editor-rtl.css +123 -0
  322. data/lib/templates/wordpress/wp-admin/css/press-this-editor.css +123 -0
  323. data/lib/templates/wordpress/wp-admin/css/press-this-rtl.css +2039 -0
  324. data/lib/templates/wordpress/wp-admin/css/press-this-rtl.min.css +1 -0
  325. data/lib/templates/wordpress/wp-admin/css/press-this.css +2039 -0
  326. data/lib/templates/wordpress/wp-admin/css/press-this.min.css +1 -0
  327. data/lib/templates/wordpress/wp-admin/css/revisions-rtl.css +575 -0
  328. data/lib/templates/wordpress/wp-admin/css/revisions.css +575 -0
  329. data/lib/templates/wordpress/wp-admin/css/themes-rtl.css +1760 -0
  330. data/lib/templates/wordpress/wp-admin/css/themes.css +1760 -0
  331. data/lib/templates/wordpress/wp-admin/css/widgets-rtl.css +579 -0
  332. data/lib/templates/wordpress/wp-admin/css/widgets.css +579 -0
  333. data/lib/templates/wordpress/wp-admin/css/wp-admin-rtl.css +13 -0
  334. data/lib/templates/wordpress/wp-admin/css/wp-admin-rtl.min.css +8 -0
  335. data/lib/templates/wordpress/wp-admin/css/wp-admin.css +13 -0
  336. data/lib/templates/wordpress/wp-admin/css/wp-admin.min.css +8 -0
  337. data/lib/templates/wordpress/wp-admin/custom-background.php +472 -0
  338. data/lib/templates/wordpress/wp-admin/custom-header.php +1303 -0
  339. data/lib/templates/wordpress/wp-admin/customize.php +300 -0
  340. data/lib/templates/wordpress/wp-admin/edit-comments.php +254 -0
  341. data/lib/templates/wordpress/wp-admin/edit-form-advanced.php +668 -0
  342. data/lib/templates/wordpress/wp-admin/edit-form-comment.php +189 -0
  343. data/lib/templates/wordpress/wp-admin/edit-link-form.php +150 -0
  344. data/lib/templates/wordpress/wp-admin/edit-tag-form.php +228 -0
  345. data/lib/templates/wordpress/wp-admin/edit-tags.php +603 -0
  346. data/lib/templates/wordpress/wp-admin/edit.php +338 -0
  347. data/lib/templates/wordpress/wp-admin/export.php +242 -0
  348. data/lib/templates/wordpress/wp-admin/freedoms.php +57 -0
  349. data/lib/templates/wordpress/wp-admin/images/align-center-2x.png +0 -0
  350. data/lib/templates/wordpress/wp-admin/images/align-center.png +0 -0
  351. data/lib/templates/wordpress/wp-admin/images/align-left-2x.png +0 -0
  352. data/lib/templates/wordpress/wp-admin/images/align-left.png +0 -0
  353. data/lib/templates/wordpress/wp-admin/images/align-none-2x.png +0 -0
  354. data/lib/templates/wordpress/wp-admin/images/align-none.png +0 -0
  355. data/lib/templates/wordpress/wp-admin/images/align-right-2x.png +0 -0
  356. data/lib/templates/wordpress/wp-admin/images/align-right.png +0 -0
  357. data/lib/templates/wordpress/wp-admin/images/arrows-2x.png +0 -0
  358. data/lib/templates/wordpress/wp-admin/images/arrows.png +0 -0
  359. data/lib/templates/wordpress/wp-admin/images/bubble_bg-2x.gif +0 -0
  360. data/lib/templates/wordpress/wp-admin/images/bubble_bg.gif +0 -0
  361. data/lib/templates/wordpress/wp-admin/images/comment-grey-bubble-2x.png +0 -0
  362. data/lib/templates/wordpress/wp-admin/images/comment-grey-bubble.png +0 -0
  363. data/lib/templates/wordpress/wp-admin/images/date-button-2x.gif +0 -0
  364. data/lib/templates/wordpress/wp-admin/images/date-button.gif +0 -0
  365. data/lib/templates/wordpress/wp-admin/images/generic.png +0 -0
  366. data/lib/templates/wordpress/wp-admin/images/icons32-2x.png +0 -0
  367. data/lib/templates/wordpress/wp-admin/images/icons32-vs-2x.png +0 -0
  368. data/lib/templates/wordpress/wp-admin/images/icons32-vs.png +0 -0
  369. data/lib/templates/wordpress/wp-admin/images/icons32.png +0 -0
  370. data/lib/templates/wordpress/wp-admin/images/imgedit-icons-2x.png +0 -0
  371. data/lib/templates/wordpress/wp-admin/images/imgedit-icons.png +0 -0
  372. data/lib/templates/wordpress/wp-admin/images/list-2x.png +0 -0
  373. data/lib/templates/wordpress/wp-admin/images/list.png +0 -0
  374. data/lib/templates/wordpress/wp-admin/images/loading.gif +0 -0
  375. data/lib/templates/wordpress/wp-admin/images/marker.png +0 -0
  376. data/lib/templates/wordpress/wp-admin/images/mask.png +0 -0
  377. data/lib/templates/wordpress/wp-admin/images/media-button-2x.png +0 -0
  378. data/lib/templates/wordpress/wp-admin/images/media-button-image.gif +0 -0
  379. data/lib/templates/wordpress/wp-admin/images/media-button-music.gif +0 -0
  380. data/lib/templates/wordpress/wp-admin/images/media-button-other.gif +0 -0
  381. data/lib/templates/wordpress/wp-admin/images/media-button-video.gif +0 -0
  382. data/lib/templates/wordpress/wp-admin/images/media-button.png +0 -0
  383. data/lib/templates/wordpress/wp-admin/images/menu-2x.png +0 -0
  384. data/lib/templates/wordpress/wp-admin/images/menu-vs-2x.png +0 -0
  385. data/lib/templates/wordpress/wp-admin/images/menu-vs.png +0 -0
  386. data/lib/templates/wordpress/wp-admin/images/menu.png +0 -0
  387. data/lib/templates/wordpress/wp-admin/images/no.png +0 -0
  388. data/lib/templates/wordpress/wp-admin/images/post-formats-vs.png +0 -0
  389. data/lib/templates/wordpress/wp-admin/images/post-formats.png +0 -0
  390. data/lib/templates/wordpress/wp-admin/images/post-formats32-vs.png +0 -0
  391. data/lib/templates/wordpress/wp-admin/images/post-formats32.png +0 -0
  392. data/lib/templates/wordpress/wp-admin/images/resize-2x.gif +0 -0
  393. data/lib/templates/wordpress/wp-admin/images/resize-rtl-2x.gif +0 -0
  394. data/lib/templates/wordpress/wp-admin/images/resize-rtl.gif +0 -0
  395. data/lib/templates/wordpress/wp-admin/images/resize.gif +0 -0
  396. data/lib/templates/wordpress/wp-admin/images/se.png +0 -0
  397. data/lib/templates/wordpress/wp-admin/images/sort-2x.gif +0 -0
  398. data/lib/templates/wordpress/wp-admin/images/sort.gif +0 -0
  399. data/lib/templates/wordpress/wp-admin/images/spinner-2x.gif +0 -0
  400. data/lib/templates/wordpress/wp-admin/images/spinner.gif +0 -0
  401. data/lib/templates/wordpress/wp-admin/images/stars-2x.png +0 -0
  402. data/lib/templates/wordpress/wp-admin/images/stars.png +0 -0
  403. data/lib/templates/wordpress/wp-admin/images/w-logo-blue.png +0 -0
  404. data/lib/templates/wordpress/wp-admin/images/w-logo-white.png +0 -0
  405. data/lib/templates/wordpress/wp-admin/images/wheel.png +0 -0
  406. data/lib/templates/wordpress/wp-admin/images/wordpress-logo-white.svg +1 -0
  407. data/lib/templates/wordpress/wp-admin/images/wordpress-logo.png +0 -0
  408. data/lib/templates/wordpress/wp-admin/images/wordpress-logo.svg +1 -0
  409. data/lib/templates/wordpress/wp-admin/images/wpspin_light-2x.gif +0 -0
  410. data/lib/templates/wordpress/wp-admin/images/wpspin_light.gif +0 -0
  411. data/lib/templates/wordpress/wp-admin/images/xit-2x.gif +0 -0
  412. data/lib/templates/wordpress/wp-admin/images/xit.gif +0 -0
  413. data/lib/templates/wordpress/wp-admin/images/yes.png +0 -0
  414. data/lib/templates/wordpress/wp-admin/import.php +130 -0
  415. data/lib/templates/wordpress/wp-admin/includes/admin.php +74 -0
  416. data/lib/templates/wordpress/wp-admin/includes/ajax-actions.php +2973 -0
  417. data/lib/templates/wordpress/wp-admin/includes/bookmark.php +305 -0
  418. data/lib/templates/wordpress/wp-admin/includes/class-ftp-pure.php +190 -0
  419. data/lib/templates/wordpress/wp-admin/includes/class-ftp-sockets.php +250 -0
  420. data/lib/templates/wordpress/wp-admin/includes/class-ftp.php +906 -0
  421. data/lib/templates/wordpress/wp-admin/includes/class-pclzip.php +5687 -0
  422. data/lib/templates/wordpress/wp-admin/includes/class-wp-comments-list-table.php +643 -0
  423. data/lib/templates/wordpress/wp-admin/includes/class-wp-filesystem-base.php +766 -0
  424. data/lib/templates/wordpress/wp-admin/includes/class-wp-filesystem-direct.php +463 -0
  425. data/lib/templates/wordpress/wp-admin/includes/class-wp-filesystem-ftpext.php +513 -0
  426. data/lib/templates/wordpress/wp-admin/includes/class-wp-filesystem-ftpsockets.php +446 -0
  427. data/lib/templates/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php +505 -0
  428. data/lib/templates/wordpress/wp-admin/includes/class-wp-importer.php +301 -0
  429. data/lib/templates/wordpress/wp-admin/includes/class-wp-links-list-table.php +208 -0
  430. data/lib/templates/wordpress/wp-admin/includes/class-wp-list-table.php +1141 -0
  431. data/lib/templates/wordpress/wp-admin/includes/class-wp-media-list-table.php +556 -0
  432. data/lib/templates/wordpress/wp-admin/includes/class-wp-ms-sites-list-table.php +404 -0
  433. data/lib/templates/wordpress/wp-admin/includes/class-wp-ms-themes-list-table.php +480 -0
  434. data/lib/templates/wordpress/wp-admin/includes/class-wp-ms-users-list-table.php +306 -0
  435. data/lib/templates/wordpress/wp-admin/includes/class-wp-plugin-install-list-table.php +515 -0
  436. data/lib/templates/wordpress/wp-admin/includes/class-wp-plugins-list-table.php +648 -0
  437. data/lib/templates/wordpress/wp-admin/includes/class-wp-posts-list-table.php +1416 -0
  438. data/lib/templates/wordpress/wp-admin/includes/class-wp-press-this.php +1466 -0
  439. data/lib/templates/wordpress/wp-admin/includes/class-wp-terms-list-table.php +513 -0
  440. data/lib/templates/wordpress/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
  441. data/lib/templates/wordpress/wp-admin/includes/class-wp-themes-list-table.php +285 -0
  442. data/lib/templates/wordpress/wp-admin/includes/class-wp-upgrader-skins.php +783 -0
  443. data/lib/templates/wordpress/wp-admin/includes/class-wp-upgrader.php +3254 -0
  444. data/lib/templates/wordpress/wp-admin/includes/class-wp-users-list-table.php +460 -0
  445. data/lib/templates/wordpress/wp-admin/includes/comment.php +173 -0
  446. data/lib/templates/wordpress/wp-admin/includes/continents-cities.php +493 -0
  447. data/lib/templates/wordpress/wp-admin/includes/dashboard.php +1341 -0
  448. data/lib/templates/wordpress/wp-admin/includes/deprecated.php +1183 -0
  449. data/lib/templates/wordpress/wp-admin/includes/export.php +510 -0
  450. data/lib/templates/wordpress/wp-admin/includes/file.php +1229 -0
  451. data/lib/templates/wordpress/wp-admin/includes/image-edit.php +861 -0
  452. data/lib/templates/wordpress/wp-admin/includes/image.php +600 -0
  453. data/lib/templates/wordpress/wp-admin/includes/import.php +204 -0
  454. data/lib/templates/wordpress/wp-admin/includes/list-table.php +113 -0
  455. data/lib/templates/wordpress/wp-admin/includes/media.php +3083 -0
  456. data/lib/templates/wordpress/wp-admin/includes/menu.php +322 -0
  457. data/lib/templates/wordpress/wp-admin/includes/meta-boxes.php +1132 -0
  458. data/lib/templates/wordpress/wp-admin/includes/misc.php +889 -0
  459. data/lib/templates/wordpress/wp-admin/includes/ms-deprecated.php +77 -0
  460. data/lib/templates/wordpress/wp-admin/includes/ms.php +971 -0
  461. data/lib/templates/wordpress/wp-admin/includes/nav-menu.php +1324 -0
  462. data/lib/templates/wordpress/wp-admin/includes/plugin-install.php +580 -0
  463. data/lib/templates/wordpress/wp-admin/includes/plugin.php +1892 -0
  464. data/lib/templates/wordpress/wp-admin/includes/post.php +1742 -0
  465. data/lib/templates/wordpress/wp-admin/includes/revision.php +378 -0
  466. data/lib/templates/wordpress/wp-admin/includes/schema.php +1046 -0
  467. data/lib/templates/wordpress/wp-admin/includes/screen.php +1185 -0
  468. data/lib/templates/wordpress/wp-admin/includes/taxonomy.php +290 -0
  469. data/lib/templates/wordpress/wp-admin/includes/template.php +2248 -0
  470. data/lib/templates/wordpress/wp-admin/includes/theme-install.php +205 -0
  471. data/lib/templates/wordpress/wp-admin/includes/theme.php +564 -0
  472. data/lib/templates/wordpress/wp-admin/includes/translation-install.php +241 -0
  473. data/lib/templates/wordpress/wp-admin/includes/update-core.php +1190 -0
  474. data/lib/templates/wordpress/wp-admin/includes/update.php +435 -0
  475. data/lib/templates/wordpress/wp-admin/includes/upgrade.php +2410 -0
  476. data/lib/templates/wordpress/wp-admin/includes/user.php +442 -0
  477. data/lib/templates/wordpress/wp-admin/includes/widgets.php +245 -0
  478. data/lib/templates/wordpress/wp-admin/index.php +132 -0
  479. data/lib/templates/wordpress/wp-admin/install-helper.php +198 -0
  480. data/lib/templates/wordpress/wp-admin/install.php +307 -0
  481. data/lib/templates/wordpress/wp-admin/js/accordion.js +75 -0
  482. data/lib/templates/wordpress/wp-admin/js/accordion.min.js +1 -0
  483. data/lib/templates/wordpress/wp-admin/js/bookmarklet.js +166 -0
  484. data/lib/templates/wordpress/wp-admin/js/bookmarklet.min.js +1 -0
  485. data/lib/templates/wordpress/wp-admin/js/color-picker.js +157 -0
  486. data/lib/templates/wordpress/wp-admin/js/color-picker.min.js +1 -0
  487. data/lib/templates/wordpress/wp-admin/js/comment.js +50 -0
  488. data/lib/templates/wordpress/wp-admin/js/comment.min.js +1 -0
  489. data/lib/templates/wordpress/wp-admin/js/common.js +893 -0
  490. data/lib/templates/wordpress/wp-admin/js/common.min.js +1 -0
  491. data/lib/templates/wordpress/wp-admin/js/custom-background.js +75 -0
  492. data/lib/templates/wordpress/wp-admin/js/custom-background.min.js +1 -0
  493. data/lib/templates/wordpress/wp-admin/js/custom-header.js +61 -0
  494. data/lib/templates/wordpress/wp-admin/js/customize-controls.js +3071 -0
  495. data/lib/templates/wordpress/wp-admin/js/customize-controls.min.js +2 -0
  496. data/lib/templates/wordpress/wp-admin/js/customize-widgets.js +2024 -0
  497. data/lib/templates/wordpress/wp-admin/js/customize-widgets.min.js +1 -0
  498. data/lib/templates/wordpress/wp-admin/js/dashboard.js +190 -0
  499. data/lib/templates/wordpress/wp-admin/js/dashboard.min.js +1 -0
  500. data/lib/templates/wordpress/wp-admin/js/edit-comments.js +627 -0
  501. data/lib/templates/wordpress/wp-admin/js/edit-comments.min.js +1 -0
  502. data/lib/templates/wordpress/wp-admin/js/editor-expand.js +1237 -0
  503. data/lib/templates/wordpress/wp-admin/js/editor-expand.min.js +1 -0
  504. data/lib/templates/wordpress/wp-admin/js/editor.js +324 -0
  505. data/lib/templates/wordpress/wp-admin/js/editor.min.js +1 -0
  506. data/lib/templates/wordpress/wp-admin/js/farbtastic.js +276 -0
  507. data/lib/templates/wordpress/wp-admin/js/gallery.js +237 -0
  508. data/lib/templates/wordpress/wp-admin/js/gallery.min.js +1 -0
  509. data/lib/templates/wordpress/wp-admin/js/image-edit.js +633 -0
  510. data/lib/templates/wordpress/wp-admin/js/image-edit.min.js +1 -0
  511. data/lib/templates/wordpress/wp-admin/js/inline-edit-post.js +360 -0
  512. data/lib/templates/wordpress/wp-admin/js/inline-edit-post.min.js +1 -0
  513. data/lib/templates/wordpress/wp-admin/js/inline-edit-tax.js +152 -0
  514. data/lib/templates/wordpress/wp-admin/js/inline-edit-tax.min.js +1 -0
  515. data/lib/templates/wordpress/wp-admin/js/iris.min.js +4 -0
  516. data/lib/templates/wordpress/wp-admin/js/language-chooser.js +26 -0
  517. data/lib/templates/wordpress/wp-admin/js/language-chooser.min.js +1 -0
  518. data/lib/templates/wordpress/wp-admin/js/link.js +69 -0
  519. data/lib/templates/wordpress/wp-admin/js/link.min.js +1 -0
  520. data/lib/templates/wordpress/wp-admin/js/media-gallery.js +26 -0
  521. data/lib/templates/wordpress/wp-admin/js/media-gallery.min.js +1 -0
  522. data/lib/templates/wordpress/wp-admin/js/media-upload.js +69 -0
  523. data/lib/templates/wordpress/wp-admin/js/media-upload.min.js +1 -0
  524. data/lib/templates/wordpress/wp-admin/js/media.js +114 -0
  525. data/lib/templates/wordpress/wp-admin/js/media.min.js +1 -0
  526. data/lib/templates/wordpress/wp-admin/js/nav-menu.js +1237 -0
  527. data/lib/templates/wordpress/wp-admin/js/nav-menu.min.js +1 -0
  528. data/lib/templates/wordpress/wp-admin/js/password-strength-meter.js +75 -0
  529. data/lib/templates/wordpress/wp-admin/js/password-strength-meter.min.js +1 -0
  530. data/lib/templates/wordpress/wp-admin/js/plugin-install.js +72 -0
  531. data/lib/templates/wordpress/wp-admin/js/plugin-install.min.js +1 -0
  532. data/lib/templates/wordpress/wp-admin/js/post.js +926 -0
  533. data/lib/templates/wordpress/wp-admin/js/post.min.js +1 -0
  534. data/lib/templates/wordpress/wp-admin/js/postbox.js +199 -0
  535. data/lib/templates/wordpress/wp-admin/js/postbox.min.js +1 -0
  536. data/lib/templates/wordpress/wp-admin/js/press-this.js +796 -0
  537. data/lib/templates/wordpress/wp-admin/js/press-this.min.js +1 -0
  538. data/lib/templates/wordpress/wp-admin/js/revisions.js +1166 -0
  539. data/lib/templates/wordpress/wp-admin/js/revisions.min.js +1 -0
  540. data/lib/templates/wordpress/wp-admin/js/set-post-thumbnail.js +24 -0
  541. data/lib/templates/wordpress/wp-admin/js/set-post-thumbnail.min.js +1 -0
  542. data/lib/templates/wordpress/wp-admin/js/svg-painter.js +240 -0
  543. data/lib/templates/wordpress/wp-admin/js/svg-painter.min.js +1 -0
  544. data/lib/templates/wordpress/wp-admin/js/tags-box.js +202 -0
  545. data/lib/templates/wordpress/wp-admin/js/tags-box.min.js +1 -0
  546. data/lib/templates/wordpress/wp-admin/js/tags.js +72 -0
  547. data/lib/templates/wordpress/wp-admin/js/tags.min.js +1 -0
  548. data/lib/templates/wordpress/wp-admin/js/theme.js +1726 -0
  549. data/lib/templates/wordpress/wp-admin/js/theme.min.js +1 -0
  550. data/lib/templates/wordpress/wp-admin/js/updates.js +553 -0
  551. data/lib/templates/wordpress/wp-admin/js/updates.min.js +1 -0
  552. data/lib/templates/wordpress/wp-admin/js/user-profile.js +149 -0
  553. data/lib/templates/wordpress/wp-admin/js/user-profile.min.js +1 -0
  554. data/lib/templates/wordpress/wp-admin/js/user-suggest.js +30 -0
  555. data/lib/templates/wordpress/wp-admin/js/user-suggest.min.js +1 -0
  556. data/lib/templates/wordpress/wp-admin/js/widgets.js +494 -0
  557. data/lib/templates/wordpress/wp-admin/js/widgets.min.js +1 -0
  558. data/lib/templates/wordpress/wp-admin/js/word-count.js +44 -0
  559. data/lib/templates/wordpress/wp-admin/js/word-count.min.js +1 -0
  560. data/lib/templates/wordpress/wp-admin/js/wp-fullscreen.js +704 -0
  561. data/lib/templates/wordpress/wp-admin/js/wp-fullscreen.min.js +1 -0
  562. data/lib/templates/wordpress/wp-admin/js/xfn.js +17 -0
  563. data/lib/templates/wordpress/wp-admin/js/xfn.min.js +1 -0
  564. data/lib/templates/wordpress/wp-admin/link-add.php +29 -0
  565. data/lib/templates/wordpress/wp-admin/link-manager.php +99 -0
  566. data/lib/templates/wordpress/wp-admin/link-parse-opml.php +87 -0
  567. data/lib/templates/wordpress/wp-admin/link.php +117 -0
  568. data/lib/templates/wordpress/wp-admin/load-scripts.php +162 -0
  569. data/lib/templates/wordpress/wp-admin/load-styles.php +153 -0
  570. data/lib/templates/wordpress/wp-admin/maint/repair.php +124 -0
  571. data/lib/templates/wordpress/wp-admin/media-new.php +84 -0
  572. data/lib/templates/wordpress/wp-admin/media-upload.php +103 -0
  573. data/lib/templates/wordpress/wp-admin/media.php +146 -0
  574. data/lib/templates/wordpress/wp-admin/menu-header.php +242 -0
  575. data/lib/templates/wordpress/wp-admin/menu.php +269 -0
  576. data/lib/templates/wordpress/wp-admin/moderation.php +12 -0
  577. data/lib/templates/wordpress/wp-admin/ms-admin.php +13 -0
  578. data/lib/templates/wordpress/wp-admin/ms-delete-site.php +94 -0
  579. data/lib/templates/wordpress/wp-admin/ms-edit.php +13 -0
  580. data/lib/templates/wordpress/wp-admin/ms-options.php +12 -0
  581. data/lib/templates/wordpress/wp-admin/ms-sites.php +13 -0
  582. data/lib/templates/wordpress/wp-admin/ms-themes.php +13 -0
  583. data/lib/templates/wordpress/wp-admin/ms-upgrade-network.php +13 -0
  584. data/lib/templates/wordpress/wp-admin/ms-users.php +13 -0
  585. data/lib/templates/wordpress/wp-admin/my-sites.php +143 -0
  586. data/lib/templates/wordpress/wp-admin/nav-menus.php +796 -0
  587. data/lib/templates/wordpress/wp-admin/network.php +580 -0
  588. data/lib/templates/wordpress/wp-admin/network/about.php +16 -0
  589. data/lib/templates/wordpress/wp-admin/network/admin.php +32 -0
  590. data/lib/templates/wordpress/wp-admin/network/credits.php +16 -0
  591. data/lib/templates/wordpress/wp-admin/network/edit.php +42 -0
  592. data/lib/templates/wordpress/wp-admin/network/freedoms.php +16 -0
  593. data/lib/templates/wordpress/wp-admin/network/index.php +79 -0
  594. data/lib/templates/wordpress/wp-admin/network/menu.php +63 -0
  595. data/lib/templates/wordpress/wp-admin/network/plugin-editor.php +16 -0
  596. data/lib/templates/wordpress/wp-admin/network/plugin-install.php +19 -0
  597. data/lib/templates/wordpress/wp-admin/network/plugins.php +16 -0
  598. data/lib/templates/wordpress/wp-admin/network/profile.php +16 -0
  599. data/lib/templates/wordpress/wp-admin/network/settings.php +405 -0
  600. data/lib/templates/wordpress/wp-admin/network/setup.php +16 -0
  601. data/lib/templates/wordpress/wp-admin/network/site-info.php +187 -0
  602. data/lib/templates/wordpress/wp-admin/network/site-new.php +170 -0
  603. data/lib/templates/wordpress/wp-admin/network/site-settings.php +173 -0
  604. data/lib/templates/wordpress/wp-admin/network/site-themes.php +195 -0
  605. data/lib/templates/wordpress/wp-admin/network/site-users.php +317 -0
  606. data/lib/templates/wordpress/wp-admin/network/sites.php +275 -0
  607. data/lib/templates/wordpress/wp-admin/network/theme-editor.php +16 -0
  608. data/lib/templates/wordpress/wp-admin/network/theme-install.php +19 -0
  609. data/lib/templates/wordpress/wp-admin/network/themes.php +323 -0
  610. data/lib/templates/wordpress/wp-admin/network/update-core.php +16 -0
  611. data/lib/templates/wordpress/wp-admin/network/update.php +19 -0
  612. data/lib/templates/wordpress/wp-admin/network/upgrade.php +129 -0
  613. data/lib/templates/wordpress/wp-admin/network/user-edit.php +16 -0
  614. data/lib/templates/wordpress/wp-admin/network/user-new.php +107 -0
  615. data/lib/templates/wordpress/wp-admin/network/users.php +329 -0
  616. data/lib/templates/wordpress/wp-admin/options-discussion.php +306 -0
  617. data/lib/templates/wordpress/wp-admin/options-general.php +387 -0
  618. data/lib/templates/wordpress/wp-admin/options-head.php +18 -0
  619. data/lib/templates/wordpress/wp-admin/options-media.php +136 -0
  620. data/lib/templates/wordpress/wp-admin/options-permalink.php +288 -0
  621. data/lib/templates/wordpress/wp-admin/options-reading.php +182 -0
  622. data/lib/templates/wordpress/wp-admin/options-writing.php +178 -0
  623. data/lib/templates/wordpress/wp-admin/options.php +277 -0
  624. data/lib/templates/wordpress/wp-admin/plugin-editor.php +279 -0
  625. data/lib/templates/wordpress/wp-admin/plugin-install.php +138 -0
  626. data/lib/templates/wordpress/wp-admin/plugins.php +489 -0
  627. data/lib/templates/wordpress/wp-admin/post-new.php +76 -0
  628. data/lib/templates/wordpress/wp-admin/post.php +320 -0
  629. data/lib/templates/wordpress/wp-admin/press-this.php +21 -0
  630. data/lib/templates/wordpress/wp-admin/profile.php +18 -0
  631. data/lib/templates/wordpress/wp-admin/revision.php +135 -0
  632. data/lib/templates/wordpress/wp-admin/setup-config.php +352 -0
  633. data/lib/templates/wordpress/wp-admin/theme-editor.php +241 -0
  634. data/lib/templates/wordpress/wp-admin/theme-install.php +271 -0
  635. data/lib/templates/wordpress/wp-admin/themes.php +422 -0
  636. data/lib/templates/wordpress/wp-admin/tools.php +119 -0
  637. data/lib/templates/wordpress/wp-admin/update-core.php +661 -0
  638. data/lib/templates/wordpress/wp-admin/update.php +272 -0
  639. data/lib/templates/wordpress/wp-admin/upgrade-functions.php +12 -0
  640. data/lib/templates/wordpress/wp-admin/upgrade.php +120 -0
  641. data/lib/templates/wordpress/wp-admin/upload.php +294 -0
  642. data/lib/templates/wordpress/wp-admin/user-edit.php +592 -0
  643. data/lib/templates/wordpress/wp-admin/user-new.php +440 -0
  644. data/lib/templates/wordpress/wp-admin/user/about.php +13 -0
  645. data/lib/templates/wordpress/wp-admin/user/admin.php +32 -0
  646. data/lib/templates/wordpress/wp-admin/user/credits.php +13 -0
  647. data/lib/templates/wordpress/wp-admin/user/freedoms.php +13 -0
  648. data/lib/templates/wordpress/wp-admin/user/index.php +13 -0
  649. data/lib/templates/wordpress/wp-admin/user/menu.php +22 -0
  650. data/lib/templates/wordpress/wp-admin/user/profile.php +13 -0
  651. data/lib/templates/wordpress/wp-admin/user/user-edit.php +13 -0
  652. data/lib/templates/wordpress/wp-admin/users.php +475 -0
  653. data/lib/templates/wordpress/wp-admin/widgets.php +459 -0
  654. data/lib/templates/wordpress/wp-blog-header.php +18 -0
  655. data/lib/templates/wordpress/wp-comments-post.php +167 -0
  656. data/lib/templates/wordpress/wp-config-sample.php +80 -0
  657. data/lib/templates/wordpress/wp-content/index.php +2 -0
  658. data/lib/templates/wordpress/wp-content/plugins/akismet/.htaccess +34 -0
  659. data/lib/templates/wordpress/wp-content/plugins/akismet/_inc/akismet.css +366 -0
  660. data/lib/templates/wordpress/wp-content/plugins/akismet/_inc/akismet.js +160 -0
  661. data/lib/templates/wordpress/wp-content/plugins/akismet/_inc/form.js +30 -0
  662. data/lib/templates/wordpress/wp-content/plugins/akismet/_inc/img/logo-full-2x.png +0 -0
  663. data/lib/templates/wordpress/wp-content/plugins/akismet/akismet.php +59 -0
  664. data/lib/templates/wordpress/wp-content/plugins/akismet/class.akismet-admin.php +885 -0
  665. data/lib/templates/wordpress/wp-content/plugins/akismet/class.akismet-widget.php +110 -0
  666. data/lib/templates/wordpress/wp-content/plugins/akismet/class.akismet.php +1088 -0
  667. data/lib/templates/wordpress/wp-content/plugins/akismet/index.php +2 -0
  668. data/lib/templates/wordpress/wp-content/plugins/akismet/readme.txt +266 -0
  669. data/lib/templates/wordpress/wp-content/plugins/akismet/views/config.php +220 -0
  670. data/lib/templates/wordpress/wp-content/plugins/akismet/views/get.php +5 -0
  671. data/lib/templates/wordpress/wp-content/plugins/akismet/views/notice.php +102 -0
  672. data/lib/templates/wordpress/wp-content/plugins/akismet/views/start.php +95 -0
  673. data/lib/templates/wordpress/wp-content/plugins/akismet/views/stats.php +4 -0
  674. data/lib/templates/wordpress/wp-content/plugins/akismet/views/strict.php +7 -0
  675. data/lib/templates/wordpress/wp-content/plugins/akismet/wrapper.php +213 -0
  676. data/lib/templates/wordpress/wp-content/plugins/index.php +2 -0
  677. data/lib/templates/wordpress/wp-content/themes/index.php +2 -0
  678. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/404.php +30 -0
  679. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/archive.php +64 -0
  680. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/author-bio.php +39 -0
  681. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/comments.php +58 -0
  682. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/content-link.php +60 -0
  683. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/content-none.php +37 -0
  684. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/content-page.php +37 -0
  685. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/content-search.php +37 -0
  686. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/content.php +60 -0
  687. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/css/editor-style.css +493 -0
  688. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/css/ie.css +948 -0
  689. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/css/ie7.css +89 -0
  690. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/footer.php +34 -0
  691. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/functions.php +355 -0
  692. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/COPYING.txt +9 -0
  693. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/Genericons.eot +0 -0
  694. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/Genericons.svg +543 -0
  695. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/Genericons.ttf +0 -0
  696. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/Genericons.woff +0 -0
  697. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/LICENSE.txt +339 -0
  698. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/README.md +152 -0
  699. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/example.html +719 -0
  700. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/genericons/genericons.css +209 -0
  701. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/header.php +50 -0
  702. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/image.php +94 -0
  703. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/inc/back-compat.php +63 -0
  704. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/inc/custom-header.php +356 -0
  705. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/inc/customizer.php +715 -0
  706. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/inc/template-tags.php +242 -0
  707. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/index.php +61 -0
  708. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/color-scheme-control.js +78 -0
  709. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/customize-preview.js +35 -0
  710. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/functions.js +162 -0
  711. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/html5.js +9 -0
  712. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/keyboard-image-navigation.js +22 -0
  713. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/js/skip-link-focus-fix.js +26 -0
  714. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/languages/twentyfifteen.pot +328 -0
  715. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/page.php +38 -0
  716. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/readme.txt +92 -0
  717. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/rtl.css +840 -0
  718. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/screenshot.png +0 -0
  719. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/search.php +53 -0
  720. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/sidebar.php +47 -0
  721. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/single.php +48 -0
  722. data/lib/templates/wordpress/wp-content/themes/twentyfifteen/style.css +5994 -0
  723. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/404.php +32 -0
  724. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/archive.php +74 -0
  725. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/author.php +74 -0
  726. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/category.php +58 -0
  727. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/comments.php +66 -0
  728. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-aside.php +62 -0
  729. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-audio.php +62 -0
  730. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
  731. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-gallery.php +62 -0
  732. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-image.php +62 -0
  733. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-link.php +62 -0
  734. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-none.php +31 -0
  735. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-page.php +31 -0
  736. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-quote.php +62 -0
  737. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content-video.php +62 -0
  738. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/content.php +71 -0
  739. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/css/editor-style.css +737 -0
  740. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
  741. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/featured-content.php +39 -0
  742. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/footer.php +28 -0
  743. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/functions.php +519 -0
  744. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
  745. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
  746. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
  747. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
  748. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
  749. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
  750. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
  751. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
  752. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
  753. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
  754. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/header.php +65 -0
  755. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/image.php +79 -0
  756. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
  757. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
  758. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
  759. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
  760. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/customizer.php +115 -0
  761. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
  762. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/template-tags.php +227 -0
  763. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
  764. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/index.php +61 -0
  765. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
  766. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
  767. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/functions.js +170 -0
  768. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/html5.js +8 -0
  769. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
  770. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/js/slider.js +598 -0
  771. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +480 -0
  772. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
  773. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
  774. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/page.php +48 -0
  775. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/rtl.css +854 -0
  776. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/screenshot.png +0 -0
  777. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/search.php +49 -0
  778. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
  779. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
  780. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/sidebar.php +29 -0
  781. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/single.php +40 -0
  782. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/style.css +4321 -0
  783. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/tag.php +60 -0
  784. data/lib/templates/wordpress/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
  785. data/lib/templates/wordpress/wp-content/themes/twentythirteen/404.php +31 -0
  786. data/lib/templates/wordpress/wp-content/themes/twentythirteen/archive.php +55 -0
  787. data/lib/templates/wordpress/wp-content/themes/twentythirteen/author-bio.php +34 -0
  788. data/lib/templates/wordpress/wp-content/themes/twentythirteen/author.php +62 -0
  789. data/lib/templates/wordpress/wp-content/themes/twentythirteen/category.php +41 -0
  790. data/lib/templates/wordpress/wp-content/themes/twentythirteen/comments.php +59 -0
  791. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-aside.php +38 -0
  792. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-audio.php +44 -0
  793. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-chat.php +38 -0
  794. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-gallery.php +52 -0
  795. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-image.php +48 -0
  796. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-link.php +43 -0
  797. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-none.php +31 -0
  798. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-quote.php +34 -0
  799. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-status.php +32 -0
  800. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content-video.php +48 -0
  801. data/lib/templates/wordpress/wp-content/themes/twentythirteen/content.php +64 -0
  802. data/lib/templates/wordpress/wp-content/themes/twentythirteen/css/editor-style.css +787 -0
  803. data/lib/templates/wordpress/wp-content/themes/twentythirteen/css/ie.css +288 -0
  804. data/lib/templates/wordpress/wp-content/themes/twentythirteen/footer.php +26 -0
  805. data/lib/templates/wordpress/wp-content/themes/twentythirteen/functions.php +552 -0
  806. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/COPYING.txt +9 -0
  807. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf +0 -0
  808. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/LICENSE.txt +339 -0
  809. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/README.txt +123 -0
  810. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/example.html +464 -0
  811. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot +0 -0
  812. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg +135 -0
  813. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf +0 -0
  814. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff +0 -0
  815. data/lib/templates/wordpress/wp-content/themes/twentythirteen/genericons/genericons.css +197 -0
  816. data/lib/templates/wordpress/wp-content/themes/twentythirteen/header.php +51 -0
  817. data/lib/templates/wordpress/wp-content/themes/twentythirteen/image.php +82 -0
  818. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/dotted-line-2x.png +0 -0
  819. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png +0 -0
  820. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/dotted-line-light.png +0 -0
  821. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/dotted-line.png +0 -0
  822. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png +0 -0
  823. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/circle.png +0 -0
  824. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png +0 -0
  825. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/diamond.png +0 -0
  826. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png +0 -0
  827. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/headers/star.png +0 -0
  828. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/search-icon-2x.png +0 -0
  829. data/lib/templates/wordpress/wp-content/themes/twentythirteen/images/search-icon.png +0 -0
  830. data/lib/templates/wordpress/wp-content/themes/twentythirteen/inc/back-compat.php +63 -0
  831. data/lib/templates/wordpress/wp-content/themes/twentythirteen/inc/custom-header.php +230 -0
  832. data/lib/templates/wordpress/wp-content/themes/twentythirteen/index.php +38 -0
  833. data/lib/templates/wordpress/wp-content/themes/twentythirteen/js/functions.js +132 -0
  834. data/lib/templates/wordpress/wp-content/themes/twentythirteen/js/html5.js +8 -0
  835. data/lib/templates/wordpress/wp-content/themes/twentythirteen/js/theme-customizer.js +41 -0
  836. data/lib/templates/wordpress/wp-content/themes/twentythirteen/languages/twentythirteen.pot +336 -0
  837. data/lib/templates/wordpress/wp-content/themes/twentythirteen/page.php +50 -0
  838. data/lib/templates/wordpress/wp-content/themes/twentythirteen/rtl.css +766 -0
  839. data/lib/templates/wordpress/wp-content/themes/twentythirteen/screenshot.png +0 -0
  840. data/lib/templates/wordpress/wp-content/themes/twentythirteen/search.php +36 -0
  841. data/lib/templates/wordpress/wp-content/themes/twentythirteen/sidebar-main.php +18 -0
  842. data/lib/templates/wordpress/wp-content/themes/twentythirteen/sidebar.php +22 -0
  843. data/lib/templates/wordpress/wp-content/themes/twentythirteen/single.php +28 -0
  844. data/lib/templates/wordpress/wp-content/themes/twentythirteen/style.css +3227 -0
  845. data/lib/templates/wordpress/wp-content/themes/twentythirteen/tag.php +43 -0
  846. data/lib/templates/wordpress/wp-content/themes/twentythirteen/taxonomy-post_format.php +41 -0
  847. data/lib/templates/wordpress/wp-cron.php +124 -0
  848. data/lib/templates/wordpress/wp-includes/ID3/getid3.lib.php +1376 -0
  849. data/lib/templates/wordpress/wp-includes/ID3/getid3.php +1796 -0
  850. data/lib/templates/wordpress/wp-includes/ID3/license.commercial.txt +27 -0
  851. data/lib/templates/wordpress/wp-includes/ID3/license.txt +29 -0
  852. data/lib/templates/wordpress/wp-includes/ID3/module.audio-video.asf.php +2013 -0
  853. data/lib/templates/wordpress/wp-includes/ID3/module.audio-video.flv.php +745 -0
  854. data/lib/templates/wordpress/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
  855. data/lib/templates/wordpress/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
  856. data/lib/templates/wordpress/wp-includes/ID3/module.audio-video.riff.php +2586 -0
  857. data/lib/templates/wordpress/wp-includes/ID3/module.audio.ac3.php +474 -0
  858. data/lib/templates/wordpress/wp-includes/ID3/module.audio.dts.php +291 -0
  859. data/lib/templates/wordpress/wp-includes/ID3/module.audio.flac.php +443 -0
  860. data/lib/templates/wordpress/wp-includes/ID3/module.audio.mp3.php +2012 -0
  861. data/lib/templates/wordpress/wp-includes/ID3/module.audio.ogg.php +756 -0
  862. data/lib/templates/wordpress/wp-includes/ID3/module.tag.apetag.php +371 -0
  863. data/lib/templates/wordpress/wp-includes/ID3/module.tag.id3v1.php +360 -0
  864. data/lib/templates/wordpress/wp-includes/ID3/module.tag.id3v2.php +3424 -0
  865. data/lib/templates/wordpress/wp-includes/ID3/module.tag.lyrics3.php +294 -0
  866. data/lib/templates/wordpress/wp-includes/ID3/readme.txt +604 -0
  867. data/lib/templates/wordpress/wp-includes/SimplePie/Author.php +157 -0
  868. data/lib/templates/wordpress/wp-includes/SimplePie/Cache.php +133 -0
  869. data/lib/templates/wordpress/wp-includes/SimplePie/Cache/Base.php +114 -0
  870. data/lib/templates/wordpress/wp-includes/SimplePie/Cache/DB.php +137 -0
  871. data/lib/templates/wordpress/wp-includes/SimplePie/Cache/File.php +173 -0
  872. data/lib/templates/wordpress/wp-includes/SimplePie/Cache/Memcache.php +183 -0
  873. data/lib/templates/wordpress/wp-includes/SimplePie/Cache/MySQL.php +438 -0
  874. data/lib/templates/wordpress/wp-includes/SimplePie/Caption.php +210 -0
  875. data/lib/templates/wordpress/wp-includes/SimplePie/Category.php +157 -0
  876. data/lib/templates/wordpress/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
  877. data/lib/templates/wordpress/wp-includes/SimplePie/Copyright.php +130 -0
  878. data/lib/templates/wordpress/wp-includes/SimplePie/Core.php +57 -0
  879. data/lib/templates/wordpress/wp-includes/SimplePie/Credit.php +156 -0
  880. data/lib/templates/wordpress/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
  881. data/lib/templates/wordpress/wp-includes/SimplePie/Enclosure.php +1380 -0
  882. data/lib/templates/wordpress/wp-includes/SimplePie/Exception.php +52 -0
  883. data/lib/templates/wordpress/wp-includes/SimplePie/File.php +292 -0
  884. data/lib/templates/wordpress/wp-includes/SimplePie/HTTP/Parser.php +500 -0
  885. data/lib/templates/wordpress/wp-includes/SimplePie/IRI.php +1238 -0
  886. data/lib/templates/wordpress/wp-includes/SimplePie/Item.php +2964 -0
  887. data/lib/templates/wordpress/wp-includes/SimplePie/Locator.php +372 -0
  888. data/lib/templates/wordpress/wp-includes/SimplePie/Misc.php +2247 -0
  889. data/lib/templates/wordpress/wp-includes/SimplePie/Net/IPv6.php +276 -0
  890. data/lib/templates/wordpress/wp-includes/SimplePie/Parse/Date.php +983 -0
  891. data/lib/templates/wordpress/wp-includes/SimplePie/Parser.php +407 -0
  892. data/lib/templates/wordpress/wp-includes/SimplePie/Rating.php +129 -0
  893. data/lib/templates/wordpress/wp-includes/SimplePie/Registry.php +225 -0
  894. data/lib/templates/wordpress/wp-includes/SimplePie/Restriction.php +155 -0
  895. data/lib/templates/wordpress/wp-includes/SimplePie/Sanitize.php +554 -0
  896. data/lib/templates/wordpress/wp-includes/SimplePie/Source.php +611 -0
  897. data/lib/templates/wordpress/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
  898. data/lib/templates/wordpress/wp-includes/SimplePie/gzdecode.php +371 -0
  899. data/lib/templates/wordpress/wp-includes/Text/Diff.php +450 -0
  900. data/lib/templates/wordpress/wp-includes/Text/Diff/Engine/native.php +436 -0
  901. data/lib/templates/wordpress/wp-includes/Text/Diff/Engine/shell.php +162 -0
  902. data/lib/templates/wordpress/wp-includes/Text/Diff/Engine/string.php +248 -0
  903. data/lib/templates/wordpress/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
  904. data/lib/templates/wordpress/wp-includes/Text/Diff/Renderer.php +235 -0
  905. data/lib/templates/wordpress/wp-includes/Text/Diff/Renderer/inline.php +206 -0
  906. data/lib/templates/wordpress/wp-includes/admin-bar.php +959 -0
  907. data/lib/templates/wordpress/wp-includes/atomlib.php +352 -0
  908. data/lib/templates/wordpress/wp-includes/author-template.php +453 -0
  909. data/lib/templates/wordpress/wp-includes/bookmark-template.php +298 -0
  910. data/lib/templates/wordpress/wp-includes/bookmark.php +415 -0
  911. data/lib/templates/wordpress/wp-includes/cache.php +714 -0
  912. data/lib/templates/wordpress/wp-includes/canonical.php +587 -0
  913. data/lib/templates/wordpress/wp-includes/capabilities.php +1575 -0
  914. data/lib/templates/wordpress/wp-includes/category-template.php +1459 -0
  915. data/lib/templates/wordpress/wp-includes/category.php +339 -0
  916. data/lib/templates/wordpress/wp-includes/certificates/ca-bundle.crt +3785 -0
  917. data/lib/templates/wordpress/wp-includes/class-IXR.php +1111 -0
  918. data/lib/templates/wordpress/wp-includes/class-feed.php +141 -0
  919. data/lib/templates/wordpress/wp-includes/class-http.php +2276 -0
  920. data/lib/templates/wordpress/wp-includes/class-json.php +936 -0
  921. data/lib/templates/wordpress/wp-includes/class-oembed.php +615 -0
  922. data/lib/templates/wordpress/wp-includes/class-phpass.php +268 -0
  923. data/lib/templates/wordpress/wp-includes/class-phpmailer.php +3265 -0
  924. data/lib/templates/wordpress/wp-includes/class-pop3.php +652 -0
  925. data/lib/templates/wordpress/wp-includes/class-simplepie.php +3119 -0
  926. data/lib/templates/wordpress/wp-includes/class-smtp.php +943 -0
  927. data/lib/templates/wordpress/wp-includes/class-snoopy.php +1256 -0
  928. data/lib/templates/wordpress/wp-includes/class-wp-admin-bar.php +519 -0
  929. data/lib/templates/wordpress/wp-includes/class-wp-ajax-response.php +145 -0
  930. data/lib/templates/wordpress/wp-includes/class-wp-customize-control.php +1378 -0
  931. data/lib/templates/wordpress/wp-includes/class-wp-customize-manager.php +1591 -0
  932. data/lib/templates/wordpress/wp-includes/class-wp-customize-panel.php +333 -0
  933. data/lib/templates/wordpress/wp-includes/class-wp-customize-section.php +453 -0
  934. data/lib/templates/wordpress/wp-includes/class-wp-customize-setting.php +629 -0
  935. data/lib/templates/wordpress/wp-includes/class-wp-customize-widgets.php +1549 -0
  936. data/lib/templates/wordpress/wp-includes/class-wp-editor.php +1492 -0
  937. data/lib/templates/wordpress/wp-includes/class-wp-embed.php +357 -0
  938. data/lib/templates/wordpress/wp-includes/class-wp-error.php +219 -0
  939. data/lib/templates/wordpress/wp-includes/class-wp-http-ixr-client.php +108 -0
  940. data/lib/templates/wordpress/wp-includes/class-wp-image-editor-gd.php +470 -0
  941. data/lib/templates/wordpress/wp-includes/class-wp-image-editor-imagick.php +516 -0
  942. data/lib/templates/wordpress/wp-includes/class-wp-image-editor.php +485 -0
  943. data/lib/templates/wordpress/wp-includes/class-wp-theme.php +1237 -0
  944. data/lib/templates/wordpress/wp-includes/class-wp-walker.php +416 -0
  945. data/lib/templates/wordpress/wp-includes/class-wp-xmlrpc-server.php +5935 -0
  946. data/lib/templates/wordpress/wp-includes/class-wp.php +714 -0
  947. data/lib/templates/wordpress/wp-includes/class.wp-dependencies.php +509 -0
  948. data/lib/templates/wordpress/wp-includes/class.wp-scripts.php +284 -0
  949. data/lib/templates/wordpress/wp-includes/class.wp-styles.php +248 -0
  950. data/lib/templates/wordpress/wp-includes/comment-template.php +2421 -0
  951. data/lib/templates/wordpress/wp-includes/comment.php +3066 -0
  952. data/lib/templates/wordpress/wp-includes/compat.php +149 -0
  953. data/lib/templates/wordpress/wp-includes/cron.php +470 -0
  954. data/lib/templates/wordpress/wp-includes/css/admin-bar-rtl.css +1123 -0
  955. data/lib/templates/wordpress/wp-includes/css/admin-bar-rtl.min.css +1 -0
  956. data/lib/templates/wordpress/wp-includes/css/admin-bar.css +1123 -0
  957. data/lib/templates/wordpress/wp-includes/css/admin-bar.min.css +1 -0
  958. data/lib/templates/wordpress/wp-includes/css/buttons-rtl.css +360 -0
  959. data/lib/templates/wordpress/wp-includes/css/buttons-rtl.min.css +1 -0
  960. data/lib/templates/wordpress/wp-includes/css/buttons.css +360 -0
  961. data/lib/templates/wordpress/wp-includes/css/buttons.min.css +1 -0
  962. data/lib/templates/wordpress/wp-includes/css/dashicons.css +958 -0
  963. data/lib/templates/wordpress/wp-includes/css/dashicons.min.css +1 -0
  964. data/lib/templates/wordpress/wp-includes/css/editor-rtl.css +2143 -0
  965. data/lib/templates/wordpress/wp-includes/css/editor-rtl.min.css +1 -0
  966. data/lib/templates/wordpress/wp-includes/css/editor.css +2143 -0
  967. data/lib/templates/wordpress/wp-includes/css/editor.min.css +1 -0
  968. data/lib/templates/wordpress/wp-includes/css/jquery-ui-dialog-rtl.css +362 -0
  969. data/lib/templates/wordpress/wp-includes/css/jquery-ui-dialog-rtl.min.css +17 -0
  970. data/lib/templates/wordpress/wp-includes/css/jquery-ui-dialog.css +362 -0
  971. data/lib/templates/wordpress/wp-includes/css/jquery-ui-dialog.min.css +17 -0
  972. data/lib/templates/wordpress/wp-includes/css/media-views-rtl.css +2601 -0
  973. data/lib/templates/wordpress/wp-includes/css/media-views-rtl.min.css +8 -0
  974. data/lib/templates/wordpress/wp-includes/css/media-views.css +2601 -0
  975. data/lib/templates/wordpress/wp-includes/css/media-views.min.css +8 -0
  976. data/lib/templates/wordpress/wp-includes/css/wp-auth-check-rtl.css +109 -0
  977. data/lib/templates/wordpress/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
  978. data/lib/templates/wordpress/wp-includes/css/wp-auth-check.css +109 -0
  979. data/lib/templates/wordpress/wp-includes/css/wp-auth-check.min.css +1 -0
  980. data/lib/templates/wordpress/wp-includes/css/wp-pointer-rtl.css +212 -0
  981. data/lib/templates/wordpress/wp-includes/css/wp-pointer-rtl.min.css +1 -0
  982. data/lib/templates/wordpress/wp-includes/css/wp-pointer.css +212 -0
  983. data/lib/templates/wordpress/wp-includes/css/wp-pointer.min.css +1 -0
  984. data/lib/templates/wordpress/wp-includes/date.php +1013 -0
  985. data/lib/templates/wordpress/wp-includes/default-constants.php +323 -0
  986. data/lib/templates/wordpress/wp-includes/default-filters.php +392 -0
  987. data/lib/templates/wordpress/wp-includes/default-widgets.php +1479 -0
  988. data/lib/templates/wordpress/wp-includes/deprecated.php +3493 -0
  989. data/lib/templates/wordpress/wp-includes/feed-atom-comments.php +115 -0
  990. data/lib/templates/wordpress/wp-includes/feed-atom.php +87 -0
  991. data/lib/templates/wordpress/wp-includes/feed-rdf.php +85 -0
  992. data/lib/templates/wordpress/wp-includes/feed-rss.php +46 -0
  993. data/lib/templates/wordpress/wp-includes/feed-rss2-comments.php +101 -0
  994. data/lib/templates/wordpress/wp-includes/feed-rss2.php +117 -0
  995. data/lib/templates/wordpress/wp-includes/feed.php +651 -0
  996. data/lib/templates/wordpress/wp-includes/fonts/dashicons.eot +0 -0
  997. data/lib/templates/wordpress/wp-includes/fonts/dashicons.svg +253 -0
  998. data/lib/templates/wordpress/wp-includes/fonts/dashicons.ttf +0 -0
  999. data/lib/templates/wordpress/wp-includes/fonts/dashicons.woff +0 -0
  1000. data/lib/templates/wordpress/wp-includes/formatting.php +4377 -0
  1001. data/lib/templates/wordpress/wp-includes/functions.php +4847 -0
  1002. data/lib/templates/wordpress/wp-includes/functions.wp-scripts.php +296 -0
  1003. data/lib/templates/wordpress/wp-includes/functions.wp-styles.php +222 -0
  1004. data/lib/templates/wordpress/wp-includes/general-template.php +3159 -0
  1005. data/lib/templates/wordpress/wp-includes/http.php +552 -0
  1006. data/lib/templates/wordpress/wp-includes/images/admin-bar-sprite-2x.png +0 -0
  1007. data/lib/templates/wordpress/wp-includes/images/admin-bar-sprite.png +0 -0
  1008. data/lib/templates/wordpress/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
  1009. data/lib/templates/wordpress/wp-includes/images/arrow-pointer-blue.png +0 -0
  1010. data/lib/templates/wordpress/wp-includes/images/blank.gif +0 -0
  1011. data/lib/templates/wordpress/wp-includes/images/crystal/archive.png +0 -0
  1012. data/lib/templates/wordpress/wp-includes/images/crystal/audio.png +0 -0
  1013. data/lib/templates/wordpress/wp-includes/images/crystal/code.png +0 -0
  1014. data/lib/templates/wordpress/wp-includes/images/crystal/default.png +0 -0
  1015. data/lib/templates/wordpress/wp-includes/images/crystal/document.png +0 -0
  1016. data/lib/templates/wordpress/wp-includes/images/crystal/interactive.png +0 -0
  1017. data/lib/templates/wordpress/wp-includes/images/crystal/license.txt +9 -0
  1018. data/lib/templates/wordpress/wp-includes/images/crystal/spreadsheet.png +0 -0
  1019. data/lib/templates/wordpress/wp-includes/images/crystal/text.png +0 -0
  1020. data/lib/templates/wordpress/wp-includes/images/crystal/video.png +0 -0
  1021. data/lib/templates/wordpress/wp-includes/images/down_arrow-2x.gif +0 -0
  1022. data/lib/templates/wordpress/wp-includes/images/down_arrow.gif +0 -0
  1023. data/lib/templates/wordpress/wp-includes/images/icon-pointer-flag-2x.png +0 -0
  1024. data/lib/templates/wordpress/wp-includes/images/icon-pointer-flag.png +0 -0
  1025. data/lib/templates/wordpress/wp-includes/images/media/archive.png +0 -0
  1026. data/lib/templates/wordpress/wp-includes/images/media/audio.png +0 -0
  1027. data/lib/templates/wordpress/wp-includes/images/media/code.png +0 -0
  1028. data/lib/templates/wordpress/wp-includes/images/media/default.png +0 -0
  1029. data/lib/templates/wordpress/wp-includes/images/media/document.png +0 -0
  1030. data/lib/templates/wordpress/wp-includes/images/media/interactive.png +0 -0
  1031. data/lib/templates/wordpress/wp-includes/images/media/spreadsheet.png +0 -0
  1032. data/lib/templates/wordpress/wp-includes/images/media/text.png +0 -0
  1033. data/lib/templates/wordpress/wp-includes/images/media/video.png +0 -0
  1034. data/lib/templates/wordpress/wp-includes/images/rss-2x.png +0 -0
  1035. data/lib/templates/wordpress/wp-includes/images/rss.png +0 -0
  1036. data/lib/templates/wordpress/wp-includes/images/smilies/frownie.png +0 -0
  1037. data/lib/templates/wordpress/wp-includes/images/smilies/icon_arrow.gif +0 -0
  1038. data/lib/templates/wordpress/wp-includes/images/smilies/icon_biggrin.gif +0 -0
  1039. data/lib/templates/wordpress/wp-includes/images/smilies/icon_confused.gif +0 -0
  1040. data/lib/templates/wordpress/wp-includes/images/smilies/icon_cool.gif +0 -0
  1041. data/lib/templates/wordpress/wp-includes/images/smilies/icon_cry.gif +0 -0
  1042. data/lib/templates/wordpress/wp-includes/images/smilies/icon_eek.gif +0 -0
  1043. data/lib/templates/wordpress/wp-includes/images/smilies/icon_evil.gif +0 -0
  1044. data/lib/templates/wordpress/wp-includes/images/smilies/icon_exclaim.gif +0 -0
  1045. data/lib/templates/wordpress/wp-includes/images/smilies/icon_idea.gif +0 -0
  1046. data/lib/templates/wordpress/wp-includes/images/smilies/icon_lol.gif +0 -0
  1047. data/lib/templates/wordpress/wp-includes/images/smilies/icon_mad.gif +0 -0
  1048. data/lib/templates/wordpress/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
  1049. data/lib/templates/wordpress/wp-includes/images/smilies/icon_neutral.gif +0 -0
  1050. data/lib/templates/wordpress/wp-includes/images/smilies/icon_question.gif +0 -0
  1051. data/lib/templates/wordpress/wp-includes/images/smilies/icon_razz.gif +0 -0
  1052. data/lib/templates/wordpress/wp-includes/images/smilies/icon_redface.gif +0 -0
  1053. data/lib/templates/wordpress/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
  1054. data/lib/templates/wordpress/wp-includes/images/smilies/icon_sad.gif +0 -0
  1055. data/lib/templates/wordpress/wp-includes/images/smilies/icon_smile.gif +0 -0
  1056. data/lib/templates/wordpress/wp-includes/images/smilies/icon_surprised.gif +0 -0
  1057. data/lib/templates/wordpress/wp-includes/images/smilies/icon_twisted.gif +0 -0
  1058. data/lib/templates/wordpress/wp-includes/images/smilies/icon_wink.gif +0 -0
  1059. data/lib/templates/wordpress/wp-includes/images/smilies/mrgreen.png +0 -0
  1060. data/lib/templates/wordpress/wp-includes/images/smilies/rolleyes.png +0 -0
  1061. data/lib/templates/wordpress/wp-includes/images/smilies/simple-smile.png +0 -0
  1062. data/lib/templates/wordpress/wp-includes/images/spinner-2x.gif +0 -0
  1063. data/lib/templates/wordpress/wp-includes/images/spinner.gif +0 -0
  1064. data/lib/templates/wordpress/wp-includes/images/toggle-arrow-2x.png +0 -0
  1065. data/lib/templates/wordpress/wp-includes/images/toggle-arrow.png +0 -0
  1066. data/lib/templates/wordpress/wp-includes/images/uploader-icons-2x.png +0 -0
  1067. data/lib/templates/wordpress/wp-includes/images/uploader-icons.png +0 -0
  1068. data/lib/templates/wordpress/wp-includes/images/wlw/wp-comments.png +0 -0
  1069. data/lib/templates/wordpress/wp-includes/images/wlw/wp-icon.png +0 -0
  1070. data/lib/templates/wordpress/wp-includes/images/wlw/wp-watermark.png +0 -0
  1071. data/lib/templates/wordpress/wp-includes/images/wpicons-2x.png +0 -0
  1072. data/lib/templates/wordpress/wp-includes/images/wpicons.png +0 -0
  1073. data/lib/templates/wordpress/wp-includes/images/wpspin-2x.gif +0 -0
  1074. data/lib/templates/wordpress/wp-includes/images/wpspin.gif +0 -0
  1075. data/lib/templates/wordpress/wp-includes/images/xit-2x.gif +0 -0
  1076. data/lib/templates/wordpress/wp-includes/images/xit.gif +0 -0
  1077. data/lib/templates/wordpress/wp-includes/js/admin-bar.js +379 -0
  1078. data/lib/templates/wordpress/wp-includes/js/admin-bar.min.js +1 -0
  1079. data/lib/templates/wordpress/wp-includes/js/autosave.js +591 -0
  1080. data/lib/templates/wordpress/wp-includes/js/autosave.min.js +1 -0
  1081. data/lib/templates/wordpress/wp-includes/js/backbone.min.js +1 -0
  1082. data/lib/templates/wordpress/wp-includes/js/colorpicker.js +707 -0
  1083. data/lib/templates/wordpress/wp-includes/js/colorpicker.min.js +1 -0
  1084. data/lib/templates/wordpress/wp-includes/js/comment-reply.js +47 -0
  1085. data/lib/templates/wordpress/wp-includes/js/comment-reply.min.js +1 -0
  1086. data/lib/templates/wordpress/wp-includes/js/crop/cropper.css +165 -0
  1087. data/lib/templates/wordpress/wp-includes/js/crop/cropper.js +516 -0
  1088. data/lib/templates/wordpress/wp-includes/js/crop/marqueeHoriz.gif +0 -0
  1089. data/lib/templates/wordpress/wp-includes/js/crop/marqueeVert.gif +0 -0
  1090. data/lib/templates/wordpress/wp-includes/js/customize-base.js +647 -0
  1091. data/lib/templates/wordpress/wp-includes/js/customize-base.min.js +1 -0
  1092. data/lib/templates/wordpress/wp-includes/js/customize-loader.js +259 -0
  1093. data/lib/templates/wordpress/wp-includes/js/customize-loader.min.js +1 -0
  1094. data/lib/templates/wordpress/wp-includes/js/customize-models.js +247 -0
  1095. data/lib/templates/wordpress/wp-includes/js/customize-models.min.js +1 -0
  1096. data/lib/templates/wordpress/wp-includes/js/customize-preview-widgets.js +129 -0
  1097. data/lib/templates/wordpress/wp-includes/js/customize-preview-widgets.min.js +1 -0
  1098. data/lib/templates/wordpress/wp-includes/js/customize-preview.js +171 -0
  1099. data/lib/templates/wordpress/wp-includes/js/customize-preview.min.js +1 -0
  1100. data/lib/templates/wordpress/wp-includes/js/customize-views.js +231 -0
  1101. data/lib/templates/wordpress/wp-includes/js/customize-views.min.js +1 -0
  1102. data/lib/templates/wordpress/wp-includes/js/heartbeat.js +750 -0
  1103. data/lib/templates/wordpress/wp-includes/js/heartbeat.min.js +1 -0
  1104. data/lib/templates/wordpress/wp-includes/js/hoverIntent.js +115 -0
  1105. data/lib/templates/wordpress/wp-includes/js/hoverIntent.min.js +1 -0
  1106. data/lib/templates/wordpress/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
  1107. data/lib/templates/wordpress/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
  1108. data/lib/templates/wordpress/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
  1109. data/lib/templates/wordpress/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
  1110. data/lib/templates/wordpress/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
  1111. data/lib/templates/wordpress/wp-includes/js/jcrop/Jcrop.gif +0 -0
  1112. data/lib/templates/wordpress/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
  1113. data/lib/templates/wordpress/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
  1114. data/lib/templates/wordpress/wp-includes/js/jquery/jquery-migrate.js +521 -0
  1115. data/lib/templates/wordpress/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
  1116. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.color.min.js +2 -0
  1117. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.form.js +1193 -0
  1118. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.form.min.js +11 -0
  1119. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
  1120. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
  1121. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.js +5 -0
  1122. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
  1123. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.query.js +11 -0
  1124. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.schedule.js +36 -0
  1125. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
  1126. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
  1127. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
  1128. data/lib/templates/wordpress/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
  1129. data/lib/templates/wordpress/wp-includes/js/jquery/suggest.js +316 -0
  1130. data/lib/templates/wordpress/wp-includes/js/jquery/suggest.min.js +1 -0
  1131. data/lib/templates/wordpress/wp-includes/js/jquery/ui/accordion.min.js +11 -0
  1132. data/lib/templates/wordpress/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
  1133. data/lib/templates/wordpress/wp-includes/js/jquery/ui/button.min.js +11 -0
  1134. data/lib/templates/wordpress/wp-includes/js/jquery/ui/core.min.js +11 -0
  1135. data/lib/templates/wordpress/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
  1136. data/lib/templates/wordpress/wp-includes/js/jquery/ui/dialog.min.js +11 -0
  1137. data/lib/templates/wordpress/wp-includes/js/jquery/ui/draggable.min.js +11 -0
  1138. data/lib/templates/wordpress/wp-includes/js/jquery/ui/droppable.min.js +11 -0
  1139. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
  1140. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
  1141. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
  1142. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
  1143. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
  1144. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
  1145. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
  1146. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
  1147. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
  1148. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
  1149. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
  1150. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
  1151. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
  1152. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
  1153. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
  1154. data/lib/templates/wordpress/wp-includes/js/jquery/ui/effect.min.js +21 -0
  1155. data/lib/templates/wordpress/wp-includes/js/jquery/ui/menu.min.js +11 -0
  1156. data/lib/templates/wordpress/wp-includes/js/jquery/ui/mouse.min.js +11 -0
  1157. data/lib/templates/wordpress/wp-includes/js/jquery/ui/position.min.js +11 -0
  1158. data/lib/templates/wordpress/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
  1159. data/lib/templates/wordpress/wp-includes/js/jquery/ui/resizable.min.js +11 -0
  1160. data/lib/templates/wordpress/wp-includes/js/jquery/ui/selectable.min.js +11 -0
  1161. data/lib/templates/wordpress/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
  1162. data/lib/templates/wordpress/wp-includes/js/jquery/ui/slider.min.js +11 -0
  1163. data/lib/templates/wordpress/wp-includes/js/jquery/ui/sortable.min.js +11 -0
  1164. data/lib/templates/wordpress/wp-includes/js/jquery/ui/spinner.min.js +11 -0
  1165. data/lib/templates/wordpress/wp-includes/js/jquery/ui/tabs.min.js +11 -0
  1166. data/lib/templates/wordpress/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
  1167. data/lib/templates/wordpress/wp-includes/js/jquery/ui/widget.min.js +11 -0
  1168. data/lib/templates/wordpress/wp-includes/js/json2.js +480 -0
  1169. data/lib/templates/wordpress/wp-includes/js/json2.min.js +1 -0
  1170. data/lib/templates/wordpress/wp-includes/js/masonry.min.js +17 -0
  1171. data/lib/templates/wordpress/wp-includes/js/mce-view.js +881 -0
  1172. data/lib/templates/wordpress/wp-includes/js/mce-view.min.js +1 -0
  1173. data/lib/templates/wordpress/wp-includes/js/media-audiovideo.js +934 -0
  1174. data/lib/templates/wordpress/wp-includes/js/media-audiovideo.min.js +1 -0
  1175. data/lib/templates/wordpress/wp-includes/js/media-editor.js +1114 -0
  1176. data/lib/templates/wordpress/wp-includes/js/media-editor.min.js +1 -0
  1177. data/lib/templates/wordpress/wp-includes/js/media-grid.js +863 -0
  1178. data/lib/templates/wordpress/wp-includes/js/media-grid.min.js +1 -0
  1179. data/lib/templates/wordpress/wp-includes/js/media-models.js +1503 -0
  1180. data/lib/templates/wordpress/wp-includes/js/media-models.min.js +1 -0
  1181. data/lib/templates/wordpress/wp-includes/js/media-views.js +8421 -0
  1182. data/lib/templates/wordpress/wp-includes/js/media-views.min.js +4 -0
  1183. data/lib/templates/wordpress/wp-includes/js/mediaelement/background.png +0 -0
  1184. data/lib/templates/wordpress/wp-includes/js/mediaelement/bigplay.png +0 -0
  1185. data/lib/templates/wordpress/wp-includes/js/mediaelement/bigplay.svg +1 -0
  1186. data/lib/templates/wordpress/wp-includes/js/mediaelement/controls.png +0 -0
  1187. data/lib/templates/wordpress/wp-includes/js/mediaelement/controls.svg +1 -0
  1188. data/lib/templates/wordpress/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
  1189. data/lib/templates/wordpress/wp-includes/js/mediaelement/froogaloop.min.js +4 -0
  1190. data/lib/templates/wordpress/wp-includes/js/mediaelement/loading.gif +0 -0
  1191. data/lib/templates/wordpress/wp-includes/js/mediaelement/mediaelement-and-player.min.js +28 -0
  1192. data/lib/templates/wordpress/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
  1193. data/lib/templates/wordpress/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
  1194. data/lib/templates/wordpress/wp-includes/js/mediaelement/skipback.png +0 -0
  1195. data/lib/templates/wordpress/wp-includes/js/mediaelement/wp-mediaelement.css +308 -0
  1196. data/lib/templates/wordpress/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
  1197. data/lib/templates/wordpress/wp-includes/js/mediaelement/wp-playlist.js +175 -0
  1198. data/lib/templates/wordpress/wp-includes/js/plupload/handlers.js +488 -0
  1199. data/lib/templates/wordpress/wp-includes/js/plupload/handlers.min.js +1 -0
  1200. data/lib/templates/wordpress/wp-includes/js/plupload/license.txt +339 -0
  1201. data/lib/templates/wordpress/wp-includes/js/plupload/plupload.flash.swf +0 -0
  1202. data/lib/templates/wordpress/wp-includes/js/plupload/plupload.full.min.js +28 -0
  1203. data/lib/templates/wordpress/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
  1204. data/lib/templates/wordpress/wp-includes/js/plupload/wp-plupload.js +424 -0
  1205. data/lib/templates/wordpress/wp-includes/js/plupload/wp-plupload.min.js +1 -0
  1206. data/lib/templates/wordpress/wp-includes/js/quicktags.js +683 -0
  1207. data/lib/templates/wordpress/wp-includes/js/quicktags.min.js +1 -0
  1208. data/lib/templates/wordpress/wp-includes/js/shortcode.js +356 -0
  1209. data/lib/templates/wordpress/wp-includes/js/shortcode.min.js +1 -0
  1210. data/lib/templates/wordpress/wp-includes/js/swfobject.js +4 -0
  1211. data/lib/templates/wordpress/wp-includes/js/swfupload/handlers.js +376 -0
  1212. data/lib/templates/wordpress/wp-includes/js/swfupload/handlers.min.js +1 -0
  1213. data/lib/templates/wordpress/wp-includes/js/swfupload/license.txt +32 -0
  1214. data/lib/templates/wordpress/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
  1215. data/lib/templates/wordpress/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
  1216. data/lib/templates/wordpress/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
  1217. data/lib/templates/wordpress/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
  1218. data/lib/templates/wordpress/wp-includes/js/swfupload/swfupload.js +980 -0
  1219. data/lib/templates/wordpress/wp-includes/js/swfupload/swfupload.swf +0 -0
  1220. data/lib/templates/wordpress/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
  1221. data/lib/templates/wordpress/wp-includes/js/thickbox/macFFBgHack.png +0 -0
  1222. data/lib/templates/wordpress/wp-includes/js/thickbox/thickbox.css +138 -0
  1223. data/lib/templates/wordpress/wp-includes/js/thickbox/thickbox.js +314 -0
  1224. data/lib/templates/wordpress/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
  1225. data/lib/templates/wordpress/wp-includes/js/tinymce/license.txt +504 -0
  1226. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/charmap/plugin.js +396 -0
  1227. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
  1228. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
  1229. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  1230. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
  1231. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
  1232. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
  1233. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
  1234. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
  1235. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
  1236. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  1237. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
  1238. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
  1239. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/image/plugin.js +568 -0
  1240. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
  1241. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/lists/plugin.js +813 -0
  1242. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
  1243. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
  1244. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/media/plugin.js +782 -0
  1245. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
  1246. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/paste/plugin.js +1606 -0
  1247. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
  1248. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +120 -0
  1249. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  1250. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/textcolor/plugin.js +282 -0
  1251. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
  1252. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wordpress/plugin.js +754 -0
  1253. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
  1254. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
  1255. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
  1256. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
  1257. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
  1258. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +976 -0
  1259. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
  1260. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpemoji/plugin.js +128 -0
  1261. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpemoji/plugin.min.js +1 -0
  1262. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +76 -0
  1263. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
  1264. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +112 -0
  1265. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
  1266. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wplink/plugin.js +50 -0
  1267. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
  1268. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpview/plugin.js +738 -0
  1269. data/lib/templates/wordpress/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
  1270. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
  1271. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
  1272. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
  1273. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  1274. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
  1275. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  1276. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  1277. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  1278. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
  1279. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  1280. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  1281. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
  1282. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
  1283. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
  1284. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
  1285. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  1286. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
  1287. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
  1288. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
  1289. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no.png +0 -0
  1290. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
  1291. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
  1292. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
  1293. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
  1294. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
  1295. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
  1296. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
  1297. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
  1298. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
  1299. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
  1300. data/lib/templates/wordpress/wp-includes/js/tinymce/skins/wordpress/wp-content.css +539 -0
  1301. data/lib/templates/wordpress/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
  1302. data/lib/templates/wordpress/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
  1303. data/lib/templates/wordpress/wp-includes/js/tinymce/tiny_mce_popup.js +542 -0
  1304. data/lib/templates/wordpress/wp-includes/js/tinymce/tinymce.min.js +14 -0
  1305. data/lib/templates/wordpress/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
  1306. data/lib/templates/wordpress/wp-includes/js/tinymce/utils/form_utils.js +210 -0
  1307. data/lib/templates/wordpress/wp-includes/js/tinymce/utils/mctabs.js +164 -0
  1308. data/lib/templates/wordpress/wp-includes/js/tinymce/utils/validate.js +252 -0
  1309. data/lib/templates/wordpress/wp-includes/js/tinymce/wp-mce-help.php +142 -0
  1310. data/lib/templates/wordpress/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
  1311. data/lib/templates/wordpress/wp-includes/js/tinymce/wp-tinymce.php +39 -0
  1312. data/lib/templates/wordpress/wp-includes/js/tw-sack.js +193 -0
  1313. data/lib/templates/wordpress/wp-includes/js/tw-sack.min.js +1 -0
  1314. data/lib/templates/wordpress/wp-includes/js/twemoji.js +542 -0
  1315. data/lib/templates/wordpress/wp-includes/js/twemoji.min.js +1 -0
  1316. data/lib/templates/wordpress/wp-includes/js/underscore.min.js +5 -0
  1317. data/lib/templates/wordpress/wp-includes/js/utils.js +197 -0
  1318. data/lib/templates/wordpress/wp-includes/js/utils.min.js +1 -0
  1319. data/lib/templates/wordpress/wp-includes/js/wp-a11y.js +46 -0
  1320. data/lib/templates/wordpress/wp-includes/js/wp-a11y.min.js +1 -0
  1321. data/lib/templates/wordpress/wp-includes/js/wp-ajax-response.js +64 -0
  1322. data/lib/templates/wordpress/wp-includes/js/wp-ajax-response.min.js +1 -0
  1323. data/lib/templates/wordpress/wp-includes/js/wp-auth-check.js +114 -0
  1324. data/lib/templates/wordpress/wp-includes/js/wp-auth-check.min.js +1 -0
  1325. data/lib/templates/wordpress/wp-includes/js/wp-backbone.js +386 -0
  1326. data/lib/templates/wordpress/wp-includes/js/wp-backbone.min.js +1 -0
  1327. data/lib/templates/wordpress/wp-includes/js/wp-emoji-loader.js +76 -0
  1328. data/lib/templates/wordpress/wp-includes/js/wp-emoji-loader.min.js +1 -0
  1329. data/lib/templates/wordpress/wp-includes/js/wp-emoji-release.min.js +4 -0
  1330. data/lib/templates/wordpress/wp-includes/js/wp-emoji.js +170 -0
  1331. data/lib/templates/wordpress/wp-includes/js/wp-emoji.min.js +1 -0
  1332. data/lib/templates/wordpress/wp-includes/js/wp-list-revisions.js +24 -0
  1333. data/lib/templates/wordpress/wp-includes/js/wp-list-revisions.min.js +1 -0
  1334. data/lib/templates/wordpress/wp-includes/js/wp-lists.js +469 -0
  1335. data/lib/templates/wordpress/wp-includes/js/wp-lists.min.js +1 -0
  1336. data/lib/templates/wordpress/wp-includes/js/wp-pointer.js +282 -0
  1337. data/lib/templates/wordpress/wp-includes/js/wp-pointer.min.js +1 -0
  1338. data/lib/templates/wordpress/wp-includes/js/wp-util.js +112 -0
  1339. data/lib/templates/wordpress/wp-includes/js/wp-util.min.js +1 -0
  1340. data/lib/templates/wordpress/wp-includes/js/wpdialog.js +19 -0
  1341. data/lib/templates/wordpress/wp-includes/js/wpdialog.min.js +1 -0
  1342. data/lib/templates/wordpress/wp-includes/js/wplink.js +707 -0
  1343. data/lib/templates/wordpress/wp-includes/js/wplink.min.js +1 -0
  1344. data/lib/templates/wordpress/wp-includes/js/zxcvbn-async.js +18 -0
  1345. data/lib/templates/wordpress/wp-includes/js/zxcvbn-async.min.js +1 -0
  1346. data/lib/templates/wordpress/wp-includes/js/zxcvbn.min.js +47 -0
  1347. data/lib/templates/wordpress/wp-includes/kses.php +1543 -0
  1348. data/lib/templates/wordpress/wp-includes/l10n.php +956 -0
  1349. data/lib/templates/wordpress/wp-includes/link-template.php +3631 -0
  1350. data/lib/templates/wordpress/wp-includes/load.php +828 -0
  1351. data/lib/templates/wordpress/wp-includes/locale.php +365 -0
  1352. data/lib/templates/wordpress/wp-includes/media-template.php +1250 -0
  1353. data/lib/templates/wordpress/wp-includes/media.php +3440 -0
  1354. data/lib/templates/wordpress/wp-includes/meta.php +1667 -0
  1355. data/lib/templates/wordpress/wp-includes/ms-blogs.php +946 -0
  1356. data/lib/templates/wordpress/wp-includes/ms-default-constants.php +153 -0
  1357. data/lib/templates/wordpress/wp-includes/ms-default-filters.php +87 -0
  1358. data/lib/templates/wordpress/wp-includes/ms-deprecated.php +349 -0
  1359. data/lib/templates/wordpress/wp-includes/ms-files.php +82 -0
  1360. data/lib/templates/wordpress/wp-includes/ms-functions.php +2433 -0
  1361. data/lib/templates/wordpress/wp-includes/ms-load.php +472 -0
  1362. data/lib/templates/wordpress/wp-includes/ms-settings.php +213 -0
  1363. data/lib/templates/wordpress/wp-includes/nav-menu-template.php +675 -0
  1364. data/lib/templates/wordpress/wp-includes/nav-menu.php +900 -0
  1365. data/lib/templates/wordpress/wp-includes/option.php +1462 -0
  1366. data/lib/templates/wordpress/wp-includes/pluggable-deprecated.php +192 -0
  1367. data/lib/templates/wordpress/wp-includes/pluggable.php +2347 -0
  1368. data/lib/templates/wordpress/wp-includes/plugin.php +907 -0
  1369. data/lib/templates/wordpress/wp-includes/pomo/entry.php +78 -0
  1370. data/lib/templates/wordpress/wp-includes/pomo/mo.php +265 -0
  1371. data/lib/templates/wordpress/wp-includes/pomo/po.php +408 -0
  1372. data/lib/templates/wordpress/wp-includes/pomo/streams.php +241 -0
  1373. data/lib/templates/wordpress/wp-includes/pomo/translations.php +324 -0
  1374. data/lib/templates/wordpress/wp-includes/post-formats.php +232 -0
  1375. data/lib/templates/wordpress/wp-includes/post-template.php +1831 -0
  1376. data/lib/templates/wordpress/wp-includes/post-thumbnail-template.php +160 -0
  1377. data/lib/templates/wordpress/wp-includes/post.php +5937 -0
  1378. data/lib/templates/wordpress/wp-includes/query.php +4725 -0
  1379. data/lib/templates/wordpress/wp-includes/registration-functions.php +7 -0
  1380. data/lib/templates/wordpress/wp-includes/registration.php +7 -0
  1381. data/lib/templates/wordpress/wp-includes/revision.php +657 -0
  1382. data/lib/templates/wordpress/wp-includes/rewrite.php +2195 -0
  1383. data/lib/templates/wordpress/wp-includes/rss-functions.php +9 -0
  1384. data/lib/templates/wordpress/wp-includes/rss.php +936 -0
  1385. data/lib/templates/wordpress/wp-includes/script-loader.php +1090 -0
  1386. data/lib/templates/wordpress/wp-includes/session.php +439 -0
  1387. data/lib/templates/wordpress/wp-includes/shortcodes.php +404 -0
  1388. data/lib/templates/wordpress/wp-includes/taxonomy.php +4726 -0
  1389. data/lib/templates/wordpress/wp-includes/template-loader.php +76 -0
  1390. data/lib/templates/wordpress/wp-includes/template.php +505 -0
  1391. data/lib/templates/wordpress/wp-includes/theme-compat/comments-popup.php +131 -0
  1392. data/lib/templates/wordpress/wp-includes/theme-compat/comments.php +114 -0
  1393. data/lib/templates/wordpress/wp-includes/theme-compat/footer.php +30 -0
  1394. data/lib/templates/wordpress/wp-includes/theme-compat/header.php +49 -0
  1395. data/lib/templates/wordpress/wp-includes/theme-compat/sidebar.php +83 -0
  1396. data/lib/templates/wordpress/wp-includes/theme.php +2048 -0
  1397. data/lib/templates/wordpress/wp-includes/update.php +692 -0
  1398. data/lib/templates/wordpress/wp-includes/user.php +2462 -0
  1399. data/lib/templates/wordpress/wp-includes/vars.php +144 -0
  1400. data/lib/templates/wordpress/wp-includes/version.php +35 -0
  1401. data/lib/templates/wordpress/wp-includes/widgets.php +1720 -0
  1402. data/lib/templates/wordpress/wp-includes/wlwmanifest.xml +43 -0
  1403. data/lib/templates/wordpress/wp-includes/wp-db.php +2949 -0
  1404. data/lib/templates/wordpress/wp-includes/wp-diff.php +544 -0
  1405. data/lib/templates/wordpress/wp-links-opml.php +80 -0
  1406. data/lib/templates/wordpress/wp-load.php +81 -0
  1407. data/lib/templates/wordpress/wp-login.php +987 -0
  1408. data/lib/templates/wordpress/wp-mail.php +260 -0
  1409. data/lib/templates/wordpress/wp-settings.php +374 -0
  1410. data/lib/templates/wordpress/wp-signup.php +732 -0
  1411. data/lib/templates/wordpress/wp-trackback.php +127 -0
  1412. data/lib/templates/wordpress/xmlrpc.php +101 -0
  1413. metadata +1455 -0
@@ -0,0 +1,141 @@
1
+ <?php
2
+
3
+ if ( !class_exists('SimplePie') )
4
+ require_once( ABSPATH . WPINC . '/class-simplepie.php' );
5
+
6
+ class WP_Feed_Cache extends SimplePie_Cache {
7
+ /**
8
+ * Create a new SimplePie_Cache object
9
+ *
10
+ * @static
11
+ * @access public
12
+ */
13
+ public function create($location, $filename, $extension) {
14
+ return new WP_Feed_Cache_Transient($location, $filename, $extension);
15
+ }
16
+ }
17
+
18
+ class WP_Feed_Cache_Transient {
19
+ public $name;
20
+ public $mod_name;
21
+ public $lifetime = 43200; //Default lifetime in cache of 12 hours
22
+
23
+ public function __construct($location, $filename, $extension) {
24
+ $this->name = 'feed_' . $filename;
25
+ $this->mod_name = 'feed_mod_' . $filename;
26
+
27
+ $lifetime = $this->lifetime;
28
+ /**
29
+ * Filter the transient lifetime of the feed cache.
30
+ *
31
+ * @since 2.8.0
32
+ *
33
+ * @param int $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours).
34
+ * @param string $filename Unique identifier for the cache object.
35
+ */
36
+ $this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $filename);
37
+ }
38
+
39
+ public function save($data) {
40
+ if ( $data instanceof SimplePie ) {
41
+ $data = $data->data;
42
+ }
43
+
44
+ set_transient($this->name, $data, $this->lifetime);
45
+ set_transient($this->mod_name, time(), $this->lifetime);
46
+ return true;
47
+ }
48
+
49
+ public function load() {
50
+ return get_transient($this->name);
51
+ }
52
+
53
+ public function mtime() {
54
+ return get_transient($this->mod_name);
55
+ }
56
+
57
+ public function touch() {
58
+ return set_transient($this->mod_name, time(), $this->lifetime);
59
+ }
60
+
61
+ public function unlink() {
62
+ delete_transient($this->name);
63
+ delete_transient($this->mod_name);
64
+ return true;
65
+ }
66
+ }
67
+
68
+ class WP_SimplePie_File extends SimplePie_File {
69
+
70
+ public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) {
71
+ $this->url = $url;
72
+ $this->timeout = $timeout;
73
+ $this->redirects = $redirects;
74
+ $this->headers = $headers;
75
+ $this->useragent = $useragent;
76
+
77
+ $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE;
78
+
79
+ if ( preg_match('/^http(s)?:\/\//i', $url) ) {
80
+ $args = array(
81
+ 'timeout' => $this->timeout,
82
+ 'redirection' => $this->redirects,
83
+ );
84
+
85
+ if ( !empty($this->headers) )
86
+ $args['headers'] = $this->headers;
87
+
88
+ if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified
89
+ $args['user-agent'] = $this->useragent;
90
+
91
+ $res = wp_safe_remote_request($url, $args);
92
+
93
+ if ( is_wp_error($res) ) {
94
+ $this->error = 'WP HTTP Error: ' . $res->get_error_message();
95
+ $this->success = false;
96
+ } else {
97
+ $this->headers = wp_remote_retrieve_headers( $res );
98
+ $this->body = wp_remote_retrieve_body( $res );
99
+ $this->status_code = wp_remote_retrieve_response_code( $res );
100
+ }
101
+ } else {
102
+ $this->error = '';
103
+ $this->success = false;
104
+ }
105
+ }
106
+ }
107
+
108
+ /**
109
+ * WordPress SimplePie Sanitization Class
110
+ *
111
+ * Extension of the SimplePie_Sanitize class to use KSES, because
112
+ * we cannot universally count on DOMDocument being available
113
+ *
114
+ * @package WordPress
115
+ * @since 3.5.0
116
+ */
117
+ class WP_SimplePie_Sanitize_KSES extends SimplePie_Sanitize {
118
+ public function sanitize( $data, $type, $base = '' ) {
119
+ $data = trim( $data );
120
+ if ( $type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML ) {
121
+ if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) {
122
+ $type |= SIMPLEPIE_CONSTRUCT_HTML;
123
+ }
124
+ else {
125
+ $type |= SIMPLEPIE_CONSTRUCT_TEXT;
126
+ }
127
+ }
128
+ if ( $type & SIMPLEPIE_CONSTRUCT_BASE64 ) {
129
+ $data = base64_decode( $data );
130
+ }
131
+ if ( $type & ( SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML ) ) {
132
+ $data = wp_kses_post( $data );
133
+ if ( $this->output_encoding !== 'UTF-8' ) {
134
+ $data = $this->registry->call( 'Misc', 'change_encoding', array( $data, 'UTF-8', $this->output_encoding ) );
135
+ }
136
+ return $data;
137
+ } else {
138
+ return parent::sanitize( $data, $type, $base );
139
+ }
140
+ }
141
+ }
@@ -0,0 +1,2276 @@
1
+ <?php
2
+ /**
3
+ * Simple and uniform HTTP request API.
4
+ *
5
+ * Standardizes the HTTP requests for WordPress. Handles cookies, gzip encoding and decoding, chunk
6
+ * decoding, if HTTP 1.1 and various other difficult HTTP protocol implementations.
7
+ *
8
+ * @link https://core.trac.wordpress.org/ticket/4779 HTTP API Proposal
9
+ *
10
+ * @package WordPress
11
+ * @subpackage HTTP
12
+ * @since 2.7.0
13
+ */
14
+
15
+ /**
16
+ * WordPress HTTP Class for managing HTTP Transports and making HTTP requests.
17
+ *
18
+ * This class is used to consistently make outgoing HTTP requests easy for developers
19
+ * while still being compatible with the many PHP configurations under which
20
+ * WordPress runs.
21
+ *
22
+ * Debugging includes several actions, which pass different variables for debugging the HTTP API.
23
+ *
24
+ * @package WordPress
25
+ * @subpackage HTTP
26
+ * @since 2.7.0
27
+ */
28
+ class WP_Http {
29
+
30
+ /**
31
+ * Send an HTTP request to a URI.
32
+ *
33
+ * Please note: The only URI that are supported in the HTTP Transport implementation
34
+ * are the HTTP and HTTPS protocols.
35
+ *
36
+ * @access public
37
+ * @since 2.7.0
38
+ *
39
+ * @param string $url The request URL.
40
+ * @param string|array $args {
41
+ * Optional. Array or string of HTTP request arguments.
42
+ *
43
+ * @type string $method Request method. Accepts 'GET', 'POST', 'HEAD', or 'PUT'.
44
+ * Some transports technically allow others, but should not be
45
+ * assumed. Default 'GET'.
46
+ * @type int $timeout How long the connection should stay open in seconds. Default 5.
47
+ * @type int $redirection Number of allowed redirects. Not supported by all transports
48
+ * Default 5.
49
+ * @type string $httpversion Version of the HTTP protocol to use. Accepts '1.0' and '1.1'.
50
+ * Default '1.0'.
51
+ * @type string $user-agent User-agent value sent.
52
+ * Default WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ).
53
+ * @type bool $reject_unsafe_urls Whether to pass URLs through {@see wp_http_validate_url()}.
54
+ * Default false.
55
+ * @type bool $blocking Whether the calling code requires the result of the request.
56
+ * If set to false, the request will be sent to the remote server,
57
+ * and processing returned to the calling code immediately, the caller
58
+ * will know if the request succeeded or failed, but will not receive
59
+ * any response from the remote server. Default true.
60
+ * @type string|array $headers Array or string of headers to send with the request.
61
+ * Default empty array.
62
+ * @type array $cookies List of cookies to send with the request. Default empty array.
63
+ * @type string|array $body Body to send with the request. Default null.
64
+ * @type bool $compress Whether to compress the $body when sending the request.
65
+ * Default false.
66
+ * @type bool $decompress Whether to decompress a compressed response. If set to false and
67
+ * compressed content is returned in the response anyway, it will
68
+ * need to be separately decompressed. Default true.
69
+ * @type bool $sslverify Whether to verify SSL for the request. Default true.
70
+ * @type string sslcertificates Absolute path to an SSL certificate .crt file.
71
+ * Default ABSPATH . WPINC . '/certificates/ca-bundle.crt'.
72
+ * @type bool $stream Whether to stream to a file. If set to true and no filename was
73
+ * given, it will be droped it in the WP temp dir and its name will
74
+ * be set using the basename of the URL. Default false.
75
+ * @type string $filename Filename of the file to write to when streaming. $stream must be
76
+ * set to true. Default null.
77
+ * @type int $limit_response_size Size in bytes to limit the response to. Default null.
78
+ *
79
+ * }
80
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
81
+ * A WP_Error instance upon error.
82
+ */
83
+ public function request( $url, $args = array() ) {
84
+ global $wp_version;
85
+
86
+ $defaults = array(
87
+ 'method' => 'GET',
88
+ /**
89
+ * Filter the timeout value for an HTTP request.
90
+ *
91
+ * @since 2.7.0
92
+ *
93
+ * @param int $timeout_value Time in seconds until a request times out.
94
+ * Default 5.
95
+ */
96
+ 'timeout' => apply_filters( 'http_request_timeout', 5 ),
97
+ /**
98
+ * Filter the number of redirects allowed during an HTTP request.
99
+ *
100
+ * @since 2.7.0
101
+ *
102
+ * @param int $redirect_count Number of redirects allowed. Default 5.
103
+ */
104
+ 'redirection' => apply_filters( 'http_request_redirection_count', 5 ),
105
+ /**
106
+ * Filter the version of the HTTP protocol used in a request.
107
+ *
108
+ * @since 2.7.0
109
+ *
110
+ * @param string $version Version of HTTP used. Accepts '1.0' and '1.1'.
111
+ * Default '1.0'.
112
+ */
113
+ 'httpversion' => apply_filters( 'http_request_version', '1.0' ),
114
+ /**
115
+ * Filter the user agent value sent with an HTTP request.
116
+ *
117
+ * @since 2.7.0
118
+ *
119
+ * @param string $user_agent WordPress user agent string.
120
+ */
121
+ 'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ),
122
+ /**
123
+ * Filter whether to pass URLs through wp_http_validate_url() in an HTTP request.
124
+ *
125
+ * @since 3.6.0
126
+ *
127
+ * @param bool $pass_url Whether to pass URLs through wp_http_validate_url().
128
+ * Default false.
129
+ */
130
+ 'reject_unsafe_urls' => apply_filters( 'http_request_reject_unsafe_urls', false ),
131
+ 'blocking' => true,
132
+ 'headers' => array(),
133
+ 'cookies' => array(),
134
+ 'body' => null,
135
+ 'compress' => false,
136
+ 'decompress' => true,
137
+ 'sslverify' => true,
138
+ 'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt',
139
+ 'stream' => false,
140
+ 'filename' => null,
141
+ 'limit_response_size' => null,
142
+ );
143
+
144
+ // Pre-parse for the HEAD checks.
145
+ $args = wp_parse_args( $args );
146
+
147
+ // By default, Head requests do not cause redirections.
148
+ if ( isset($args['method']) && 'HEAD' == $args['method'] )
149
+ $defaults['redirection'] = 0;
150
+
151
+ $r = wp_parse_args( $args, $defaults );
152
+ /**
153
+ * Filter the arguments used in an HTTP request.
154
+ *
155
+ * @since 2.7.0
156
+ *
157
+ * @param array $r An array of HTTP request arguments.
158
+ * @param string $url The request URL.
159
+ */
160
+ $r = apply_filters( 'http_request_args', $r, $url );
161
+
162
+ // The transports decrement this, store a copy of the original value for loop purposes.
163
+ if ( ! isset( $r['_redirection'] ) )
164
+ $r['_redirection'] = $r['redirection'];
165
+
166
+ /**
167
+ * Filter whether to preempt an HTTP request's return.
168
+ *
169
+ * Returning a truthy value to the filter will short-circuit
170
+ * the HTTP request and return early with that value.
171
+ *
172
+ * @since 2.9.0
173
+ *
174
+ * @param bool $preempt Whether to preempt an HTTP request return. Default false.
175
+ * @param array $r HTTP request arguments.
176
+ * @param string $url The request URL.
177
+ */
178
+ $pre = apply_filters( 'pre_http_request', false, $r, $url );
179
+ if ( false !== $pre )
180
+ return $pre;
181
+
182
+ if ( function_exists( 'wp_kses_bad_protocol' ) ) {
183
+ if ( $r['reject_unsafe_urls'] )
184
+ $url = wp_http_validate_url( $url );
185
+ if ( $url ) {
186
+ $url = wp_kses_bad_protocol( $url, array( 'http', 'https', 'ssl' ) );
187
+ }
188
+ }
189
+
190
+ $arrURL = @parse_url( $url );
191
+
192
+ if ( empty( $url ) || empty( $arrURL['scheme'] ) )
193
+ return new WP_Error('http_request_failed', __('A valid URL was not provided.'));
194
+
195
+ if ( $this->block_request( $url ) )
196
+ return new WP_Error( 'http_request_failed', __( 'User has blocked requests through HTTP.' ) );
197
+
198
+ /*
199
+ * Determine if this is a https call and pass that on to the transport functions
200
+ * so that we can blacklist the transports that do not support ssl verification
201
+ */
202
+ $r['ssl'] = $arrURL['scheme'] == 'https' || $arrURL['scheme'] == 'ssl';
203
+
204
+ // Determine if this request is to OUR install of WordPress.
205
+ $homeURL = parse_url( get_bloginfo( 'url' ) );
206
+ $r['local'] = 'localhost' == $arrURL['host'] || ( isset( $homeURL['host'] ) && $homeURL['host'] == $arrURL['host'] );
207
+ unset( $homeURL );
208
+
209
+ /*
210
+ * If we are streaming to a file but no filename was given drop it in the WP temp dir
211
+ * and pick its name using the basename of the $url.
212
+ */
213
+ if ( $r['stream'] && empty( $r['filename'] ) ) {
214
+ $r['filename'] = wp_unique_filename( get_temp_dir(), basename( $url ) );
215
+ }
216
+
217
+ /*
218
+ * Force some settings if we are streaming to a file and check for existence and perms
219
+ * of destination directory.
220
+ */
221
+ if ( $r['stream'] ) {
222
+ $r['blocking'] = true;
223
+ if ( ! wp_is_writable( dirname( $r['filename'] ) ) )
224
+ return new WP_Error( 'http_request_failed', __( 'Destination directory for file streaming does not exist or is not writable.' ) );
225
+ }
226
+
227
+ if ( is_null( $r['headers'] ) )
228
+ $r['headers'] = array();
229
+
230
+ if ( ! is_array( $r['headers'] ) ) {
231
+ $processedHeaders = self::processHeaders( $r['headers'], $url );
232
+ $r['headers'] = $processedHeaders['headers'];
233
+ }
234
+
235
+ if ( isset( $r['headers']['User-Agent'] ) ) {
236
+ $r['user-agent'] = $r['headers']['User-Agent'];
237
+ unset( $r['headers']['User-Agent'] );
238
+ }
239
+
240
+ if ( isset( $r['headers']['user-agent'] ) ) {
241
+ $r['user-agent'] = $r['headers']['user-agent'];
242
+ unset( $r['headers']['user-agent'] );
243
+ }
244
+
245
+ if ( '1.1' == $r['httpversion'] && !isset( $r['headers']['connection'] ) ) {
246
+ $r['headers']['connection'] = 'close';
247
+ }
248
+
249
+ // Construct Cookie: header if any cookies are set.
250
+ self::buildCookieHeader( $r );
251
+
252
+ // Avoid issues where mbstring.func_overload is enabled.
253
+ mbstring_binary_safe_encoding();
254
+
255
+ if ( ! isset( $r['headers']['Accept-Encoding'] ) ) {
256
+ if ( $encoding = WP_Http_Encoding::accept_encoding( $url, $r ) )
257
+ $r['headers']['Accept-Encoding'] = $encoding;
258
+ }
259
+
260
+ if ( ( ! is_null( $r['body'] ) && '' != $r['body'] ) || 'POST' == $r['method'] || 'PUT' == $r['method'] ) {
261
+ if ( is_array( $r['body'] ) || is_object( $r['body'] ) ) {
262
+ $r['body'] = http_build_query( $r['body'], null, '&' );
263
+
264
+ if ( ! isset( $r['headers']['Content-Type'] ) )
265
+ $r['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . get_option( 'blog_charset' );
266
+ }
267
+
268
+ if ( '' === $r['body'] )
269
+ $r['body'] = null;
270
+
271
+ if ( ! isset( $r['headers']['Content-Length'] ) && ! isset( $r['headers']['content-length'] ) )
272
+ $r['headers']['Content-Length'] = strlen( $r['body'] );
273
+ }
274
+
275
+ $response = $this->_dispatch_request( $url, $r );
276
+
277
+ reset_mbstring_encoding();
278
+
279
+ if ( is_wp_error( $response ) )
280
+ return $response;
281
+
282
+ // Append cookies that were used in this request to the response
283
+ if ( ! empty( $r['cookies'] ) ) {
284
+ $cookies_set = wp_list_pluck( $response['cookies'], 'name' );
285
+ foreach ( $r['cookies'] as $cookie ) {
286
+ if ( ! in_array( $cookie->name, $cookies_set ) && $cookie->test( $url ) ) {
287
+ $response['cookies'][] = $cookie;
288
+ }
289
+ }
290
+ }
291
+
292
+ return $response;
293
+ }
294
+
295
+ /**
296
+ * Tests which transports are capable of supporting the request.
297
+ *
298
+ * @since 3.2.0
299
+ * @access private
300
+ *
301
+ * @param array $args Request arguments
302
+ * @param string $url URL to Request
303
+ *
304
+ * @return string|false Class name for the first transport that claims to support the request. False if no transport claims to support the request.
305
+ */
306
+ public function _get_first_available_transport( $args, $url = null ) {
307
+ /**
308
+ * Filter which HTTP transports are available and in what order.
309
+ *
310
+ * @since 3.7.0
311
+ *
312
+ * @param array $value Array of HTTP transports to check. Default array contains
313
+ * 'curl', and 'streams', in that order.
314
+ * @param array $args HTTP request arguments.
315
+ * @param string $url The URL to request.
316
+ */
317
+ $request_order = apply_filters( 'http_api_transports', array( 'curl', 'streams' ), $args, $url );
318
+
319
+ // Loop over each transport on each HTTP request looking for one which will serve this request's needs.
320
+ foreach ( $request_order as $transport ) {
321
+ $class = 'WP_HTTP_' . $transport;
322
+
323
+ // Check to see if this transport is a possibility, calls the transport statically.
324
+ if ( !call_user_func( array( $class, 'test' ), $args, $url ) )
325
+ continue;
326
+
327
+ return $class;
328
+ }
329
+
330
+ return false;
331
+ }
332
+
333
+ /**
334
+ * Dispatches a HTTP request to a supporting transport.
335
+ *
336
+ * Tests each transport in order to find a transport which matches the request arguments.
337
+ * Also caches the transport instance to be used later.
338
+ *
339
+ * The order for requests is cURL, and then PHP Streams.
340
+ *
341
+ * @since 3.2.0
342
+ * @access private
343
+ *
344
+ * @param string $url URL to Request
345
+ * @param array $args Request arguments
346
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
347
+ */
348
+ private function _dispatch_request( $url, $args ) {
349
+ static $transports = array();
350
+
351
+ $class = $this->_get_first_available_transport( $args, $url );
352
+ if ( !$class )
353
+ return new WP_Error( 'http_failure', __( 'There are no HTTP transports available which can complete the requested request.' ) );
354
+
355
+ // Transport claims to support request, instantiate it and give it a whirl.
356
+ if ( empty( $transports[$class] ) )
357
+ $transports[$class] = new $class;
358
+
359
+ $response = $transports[$class]->request( $url, $args );
360
+
361
+ /**
362
+ * Fires after an HTTP API response is received and before the response is returned.
363
+ *
364
+ * @since 2.8.0
365
+ *
366
+ * @param array|WP_Error $response HTTP response or WP_Error object.
367
+ * @param string $context Context under which the hook is fired.
368
+ * @param string $class HTTP transport used.
369
+ * @param array $args HTTP request arguments.
370
+ * @param string $url The request URL.
371
+ */
372
+ do_action( 'http_api_debug', $response, 'response', $class, $args, $url );
373
+
374
+ if ( is_wp_error( $response ) )
375
+ return $response;
376
+
377
+ /**
378
+ * Filter the HTTP API response immediately before the response is returned.
379
+ *
380
+ * @since 2.9.0
381
+ *
382
+ * @param array $response HTTP response.
383
+ * @param array $args HTTP request arguments.
384
+ * @param string $url The request URL.
385
+ */
386
+ return apply_filters( 'http_response', $response, $args, $url );
387
+ }
388
+
389
+ /**
390
+ * Uses the POST HTTP method.
391
+ *
392
+ * Used for sending data that is expected to be in the body.
393
+ *
394
+ * @access public
395
+ * @since 2.7.0
396
+ *
397
+ * @param string $url The request URL.
398
+ * @param string|array $args Optional. Override the defaults.
399
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
400
+ */
401
+ public function post($url, $args = array()) {
402
+ $defaults = array('method' => 'POST');
403
+ $r = wp_parse_args( $args, $defaults );
404
+ return $this->request($url, $r);
405
+ }
406
+
407
+ /**
408
+ * Uses the GET HTTP method.
409
+ *
410
+ * Used for sending data that is expected to be in the body.
411
+ *
412
+ * @access public
413
+ * @since 2.7.0
414
+ *
415
+ * @param string $url The request URL.
416
+ * @param string|array $args Optional. Override the defaults.
417
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
418
+ */
419
+ public function get($url, $args = array()) {
420
+ $defaults = array('method' => 'GET');
421
+ $r = wp_parse_args( $args, $defaults );
422
+ return $this->request($url, $r);
423
+ }
424
+
425
+ /**
426
+ * Uses the HEAD HTTP method.
427
+ *
428
+ * Used for sending data that is expected to be in the body.
429
+ *
430
+ * @access public
431
+ * @since 2.7.0
432
+ *
433
+ * @param string $url The request URL.
434
+ * @param string|array $args Optional. Override the defaults.
435
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
436
+ */
437
+ public function head($url, $args = array()) {
438
+ $defaults = array('method' => 'HEAD');
439
+ $r = wp_parse_args( $args, $defaults );
440
+ return $this->request($url, $r);
441
+ }
442
+
443
+ /**
444
+ * Parses the responses and splits the parts into headers and body.
445
+ *
446
+ * @access public
447
+ * @static
448
+ * @since 2.7.0
449
+ *
450
+ * @param string $strResponse The full response string
451
+ * @return array Array with 'headers' and 'body' keys.
452
+ */
453
+ public static function processResponse($strResponse) {
454
+ $res = explode("\r\n\r\n", $strResponse, 2);
455
+
456
+ return array('headers' => $res[0], 'body' => isset($res[1]) ? $res[1] : '');
457
+ }
458
+
459
+ /**
460
+ * Transform header string into an array.
461
+ *
462
+ * If an array is given then it is assumed to be raw header data with numeric keys with the
463
+ * headers as the values. No headers must be passed that were already processed.
464
+ *
465
+ * @access public
466
+ * @static
467
+ * @since 2.7.0
468
+ *
469
+ * @param string|array $headers
470
+ * @param string $url The URL that was requested
471
+ * @return array Processed string headers. If duplicate headers are encountered,
472
+ * Then a numbered array is returned as the value of that header-key.
473
+ */
474
+ public static function processHeaders( $headers, $url = '' ) {
475
+ // Split headers, one per array element.
476
+ if ( is_string($headers) ) {
477
+ // Tolerate line terminator: CRLF = LF (RFC 2616 19.3).
478
+ $headers = str_replace("\r\n", "\n", $headers);
479
+ /*
480
+ * Unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>,
481
+ * <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2).
482
+ */
483
+ $headers = preg_replace('/\n[ \t]/', ' ', $headers);
484
+ // Create the headers array.
485
+ $headers = explode("\n", $headers);
486
+ }
487
+
488
+ $response = array('code' => 0, 'message' => '');
489
+
490
+ /*
491
+ * If a redirection has taken place, The headers for each page request may have been passed.
492
+ * In this case, determine the final HTTP header and parse from there.
493
+ */
494
+ for ( $i = count($headers)-1; $i >= 0; $i-- ) {
495
+ if ( !empty($headers[$i]) && false === strpos($headers[$i], ':') ) {
496
+ $headers = array_splice($headers, $i);
497
+ break;
498
+ }
499
+ }
500
+
501
+ $cookies = array();
502
+ $newheaders = array();
503
+ foreach ( (array) $headers as $tempheader ) {
504
+ if ( empty($tempheader) )
505
+ continue;
506
+
507
+ if ( false === strpos($tempheader, ':') ) {
508
+ $stack = explode(' ', $tempheader, 3);
509
+ $stack[] = '';
510
+ list( , $response['code'], $response['message']) = $stack;
511
+ continue;
512
+ }
513
+
514
+ list($key, $value) = explode(':', $tempheader, 2);
515
+
516
+ $key = strtolower( $key );
517
+ $value = trim( $value );
518
+
519
+ if ( isset( $newheaders[ $key ] ) ) {
520
+ if ( ! is_array( $newheaders[ $key ] ) )
521
+ $newheaders[$key] = array( $newheaders[ $key ] );
522
+ $newheaders[ $key ][] = $value;
523
+ } else {
524
+ $newheaders[ $key ] = $value;
525
+ }
526
+ if ( 'set-cookie' == $key )
527
+ $cookies[] = new WP_Http_Cookie( $value, $url );
528
+ }
529
+
530
+ // Cast the Response Code to an int
531
+ $response['code'] = intval( $response['code'] );
532
+
533
+ return array('response' => $response, 'headers' => $newheaders, 'cookies' => $cookies);
534
+ }
535
+
536
+ /**
537
+ * Takes the arguments for a ::request() and checks for the cookie array.
538
+ *
539
+ * If it's found, then it upgrades any basic name => value pairs to WP_Http_Cookie instances,
540
+ * which are each parsed into strings and added to the Cookie: header (within the arguments array).
541
+ * Edits the array by reference.
542
+ *
543
+ * @access public
544
+ * @version 2.8.0
545
+ * @static
546
+ *
547
+ * @param array $r Full array of args passed into ::request()
548
+ */
549
+ public static function buildCookieHeader( &$r ) {
550
+ if ( ! empty($r['cookies']) ) {
551
+ // Upgrade any name => value cookie pairs to WP_HTTP_Cookie instances.
552
+ foreach ( $r['cookies'] as $name => $value ) {
553
+ if ( ! is_object( $value ) )
554
+ $r['cookies'][ $name ] = new WP_HTTP_Cookie( array( 'name' => $name, 'value' => $value ) );
555
+ }
556
+
557
+ $cookies_header = '';
558
+ foreach ( (array) $r['cookies'] as $cookie ) {
559
+ $cookies_header .= $cookie->getHeaderValue() . '; ';
560
+ }
561
+
562
+ $cookies_header = substr( $cookies_header, 0, -2 );
563
+ $r['headers']['cookie'] = $cookies_header;
564
+ }
565
+ }
566
+
567
+ /**
568
+ * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification.
569
+ *
570
+ * Based off the HTTP http_encoding_dechunk function.
571
+ *
572
+ * @link http://tools.ietf.org/html/rfc2616#section-19.4.6 Process for chunked decoding.
573
+ *
574
+ * @access public
575
+ * @since 2.7.0
576
+ * @static
577
+ *
578
+ * @param string $body Body content
579
+ * @return string Chunked decoded body on success or raw body on failure.
580
+ */
581
+ public static function chunkTransferDecode( $body ) {
582
+ // The body is not chunked encoded or is malformed.
583
+ if ( ! preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', trim( $body ) ) )
584
+ return $body;
585
+
586
+ $parsed_body = '';
587
+
588
+ // We'll be altering $body, so need a backup in case of error.
589
+ $body_original = $body;
590
+
591
+ while ( true ) {
592
+ $has_chunk = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $body, $match );
593
+ if ( ! $has_chunk || empty( $match[1] ) )
594
+ return $body_original;
595
+
596
+ $length = hexdec( $match[1] );
597
+ $chunk_length = strlen( $match[0] );
598
+
599
+ // Parse out the chunk of data.
600
+ $parsed_body .= substr( $body, $chunk_length, $length );
601
+
602
+ // Remove the chunk from the raw data.
603
+ $body = substr( $body, $length + $chunk_length );
604
+
605
+ // End of the document.
606
+ if ( '0' === trim( $body ) )
607
+ return $parsed_body;
608
+ }
609
+ }
610
+
611
+ /**
612
+ * Block requests through the proxy.
613
+ *
614
+ * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will
615
+ * prevent plugins from working and core functionality, if you don't include api.wordpress.org.
616
+ *
617
+ * You block external URL requests by defining WP_HTTP_BLOCK_EXTERNAL as true in your wp-config.php
618
+ * file and this will only allow localhost and your blog to make requests. The constant
619
+ * WP_ACCESSIBLE_HOSTS will allow additional hosts to go through for requests. The format of the
620
+ * WP_ACCESSIBLE_HOSTS constant is a comma separated list of hostnames to allow, wildcard domains
621
+ * are supported, eg *.wordpress.org will allow for all subdomains of wordpress.org to be contacted.
622
+ *
623
+ * @since 2.8.0
624
+ * @link https://core.trac.wordpress.org/ticket/8927 Allow preventing external requests.
625
+ * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_ACCESSIBLE_HOSTS
626
+ *
627
+ * @param string $uri URI of url.
628
+ * @return bool True to block, false to allow.
629
+ */
630
+ public function block_request($uri) {
631
+ // We don't need to block requests, because nothing is blocked.
632
+ if ( ! defined( 'WP_HTTP_BLOCK_EXTERNAL' ) || ! WP_HTTP_BLOCK_EXTERNAL )
633
+ return false;
634
+
635
+ $check = parse_url($uri);
636
+ if ( ! $check )
637
+ return true;
638
+
639
+ $home = parse_url( get_option('siteurl') );
640
+
641
+ // Don't block requests back to ourselves by default.
642
+ if ( 'localhost' == $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) ) {
643
+ /**
644
+ * Filter whether to block local requests through the proxy.
645
+ *
646
+ * @since 2.8.0
647
+ *
648
+ * @param bool $block Whether to block local requests through proxy.
649
+ * Default false.
650
+ */
651
+ return apply_filters( 'block_local_requests', false );
652
+ }
653
+
654
+ if ( !defined('WP_ACCESSIBLE_HOSTS') )
655
+ return true;
656
+
657
+ static $accessible_hosts;
658
+ static $wildcard_regex = false;
659
+ if ( null == $accessible_hosts ) {
660
+ $accessible_hosts = preg_split('|,\s*|', WP_ACCESSIBLE_HOSTS);
661
+
662
+ if ( false !== strpos(WP_ACCESSIBLE_HOSTS, '*') ) {
663
+ $wildcard_regex = array();
664
+ foreach ( $accessible_hosts as $host )
665
+ $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
666
+ $wildcard_regex = '/^(' . implode('|', $wildcard_regex) . ')$/i';
667
+ }
668
+ }
669
+
670
+ if ( !empty($wildcard_regex) )
671
+ return !preg_match($wildcard_regex, $check['host']);
672
+ else
673
+ return !in_array( $check['host'], $accessible_hosts ); //Inverse logic, If it's in the array, then we can't access it.
674
+
675
+ }
676
+
677
+ /**
678
+ * A wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7
679
+ *
680
+ * PHP 5.4.7 expanded parse_url()'s ability to handle non-absolute url's, including
681
+ * schemeless and relative url's with :// in the path, this works around those
682
+ * limitations providing a standard output on PHP 5.2~5.4+.
683
+ *
684
+ * Error suppression is used as prior to PHP 5.3.3, an E_WARNING would be generated
685
+ * when URL parsing failed.
686
+ *
687
+ * @since 4.1.0
688
+ * @access protected
689
+ *
690
+ * @param string $url The URL to parse.
691
+ * @return bool|array False on failure; Array of URL components on success;
692
+ * See parse_url()'s return values.
693
+ */
694
+ protected static function parse_url( $url ) {
695
+ $parts = @parse_url( $url );
696
+ if ( ! $parts ) {
697
+ // < PHP 5.4.7 compat, trouble with relative paths including a scheme break in the path
698
+ if ( '/' == $url[0] && false !== strpos( $url, '://' ) ) {
699
+ // Since we know it's a relative path, prefix with a scheme/host placeholder and try again
700
+ if ( ! $parts = @parse_url( 'placeholder://placeholder' . $url ) ) {
701
+ return $parts;
702
+ }
703
+ // Remove the placeholder values
704
+ unset( $parts['scheme'], $parts['host'] );
705
+ } else {
706
+ return $parts;
707
+ }
708
+ }
709
+
710
+ // < PHP 5.4.7 compat, doesn't detect schemeless URL's host field
711
+ if ( '//' == substr( $url, 0, 2 ) && ! isset( $parts['host'] ) ) {
712
+ list( $parts['host'], $slashless_path ) = explode( '/', substr( $parts['path'], 2 ), 2 );
713
+ $parts['path'] = "/{$slashless_path}";
714
+ }
715
+
716
+ return $parts;
717
+ }
718
+
719
+ /**
720
+ * Converts a relative URL to an absolute URL relative to a given URL.
721
+ *
722
+ * If an Absolute URL is provided, no processing of that URL is done.
723
+ *
724
+ * @since 3.4.0
725
+ *
726
+ * @access public
727
+ * @param string $maybe_relative_path The URL which might be relative
728
+ * @param string $url The URL which $maybe_relative_path is relative to
729
+ * @return string An Absolute URL, in a failure condition where the URL cannot be parsed, the relative URL will be returned.
730
+ */
731
+ public static function make_absolute_url( $maybe_relative_path, $url ) {
732
+ if ( empty( $url ) )
733
+ return $maybe_relative_path;
734
+
735
+ if ( ! $url_parts = WP_HTTP::parse_url( $url ) ) {
736
+ return $maybe_relative_path;
737
+ }
738
+
739
+ if ( ! $relative_url_parts = WP_HTTP::parse_url( $maybe_relative_path ) ) {
740
+ return $maybe_relative_path;
741
+ }
742
+
743
+ // Check for a scheme on the 'relative' url
744
+ if ( ! empty( $relative_url_parts['scheme'] ) ) {
745
+ return $maybe_relative_path;
746
+ }
747
+
748
+ $absolute_path = $url_parts['scheme'] . '://';
749
+
750
+ // Schemeless URL's will make it this far, so we check for a host in the relative url and convert it to a protocol-url
751
+ if ( isset( $relative_url_parts['host'] ) ) {
752
+ $absolute_path .= $relative_url_parts['host'];
753
+ if ( isset( $relative_url_parts['port'] ) )
754
+ $absolute_path .= ':' . $relative_url_parts['port'];
755
+ } else {
756
+ $absolute_path .= $url_parts['host'];
757
+ if ( isset( $url_parts['port'] ) )
758
+ $absolute_path .= ':' . $url_parts['port'];
759
+ }
760
+
761
+ // Start off with the Absolute URL path.
762
+ $path = ! empty( $url_parts['path'] ) ? $url_parts['path'] : '/';
763
+
764
+ // If it's a root-relative path, then great.
765
+ if ( ! empty( $relative_url_parts['path'] ) && '/' == $relative_url_parts['path'][0] ) {
766
+ $path = $relative_url_parts['path'];
767
+
768
+ // Else it's a relative path.
769
+ } elseif ( ! empty( $relative_url_parts['path'] ) ) {
770
+ // Strip off any file components from the absolute path.
771
+ $path = substr( $path, 0, strrpos( $path, '/' ) + 1 );
772
+
773
+ // Build the new path.
774
+ $path .= $relative_url_parts['path'];
775
+
776
+ // Strip all /path/../ out of the path.
777
+ while ( strpos( $path, '../' ) > 1 ) {
778
+ $path = preg_replace( '![^/]+/\.\./!', '', $path );
779
+ }
780
+
781
+ // Strip any final leading ../ from the path.
782
+ $path = preg_replace( '!^/(\.\./)+!', '', $path );
783
+ }
784
+
785
+ // Add the Query string.
786
+ if ( ! empty( $relative_url_parts['query'] ) )
787
+ $path .= '?' . $relative_url_parts['query'];
788
+
789
+ return $absolute_path . '/' . ltrim( $path, '/' );
790
+ }
791
+
792
+ /**
793
+ * Handles HTTP Redirects and follows them if appropriate.
794
+ *
795
+ * @since 3.7.0
796
+ *
797
+ * @param string $url The URL which was requested.
798
+ * @param array $args The Arguments which were used to make the request.
799
+ * @param array $response The Response of the HTTP request.
800
+ * @return false|object False if no redirect is present, a WP_HTTP or WP_Error result otherwise.
801
+ */
802
+ public static function handle_redirects( $url, $args, $response ) {
803
+ // If no redirects are present, or, redirects were not requested, perform no action.
804
+ if ( ! isset( $response['headers']['location'] ) || 0 === $args['_redirection'] )
805
+ return false;
806
+
807
+ // Only perform redirections on redirection http codes.
808
+ if ( $response['response']['code'] > 399 || $response['response']['code'] < 300 )
809
+ return false;
810
+
811
+ // Don't redirect if we've run out of redirects.
812
+ if ( $args['redirection']-- <= 0 )
813
+ return new WP_Error( 'http_request_failed', __('Too many redirects.') );
814
+
815
+ $redirect_location = $response['headers']['location'];
816
+
817
+ // If there were multiple Location headers, use the last header specified.
818
+ if ( is_array( $redirect_location ) )
819
+ $redirect_location = array_pop( $redirect_location );
820
+
821
+ $redirect_location = WP_HTTP::make_absolute_url( $redirect_location, $url );
822
+
823
+ // POST requests should not POST to a redirected location.
824
+ if ( 'POST' == $args['method'] ) {
825
+ if ( in_array( $response['response']['code'], array( 302, 303 ) ) )
826
+ $args['method'] = 'GET';
827
+ }
828
+
829
+ // Include valid cookies in the redirect process.
830
+ if ( ! empty( $response['cookies'] ) ) {
831
+ foreach ( $response['cookies'] as $cookie ) {
832
+ if ( $cookie->test( $redirect_location ) )
833
+ $args['cookies'][] = $cookie;
834
+ }
835
+ }
836
+
837
+ return wp_remote_request( $redirect_location, $args );
838
+ }
839
+
840
+ /**
841
+ * Determines if a specified string represents an IP address or not.
842
+ *
843
+ * This function also detects the type of the IP address, returning either
844
+ * '4' or '6' to represent a IPv4 and IPv6 address respectively.
845
+ * This does not verify if the IP is a valid IP, only that it appears to be
846
+ * an IP address.
847
+ *
848
+ * @see http://home.deds.nl/~aeron/regex/ for IPv6 regex
849
+ *
850
+ * @since 3.7.0
851
+ * @static
852
+ *
853
+ * @param string $maybe_ip A suspected IP address
854
+ * @return integer|bool Upon success, '4' or '6' to represent a IPv4 or IPv6 address, false upon failure
855
+ */
856
+ public static function is_ip_address( $maybe_ip ) {
857
+ if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $maybe_ip ) )
858
+ return 4;
859
+
860
+ if ( false !== strpos( $maybe_ip, ':' ) && preg_match( '/^(((?=.*(::))(?!.*\3.+\3))\3?|([\dA-F]{1,4}(\3|:\b|$)|\2))(?4){5}((?4){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i', trim( $maybe_ip, ' []' ) ) )
861
+ return 6;
862
+
863
+ return false;
864
+ }
865
+
866
+ }
867
+
868
+ /**
869
+ * HTTP request method uses PHP Streams to retrieve the url.
870
+ *
871
+ * @since 2.7.0
872
+ * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
873
+ */
874
+ class WP_Http_Streams {
875
+ /**
876
+ * Send a HTTP request to a URI using PHP Streams.
877
+ *
878
+ * @see WP_Http::request For default options descriptions.
879
+ *
880
+ * @since 2.7.0
881
+ * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
882
+ *
883
+ * @access public
884
+ * @param string $url The request URL.
885
+ * @param string|array $args Optional. Override the defaults.
886
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
887
+ */
888
+ public function request($url, $args = array()) {
889
+ $defaults = array(
890
+ 'method' => 'GET', 'timeout' => 5,
891
+ 'redirection' => 5, 'httpversion' => '1.0',
892
+ 'blocking' => true,
893
+ 'headers' => array(), 'body' => null, 'cookies' => array()
894
+ );
895
+
896
+ $r = wp_parse_args( $args, $defaults );
897
+
898
+ if ( isset( $r['headers']['User-Agent'] ) ) {
899
+ $r['user-agent'] = $r['headers']['User-Agent'];
900
+ unset( $r['headers']['User-Agent'] );
901
+ } elseif ( isset( $r['headers']['user-agent'] ) ) {
902
+ $r['user-agent'] = $r['headers']['user-agent'];
903
+ unset( $r['headers']['user-agent'] );
904
+ }
905
+
906
+ // Construct Cookie: header if any cookies are set.
907
+ WP_Http::buildCookieHeader( $r );
908
+
909
+ $arrURL = parse_url($url);
910
+
911
+ $connect_host = $arrURL['host'];
912
+
913
+ $secure_transport = ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' );
914
+ if ( ! isset( $arrURL['port'] ) ) {
915
+ if ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' ) {
916
+ $arrURL['port'] = 443;
917
+ $secure_transport = true;
918
+ } else {
919
+ $arrURL['port'] = 80;
920
+ }
921
+ }
922
+
923
+ // Always pass a Path, defaulting to the root in cases such as http://example.com
924
+ if ( ! isset( $arrURL['path'] ) ) {
925
+ $arrURL['path'] = '/';
926
+ }
927
+
928
+ if ( isset( $r['headers']['Host'] ) || isset( $r['headers']['host'] ) ) {
929
+ if ( isset( $r['headers']['Host'] ) )
930
+ $arrURL['host'] = $r['headers']['Host'];
931
+ else
932
+ $arrURL['host'] = $r['headers']['host'];
933
+ unset( $r['headers']['Host'], $r['headers']['host'] );
934
+ }
935
+
936
+ /*
937
+ * Certain versions of PHP have issues with 'localhost' and IPv6, It attempts to connect
938
+ * to ::1, which fails when the server is not set up for it. For compatibility, always
939
+ * connect to the IPv4 address.
940
+ */
941
+ if ( 'localhost' == strtolower( $connect_host ) )
942
+ $connect_host = '127.0.0.1';
943
+
944
+ $connect_host = $secure_transport ? 'ssl://' . $connect_host : 'tcp://' . $connect_host;
945
+
946
+ $is_local = isset( $r['local'] ) && $r['local'];
947
+ $ssl_verify = isset( $r['sslverify'] ) && $r['sslverify'];
948
+ if ( $is_local ) {
949
+ /**
950
+ * Filter whether SSL should be verified for local requests.
951
+ *
952
+ * @since 2.8.0
953
+ *
954
+ * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
955
+ */
956
+ $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
957
+ } elseif ( ! $is_local ) {
958
+ /**
959
+ * Filter whether SSL should be verified for non-local requests.
960
+ *
961
+ * @since 2.8.0
962
+ *
963
+ * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
964
+ */
965
+ $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
966
+ }
967
+
968
+ $proxy = new WP_HTTP_Proxy();
969
+
970
+ $context = stream_context_create( array(
971
+ 'ssl' => array(
972
+ 'verify_peer' => $ssl_verify,
973
+ //'CN_match' => $arrURL['host'], // This is handled by self::verify_ssl_certificate()
974
+ 'capture_peer_cert' => $ssl_verify,
975
+ 'SNI_enabled' => true,
976
+ 'cafile' => $r['sslcertificates'],
977
+ 'allow_self_signed' => ! $ssl_verify,
978
+ )
979
+ ) );
980
+
981
+ $timeout = (int) floor( $r['timeout'] );
982
+ $utimeout = $timeout == $r['timeout'] ? 0 : 1000000 * $r['timeout'] % 1000000;
983
+ $connect_timeout = max( $timeout, 1 );
984
+
985
+ // Store error number.
986
+ $connection_error = null;
987
+
988
+ // Store error string.
989
+ $connection_error_str = null;
990
+
991
+ if ( !WP_DEBUG ) {
992
+ // In the event that the SSL connection fails, silence the many PHP Warnings.
993
+ if ( $secure_transport )
994
+ $error_reporting = error_reporting(0);
995
+
996
+ if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
997
+ $handle = @stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
998
+ else
999
+ $handle = @stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
1000
+
1001
+ if ( $secure_transport )
1002
+ error_reporting( $error_reporting );
1003
+
1004
+ } else {
1005
+ if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
1006
+ $handle = stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
1007
+ else
1008
+ $handle = stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
1009
+ }
1010
+
1011
+ if ( false === $handle ) {
1012
+ // SSL connection failed due to expired/invalid cert, or, OpenSSL configuration is broken.
1013
+ if ( $secure_transport && 0 === $connection_error && '' === $connection_error_str )
1014
+ return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
1015
+
1016
+ return new WP_Error('http_request_failed', $connection_error . ': ' . $connection_error_str );
1017
+ }
1018
+
1019
+ // Verify that the SSL certificate is valid for this request.
1020
+ if ( $secure_transport && $ssl_verify && ! $proxy->is_enabled() ) {
1021
+ if ( ! self::verify_ssl_certificate( $handle, $arrURL['host'] ) )
1022
+ return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
1023
+ }
1024
+
1025
+ stream_set_timeout( $handle, $timeout, $utimeout );
1026
+
1027
+ if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) //Some proxies require full URL in this field.
1028
+ $requestPath = $url;
1029
+ else
1030
+ $requestPath = $arrURL['path'] . ( isset($arrURL['query']) ? '?' . $arrURL['query'] : '' );
1031
+
1032
+ $strHeaders = strtoupper($r['method']) . ' ' . $requestPath . ' HTTP/' . $r['httpversion'] . "\r\n";
1033
+
1034
+ $include_port_in_host_header = (
1035
+ ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) ||
1036
+ ( 'http' == $arrURL['scheme'] && 80 != $arrURL['port'] ) ||
1037
+ ( 'https' == $arrURL['scheme'] && 443 != $arrURL['port'] )
1038
+ );
1039
+
1040
+ if ( $include_port_in_host_header ) {
1041
+ $strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n";
1042
+ } else {
1043
+ $strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n";
1044
+ }
1045
+
1046
+ if ( isset($r['user-agent']) )
1047
+ $strHeaders .= 'User-agent: ' . $r['user-agent'] . "\r\n";
1048
+
1049
+ if ( is_array($r['headers']) ) {
1050
+ foreach ( (array) $r['headers'] as $header => $headerValue )
1051
+ $strHeaders .= $header . ': ' . $headerValue . "\r\n";
1052
+ } else {
1053
+ $strHeaders .= $r['headers'];
1054
+ }
1055
+
1056
+ if ( $proxy->use_authentication() )
1057
+ $strHeaders .= $proxy->authentication_header() . "\r\n";
1058
+
1059
+ $strHeaders .= "\r\n";
1060
+
1061
+ if ( ! is_null($r['body']) )
1062
+ $strHeaders .= $r['body'];
1063
+
1064
+ fwrite($handle, $strHeaders);
1065
+
1066
+ if ( ! $r['blocking'] ) {
1067
+ stream_set_blocking( $handle, 0 );
1068
+ fclose( $handle );
1069
+ return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
1070
+ }
1071
+
1072
+ $strResponse = '';
1073
+ $bodyStarted = false;
1074
+ $keep_reading = true;
1075
+ $block_size = 4096;
1076
+ if ( isset( $r['limit_response_size'] ) )
1077
+ $block_size = min( $block_size, $r['limit_response_size'] );
1078
+
1079
+ // If streaming to a file setup the file handle.
1080
+ if ( $r['stream'] ) {
1081
+ if ( ! WP_DEBUG )
1082
+ $stream_handle = @fopen( $r['filename'], 'w+' );
1083
+ else
1084
+ $stream_handle = fopen( $r['filename'], 'w+' );
1085
+ if ( ! $stream_handle )
1086
+ return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
1087
+
1088
+ $bytes_written = 0;
1089
+ while ( ! feof($handle) && $keep_reading ) {
1090
+ $block = fread( $handle, $block_size );
1091
+ if ( ! $bodyStarted ) {
1092
+ $strResponse .= $block;
1093
+ if ( strpos( $strResponse, "\r\n\r\n" ) ) {
1094
+ $process = WP_Http::processResponse( $strResponse );
1095
+ $bodyStarted = true;
1096
+ $block = $process['body'];
1097
+ unset( $strResponse );
1098
+ $process['body'] = '';
1099
+ }
1100
+ }
1101
+
1102
+ $this_block_size = strlen( $block );
1103
+
1104
+ if ( isset( $r['limit_response_size'] ) && ( $bytes_written + $this_block_size ) > $r['limit_response_size'] ) {
1105
+ $this_block_size = ( $r['limit_response_size'] - $bytes_written );
1106
+ $block = substr( $block, 0, $this_block_size );
1107
+ }
1108
+
1109
+ $bytes_written_to_file = fwrite( $stream_handle, $block );
1110
+
1111
+ if ( $bytes_written_to_file != $this_block_size ) {
1112
+ fclose( $handle );
1113
+ fclose( $stream_handle );
1114
+ return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
1115
+ }
1116
+
1117
+ $bytes_written += $bytes_written_to_file;
1118
+
1119
+ $keep_reading = !isset( $r['limit_response_size'] ) || $bytes_written < $r['limit_response_size'];
1120
+ }
1121
+
1122
+ fclose( $stream_handle );
1123
+
1124
+ } else {
1125
+ $header_length = 0;
1126
+ while ( ! feof( $handle ) && $keep_reading ) {
1127
+ $block = fread( $handle, $block_size );
1128
+ $strResponse .= $block;
1129
+ if ( ! $bodyStarted && strpos( $strResponse, "\r\n\r\n" ) ) {
1130
+ $header_length = strpos( $strResponse, "\r\n\r\n" ) + 4;
1131
+ $bodyStarted = true;
1132
+ }
1133
+ $keep_reading = ( ! $bodyStarted || !isset( $r['limit_response_size'] ) || strlen( $strResponse ) < ( $header_length + $r['limit_response_size'] ) );
1134
+ }
1135
+
1136
+ $process = WP_Http::processResponse( $strResponse );
1137
+ unset( $strResponse );
1138
+
1139
+ }
1140
+
1141
+ fclose( $handle );
1142
+
1143
+ $arrHeaders = WP_Http::processHeaders( $process['headers'], $url );
1144
+
1145
+ $response = array(
1146
+ 'headers' => $arrHeaders['headers'],
1147
+ // Not yet processed.
1148
+ 'body' => null,
1149
+ 'response' => $arrHeaders['response'],
1150
+ 'cookies' => $arrHeaders['cookies'],
1151
+ 'filename' => $r['filename']
1152
+ );
1153
+
1154
+ // Handle redirects.
1155
+ if ( false !== ( $redirect_response = WP_HTTP::handle_redirects( $url, $r, $response ) ) )
1156
+ return $redirect_response;
1157
+
1158
+ // If the body was chunk encoded, then decode it.
1159
+ if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) && 'chunked' == $arrHeaders['headers']['transfer-encoding'] )
1160
+ $process['body'] = WP_Http::chunkTransferDecode($process['body']);
1161
+
1162
+ if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers']) )
1163
+ $process['body'] = WP_Http_Encoding::decompress( $process['body'] );
1164
+
1165
+ if ( isset( $r['limit_response_size'] ) && strlen( $process['body'] ) > $r['limit_response_size'] )
1166
+ $process['body'] = substr( $process['body'], 0, $r['limit_response_size'] );
1167
+
1168
+ $response['body'] = $process['body'];
1169
+
1170
+ return $response;
1171
+ }
1172
+
1173
+ /**
1174
+ * Verifies the received SSL certificate against it's Common Names and subjectAltName fields
1175
+ *
1176
+ * PHP's SSL verifications only verify that it's a valid Certificate, it doesn't verify if
1177
+ * the certificate is valid for the hostname which was requested.
1178
+ * This function verifies the requested hostname against certificate's subjectAltName field,
1179
+ * if that is empty, or contains no DNS entries, a fallback to the Common Name field is used.
1180
+ *
1181
+ * IP Address support is included if the request is being made to an IP address.
1182
+ *
1183
+ * @since 3.7.0
1184
+ * @static
1185
+ *
1186
+ * @param stream $stream The PHP Stream which the SSL request is being made over
1187
+ * @param string $host The hostname being requested
1188
+ * @return bool If the cerficiate presented in $stream is valid for $host
1189
+ */
1190
+ public static function verify_ssl_certificate( $stream, $host ) {
1191
+ $context_options = stream_context_get_options( $stream );
1192
+
1193
+ if ( empty( $context_options['ssl']['peer_certificate'] ) )
1194
+ return false;
1195
+
1196
+ $cert = openssl_x509_parse( $context_options['ssl']['peer_certificate'] );
1197
+ if ( ! $cert )
1198
+ return false;
1199
+
1200
+ /*
1201
+ * If the request is being made to an IP address, we'll validate against IP fields
1202
+ * in the cert (if they exist)
1203
+ */
1204
+ $host_type = ( WP_HTTP::is_ip_address( $host ) ? 'ip' : 'dns' );
1205
+
1206
+ $certificate_hostnames = array();
1207
+ if ( ! empty( $cert['extensions']['subjectAltName'] ) ) {
1208
+ $match_against = preg_split( '/,\s*/', $cert['extensions']['subjectAltName'] );
1209
+ foreach ( $match_against as $match ) {
1210
+ list( $match_type, $match_host ) = explode( ':', $match );
1211
+ if ( $host_type == strtolower( trim( $match_type ) ) ) // IP: or DNS:
1212
+ $certificate_hostnames[] = strtolower( trim( $match_host ) );
1213
+ }
1214
+ } elseif ( !empty( $cert['subject']['CN'] ) ) {
1215
+ // Only use the CN when the certificate includes no subjectAltName extension.
1216
+ $certificate_hostnames[] = strtolower( $cert['subject']['CN'] );
1217
+ }
1218
+
1219
+ // Exact hostname/IP matches.
1220
+ if ( in_array( strtolower( $host ), $certificate_hostnames ) )
1221
+ return true;
1222
+
1223
+ // IP's can't be wildcards, Stop processing.
1224
+ if ( 'ip' == $host_type )
1225
+ return false;
1226
+
1227
+ // Test to see if the domain is at least 2 deep for wildcard support.
1228
+ if ( substr_count( $host, '.' ) < 2 )
1229
+ return false;
1230
+
1231
+ // Wildcard subdomains certs (*.example.com) are valid for a.example.com but not a.b.example.com.
1232
+ $wildcard_host = preg_replace( '/^[^.]+\./', '*.', $host );
1233
+
1234
+ return in_array( strtolower( $wildcard_host ), $certificate_hostnames );
1235
+ }
1236
+
1237
+ /**
1238
+ * Whether this class can be used for retrieving a URL.
1239
+ *
1240
+ * @static
1241
+ * @access public
1242
+ * @since 2.7.0
1243
+ * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
1244
+ *
1245
+ * @return boolean False means this class can not be used, true means it can.
1246
+ */
1247
+ public static function test( $args = array() ) {
1248
+ if ( ! function_exists( 'stream_socket_client' ) )
1249
+ return false;
1250
+
1251
+ $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
1252
+
1253
+ if ( $is_ssl ) {
1254
+ if ( ! extension_loaded( 'openssl' ) )
1255
+ return false;
1256
+ if ( ! function_exists( 'openssl_x509_parse' ) )
1257
+ return false;
1258
+ }
1259
+
1260
+ /**
1261
+ * Filter whether streams can be used as a transport for retrieving a URL.
1262
+ *
1263
+ * @since 2.7.0
1264
+ *
1265
+ * @param bool $use_class Whether the class can be used. Default true.
1266
+ * @param array $args Request arguments.
1267
+ */
1268
+ return apply_filters( 'use_streams_transport', true, $args );
1269
+ }
1270
+ }
1271
+
1272
+ /**
1273
+ * Deprecated HTTP Transport method which used fsockopen.
1274
+ *
1275
+ * This class is not used, and is included for backwards compatibility only.
1276
+ * All code should make use of WP_HTTP directly through it's API.
1277
+ *
1278
+ * @see WP_HTTP::request
1279
+ *
1280
+ * @since 2.7.0
1281
+ * @deprecated 3.7.0 Please use WP_HTTP::request() directly
1282
+ */
1283
+ class WP_HTTP_Fsockopen extends WP_HTTP_Streams {
1284
+ // For backwards compatibility for users who are using the class directly.
1285
+ }
1286
+
1287
+ /**
1288
+ * HTTP request method uses Curl extension to retrieve the url.
1289
+ *
1290
+ * Requires the Curl extension to be installed.
1291
+ *
1292
+ * @package WordPress
1293
+ * @subpackage HTTP
1294
+ * @since 2.7.0
1295
+ */
1296
+ class WP_Http_Curl {
1297
+
1298
+ /**
1299
+ * Temporary header storage for during requests.
1300
+ *
1301
+ * @since 3.2.0
1302
+ * @access private
1303
+ * @var string
1304
+ */
1305
+ private $headers = '';
1306
+
1307
+ /**
1308
+ * Temporary body storage for during requests.
1309
+ *
1310
+ * @since 3.6.0
1311
+ * @access private
1312
+ * @var string
1313
+ */
1314
+ private $body = '';
1315
+
1316
+ /**
1317
+ * The maximum amount of data to receive from the remote server.
1318
+ *
1319
+ * @since 3.6.0
1320
+ * @access private
1321
+ * @var int
1322
+ */
1323
+ private $max_body_length = false;
1324
+
1325
+ /**
1326
+ * The file resource used for streaming to file.
1327
+ *
1328
+ * @since 3.6.0
1329
+ * @access private
1330
+ * @var resource
1331
+ */
1332
+ private $stream_handle = false;
1333
+
1334
+ /**
1335
+ * The total bytes written in the current request.
1336
+ *
1337
+ * @since 4.1.0
1338
+ * @access private
1339
+ * @var int
1340
+ */
1341
+ private $bytes_written_total = 0;
1342
+
1343
+ /**
1344
+ * Send a HTTP request to a URI using cURL extension.
1345
+ *
1346
+ * @access public
1347
+ * @since 2.7.0
1348
+ *
1349
+ * @param string $url The request URL.
1350
+ * @param string|array $args Optional. Override the defaults.
1351
+ * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
1352
+ */
1353
+ public function request($url, $args = array()) {
1354
+ $defaults = array(
1355
+ 'method' => 'GET', 'timeout' => 5,
1356
+ 'redirection' => 5, 'httpversion' => '1.0',
1357
+ 'blocking' => true,
1358
+ 'headers' => array(), 'body' => null, 'cookies' => array()
1359
+ );
1360
+
1361
+ $r = wp_parse_args( $args, $defaults );
1362
+
1363
+ if ( isset( $r['headers']['User-Agent'] ) ) {
1364
+ $r['user-agent'] = $r['headers']['User-Agent'];
1365
+ unset( $r['headers']['User-Agent'] );
1366
+ } elseif ( isset( $r['headers']['user-agent'] ) ) {
1367
+ $r['user-agent'] = $r['headers']['user-agent'];
1368
+ unset( $r['headers']['user-agent'] );
1369
+ }
1370
+
1371
+ // Construct Cookie: header if any cookies are set.
1372
+ WP_Http::buildCookieHeader( $r );
1373
+
1374
+ $handle = curl_init();
1375
+
1376
+ // cURL offers really easy proxy support.
1377
+ $proxy = new WP_HTTP_Proxy();
1378
+
1379
+ if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
1380
+
1381
+ curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
1382
+ curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() );
1383
+ curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() );
1384
+
1385
+ if ( $proxy->use_authentication() ) {
1386
+ curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
1387
+ curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() );
1388
+ }
1389
+ }
1390
+
1391
+ $is_local = isset($r['local']) && $r['local'];
1392
+ $ssl_verify = isset($r['sslverify']) && $r['sslverify'];
1393
+ if ( $is_local ) {
1394
+ /** This filter is documented in wp-includes/class-http.php */
1395
+ $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
1396
+ } elseif ( ! $is_local ) {
1397
+ /** This filter is documented in wp-includes/class-http.php */
1398
+ $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
1399
+ }
1400
+
1401
+ /*
1402
+ * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since.
1403
+ * a value of 0 will allow an unlimited timeout.
1404
+ */
1405
+ $timeout = (int) ceil( $r['timeout'] );
1406
+ curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
1407
+ curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );
1408
+
1409
+ curl_setopt( $handle, CURLOPT_URL, $url);
1410
+ curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
1411
+ curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false );
1412
+ curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
1413
+ curl_setopt( $handle, CURLOPT_CAINFO, $r['sslcertificates'] );
1414
+ curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
1415
+
1416
+ /*
1417
+ * The option doesn't work with safe mode or when open_basedir is set, and there's
1418
+ * a bug #17490 with redirected POST requests, so handle redirections outside Curl.
1419
+ */
1420
+ curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false );
1421
+ if ( defined( 'CURLOPT_PROTOCOLS' ) ) // PHP 5.2.10 / cURL 7.19.4
1422
+ curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
1423
+
1424
+ switch ( $r['method'] ) {
1425
+ case 'HEAD':
1426
+ curl_setopt( $handle, CURLOPT_NOBODY, true );
1427
+ break;
1428
+ case 'POST':
1429
+ curl_setopt( $handle, CURLOPT_POST, true );
1430
+ curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
1431
+ break;
1432
+ case 'PUT':
1433
+ curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' );
1434
+ curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
1435
+ break;
1436
+ default:
1437
+ curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $r['method'] );
1438
+ if ( ! is_null( $r['body'] ) )
1439
+ curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
1440
+ break;
1441
+ }
1442
+
1443
+ if ( true === $r['blocking'] ) {
1444
+ curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) );
1445
+ curl_setopt( $handle, CURLOPT_WRITEFUNCTION, array( $this, 'stream_body' ) );
1446
+ }
1447
+
1448
+ curl_setopt( $handle, CURLOPT_HEADER, false );
1449
+
1450
+ if ( isset( $r['limit_response_size'] ) )
1451
+ $this->max_body_length = intval( $r['limit_response_size'] );
1452
+ else
1453
+ $this->max_body_length = false;
1454
+
1455
+ // If streaming to a file open a file handle, and setup our curl streaming handler.
1456
+ if ( $r['stream'] ) {
1457
+ if ( ! WP_DEBUG )
1458
+ $this->stream_handle = @fopen( $r['filename'], 'w+' );
1459
+ else
1460
+ $this->stream_handle = fopen( $r['filename'], 'w+' );
1461
+ if ( ! $this->stream_handle )
1462
+ return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
1463
+ } else {
1464
+ $this->stream_handle = false;
1465
+ }
1466
+
1467
+ if ( !empty( $r['headers'] ) ) {
1468
+ // cURL expects full header strings in each element.
1469
+ $headers = array();
1470
+ foreach ( $r['headers'] as $name => $value ) {
1471
+ $headers[] = "{$name}: $value";
1472
+ }
1473
+ curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers );
1474
+ }
1475
+
1476
+ if ( $r['httpversion'] == '1.0' )
1477
+ curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
1478
+ else
1479
+ curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
1480
+
1481
+ /**
1482
+ * Fires before the cURL request is executed.
1483
+ *
1484
+ * Cookies are not currently handled by the HTTP API. This action allows
1485
+ * plugins to handle cookies themselves.
1486
+ *
1487
+ * @since 2.8.0
1488
+ *
1489
+ * @param resource &$handle The cURL handle returned by curl_init().
1490
+ * @param array $r The HTTP request arguments.
1491
+ * @param string $url The request URL.
1492
+ */
1493
+ do_action_ref_array( 'http_api_curl', array( &$handle, $r, $url ) );
1494
+
1495
+ // We don't need to return the body, so don't. Just execute request and return.
1496
+ if ( ! $r['blocking'] ) {
1497
+ curl_exec( $handle );
1498
+
1499
+ if ( $curl_error = curl_error( $handle ) ) {
1500
+ curl_close( $handle );
1501
+ return new WP_Error( 'http_request_failed', $curl_error );
1502
+ }
1503
+ if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
1504
+ curl_close( $handle );
1505
+ return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
1506
+ }
1507
+
1508
+ curl_close( $handle );
1509
+ return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
1510
+ }
1511
+
1512
+ curl_exec( $handle );
1513
+ $theHeaders = WP_Http::processHeaders( $this->headers, $url );
1514
+ $theBody = $this->body;
1515
+ $bytes_written_total = $this->bytes_written_total;
1516
+
1517
+ $this->headers = '';
1518
+ $this->body = '';
1519
+ $this->bytes_written_total = 0;
1520
+
1521
+ $curl_error = curl_errno( $handle );
1522
+
1523
+ // If an error occurred, or, no response.
1524
+ if ( $curl_error || ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) ) {
1525
+ if ( CURLE_WRITE_ERROR /* 23 */ == $curl_error ) {
1526
+ if ( ! $this->max_body_length || $this->max_body_length != $bytes_written_total ) {
1527
+ if ( $r['stream'] ) {
1528
+ curl_close( $handle );
1529
+ fclose( $this->stream_handle );
1530
+ return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
1531
+ } else {
1532
+ curl_close( $handle );
1533
+ return new WP_Error( 'http_request_failed', curl_error( $handle ) );
1534
+ }
1535
+ }
1536
+ } else {
1537
+ if ( $curl_error = curl_error( $handle ) ) {
1538
+ curl_close( $handle );
1539
+ return new WP_Error( 'http_request_failed', $curl_error );
1540
+ }
1541
+ }
1542
+ if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
1543
+ curl_close( $handle );
1544
+ return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
1545
+ }
1546
+ }
1547
+
1548
+ curl_close( $handle );
1549
+
1550
+ if ( $r['stream'] )
1551
+ fclose( $this->stream_handle );
1552
+
1553
+ $response = array(
1554
+ 'headers' => $theHeaders['headers'],
1555
+ 'body' => null,
1556
+ 'response' => $theHeaders['response'],
1557
+ 'cookies' => $theHeaders['cookies'],
1558
+ 'filename' => $r['filename']
1559
+ );
1560
+
1561
+ // Handle redirects.
1562
+ if ( false !== ( $redirect_response = WP_HTTP::handle_redirects( $url, $r, $response ) ) )
1563
+ return $redirect_response;
1564
+
1565
+ if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
1566
+ $theBody = WP_Http_Encoding::decompress( $theBody );
1567
+
1568
+ $response['body'] = $theBody;
1569
+
1570
+ return $response;
1571
+ }
1572
+
1573
+ /**
1574
+ * Grab the headers of the cURL request
1575
+ *
1576
+ * Each header is sent individually to this callback, so we append to the $header property for temporary storage
1577
+ *
1578
+ * @since 3.2.0
1579
+ * @access private
1580
+ * @return int
1581
+ */
1582
+ private function stream_headers( $handle, $headers ) {
1583
+ $this->headers .= $headers;
1584
+ return strlen( $headers );
1585
+ }
1586
+
1587
+ /**
1588
+ * Grab the body of the cURL request
1589
+ *
1590
+ * The contents of the document are passed in chunks, so we append to the $body property for temporary storage.
1591
+ * Returning a length shorter than the length of $data passed in will cause cURL to abort the request with CURLE_WRITE_ERROR
1592
+ *
1593
+ * @since 3.6.0
1594
+ * @access private
1595
+ * @return int
1596
+ */
1597
+ private function stream_body( $handle, $data ) {
1598
+ $data_length = strlen( $data );
1599
+
1600
+ if ( $this->max_body_length && ( $this->bytes_written_total + $data_length ) > $this->max_body_length ) {
1601
+ $data_length = ( $this->max_body_length - $this->bytes_written_total );
1602
+ $data = substr( $data, 0, $data_length );
1603
+ }
1604
+
1605
+ if ( $this->stream_handle ) {
1606
+ $bytes_written = fwrite( $this->stream_handle, $data );
1607
+ } else {
1608
+ $this->body .= $data;
1609
+ $bytes_written = $data_length;
1610
+ }
1611
+
1612
+ $this->bytes_written_total += $bytes_written;
1613
+
1614
+ // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR.
1615
+ return $bytes_written;
1616
+ }
1617
+
1618
+ /**
1619
+ * Whether this class can be used for retrieving an URL.
1620
+ *
1621
+ * @static
1622
+ * @since 2.7.0
1623
+ *
1624
+ * @return boolean False means this class can not be used, true means it can.
1625
+ */
1626
+ public static function test( $args = array() ) {
1627
+ if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) )
1628
+ return false;
1629
+
1630
+ $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
1631
+
1632
+ if ( $is_ssl ) {
1633
+ $curl_version = curl_version();
1634
+ // Check whether this cURL version support SSL requests.
1635
+ if ( ! (CURL_VERSION_SSL & $curl_version['features']) )
1636
+ return false;
1637
+ }
1638
+
1639
+ /**
1640
+ * Filter whether cURL can be used as a transport for retrieving a URL.
1641
+ *
1642
+ * @since 2.7.0
1643
+ *
1644
+ * @param bool $use_class Whether the class can be used. Default true.
1645
+ * @param array $args An array of request arguments.
1646
+ */
1647
+ return apply_filters( 'use_curl_transport', true, $args );
1648
+ }
1649
+ }
1650
+
1651
+ /**
1652
+ * Adds Proxy support to the WordPress HTTP API.
1653
+ *
1654
+ * There are caveats to proxy support. It requires that defines be made in the wp-config.php file to
1655
+ * enable proxy support. There are also a few filters that plugins can hook into for some of the
1656
+ * constants.
1657
+ *
1658
+ * Please note that only BASIC authentication is supported by most transports.
1659
+ * cURL MAY support more methods (such as NTLM authentication) depending on your environment.
1660
+ *
1661
+ * The constants are as follows:
1662
+ * <ol>
1663
+ * <li>WP_PROXY_HOST - Enable proxy support and host for connecting.</li>
1664
+ * <li>WP_PROXY_PORT - Proxy port for connection. No default, must be defined.</li>
1665
+ * <li>WP_PROXY_USERNAME - Proxy username, if it requires authentication.</li>
1666
+ * <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li>
1667
+ * <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy.
1668
+ * You do not need to have localhost and the blog host in this list, because they will not be passed
1669
+ * through the proxy. The list should be presented in a comma separated list, wildcards using * are supported, eg. *.wordpress.org</li>
1670
+ * </ol>
1671
+ *
1672
+ * An example can be as seen below.
1673
+ *
1674
+ * define('WP_PROXY_HOST', '192.168.84.101');
1675
+ * define('WP_PROXY_PORT', '8080');
1676
+ * define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org');
1677
+ *
1678
+ * @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress.
1679
+ * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_PROXY_BYPASS_HOSTS
1680
+ * @since 2.8.0
1681
+ */
1682
+ class WP_HTTP_Proxy {
1683
+
1684
+ /**
1685
+ * Whether proxy connection should be used.
1686
+ *
1687
+ * @since 2.8.0
1688
+ *
1689
+ * @use WP_PROXY_HOST
1690
+ * @use WP_PROXY_PORT
1691
+ *
1692
+ * @return bool
1693
+ */
1694
+ public function is_enabled() {
1695
+ return defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT');
1696
+ }
1697
+
1698
+ /**
1699
+ * Whether authentication should be used.
1700
+ *
1701
+ * @since 2.8.0
1702
+ *
1703
+ * @use WP_PROXY_USERNAME
1704
+ * @use WP_PROXY_PASSWORD
1705
+ *
1706
+ * @return bool
1707
+ */
1708
+ public function use_authentication() {
1709
+ return defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD');
1710
+ }
1711
+
1712
+ /**
1713
+ * Retrieve the host for the proxy server.
1714
+ *
1715
+ * @since 2.8.0
1716
+ *
1717
+ * @return string
1718
+ */
1719
+ public function host() {
1720
+ if ( defined('WP_PROXY_HOST') )
1721
+ return WP_PROXY_HOST;
1722
+
1723
+ return '';
1724
+ }
1725
+
1726
+ /**
1727
+ * Retrieve the port for the proxy server.
1728
+ *
1729
+ * @since 2.8.0
1730
+ *
1731
+ * @return string
1732
+ */
1733
+ public function port() {
1734
+ if ( defined('WP_PROXY_PORT') )
1735
+ return WP_PROXY_PORT;
1736
+
1737
+ return '';
1738
+ }
1739
+
1740
+ /**
1741
+ * Retrieve the username for proxy authentication.
1742
+ *
1743
+ * @since 2.8.0
1744
+ *
1745
+ * @return string
1746
+ */
1747
+ public function username() {
1748
+ if ( defined('WP_PROXY_USERNAME') )
1749
+ return WP_PROXY_USERNAME;
1750
+
1751
+ return '';
1752
+ }
1753
+
1754
+ /**
1755
+ * Retrieve the password for proxy authentication.
1756
+ *
1757
+ * @since 2.8.0
1758
+ *
1759
+ * @return string
1760
+ */
1761
+ public function password() {
1762
+ if ( defined('WP_PROXY_PASSWORD') )
1763
+ return WP_PROXY_PASSWORD;
1764
+
1765
+ return '';
1766
+ }
1767
+
1768
+ /**
1769
+ * Retrieve authentication string for proxy authentication.
1770
+ *
1771
+ * @since 2.8.0
1772
+ *
1773
+ * @return string
1774
+ */
1775
+ public function authentication() {
1776
+ return $this->username() . ':' . $this->password();
1777
+ }
1778
+
1779
+ /**
1780
+ * Retrieve header string for proxy authentication.
1781
+ *
1782
+ * @since 2.8.0
1783
+ *
1784
+ * @return string
1785
+ */
1786
+ public function authentication_header() {
1787
+ return 'Proxy-Authorization: Basic ' . base64_encode( $this->authentication() );
1788
+ }
1789
+
1790
+ /**
1791
+ * Whether URL should be sent through the proxy server.
1792
+ *
1793
+ * We want to keep localhost and the blog URL from being sent through the proxy server, because
1794
+ * some proxies can not handle this. We also have the constant available for defining other
1795
+ * hosts that won't be sent through the proxy.
1796
+ *
1797
+ * @since 2.8.0
1798
+ *
1799
+ * @param string $uri URI to check.
1800
+ * @return bool True, to send through the proxy and false if, the proxy should not be used.
1801
+ */
1802
+ public function send_through_proxy( $uri ) {
1803
+ /*
1804
+ * parse_url() only handles http, https type URLs, and will emit E_WARNING on failure.
1805
+ * This will be displayed on blogs, which is not reasonable.
1806
+ */
1807
+ $check = @parse_url($uri);
1808
+
1809
+ // Malformed URL, can not process, but this could mean ssl, so let through anyway.
1810
+ if ( $check === false )
1811
+ return true;
1812
+
1813
+ $home = parse_url( get_option('siteurl') );
1814
+
1815
+ /**
1816
+ * Filter whether to preempt sending the request through the proxy server.
1817
+ *
1818
+ * Returning false will bypass the proxy; returning true will send
1819
+ * the request through the proxy. Returning null bypasses the filter.
1820
+ *
1821
+ * @since 3.5.0
1822
+ *
1823
+ * @param null $override Whether to override the request result. Default null.
1824
+ * @param string $uri URL to check.
1825
+ * @param array $check Associative array result of parsing the URI.
1826
+ * @param array $home Associative array result of parsing the site URL.
1827
+ */
1828
+ $result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home );
1829
+ if ( ! is_null( $result ) )
1830
+ return $result;
1831
+
1832
+ if ( 'localhost' == $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) )
1833
+ return false;
1834
+
1835
+ if ( !defined('WP_PROXY_BYPASS_HOSTS') )
1836
+ return true;
1837
+
1838
+ static $bypass_hosts;
1839
+ static $wildcard_regex = false;
1840
+ if ( null == $bypass_hosts ) {
1841
+ $bypass_hosts = preg_split('|,\s*|', WP_PROXY_BYPASS_HOSTS);
1842
+
1843
+ if ( false !== strpos(WP_PROXY_BYPASS_HOSTS, '*') ) {
1844
+ $wildcard_regex = array();
1845
+ foreach ( $bypass_hosts as $host )
1846
+ $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
1847
+ $wildcard_regex = '/^(' . implode('|', $wildcard_regex) . ')$/i';
1848
+ }
1849
+ }
1850
+
1851
+ if ( !empty($wildcard_regex) )
1852
+ return !preg_match($wildcard_regex, $check['host']);
1853
+ else
1854
+ return !in_array( $check['host'], $bypass_hosts );
1855
+ }
1856
+ }
1857
+ /**
1858
+ * Internal representation of a single cookie.
1859
+ *
1860
+ * Returned cookies are represented using this class, and when cookies are set, if they are not
1861
+ * already a WP_Http_Cookie() object, then they are turned into one.
1862
+ *
1863
+ * @todo The WordPress convention is to use underscores instead of camelCase for function and method
1864
+ * names. Need to switch to use underscores instead for the methods.
1865
+ *
1866
+ * @package WordPress
1867
+ * @subpackage HTTP
1868
+ * @since 2.8.0
1869
+ */
1870
+ class WP_Http_Cookie {
1871
+
1872
+ /**
1873
+ * Cookie name.
1874
+ *
1875
+ * @since 2.8.0
1876
+ * @var string
1877
+ */
1878
+ public $name;
1879
+
1880
+ /**
1881
+ * Cookie value.
1882
+ *
1883
+ * @since 2.8.0
1884
+ * @var string
1885
+ */
1886
+ public $value;
1887
+
1888
+ /**
1889
+ * When the cookie expires.
1890
+ *
1891
+ * @since 2.8.0
1892
+ * @var string
1893
+ */
1894
+ public $expires;
1895
+
1896
+ /**
1897
+ * Cookie URL path.
1898
+ *
1899
+ * @since 2.8.0
1900
+ * @var string
1901
+ */
1902
+ public $path;
1903
+
1904
+ /**
1905
+ * Cookie Domain.
1906
+ *
1907
+ * @since 2.8.0
1908
+ * @var string
1909
+ */
1910
+ public $domain;
1911
+
1912
+ /**
1913
+ * Sets up this cookie object.
1914
+ *
1915
+ * The parameter $data should be either an associative array containing the indices names below
1916
+ * or a header string detailing it.
1917
+ *
1918
+ * @since 2.8.0
1919
+ * @access public
1920
+ *
1921
+ * @param string|array $data {
1922
+ * Raw cookie data as header string or data array.
1923
+ *
1924
+ * @type string $name Cookie name.
1925
+ * @type mixed $value Value. Should NOT already be urlencoded.
1926
+ * @type string|int $expires Optional. Unix timestamp or formatted date. Default null.
1927
+ * @type string $path Optional. Path. Default '/'.
1928
+ * @type string $domain Optional. Domain. Default host of parsed $requested_url.
1929
+ * @type int $port Optional. Port. Default null.
1930
+ * }
1931
+ * @param string $requested_url The URL which the cookie was set on, used for default $domain
1932
+ * and $port values.
1933
+ */
1934
+ public function __construct( $data, $requested_url = '' ) {
1935
+ if ( $requested_url )
1936
+ $arrURL = @parse_url( $requested_url );
1937
+ if ( isset( $arrURL['host'] ) )
1938
+ $this->domain = $arrURL['host'];
1939
+ $this->path = isset( $arrURL['path'] ) ? $arrURL['path'] : '/';
1940
+ if ( '/' != substr( $this->path, -1 ) )
1941
+ $this->path = dirname( $this->path ) . '/';
1942
+
1943
+ if ( is_string( $data ) ) {
1944
+ // Assume it's a header string direct from a previous request.
1945
+ $pairs = explode( ';', $data );
1946
+
1947
+ // Special handling for first pair; name=value. Also be careful of "=" in value.
1948
+ $name = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) );
1949
+ $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 );
1950
+ $this->name = $name;
1951
+ $this->value = urldecode( $value );
1952
+
1953
+ // Removes name=value from items.
1954
+ array_shift( $pairs );
1955
+
1956
+ // Set everything else as a property.
1957
+ foreach ( $pairs as $pair ) {
1958
+ $pair = rtrim($pair);
1959
+
1960
+ // Handle the cookie ending in ; which results in a empty final pair.
1961
+ if ( empty($pair) )
1962
+ continue;
1963
+
1964
+ list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' );
1965
+ $key = strtolower( trim( $key ) );
1966
+ if ( 'expires' == $key )
1967
+ $val = strtotime( $val );
1968
+ $this->$key = $val;
1969
+ }
1970
+ } else {
1971
+ if ( !isset( $data['name'] ) )
1972
+ return;
1973
+
1974
+ // Set properties based directly on parameters.
1975
+ foreach ( array( 'name', 'value', 'path', 'domain', 'port' ) as $field ) {
1976
+ if ( isset( $data[ $field ] ) )
1977
+ $this->$field = $data[ $field ];
1978
+ }
1979
+
1980
+ if ( isset( $data['expires'] ) )
1981
+ $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] );
1982
+ else
1983
+ $this->expires = null;
1984
+ }
1985
+ }
1986
+
1987
+ /**
1988
+ * Confirms that it's OK to send this cookie to the URL checked against.
1989
+ *
1990
+ * Decision is based on RFC 2109/2965, so look there for details on validity.
1991
+ *
1992
+ * @access public
1993
+ * @since 2.8.0
1994
+ *
1995
+ * @param string $url URL you intend to send this cookie to
1996
+ * @return boolean true if allowed, false otherwise.
1997
+ */
1998
+ public function test( $url ) {
1999
+ if ( is_null( $this->name ) )
2000
+ return false;
2001
+
2002
+ // Expires - if expired then nothing else matters.
2003
+ if ( isset( $this->expires ) && time() > $this->expires )
2004
+ return false;
2005
+
2006
+ // Get details on the URL we're thinking about sending to.
2007
+ $url = parse_url( $url );
2008
+ $url['port'] = isset( $url['port'] ) ? $url['port'] : ( 'https' == $url['scheme'] ? 443 : 80 );
2009
+ $url['path'] = isset( $url['path'] ) ? $url['path'] : '/';
2010
+
2011
+ // Values to use for comparison against the URL.
2012
+ $path = isset( $this->path ) ? $this->path : '/';
2013
+ $port = isset( $this->port ) ? $this->port : null;
2014
+ $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] );
2015
+ if ( false === stripos( $domain, '.' ) )
2016
+ $domain .= '.local';
2017
+
2018
+ // Host - very basic check that the request URL ends with the domain restriction (minus leading dot).
2019
+ $domain = substr( $domain, 0, 1 ) == '.' ? substr( $domain, 1 ) : $domain;
2020
+ if ( substr( $url['host'], -strlen( $domain ) ) != $domain )
2021
+ return false;
2022
+
2023
+ // Port - supports "port-lists" in the format: "80,8000,8080".
2024
+ if ( !empty( $port ) && !in_array( $url['port'], explode( ',', $port) ) )
2025
+ return false;
2026
+
2027
+ // Path - request path must start with path restriction.
2028
+ if ( substr( $url['path'], 0, strlen( $path ) ) != $path )
2029
+ return false;
2030
+
2031
+ return true;
2032
+ }
2033
+
2034
+ /**
2035
+ * Convert cookie name and value back to header string.
2036
+ *
2037
+ * @access public
2038
+ * @since 2.8.0
2039
+ *
2040
+ * @return string Header encoded cookie name and value.
2041
+ */
2042
+ public function getHeaderValue() {
2043
+ if ( ! isset( $this->name ) || ! isset( $this->value ) )
2044
+ return '';
2045
+
2046
+ /**
2047
+ * Filter the header-encoded cookie value.
2048
+ *
2049
+ * @since 3.4.0
2050
+ *
2051
+ * @param string $value The cookie value.
2052
+ * @param string $name The cookie name.
2053
+ */
2054
+ return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name );
2055
+ }
2056
+
2057
+ /**
2058
+ * Retrieve cookie header for usage in the rest of the WordPress HTTP API.
2059
+ *
2060
+ * @access public
2061
+ * @since 2.8.0
2062
+ *
2063
+ * @return string
2064
+ */
2065
+ public function getFullHeader() {
2066
+ return 'Cookie: ' . $this->getHeaderValue();
2067
+ }
2068
+ }
2069
+
2070
+ /**
2071
+ * Implementation for deflate and gzip transfer encodings.
2072
+ *
2073
+ * Includes RFC 1950, RFC 1951, and RFC 1952.
2074
+ *
2075
+ * @since 2.8.0
2076
+ * @package WordPress
2077
+ * @subpackage HTTP
2078
+ */
2079
+ class WP_Http_Encoding {
2080
+
2081
+ /**
2082
+ * Compress raw string using the deflate format.
2083
+ *
2084
+ * Supports the RFC 1951 standard.
2085
+ *
2086
+ * @since 2.8.0
2087
+ *
2088
+ * @param string $raw String to compress.
2089
+ * @param int $level Optional, default is 9. Compression level, 9 is highest.
2090
+ * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports.
2091
+ * @return string|false False on failure.
2092
+ */
2093
+ public static function compress( $raw, $level = 9, $supports = null ) {
2094
+ return gzdeflate( $raw, $level );
2095
+ }
2096
+
2097
+ /**
2098
+ * Decompression of deflated string.
2099
+ *
2100
+ * Will attempt to decompress using the RFC 1950 standard, and if that fails
2101
+ * then the RFC 1951 standard deflate will be attempted. Finally, the RFC
2102
+ * 1952 standard gzip decode will be attempted. If all fail, then the
2103
+ * original compressed string will be returned.
2104
+ *
2105
+ * @since 2.8.0
2106
+ *
2107
+ * @param string $compressed String to decompress.
2108
+ * @param int $length The optional length of the compressed data.
2109
+ * @return string|bool False on failure.
2110
+ */
2111
+ public static function decompress( $compressed, $length = null ) {
2112
+
2113
+ if ( empty($compressed) )
2114
+ return $compressed;
2115
+
2116
+ if ( false !== ( $decompressed = @gzinflate( $compressed ) ) )
2117
+ return $decompressed;
2118
+
2119
+ if ( false !== ( $decompressed = self::compatible_gzinflate( $compressed ) ) )
2120
+ return $decompressed;
2121
+
2122
+ if ( false !== ( $decompressed = @gzuncompress( $compressed ) ) )
2123
+ return $decompressed;
2124
+
2125
+ if ( function_exists('gzdecode') ) {
2126
+ $decompressed = @gzdecode( $compressed );
2127
+
2128
+ if ( false !== $decompressed )
2129
+ return $decompressed;
2130
+ }
2131
+
2132
+ return $compressed;
2133
+ }
2134
+
2135
+ /**
2136
+ * Decompression of deflated string while staying compatible with the majority of servers.
2137
+ *
2138
+ * Certain Servers will return deflated data with headers which PHP's gzinflate()
2139
+ * function cannot handle out of the box. The following function has been created from
2140
+ * various snippets on the gzinflate() PHP documentation.
2141
+ *
2142
+ * Warning: Magic numbers within. Due to the potential different formats that the compressed
2143
+ * data may be returned in, some "magic offsets" are needed to ensure proper decompression
2144
+ * takes place. For a simple progmatic way to determine the magic offset in use, see:
2145
+ * https://core.trac.wordpress.org/ticket/18273
2146
+ *
2147
+ * @since 2.8.1
2148
+ * @link https://core.trac.wordpress.org/ticket/18273
2149
+ * @link http://au2.php.net/manual/en/function.gzinflate.php#70875
2150
+ * @link http://au2.php.net/manual/en/function.gzinflate.php#77336
2151
+ *
2152
+ * @param string $gzData String to decompress.
2153
+ * @return string|bool False on failure.
2154
+ */
2155
+ public static function compatible_gzinflate($gzData) {
2156
+
2157
+ // Compressed data might contain a full header, if so strip it for gzinflate().
2158
+ if ( substr($gzData, 0, 3) == "\x1f\x8b\x08" ) {
2159
+ $i = 10;
2160
+ $flg = ord( substr($gzData, 3, 1) );
2161
+ if ( $flg > 0 ) {
2162
+ if ( $flg & 4 ) {
2163
+ list($xlen) = unpack('v', substr($gzData, $i, 2) );
2164
+ $i = $i + 2 + $xlen;
2165
+ }
2166
+ if ( $flg & 8 )
2167
+ $i = strpos($gzData, "\0", $i) + 1;
2168
+ if ( $flg & 16 )
2169
+ $i = strpos($gzData, "\0", $i) + 1;
2170
+ if ( $flg & 2 )
2171
+ $i = $i + 2;
2172
+ }
2173
+ $decompressed = @gzinflate( substr($gzData, $i, -8) );
2174
+ if ( false !== $decompressed )
2175
+ return $decompressed;
2176
+ }
2177
+
2178
+ // Compressed data from java.util.zip.Deflater amongst others.
2179
+ $decompressed = @gzinflate( substr($gzData, 2) );
2180
+ if ( false !== $decompressed )
2181
+ return $decompressed;
2182
+
2183
+ return false;
2184
+ }
2185
+
2186
+ /**
2187
+ * What encoding types to accept and their priority values.
2188
+ *
2189
+ * @since 2.8.0
2190
+ *
2191
+ * @param string $url
2192
+ * @param array $args
2193
+ * @return string Types of encoding to accept.
2194
+ */
2195
+ public static function accept_encoding( $url, $args ) {
2196
+ $type = array();
2197
+ $compression_enabled = self::is_available();
2198
+
2199
+ if ( ! $args['decompress'] ) // Decompression specifically disabled.
2200
+ $compression_enabled = false;
2201
+ elseif ( $args['stream'] ) // Disable when streaming to file.
2202
+ $compression_enabled = false;
2203
+ elseif ( isset( $args['limit_response_size'] ) ) // If only partial content is being requested, we won't be able to decompress it.
2204
+ $compression_enabled = false;
2205
+
2206
+ if ( $compression_enabled ) {
2207
+ if ( function_exists( 'gzinflate' ) )
2208
+ $type[] = 'deflate;q=1.0';
2209
+
2210
+ if ( function_exists( 'gzuncompress' ) )
2211
+ $type[] = 'compress;q=0.5';
2212
+
2213
+ if ( function_exists( 'gzdecode' ) )
2214
+ $type[] = 'gzip;q=0.5';
2215
+ }
2216
+
2217
+ /**
2218
+ * Filter the allowed encoding types.
2219
+ *
2220
+ * @since 3.6.0
2221
+ *
2222
+ * @param array $type Encoding types allowed. Accepts 'gzinflate',
2223
+ * 'gzuncompress', 'gzdecode'.
2224
+ * @param string $url URL of the HTTP request.
2225
+ * @param array $args HTTP request arguments.
2226
+ */
2227
+ $type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args );
2228
+
2229
+ return implode(', ', $type);
2230
+ }
2231
+
2232
+ /**
2233
+ * What encoding the content used when it was compressed to send in the headers.
2234
+ *
2235
+ * @since 2.8.0
2236
+ *
2237
+ * @return string Content-Encoding string to send in the header.
2238
+ */
2239
+ public static function content_encoding() {
2240
+ return 'deflate';
2241
+ }
2242
+
2243
+ /**
2244
+ * Whether the content be decoded based on the headers.
2245
+ *
2246
+ * @since 2.8.0
2247
+ *
2248
+ * @param array|string $headers All of the available headers.
2249
+ * @return bool
2250
+ */
2251
+ public static function should_decode($headers) {
2252
+ if ( is_array( $headers ) ) {
2253
+ if ( array_key_exists('content-encoding', $headers) && ! empty( $headers['content-encoding'] ) )
2254
+ return true;
2255
+ } elseif ( is_string( $headers ) ) {
2256
+ return ( stripos($headers, 'content-encoding:') !== false );
2257
+ }
2258
+
2259
+ return false;
2260
+ }
2261
+
2262
+ /**
2263
+ * Whether decompression and compression are supported by the PHP version.
2264
+ *
2265
+ * Each function is tested instead of checking for the zlib extension, to
2266
+ * ensure that the functions all exist in the PHP version and aren't
2267
+ * disabled.
2268
+ *
2269
+ * @since 2.8.0
2270
+ *
2271
+ * @return bool
2272
+ */
2273
+ public static function is_available() {
2274
+ return ( function_exists('gzuncompress') || function_exists('gzdeflate') || function_exists('gzinflate') );
2275
+ }
2276
+ }