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,43 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+
3
+ <manifest xmlns="http://schemas.microsoft.com/wlw/manifest/weblog">
4
+
5
+ <options>
6
+ <clientType>WordPress</clientType>
7
+ <supportsKeywords>Yes</supportsKeywords>
8
+ <supportsGetTags>Yes</supportsGetTags>
9
+ </options>
10
+
11
+ <weblog>
12
+ <serviceName>WordPress</serviceName>
13
+ <imageUrl>images/wlw/wp-icon.png</imageUrl>
14
+ <watermarkImageUrl>images/wlw/wp-watermark.png</watermarkImageUrl>
15
+ <homepageLinkText>View site</homepageLinkText>
16
+ <adminLinkText>Dashboard</adminLinkText>
17
+ <adminUrl>
18
+ <![CDATA[
19
+ {blog-postapi-url}/../wp-admin/
20
+ ]]>
21
+ </adminUrl>
22
+ <postEditingUrl>
23
+ <![CDATA[
24
+ {blog-postapi-url}/../wp-admin/post.php?action=edit&post={post-id}
25
+ ]]>
26
+ </postEditingUrl>
27
+ </weblog>
28
+
29
+ <buttons>
30
+ <button>
31
+ <id>0</id>
32
+ <text>Manage Comments</text>
33
+ <imageUrl>images/wlw/wp-comments.png</imageUrl>
34
+ <clickUrl>
35
+ <![CDATA[
36
+ {blog-postapi-url}/../wp-admin/edit-comments.php
37
+ ]]>
38
+ </clickUrl>
39
+ </button>
40
+
41
+ </buttons>
42
+
43
+ </manifest>
@@ -0,0 +1,2949 @@
1
+ <?php
2
+ /**
3
+ * WordPress DB Class
4
+ *
5
+ * Original code from {@link http://php.justinvincent.com Justin Vincent (justin@visunet.ie)}
6
+ *
7
+ * @package WordPress
8
+ * @subpackage Database
9
+ * @since 0.71
10
+ */
11
+
12
+ /**
13
+ * @since 0.71
14
+ */
15
+ define( 'EZSQL_VERSION', 'WP1.25' );
16
+
17
+ /**
18
+ * @since 0.71
19
+ */
20
+ define( 'OBJECT', 'OBJECT' );
21
+ define( 'object', 'OBJECT' ); // Back compat.
22
+
23
+ /**
24
+ * @since 2.5.0
25
+ */
26
+ define( 'OBJECT_K', 'OBJECT_K' );
27
+
28
+ /**
29
+ * @since 0.71
30
+ */
31
+ define( 'ARRAY_A', 'ARRAY_A' );
32
+
33
+ /**
34
+ * @since 0.71
35
+ */
36
+ define( 'ARRAY_N', 'ARRAY_N' );
37
+
38
+ /**
39
+ * WordPress Database Access Abstraction Object
40
+ *
41
+ * It is possible to replace this class with your own
42
+ * by setting the $wpdb global variable in wp-content/db.php
43
+ * file to your class. The wpdb class will still be included,
44
+ * so you can extend it or simply use your own.
45
+ *
46
+ * @link https://codex.wordpress.org/Function_Reference/wpdb_Class
47
+ *
48
+ * @package WordPress
49
+ * @subpackage Database
50
+ * @since 0.71
51
+ */
52
+ class wpdb {
53
+
54
+ /**
55
+ * Whether to show SQL/DB errors.
56
+ *
57
+ * Default behavior is to show errors if both WP_DEBUG and WP_DEBUG_DISPLAY
58
+ * evaluated to true.
59
+ *
60
+ * @since 0.71
61
+ * @access private
62
+ * @var bool
63
+ */
64
+ var $show_errors = false;
65
+
66
+ /**
67
+ * Whether to suppress errors during the DB bootstrapping.
68
+ *
69
+ * @access private
70
+ * @since 2.5.0
71
+ * @var bool
72
+ */
73
+ var $suppress_errors = false;
74
+
75
+ /**
76
+ * The last error during query.
77
+ *
78
+ * @since 2.5.0
79
+ * @var string
80
+ */
81
+ public $last_error = '';
82
+
83
+ /**
84
+ * Amount of queries made
85
+ *
86
+ * @since 1.2.0
87
+ * @access private
88
+ * @var int
89
+ */
90
+ var $num_queries = 0;
91
+
92
+ /**
93
+ * Count of rows returned by previous query
94
+ *
95
+ * @since 0.71
96
+ * @access private
97
+ * @var int
98
+ */
99
+ var $num_rows = 0;
100
+
101
+ /**
102
+ * Count of affected rows by previous query
103
+ *
104
+ * @since 0.71
105
+ * @access private
106
+ * @var int
107
+ */
108
+ var $rows_affected = 0;
109
+
110
+ /**
111
+ * The ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT).
112
+ *
113
+ * @since 0.71
114
+ * @access public
115
+ * @var int
116
+ */
117
+ var $insert_id = 0;
118
+
119
+ /**
120
+ * Last query made
121
+ *
122
+ * @since 0.71
123
+ * @access private
124
+ * @var array
125
+ */
126
+ var $last_query;
127
+
128
+ /**
129
+ * Results of the last query made
130
+ *
131
+ * @since 0.71
132
+ * @access private
133
+ * @var array|null
134
+ */
135
+ var $last_result;
136
+
137
+ /**
138
+ * MySQL result, which is either a resource or boolean.
139
+ *
140
+ * @since 0.71
141
+ * @access protected
142
+ * @var mixed
143
+ */
144
+ protected $result;
145
+
146
+ /**
147
+ * Cached column info, for sanity checking data before inserting
148
+ *
149
+ * @since 4.2.0
150
+ * @access protected
151
+ * @var array
152
+ */
153
+ protected $col_meta = array();
154
+
155
+ /**
156
+ * Calculated character sets on tables
157
+ *
158
+ * @since 4.2.0
159
+ * @access protected
160
+ * @var array
161
+ */
162
+ protected $table_charset = array();
163
+
164
+ /**
165
+ * Whether text fields in the current query need to be sanity checked.
166
+ *
167
+ * @since 4.2.0
168
+ * @access protected
169
+ * @var bool
170
+ */
171
+ protected $check_current_query = true;
172
+
173
+ /**
174
+ * Flag to ensure we don't run into recursion problems when checking the collation.
175
+ *
176
+ * @since 4.2.0
177
+ * @access private
178
+ * @see wpdb::check_safe_collation()
179
+ * @var boolean
180
+ */
181
+ private $checking_collation = false;
182
+
183
+ /**
184
+ * Saved info on the table column
185
+ *
186
+ * @since 0.71
187
+ * @access protected
188
+ * @var array
189
+ */
190
+ protected $col_info;
191
+
192
+ /**
193
+ * Saved queries that were executed
194
+ *
195
+ * @since 1.5.0
196
+ * @access private
197
+ * @var array
198
+ */
199
+ var $queries;
200
+
201
+ /**
202
+ * The number of times to retry reconnecting before dying.
203
+ *
204
+ * @since 3.9.0
205
+ * @access protected
206
+ * @see wpdb::check_connection()
207
+ * @var int
208
+ */
209
+ protected $reconnect_retries = 5;
210
+
211
+ /**
212
+ * WordPress table prefix
213
+ *
214
+ * You can set this to have multiple WordPress installations
215
+ * in a single database. The second reason is for possible
216
+ * security precautions.
217
+ *
218
+ * @since 2.5.0
219
+ * @access private
220
+ * @var string
221
+ */
222
+ var $prefix = '';
223
+
224
+ /**
225
+ * WordPress base table prefix.
226
+ *
227
+ * @since 3.0.0
228
+ * @access public
229
+ * @var string
230
+ */
231
+ public $base_prefix;
232
+
233
+ /**
234
+ * Whether the database queries are ready to start executing.
235
+ *
236
+ * @since 2.3.2
237
+ * @access private
238
+ * @var bool
239
+ */
240
+ var $ready = false;
241
+
242
+ /**
243
+ * Blog ID.
244
+ *
245
+ * @since 3.0.0
246
+ * @access public
247
+ * @var int
248
+ */
249
+ public $blogid = 0;
250
+
251
+ /**
252
+ * Site ID.
253
+ *
254
+ * @since 3.0.0
255
+ * @access public
256
+ * @var int
257
+ */
258
+ public $siteid = 0;
259
+
260
+ /**
261
+ * List of WordPress per-blog tables
262
+ *
263
+ * @since 2.5.0
264
+ * @access private
265
+ * @see wpdb::tables()
266
+ * @var array
267
+ */
268
+ var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
269
+ 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' );
270
+
271
+ /**
272
+ * List of deprecated WordPress tables
273
+ *
274
+ * categories, post2cat, and link2cat were deprecated in 2.3.0, db version 5539
275
+ *
276
+ * @since 2.9.0
277
+ * @access private
278
+ * @see wpdb::tables()
279
+ * @var array
280
+ */
281
+ var $old_tables = array( 'categories', 'post2cat', 'link2cat' );
282
+
283
+ /**
284
+ * List of WordPress global tables
285
+ *
286
+ * @since 3.0.0
287
+ * @access private
288
+ * @see wpdb::tables()
289
+ * @var array
290
+ */
291
+ var $global_tables = array( 'users', 'usermeta' );
292
+
293
+ /**
294
+ * List of Multisite global tables
295
+ *
296
+ * @since 3.0.0
297
+ * @access private
298
+ * @see wpdb::tables()
299
+ * @var array
300
+ */
301
+ var $ms_global_tables = array( 'blogs', 'signups', 'site', 'sitemeta',
302
+ 'sitecategories', 'registration_log', 'blog_versions' );
303
+
304
+ /**
305
+ * WordPress Comments table
306
+ *
307
+ * @since 1.5.0
308
+ * @access public
309
+ * @var string
310
+ */
311
+ public $comments;
312
+
313
+ /**
314
+ * WordPress Comment Metadata table
315
+ *
316
+ * @since 2.9.0
317
+ * @access public
318
+ * @var string
319
+ */
320
+ public $commentmeta;
321
+
322
+ /**
323
+ * WordPress Links table
324
+ *
325
+ * @since 1.5.0
326
+ * @access public
327
+ * @var string
328
+ */
329
+ public $links;
330
+
331
+ /**
332
+ * WordPress Options table
333
+ *
334
+ * @since 1.5.0
335
+ * @access public
336
+ * @var string
337
+ */
338
+ public $options;
339
+
340
+ /**
341
+ * WordPress Post Metadata table
342
+ *
343
+ * @since 1.5.0
344
+ * @access public
345
+ * @var string
346
+ */
347
+ public $postmeta;
348
+
349
+ /**
350
+ * WordPress Posts table
351
+ *
352
+ * @since 1.5.0
353
+ * @access public
354
+ * @var string
355
+ */
356
+ public $posts;
357
+
358
+ /**
359
+ * WordPress Terms table
360
+ *
361
+ * @since 2.3.0
362
+ * @access public
363
+ * @var string
364
+ */
365
+ public $terms;
366
+
367
+ /**
368
+ * WordPress Term Relationships table
369
+ *
370
+ * @since 2.3.0
371
+ * @access public
372
+ * @var string
373
+ */
374
+ public $term_relationships;
375
+
376
+ /**
377
+ * WordPress Term Taxonomy table
378
+ *
379
+ * @since 2.3.0
380
+ * @access public
381
+ * @var string
382
+ */
383
+ public $term_taxonomy;
384
+
385
+ /*
386
+ * Global and Multisite tables
387
+ */
388
+
389
+ /**
390
+ * WordPress User Metadata table
391
+ *
392
+ * @since 2.3.0
393
+ * @access public
394
+ * @var string
395
+ */
396
+ public $usermeta;
397
+
398
+ /**
399
+ * WordPress Users table
400
+ *
401
+ * @since 1.5.0
402
+ * @access public
403
+ * @var string
404
+ */
405
+ public $users;
406
+
407
+ /**
408
+ * Multisite Blogs table
409
+ *
410
+ * @since 3.0.0
411
+ * @access public
412
+ * @var string
413
+ */
414
+ public $blogs;
415
+
416
+ /**
417
+ * Multisite Blog Versions table
418
+ *
419
+ * @since 3.0.0
420
+ * @access public
421
+ * @var string
422
+ */
423
+ public $blog_versions;
424
+
425
+ /**
426
+ * Multisite Registration Log table
427
+ *
428
+ * @since 3.0.0
429
+ * @access public
430
+ * @var string
431
+ */
432
+ public $registration_log;
433
+
434
+ /**
435
+ * Multisite Signups table
436
+ *
437
+ * @since 3.0.0
438
+ * @access public
439
+ * @var string
440
+ */
441
+ public $signups;
442
+
443
+ /**
444
+ * Multisite Sites table
445
+ *
446
+ * @since 3.0.0
447
+ * @access public
448
+ * @var string
449
+ */
450
+ public $site;
451
+
452
+ /**
453
+ * Multisite Sitewide Terms table
454
+ *
455
+ * @since 3.0.0
456
+ * @access public
457
+ * @var string
458
+ */
459
+ public $sitecategories;
460
+
461
+ /**
462
+ * Multisite Site Metadata table
463
+ *
464
+ * @since 3.0.0
465
+ * @access public
466
+ * @var string
467
+ */
468
+ public $sitemeta;
469
+
470
+ /**
471
+ * Format specifiers for DB columns. Columns not listed here default to %s. Initialized during WP load.
472
+ *
473
+ * Keys are column names, values are format types: 'ID' => '%d'
474
+ *
475
+ * @since 2.8.0
476
+ * @see wpdb::prepare()
477
+ * @see wpdb::insert()
478
+ * @see wpdb::update()
479
+ * @see wpdb::delete()
480
+ * @see wp_set_wpdb_vars()
481
+ * @access public
482
+ * @var array
483
+ */
484
+ public $field_types = array();
485
+
486
+ /**
487
+ * Database table columns charset
488
+ *
489
+ * @since 2.2.0
490
+ * @access public
491
+ * @var string
492
+ */
493
+ public $charset;
494
+
495
+ /**
496
+ * Database table columns collate
497
+ *
498
+ * @since 2.2.0
499
+ * @access public
500
+ * @var string
501
+ */
502
+ public $collate;
503
+
504
+ /**
505
+ * Database Username
506
+ *
507
+ * @since 2.9.0
508
+ * @access protected
509
+ * @var string
510
+ */
511
+ protected $dbuser;
512
+
513
+ /**
514
+ * Database Password
515
+ *
516
+ * @since 3.1.0
517
+ * @access protected
518
+ * @var string
519
+ */
520
+ protected $dbpassword;
521
+
522
+ /**
523
+ * Database Name
524
+ *
525
+ * @since 3.1.0
526
+ * @access protected
527
+ * @var string
528
+ */
529
+ protected $dbname;
530
+
531
+ /**
532
+ * Database Host
533
+ *
534
+ * @since 3.1.0
535
+ * @access protected
536
+ * @var string
537
+ */
538
+ protected $dbhost;
539
+
540
+ /**
541
+ * Database Handle
542
+ *
543
+ * @since 0.71
544
+ * @access protected
545
+ * @var string
546
+ */
547
+ protected $dbh;
548
+
549
+ /**
550
+ * A textual description of the last query/get_row/get_var call
551
+ *
552
+ * @since 3.0.0
553
+ * @access public
554
+ * @var string
555
+ */
556
+ public $func_call;
557
+
558
+ /**
559
+ * Whether MySQL is used as the database engine.
560
+ *
561
+ * Set in WPDB::db_connect() to true, by default. This is used when checking
562
+ * against the required MySQL version for WordPress. Normally, a replacement
563
+ * database drop-in (db.php) will skip these checks, but setting this to true
564
+ * will force the checks to occur.
565
+ *
566
+ * @since 3.3.0
567
+ * @access public
568
+ * @var bool
569
+ */
570
+ public $is_mysql = null;
571
+
572
+ /**
573
+ * A list of incompatible SQL modes.
574
+ *
575
+ * @since 3.9.0
576
+ * @access protected
577
+ * @var array
578
+ */
579
+ protected $incompatible_modes = array( 'NO_ZERO_DATE', 'ONLY_FULL_GROUP_BY',
580
+ 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'TRADITIONAL' );
581
+
582
+ /**
583
+ * Whether to use mysqli over mysql.
584
+ *
585
+ * @since 3.9.0
586
+ * @access private
587
+ * @var bool
588
+ */
589
+ private $use_mysqli = false;
590
+
591
+ /**
592
+ * Whether we've managed to successfully connect at some point
593
+ *
594
+ * @since 3.9.0
595
+ * @access private
596
+ * @var bool
597
+ */
598
+ private $has_connected = false;
599
+
600
+ /**
601
+ * Connects to the database server and selects a database
602
+ *
603
+ * PHP5 style constructor for compatibility with PHP5. Does
604
+ * the actual setting up of the class properties and connection
605
+ * to the database.
606
+ *
607
+ * @link https://core.trac.wordpress.org/ticket/3354
608
+ * @since 2.0.8
609
+ *
610
+ * @param string $dbuser MySQL database user
611
+ * @param string $dbpassword MySQL database password
612
+ * @param string $dbname MySQL database name
613
+ * @param string $dbhost MySQL database host
614
+ */
615
+ public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {
616
+ register_shutdown_function( array( $this, '__destruct' ) );
617
+
618
+ if ( WP_DEBUG && WP_DEBUG_DISPLAY )
619
+ $this->show_errors();
620
+
621
+ /* Use ext/mysqli if it exists and:
622
+ * - WP_USE_EXT_MYSQL is defined as false, or
623
+ * - We are a development version of WordPress, or
624
+ * - We are running PHP 5.5 or greater, or
625
+ * - ext/mysql is not loaded.
626
+ */
627
+ if ( function_exists( 'mysqli_connect' ) ) {
628
+ if ( defined( 'WP_USE_EXT_MYSQL' ) ) {
629
+ $this->use_mysqli = ! WP_USE_EXT_MYSQL;
630
+ } elseif ( version_compare( phpversion(), '5.5', '>=' ) || ! function_exists( 'mysql_connect' ) ) {
631
+ $this->use_mysqli = true;
632
+ } elseif ( false !== strpos( $GLOBALS['wp_version'], '-' ) ) {
633
+ $this->use_mysqli = true;
634
+ }
635
+ }
636
+
637
+ $this->dbuser = $dbuser;
638
+ $this->dbpassword = $dbpassword;
639
+ $this->dbname = $dbname;
640
+ $this->dbhost = $dbhost;
641
+
642
+ // wp-config.php creation will manually connect when ready.
643
+ if ( defined( 'WP_SETUP_CONFIG' ) ) {
644
+ return;
645
+ }
646
+
647
+ $this->db_connect();
648
+ }
649
+
650
+ /**
651
+ * PHP5 style destructor and will run when database object is destroyed.
652
+ *
653
+ * @see wpdb::__construct()
654
+ * @since 2.0.8
655
+ * @return bool true
656
+ */
657
+ public function __destruct() {
658
+ return true;
659
+ }
660
+
661
+ /**
662
+ * PHP5 style magic getter, used to lazy-load expensive data.
663
+ *
664
+ * @since 3.5.0
665
+ *
666
+ * @param string $name The private member to get, and optionally process
667
+ * @return mixed The private member
668
+ */
669
+ public function __get( $name ) {
670
+ if ( 'col_info' === $name )
671
+ $this->load_col_info();
672
+
673
+ return $this->$name;
674
+ }
675
+
676
+ /**
677
+ * Magic function, for backwards compatibility.
678
+ *
679
+ * @since 3.5.0
680
+ *
681
+ * @param string $name The private member to set
682
+ * @param mixed $value The value to set
683
+ */
684
+ public function __set( $name, $value ) {
685
+ $protected_members = array(
686
+ 'col_meta',
687
+ 'table_charset',
688
+ 'check_current_query',
689
+ );
690
+ if ( in_array( $name, $protected_members, true ) ) {
691
+ return;
692
+ }
693
+ $this->$name = $value;
694
+ }
695
+
696
+ /**
697
+ * Magic function, for backwards compatibility.
698
+ *
699
+ * @since 3.5.0
700
+ *
701
+ * @param string $name The private member to check
702
+ *
703
+ * @return bool If the member is set or not
704
+ */
705
+ public function __isset( $name ) {
706
+ return isset( $this->$name );
707
+ }
708
+
709
+ /**
710
+ * Magic function, for backwards compatibility.
711
+ *
712
+ * @since 3.5.0
713
+ *
714
+ * @param string $name The private member to unset
715
+ */
716
+ public function __unset( $name ) {
717
+ unset( $this->$name );
718
+ }
719
+
720
+ /**
721
+ * Set $this->charset and $this->collate
722
+ *
723
+ * @since 3.1.0
724
+ */
725
+ public function init_charset() {
726
+ if ( function_exists('is_multisite') && is_multisite() ) {
727
+ $this->charset = 'utf8';
728
+ if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) {
729
+ $this->collate = DB_COLLATE;
730
+ } else {
731
+ $this->collate = 'utf8_general_ci';
732
+ }
733
+ } elseif ( defined( 'DB_COLLATE' ) ) {
734
+ $this->collate = DB_COLLATE;
735
+ }
736
+
737
+ if ( defined( 'DB_CHARSET' ) ) {
738
+ $this->charset = DB_CHARSET;
739
+ }
740
+
741
+ if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) )
742
+ || ( empty( $this->dbh ) || ! ( $this->dbh instanceof mysqli ) ) ) {
743
+ return;
744
+ }
745
+
746
+ if ( 'utf8' === $this->charset && $this->has_cap( 'utf8mb4' ) ) {
747
+ $this->charset = 'utf8mb4';
748
+ }
749
+
750
+ if ( 'utf8mb4' === $this->charset && ( ! $this->collate || stripos( $this->collate, 'utf8_' ) === 0 ) ) {
751
+ $this->collate = 'utf8mb4_unicode_ci';
752
+ }
753
+ }
754
+
755
+ /**
756
+ * Sets the connection's character set.
757
+ *
758
+ * @since 3.1.0
759
+ *
760
+ * @param resource $dbh The resource given by mysql_connect
761
+ * @param string $charset Optional. The character set. Default null.
762
+ * @param string $collate Optional. The collation. Default null.
763
+ */
764
+ public function set_charset( $dbh, $charset = null, $collate = null ) {
765
+ if ( ! isset( $charset ) )
766
+ $charset = $this->charset;
767
+ if ( ! isset( $collate ) )
768
+ $collate = $this->collate;
769
+ if ( $this->has_cap( 'collation' ) && ! empty( $charset ) ) {
770
+ if ( $this->use_mysqli ) {
771
+ if ( function_exists( 'mysqli_set_charset' ) && $this->has_cap( 'set_charset' ) ) {
772
+ mysqli_set_charset( $dbh, $charset );
773
+ } else {
774
+ $query = $this->prepare( 'SET NAMES %s', $charset );
775
+ if ( ! empty( $collate ) )
776
+ $query .= $this->prepare( ' COLLATE %s', $collate );
777
+ mysqli_query( $dbh, $query );
778
+ }
779
+ } else {
780
+ if ( function_exists( 'mysql_set_charset' ) && $this->has_cap( 'set_charset' ) ) {
781
+ mysql_set_charset( $charset, $dbh );
782
+ } else {
783
+ $query = $this->prepare( 'SET NAMES %s', $charset );
784
+ if ( ! empty( $collate ) )
785
+ $query .= $this->prepare( ' COLLATE %s', $collate );
786
+ mysql_query( $query, $dbh );
787
+ }
788
+ }
789
+ }
790
+ }
791
+
792
+ /**
793
+ * Change the current SQL mode, and ensure its WordPress compatibility.
794
+ *
795
+ * If no modes are passed, it will ensure the current MySQL server
796
+ * modes are compatible.
797
+ *
798
+ * @since 3.9.0
799
+ *
800
+ * @param array $modes Optional. A list of SQL modes to set.
801
+ */
802
+ public function set_sql_mode( $modes = array() ) {
803
+ if ( empty( $modes ) ) {
804
+ if ( $this->use_mysqli ) {
805
+ $res = mysqli_query( $this->dbh, 'SELECT @@SESSION.sql_mode' );
806
+ } else {
807
+ $res = mysql_query( 'SELECT @@SESSION.sql_mode', $this->dbh );
808
+ }
809
+
810
+ if ( empty( $res ) ) {
811
+ return;
812
+ }
813
+
814
+ if ( $this->use_mysqli ) {
815
+ $modes_array = mysqli_fetch_array( $res );
816
+ if ( empty( $modes_array[0] ) ) {
817
+ return;
818
+ }
819
+ $modes_str = $modes_array[0];
820
+ } else {
821
+ $modes_str = mysql_result( $res, 0 );
822
+ }
823
+
824
+ if ( empty( $modes_str ) ) {
825
+ return;
826
+ }
827
+
828
+ $modes = explode( ',', $modes_str );
829
+ }
830
+
831
+ $modes = array_change_key_case( $modes, CASE_UPPER );
832
+
833
+ /**
834
+ * Filter the list of incompatible SQL modes to exclude.
835
+ *
836
+ * @since 3.9.0
837
+ *
838
+ * @param array $incompatible_modes An array of incompatible modes.
839
+ */
840
+ $incompatible_modes = (array) apply_filters( 'incompatible_sql_modes', $this->incompatible_modes );
841
+
842
+ foreach( $modes as $i => $mode ) {
843
+ if ( in_array( $mode, $incompatible_modes ) ) {
844
+ unset( $modes[ $i ] );
845
+ }
846
+ }
847
+
848
+ $modes_str = implode( ',', $modes );
849
+
850
+ if ( $this->use_mysqli ) {
851
+ mysqli_query( $this->dbh, "SET SESSION sql_mode='$modes_str'" );
852
+ } else {
853
+ mysql_query( "SET SESSION sql_mode='$modes_str'", $this->dbh );
854
+ }
855
+ }
856
+
857
+ /**
858
+ * Sets the table prefix for the WordPress tables.
859
+ *
860
+ * @since 2.5.0
861
+ *
862
+ * @param string $prefix Alphanumeric name for the new prefix.
863
+ * @param bool $set_table_names Optional. Whether the table names, e.g. wpdb::$posts, should be updated or not.
864
+ * @return string|WP_Error Old prefix or WP_Error on error
865
+ */
866
+ public function set_prefix( $prefix, $set_table_names = true ) {
867
+
868
+ if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
869
+ return new WP_Error('invalid_db_prefix', 'Invalid database prefix' );
870
+
871
+ $old_prefix = is_multisite() ? '' : $prefix;
872
+
873
+ if ( isset( $this->base_prefix ) )
874
+ $old_prefix = $this->base_prefix;
875
+
876
+ $this->base_prefix = $prefix;
877
+
878
+ if ( $set_table_names ) {
879
+ foreach ( $this->tables( 'global' ) as $table => $prefixed_table )
880
+ $this->$table = $prefixed_table;
881
+
882
+ if ( is_multisite() && empty( $this->blogid ) )
883
+ return $old_prefix;
884
+
885
+ $this->prefix = $this->get_blog_prefix();
886
+
887
+ foreach ( $this->tables( 'blog' ) as $table => $prefixed_table )
888
+ $this->$table = $prefixed_table;
889
+
890
+ foreach ( $this->tables( 'old' ) as $table => $prefixed_table )
891
+ $this->$table = $prefixed_table;
892
+ }
893
+ return $old_prefix;
894
+ }
895
+
896
+ /**
897
+ * Sets blog id.
898
+ *
899
+ * @since 3.0.0
900
+ * @access public
901
+ * @param int $blog_id
902
+ * @param int $site_id Optional.
903
+ * @return int previous blog id
904
+ */
905
+ public function set_blog_id( $blog_id, $site_id = 0 ) {
906
+ if ( ! empty( $site_id ) )
907
+ $this->siteid = $site_id;
908
+
909
+ $old_blog_id = $this->blogid;
910
+ $this->blogid = $blog_id;
911
+
912
+ $this->prefix = $this->get_blog_prefix();
913
+
914
+ foreach ( $this->tables( 'blog' ) as $table => $prefixed_table )
915
+ $this->$table = $prefixed_table;
916
+
917
+ foreach ( $this->tables( 'old' ) as $table => $prefixed_table )
918
+ $this->$table = $prefixed_table;
919
+
920
+ return $old_blog_id;
921
+ }
922
+
923
+ /**
924
+ * Gets blog prefix.
925
+ *
926
+ * @since 3.0.0
927
+ * @param int $blog_id Optional.
928
+ * @return string Blog prefix.
929
+ */
930
+ public function get_blog_prefix( $blog_id = null ) {
931
+ if ( is_multisite() ) {
932
+ if ( null === $blog_id )
933
+ $blog_id = $this->blogid;
934
+ $blog_id = (int) $blog_id;
935
+ if ( defined( 'MULTISITE' ) && ( 0 == $blog_id || 1 == $blog_id ) )
936
+ return $this->base_prefix;
937
+ else
938
+ return $this->base_prefix . $blog_id . '_';
939
+ } else {
940
+ return $this->base_prefix;
941
+ }
942
+ }
943
+
944
+ /**
945
+ * Returns an array of WordPress tables.
946
+ *
947
+ * Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to
948
+ * override the WordPress users and usermeta tables that would otherwise
949
+ * be determined by the prefix.
950
+ *
951
+ * The scope argument can take one of the following:
952
+ *
953
+ * 'all' - returns 'all' and 'global' tables. No old tables are returned.
954
+ * 'blog' - returns the blog-level tables for the queried blog.
955
+ * 'global' - returns the global tables for the installation, returning multisite tables only if running multisite.
956
+ * 'ms_global' - returns the multisite global tables, regardless if current installation is multisite.
957
+ * 'old' - returns tables which are deprecated.
958
+ *
959
+ * @since 3.0.0
960
+ * @uses wpdb::$tables
961
+ * @uses wpdb::$old_tables
962
+ * @uses wpdb::$global_tables
963
+ * @uses wpdb::$ms_global_tables
964
+ *
965
+ * @param string $scope Optional. Can be all, global, ms_global, blog, or old tables. Defaults to all.
966
+ * @param bool $prefix Optional. Whether to include table prefixes. Default true. If blog
967
+ * prefix is requested, then the custom users and usermeta tables will be mapped.
968
+ * @param int $blog_id Optional. The blog_id to prefix. Defaults to wpdb::$blogid. Used only when prefix is requested.
969
+ * @return array Table names. When a prefix is requested, the key is the unprefixed table name.
970
+ */
971
+ public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) {
972
+ switch ( $scope ) {
973
+ case 'all' :
974
+ $tables = array_merge( $this->global_tables, $this->tables );
975
+ if ( is_multisite() )
976
+ $tables = array_merge( $tables, $this->ms_global_tables );
977
+ break;
978
+ case 'blog' :
979
+ $tables = $this->tables;
980
+ break;
981
+ case 'global' :
982
+ $tables = $this->global_tables;
983
+ if ( is_multisite() )
984
+ $tables = array_merge( $tables, $this->ms_global_tables );
985
+ break;
986
+ case 'ms_global' :
987
+ $tables = $this->ms_global_tables;
988
+ break;
989
+ case 'old' :
990
+ $tables = $this->old_tables;
991
+ break;
992
+ default :
993
+ return array();
994
+ }
995
+
996
+ if ( $prefix ) {
997
+ if ( ! $blog_id )
998
+ $blog_id = $this->blogid;
999
+ $blog_prefix = $this->get_blog_prefix( $blog_id );
1000
+ $base_prefix = $this->base_prefix;
1001
+ $global_tables = array_merge( $this->global_tables, $this->ms_global_tables );
1002
+ foreach ( $tables as $k => $table ) {
1003
+ if ( in_array( $table, $global_tables ) )
1004
+ $tables[ $table ] = $base_prefix . $table;
1005
+ else
1006
+ $tables[ $table ] = $blog_prefix . $table;
1007
+ unset( $tables[ $k ] );
1008
+ }
1009
+
1010
+ if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) )
1011
+ $tables['users'] = CUSTOM_USER_TABLE;
1012
+
1013
+ if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) )
1014
+ $tables['usermeta'] = CUSTOM_USER_META_TABLE;
1015
+ }
1016
+
1017
+ return $tables;
1018
+ }
1019
+
1020
+ /**
1021
+ * Selects a database using the current database connection.
1022
+ *
1023
+ * The database name will be changed based on the current database
1024
+ * connection. On failure, the execution will bail and display an DB error.
1025
+ *
1026
+ * @since 0.71
1027
+ *
1028
+ * @param string $db MySQL database name
1029
+ * @param resource $dbh Optional link identifier.
1030
+ * @return null Always null.
1031
+ */
1032
+ public function select( $db, $dbh = null ) {
1033
+ if ( is_null($dbh) )
1034
+ $dbh = $this->dbh;
1035
+
1036
+ if ( $this->use_mysqli ) {
1037
+ $success = @mysqli_select_db( $dbh, $db );
1038
+ } else {
1039
+ $success = @mysql_select_db( $db, $dbh );
1040
+ }
1041
+ if ( ! $success ) {
1042
+ $this->ready = false;
1043
+ if ( ! did_action( 'template_redirect' ) ) {
1044
+ wp_load_translations_early();
1045
+ $this->bail( sprintf( __( '<h1>Can&#8217;t select database</h1>
1046
+ <p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>
1047
+ <ul>
1048
+ <li>Are you sure it exists?</li>
1049
+ <li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>
1050
+ <li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>
1051
+ </ul>
1052
+ <p>If you don\'t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>' ), htmlspecialchars( $db, ENT_QUOTES ), htmlspecialchars( $this->dbuser, ENT_QUOTES ) ), 'db_select_fail' );
1053
+ }
1054
+ return;
1055
+ }
1056
+ }
1057
+
1058
+ /**
1059
+ * Do not use, deprecated.
1060
+ *
1061
+ * Use esc_sql() or wpdb::prepare() instead.
1062
+ *
1063
+ * @since 2.8.0
1064
+ * @deprecated 3.6.0
1065
+ * @see wpdb::prepare
1066
+ * @see esc_sql()
1067
+ * @access private
1068
+ *
1069
+ * @param string $string
1070
+ * @return string
1071
+ */
1072
+ function _weak_escape( $string ) {
1073
+ if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) )
1074
+ _deprecated_function( __METHOD__, '3.6', 'wpdb::prepare() or esc_sql()' );
1075
+ return addslashes( $string );
1076
+ }
1077
+
1078
+ /**
1079
+ * Real escape, using mysqli_real_escape_string() or mysql_real_escape_string()
1080
+ *
1081
+ * @see mysqli_real_escape_string()
1082
+ * @see mysql_real_escape_string()
1083
+ * @since 2.8.0
1084
+ * @access private
1085
+ *
1086
+ * @param string $string to escape
1087
+ * @return string escaped
1088
+ */
1089
+ function _real_escape( $string ) {
1090
+ if ( $this->dbh ) {
1091
+ if ( $this->use_mysqli ) {
1092
+ return mysqli_real_escape_string( $this->dbh, $string );
1093
+ } else {
1094
+ return mysql_real_escape_string( $string, $this->dbh );
1095
+ }
1096
+ }
1097
+
1098
+ $class = get_class( $this );
1099
+ if ( function_exists( '__' ) ) {
1100
+ _doing_it_wrong( $class, sprintf( __( '%s must set a database connection for use with escaping.' ), $class ), E_USER_NOTICE );
1101
+ } else {
1102
+ _doing_it_wrong( $class, sprintf( '%s must set a database connection for use with escaping.', $class ), E_USER_NOTICE );
1103
+ }
1104
+ return addslashes( $string );
1105
+ }
1106
+
1107
+ /**
1108
+ * Escape data. Works on arrays.
1109
+ *
1110
+ * @uses wpdb::_real_escape()
1111
+ * @since 2.8.0
1112
+ * @access private
1113
+ *
1114
+ * @param string|array $data
1115
+ * @return string|array escaped
1116
+ */
1117
+ function _escape( $data ) {
1118
+ if ( is_array( $data ) ) {
1119
+ foreach ( $data as $k => $v ) {
1120
+ if ( is_array($v) )
1121
+ $data[$k] = $this->_escape( $v );
1122
+ else
1123
+ $data[$k] = $this->_real_escape( $v );
1124
+ }
1125
+ } else {
1126
+ $data = $this->_real_escape( $data );
1127
+ }
1128
+
1129
+ return $data;
1130
+ }
1131
+
1132
+ /**
1133
+ * Do not use, deprecated.
1134
+ *
1135
+ * Use esc_sql() or wpdb::prepare() instead.
1136
+ *
1137
+ * @since 0.71
1138
+ * @deprecated 3.6.0
1139
+ * @see wpdb::prepare()
1140
+ * @see esc_sql()
1141
+ *
1142
+ * @param mixed $data
1143
+ * @return mixed
1144
+ */
1145
+ public function escape( $data ) {
1146
+ if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) )
1147
+ _deprecated_function( __METHOD__, '3.6', 'wpdb::prepare() or esc_sql()' );
1148
+ if ( is_array( $data ) ) {
1149
+ foreach ( $data as $k => $v ) {
1150
+ if ( is_array( $v ) )
1151
+ $data[$k] = $this->escape( $v, 'recursive' );
1152
+ else
1153
+ $data[$k] = $this->_weak_escape( $v, 'internal' );
1154
+ }
1155
+ } else {
1156
+ $data = $this->_weak_escape( $data, 'internal' );
1157
+ }
1158
+
1159
+ return $data;
1160
+ }
1161
+
1162
+ /**
1163
+ * Escapes content by reference for insertion into the database, for security
1164
+ *
1165
+ * @uses wpdb::_real_escape()
1166
+ * @since 2.3.0
1167
+ * @param string $string to escape
1168
+ * @return void
1169
+ */
1170
+ public function escape_by_ref( &$string ) {
1171
+ if ( ! is_float( $string ) )
1172
+ $string = $this->_real_escape( $string );
1173
+ }
1174
+
1175
+ /**
1176
+ * Prepares a SQL query for safe execution. Uses sprintf()-like syntax.
1177
+ *
1178
+ * The following directives can be used in the query format string:
1179
+ * %d (integer)
1180
+ * %f (float)
1181
+ * %s (string)
1182
+ * %% (literal percentage sign - no argument needed)
1183
+ *
1184
+ * All of %d, %f, and %s are to be left unquoted in the query string and they need an argument passed for them.
1185
+ * Literals (%) as parts of the query must be properly written as %%.
1186
+ *
1187
+ * This function only supports a small subset of the sprintf syntax; it only supports %d (integer), %f (float), and %s (string).
1188
+ * Does not support sign, padding, alignment, width or precision specifiers.
1189
+ * Does not support argument numbering/swapping.
1190
+ *
1191
+ * May be called like {@link http://php.net/sprintf sprintf()} or like {@link http://php.net/vsprintf vsprintf()}.
1192
+ *
1193
+ * Both %d and %s should be left unquoted in the query string.
1194
+ *
1195
+ * wpdb::prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d", 'foo', 1337 )
1196
+ * wpdb::prepare( "SELECT DATE_FORMAT(`field`, '%%c') FROM `table` WHERE `column` = %s", 'foo' );
1197
+ *
1198
+ * @link http://php.net/sprintf Description of syntax.
1199
+ * @since 2.3.0
1200
+ *
1201
+ * @param string $query Query statement with sprintf()-like placeholders
1202
+ * @param array|mixed $args The array of variables to substitute into the query's placeholders if being called like
1203
+ * {@link http://php.net/vsprintf vsprintf()}, or the first variable to substitute into the query's placeholders if
1204
+ * being called like {@link http://php.net/sprintf sprintf()}.
1205
+ * @param mixed $args,... further variables to substitute into the query's placeholders if being called like
1206
+ * {@link http://php.net/sprintf sprintf()}.
1207
+ * @return null|false|string Sanitized query string, null if there is no query, false if there is an error and string
1208
+ * if there was something to prepare
1209
+ */
1210
+ public function prepare( $query, $args ) {
1211
+ if ( is_null( $query ) )
1212
+ return;
1213
+
1214
+ // This is not meant to be foolproof -- but it will catch obviously incorrect usage.
1215
+ if ( strpos( $query, '%' ) === false ) {
1216
+ _doing_it_wrong( 'wpdb::prepare', sprintf( __( 'The query argument of %s must have a placeholder.' ), 'wpdb::prepare()' ), '3.9' );
1217
+ }
1218
+
1219
+ $args = func_get_args();
1220
+ array_shift( $args );
1221
+ // If args were passed as an array (as in vsprintf), move them up
1222
+ if ( isset( $args[0] ) && is_array($args[0]) )
1223
+ $args = $args[0];
1224
+ $query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
1225
+ $query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
1226
+ $query = preg_replace( '|(?<!%)%f|' , '%F', $query ); // Force floats to be locale unaware
1227
+ $query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
1228
+ array_walk( $args, array( $this, 'escape_by_ref' ) );
1229
+ return @vsprintf( $query, $args );
1230
+ }
1231
+
1232
+ /**
1233
+ * First half of escaping for LIKE special characters % and _ before preparing for MySQL.
1234
+ *
1235
+ * Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security.
1236
+ *
1237
+ * Example Prepared Statement:
1238
+ * $wild = '%';
1239
+ * $find = 'only 43% of planets';
1240
+ * $like = $wild . $wpdb->esc_like( $find ) . $wild;
1241
+ * $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE %s", $like );
1242
+ *
1243
+ * Example Escape Chain:
1244
+ * $sql = esc_sql( $wpdb->esc_like( $input ) );
1245
+ *
1246
+ * @since 4.0.0
1247
+ * @access public
1248
+ *
1249
+ * @param string $text The raw text to be escaped. The input typed by the user should have no
1250
+ * extra or deleted slashes.
1251
+ * @return string Text in the form of a LIKE phrase. The output is not SQL safe. Call $wpdb::prepare()
1252
+ * or real_escape next.
1253
+ */
1254
+ public function esc_like( $text ) {
1255
+ return addcslashes( $text, '_%\\' );
1256
+ }
1257
+
1258
+ /**
1259
+ * Print SQL/DB error.
1260
+ *
1261
+ * @since 0.71
1262
+ * @global array $EZSQL_ERROR Stores error information of query and error string
1263
+ *
1264
+ * @param string $str The error to display
1265
+ * @return false|null False if the showing of errors is disabled.
1266
+ */
1267
+ public function print_error( $str = '' ) {
1268
+ global $EZSQL_ERROR;
1269
+
1270
+ if ( !$str ) {
1271
+ if ( $this->use_mysqli ) {
1272
+ $str = mysqli_error( $this->dbh );
1273
+ } else {
1274
+ $str = mysql_error( $this->dbh );
1275
+ }
1276
+ }
1277
+ $EZSQL_ERROR[] = array( 'query' => $this->last_query, 'error_str' => $str );
1278
+
1279
+ if ( $this->suppress_errors )
1280
+ return false;
1281
+
1282
+ wp_load_translations_early();
1283
+
1284
+ if ( $caller = $this->get_caller() )
1285
+ $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s made by %3$s' ), $str, $this->last_query, $caller );
1286
+ else
1287
+ $error_str = sprintf( __( 'WordPress database error %1$s for query %2$s' ), $str, $this->last_query );
1288
+
1289
+ error_log( $error_str );
1290
+
1291
+ // Are we showing errors?
1292
+ if ( ! $this->show_errors )
1293
+ return false;
1294
+
1295
+ // If there is an error then take note of it
1296
+ if ( is_multisite() ) {
1297
+ $msg = "WordPress database error: [$str]\n{$this->last_query}\n";
1298
+ if ( defined( 'ERRORLOGFILE' ) )
1299
+ error_log( $msg, 3, ERRORLOGFILE );
1300
+ if ( defined( 'DIEONDBERROR' ) )
1301
+ wp_die( $msg );
1302
+ } else {
1303
+ $str = htmlspecialchars( $str, ENT_QUOTES );
1304
+ $query = htmlspecialchars( $this->last_query, ENT_QUOTES );
1305
+
1306
+ print "<div id='error'>
1307
+ <p class='wpdberror'><strong>WordPress database error:</strong> [$str]<br />
1308
+ <code>$query</code></p>
1309
+ </div>";
1310
+ }
1311
+ }
1312
+
1313
+ /**
1314
+ * Enables showing of database errors.
1315
+ *
1316
+ * This function should be used only to enable showing of errors.
1317
+ * wpdb::hide_errors() should be used instead for hiding of errors. However,
1318
+ * this function can be used to enable and disable showing of database
1319
+ * errors.
1320
+ *
1321
+ * @since 0.71
1322
+ * @see wpdb::hide_errors()
1323
+ *
1324
+ * @param bool $show Whether to show or hide errors
1325
+ * @return bool Old value for showing errors.
1326
+ */
1327
+ public function show_errors( $show = true ) {
1328
+ $errors = $this->show_errors;
1329
+ $this->show_errors = $show;
1330
+ return $errors;
1331
+ }
1332
+
1333
+ /**
1334
+ * Disables showing of database errors.
1335
+ *
1336
+ * By default database errors are not shown.
1337
+ *
1338
+ * @since 0.71
1339
+ * @see wpdb::show_errors()
1340
+ *
1341
+ * @return bool Whether showing of errors was active
1342
+ */
1343
+ public function hide_errors() {
1344
+ $show = $this->show_errors;
1345
+ $this->show_errors = false;
1346
+ return $show;
1347
+ }
1348
+
1349
+ /**
1350
+ * Whether to suppress database errors.
1351
+ *
1352
+ * By default database errors are suppressed, with a simple
1353
+ * call to this function they can be enabled.
1354
+ *
1355
+ * @since 2.5.0
1356
+ * @see wpdb::hide_errors()
1357
+ * @param bool $suppress Optional. New value. Defaults to true.
1358
+ * @return bool Old value
1359
+ */
1360
+ public function suppress_errors( $suppress = true ) {
1361
+ $errors = $this->suppress_errors;
1362
+ $this->suppress_errors = (bool) $suppress;
1363
+ return $errors;
1364
+ }
1365
+
1366
+ /**
1367
+ * Kill cached query results.
1368
+ *
1369
+ * @since 0.71
1370
+ * @return void
1371
+ */
1372
+ public function flush() {
1373
+ $this->last_result = array();
1374
+ $this->col_info = null;
1375
+ $this->last_query = null;
1376
+ $this->rows_affected = $this->num_rows = 0;
1377
+ $this->last_error = '';
1378
+
1379
+ if ( $this->use_mysqli && $this->result instanceof mysqli_result ) {
1380
+ mysqli_free_result( $this->result );
1381
+ $this->result = null;
1382
+
1383
+ // Sanity check before using the handle
1384
+ if ( empty( $this->dbh ) || !( $this->dbh instanceof mysqli ) ) {
1385
+ return;
1386
+ }
1387
+
1388
+ // Clear out any results from a multi-query
1389
+ while ( mysqli_more_results( $this->dbh ) ) {
1390
+ mysqli_next_result( $this->dbh );
1391
+ }
1392
+ } elseif ( is_resource( $this->result ) ) {
1393
+ mysql_free_result( $this->result );
1394
+ }
1395
+ }
1396
+
1397
+ /**
1398
+ * Connect to and select database.
1399
+ *
1400
+ * If $allow_bail is false, the lack of database connection will need
1401
+ * to be handled manually.
1402
+ *
1403
+ * @since 3.0.0
1404
+ * @since 3.9.0 $allow_bail parameter added.
1405
+ *
1406
+ * @param bool $allow_bail Optional. Allows the function to bail. Default true.
1407
+ * @return null|bool True with a successful connection, false on failure.
1408
+ */
1409
+ public function db_connect( $allow_bail = true ) {
1410
+
1411
+ $this->is_mysql = true;
1412
+
1413
+ /*
1414
+ * Deprecated in 3.9+ when using MySQLi. No equivalent
1415
+ * $new_link parameter exists for mysqli_* functions.
1416
+ */
1417
+ $new_link = defined( 'MYSQL_NEW_LINK' ) ? MYSQL_NEW_LINK : true;
1418
+ $client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0;
1419
+
1420
+ if ( $this->use_mysqli ) {
1421
+ $this->dbh = mysqli_init();
1422
+
1423
+ // mysqli_real_connect doesn't support the host param including a port or socket
1424
+ // like mysql_connect does. This duplicates how mysql_connect detects a port and/or socket file.
1425
+ $port = null;
1426
+ $socket = null;
1427
+ $host = $this->dbhost;
1428
+ $port_or_socket = strstr( $host, ':' );
1429
+ if ( ! empty( $port_or_socket ) ) {
1430
+ $host = substr( $host, 0, strpos( $host, ':' ) );
1431
+ $port_or_socket = substr( $port_or_socket, 1 );
1432
+ if ( 0 !== strpos( $port_or_socket, '/' ) ) {
1433
+ $port = intval( $port_or_socket );
1434
+ $maybe_socket = strstr( $port_or_socket, ':' );
1435
+ if ( ! empty( $maybe_socket ) ) {
1436
+ $socket = substr( $maybe_socket, 1 );
1437
+ }
1438
+ } else {
1439
+ $socket = $port_or_socket;
1440
+ }
1441
+ }
1442
+
1443
+ if ( WP_DEBUG ) {
1444
+ mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
1445
+ } else {
1446
+ @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
1447
+ }
1448
+
1449
+ if ( $this->dbh->connect_errno ) {
1450
+ $this->dbh = null;
1451
+
1452
+ /* It's possible ext/mysqli is misconfigured. Fall back to ext/mysql if:
1453
+ * - We haven't previously connected, and
1454
+ * - WP_USE_EXT_MYSQL isn't set to false, and
1455
+ * - ext/mysql is loaded.
1456
+ */
1457
+ $attempt_fallback = true;
1458
+
1459
+ if ( $this->has_connected ) {
1460
+ $attempt_fallback = false;
1461
+ } elseif ( defined( 'WP_USE_EXT_MYSQL' ) && ! WP_USE_EXT_MYSQL ) {
1462
+ $attempt_fallback = false;
1463
+ } elseif ( ! function_exists( 'mysql_connect' ) ) {
1464
+ $attempt_fallback = false;
1465
+ }
1466
+
1467
+ if ( $attempt_fallback ) {
1468
+ $this->use_mysqli = false;
1469
+ $this->db_connect();
1470
+ }
1471
+ }
1472
+ } else {
1473
+ if ( WP_DEBUG ) {
1474
+ $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
1475
+ } else {
1476
+ $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
1477
+ }
1478
+ }
1479
+
1480
+ if ( ! $this->dbh && $allow_bail ) {
1481
+ wp_load_translations_early();
1482
+
1483
+ // Load custom DB error template, if present.
1484
+ if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) {
1485
+ require_once( WP_CONTENT_DIR . '/db-error.php' );
1486
+ die();
1487
+ }
1488
+
1489
+ $this->bail( sprintf( __( "
1490
+ <h1>Error establishing a database connection</h1>
1491
+ <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>
1492
+ <ul>
1493
+ <li>Are you sure you have the correct username and password?</li>
1494
+ <li>Are you sure that you have typed the correct hostname?</li>
1495
+ <li>Are you sure that the database server is running?</li>
1496
+ </ul>
1497
+ <p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='https://wordpress.org/support/'>WordPress Support Forums</a>.</p>
1498
+ " ), htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
1499
+
1500
+ return false;
1501
+ } elseif ( $this->dbh ) {
1502
+ if ( ! $this->has_connected ) {
1503
+ $this->init_charset();
1504
+ }
1505
+
1506
+ $this->has_connected = true;
1507
+
1508
+ $this->set_charset( $this->dbh );
1509
+
1510
+ $this->ready = true;
1511
+ $this->set_sql_mode();
1512
+ $this->select( $this->dbname, $this->dbh );
1513
+
1514
+ return true;
1515
+ }
1516
+
1517
+ return false;
1518
+ }
1519
+
1520
+ /**
1521
+ * Check that the connection to the database is still up. If not, try to reconnect.
1522
+ *
1523
+ * If this function is unable to reconnect, it will forcibly die, or if after the
1524
+ * the template_redirect hook has been fired, return false instead.
1525
+ *
1526
+ * If $allow_bail is false, the lack of database connection will need
1527
+ * to be handled manually.
1528
+ *
1529
+ * @since 3.9.0
1530
+ *
1531
+ * @param bool $allow_bail Optional. Allows the function to bail. Default true.
1532
+ * @return bool|null True if the connection is up.
1533
+ */
1534
+ public function check_connection( $allow_bail = true ) {
1535
+ if ( $this->use_mysqli ) {
1536
+ if ( @mysqli_ping( $this->dbh ) ) {
1537
+ return true;
1538
+ }
1539
+ } else {
1540
+ if ( @mysql_ping( $this->dbh ) ) {
1541
+ return true;
1542
+ }
1543
+ }
1544
+
1545
+ $error_reporting = false;
1546
+
1547
+ // Disable warnings, as we don't want to see a multitude of "unable to connect" messages
1548
+ if ( WP_DEBUG ) {
1549
+ $error_reporting = error_reporting();
1550
+ error_reporting( $error_reporting & ~E_WARNING );
1551
+ }
1552
+
1553
+ for ( $tries = 1; $tries <= $this->reconnect_retries; $tries++ ) {
1554
+ // On the last try, re-enable warnings. We want to see a single instance of the
1555
+ // "unable to connect" message on the bail() screen, if it appears.
1556
+ if ( $this->reconnect_retries === $tries && WP_DEBUG ) {
1557
+ error_reporting( $error_reporting );
1558
+ }
1559
+
1560
+ if ( $this->db_connect( false ) ) {
1561
+ if ( $error_reporting ) {
1562
+ error_reporting( $error_reporting );
1563
+ }
1564
+
1565
+ return true;
1566
+ }
1567
+
1568
+ sleep( 1 );
1569
+ }
1570
+
1571
+ // If template_redirect has already happened, it's too late for wp_die()/dead_db().
1572
+ // Let's just return and hope for the best.
1573
+ if ( did_action( 'template_redirect' ) ) {
1574
+ return false;
1575
+ }
1576
+
1577
+ if ( ! $allow_bail ) {
1578
+ return false;
1579
+ }
1580
+
1581
+ // We weren't able to reconnect, so we better bail.
1582
+ $this->bail( sprintf( ( "
1583
+ <h1>Error reconnecting to the database</h1>
1584
+ <p>This means that we lost contact with the database server at <code>%s</code>. This could mean your host's database server is down.</p>
1585
+ <ul>
1586
+ <li>Are you sure that the database server is running?</li>
1587
+ <li>Are you sure that the database server is not under particularly heavy load?</li>
1588
+ </ul>
1589
+ <p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='https://wordpress.org/support/'>WordPress Support Forums</a>.</p>
1590
+ " ), htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
1591
+
1592
+ // Call dead_db() if bail didn't die, because this database is no more. It has ceased to be (at least temporarily).
1593
+ dead_db();
1594
+ }
1595
+
1596
+ /**
1597
+ * Perform a MySQL database query, using current database connection.
1598
+ *
1599
+ * More information can be found on the codex page.
1600
+ *
1601
+ * @since 0.71
1602
+ *
1603
+ * @param string $query Database query
1604
+ * @return int|false Number of rows affected/selected or false on error
1605
+ */
1606
+ public function query( $query ) {
1607
+ if ( ! $this->ready ) {
1608
+ $this->check_current_query = true;
1609
+ return false;
1610
+ }
1611
+
1612
+ /**
1613
+ * Filter the database query.
1614
+ *
1615
+ * Some queries are made before the plugins have been loaded,
1616
+ * and thus cannot be filtered with this method.
1617
+ *
1618
+ * @since 2.1.0
1619
+ *
1620
+ * @param string $query Database query.
1621
+ */
1622
+ $query = apply_filters( 'query', $query );
1623
+
1624
+ $this->flush();
1625
+
1626
+ // Log how the function was called
1627
+ $this->func_call = "\$db->query(\"$query\")";
1628
+
1629
+ // If we're writing to the database, make sure the query will write safely.
1630
+ if ( $this->check_current_query && ! $this->check_ascii( $query ) ) {
1631
+ $stripped_query = $this->strip_invalid_text_from_query( $query );
1632
+ // strip_invalid_text_from_query() can perform queries, so we need
1633
+ // to flush again, just to make sure everything is clear.
1634
+ $this->flush();
1635
+ if ( $stripped_query !== $query ) {
1636
+ $this->insert_id = 0;
1637
+ return false;
1638
+ }
1639
+ }
1640
+
1641
+ $this->check_current_query = true;
1642
+
1643
+ // Keep track of the last query for debug..
1644
+ $this->last_query = $query;
1645
+
1646
+ $this->_do_query( $query );
1647
+
1648
+ // MySQL server has gone away, try to reconnect
1649
+ $mysql_errno = 0;
1650
+ if ( ! empty( $this->dbh ) ) {
1651
+ if ( $this->use_mysqli ) {
1652
+ $mysql_errno = mysqli_errno( $this->dbh );
1653
+ } else {
1654
+ $mysql_errno = mysql_errno( $this->dbh );
1655
+ }
1656
+ }
1657
+
1658
+ if ( empty( $this->dbh ) || 2006 == $mysql_errno ) {
1659
+ if ( $this->check_connection() ) {
1660
+ $this->_do_query( $query );
1661
+ } else {
1662
+ $this->insert_id = 0;
1663
+ return false;
1664
+ }
1665
+ }
1666
+
1667
+ // If there is an error then take note of it..
1668
+ if ( $this->use_mysqli ) {
1669
+ $this->last_error = mysqli_error( $this->dbh );
1670
+ } else {
1671
+ $this->last_error = mysql_error( $this->dbh );
1672
+ }
1673
+
1674
+ if ( $this->last_error ) {
1675
+ // Clear insert_id on a subsequent failed insert.
1676
+ if ( $this->insert_id && preg_match( '/^\s*(insert|replace)\s/i', $query ) )
1677
+ $this->insert_id = 0;
1678
+
1679
+ $this->print_error();
1680
+ return false;
1681
+ }
1682
+
1683
+ if ( preg_match( '/^\s*(create|alter|truncate|drop)\s/i', $query ) ) {
1684
+ $return_val = $this->result;
1685
+ } elseif ( preg_match( '/^\s*(insert|delete|update|replace)\s/i', $query ) ) {
1686
+ if ( $this->use_mysqli ) {
1687
+ $this->rows_affected = mysqli_affected_rows( $this->dbh );
1688
+ } else {
1689
+ $this->rows_affected = mysql_affected_rows( $this->dbh );
1690
+ }
1691
+ // Take note of the insert_id
1692
+ if ( preg_match( '/^\s*(insert|replace)\s/i', $query ) ) {
1693
+ if ( $this->use_mysqli ) {
1694
+ $this->insert_id = mysqli_insert_id( $this->dbh );
1695
+ } else {
1696
+ $this->insert_id = mysql_insert_id( $this->dbh );
1697
+ }
1698
+ }
1699
+ // Return number of rows affected
1700
+ $return_val = $this->rows_affected;
1701
+ } else {
1702
+ $num_rows = 0;
1703
+ if ( $this->use_mysqli && $this->result instanceof mysqli_result ) {
1704
+ while ( $row = @mysqli_fetch_object( $this->result ) ) {
1705
+ $this->last_result[$num_rows] = $row;
1706
+ $num_rows++;
1707
+ }
1708
+ } elseif ( is_resource( $this->result ) ) {
1709
+ while ( $row = @mysql_fetch_object( $this->result ) ) {
1710
+ $this->last_result[$num_rows] = $row;
1711
+ $num_rows++;
1712
+ }
1713
+ }
1714
+
1715
+ // Log number of rows the query returned
1716
+ // and return number of rows selected
1717
+ $this->num_rows = $num_rows;
1718
+ $return_val = $num_rows;
1719
+ }
1720
+
1721
+ return $return_val;
1722
+ }
1723
+
1724
+ /**
1725
+ * Internal function to perform the mysql_query() call.
1726
+ *
1727
+ * @since 3.9.0
1728
+ *
1729
+ * @access private
1730
+ * @see wpdb::query()
1731
+ *
1732
+ * @param string $query The query to run.
1733
+ */
1734
+ private function _do_query( $query ) {
1735
+ if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) {
1736
+ $this->timer_start();
1737
+ }
1738
+
1739
+ if ( $this->use_mysqli ) {
1740
+ $this->result = @mysqli_query( $this->dbh, $query );
1741
+ } else {
1742
+ $this->result = @mysql_query( $query, $this->dbh );
1743
+ }
1744
+ $this->num_queries++;
1745
+
1746
+ if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) {
1747
+ $this->queries[] = array( $query, $this->timer_stop(), $this->get_caller() );
1748
+ }
1749
+ }
1750
+
1751
+ /**
1752
+ * Insert a row into a table.
1753
+ *
1754
+ * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 'bar' ) )
1755
+ * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) )
1756
+ *
1757
+ * @since 2.5.0
1758
+ * @see wpdb::prepare()
1759
+ * @see wpdb::$field_types
1760
+ * @see wp_set_wpdb_vars()
1761
+ *
1762
+ * @param string $table table name
1763
+ * @param array $data Data to insert (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped).
1764
+ * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data.
1765
+ * A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
1766
+ * @return int|false The number of rows inserted, or false on error.
1767
+ */
1768
+ public function insert( $table, $data, $format = null ) {
1769
+ return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' );
1770
+ }
1771
+
1772
+ /**
1773
+ * Replace a row into a table.
1774
+ *
1775
+ * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 'bar' ) )
1776
+ * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) )
1777
+ *
1778
+ * @since 3.0.0
1779
+ * @see wpdb::prepare()
1780
+ * @see wpdb::$field_types
1781
+ * @see wp_set_wpdb_vars()
1782
+ *
1783
+ * @param string $table table name
1784
+ * @param array $data Data to insert (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped).
1785
+ * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data.
1786
+ * A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
1787
+ * @return int|false The number of rows affected, or false on error.
1788
+ */
1789
+ public function replace( $table, $data, $format = null ) {
1790
+ return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' );
1791
+ }
1792
+
1793
+ /**
1794
+ * Helper function for insert and replace.
1795
+ *
1796
+ * Runs an insert or replace query based on $type argument.
1797
+ *
1798
+ * @access private
1799
+ * @since 3.0.0
1800
+ * @see wpdb::prepare()
1801
+ * @see wpdb::$field_types
1802
+ * @see wp_set_wpdb_vars()
1803
+ *
1804
+ * @param string $table table name
1805
+ * @param array $data Data to insert (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped).
1806
+ * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. If string, that format will be used for all of the values in $data.
1807
+ * A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
1808
+ * @param string $type Optional. What type of operation is this? INSERT or REPLACE. Defaults to INSERT.
1809
+ * @return int|false The number of rows affected, or false on error.
1810
+ */
1811
+ function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) {
1812
+ if ( ! in_array( strtoupper( $type ), array( 'REPLACE', 'INSERT' ) ) ) {
1813
+ return false;
1814
+ }
1815
+
1816
+ $data = $this->process_fields( $table, $data, $format );
1817
+ if ( false === $data ) {
1818
+ return false;
1819
+ }
1820
+
1821
+ $formats = $values = array();
1822
+ foreach ( $data as $value ) {
1823
+ $formats[] = $value['format'];
1824
+ $values[] = $value['value'];
1825
+ }
1826
+
1827
+ $fields = '`' . implode( '`, `', array_keys( $data ) ) . '`';
1828
+ $formats = implode( ', ', $formats );
1829
+
1830
+ $sql = "$type INTO `$table` ($fields) VALUES ($formats)";
1831
+
1832
+ $this->insert_id = 0;
1833
+ $this->check_current_query = false;
1834
+ return $this->query( $this->prepare( $sql, $values ) );
1835
+ }
1836
+
1837
+ /**
1838
+ * Update a row in the table
1839
+ *
1840
+ * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 'bar' ), array( 'ID' => 1 ) )
1841
+ * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) )
1842
+ *
1843
+ * @since 2.5.0
1844
+ * @see wpdb::prepare()
1845
+ * @see wpdb::$field_types
1846
+ * @see wp_set_wpdb_vars()
1847
+ *
1848
+ * @param string $table table name
1849
+ * @param array $data Data to update (in column => value pairs). Both $data columns and $data values should be "raw" (neither should be SQL escaped).
1850
+ * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw".
1851
+ * @param array|string $format Optional. An array of formats to be mapped to each of the values in $data. If string, that format will be used for all of the values in $data.
1852
+ * A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types.
1853
+ * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $where will be treated as strings.
1854
+ * @return int|false The number of rows updated, or false on error.
1855
+ */
1856
+ public function update( $table, $data, $where, $format = null, $where_format = null ) {
1857
+ if ( ! is_array( $data ) || ! is_array( $where ) ) {
1858
+ return false;
1859
+ }
1860
+
1861
+ $data = $this->process_fields( $table, $data, $format );
1862
+ if ( false === $data ) {
1863
+ return false;
1864
+ }
1865
+ $where = $this->process_fields( $table, $where, $where_format );
1866
+ if ( false === $where ) {
1867
+ return false;
1868
+ }
1869
+
1870
+ $fields = $conditions = $values = array();
1871
+ foreach ( $data as $field => $value ) {
1872
+ $fields[] = "`$field` = " . $value['format'];
1873
+ $values[] = $value['value'];
1874
+ }
1875
+ foreach ( $where as $field => $value ) {
1876
+ $conditions[] = "`$field` = " . $value['format'];
1877
+ $values[] = $value['value'];
1878
+ }
1879
+
1880
+ $fields = implode( ', ', $fields );
1881
+ $conditions = implode( ' AND ', $conditions );
1882
+
1883
+ $sql = "UPDATE `$table` SET $fields WHERE $conditions";
1884
+
1885
+ $this->check_current_query = false;
1886
+ return $this->query( $this->prepare( $sql, $values ) );
1887
+ }
1888
+
1889
+ /**
1890
+ * Delete a row in the table
1891
+ *
1892
+ * wpdb::delete( 'table', array( 'ID' => 1 ) )
1893
+ * wpdb::delete( 'table', array( 'ID' => 1 ), array( '%d' ) )
1894
+ *
1895
+ * @since 3.4.0
1896
+ * @see wpdb::prepare()
1897
+ * @see wpdb::$field_types
1898
+ * @see wp_set_wpdb_vars()
1899
+ *
1900
+ * @param string $table table name
1901
+ * @param array $where A named array of WHERE clauses (in column => value pairs). Multiple clauses will be joined with ANDs. Both $where columns and $where values should be "raw".
1902
+ * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where. A format is one of '%d', '%f', '%s' (integer, float, string). If omitted, all values in $where will be treated as strings unless otherwise specified in wpdb::$field_types.
1903
+ * @return int|false The number of rows updated, or false on error.
1904
+ */
1905
+ public function delete( $table, $where, $where_format = null ) {
1906
+ if ( ! is_array( $where ) ) {
1907
+ return false;
1908
+ }
1909
+
1910
+ $where = $this->process_fields( $table, $where, $where_format );
1911
+ if ( false === $where ) {
1912
+ return false;
1913
+ }
1914
+
1915
+ $conditions = $values = array();
1916
+ foreach ( $where as $field => $value ) {
1917
+ $conditions[] = "`$field` = " . $value['format'];
1918
+ $values[] = $value['value'];
1919
+ }
1920
+
1921
+ $conditions = implode( ' AND ', $conditions );
1922
+
1923
+ $sql = "DELETE FROM `$table` WHERE $conditions";
1924
+
1925
+ $this->check_current_query = false;
1926
+ return $this->query( $this->prepare( $sql, $values ) );
1927
+ }
1928
+
1929
+ /**
1930
+ * Processes arrays of field/value pairs and field formats.
1931
+ *
1932
+ * This is a helper method for wpdb's CRUD methods, which take field/value
1933
+ * pairs for inserts, updates, and where clauses. This method first pairs
1934
+ * each value with a format. Then it determines the charset of that field,
1935
+ * using that to determine if any invalid text would be stripped. If text is
1936
+ * stripped, then field processing is rejected and the query fails.
1937
+ *
1938
+ * @since 4.2.0
1939
+ * @access protected
1940
+ *
1941
+ * @param string $table Table name.
1942
+ * @param array $data Field/value pair.
1943
+ * @param mixed $format Format for each field.
1944
+ * @return array|bool Returns an array of fields that contain paired values
1945
+ * and formats. Returns false for invalid values.
1946
+ */
1947
+ protected function process_fields( $table, $data, $format ) {
1948
+ $data = $this->process_field_formats( $data, $format );
1949
+ $data = $this->process_field_charsets( $data, $table );
1950
+ if ( false === $data ) {
1951
+ return false;
1952
+ }
1953
+
1954
+ $converted_data = $this->strip_invalid_text( $data );
1955
+
1956
+ if ( $data !== $converted_data ) {
1957
+ return false;
1958
+ }
1959
+
1960
+ return $data;
1961
+ }
1962
+
1963
+ /**
1964
+ * Prepares arrays of value/format pairs as passed to wpdb CRUD methods.
1965
+ *
1966
+ * @since 4.2.0
1967
+ * @access protected
1968
+ *
1969
+ * @param array $data Array of fields to values.
1970
+ * @param mixed $format Formats to be mapped to the values in $data.
1971
+ * @return array Array, keyed by field names with values being an array
1972
+ * of 'value' and 'format' keys.
1973
+ */
1974
+ protected function process_field_formats( $data, $format ) {
1975
+ $formats = $original_formats = (array) $format;
1976
+
1977
+ foreach ( $data as $field => $value ) {
1978
+ $value = array(
1979
+ 'value' => $value,
1980
+ 'format' => '%s',
1981
+ );
1982
+
1983
+ if ( ! empty( $format ) ) {
1984
+ $value['format'] = array_shift( $formats );
1985
+ if ( ! $value['format'] ) {
1986
+ $value['format'] = reset( $original_formats );
1987
+ }
1988
+ } elseif ( isset( $this->field_types[ $field ] ) ) {
1989
+ $value['format'] = $this->field_types[ $field ];
1990
+ }
1991
+
1992
+ $data[ $field ] = $value;
1993
+ }
1994
+
1995
+ return $data;
1996
+ }
1997
+
1998
+ /**
1999
+ * Adds field charsets to field/value/format arrays generated by
2000
+ * the wpdb::process_field_formats() method.
2001
+ *
2002
+ * @since 4.2.0
2003
+ * @access protected
2004
+ *
2005
+ * @param array $data As it comes from the wpdb::process_field_formats() method.
2006
+ * @param string $table Table name.
2007
+ * @return The same array as $data with additional 'charset' keys.
2008
+ */
2009
+ protected function process_field_charsets( $data, $table ) {
2010
+ foreach ( $data as $field => $value ) {
2011
+ if ( '%d' === $value['format'] || '%f' === $value['format'] ) {
2012
+ // We can skip this field if we know it isn't a string.
2013
+ // This checks %d/%f versus ! %s because it's sprintf() could take more.
2014
+ $value['charset'] = false;
2015
+ } elseif ( $this->check_ascii( $value['value'] ) ) {
2016
+ // If it's ASCII, then we don't need the charset. We can skip this field.
2017
+ $value['charset'] = false;
2018
+ } else {
2019
+ $value['charset'] = $this->get_col_charset( $table, $field );
2020
+ if ( is_wp_error( $value['charset'] ) ) {
2021
+ return false;
2022
+ }
2023
+
2024
+ // This isn't ASCII. Don't have strip_invalid_text() re-check.
2025
+ $value['ascii'] = false;
2026
+ }
2027
+
2028
+ $data[ $field ] = $value;
2029
+ }
2030
+
2031
+ return $data;
2032
+ }
2033
+
2034
+ /**
2035
+ * Retrieve one variable from the database.
2036
+ *
2037
+ * Executes a SQL query and returns the value from the SQL result.
2038
+ * If the SQL result contains more than one column and/or more than one row, this function returns the value in the column and row specified.
2039
+ * If $query is null, this function returns the value in the specified column and row from the previous SQL result.
2040
+ *
2041
+ * @since 0.71
2042
+ *
2043
+ * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query.
2044
+ * @param int $x Optional. Column of value to return. Indexed from 0.
2045
+ * @param int $y Optional. Row of value to return. Indexed from 0.
2046
+ * @return string|null Database query result (as string), or null on failure
2047
+ */
2048
+ public function get_var( $query = null, $x = 0, $y = 0 ) {
2049
+ $this->func_call = "\$db->get_var(\"$query\", $x, $y)";
2050
+
2051
+ if ( $this->check_safe_collation( $query ) ) {
2052
+ $this->check_current_query = false;
2053
+ }
2054
+
2055
+ if ( $query ) {
2056
+ $this->query( $query );
2057
+ }
2058
+
2059
+ // Extract var out of cached results based x,y vals
2060
+ if ( !empty( $this->last_result[$y] ) ) {
2061
+ $values = array_values( get_object_vars( $this->last_result[$y] ) );
2062
+ }
2063
+
2064
+ // If there is a value return it else return null
2065
+ return ( isset( $values[$x] ) && $values[$x] !== '' ) ? $values[$x] : null;
2066
+ }
2067
+
2068
+ /**
2069
+ * Retrieve one row from the database.
2070
+ *
2071
+ * Executes a SQL query and returns the row from the SQL result.
2072
+ *
2073
+ * @since 0.71
2074
+ *
2075
+ * @param string|null $query SQL query.
2076
+ * @param string $output Optional. one of ARRAY_A | ARRAY_N | OBJECT constants. Return an associative array (column => value, ...),
2077
+ * a numerically indexed array (0 => value, ...) or an object ( ->column = value ), respectively.
2078
+ * @param int $y Optional. Row to return. Indexed from 0.
2079
+ * @return mixed Database query result in format specified by $output or null on failure
2080
+ */
2081
+ public function get_row( $query = null, $output = OBJECT, $y = 0 ) {
2082
+ $this->func_call = "\$db->get_row(\"$query\",$output,$y)";
2083
+
2084
+ if ( $this->check_safe_collation( $query ) ) {
2085
+ $this->check_current_query = false;
2086
+ }
2087
+
2088
+ if ( $query ) {
2089
+ $this->query( $query );
2090
+ } else {
2091
+ return null;
2092
+ }
2093
+
2094
+ if ( !isset( $this->last_result[$y] ) )
2095
+ return null;
2096
+
2097
+ if ( $output == OBJECT ) {
2098
+ return $this->last_result[$y] ? $this->last_result[$y] : null;
2099
+ } elseif ( $output == ARRAY_A ) {
2100
+ return $this->last_result[$y] ? get_object_vars( $this->last_result[$y] ) : null;
2101
+ } elseif ( $output == ARRAY_N ) {
2102
+ return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null;
2103
+ } elseif ( strtoupper( $output ) === OBJECT ) {
2104
+ // Back compat for OBJECT being previously case insensitive.
2105
+ return $this->last_result[$y] ? $this->last_result[$y] : null;
2106
+ } else {
2107
+ $this->print_error( " \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N" );
2108
+ }
2109
+ }
2110
+
2111
+ /**
2112
+ * Retrieve one column from the database.
2113
+ *
2114
+ * Executes a SQL query and returns the column from the SQL result.
2115
+ * If the SQL result contains more than one column, this function returns the column specified.
2116
+ * If $query is null, this function returns the specified column from the previous SQL result.
2117
+ *
2118
+ * @since 0.71
2119
+ *
2120
+ * @param string|null $query Optional. SQL query. Defaults to previous query.
2121
+ * @param int $x Optional. Column to return. Indexed from 0.
2122
+ * @return array Database query result. Array indexed from 0 by SQL result row number.
2123
+ */
2124
+ public function get_col( $query = null , $x = 0 ) {
2125
+ if ( $this->check_safe_collation( $query ) ) {
2126
+ $this->check_current_query = false;
2127
+ }
2128
+
2129
+ if ( $query ) {
2130
+ $this->query( $query );
2131
+ }
2132
+
2133
+ $new_array = array();
2134
+ // Extract the column values
2135
+ for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) {
2136
+ $new_array[$i] = $this->get_var( null, $x, $i );
2137
+ }
2138
+ return $new_array;
2139
+ }
2140
+
2141
+ /**
2142
+ * Retrieve an entire SQL result set from the database (i.e., many rows)
2143
+ *
2144
+ * Executes a SQL query and returns the entire SQL result.
2145
+ *
2146
+ * @since 0.71
2147
+ *
2148
+ * @param string $query SQL query.
2149
+ * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. With one of the first three, return an array of rows indexed from 0 by SQL result row number.
2150
+ * Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively.
2151
+ * With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value. Duplicate keys are discarded.
2152
+ * @return mixed Database query results
2153
+ */
2154
+ public function get_results( $query = null, $output = OBJECT ) {
2155
+ $this->func_call = "\$db->get_results(\"$query\", $output)";
2156
+
2157
+ if ( $this->check_safe_collation( $query ) ) {
2158
+ $this->check_current_query = false;
2159
+ }
2160
+
2161
+ if ( $query ) {
2162
+ $this->query( $query );
2163
+ } else {
2164
+ return null;
2165
+ }
2166
+
2167
+ $new_array = array();
2168
+ if ( $output == OBJECT ) {
2169
+ // Return an integer-keyed array of row objects
2170
+ return $this->last_result;
2171
+ } elseif ( $output == OBJECT_K ) {
2172
+ // Return an array of row objects with keys from column 1
2173
+ // (Duplicates are discarded)
2174
+ foreach ( $this->last_result as $row ) {
2175
+ $var_by_ref = get_object_vars( $row );
2176
+ $key = array_shift( $var_by_ref );
2177
+ if ( ! isset( $new_array[ $key ] ) )
2178
+ $new_array[ $key ] = $row;
2179
+ }
2180
+ return $new_array;
2181
+ } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
2182
+ // Return an integer-keyed array of...
2183
+ if ( $this->last_result ) {
2184
+ foreach( (array) $this->last_result as $row ) {
2185
+ if ( $output == ARRAY_N ) {
2186
+ // ...integer-keyed row arrays
2187
+ $new_array[] = array_values( get_object_vars( $row ) );
2188
+ } else {
2189
+ // ...column name-keyed row arrays
2190
+ $new_array[] = get_object_vars( $row );
2191
+ }
2192
+ }
2193
+ }
2194
+ return $new_array;
2195
+ } elseif ( strtoupper( $output ) === OBJECT ) {
2196
+ // Back compat for OBJECT being previously case insensitive.
2197
+ return $this->last_result;
2198
+ }
2199
+ return null;
2200
+ }
2201
+
2202
+ /**
2203
+ * Retrieves the character set for the given table.
2204
+ *
2205
+ * @since 4.2.0
2206
+ * @access protected
2207
+ *
2208
+ * @param string $table Table name.
2209
+ * @return string|WP_Error Table character set, WP_Error object if it couldn't be found.
2210
+ */
2211
+ protected function get_table_charset( $table ) {
2212
+ $tablekey = strtolower( $table );
2213
+
2214
+ /**
2215
+ * Filter the table charset value before the DB is checked.
2216
+ *
2217
+ * Passing a non-null value to the filter will effectively short-circuit
2218
+ * checking the DB for the charset, returning that value instead.
2219
+ *
2220
+ * @since 4.2.0
2221
+ *
2222
+ * @param string $charset The character set to use. Default null.
2223
+ * @param string $table The name of the table being checked.
2224
+ */
2225
+ $charset = apply_filters( 'pre_get_table_charset', null, $table );
2226
+ if ( null !== $charset ) {
2227
+ return $charset;
2228
+ }
2229
+
2230
+ if ( isset( $this->table_charset[ $tablekey ] ) ) {
2231
+ return $this->table_charset[ $tablekey ];
2232
+ }
2233
+
2234
+ $charsets = $columns = array();
2235
+ $results = $this->get_results( "SHOW FULL COLUMNS FROM `$table`" );
2236
+ if ( ! $results ) {
2237
+ return new WP_Error( 'wpdb_get_table_charset_failure' );
2238
+ }
2239
+
2240
+ foreach ( $results as $column ) {
2241
+ $columns[ strtolower( $column->Field ) ] = $column;
2242
+ }
2243
+
2244
+ $this->col_meta[ $tablekey ] = $columns;
2245
+
2246
+ foreach ( $columns as $column ) {
2247
+ if ( ! empty( $column->Collation ) ) {
2248
+ list( $charset ) = explode( '_', $column->Collation );
2249
+
2250
+ // If the current connection can't support utf8mb4 characters, let's only send 3-byte utf8 characters.
2251
+ if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) {
2252
+ $charset = 'utf8';
2253
+ }
2254
+
2255
+ $charsets[ strtolower( $charset ) ] = true;
2256
+ }
2257
+
2258
+ list( $type ) = explode( '(', $column->Type );
2259
+
2260
+ // A binary/blob means the whole query gets treated like this.
2261
+ if ( in_array( strtoupper( $type ), array( 'BINARY', 'VARBINARY', 'TINYBLOB', 'MEDIUMBLOB', 'BLOB', 'LONGBLOB' ) ) ) {
2262
+ $this->table_charset[ $tablekey ] = 'binary';
2263
+ return 'binary';
2264
+ }
2265
+ }
2266
+
2267
+ // utf8mb3 is an alias for utf8.
2268
+ if ( isset( $charsets['utf8mb3'] ) ) {
2269
+ $charsets['utf8'] = true;
2270
+ unset( $charsets['utf8mb3'] );
2271
+ }
2272
+
2273
+ // Check if we have more than one charset in play.
2274
+ $count = count( $charsets );
2275
+ if ( 1 === $count ) {
2276
+ $charset = key( $charsets );
2277
+ } elseif ( 0 === $count ) {
2278
+ // No charsets, assume this table can store whatever.
2279
+ $charset = false;
2280
+ } else {
2281
+ // More than one charset. Remove latin1 if present and recalculate.
2282
+ unset( $charsets['latin1'] );
2283
+ $count = count( $charsets );
2284
+ if ( 1 === $count ) {
2285
+ // Only one charset (besides latin1).
2286
+ $charset = key( $charsets );
2287
+ } elseif ( 2 === $count && isset( $charsets['utf8'], $charsets['utf8mb4'] ) ) {
2288
+ // Two charsets, but they're utf8 and utf8mb4, use utf8.
2289
+ $charset = 'utf8';
2290
+ } else {
2291
+ // Two mixed character sets. ascii.
2292
+ $charset = 'ascii';
2293
+ }
2294
+ }
2295
+
2296
+ $this->table_charset[ $tablekey ] = $charset;
2297
+ return $charset;
2298
+ }
2299
+
2300
+ /**
2301
+ * Retrieves the character set for the given column.
2302
+ *
2303
+ * @since 4.2.0
2304
+ * @access public
2305
+ *
2306
+ * @param string $table Table name.
2307
+ * @param string $column Column name.
2308
+ * @return mixed Column character set as a string. False if the column has no
2309
+ * character set. WP_Error object if there was an error.
2310
+ */
2311
+ public function get_col_charset( $table, $column ) {
2312
+ $tablekey = strtolower( $table );
2313
+ $columnkey = strtolower( $column );
2314
+
2315
+ /**
2316
+ * Filter the column charset value before the DB is checked.
2317
+ *
2318
+ * Passing a non-null value to the filter will short-circuit
2319
+ * checking the DB for the charset, returning that value instead.
2320
+ *
2321
+ * @since 4.2.0
2322
+ *
2323
+ * @param string $charset The character set to use. Default null.
2324
+ * @param string $table The name of the table being checked.
2325
+ * @param string $column The name of the column being checked.
2326
+ */
2327
+ $charset = apply_filters( 'pre_get_col_charset', null, $table, $column );
2328
+ if ( null !== $charset ) {
2329
+ return $charset;
2330
+ }
2331
+
2332
+ // Skip this entirely if this isn't a MySQL database.
2333
+ if ( false === $this->is_mysql ) {
2334
+ return false;
2335
+ }
2336
+
2337
+ if ( empty( $this->table_charset[ $tablekey ] ) ) {
2338
+ // This primes column information for us.
2339
+ $table_charset = $this->get_table_charset( $table );
2340
+ if ( is_wp_error( $table_charset ) ) {
2341
+ return $table_charset;
2342
+ }
2343
+ }
2344
+
2345
+ // If still no column information, return the table charset.
2346
+ if ( empty( $this->col_meta[ $tablekey ] ) ) {
2347
+ return $this->table_charset[ $tablekey ];
2348
+ }
2349
+
2350
+ // If this column doesn't exist, return the table charset.
2351
+ if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) {
2352
+ return $this->table_charset[ $tablekey ];
2353
+ }
2354
+
2355
+ // Return false when it's not a string column.
2356
+ if ( empty( $this->col_meta[ $tablekey ][ $columnkey ]->Collation ) ) {
2357
+ return false;
2358
+ }
2359
+
2360
+ list( $charset ) = explode( '_', $this->col_meta[ $tablekey ][ $columnkey ]->Collation );
2361
+ return $charset;
2362
+ }
2363
+
2364
+ /**
2365
+ * Check if a string is ASCII.
2366
+ *
2367
+ * The negative regex is faster for non-ASCII strings, as it allows
2368
+ * the search to finish as soon as it encounters a non-ASCII character.
2369
+ *
2370
+ * @since 4.2.0
2371
+ * @access protected
2372
+ *
2373
+ * @param string $string String to check.
2374
+ * @return bool True if ASCII, false if not.
2375
+ */
2376
+ protected function check_ascii( $string ) {
2377
+ if ( function_exists( 'mb_check_encoding' ) ) {
2378
+ if ( mb_check_encoding( $string, 'ASCII' ) ) {
2379
+ return true;
2380
+ }
2381
+ } elseif ( ! preg_match( '/[^\x00-\x7F]/', $string ) ) {
2382
+ return true;
2383
+ }
2384
+
2385
+ return false;
2386
+ }
2387
+
2388
+ /**
2389
+ * Check if the query is accessing a collation considered safe on the current version of MySQL.
2390
+ *
2391
+ * @since 4.2.0
2392
+ * @access protected
2393
+ *
2394
+ * @param string $query The query to check.
2395
+ * @return bool True if the collation is safe, false if it isn't.
2396
+ */
2397
+ protected function check_safe_collation( $query ) {
2398
+ if ( $this->checking_collation ) {
2399
+ return true;
2400
+ }
2401
+
2402
+ // We don't need to check the collation for queries that don't read data.
2403
+ $query = ltrim( $query, "\r\n\t (" );
2404
+ if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN)\s/i', $query ) ) {
2405
+ return true;
2406
+ }
2407
+
2408
+ // All-ASCII queries don't need extra checking.
2409
+ if ( $this->check_ascii( $query ) ) {
2410
+ return true;
2411
+ }
2412
+
2413
+ $table = $this->get_table_from_query( $query );
2414
+ if ( ! $table ) {
2415
+ return false;
2416
+ }
2417
+
2418
+ $this->checking_collation = true;
2419
+ $collation = $this->get_table_charset( $table );
2420
+ $this->checking_collation = false;
2421
+
2422
+ // Tables with no collation, or latin1 only, don't need extra checking.
2423
+ if ( false === $collation || 'latin1' === $collation ) {
2424
+ return true;
2425
+ }
2426
+
2427
+ $table = strtolower( $table );
2428
+ if ( empty( $this->col_meta[ $table ] ) ) {
2429
+ return false;
2430
+ }
2431
+
2432
+ // If any of the columns don't have one of these collations, it needs more sanity checking.
2433
+ foreach( $this->col_meta[ $table ] as $col ) {
2434
+ if ( empty( $col->Collation ) ) {
2435
+ continue;
2436
+ }
2437
+
2438
+ if ( ! in_array( $col->Collation, array( 'utf8_general_ci', 'utf8_bin', 'utf8mb4_general_ci', 'utf8mb4_bin' ), true ) ) {
2439
+ return false;
2440
+ }
2441
+ }
2442
+
2443
+ return true;
2444
+ }
2445
+
2446
+ /**
2447
+ * Strips any invalid characters based on value/charset pairs.
2448
+ *
2449
+ * @since 4.2.0
2450
+ * @access protected
2451
+ *
2452
+ * @param array $data Array of value arrays. Each value array has the keys
2453
+ * 'value' and 'charset'. An optional 'ascii' key can be
2454
+ * set to false to avoid redundant ASCII checks.
2455
+ * @return array|WP_Error The $data parameter, with invalid characters removed from
2456
+ * each value. This works as a passthrough: any additional keys
2457
+ * such as 'field' are retained in each value array. If we cannot
2458
+ * remove invalid characters, a WP_Error object is returned.
2459
+ */
2460
+ protected function strip_invalid_text( $data ) {
2461
+ // Some multibyte character sets that we can check in PHP.
2462
+ $mb_charsets = array(
2463
+ 'ascii' => 'ASCII',
2464
+ 'big5' => 'BIG-5',
2465
+ 'eucjpms' => 'eucJP-win',
2466
+ 'gb2312' => 'EUC-CN',
2467
+ 'ujis' => 'EUC-JP',
2468
+ 'utf32' => 'UTF-32',
2469
+ );
2470
+
2471
+ $supported_charsets = array();
2472
+ if ( function_exists( 'mb_list_encodings' ) ) {
2473
+ $supported_charsets = mb_list_encodings();
2474
+ }
2475
+
2476
+ $db_check_string = false;
2477
+
2478
+ foreach ( $data as &$value ) {
2479
+ $charset = $value['charset'];
2480
+
2481
+ // Column isn't a string, or is latin1, which will will happily store anything.
2482
+ if ( false === $charset || 'latin1' === $charset ) {
2483
+ continue;
2484
+ }
2485
+
2486
+ if ( ! is_string( $value['value'] ) ) {
2487
+ continue;
2488
+ }
2489
+
2490
+ // ASCII is always OK.
2491
+ if ( ! isset( $value['ascii'] ) && $this->check_ascii( $value['value'] ) ) {
2492
+ continue;
2493
+ }
2494
+
2495
+ // Convert the text locally.
2496
+ if ( $supported_charsets ) {
2497
+ if ( isset( $mb_charsets[ $charset ] ) && in_array( $mb_charsets[ $charset ], $supported_charsets ) ) {
2498
+ $value['value'] = mb_convert_encoding( $value['value'], $mb_charsets[ $charset ], $mb_charsets[ $charset ] );
2499
+ continue;
2500
+ }
2501
+ }
2502
+
2503
+ // utf8 can be handled by regex, which is a bunch faster than a DB lookup.
2504
+ if ( 'utf8' === $charset || 'utf8mb3' === $charset || 'utf8mb4' === $charset ) {
2505
+ $regex = '/
2506
+ (
2507
+ (?: [\x00-\x7F] # single-byte sequences 0xxxxxxx
2508
+ | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
2509
+ | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
2510
+ | [\xE1-\xEC][\x80-\xBF]{2}
2511
+ | \xED[\x80-\x9F][\x80-\xBF]
2512
+ | [\xEE-\xEF][\x80-\xBF]{2}';
2513
+
2514
+ if ( 'utf8mb4' === $charset) {
2515
+ $regex .= '
2516
+ | \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3
2517
+ | [\xF1-\xF3][\x80-\xBF]{3}
2518
+ | \xF4[\x80-\x8F][\x80-\xBF]{2}
2519
+ ';
2520
+ }
2521
+
2522
+ $regex .= '){1,50} # ...one or more times
2523
+ )
2524
+ | . # anything else
2525
+ /x';
2526
+ $value['value'] = preg_replace( $regex, '$1', $value['value'] );
2527
+ continue;
2528
+ }
2529
+
2530
+ // We couldn't use any local conversions, send it to the DB.
2531
+ $value['db'] = $db_check_string = true;
2532
+ }
2533
+ unset( $value ); // Remove by reference.
2534
+
2535
+ if ( $db_check_string ) {
2536
+ $queries = array();
2537
+ foreach ( $data as $col => $value ) {
2538
+ if ( ! empty( $value['db'] ) ) {
2539
+ if ( ! isset( $queries[ $value['charset'] ] ) ) {
2540
+ $queries[ $value['charset'] ] = array();
2541
+ }
2542
+
2543
+ // Split the CONVERT() calls by charset, so we can make sure the connection is right
2544
+ $queries[ $value['charset'] ][ $col ] = $this->prepare( "CONVERT( %s USING {$value['charset']} )", $value['value'] );
2545
+ unset( $data[ $col ]['db'] );
2546
+ }
2547
+ }
2548
+
2549
+ $connection_charset = $this->charset;
2550
+ foreach ( $queries as $charset => $query ) {
2551
+ if ( ! $query ) {
2552
+ continue;
2553
+ }
2554
+
2555
+ // Change the charset to match the string(s) we're converting
2556
+ if ( $charset !== $connection_charset ) {
2557
+ $connection_charset = $charset;
2558
+ $this->set_charset( $this->dbh, $charset );
2559
+ }
2560
+
2561
+ $this->check_current_query = false;
2562
+
2563
+ $row = $this->get_row( "SELECT " . implode( ', ', $query ), ARRAY_N );
2564
+ if ( ! $row ) {
2565
+ $this->set_charset( $this->dbh, $connection_charset );
2566
+ return new WP_Error( 'wpdb_strip_invalid_text_failure' );
2567
+ }
2568
+
2569
+ $cols = array_keys( $query );
2570
+ $col_count = count( $cols );
2571
+ for ( $ii = 0; $ii < $col_count; $ii++ ) {
2572
+ $data[ $cols[ $ii ] ]['value'] = $row[ $ii ];
2573
+ }
2574
+ }
2575
+
2576
+ // Don't forget to change the charset back!
2577
+ if ( $connection_charset !== $this->charset ) {
2578
+ $this->set_charset( $this->dbh );
2579
+ }
2580
+ }
2581
+
2582
+ return $data;
2583
+ }
2584
+
2585
+ /**
2586
+ * Strips any invalid characters from the query.
2587
+ *
2588
+ * @since 4.2.0
2589
+ * @access protected
2590
+ *
2591
+ * @param string $query Query to convert.
2592
+ * @return string|WP_Error The converted query, or a WP_Error object if the conversion fails.
2593
+ */
2594
+ protected function strip_invalid_text_from_query( $query ) {
2595
+ $table = $this->get_table_from_query( $query );
2596
+ if ( $table ) {
2597
+ $charset = $this->get_table_charset( $table );
2598
+ if ( is_wp_error( $charset ) ) {
2599
+ return $charset;
2600
+ }
2601
+
2602
+ // We can't reliably strip text from tables containing binary/blob columns
2603
+ if ( 'binary' === $charset ) {
2604
+ return $query;
2605
+ }
2606
+ } else {
2607
+ $charset = $this->charset;
2608
+ }
2609
+
2610
+ $data = array(
2611
+ 'value' => $query,
2612
+ 'charset' => $charset,
2613
+ 'ascii' => false,
2614
+ );
2615
+
2616
+ $data = $this->strip_invalid_text( array( $data ) );
2617
+ if ( is_wp_error( $data ) ) {
2618
+ return $data;
2619
+ }
2620
+
2621
+ return $data[0]['value'];
2622
+ }
2623
+
2624
+ /**
2625
+ * Strips any invalid characters from the string for a given table and column.
2626
+ *
2627
+ * @since 4.2.0
2628
+ * @access public
2629
+ *
2630
+ * @param string $table Table name.
2631
+ * @param string $column Column name.
2632
+ * @param string $value The text to check.
2633
+ * @return string|WP_Error The converted string, or a WP_Error object if the conversion fails.
2634
+ */
2635
+ public function strip_invalid_text_for_column( $table, $column, $value ) {
2636
+ if ( ! is_string( $value ) || $this->check_ascii( $value ) ) {
2637
+ return $value;
2638
+ }
2639
+
2640
+ $charset = $this->get_col_charset( $table, $column );
2641
+ if ( ! $charset ) {
2642
+ // Not a string column.
2643
+ return $value;
2644
+ } elseif ( is_wp_error( $charset ) ) {
2645
+ // Bail on real errors.
2646
+ return $charset;
2647
+ }
2648
+
2649
+ $data = array(
2650
+ $column => array(
2651
+ 'value' => $value,
2652
+ 'charset' => $charset,
2653
+ 'ascii' => false,
2654
+ )
2655
+ );
2656
+
2657
+ $data = $this->strip_invalid_text( $data );
2658
+ if ( is_wp_error( $data ) ) {
2659
+ return $data;
2660
+ }
2661
+
2662
+ return $data[ $column ]['value'];
2663
+ }
2664
+
2665
+ /**
2666
+ * Find the first table name referenced in a query.
2667
+ *
2668
+ * @since 4.2.0
2669
+ * @access protected
2670
+ *
2671
+ * @param string $query The query to search.
2672
+ * @return string|false $table The table name found, or false if a table couldn't be found.
2673
+ */
2674
+ protected function get_table_from_query( $query ) {
2675
+ // Remove characters that can legally trail the table name.
2676
+ $query = rtrim( $query, ';/-#' );
2677
+
2678
+ // Allow (select...) union [...] style queries. Use the first query's table name.
2679
+ $query = ltrim( $query, "\r\n\t (" );
2680
+
2681
+ /*
2682
+ * Strip everything between parentheses except nested selects and use only 1,000
2683
+ * chars of the query.
2684
+ */
2685
+ $query = preg_replace( '/\((?!\s*select)[^(]*?\)/is', '()', substr( $query, 0, 1000 ) );
2686
+
2687
+ // Quickly match most common queries.
2688
+ if ( preg_match( '/^\s*(?:'
2689
+ . 'SELECT.*?\s+FROM'
2690
+ . '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?'
2691
+ . '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?'
2692
+ . '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
2693
+ . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?'
2694
+ . ')\s+`?([\w-]+)`?/is', $query, $maybe ) ) {
2695
+ return $maybe[1];
2696
+ }
2697
+
2698
+ // SHOW TABLE STATUS and SHOW TABLES
2699
+ if ( preg_match( '/^\s*(?:'
2700
+ . 'SHOW\s+TABLE\s+STATUS.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
2701
+ . '|SHOW\s+(?:FULL\s+)?TABLES.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
2702
+ . ')\W([\w-]+)\W/is', $query, $maybe ) ) {
2703
+ return $maybe[1];
2704
+ }
2705
+
2706
+ // Big pattern for the rest of the table-related queries.
2707
+ if ( preg_match( '/^\s*(?:'
2708
+ . '(?:EXPLAIN\s+(?:EXTENDED\s+)?)?SELECT.*?\s+FROM'
2709
+ . '|DESCRIBE|DESC|EXPLAIN|HANDLER'
2710
+ . '|(?:LOCK|UNLOCK)\s+TABLE(?:S)?'
2711
+ . '|(?:RENAME|OPTIMIZE|BACKUP|RESTORE|CHECK|CHECKSUM|ANALYZE|REPAIR).*\s+TABLE'
2712
+ . '|TRUNCATE(?:\s+TABLE)?'
2713
+ . '|CREATE(?:\s+TEMPORARY)?\s+TABLE(?:\s+IF\s+NOT\s+EXISTS)?'
2714
+ . '|ALTER(?:\s+IGNORE)?\s+TABLE'
2715
+ . '|DROP\s+TABLE(?:\s+IF\s+EXISTS)?'
2716
+ . '|CREATE(?:\s+\w+)?\s+INDEX.*\s+ON'
2717
+ . '|DROP\s+INDEX.*\s+ON'
2718
+ . '|LOAD\s+DATA.*INFILE.*INTO\s+TABLE'
2719
+ . '|(?:GRANT|REVOKE).*ON\s+TABLE'
2720
+ . '|SHOW\s+(?:.*FROM|.*TABLE)'
2721
+ . ')\s+\(*\s*`?([\w-]+)`?\s*\)*/is', $query, $maybe ) ) {
2722
+ return $maybe[1];
2723
+ }
2724
+
2725
+ return false;
2726
+ }
2727
+
2728
+ /**
2729
+ * Load the column metadata from the last query.
2730
+ *
2731
+ * @since 3.5.0
2732
+ *
2733
+ * @access protected
2734
+ */
2735
+ protected function load_col_info() {
2736
+ if ( $this->col_info )
2737
+ return;
2738
+
2739
+ if ( $this->use_mysqli ) {
2740
+ for ( $i = 0; $i < @mysqli_num_fields( $this->result ); $i++ ) {
2741
+ $this->col_info[ $i ] = @mysqli_fetch_field( $this->result );
2742
+ }
2743
+ } else {
2744
+ for ( $i = 0; $i < @mysql_num_fields( $this->result ); $i++ ) {
2745
+ $this->col_info[ $i ] = @mysql_fetch_field( $this->result, $i );
2746
+ }
2747
+ }
2748
+ }
2749
+
2750
+ /**
2751
+ * Retrieve column metadata from the last query.
2752
+ *
2753
+ * @since 0.71
2754
+ *
2755
+ * @param string $info_type Optional. Type one of name, table, def, max_length, not_null, primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill
2756
+ * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type
2757
+ * @return mixed Column Results
2758
+ */
2759
+ public function get_col_info( $info_type = 'name', $col_offset = -1 ) {
2760
+ $this->load_col_info();
2761
+
2762
+ if ( $this->col_info ) {
2763
+ if ( $col_offset == -1 ) {
2764
+ $i = 0;
2765
+ $new_array = array();
2766
+ foreach( (array) $this->col_info as $col ) {
2767
+ $new_array[$i] = $col->{$info_type};
2768
+ $i++;
2769
+ }
2770
+ return $new_array;
2771
+ } else {
2772
+ return $this->col_info[$col_offset]->{$info_type};
2773
+ }
2774
+ }
2775
+ }
2776
+
2777
+ /**
2778
+ * Starts the timer, for debugging purposes.
2779
+ *
2780
+ * @since 1.5.0
2781
+ *
2782
+ * @return bool
2783
+ */
2784
+ public function timer_start() {
2785
+ $this->time_start = microtime( true );
2786
+ return true;
2787
+ }
2788
+
2789
+ /**
2790
+ * Stops the debugging timer.
2791
+ *
2792
+ * @since 1.5.0
2793
+ *
2794
+ * @return float Total time spent on the query, in seconds
2795
+ */
2796
+ public function timer_stop() {
2797
+ return ( microtime( true ) - $this->time_start );
2798
+ }
2799
+
2800
+ /**
2801
+ * Wraps errors in a nice header and footer and dies.
2802
+ *
2803
+ * Will not die if wpdb::$show_errors is false.
2804
+ *
2805
+ * @since 1.5.0
2806
+ *
2807
+ * @param string $message The Error message
2808
+ * @param string $error_code Optional. A Computer readable string to identify the error.
2809
+ * @return false|void
2810
+ */
2811
+ public function bail( $message, $error_code = '500' ) {
2812
+ if ( !$this->show_errors ) {
2813
+ if ( class_exists( 'WP_Error' ) )
2814
+ $this->error = new WP_Error($error_code, $message);
2815
+ else
2816
+ $this->error = $message;
2817
+ return false;
2818
+ }
2819
+ wp_die($message);
2820
+ }
2821
+
2822
+ /**
2823
+ * Whether MySQL database is at least the required minimum version.
2824
+ *
2825
+ * @since 2.5.0
2826
+ * @uses $wp_version
2827
+ * @uses $required_mysql_version
2828
+ *
2829
+ * @return WP_Error
2830
+ */
2831
+ public function check_database_version() {
2832
+ global $wp_version, $required_mysql_version;
2833
+ // Make sure the server has the required MySQL version
2834
+ if ( version_compare($this->db_version(), $required_mysql_version, '<') )
2835
+ return new WP_Error('database_version', sprintf( __( '<strong>ERROR</strong>: WordPress %1$s requires MySQL %2$s or higher' ), $wp_version, $required_mysql_version ));
2836
+ }
2837
+
2838
+ /**
2839
+ * Whether the database supports collation.
2840
+ *
2841
+ * Called when WordPress is generating the table scheme.
2842
+ *
2843
+ * @since 2.5.0
2844
+ * @deprecated 3.5.0
2845
+ * @deprecated Use wpdb::has_cap( 'collation' )
2846
+ *
2847
+ * @return bool True if collation is supported, false if version does not
2848
+ */
2849
+ public function supports_collation() {
2850
+ _deprecated_function( __FUNCTION__, '3.5', 'wpdb::has_cap( \'collation\' )' );
2851
+ return $this->has_cap( 'collation' );
2852
+ }
2853
+
2854
+ /**
2855
+ * The database character collate.
2856
+ *
2857
+ * @since 3.5.0
2858
+ *
2859
+ * @return string The database character collate.
2860
+ */
2861
+ public function get_charset_collate() {
2862
+ $charset_collate = '';
2863
+
2864
+ if ( ! empty( $this->charset ) )
2865
+ $charset_collate = "DEFAULT CHARACTER SET $this->charset";
2866
+ if ( ! empty( $this->collate ) )
2867
+ $charset_collate .= " COLLATE $this->collate";
2868
+
2869
+ return $charset_collate;
2870
+ }
2871
+
2872
+ /**
2873
+ * Determine if a database supports a particular feature.
2874
+ *
2875
+ * @since 2.7.0
2876
+ * @since 4.1.0 Support was added for the 'utf8mb4' feature.
2877
+ *
2878
+ * @see wpdb::db_version()
2879
+ *
2880
+ * @param string $db_cap The feature to check for. Accepts 'collation',
2881
+ * 'group_concat', 'subqueries', 'set_charset',
2882
+ * or 'utf8mb4'.
2883
+ * @return bool Whether the database feature is supported, false otherwise.
2884
+ */
2885
+ public function has_cap( $db_cap ) {
2886
+ $version = $this->db_version();
2887
+
2888
+ switch ( strtolower( $db_cap ) ) {
2889
+ case 'collation' : // @since 2.5.0
2890
+ case 'group_concat' : // @since 2.7.0
2891
+ case 'subqueries' : // @since 2.7.0
2892
+ return version_compare( $version, '4.1', '>=' );
2893
+ case 'set_charset' :
2894
+ return version_compare( $version, '5.0.7', '>=' );
2895
+ case 'utf8mb4' : // @since 4.1.0
2896
+ if ( version_compare( $version, '5.5.3', '<' ) ) {
2897
+ return false;
2898
+ }
2899
+ if ( $this->use_mysqli ) {
2900
+ $client_version = mysqli_get_client_info();
2901
+ } else {
2902
+ $client_version = mysql_get_client_info();
2903
+ }
2904
+
2905
+ /*
2906
+ * libmysql has supported utf8mb4 since 5.5.3, same as the MySQL server.
2907
+ * mysqlnd has supported utf8mb4 since 5.0.9.
2908
+ */
2909
+ if ( false !== strpos( $client_version, 'mysqlnd' ) ) {
2910
+ $client_version = preg_replace( '/^\D+([\d.]+).*/', '$1', $client_version );
2911
+ return version_compare( $client_version, '5.0.9', '>=' );
2912
+ } else {
2913
+ return version_compare( $client_version, '5.5.3', '>=' );
2914
+ }
2915
+ }
2916
+
2917
+ return false;
2918
+ }
2919
+
2920
+ /**
2921
+ * Retrieve the name of the function that called wpdb.
2922
+ *
2923
+ * Searches up the list of functions until it reaches
2924
+ * the one that would most logically had called this method.
2925
+ *
2926
+ * @since 2.5.0
2927
+ *
2928
+ * @return string The name of the calling function
2929
+ */
2930
+ public function get_caller() {
2931
+ return wp_debug_backtrace_summary( __CLASS__ );
2932
+ }
2933
+
2934
+ /**
2935
+ * The database version number.
2936
+ *
2937
+ * @since 2.7.0
2938
+ *
2939
+ * @return null|string Null on failure, version number on success.
2940
+ */
2941
+ public function db_version() {
2942
+ if ( $this->use_mysqli ) {
2943
+ $server_info = mysqli_get_server_info( $this->dbh );
2944
+ } else {
2945
+ $server_info = mysql_get_server_info( $this->dbh );
2946
+ }
2947
+ return preg_replace( '/[^0-9.].*/', '', $server_info );
2948
+ }
2949
+ }