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,268 @@
1
+ <?php
2
+ /**
3
+ * Portable PHP password hashing framework.
4
+ * @package phpass
5
+ * @since 2.5.0
6
+ * @version 0.3 / WordPress
7
+ * @link http://www.openwall.com/phpass/
8
+ */
9
+
10
+ #
11
+ # Written by Solar Designer <solar at openwall.com> in 2004-2006 and placed in
12
+ # the public domain. Revised in subsequent years, still public domain.
13
+ #
14
+ # There's absolutely no warranty.
15
+ #
16
+ # Please be sure to update the Version line if you edit this file in any way.
17
+ # It is suggested that you leave the main version number intact, but indicate
18
+ # your project name (after the slash) and add your own revision information.
19
+ #
20
+ # Please do not change the "private" password hashing method implemented in
21
+ # here, thereby making your hashes incompatible. However, if you must, please
22
+ # change the hash type identifier (the "$P$") to something different.
23
+ #
24
+ # Obviously, since this code is in the public domain, the above are not
25
+ # requirements (there can be none), but merely suggestions.
26
+ #
27
+
28
+ /**
29
+ * Portable PHP password hashing framework.
30
+ *
31
+ * @package phpass
32
+ * @version 0.3 / WordPress
33
+ * @link http://www.openwall.com/phpass/
34
+ * @since 2.5.0
35
+ */
36
+ class PasswordHash {
37
+ var $itoa64;
38
+ var $iteration_count_log2;
39
+ var $portable_hashes;
40
+ var $random_state;
41
+
42
+ function PasswordHash($iteration_count_log2, $portable_hashes)
43
+ {
44
+ $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
45
+
46
+ if ($iteration_count_log2 < 4 || $iteration_count_log2 > 31)
47
+ $iteration_count_log2 = 8;
48
+ $this->iteration_count_log2 = $iteration_count_log2;
49
+
50
+ $this->portable_hashes = $portable_hashes;
51
+
52
+ $this->random_state = microtime() . uniqid(rand(), TRUE); // removed getmypid() for compatibility reasons
53
+ }
54
+
55
+ function get_random_bytes($count)
56
+ {
57
+ $output = '';
58
+ if ( @is_readable('/dev/urandom') &&
59
+ ($fh = @fopen('/dev/urandom', 'rb'))) {
60
+ $output = fread($fh, $count);
61
+ fclose($fh);
62
+ }
63
+
64
+ if (strlen($output) < $count) {
65
+ $output = '';
66
+ for ($i = 0; $i < $count; $i += 16) {
67
+ $this->random_state =
68
+ md5(microtime() . $this->random_state);
69
+ $output .=
70
+ pack('H*', md5($this->random_state));
71
+ }
72
+ $output = substr($output, 0, $count);
73
+ }
74
+
75
+ return $output;
76
+ }
77
+
78
+ function encode64($input, $count)
79
+ {
80
+ $output = '';
81
+ $i = 0;
82
+ do {
83
+ $value = ord($input[$i++]);
84
+ $output .= $this->itoa64[$value & 0x3f];
85
+ if ($i < $count)
86
+ $value |= ord($input[$i]) << 8;
87
+ $output .= $this->itoa64[($value >> 6) & 0x3f];
88
+ if ($i++ >= $count)
89
+ break;
90
+ if ($i < $count)
91
+ $value |= ord($input[$i]) << 16;
92
+ $output .= $this->itoa64[($value >> 12) & 0x3f];
93
+ if ($i++ >= $count)
94
+ break;
95
+ $output .= $this->itoa64[($value >> 18) & 0x3f];
96
+ } while ($i < $count);
97
+
98
+ return $output;
99
+ }
100
+
101
+ function gensalt_private($input)
102
+ {
103
+ $output = '$P$';
104
+ $output .= $this->itoa64[min($this->iteration_count_log2 +
105
+ ((PHP_VERSION >= '5') ? 5 : 3), 30)];
106
+ $output .= $this->encode64($input, 6);
107
+
108
+ return $output;
109
+ }
110
+
111
+ function crypt_private($password, $setting)
112
+ {
113
+ $output = '*0';
114
+ if (substr($setting, 0, 2) == $output)
115
+ $output = '*1';
116
+
117
+ $id = substr($setting, 0, 3);
118
+ # We use "$P$", phpBB3 uses "$H$" for the same thing
119
+ if ($id != '$P$' && $id != '$H$')
120
+ return $output;
121
+
122
+ $count_log2 = strpos($this->itoa64, $setting[3]);
123
+ if ($count_log2 < 7 || $count_log2 > 30)
124
+ return $output;
125
+
126
+ $count = 1 << $count_log2;
127
+
128
+ $salt = substr($setting, 4, 8);
129
+ if (strlen($salt) != 8)
130
+ return $output;
131
+
132
+ # We're kind of forced to use MD5 here since it's the only
133
+ # cryptographic primitive available in all versions of PHP
134
+ # currently in use. To implement our own low-level crypto
135
+ # in PHP would result in much worse performance and
136
+ # consequently in lower iteration counts and hashes that are
137
+ # quicker to crack (by non-PHP code).
138
+ if (PHP_VERSION >= '5') {
139
+ $hash = md5($salt . $password, TRUE);
140
+ do {
141
+ $hash = md5($hash . $password, TRUE);
142
+ } while (--$count);
143
+ } else {
144
+ $hash = pack('H*', md5($salt . $password));
145
+ do {
146
+ $hash = pack('H*', md5($hash . $password));
147
+ } while (--$count);
148
+ }
149
+
150
+ $output = substr($setting, 0, 12);
151
+ $output .= $this->encode64($hash, 16);
152
+
153
+ return $output;
154
+ }
155
+
156
+ function gensalt_extended($input)
157
+ {
158
+ $count_log2 = min($this->iteration_count_log2 + 8, 24);
159
+ # This should be odd to not reveal weak DES keys, and the
160
+ # maximum valid value is (2**24 - 1) which is odd anyway.
161
+ $count = (1 << $count_log2) - 1;
162
+
163
+ $output = '_';
164
+ $output .= $this->itoa64[$count & 0x3f];
165
+ $output .= $this->itoa64[($count >> 6) & 0x3f];
166
+ $output .= $this->itoa64[($count >> 12) & 0x3f];
167
+ $output .= $this->itoa64[($count >> 18) & 0x3f];
168
+
169
+ $output .= $this->encode64($input, 3);
170
+
171
+ return $output;
172
+ }
173
+
174
+ function gensalt_blowfish($input)
175
+ {
176
+ # This one needs to use a different order of characters and a
177
+ # different encoding scheme from the one in encode64() above.
178
+ # We care because the last character in our encoded string will
179
+ # only represent 2 bits. While two known implementations of
180
+ # bcrypt will happily accept and correct a salt string which
181
+ # has the 4 unused bits set to non-zero, we do not want to take
182
+ # chances and we also do not want to waste an additional byte
183
+ # of entropy.
184
+ $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
185
+
186
+ $output = '$2a$';
187
+ $output .= chr(ord('0') + $this->iteration_count_log2 / 10);
188
+ $output .= chr(ord('0') + $this->iteration_count_log2 % 10);
189
+ $output .= '$';
190
+
191
+ $i = 0;
192
+ do {
193
+ $c1 = ord($input[$i++]);
194
+ $output .= $itoa64[$c1 >> 2];
195
+ $c1 = ($c1 & 0x03) << 4;
196
+ if ($i >= 16) {
197
+ $output .= $itoa64[$c1];
198
+ break;
199
+ }
200
+
201
+ $c2 = ord($input[$i++]);
202
+ $c1 |= $c2 >> 4;
203
+ $output .= $itoa64[$c1];
204
+ $c1 = ($c2 & 0x0f) << 2;
205
+
206
+ $c2 = ord($input[$i++]);
207
+ $c1 |= $c2 >> 6;
208
+ $output .= $itoa64[$c1];
209
+ $output .= $itoa64[$c2 & 0x3f];
210
+ } while (1);
211
+
212
+ return $output;
213
+ }
214
+
215
+ function HashPassword($password)
216
+ {
217
+ if ( strlen( $password ) > 4096 ) {
218
+ return '*';
219
+ }
220
+
221
+ $random = '';
222
+
223
+ if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) {
224
+ $random = $this->get_random_bytes(16);
225
+ $hash =
226
+ crypt($password, $this->gensalt_blowfish($random));
227
+ if (strlen($hash) == 60)
228
+ return $hash;
229
+ }
230
+
231
+ if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) {
232
+ if (strlen($random) < 3)
233
+ $random = $this->get_random_bytes(3);
234
+ $hash =
235
+ crypt($password, $this->gensalt_extended($random));
236
+ if (strlen($hash) == 20)
237
+ return $hash;
238
+ }
239
+
240
+ if (strlen($random) < 6)
241
+ $random = $this->get_random_bytes(6);
242
+ $hash =
243
+ $this->crypt_private($password,
244
+ $this->gensalt_private($random));
245
+ if (strlen($hash) == 34)
246
+ return $hash;
247
+
248
+ # Returning '*' on error is safe here, but would _not_ be safe
249
+ # in a crypt(3)-like function used _both_ for generating new
250
+ # hashes and for validating passwords against existing hashes.
251
+ return '*';
252
+ }
253
+
254
+ function CheckPassword($password, $stored_hash)
255
+ {
256
+ if ( strlen( $password ) > 4096 ) {
257
+ return false;
258
+ }
259
+
260
+ $hash = $this->crypt_private($password, $stored_hash);
261
+ if ($hash[0] == '*')
262
+ $hash = crypt($password, $stored_hash);
263
+
264
+ return $hash === $stored_hash;
265
+ }
266
+ }
267
+
268
+ ?>
@@ -0,0 +1,3265 @@
1
+ <?php
2
+ /**
3
+ * PHPMailer - PHP email creation and transport class.
4
+ * PHP Version 5.0.0
5
+ * Version 5.2.7
6
+ * @package PHPMailer
7
+ * @link https://github.com/PHPMailer/PHPMailer/
8
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
9
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
10
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
11
+ * @author Brent R. Matzelle (original founder)
12
+ * @copyright 2013 Marcus Bointon
13
+ * @copyright 2010 - 2012 Jim Jagielski
14
+ * @copyright 2004 - 2009 Andy Prevost
15
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
16
+ * @note This program is distributed in the hope that it will be useful - WITHOUT
17
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18
+ * FITNESS FOR A PARTICULAR PURPOSE.
19
+ */
20
+
21
+ if (version_compare(PHP_VERSION, '5.0.0', '<')) {
22
+ exit("Sorry, PHPMailer will only run on PHP version 5 or greater!\n");
23
+ }
24
+
25
+ /**
26
+ * PHPMailer - PHP email creation and transport class.
27
+ * PHP Version 5.0.0
28
+ * @package PHPMailer
29
+ * @author Marcus Bointon (coolbru) <phpmailer@synchromedia.co.uk>
30
+ * @author Jim Jagielski (jimjag) <jimjag@gmail.com>
31
+ * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
32
+ * @author Brent R. Matzelle (original founder)
33
+ * @copyright 2013 Marcus Bointon
34
+ * @copyright 2010 - 2012 Jim Jagielski
35
+ * @copyright 2004 - 2009 Andy Prevost
36
+ */
37
+ class PHPMailer
38
+ {
39
+ /**
40
+ * The PHPMailer Version number.
41
+ * @type string
42
+ */
43
+ public $Version = '5.2.7';
44
+
45
+ /**
46
+ * Email priority.
47
+ * Options: 1 = High, 3 = Normal, 5 = low.
48
+ * @type int
49
+ */
50
+ public $Priority = 3;
51
+
52
+ /**
53
+ * The character set of the message.
54
+ * @type string
55
+ */
56
+ public $CharSet = 'iso-8859-1';
57
+
58
+ /**
59
+ * The MIME Content-type of the message.
60
+ * @type string
61
+ */
62
+ public $ContentType = 'text/plain';
63
+
64
+ /**
65
+ * The message encoding.
66
+ * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable".
67
+ * @type string
68
+ */
69
+ public $Encoding = '8bit';
70
+
71
+ /**
72
+ * Holds the most recent mailer error message.
73
+ * @type string
74
+ */
75
+ public $ErrorInfo = '';
76
+
77
+ /**
78
+ * The From email address for the message.
79
+ * @type string
80
+ */
81
+ public $From = 'root@localhost';
82
+
83
+ /**
84
+ * The From name of the message.
85
+ * @type string
86
+ */
87
+ public $FromName = 'Root User';
88
+
89
+ /**
90
+ * The Sender email (Return-Path) of the message.
91
+ * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
92
+ * @type string
93
+ */
94
+ public $Sender = '';
95
+
96
+ /**
97
+ * The Return-Path of the message.
98
+ * If empty, it will be set to either From or Sender.
99
+ * @type string
100
+ */
101
+ public $ReturnPath = '';
102
+
103
+ /**
104
+ * The Subject of the message.
105
+ * @type string
106
+ */
107
+ public $Subject = '';
108
+
109
+ /**
110
+ * An HTML or plain text message body.
111
+ * If HTML then call isHTML(true).
112
+ * @type string
113
+ */
114
+ public $Body = '';
115
+
116
+ /**
117
+ * The plain-text message body.
118
+ * This body can be read by mail clients that do not have HTML email
119
+ * capability such as mutt & Eudora.
120
+ * Clients that can read HTML will view the normal Body.
121
+ * @type string
122
+ */
123
+ public $AltBody = '';
124
+
125
+ /**
126
+ * An iCal message part body.
127
+ * Only supported in simple alt or alt_inline message types
128
+ * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator
129
+ * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/
130
+ * @link http://kigkonsult.se/iCalcreator/
131
+ * @type string
132
+ */
133
+ public $Ical = '';
134
+
135
+ /**
136
+ * The complete compiled MIME message body.
137
+ * @access protected
138
+ * @type string
139
+ */
140
+ protected $MIMEBody = '';
141
+
142
+ /**
143
+ * The complete compiled MIME message headers.
144
+ * @type string
145
+ * @access protected
146
+ */
147
+ protected $MIMEHeader = '';
148
+
149
+ /**
150
+ * Extra headers that createHeader() doesn't fold in.
151
+ * @type string
152
+ * @access protected
153
+ */
154
+ protected $mailHeader = '';
155
+
156
+ /**
157
+ * Word-wrap the message body to this number of chars.
158
+ * @type int
159
+ */
160
+ public $WordWrap = 0;
161
+
162
+ /**
163
+ * Which method to use to send mail.
164
+ * Options: "mail", "sendmail", or "smtp".
165
+ * @type string
166
+ */
167
+ public $Mailer = 'mail';
168
+
169
+ /**
170
+ * The path to the sendmail program.
171
+ * @type string
172
+ */
173
+ public $Sendmail = '/usr/sbin/sendmail';
174
+
175
+ /**
176
+ * Whether mail() uses a fully sendmail-compatible MTA.
177
+ * One which supports sendmail's "-oi -f" options.
178
+ * @type bool
179
+ */
180
+ public $UseSendmailOptions = true;
181
+
182
+ /**
183
+ * Path to PHPMailer plugins.
184
+ * Useful if the SMTP class is not in the PHP include path.
185
+ * @type string
186
+ * @deprecated Should not be needed now there is an autoloader.
187
+ */
188
+ public $PluginDir = '';
189
+
190
+ /**
191
+ * The email address that a reading confirmation should be sent to.
192
+ * @type string
193
+ */
194
+ public $ConfirmReadingTo = '';
195
+
196
+ /**
197
+ * The hostname to use in Message-Id and Received headers
198
+ * and as default HELO string.
199
+ * If empty, the value returned
200
+ * by SERVER_NAME is used or 'localhost.localdomain'.
201
+ * @type string
202
+ */
203
+ public $Hostname = '';
204
+
205
+ /**
206
+ * An ID to be used in the Message-Id header.
207
+ * If empty, a unique id will be generated.
208
+ * @type string
209
+ */
210
+ public $MessageID = '';
211
+
212
+ /**
213
+ * The message Date to be used in the Date header.
214
+ * If empty, the current date will be added.
215
+ * @type string
216
+ */
217
+ public $MessageDate = '';
218
+
219
+ /**
220
+ * SMTP hosts.
221
+ * Either a single hostname or multiple semicolon-delimited hostnames.
222
+ * You can also specify a different port
223
+ * for each host by using this format: [hostname:port]
224
+ * (e.g. "smtp1.example.com:25;smtp2.example.com").
225
+ * Hosts will be tried in order.
226
+ * @type string
227
+ */
228
+ public $Host = 'localhost';
229
+
230
+ /**
231
+ * The default SMTP server port.
232
+ * @type int
233
+ * @Todo Why is this needed when the SMTP class takes care of it?
234
+ */
235
+ public $Port = 25;
236
+
237
+ /**
238
+ * The SMTP HELO of the message.
239
+ * Default is $Hostname.
240
+ * @type string
241
+ * @see PHPMailer::$Hostname
242
+ */
243
+ public $Helo = '';
244
+
245
+ /**
246
+ * The secure connection prefix.
247
+ * Options: "", "ssl" or "tls"
248
+ * @type string
249
+ */
250
+ public $SMTPSecure = '';
251
+
252
+ /**
253
+ * Whether to use SMTP authentication.
254
+ * Uses the Username and Password properties.
255
+ * @type bool
256
+ * @see PHPMailer::$Username
257
+ * @see PHPMailer::$Password
258
+ */
259
+ public $SMTPAuth = false;
260
+
261
+ /**
262
+ * SMTP username.
263
+ * @type string
264
+ */
265
+ public $Username = '';
266
+
267
+ /**
268
+ * SMTP password.
269
+ * @type string
270
+ */
271
+ public $Password = '';
272
+
273
+ /**
274
+ * SMTP auth type.
275
+ * Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
276
+ * @type string
277
+ */
278
+ public $AuthType = '';
279
+
280
+ /**
281
+ * SMTP realm.
282
+ * Used for NTLM auth
283
+ * @type string
284
+ */
285
+ public $Realm = '';
286
+
287
+ /**
288
+ * SMTP workstation.
289
+ * Used for NTLM auth
290
+ * @type string
291
+ */
292
+ public $Workstation = '';
293
+
294
+ /**
295
+ * The SMTP server timeout in seconds.
296
+ * @type int
297
+ */
298
+ public $Timeout = 10;
299
+
300
+ /**
301
+ * SMTP class debug output mode.
302
+ * Options: 0 = off, 1 = commands, 2 = commands and data
303
+ * @type int
304
+ * @see SMTP::$do_debug
305
+ */
306
+ public $SMTPDebug = 0;
307
+
308
+ /**
309
+ * The function/method to use for debugging output.
310
+ * Options: "echo" or "error_log"
311
+ * @type string
312
+ * @see SMTP::$Debugoutput
313
+ */
314
+ public $Debugoutput = "echo";
315
+
316
+ /**
317
+ * Whether to keep SMTP connection open after each message.
318
+ * If this is set to true then to close the connection
319
+ * requires an explicit call to smtpClose().
320
+ * @type bool
321
+ */
322
+ public $SMTPKeepAlive = false;
323
+
324
+ /**
325
+ * Whether to split multiple to addresses into multiple messages
326
+ * or send them all in one message.
327
+ * @type bool
328
+ */
329
+ public $SingleTo = false;
330
+
331
+ /**
332
+ * Storage for addresses when SingleTo is enabled.
333
+ * @type array
334
+ * @todo This should really not be public
335
+ */
336
+ public $SingleToArray = array();
337
+
338
+ /**
339
+ * Whether to generate VERP addresses on send.
340
+ * Only applicable when sending via SMTP.
341
+ * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path
342
+ * @type bool
343
+ */
344
+ public $do_verp = false;
345
+
346
+ /**
347
+ * Whether to allow sending messages with an empty body.
348
+ * @type bool
349
+ */
350
+ public $AllowEmpty = false;
351
+
352
+ /**
353
+ * The default line ending.
354
+ * @note The default remains "\n". We force CRLF where we know
355
+ * it must be used via self::CRLF.
356
+ * @type string
357
+ */
358
+ public $LE = "\n";
359
+
360
+ /**
361
+ * DKIM selector.
362
+ * @type string
363
+ */
364
+ public $DKIM_selector = '';
365
+
366
+ /**
367
+ * DKIM Identity.
368
+ * Usually the email address used as the source of the email
369
+ * @type string
370
+ */
371
+ public $DKIM_identity = '';
372
+
373
+ /**
374
+ * DKIM passphrase.
375
+ * Used if your key is encrypted.
376
+ * @type string
377
+ */
378
+ public $DKIM_passphrase = '';
379
+
380
+ /**
381
+ * DKIM signing domain name.
382
+ * @example 'example.com'
383
+ * @type string
384
+ */
385
+ public $DKIM_domain = '';
386
+
387
+ /**
388
+ * DKIM private key file path.
389
+ * @type string
390
+ */
391
+ public $DKIM_private = '';
392
+
393
+ /**
394
+ * Callback Action function name.
395
+ *
396
+ * The function that handles the result of the send email action.
397
+ * It is called out by send() for each email sent.
398
+ *
399
+ * Value can be:
400
+ * - 'function_name' for function names
401
+ * - 'Class::Method' for static method calls
402
+ * - array($object, 'Method') for calling methods on $object
403
+ * See http://php.net/is_callable manual page for more details.
404
+ *
405
+ * Parameters:
406
+ * bool $result result of the send action
407
+ * string $to email address of the recipient
408
+ * string $cc cc email addresses
409
+ * string $bcc bcc email addresses
410
+ * string $subject the subject
411
+ * string $body the email body
412
+ * string $from email address of sender
413
+ *
414
+ * @type string
415
+ */
416
+ public $action_function = '';
417
+
418
+ /**
419
+ * What to use in the X-Mailer header.
420
+ * Options: null for default, whitespace for none, or a string to use
421
+ * @type string
422
+ */
423
+ public $XMailer = '';
424
+
425
+ /**
426
+ * An instance of the SMTP sender class.
427
+ * @type SMTP
428
+ * @access protected
429
+ */
430
+ protected $smtp = null;
431
+
432
+ /**
433
+ * The array of 'to' addresses.
434
+ * @type array
435
+ * @access protected
436
+ */
437
+ protected $to = array();
438
+
439
+ /**
440
+ * The array of 'cc' addresses.
441
+ * @type array
442
+ * @access protected
443
+ */
444
+ protected $cc = array();
445
+
446
+ /**
447
+ * The array of 'bcc' addresses.
448
+ * @type array
449
+ * @access protected
450
+ */
451
+ protected $bcc = array();
452
+
453
+ /**
454
+ * The array of reply-to names and addresses.
455
+ * @type array
456
+ * @access protected
457
+ */
458
+ protected $ReplyTo = array();
459
+
460
+ /**
461
+ * An array of all kinds of addresses.
462
+ * Includes all of $to, $cc, $bcc, $replyto
463
+ * @type array
464
+ * @access protected
465
+ */
466
+ protected $all_recipients = array();
467
+
468
+ /**
469
+ * The array of attachments.
470
+ * @type array
471
+ * @access protected
472
+ */
473
+ protected $attachment = array();
474
+
475
+ /**
476
+ * The array of custom headers.
477
+ * @type array
478
+ * @access protected
479
+ */
480
+ protected $CustomHeader = array();
481
+
482
+ /**
483
+ * The most recent Message-ID (including angular brackets).
484
+ * @type string
485
+ * @access protected
486
+ */
487
+ protected $lastMessageID = '';
488
+
489
+ /**
490
+ * The message's MIME type.
491
+ * @type string
492
+ * @access protected
493
+ */
494
+ protected $message_type = '';
495
+
496
+ /**
497
+ * The array of MIME boundary strings.
498
+ * @type array
499
+ * @access protected
500
+ */
501
+ protected $boundary = array();
502
+
503
+ /**
504
+ * The array of available languages.
505
+ * @type array
506
+ * @access protected
507
+ */
508
+ protected $language = array();
509
+
510
+ /**
511
+ * The number of errors encountered.
512
+ * @type integer
513
+ * @access protected
514
+ */
515
+ protected $error_count = 0;
516
+
517
+ /**
518
+ * The S/MIME certificate file path.
519
+ * @type string
520
+ * @access protected
521
+ */
522
+ protected $sign_cert_file = '';
523
+
524
+ /**
525
+ * The S/MIME key file path.
526
+ * @type string
527
+ * @access protected
528
+ */
529
+ protected $sign_key_file = '';
530
+
531
+ /**
532
+ * The S/MIME password for the key.
533
+ * Used only if the key is encrypted.
534
+ * @type string
535
+ * @access protected
536
+ */
537
+ protected $sign_key_pass = '';
538
+
539
+ /**
540
+ * Whether to throw exceptions for errors.
541
+ * @type bool
542
+ * @access protected
543
+ */
544
+ protected $exceptions = false;
545
+
546
+ /**
547
+ * Error severity: message only, continue processing
548
+ */
549
+ const STOP_MESSAGE = 0;
550
+
551
+ /**
552
+ * Error severity: message, likely ok to continue processing
553
+ */
554
+ const STOP_CONTINUE = 1;
555
+
556
+ /**
557
+ * Error severity: message, plus full stop, critical error reached
558
+ */
559
+ const STOP_CRITICAL = 2;
560
+
561
+ /**
562
+ * SMTP RFC standard line ending
563
+ */
564
+ const CRLF = "\r\n";
565
+
566
+ /**
567
+ * Constructor
568
+ * @param bool $exceptions Should we throw external exceptions?
569
+ */
570
+ public function __construct($exceptions = false)
571
+ {
572
+ $this->exceptions = ($exceptions == true);
573
+ }
574
+
575
+ /**
576
+ * Destructor.
577
+ */
578
+ public function __destruct()
579
+ {
580
+ if ($this->Mailer == 'smtp') { //close any open SMTP connection nicely
581
+ $this->smtpClose();
582
+ }
583
+ }
584
+
585
+ /**
586
+ * Call mail() in a safe_mode-aware fashion.
587
+ * Also, unless sendmail_path points to sendmail (or something that
588
+ * claims to be sendmail), don't pass params (not a perfect fix,
589
+ * but it will do)
590
+ * @param string $to To
591
+ * @param string $subject Subject
592
+ * @param string $body Message Body
593
+ * @param string $header Additional Header(s)
594
+ * @param string $params Params
595
+ * @access private
596
+ * @return bool
597
+ */
598
+ private function mailPassthru($to, $subject, $body, $header, $params)
599
+ {
600
+ if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
601
+ $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header);
602
+ } else {
603
+ $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header, $params);
604
+ }
605
+ return $rt;
606
+ }
607
+
608
+ /**
609
+ * Output debugging info via user-defined method.
610
+ * Only if debug output is enabled.
611
+ * @see PHPMailer::$Debugoutput
612
+ * @see PHPMailer::$SMTPDebug
613
+ * @param string $str
614
+ */
615
+ protected function edebug($str)
616
+ {
617
+ if (!$this->SMTPDebug) {
618
+ return;
619
+ }
620
+ switch ($this->Debugoutput) {
621
+ case 'error_log':
622
+ error_log($str);
623
+ break;
624
+ case 'html':
625
+ //Cleans up output a bit for a better looking display that's HTML-safe
626
+ echo htmlentities(preg_replace('/[\r\n]+/', '', $str), ENT_QUOTES, $this->CharSet) . "<br>\n";
627
+ break;
628
+ case 'echo':
629
+ default:
630
+ //Just echoes exactly what was received
631
+ echo $str;
632
+ }
633
+ }
634
+
635
+ /**
636
+ * Sets message type to HTML or plain.
637
+ * @param bool $ishtml True for HTML mode.
638
+ * @return void
639
+ */
640
+ public function isHTML($ishtml = true)
641
+ {
642
+ if ($ishtml) {
643
+ $this->ContentType = 'text/html';
644
+ } else {
645
+ $this->ContentType = 'text/plain';
646
+ }
647
+ }
648
+
649
+ /**
650
+ * Send messages using SMTP.
651
+ * @return void
652
+ */
653
+ public function isSMTP()
654
+ {
655
+ $this->Mailer = 'smtp';
656
+ }
657
+
658
+ /**
659
+ * Send messages using PHP's mail() function.
660
+ * @return void
661
+ */
662
+ public function isMail()
663
+ {
664
+ $this->Mailer = 'mail';
665
+ }
666
+
667
+ /**
668
+ * Send messages using $Sendmail.
669
+ * @return void
670
+ */
671
+ public function isSendmail()
672
+ {
673
+ if (!stristr(ini_get('sendmail_path'), 'sendmail')) {
674
+ $this->Sendmail = '/var/qmail/bin/sendmail';
675
+ }
676
+ $this->Mailer = 'sendmail';
677
+ }
678
+
679
+ /**
680
+ * Send messages using qmail.
681
+ * @return void
682
+ */
683
+ public function isQmail()
684
+ {
685
+ if (stristr(ini_get('sendmail_path'), 'qmail')) {
686
+ $this->Sendmail = '/var/qmail/bin/sendmail';
687
+ }
688
+ $this->Mailer = 'sendmail';
689
+ }
690
+
691
+ /**
692
+ * Add a "To" address.
693
+ * @param string $address
694
+ * @param string $name
695
+ * @return bool true on success, false if address already used
696
+ */
697
+ public function addAddress($address, $name = '')
698
+ {
699
+ return $this->addAnAddress('to', $address, $name);
700
+ }
701
+
702
+ /**
703
+ * Add a "CC" address.
704
+ * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
705
+ * @param string $address
706
+ * @param string $name
707
+ * @return bool true on success, false if address already used
708
+ */
709
+ public function addCC($address, $name = '')
710
+ {
711
+ return $this->addAnAddress('cc', $address, $name);
712
+ }
713
+
714
+ /**
715
+ * Add a "BCC" address.
716
+ * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer.
717
+ * @param string $address
718
+ * @param string $name
719
+ * @return bool true on success, false if address already used
720
+ */
721
+ public function addBCC($address, $name = '')
722
+ {
723
+ return $this->addAnAddress('bcc', $address, $name);
724
+ }
725
+
726
+ /**
727
+ * Add a "Reply-to" address.
728
+ * @param string $address
729
+ * @param string $name
730
+ * @return bool
731
+ */
732
+ public function addReplyTo($address, $name = '')
733
+ {
734
+ return $this->addAnAddress('Reply-To', $address, $name);
735
+ }
736
+
737
+ /**
738
+ * Add an address to one of the recipient arrays.
739
+ * Addresses that have been added already return false, but do not throw exceptions
740
+ * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo'
741
+ * @param string $address The email address to send to
742
+ * @param string $name
743
+ * @throws phpmailerException
744
+ * @return bool true on success, false if address already used or invalid in some way
745
+ * @access protected
746
+ */
747
+ protected function addAnAddress($kind, $address, $name = '')
748
+ {
749
+ if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
750
+ $this->setError($this->lang('Invalid recipient array') . ': ' . $kind);
751
+ if ($this->exceptions) {
752
+ throw new phpmailerException('Invalid recipient array: ' . $kind);
753
+ }
754
+ $this->edebug($this->lang('Invalid recipient array') . ': ' . $kind);
755
+ return false;
756
+ }
757
+ $address = trim($address);
758
+ $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
759
+ if (!$this->validateAddress($address)) {
760
+ $this->setError($this->lang('invalid_address') . ': ' . $address);
761
+ if ($this->exceptions) {
762
+ throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
763
+ }
764
+ $this->edebug($this->lang('invalid_address') . ': ' . $address);
765
+ return false;
766
+ }
767
+ if ($kind != 'Reply-To') {
768
+ if (!isset($this->all_recipients[strtolower($address)])) {
769
+ array_push($this->$kind, array($address, $name));
770
+ $this->all_recipients[strtolower($address)] = true;
771
+ return true;
772
+ }
773
+ } else {
774
+ if (!array_key_exists(strtolower($address), $this->ReplyTo)) {
775
+ $this->ReplyTo[strtolower($address)] = array($address, $name);
776
+ return true;
777
+ }
778
+ }
779
+ return false;
780
+ }
781
+
782
+ /**
783
+ * Set the From and FromName properties.
784
+ * @param string $address
785
+ * @param string $name
786
+ * @param bool $auto Whether to also set the Sender address, defaults to true
787
+ * @throws phpmailerException
788
+ * @return bool
789
+ */
790
+ public function setFrom($address, $name = '', $auto = true)
791
+ {
792
+ $address = trim($address);
793
+ $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
794
+ if (!$this->validateAddress($address)) {
795
+ $this->setError($this->lang('invalid_address') . ': ' . $address);
796
+ if ($this->exceptions) {
797
+ throw new phpmailerException($this->lang('invalid_address') . ': ' . $address);
798
+ }
799
+ $this->edebug($this->lang('invalid_address') . ': ' . $address);
800
+ return false;
801
+ }
802
+ $this->From = $address;
803
+ $this->FromName = $name;
804
+ if ($auto) {
805
+ if (empty($this->Sender)) {
806
+ $this->Sender = $address;
807
+ }
808
+ }
809
+ return true;
810
+ }
811
+
812
+ /**
813
+ * Return the Message-ID header of the last email.
814
+ * Technically this is the value from the last time the headers were created,
815
+ * but it's also the message ID of the last sent message except in
816
+ * pathological cases.
817
+ * @return string
818
+ */
819
+ public function getLastMessageID()
820
+ {
821
+ return $this->lastMessageID;
822
+ }
823
+
824
+ /**
825
+ * Check that a string looks like an email address.
826
+ * @param string $address The email address to check
827
+ * @param string $patternselect A selector for the validation pattern to use :
828
+ * 'auto' - pick best one automatically;
829
+ * 'pcre8' - use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
830
+ * 'pcre' - use old PCRE implementation;
831
+ * 'php' - use PHP built-in FILTER_VALIDATE_EMAIL; faster, less thorough;
832
+ * 'noregex' - super fast, really dumb.
833
+ * @return bool
834
+ * @static
835
+ * @access public
836
+ */
837
+ public static function validateAddress($address, $patternselect = 'auto')
838
+ {
839
+ if ($patternselect == 'auto') {
840
+ if (defined(
841
+ 'PCRE_VERSION'
842
+ )
843
+ ) { //Check this instead of extension_loaded so it works when that function is disabled
844
+ if (version_compare(PCRE_VERSION, '8.0') >= 0) {
845
+ $patternselect = 'pcre8';
846
+ } else {
847
+ $patternselect = 'pcre';
848
+ }
849
+ } else {
850
+ //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension
851
+ if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
852
+ $patternselect = 'php';
853
+ } else {
854
+ $patternselect = 'noregex';
855
+ }
856
+ }
857
+ }
858
+ switch ($patternselect) {
859
+ case 'pcre8':
860
+ /**
861
+ * Conforms to RFC5322: Uses *correct* regex on which FILTER_VALIDATE_EMAIL is
862
+ * based; So why not use FILTER_VALIDATE_EMAIL? Because it was broken to
863
+ * not allow a@b type valid addresses :(
864
+ * @link http://squiloople.com/2009/12/20/email-address-validation/
865
+ * @copyright 2009-2010 Michael Rushton
866
+ * Feel free to use and redistribute this code. But please keep this copyright notice.
867
+ */
868
+ return (bool)preg_match(
869
+ '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' .
870
+ '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' .
871
+ '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' .
872
+ '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' .
873
+ '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' .
874
+ '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' .
875
+ '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' .
876
+ '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' .
877
+ '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD',
878
+ $address
879
+ );
880
+ break;
881
+ case 'pcre':
882
+ //An older regex that doesn't need a recent PCRE
883
+ return (bool)preg_match(
884
+ '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' .
885
+ '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' .
886
+ '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' .
887
+ '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' .
888
+ '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' .
889
+ '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' .
890
+ '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' .
891
+ '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' .
892
+ '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' .
893
+ '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD',
894
+ $address
895
+ );
896
+ break;
897
+ case 'php':
898
+ default:
899
+ return (bool)filter_var($address, FILTER_VALIDATE_EMAIL);
900
+ break;
901
+ case 'noregex':
902
+ //No PCRE! Do something _very_ approximate!
903
+ //Check the address is 3 chars or longer and contains an @ that's not the first or last char
904
+ return (strlen($address) >= 3
905
+ and strpos($address, '@') >= 1
906
+ and strpos($address, '@') != strlen($address) - 1);
907
+ break;
908
+ }
909
+ }
910
+
911
+ /**
912
+ * Create a message and send it.
913
+ * Uses the sending method specified by $Mailer.
914
+ * Returns false on error - Use the ErrorInfo variable to view description of the error.
915
+ * @throws phpmailerException
916
+ * @return bool
917
+ */
918
+ public function send()
919
+ {
920
+ try {
921
+ if (!$this->preSend()) {
922
+ return false;
923
+ }
924
+ return $this->postSend();
925
+ } catch (phpmailerException $e) {
926
+ $this->mailHeader = '';
927
+ $this->setError($e->getMessage());
928
+ if ($this->exceptions) {
929
+ throw $e;
930
+ }
931
+ return false;
932
+ }
933
+ }
934
+
935
+ /**
936
+ * Prepare a message for sending.
937
+ * @throws phpmailerException
938
+ * @return bool
939
+ */
940
+ public function preSend()
941
+ {
942
+ try {
943
+ $this->mailHeader = "";
944
+ if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
945
+ throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL);
946
+ }
947
+
948
+ // Set whether the message is multipart/alternative
949
+ if (!empty($this->AltBody)) {
950
+ $this->ContentType = 'multipart/alternative';
951
+ }
952
+
953
+ $this->error_count = 0; // reset errors
954
+ $this->setMessageType();
955
+ // Refuse to send an empty message unless we are specifically allowing it
956
+ if (!$this->AllowEmpty and empty($this->Body)) {
957
+ throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL);
958
+ }
959
+
960
+ $this->MIMEHeader = $this->createHeader();
961
+ $this->MIMEBody = $this->createBody();
962
+
963
+ // To capture the complete message when using mail(), create
964
+ // an extra header list which createHeader() doesn't fold in
965
+ if ($this->Mailer == 'mail') {
966
+ if (count($this->to) > 0) {
967
+ $this->mailHeader .= $this->addrAppend("To", $this->to);
968
+ } else {
969
+ $this->mailHeader .= $this->headerLine("To", "undisclosed-recipients:;");
970
+ }
971
+ $this->mailHeader .= $this->headerLine(
972
+ 'Subject',
973
+ $this->encodeHeader($this->secureHeader(trim($this->Subject)))
974
+ );
975
+ }
976
+
977
+ // Sign with DKIM if enabled
978
+ if (!empty($this->DKIM_domain)
979
+ && !empty($this->DKIM_private)
980
+ && !empty($this->DKIM_selector)
981
+ && !empty($this->DKIM_domain)
982
+ && file_exists($this->DKIM_private)) {
983
+ $header_dkim = $this->DKIM_Add(
984
+ $this->MIMEHeader . $this->mailHeader,
985
+ $this->encodeHeader($this->secureHeader($this->Subject)),
986
+ $this->MIMEBody
987
+ );
988
+ $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . self::CRLF .
989
+ str_replace("\r\n", "\n", $header_dkim) . self::CRLF;
990
+ }
991
+ return true;
992
+
993
+ } catch (phpmailerException $e) {
994
+ $this->setError($e->getMessage());
995
+ if ($this->exceptions) {
996
+ throw $e;
997
+ }
998
+ return false;
999
+ }
1000
+ }
1001
+
1002
+ /**
1003
+ * Actually send a message.
1004
+ * Send the email via the selected mechanism
1005
+ * @throws phpmailerException
1006
+ * @return bool
1007
+ */
1008
+ public function postSend()
1009
+ {
1010
+ try {
1011
+ // Choose the mailer and send through it
1012
+ switch ($this->Mailer) {
1013
+ case 'sendmail':
1014
+ return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody);
1015
+ case 'smtp':
1016
+ return $this->smtpSend($this->MIMEHeader, $this->MIMEBody);
1017
+ case 'mail':
1018
+ return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
1019
+ default:
1020
+ return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
1021
+ }
1022
+ } catch (phpmailerException $e) {
1023
+ $this->setError($e->getMessage());
1024
+ if ($this->exceptions) {
1025
+ throw $e;
1026
+ }
1027
+ $this->edebug($e->getMessage() . "\n");
1028
+ }
1029
+ return false;
1030
+ }
1031
+
1032
+ /**
1033
+ * Send mail using the $Sendmail program.
1034
+ * @param string $header The message headers
1035
+ * @param string $body The message body
1036
+ * @see PHPMailer::$Sendmail
1037
+ * @throws phpmailerException
1038
+ * @access protected
1039
+ * @return bool
1040
+ */
1041
+ protected function sendmailSend($header, $body)
1042
+ {
1043
+ if ($this->Sender != '') {
1044
+ $sendmail = sprintf("%s -oi -f%s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
1045
+ } else {
1046
+ $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
1047
+ }
1048
+ if ($this->SingleTo === true) {
1049
+ foreach ($this->SingleToArray as $val) {
1050
+ if (!@$mail = popen($sendmail, 'w')) {
1051
+ throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
1052
+ }
1053
+ fputs($mail, "To: " . $val . "\n");
1054
+ fputs($mail, $header);
1055
+ fputs($mail, $body);
1056
+ $result = pclose($mail);
1057
+ // implement call back function if it exists
1058
+ $isSent = ($result == 0) ? 1 : 0;
1059
+ $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
1060
+ if ($result != 0) {
1061
+ throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
1062
+ }
1063
+ }
1064
+ } else {
1065
+ if (!@$mail = popen($sendmail, 'w')) {
1066
+ throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
1067
+ }
1068
+ fputs($mail, $header);
1069
+ fputs($mail, $body);
1070
+ $result = pclose($mail);
1071
+ // implement call back function if it exists
1072
+ $isSent = ($result == 0) ? 1 : 0;
1073
+ $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
1074
+ if ($result != 0) {
1075
+ throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL);
1076
+ }
1077
+ }
1078
+ return true;
1079
+ }
1080
+
1081
+ /**
1082
+ * Send mail using the PHP mail() function.
1083
+ * @param string $header The message headers
1084
+ * @param string $body The message body
1085
+ * @link http://www.php.net/manual/en/book.mail.php
1086
+ * @throws phpmailerException
1087
+ * @access protected
1088
+ * @return bool
1089
+ */
1090
+ protected function mailSend($header, $body)
1091
+ {
1092
+ $toArr = array();
1093
+ foreach ($this->to as $t) {
1094
+ $toArr[] = $this->addrFormat($t);
1095
+ }
1096
+ $to = implode(', ', $toArr);
1097
+
1098
+ if (empty($this->Sender)) {
1099
+ $params = " ";
1100
+ } else {
1101
+ $params = sprintf("-f%s", $this->Sender);
1102
+ }
1103
+ if ($this->Sender != '' and !ini_get('safe_mode')) {
1104
+ $old_from = ini_get('sendmail_from');
1105
+ ini_set('sendmail_from', $this->Sender);
1106
+ }
1107
+ $rt = false;
1108
+ if ($this->SingleTo === true && count($toArr) > 1) {
1109
+ foreach ($toArr as $val) {
1110
+ $rt = $this->mailPassthru($val, $this->Subject, $body, $header, $params);
1111
+ // implement call back function if it exists
1112
+ $isSent = ($rt == 1) ? 1 : 0;
1113
+ $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
1114
+ }
1115
+ } else {
1116
+ $rt = $this->mailPassthru($to, $this->Subject, $body, $header, $params);
1117
+ // implement call back function if it exists
1118
+ $isSent = ($rt == 1) ? 1 : 0;
1119
+ $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body, $this->From);
1120
+ }
1121
+ if (isset($old_from)) {
1122
+ ini_set('sendmail_from', $old_from);
1123
+ }
1124
+ if (!$rt) {
1125
+ throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL);
1126
+ }
1127
+ return true;
1128
+ }
1129
+
1130
+ /**
1131
+ * Get an instance to use for SMTP operations.
1132
+ * Override this function to load your own SMTP implementation
1133
+ * @return SMTP
1134
+ */
1135
+ public function getSMTPInstance()
1136
+ {
1137
+ if (!is_object($this->smtp)) {
1138
+ require_once 'class-smtp.php';
1139
+ $this->smtp = new SMTP;
1140
+ }
1141
+ return $this->smtp;
1142
+ }
1143
+
1144
+ /**
1145
+ * Send mail via SMTP.
1146
+ * Returns false if there is a bad MAIL FROM, RCPT, or DATA input.
1147
+ * Uses the PHPMailerSMTP class by default.
1148
+ * @see PHPMailer::getSMTPInstance() to use a different class.
1149
+ * @param string $header The message headers
1150
+ * @param string $body The message body
1151
+ * @throws phpmailerException
1152
+ * @uses SMTP
1153
+ * @access protected
1154
+ * @return bool
1155
+ */
1156
+ protected function smtpSend($header, $body)
1157
+ {
1158
+ $bad_rcpt = array();
1159
+
1160
+ if (!$this->smtpConnect()) {
1161
+ throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
1162
+ }
1163
+ $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
1164
+ if (!$this->smtp->mail($smtp_from)) {
1165
+ $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
1166
+ throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL);
1167
+ }
1168
+
1169
+ // Attempt to send attach all recipients
1170
+ foreach ($this->to as $to) {
1171
+ if (!$this->smtp->recipient($to[0])) {
1172
+ $bad_rcpt[] = $to[0];
1173
+ $isSent = 0;
1174
+ } else {
1175
+ $isSent = 1;
1176
+ }
1177
+ $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body, $this->From);
1178
+ }
1179
+ foreach ($this->cc as $cc) {
1180
+ if (!$this->smtp->recipient($cc[0])) {
1181
+ $bad_rcpt[] = $cc[0];
1182
+ $isSent = 0;
1183
+ } else {
1184
+ $isSent = 1;
1185
+ }
1186
+ $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body, $this->From);
1187
+ }
1188
+ foreach ($this->bcc as $bcc) {
1189
+ if (!$this->smtp->recipient($bcc[0])) {
1190
+ $bad_rcpt[] = $bcc[0];
1191
+ $isSent = 0;
1192
+ } else {
1193
+ $isSent = 1;
1194
+ }
1195
+ $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body, $this->From);
1196
+ }
1197
+
1198
+ if (count($bad_rcpt) > 0) { //Create error message for any bad addresses
1199
+ throw new phpmailerException($this->lang('recipients_failed') . implode(', ', $bad_rcpt));
1200
+ }
1201
+ if (!$this->smtp->data($header . $body)) {
1202
+ throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL);
1203
+ }
1204
+ if ($this->SMTPKeepAlive == true) {
1205
+ $this->smtp->reset();
1206
+ } else {
1207
+ $this->smtp->quit();
1208
+ $this->smtp->close();
1209
+ }
1210
+ return true;
1211
+ }
1212
+
1213
+ /**
1214
+ * Initiate a connection to an SMTP server.
1215
+ * Returns false if the operation failed.
1216
+ * @param array $options An array of options compatible with stream_context_create()
1217
+ * @uses SMTP
1218
+ * @access public
1219
+ * @throws phpmailerException
1220
+ * @return bool
1221
+ */
1222
+ public function smtpConnect($options = array())
1223
+ {
1224
+ if (is_null($this->smtp)) {
1225
+ $this->smtp = $this->getSMTPInstance();
1226
+ }
1227
+
1228
+ //Already connected?
1229
+ if ($this->smtp->connected()) {
1230
+ return true;
1231
+ }
1232
+
1233
+ $this->smtp->setTimeout($this->Timeout);
1234
+ $this->smtp->setDebugLevel($this->SMTPDebug);
1235
+ $this->smtp->setDebugOutput($this->Debugoutput);
1236
+ $this->smtp->setVerp($this->do_verp);
1237
+ $tls = ($this->SMTPSecure == 'tls');
1238
+ $ssl = ($this->SMTPSecure == 'ssl');
1239
+ $hosts = explode(';', $this->Host);
1240
+ $lastexception = null;
1241
+
1242
+ foreach ($hosts as $hostentry) {
1243
+ $hostinfo = array();
1244
+ $host = $hostentry;
1245
+ $port = $this->Port;
1246
+ if (preg_match(
1247
+ '/^(.+):([0-9]+)$/',
1248
+ $hostentry,
1249
+ $hostinfo
1250
+ )
1251
+ ) { //If $hostentry contains 'address:port', override default
1252
+ $host = $hostinfo[1];
1253
+ $port = $hostinfo[2];
1254
+ }
1255
+ if ($this->smtp->connect(($ssl ? 'ssl://' : '') . $host, $port, $this->Timeout, $options)) {
1256
+ try {
1257
+ if ($this->Helo) {
1258
+ $hello = $this->Helo;
1259
+ } else {
1260
+ $hello = $this->serverHostname();
1261
+ }
1262
+ $this->smtp->hello($hello);
1263
+
1264
+ if ($tls) {
1265
+ if (!$this->smtp->startTLS()) {
1266
+ throw new phpmailerException($this->lang('connect_host'));
1267
+ }
1268
+ //We must resend HELO after tls negotiation
1269
+ $this->smtp->hello($hello);
1270
+ }
1271
+ if ($this->SMTPAuth) {
1272
+ if (!$this->smtp->authenticate(
1273
+ $this->Username,
1274
+ $this->Password,
1275
+ $this->AuthType,
1276
+ $this->Realm,
1277
+ $this->Workstation
1278
+ )
1279
+ ) {
1280
+ throw new phpmailerException($this->lang('authenticate'));
1281
+ }
1282
+ }
1283
+ return true;
1284
+ } catch (phpmailerException $e) {
1285
+ $lastexception = $e;
1286
+ //We must have connected, but then failed TLS or Auth, so close connection nicely
1287
+ $this->smtp->quit();
1288
+ }
1289
+ }
1290
+ }
1291
+ //If we get here, all connection attempts have failed, so close connection hard
1292
+ $this->smtp->close();
1293
+ //As we've caught all exceptions, just report whatever the last one was
1294
+ if ($this->exceptions and !is_null($lastexception)) {
1295
+ throw $lastexception;
1296
+ }
1297
+ return false;
1298
+ }
1299
+
1300
+ /**
1301
+ * Close the active SMTP session if one exists.
1302
+ * @return void
1303
+ */
1304
+ public function smtpClose()
1305
+ {
1306
+ if ($this->smtp !== null) {
1307
+ if ($this->smtp->connected()) {
1308
+ $this->smtp->quit();
1309
+ $this->smtp->close();
1310
+ }
1311
+ }
1312
+ }
1313
+
1314
+ /**
1315
+ * Set the language for error messages.
1316
+ * Returns false if it cannot load the language file.
1317
+ * The default language is English.
1318
+ * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr")
1319
+ * @param string $lang_path Path to the language file directory, with trailing separator (slash)
1320
+ * @return bool
1321
+ * @access public
1322
+ */
1323
+ public function setLanguage($langcode = 'en', $lang_path = 'language/')
1324
+ {
1325
+ //Define full set of translatable strings
1326
+ $PHPMAILER_LANG = array(
1327
+ 'authenticate' => 'SMTP Error: Could not authenticate.',
1328
+ 'connect_host' => 'SMTP Error: Could not connect to SMTP host.',
1329
+ 'data_not_accepted' => 'SMTP Error: data not accepted.',
1330
+ 'empty_message' => 'Message body empty',
1331
+ 'encoding' => 'Unknown encoding: ',
1332
+ 'execute' => 'Could not execute: ',
1333
+ 'file_access' => 'Could not access file: ',
1334
+ 'file_open' => 'File Error: Could not open file: ',
1335
+ 'from_failed' => 'The following From address failed: ',
1336
+ 'instantiate' => 'Could not instantiate mail function.',
1337
+ 'invalid_address' => 'Invalid address',
1338
+ 'mailer_not_supported' => ' mailer is not supported.',
1339
+ 'provide_address' => 'You must provide at least one recipient email address.',
1340
+ 'recipients_failed' => 'SMTP Error: The following recipients failed: ',
1341
+ 'signing' => 'Signing Error: ',
1342
+ 'smtp_connect_failed' => 'SMTP connect() failed.',
1343
+ 'smtp_error' => 'SMTP server error: ',
1344
+ 'variable_set' => 'Cannot set or reset variable: '
1345
+ );
1346
+ //Overwrite language-specific strings.
1347
+ //This way we'll never have missing translations - no more "language string failed to load"!
1348
+ $l = true;
1349
+ if ($langcode != 'en') { //There is no English translation file
1350
+ $l = @include $lang_path . 'phpmailer.lang-' . $langcode . '.php';
1351
+ }
1352
+ $this->language = $PHPMAILER_LANG;
1353
+ return ($l == true); //Returns false if language not found
1354
+ }
1355
+
1356
+ /**
1357
+ * Get the array of strings for the current language.
1358
+ * @return array
1359
+ */
1360
+ public function getTranslations()
1361
+ {
1362
+ return $this->language;
1363
+ }
1364
+
1365
+ /**
1366
+ * Create recipient headers.
1367
+ * @access public
1368
+ * @param string $type
1369
+ * @param array $addr An array of recipient,
1370
+ * where each recipient is a 2-element indexed array with element 0 containing an address
1371
+ * and element 1 containing a name, like:
1372
+ * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User'))
1373
+ * @return string
1374
+ */
1375
+ public function addrAppend($type, $addr)
1376
+ {
1377
+ $addresses = array();
1378
+ foreach ($addr as $a) {
1379
+ $addresses[] = $this->addrFormat($a);
1380
+ }
1381
+ return $type . ': ' . implode(', ', $addresses) . $this->LE;
1382
+ }
1383
+
1384
+ /**
1385
+ * Format an address for use in a message header.
1386
+ * @access public
1387
+ * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name
1388
+ * like array('joe@example.com', 'Joe User')
1389
+ * @return string
1390
+ */
1391
+ public function addrFormat($addr)
1392
+ {
1393
+ if (empty($addr[1])) { // No name provided
1394
+ return $this->secureHeader($addr[0]);
1395
+ } else {
1396
+ return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . " <" . $this->secureHeader(
1397
+ $addr[0]
1398
+ ) . ">";
1399
+ }
1400
+ }
1401
+
1402
+ /**
1403
+ * Word-wrap message.
1404
+ * For use with mailers that do not automatically perform wrapping
1405
+ * and for quoted-printable encoded messages.
1406
+ * Original written by philippe.
1407
+ * @param string $message The message to wrap
1408
+ * @param integer $length The line length to wrap to
1409
+ * @param bool $qp_mode Whether to run in Quoted-Printable mode
1410
+ * @access public
1411
+ * @return string
1412
+ */
1413
+ public function wrapText($message, $length, $qp_mode = false)
1414
+ {
1415
+ $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
1416
+ // If utf-8 encoding is used, we will need to make sure we don't
1417
+ // split multibyte characters when we wrap
1418
+ $is_utf8 = (strtolower($this->CharSet) == "utf-8");
1419
+ $lelen = strlen($this->LE);
1420
+ $crlflen = strlen(self::CRLF);
1421
+
1422
+ $message = $this->fixEOL($message);
1423
+ if (substr($message, -$lelen) == $this->LE) {
1424
+ $message = substr($message, 0, -$lelen);
1425
+ }
1426
+
1427
+ $line = explode($this->LE, $message); // Magic. We know fixEOL uses $LE
1428
+ $message = '';
1429
+ for ($i = 0; $i < count($line); $i++) {
1430
+ $line_part = explode(' ', $line[$i]);
1431
+ $buf = '';
1432
+ for ($e = 0; $e < count($line_part); $e++) {
1433
+ $word = $line_part[$e];
1434
+ if ($qp_mode and (strlen($word) > $length)) {
1435
+ $space_left = $length - strlen($buf) - $crlflen;
1436
+ if ($e != 0) {
1437
+ if ($space_left > 20) {
1438
+ $len = $space_left;
1439
+ if ($is_utf8) {
1440
+ $len = $this->utf8CharBoundary($word, $len);
1441
+ } elseif (substr($word, $len - 1, 1) == "=") {
1442
+ $len--;
1443
+ } elseif (substr($word, $len - 2, 1) == "=") {
1444
+ $len -= 2;
1445
+ }
1446
+ $part = substr($word, 0, $len);
1447
+ $word = substr($word, $len);
1448
+ $buf .= ' ' . $part;
1449
+ $message .= $buf . sprintf("=%s", self::CRLF);
1450
+ } else {
1451
+ $message .= $buf . $soft_break;
1452
+ }
1453
+ $buf = '';
1454
+ }
1455
+ while (strlen($word) > 0) {
1456
+ if ($length <= 0) {
1457
+ break;
1458
+ }
1459
+ $len = $length;
1460
+ if ($is_utf8) {
1461
+ $len = $this->utf8CharBoundary($word, $len);
1462
+ } elseif (substr($word, $len - 1, 1) == "=") {
1463
+ $len--;
1464
+ } elseif (substr($word, $len - 2, 1) == "=") {
1465
+ $len -= 2;
1466
+ }
1467
+ $part = substr($word, 0, $len);
1468
+ $word = substr($word, $len);
1469
+
1470
+ if (strlen($word) > 0) {
1471
+ $message .= $part . sprintf("=%s", self::CRLF);
1472
+ } else {
1473
+ $buf = $part;
1474
+ }
1475
+ }
1476
+ } else {
1477
+ $buf_o = $buf;
1478
+ $buf .= ($e == 0) ? $word : (' ' . $word);
1479
+
1480
+ if (strlen($buf) > $length and $buf_o != '') {
1481
+ $message .= $buf_o . $soft_break;
1482
+ $buf = $word;
1483
+ }
1484
+ }
1485
+ }
1486
+ $message .= $buf . self::CRLF;
1487
+ }
1488
+
1489
+ return $message;
1490
+ }
1491
+
1492
+ /**
1493
+ * Find the last character boundary prior to $maxLength in a utf-8
1494
+ * quoted (printable) encoded string.
1495
+ * Original written by Colin Brown.
1496
+ * @access public
1497
+ * @param string $encodedText utf-8 QP text
1498
+ * @param int $maxLength find last character boundary prior to this length
1499
+ * @return int
1500
+ */
1501
+ public function utf8CharBoundary($encodedText, $maxLength)
1502
+ {
1503
+ $foundSplitPos = false;
1504
+ $lookBack = 3;
1505
+ while (!$foundSplitPos) {
1506
+ $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
1507
+ $encodedCharPos = strpos($lastChunk, "=");
1508
+ if ($encodedCharPos !== false) {
1509
+ // Found start of encoded character byte within $lookBack block.
1510
+ // Check the encoded byte value (the 2 chars after the '=')
1511
+ $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
1512
+ $dec = hexdec($hex);
1513
+ if ($dec < 128) { // Single byte character.
1514
+ // If the encoded char was found at pos 0, it will fit
1515
+ // otherwise reduce maxLength to start of the encoded char
1516
+ $maxLength = ($encodedCharPos == 0) ? $maxLength :
1517
+ $maxLength - ($lookBack - $encodedCharPos);
1518
+ $foundSplitPos = true;
1519
+ } elseif ($dec >= 192) { // First byte of a multi byte character
1520
+ // Reduce maxLength to split at start of character
1521
+ $maxLength = $maxLength - ($lookBack - $encodedCharPos);
1522
+ $foundSplitPos = true;
1523
+ } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
1524
+ $lookBack += 3;
1525
+ }
1526
+ } else {
1527
+ // No encoded character found
1528
+ $foundSplitPos = true;
1529
+ }
1530
+ }
1531
+ return $maxLength;
1532
+ }
1533
+
1534
+
1535
+ /**
1536
+ * Set the body wrapping.
1537
+ * @access public
1538
+ * @return void
1539
+ */
1540
+ public function setWordWrap()
1541
+ {
1542
+ if ($this->WordWrap < 1) {
1543
+ return;
1544
+ }
1545
+
1546
+ switch ($this->message_type) {
1547
+ case 'alt':
1548
+ case 'alt_inline':
1549
+ case 'alt_attach':
1550
+ case 'alt_inline_attach':
1551
+ $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap);
1552
+ break;
1553
+ default:
1554
+ $this->Body = $this->wrapText($this->Body, $this->WordWrap);
1555
+ break;
1556
+ }
1557
+ }
1558
+
1559
+ /**
1560
+ * Assemble message headers.
1561
+ * @access public
1562
+ * @return string The assembled headers
1563
+ */
1564
+ public function createHeader()
1565
+ {
1566
+ $result = '';
1567
+
1568
+ // Set the boundaries
1569
+ $uniq_id = md5(uniqid(time()));
1570
+ $this->boundary[1] = 'b1_' . $uniq_id;
1571
+ $this->boundary[2] = 'b2_' . $uniq_id;
1572
+ $this->boundary[3] = 'b3_' . $uniq_id;
1573
+
1574
+ if ($this->MessageDate == '') {
1575
+ $result .= $this->headerLine('Date', self::rfcDate());
1576
+ } else {
1577
+ $result .= $this->headerLine('Date', $this->MessageDate);
1578
+ }
1579
+
1580
+ if ($this->ReturnPath) {
1581
+ $result .= $this->headerLine('Return-Path', '<' . trim($this->ReturnPath) . '>');
1582
+ } elseif ($this->Sender == '') {
1583
+ $result .= $this->headerLine('Return-Path', '<' . trim($this->From) . '>');
1584
+ } else {
1585
+ $result .= $this->headerLine('Return-Path', '<' . trim($this->Sender) . '>');
1586
+ }
1587
+
1588
+ // To be created automatically by mail()
1589
+ if ($this->Mailer != 'mail') {
1590
+ if ($this->SingleTo === true) {
1591
+ foreach ($this->to as $t) {
1592
+ $this->SingleToArray[] = $this->addrFormat($t);
1593
+ }
1594
+ } else {
1595
+ if (count($this->to) > 0) {
1596
+ $result .= $this->addrAppend('To', $this->to);
1597
+ } elseif (count($this->cc) == 0) {
1598
+ $result .= $this->headerLine('To', 'undisclosed-recipients:;');
1599
+ }
1600
+ }
1601
+ }
1602
+
1603
+ $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName)));
1604
+
1605
+ // sendmail and mail() extract Cc from the header before sending
1606
+ if (count($this->cc) > 0) {
1607
+ $result .= $this->addrAppend('Cc', $this->cc);
1608
+ }
1609
+
1610
+ // sendmail and mail() extract Bcc from the header before sending
1611
+ if ((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) {
1612
+ $result .= $this->addrAppend('Bcc', $this->bcc);
1613
+ }
1614
+
1615
+ if (count($this->ReplyTo) > 0) {
1616
+ $result .= $this->addrAppend('Reply-To', $this->ReplyTo);
1617
+ }
1618
+
1619
+ // mail() sets the subject itself
1620
+ if ($this->Mailer != 'mail') {
1621
+ $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
1622
+ }
1623
+
1624
+ if ($this->MessageID != '') {
1625
+ $this->lastMessageID = $this->MessageID;
1626
+ } else {
1627
+ $this->lastMessageID = sprintf("<%s@%s>", $uniq_id, $this->ServerHostname());
1628
+ }
1629
+ $result .= $this->HeaderLine('Message-ID', $this->lastMessageID);
1630
+ $result .= $this->headerLine('X-Priority', $this->Priority);
1631
+ if ($this->XMailer == '') {
1632
+ $result .= $this->headerLine(
1633
+ 'X-Mailer',
1634
+ 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer/)'
1635
+ );
1636
+ } else {
1637
+ $myXmailer = trim($this->XMailer);
1638
+ if ($myXmailer) {
1639
+ $result .= $this->headerLine('X-Mailer', $myXmailer);
1640
+ }
1641
+ }
1642
+
1643
+ if ($this->ConfirmReadingTo != '') {
1644
+ $result .= $this->headerLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>');
1645
+ }
1646
+
1647
+ // Add custom headers
1648
+ for ($index = 0; $index < count($this->CustomHeader); $index++) {
1649
+ $result .= $this->headerLine(
1650
+ trim($this->CustomHeader[$index][0]),
1651
+ $this->encodeHeader(trim($this->CustomHeader[$index][1]))
1652
+ );
1653
+ }
1654
+ if (!$this->sign_key_file) {
1655
+ $result .= $this->headerLine('MIME-Version', '1.0');
1656
+ $result .= $this->getMailMIME();
1657
+ }
1658
+
1659
+ return $result;
1660
+ }
1661
+
1662
+ /**
1663
+ * Get the message MIME type headers.
1664
+ * @access public
1665
+ * @return string
1666
+ */
1667
+ public function getMailMIME()
1668
+ {
1669
+ $result = '';
1670
+ switch ($this->message_type) {
1671
+ case 'inline':
1672
+ $result .= $this->headerLine('Content-Type', 'multipart/related;');
1673
+ $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
1674
+ break;
1675
+ case 'attach':
1676
+ case 'inline_attach':
1677
+ case 'alt_attach':
1678
+ case 'alt_inline_attach':
1679
+ $result .= $this->headerLine('Content-Type', 'multipart/mixed;');
1680
+ $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
1681
+ break;
1682
+ case 'alt':
1683
+ case 'alt_inline':
1684
+ $result .= $this->headerLine('Content-Type', 'multipart/alternative;');
1685
+ $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"');
1686
+ break;
1687
+ default:
1688
+ // Catches case 'plain': and case '':
1689
+ $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet);
1690
+ break;
1691
+ }
1692
+ //RFC1341 part 5 says 7bit is assumed if not specified
1693
+ if ($this->Encoding != '7bit') {
1694
+ $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding);
1695
+ }
1696
+
1697
+ if ($this->Mailer != 'mail') {
1698
+ $result .= $this->LE;
1699
+ }
1700
+
1701
+ return $result;
1702
+ }
1703
+
1704
+ /**
1705
+ * Returns the whole MIME message.
1706
+ * Includes complete headers and body.
1707
+ * Only valid post PreSend().
1708
+ * @see PHPMailer::PreSend()
1709
+ * @access public
1710
+ * @return string
1711
+ */
1712
+ public function getSentMIMEMessage()
1713
+ {
1714
+ return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
1715
+ }
1716
+
1717
+
1718
+ /**
1719
+ * Assemble the message body.
1720
+ * Returns an empty string on failure.
1721
+ * @access public
1722
+ * @throws phpmailerException
1723
+ * @return string The assembled message body
1724
+ */
1725
+ public function createBody()
1726
+ {
1727
+ $body = '';
1728
+
1729
+ if ($this->sign_key_file) {
1730
+ $body .= $this->getMailMIME() . $this->LE;
1731
+ }
1732
+
1733
+ $this->setWordWrap();
1734
+
1735
+ switch ($this->message_type) {
1736
+ case 'inline':
1737
+ $body .= $this->getBoundary($this->boundary[1], '', '', '');
1738
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1739
+ $body .= $this->LE . $this->LE;
1740
+ $body .= $this->attachAll('inline', $this->boundary[1]);
1741
+ break;
1742
+ case 'attach':
1743
+ $body .= $this->getBoundary($this->boundary[1], '', '', '');
1744
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1745
+ $body .= $this->LE . $this->LE;
1746
+ $body .= $this->attachAll('attachment', $this->boundary[1]);
1747
+ break;
1748
+ case 'inline_attach':
1749
+ $body .= $this->textLine('--' . $this->boundary[1]);
1750
+ $body .= $this->headerLine('Content-Type', 'multipart/related;');
1751
+ $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
1752
+ $body .= $this->LE;
1753
+ $body .= $this->getBoundary($this->boundary[2], '', '', '');
1754
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1755
+ $body .= $this->LE . $this->LE;
1756
+ $body .= $this->attachAll('inline', $this->boundary[2]);
1757
+ $body .= $this->LE;
1758
+ $body .= $this->attachAll('attachment', $this->boundary[1]);
1759
+ break;
1760
+ case 'alt':
1761
+ $body .= $this->getBoundary($this->boundary[1], '', 'text/plain', '');
1762
+ $body .= $this->encodeString($this->AltBody, $this->Encoding);
1763
+ $body .= $this->LE . $this->LE;
1764
+ $body .= $this->getBoundary($this->boundary[1], '', 'text/html', '');
1765
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1766
+ $body .= $this->LE . $this->LE;
1767
+ if (!empty($this->Ical)) {
1768
+ $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', '');
1769
+ $body .= $this->encodeString($this->Ical, $this->Encoding);
1770
+ $body .= $this->LE . $this->LE;
1771
+ }
1772
+ $body .= $this->endBoundary($this->boundary[1]);
1773
+ break;
1774
+ case 'alt_inline':
1775
+ $body .= $this->getBoundary($this->boundary[1], '', 'text/plain', '');
1776
+ $body .= $this->encodeString($this->AltBody, $this->Encoding);
1777
+ $body .= $this->LE . $this->LE;
1778
+ $body .= $this->textLine('--' . $this->boundary[1]);
1779
+ $body .= $this->headerLine('Content-Type', 'multipart/related;');
1780
+ $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
1781
+ $body .= $this->LE;
1782
+ $body .= $this->getBoundary($this->boundary[2], '', 'text/html', '');
1783
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1784
+ $body .= $this->LE . $this->LE;
1785
+ $body .= $this->attachAll('inline', $this->boundary[2]);
1786
+ $body .= $this->LE;
1787
+ $body .= $this->endBoundary($this->boundary[1]);
1788
+ break;
1789
+ case 'alt_attach':
1790
+ $body .= $this->textLine('--' . $this->boundary[1]);
1791
+ $body .= $this->headerLine('Content-Type', 'multipart/alternative;');
1792
+ $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
1793
+ $body .= $this->LE;
1794
+ $body .= $this->getBoundary($this->boundary[2], '', 'text/plain', '');
1795
+ $body .= $this->encodeString($this->AltBody, $this->Encoding);
1796
+ $body .= $this->LE . $this->LE;
1797
+ $body .= $this->getBoundary($this->boundary[2], '', 'text/html', '');
1798
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1799
+ $body .= $this->LE . $this->LE;
1800
+ $body .= $this->endBoundary($this->boundary[2]);
1801
+ $body .= $this->LE;
1802
+ $body .= $this->attachAll('attachment', $this->boundary[1]);
1803
+ break;
1804
+ case 'alt_inline_attach':
1805
+ $body .= $this->textLine('--' . $this->boundary[1]);
1806
+ $body .= $this->headerLine('Content-Type', 'multipart/alternative;');
1807
+ $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"');
1808
+ $body .= $this->LE;
1809
+ $body .= $this->getBoundary($this->boundary[2], '', 'text/plain', '');
1810
+ $body .= $this->encodeString($this->AltBody, $this->Encoding);
1811
+ $body .= $this->LE . $this->LE;
1812
+ $body .= $this->textLine('--' . $this->boundary[2]);
1813
+ $body .= $this->headerLine('Content-Type', 'multipart/related;');
1814
+ $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"');
1815
+ $body .= $this->LE;
1816
+ $body .= $this->getBoundary($this->boundary[3], '', 'text/html', '');
1817
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1818
+ $body .= $this->LE . $this->LE;
1819
+ $body .= $this->attachAll('inline', $this->boundary[3]);
1820
+ $body .= $this->LE;
1821
+ $body .= $this->endBoundary($this->boundary[2]);
1822
+ $body .= $this->LE;
1823
+ $body .= $this->attachAll('attachment', $this->boundary[1]);
1824
+ break;
1825
+ default:
1826
+ // catch case 'plain' and case ''
1827
+ $body .= $this->encodeString($this->Body, $this->Encoding);
1828
+ break;
1829
+ }
1830
+
1831
+ if ($this->isError()) {
1832
+ $body = '';
1833
+ } elseif ($this->sign_key_file) {
1834
+ try {
1835
+ if (!defined('PKCS7_TEXT')) {
1836
+ throw new phpmailerException($this->lang('signing') . ' OpenSSL extension missing.');
1837
+ }
1838
+ $file = tempnam(sys_get_temp_dir(), 'mail');
1839
+ file_put_contents($file, $body); //TODO check this worked
1840
+ $signed = tempnam(sys_get_temp_dir(), 'signed');
1841
+ if (@openssl_pkcs7_sign(
1842
+ $file,
1843
+ $signed,
1844
+ 'file://' . realpath($this->sign_cert_file),
1845
+ array('file://' . realpath($this->sign_key_file), $this->sign_key_pass),
1846
+ null
1847
+ )
1848
+ ) {
1849
+ @unlink($file);
1850
+ $body = file_get_contents($signed);
1851
+ @unlink($signed);
1852
+ } else {
1853
+ @unlink($file);
1854
+ @unlink($signed);
1855
+ throw new phpmailerException($this->lang('signing') . openssl_error_string());
1856
+ }
1857
+ } catch (phpmailerException $e) {
1858
+ $body = '';
1859
+ if ($this->exceptions) {
1860
+ throw $e;
1861
+ }
1862
+ }
1863
+ }
1864
+ return $body;
1865
+ }
1866
+
1867
+ /**
1868
+ * Return the start of a message boundary.
1869
+ * @access protected
1870
+ * @param string $boundary
1871
+ * @param string $charSet
1872
+ * @param string $contentType
1873
+ * @param string $encoding
1874
+ * @return string
1875
+ */
1876
+ protected function getBoundary($boundary, $charSet, $contentType, $encoding)
1877
+ {
1878
+ $result = '';
1879
+ if ($charSet == '') {
1880
+ $charSet = $this->CharSet;
1881
+ }
1882
+ if ($contentType == '') {
1883
+ $contentType = $this->ContentType;
1884
+ }
1885
+ if ($encoding == '') {
1886
+ $encoding = $this->Encoding;
1887
+ }
1888
+ $result .= $this->textLine('--' . $boundary);
1889
+ $result .= sprintf("Content-Type: %s; charset=%s", $contentType, $charSet);
1890
+ $result .= $this->LE;
1891
+ $result .= $this->headerLine('Content-Transfer-Encoding', $encoding);
1892
+ $result .= $this->LE;
1893
+
1894
+ return $result;
1895
+ }
1896
+
1897
+ /**
1898
+ * Return the end of a message boundary.
1899
+ * @access protected
1900
+ * @param string $boundary
1901
+ * @return string
1902
+ */
1903
+ protected function endBoundary($boundary)
1904
+ {
1905
+ return $this->LE . '--' . $boundary . '--' . $this->LE;
1906
+ }
1907
+
1908
+ /**
1909
+ * Set the message type.
1910
+ * PHPMailer only supports some preset message types,
1911
+ * not arbitrary MIME structures.
1912
+ * @access protected
1913
+ * @return void
1914
+ */
1915
+ protected function setMessageType()
1916
+ {
1917
+ $this->message_type = array();
1918
+ if ($this->alternativeExists()) {
1919
+ $this->message_type[] = "alt";
1920
+ }
1921
+ if ($this->inlineImageExists()) {
1922
+ $this->message_type[] = "inline";
1923
+ }
1924
+ if ($this->attachmentExists()) {
1925
+ $this->message_type[] = "attach";
1926
+ }
1927
+ $this->message_type = implode("_", $this->message_type);
1928
+ if ($this->message_type == "") {
1929
+ $this->message_type = "plain";
1930
+ }
1931
+ }
1932
+
1933
+ /**
1934
+ * Format a header line.
1935
+ * @access public
1936
+ * @param string $name
1937
+ * @param string $value
1938
+ * @return string
1939
+ */
1940
+ public function headerLine($name, $value)
1941
+ {
1942
+ return $name . ': ' . $value . $this->LE;
1943
+ }
1944
+
1945
+ /**
1946
+ * Return a formatted mail line.
1947
+ * @access public
1948
+ * @param string $value
1949
+ * @return string
1950
+ */
1951
+ public function textLine($value)
1952
+ {
1953
+ return $value . $this->LE;
1954
+ }
1955
+
1956
+ /**
1957
+ * Add an attachment from a path on the filesystem.
1958
+ * Returns false if the file could not be found or read.
1959
+ * @param string $path Path to the attachment.
1960
+ * @param string $name Overrides the attachment name.
1961
+ * @param string $encoding File encoding (see $Encoding).
1962
+ * @param string $type File extension (MIME) type.
1963
+ * @param string $disposition Disposition to use
1964
+ * @throws phpmailerException
1965
+ * @return bool
1966
+ */
1967
+ public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment')
1968
+ {
1969
+ try {
1970
+ if (!@is_file($path)) {
1971
+ throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE);
1972
+ }
1973
+
1974
+ //If a MIME type is not specified, try to work it out from the file name
1975
+ if ($type == '') {
1976
+ $type = self::filenameToType($path);
1977
+ }
1978
+
1979
+ $filename = basename($path);
1980
+ if ($name == '') {
1981
+ $name = $filename;
1982
+ }
1983
+
1984
+ $this->attachment[] = array(
1985
+ 0 => $path,
1986
+ 1 => $filename,
1987
+ 2 => $name,
1988
+ 3 => $encoding,
1989
+ 4 => $type,
1990
+ 5 => false, // isStringAttachment
1991
+ 6 => $disposition,
1992
+ 7 => 0
1993
+ );
1994
+
1995
+ } catch (phpmailerException $e) {
1996
+ $this->setError($e->getMessage());
1997
+ if ($this->exceptions) {
1998
+ throw $e;
1999
+ }
2000
+ $this->edebug($e->getMessage() . "\n");
2001
+ return false;
2002
+ }
2003
+ return true;
2004
+ }
2005
+
2006
+ /**
2007
+ * Return the array of attachments.
2008
+ * @return array
2009
+ */
2010
+ public function getAttachments()
2011
+ {
2012
+ return $this->attachment;
2013
+ }
2014
+
2015
+ /**
2016
+ * Attach all file, string, and binary attachments to the message.
2017
+ * Returns an empty string on failure.
2018
+ * @access protected
2019
+ * @param string $disposition_type
2020
+ * @param string $boundary
2021
+ * @return string
2022
+ */
2023
+ protected function attachAll($disposition_type, $boundary)
2024
+ {
2025
+ // Return text of body
2026
+ $mime = array();
2027
+ $cidUniq = array();
2028
+ $incl = array();
2029
+
2030
+ // Add all attachments
2031
+ foreach ($this->attachment as $attachment) {
2032
+ // Check if it is a valid disposition_filter
2033
+ if ($attachment[6] == $disposition_type) {
2034
+ // Check for string attachment
2035
+ $string = '';
2036
+ $path = '';
2037
+ $bString = $attachment[5];
2038
+ if ($bString) {
2039
+ $string = $attachment[0];
2040
+ } else {
2041
+ $path = $attachment[0];
2042
+ }
2043
+
2044
+ $inclhash = md5(serialize($attachment));
2045
+ if (in_array($inclhash, $incl)) {
2046
+ continue;
2047
+ }
2048
+ $incl[] = $inclhash;
2049
+ $name = $attachment[2];
2050
+ $encoding = $attachment[3];
2051
+ $type = $attachment[4];
2052
+ $disposition = $attachment[6];
2053
+ $cid = $attachment[7];
2054
+ if ($disposition == 'inline' && isset($cidUniq[$cid])) {
2055
+ continue;
2056
+ }
2057
+ $cidUniq[$cid] = true;
2058
+
2059
+ $mime[] = sprintf("--%s%s", $boundary, $this->LE);
2060
+ $mime[] = sprintf(
2061
+ "Content-Type: %s; name=\"%s\"%s",
2062
+ $type,
2063
+ $this->encodeHeader($this->secureHeader($name)),
2064
+ $this->LE
2065
+ );
2066
+ $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
2067
+
2068
+ if ($disposition == 'inline') {
2069
+ $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
2070
+ }
2071
+
2072
+ // If a filename contains any of these chars, it should be quoted,
2073
+ // but not otherwise: RFC2183 & RFC2045 5.1
2074
+ // Fixes a warning in IETF's msglint MIME checker
2075
+ // Allow for bypassing the Content-Disposition header totally
2076
+ if (!(empty($disposition))) {
2077
+ if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $name)) {
2078
+ $mime[] = sprintf(
2079
+ "Content-Disposition: %s; filename=\"%s\"%s",
2080
+ $disposition,
2081
+ $this->encodeHeader($this->secureHeader($name)),
2082
+ $this->LE . $this->LE
2083
+ );
2084
+ } else {
2085
+ $mime[] = sprintf(
2086
+ "Content-Disposition: %s; filename=%s%s",
2087
+ $disposition,
2088
+ $this->encodeHeader($this->secureHeader($name)),
2089
+ $this->LE . $this->LE
2090
+ );
2091
+ }
2092
+ } else {
2093
+ $mime[] = $this->LE;
2094
+ }
2095
+
2096
+ // Encode as string attachment
2097
+ if ($bString) {
2098
+ $mime[] = $this->encodeString($string, $encoding);
2099
+ if ($this->isError()) {
2100
+ return '';
2101
+ }
2102
+ $mime[] = $this->LE . $this->LE;
2103
+ } else {
2104
+ $mime[] = $this->encodeFile($path, $encoding);
2105
+ if ($this->isError()) {
2106
+ return '';
2107
+ }
2108
+ $mime[] = $this->LE . $this->LE;
2109
+ }
2110
+ }
2111
+ }
2112
+
2113
+ $mime[] = sprintf("--%s--%s", $boundary, $this->LE);
2114
+
2115
+ return implode("", $mime);
2116
+ }
2117
+
2118
+ /**
2119
+ * Encode a file attachment in requested format.
2120
+ * Returns an empty string on failure.
2121
+ * @param string $path The full path to the file
2122
+ * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
2123
+ * @throws phpmailerException
2124
+ * @see EncodeFile(encodeFile
2125
+ * @access protected
2126
+ * @return string
2127
+ */
2128
+ protected function encodeFile($path, $encoding = 'base64')
2129
+ {
2130
+ try {
2131
+ if (!is_readable($path)) {
2132
+ throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE);
2133
+ }
2134
+ $magic_quotes = get_magic_quotes_runtime();
2135
+ if ($magic_quotes) {
2136
+ if (version_compare(PHP_VERSION, '5.3.0', '<')) {
2137
+ set_magic_quotes_runtime(0);
2138
+ } else {
2139
+ ini_set('magic_quotes_runtime', 0);
2140
+ }
2141
+ }
2142
+ $file_buffer = file_get_contents($path);
2143
+ $file_buffer = $this->encodeString($file_buffer, $encoding);
2144
+ if ($magic_quotes) {
2145
+ if (version_compare(PHP_VERSION, '5.3.0', '<')) {
2146
+ set_magic_quotes_runtime($magic_quotes);
2147
+ } else {
2148
+ ini_set('magic_quotes_runtime', $magic_quotes);
2149
+ }
2150
+ }
2151
+ return $file_buffer;
2152
+ } catch (Exception $e) {
2153
+ $this->setError($e->getMessage());
2154
+ return '';
2155
+ }
2156
+ }
2157
+
2158
+ /**
2159
+ * Encode a string in requested format.
2160
+ * Returns an empty string on failure.
2161
+ * @param string $str The text to encode
2162
+ * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable'
2163
+ * @access public
2164
+ * @return string
2165
+ */
2166
+ public function encodeString($str, $encoding = 'base64')
2167
+ {
2168
+ $encoded = '';
2169
+ switch (strtolower($encoding)) {
2170
+ case 'base64':
2171
+ $encoded = chunk_split(base64_encode($str), 76, $this->LE);
2172
+ break;
2173
+ case '7bit':
2174
+ case '8bit':
2175
+ $encoded = $this->fixEOL($str);
2176
+ //Make sure it ends with a line break
2177
+ if (substr($encoded, -(strlen($this->LE))) != $this->LE) {
2178
+ $encoded .= $this->LE;
2179
+ }
2180
+ break;
2181
+ case 'binary':
2182
+ $encoded = $str;
2183
+ break;
2184
+ case 'quoted-printable':
2185
+ $encoded = $this->encodeQP($str);
2186
+ break;
2187
+ default:
2188
+ $this->setError($this->lang('encoding') . $encoding);
2189
+ break;
2190
+ }
2191
+ return $encoded;
2192
+ }
2193
+
2194
+ /**
2195
+ * Encode a header string optimally.
2196
+ * Picks shortest of Q, B, quoted-printable or none.
2197
+ * @access public
2198
+ * @param string $str
2199
+ * @param string $position
2200
+ * @return string
2201
+ */
2202
+ public function encodeHeader($str, $position = 'text')
2203
+ {
2204
+ $x = 0;
2205
+ switch (strtolower($position)) {
2206
+ case 'phrase':
2207
+ if (!preg_match('/[\200-\377]/', $str)) {
2208
+ // Can't use addslashes as we don't know what value has magic_quotes_sybase
2209
+ $encoded = addcslashes($str, "\0..\37\177\\\"");
2210
+ if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
2211
+ return ($encoded);
2212
+ } else {
2213
+ return ("\"$encoded\"");
2214
+ }
2215
+ }
2216
+ $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
2217
+ break;
2218
+ /** @noinspection PhpMissingBreakStatementInspection */
2219
+ case 'comment':
2220
+ $x = preg_match_all('/[()"]/', $str, $matches);
2221
+ // Intentional fall-through
2222
+ case 'text':
2223
+ default:
2224
+ $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
2225
+ break;
2226
+ }
2227
+
2228
+ if ($x == 0) { //There are no chars that need encoding
2229
+ return ($str);
2230
+ }
2231
+
2232
+ $maxlen = 75 - 7 - strlen($this->CharSet);
2233
+ // Try to select the encoding which should produce the shortest output
2234
+ if ($x > strlen($str) / 3) {
2235
+ //More than a third of the content will need encoding, so B encoding will be most efficient
2236
+ $encoding = 'B';
2237
+ if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) {
2238
+ // Use a custom function which correctly encodes and wraps long
2239
+ // multibyte strings without breaking lines within a character
2240
+ $encoded = $this->base64EncodeWrapMB($str, "\n");
2241
+ } else {
2242
+ $encoded = base64_encode($str);
2243
+ $maxlen -= $maxlen % 4;
2244
+ $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
2245
+ }
2246
+ } else {
2247
+ $encoding = 'Q';
2248
+ $encoded = $this->encodeQ($str, $position);
2249
+ $encoded = $this->wrapText($encoded, $maxlen, true);
2250
+ $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded));
2251
+ }
2252
+
2253
+ $encoded = preg_replace('/^(.*)$/m', " =?" . $this->CharSet . "?$encoding?\\1?=", $encoded);
2254
+ $encoded = trim(str_replace("\n", $this->LE, $encoded));
2255
+
2256
+ return $encoded;
2257
+ }
2258
+
2259
+ /**
2260
+ * Check if a string contains multi-byte characters.
2261
+ * @access public
2262
+ * @param string $str multi-byte text to wrap encode
2263
+ * @return bool
2264
+ */
2265
+ public function hasMultiBytes($str)
2266
+ {
2267
+ if (function_exists('mb_strlen')) {
2268
+ return (strlen($str) > mb_strlen($str, $this->CharSet));
2269
+ } else { // Assume no multibytes (we can't handle without mbstring functions anyway)
2270
+ return false;
2271
+ }
2272
+ }
2273
+
2274
+ /**
2275
+ * Encode and wrap long multibyte strings for mail headers
2276
+ * without breaking lines within a character.
2277
+ * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php
2278
+ * @access public
2279
+ * @param string $str multi-byte text to wrap encode
2280
+ * @param string $lf string to use as linefeed/end-of-line
2281
+ * @return string
2282
+ */
2283
+ public function base64EncodeWrapMB($str, $lf = null)
2284
+ {
2285
+ $start = "=?" . $this->CharSet . "?B?";
2286
+ $end = "?=";
2287
+ $encoded = "";
2288
+ if ($lf === null) {
2289
+ $lf = $this->LE;
2290
+ }
2291
+
2292
+ $mb_length = mb_strlen($str, $this->CharSet);
2293
+ // Each line must have length <= 75, including $start and $end
2294
+ $length = 75 - strlen($start) - strlen($end);
2295
+ // Average multi-byte ratio
2296
+ $ratio = $mb_length / strlen($str);
2297
+ // Base64 has a 4:3 ratio
2298
+ $avgLength = floor($length * $ratio * .75);
2299
+
2300
+ for ($i = 0; $i < $mb_length; $i += $offset) {
2301
+ $lookBack = 0;
2302
+ do {
2303
+ $offset = $avgLength - $lookBack;
2304
+ $chunk = mb_substr($str, $i, $offset, $this->CharSet);
2305
+ $chunk = base64_encode($chunk);
2306
+ $lookBack++;
2307
+ } while (strlen($chunk) > $length);
2308
+ $encoded .= $chunk . $lf;
2309
+ }
2310
+
2311
+ // Chomp the last linefeed
2312
+ $encoded = substr($encoded, 0, -strlen($lf));
2313
+ return $encoded;
2314
+ }
2315
+
2316
+ /**
2317
+ * Encode a string in quoted-printable format.
2318
+ * According to RFC2045 section 6.7.
2319
+ * @access public
2320
+ * @param string $string The text to encode
2321
+ * @param integer $line_max Number of chars allowed on a line before wrapping
2322
+ * @return string
2323
+ * @link PHP version adapted from http://www.php.net/manual/en/function.quoted-printable-decode.php#89417
2324
+ */
2325
+ public function encodeQP($string, $line_max = 76)
2326
+ {
2327
+ if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3)
2328
+ return quoted_printable_encode($string);
2329
+ }
2330
+ //Fall back to a pure PHP implementation
2331
+ $string = str_replace(
2332
+ array('%20', '%0D%0A.', '%0D%0A', '%'),
2333
+ array(' ', "\r\n=2E", "\r\n", '='),
2334
+ rawurlencode($string)
2335
+ );
2336
+ $string = preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string);
2337
+ return $string;
2338
+ }
2339
+
2340
+ /**
2341
+ * Backward compatibility wrapper for an old QP encoding function that was removed.
2342
+ * @see PHPMailer::encodeQP()
2343
+ * @access public
2344
+ * @param string $string
2345
+ * @param integer $line_max
2346
+ * @param bool $space_conv
2347
+ * @return string
2348
+ * @deprecated Use encodeQP instead.
2349
+ */
2350
+ public function encodeQPphp(
2351
+ $string,
2352
+ $line_max = 76,
2353
+ /** @noinspection PhpUnusedParameterInspection */ $space_conv = false
2354
+ ) {
2355
+ return $this->encodeQP($string, $line_max);
2356
+ }
2357
+
2358
+ /**
2359
+ * Encode a string using Q encoding.
2360
+ * @link http://tools.ietf.org/html/rfc2047
2361
+ * @param string $str the text to encode
2362
+ * @param string $position Where the text is going to be used, see the RFC for what that means
2363
+ * @access public
2364
+ * @return string
2365
+ */
2366
+ public function encodeQ($str, $position = 'text')
2367
+ {
2368
+ //There should not be any EOL in the string
2369
+ $pattern = '';
2370
+ $encoded = str_replace(array("\r", "\n"), '', $str);
2371
+ switch (strtolower($position)) {
2372
+ case 'phrase':
2373
+ //RFC 2047 section 5.3
2374
+ $pattern = '^A-Za-z0-9!*+\/ -';
2375
+ break;
2376
+ /** @noinspection PhpMissingBreakStatementInspection */
2377
+ case 'comment':
2378
+ //RFC 2047 section 5.2
2379
+ $pattern = '\(\)"';
2380
+ //intentional fall-through
2381
+ //for this reason we build the $pattern without including delimiters and []
2382
+ case 'text':
2383
+ default:
2384
+ //RFC 2047 section 5.1
2385
+ //Replace every high ascii, control, =, ? and _ characters
2386
+ $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern;
2387
+ break;
2388
+ }
2389
+ $matches = array();
2390
+ if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) {
2391
+ //If the string contains an '=', make sure it's the first thing we replace
2392
+ //so as to avoid double-encoding
2393
+ $s = array_search('=', $matches[0]);
2394
+ if ($s !== false) {
2395
+ unset($matches[0][$s]);
2396
+ array_unshift($matches[0], '=');
2397
+ }
2398
+ foreach (array_unique($matches[0]) as $char) {
2399
+ $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded);
2400
+ }
2401
+ }
2402
+ //Replace every spaces to _ (more readable than =20)
2403
+ return str_replace(' ', '_', $encoded);
2404
+ }
2405
+
2406
+
2407
+ /**
2408
+ * Add a string or binary attachment (non-filesystem).
2409
+ * This method can be used to attach ascii or binary data,
2410
+ * such as a BLOB record from a database.
2411
+ * @param string $string String attachment data.
2412
+ * @param string $filename Name of the attachment.
2413
+ * @param string $encoding File encoding (see $Encoding).
2414
+ * @param string $type File extension (MIME) type.
2415
+ * @param string $disposition Disposition to use
2416
+ * @return void
2417
+ */
2418
+ public function addStringAttachment(
2419
+ $string,
2420
+ $filename,
2421
+ $encoding = 'base64',
2422
+ $type = '',
2423
+ $disposition = 'attachment'
2424
+ ) {
2425
+ //If a MIME type is not specified, try to work it out from the file name
2426
+ if ($type == '') {
2427
+ $type = self::filenameToType($filename);
2428
+ }
2429
+ // Append to $attachment array
2430
+ $this->attachment[] = array(
2431
+ 0 => $string,
2432
+ 1 => $filename,
2433
+ 2 => basename($filename),
2434
+ 3 => $encoding,
2435
+ 4 => $type,
2436
+ 5 => true, // isStringAttachment
2437
+ 6 => $disposition,
2438
+ 7 => 0
2439
+ );
2440
+ }
2441
+
2442
+ /**
2443
+ * Add an embedded (inline) attachment from a file.
2444
+ * This can include images, sounds, and just about any other document type.
2445
+ * These differ from 'regular' attachmants in that they are intended to be
2446
+ * displayed inline with the message, not just attached for download.
2447
+ * This is used in HTML messages that embed the images
2448
+ * the HTML refers to using the $cid value.
2449
+ * @param string $path Path to the attachment.
2450
+ * @param string $cid Content ID of the attachment; Use this to reference
2451
+ * the content when using an embedded image in HTML.
2452
+ * @param string $name Overrides the attachment name.
2453
+ * @param string $encoding File encoding (see $Encoding).
2454
+ * @param string $type File MIME type.
2455
+ * @param string $disposition Disposition to use
2456
+ * @return bool True on successfully adding an attachment
2457
+ */
2458
+ public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline')
2459
+ {
2460
+ if (!@is_file($path)) {
2461
+ $this->setError($this->lang('file_access') . $path);
2462
+ return false;
2463
+ }
2464
+
2465
+ //If a MIME type is not specified, try to work it out from the file name
2466
+ if ($type == '') {
2467
+ $type = self::filenameToType($path);
2468
+ }
2469
+
2470
+ $filename = basename($path);
2471
+ if ($name == '') {
2472
+ $name = $filename;
2473
+ }
2474
+
2475
+ // Append to $attachment array
2476
+ $this->attachment[] = array(
2477
+ 0 => $path,
2478
+ 1 => $filename,
2479
+ 2 => $name,
2480
+ 3 => $encoding,
2481
+ 4 => $type,
2482
+ 5 => false, // isStringAttachment
2483
+ 6 => $disposition,
2484
+ 7 => $cid
2485
+ );
2486
+ return true;
2487
+ }
2488
+
2489
+ /**
2490
+ * Add an embedded stringified attachment.
2491
+ * This can include images, sounds, and just about any other document type.
2492
+ * Be sure to set the $type to an image type for images:
2493
+ * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'.
2494
+ * @param string $string The attachment binary data.
2495
+ * @param string $cid Content ID of the attachment; Use this to reference
2496
+ * the content when using an embedded image in HTML.
2497
+ * @param string $name
2498
+ * @param string $encoding File encoding (see $Encoding).
2499
+ * @param string $type MIME type.
2500
+ * @param string $disposition Disposition to use
2501
+ * @return bool True on successfully adding an attachment
2502
+ */
2503
+ public function addStringEmbeddedImage(
2504
+ $string,
2505
+ $cid,
2506
+ $name = '',
2507
+ $encoding = 'base64',
2508
+ $type = '',
2509
+ $disposition = 'inline'
2510
+ ) {
2511
+ //If a MIME type is not specified, try to work it out from the name
2512
+ if ($type == '') {
2513
+ $type = self::filenameToType($name);
2514
+ }
2515
+
2516
+ // Append to $attachment array
2517
+ $this->attachment[] = array(
2518
+ 0 => $string,
2519
+ 1 => $name,
2520
+ 2 => $name,
2521
+ 3 => $encoding,
2522
+ 4 => $type,
2523
+ 5 => true, // isStringAttachment
2524
+ 6 => $disposition,
2525
+ 7 => $cid
2526
+ );
2527
+ return true;
2528
+ }
2529
+
2530
+ /**
2531
+ * Check if an inline attachment is present.
2532
+ * @access public
2533
+ * @return bool
2534
+ */
2535
+ public function inlineImageExists()
2536
+ {
2537
+ foreach ($this->attachment as $attachment) {
2538
+ if ($attachment[6] == 'inline') {
2539
+ return true;
2540
+ }
2541
+ }
2542
+ return false;
2543
+ }
2544
+
2545
+ /**
2546
+ * Check if an attachment (non-inline) is present.
2547
+ * @return bool
2548
+ */
2549
+ public function attachmentExists()
2550
+ {
2551
+ foreach ($this->attachment as $attachment) {
2552
+ if ($attachment[6] == 'attachment') {
2553
+ return true;
2554
+ }
2555
+ }
2556
+ return false;
2557
+ }
2558
+
2559
+ /**
2560
+ * Check if this message has an alternative body set.
2561
+ * @return bool
2562
+ */
2563
+ public function alternativeExists()
2564
+ {
2565
+ return !empty($this->AltBody);
2566
+ }
2567
+
2568
+ /**
2569
+ * Clear all To recipients.
2570
+ * @return void
2571
+ */
2572
+ public function clearAddresses()
2573
+ {
2574
+ foreach ($this->to as $to) {
2575
+ unset($this->all_recipients[strtolower($to[0])]);
2576
+ }
2577
+ $this->to = array();
2578
+ }
2579
+
2580
+ /**
2581
+ * Clear all CC recipients.
2582
+ * @return void
2583
+ */
2584
+ public function clearCCs()
2585
+ {
2586
+ foreach ($this->cc as $cc) {
2587
+ unset($this->all_recipients[strtolower($cc[0])]);
2588
+ }
2589
+ $this->cc = array();
2590
+ }
2591
+
2592
+ /**
2593
+ * Clear all BCC recipients.
2594
+ * @return void
2595
+ */
2596
+ public function clearBCCs()
2597
+ {
2598
+ foreach ($this->bcc as $bcc) {
2599
+ unset($this->all_recipients[strtolower($bcc[0])]);
2600
+ }
2601
+ $this->bcc = array();
2602
+ }
2603
+
2604
+ /**
2605
+ * Clear all ReplyTo recipients.
2606
+ * @return void
2607
+ */
2608
+ public function clearReplyTos()
2609
+ {
2610
+ $this->ReplyTo = array();
2611
+ }
2612
+
2613
+ /**
2614
+ * Clear all recipient types.
2615
+ * @return void
2616
+ */
2617
+ public function clearAllRecipients()
2618
+ {
2619
+ $this->to = array();
2620
+ $this->cc = array();
2621
+ $this->bcc = array();
2622
+ $this->all_recipients = array();
2623
+ }
2624
+
2625
+ /**
2626
+ * Clear all filesystem, string, and binary attachments.
2627
+ * @return void
2628
+ */
2629
+ public function clearAttachments()
2630
+ {
2631
+ $this->attachment = array();
2632
+ }
2633
+
2634
+ /**
2635
+ * Clear all custom headers.
2636
+ * @return void
2637
+ */
2638
+ public function clearCustomHeaders()
2639
+ {
2640
+ $this->CustomHeader = array();
2641
+ }
2642
+
2643
+ /**
2644
+ * Add an error message to the error container.
2645
+ * @access protected
2646
+ * @param string $msg
2647
+ * @return void
2648
+ */
2649
+ protected function setError($msg)
2650
+ {
2651
+ $this->error_count++;
2652
+ if ($this->Mailer == 'smtp' and !is_null($this->smtp)) {
2653
+ $lasterror = $this->smtp->getError();
2654
+ if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) {
2655
+ $msg .= '<p>' . $this->lang('smtp_error') . $lasterror['smtp_msg'] . "</p>\n";
2656
+ }
2657
+ }
2658
+ $this->ErrorInfo = $msg;
2659
+ }
2660
+
2661
+ /**
2662
+ * Return an RFC 822 formatted date.
2663
+ * @access public
2664
+ * @return string
2665
+ * @static
2666
+ */
2667
+ public static function rfcDate()
2668
+ {
2669
+ //Set the time zone to whatever the default is to avoid 500 errors
2670
+ //Will default to UTC if it's not set properly in php.ini
2671
+ date_default_timezone_set(@date_default_timezone_get());
2672
+ return date('D, j M Y H:i:s O');
2673
+ }
2674
+
2675
+ /**
2676
+ * Get the server hostname.
2677
+ * Returns 'localhost.localdomain' if unknown.
2678
+ * @access protected
2679
+ * @return string
2680
+ */
2681
+ protected function serverHostname()
2682
+ {
2683
+ if (!empty($this->Hostname)) {
2684
+ $result = $this->Hostname;
2685
+ } elseif (isset($_SERVER['SERVER_NAME'])) {
2686
+ $result = $_SERVER['SERVER_NAME'];
2687
+ } else {
2688
+ $result = 'localhost.localdomain';
2689
+ }
2690
+
2691
+ return $result;
2692
+ }
2693
+
2694
+ /**
2695
+ * Get an error message in the current language.
2696
+ * @access protected
2697
+ * @param string $key
2698
+ * @return string
2699
+ */
2700
+ protected function lang($key)
2701
+ {
2702
+ if (count($this->language) < 1) {
2703
+ $this->setLanguage('en'); // set the default language
2704
+ }
2705
+
2706
+ if (isset($this->language[$key])) {
2707
+ return $this->language[$key];
2708
+ } else {
2709
+ return 'Language string failed to load: ' . $key;
2710
+ }
2711
+ }
2712
+
2713
+ /**
2714
+ * Check if an error occurred.
2715
+ * @access public
2716
+ * @return bool True if an error did occur.
2717
+ */
2718
+ public function isError()
2719
+ {
2720
+ return ($this->error_count > 0);
2721
+ }
2722
+
2723
+ /**
2724
+ * Ensure consistent line endings in a string.
2725
+ * Changes every end of line from CRLF, CR or LF to $this->LE.
2726
+ * @access public
2727
+ * @param string $str String to fixEOL
2728
+ * @return string
2729
+ */
2730
+ public function fixEOL($str)
2731
+ {
2732
+ // Normalise to \n
2733
+ $nstr = str_replace(array("\r\n", "\r"), "\n", $str);
2734
+ // Now convert LE as needed
2735
+ if ($this->LE !== "\n") {
2736
+ $nstr = str_replace("\n", $this->LE, $nstr);
2737
+ }
2738
+ return $nstr;
2739
+ }
2740
+
2741
+ /**
2742
+ * Add a custom header.
2743
+ * $name value can be overloaded to contain
2744
+ * both header name and value (name:value)
2745
+ * @access public
2746
+ * @param string $name Custom header name
2747
+ * @param string $value Header value
2748
+ * @return void
2749
+ */
2750
+ public function addCustomHeader($name, $value = null)
2751
+ {
2752
+ if ($value === null) {
2753
+ // Value passed in as name:value
2754
+ $this->CustomHeader[] = explode(':', $name, 2);
2755
+ } else {
2756
+ $this->CustomHeader[] = array($name, $value);
2757
+ }
2758
+ }
2759
+
2760
+ /**
2761
+ * Create a message from an HTML string.
2762
+ * Automatically makes modifications for inline images and backgrounds
2763
+ * and creates a plain-text version by converting the HTML.
2764
+ * Overwrites any existing values in $this->Body and $this->AltBody
2765
+ * @access public
2766
+ * @param string $message HTML message string
2767
+ * @param string $basedir baseline directory for path
2768
+ * @param bool $advanced Whether to use the advanced HTML to text converter
2769
+ * @return string $message
2770
+ */
2771
+ public function msgHTML($message, $basedir = '', $advanced = false)
2772
+ {
2773
+ preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
2774
+ if (isset($images[2])) {
2775
+ foreach ($images[2] as $i => $url) {
2776
+ // do not change urls for absolute images (thanks to corvuscorax)
2777
+ if (!preg_match('#^[A-z]+://#', $url)) {
2778
+ $filename = basename($url);
2779
+ $directory = dirname($url);
2780
+ if ($directory == '.') {
2781
+ $directory = '';
2782
+ }
2783
+ $cid = md5($url) . '@phpmailer.0'; //RFC2392 S 2
2784
+ if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
2785
+ $basedir .= '/';
2786
+ }
2787
+ if (strlen($directory) > 1 && substr($directory, -1) != '/') {
2788
+ $directory .= '/';
2789
+ }
2790
+ if ($this->addEmbeddedImage(
2791
+ $basedir . $directory . $filename,
2792
+ $cid,
2793
+ $filename,
2794
+ 'base64',
2795
+ self::_mime_types(self::mb_pathinfo($filename, PATHINFO_EXTENSION))
2796
+ )
2797
+ ) {
2798
+ $message = preg_replace(
2799
+ "/" . $images[1][$i] . "=[\"']" . preg_quote($url, '/') . "[\"']/Ui",
2800
+ $images[1][$i] . "=\"cid:" . $cid . "\"",
2801
+ $message
2802
+ );
2803
+ }
2804
+ }
2805
+ }
2806
+ }
2807
+ $this->isHTML(true);
2808
+ if (empty($this->AltBody)) {
2809
+ $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
2810
+ }
2811
+ //Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
2812
+ $this->Body = $this->normalizeBreaks($message);
2813
+ $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
2814
+ return $this->Body;
2815
+ }
2816
+
2817
+ /**
2818
+ * Convert an HTML string into plain text.
2819
+ * @param string $html The HTML text to convert
2820
+ * @param bool $advanced Should this use the more complex html2text converter or just a simple one?
2821
+ * @return string
2822
+ */
2823
+ public function html2text($html, $advanced = false)
2824
+ {
2825
+ if ($advanced) {
2826
+ require_once 'extras/class.html2text.php';
2827
+ $h = new html2text($html);
2828
+ return $h->get_text();
2829
+ }
2830
+ return html_entity_decode(
2831
+ trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))),
2832
+ ENT_QUOTES,
2833
+ $this->CharSet
2834
+ );
2835
+ }
2836
+
2837
+ /**
2838
+ * Get the MIME type for a file extension.
2839
+ * @param string $ext File extension
2840
+ * @access public
2841
+ * @return string MIME type of file.
2842
+ * @static
2843
+ */
2844
+ public static function _mime_types($ext = '')
2845
+ {
2846
+ $mimes = array(
2847
+ 'xl' => 'application/excel',
2848
+ 'hqx' => 'application/mac-binhex40',
2849
+ 'cpt' => 'application/mac-compactpro',
2850
+ 'bin' => 'application/macbinary',
2851
+ 'doc' => 'application/msword',
2852
+ 'word' => 'application/msword',
2853
+ 'class' => 'application/octet-stream',
2854
+ 'dll' => 'application/octet-stream',
2855
+ 'dms' => 'application/octet-stream',
2856
+ 'exe' => 'application/octet-stream',
2857
+ 'lha' => 'application/octet-stream',
2858
+ 'lzh' => 'application/octet-stream',
2859
+ 'psd' => 'application/octet-stream',
2860
+ 'sea' => 'application/octet-stream',
2861
+ 'so' => 'application/octet-stream',
2862
+ 'oda' => 'application/oda',
2863
+ 'pdf' => 'application/pdf',
2864
+ 'ai' => 'application/postscript',
2865
+ 'eps' => 'application/postscript',
2866
+ 'ps' => 'application/postscript',
2867
+ 'smi' => 'application/smil',
2868
+ 'smil' => 'application/smil',
2869
+ 'mif' => 'application/vnd.mif',
2870
+ 'xls' => 'application/vnd.ms-excel',
2871
+ 'ppt' => 'application/vnd.ms-powerpoint',
2872
+ 'wbxml' => 'application/vnd.wap.wbxml',
2873
+ 'wmlc' => 'application/vnd.wap.wmlc',
2874
+ 'dcr' => 'application/x-director',
2875
+ 'dir' => 'application/x-director',
2876
+ 'dxr' => 'application/x-director',
2877
+ 'dvi' => 'application/x-dvi',
2878
+ 'gtar' => 'application/x-gtar',
2879
+ 'php3' => 'application/x-httpd-php',
2880
+ 'php4' => 'application/x-httpd-php',
2881
+ 'php' => 'application/x-httpd-php',
2882
+ 'phtml' => 'application/x-httpd-php',
2883
+ 'phps' => 'application/x-httpd-php-source',
2884
+ 'js' => 'application/x-javascript',
2885
+ 'swf' => 'application/x-shockwave-flash',
2886
+ 'sit' => 'application/x-stuffit',
2887
+ 'tar' => 'application/x-tar',
2888
+ 'tgz' => 'application/x-tar',
2889
+ 'xht' => 'application/xhtml+xml',
2890
+ 'xhtml' => 'application/xhtml+xml',
2891
+ 'zip' => 'application/zip',
2892
+ 'mid' => 'audio/midi',
2893
+ 'midi' => 'audio/midi',
2894
+ 'mp2' => 'audio/mpeg',
2895
+ 'mp3' => 'audio/mpeg',
2896
+ 'mpga' => 'audio/mpeg',
2897
+ 'aif' => 'audio/x-aiff',
2898
+ 'aifc' => 'audio/x-aiff',
2899
+ 'aiff' => 'audio/x-aiff',
2900
+ 'ram' => 'audio/x-pn-realaudio',
2901
+ 'rm' => 'audio/x-pn-realaudio',
2902
+ 'rpm' => 'audio/x-pn-realaudio-plugin',
2903
+ 'ra' => 'audio/x-realaudio',
2904
+ 'wav' => 'audio/x-wav',
2905
+ 'bmp' => 'image/bmp',
2906
+ 'gif' => 'image/gif',
2907
+ 'jpeg' => 'image/jpeg',
2908
+ 'jpe' => 'image/jpeg',
2909
+ 'jpg' => 'image/jpeg',
2910
+ 'png' => 'image/png',
2911
+ 'tiff' => 'image/tiff',
2912
+ 'tif' => 'image/tiff',
2913
+ 'eml' => 'message/rfc822',
2914
+ 'css' => 'text/css',
2915
+ 'html' => 'text/html',
2916
+ 'htm' => 'text/html',
2917
+ 'shtml' => 'text/html',
2918
+ 'log' => 'text/plain',
2919
+ 'text' => 'text/plain',
2920
+ 'txt' => 'text/plain',
2921
+ 'rtx' => 'text/richtext',
2922
+ 'rtf' => 'text/rtf',
2923
+ 'xml' => 'text/xml',
2924
+ 'xsl' => 'text/xml',
2925
+ 'mpeg' => 'video/mpeg',
2926
+ 'mpe' => 'video/mpeg',
2927
+ 'mpg' => 'video/mpeg',
2928
+ 'mov' => 'video/quicktime',
2929
+ 'qt' => 'video/quicktime',
2930
+ 'rv' => 'video/vnd.rn-realvideo',
2931
+ 'avi' => 'video/x-msvideo',
2932
+ 'movie' => 'video/x-sgi-movie'
2933
+ );
2934
+ return (array_key_exists(strtolower($ext), $mimes) ? $mimes[strtolower($ext)]: 'application/octet-stream');
2935
+ }
2936
+
2937
+ /**
2938
+ * Map a file name to a MIME type.
2939
+ * Defaults to 'application/octet-stream', i.e.. arbitrary binary data.
2940
+ * @param string $filename A file name or full path, does not need to exist as a file
2941
+ * @return string
2942
+ * @static
2943
+ */
2944
+ public static function filenameToType($filename)
2945
+ {
2946
+ //In case the path is a URL, strip any query string before getting extension
2947
+ $qpos = strpos($filename, '?');
2948
+ if ($qpos !== false) {
2949
+ $filename = substr($filename, 0, $qpos);
2950
+ }
2951
+ $pathinfo = self::mb_pathinfo($filename);
2952
+ return self::_mime_types($pathinfo['extension']);
2953
+ }
2954
+
2955
+ /**
2956
+ * Multi-byte-safe pathinfo replacement.
2957
+ * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe.
2958
+ * Works similarly to the one in PHP >= 5.2.0
2959
+ * @link http://www.php.net/manual/en/function.pathinfo.php#107461
2960
+ * @param string $path A filename or path, does not need to exist as a file
2961
+ * @param integer|string $options Either a PATHINFO_* constant,
2962
+ * or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2
2963
+ * @return string|array
2964
+ * @static
2965
+ */
2966
+ public static function mb_pathinfo($path, $options = null)
2967
+ {
2968
+ $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => '');
2969
+ $m = array();
2970
+ preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $m);
2971
+ if (array_key_exists(1, $m)) {
2972
+ $ret['dirname'] = $m[1];
2973
+ }
2974
+ if (array_key_exists(2, $m)) {
2975
+ $ret['basename'] = $m[2];
2976
+ }
2977
+ if (array_key_exists(5, $m)) {
2978
+ $ret['extension'] = $m[5];
2979
+ }
2980
+ if (array_key_exists(3, $m)) {
2981
+ $ret['filename'] = $m[3];
2982
+ }
2983
+ switch ($options) {
2984
+ case PATHINFO_DIRNAME:
2985
+ case 'dirname':
2986
+ return $ret['dirname'];
2987
+ break;
2988
+ case PATHINFO_BASENAME:
2989
+ case 'basename':
2990
+ return $ret['basename'];
2991
+ break;
2992
+ case PATHINFO_EXTENSION:
2993
+ case 'extension':
2994
+ return $ret['extension'];
2995
+ break;
2996
+ case PATHINFO_FILENAME:
2997
+ case 'filename':
2998
+ return $ret['filename'];
2999
+ break;
3000
+ default:
3001
+ return $ret;
3002
+ }
3003
+ }
3004
+
3005
+ /**
3006
+ * Set or reset instance properties.
3007
+ *
3008
+ * Usage Example:
3009
+ * $page->set('X-Priority', '3');
3010
+ *
3011
+ * @access public
3012
+ * @param string $name
3013
+ * @param mixed $value
3014
+ * NOTE: will not work with arrays, there are no arrays to set/reset
3015
+ * @throws phpmailerException
3016
+ * @return bool
3017
+ * @todo Should this not be using __set() magic function?
3018
+ */
3019
+ public function set($name, $value = '')
3020
+ {
3021
+ try {
3022
+ if (isset($this->$name)) {
3023
+ $this->$name = $value;
3024
+ } else {
3025
+ throw new phpmailerException($this->lang('variable_set') . $name, self::STOP_CRITICAL);
3026
+ }
3027
+ } catch (Exception $e) {
3028
+ $this->setError($e->getMessage());
3029
+ if ($e->getCode() == self::STOP_CRITICAL) {
3030
+ return false;
3031
+ }
3032
+ }
3033
+ return true;
3034
+ }
3035
+
3036
+ /**
3037
+ * Strip newlines to prevent header injection.
3038
+ * @access public
3039
+ * @param string $str
3040
+ * @return string
3041
+ */
3042
+ public function secureHeader($str)
3043
+ {
3044
+ return trim(str_replace(array("\r", "\n"), '', $str));
3045
+ }
3046
+
3047
+ /**
3048
+ * Normalize line breaks in a string.
3049
+ * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format.
3050
+ * Defaults to CRLF (for message bodies) and preserves consecutive breaks.
3051
+ * @param string $text
3052
+ * @param string $breaktype What kind of line break to use, defaults to CRLF
3053
+ * @return string
3054
+ * @access public
3055
+ * @static
3056
+ */
3057
+ public static function normalizeBreaks($text, $breaktype = "\r\n")
3058
+ {
3059
+ return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text);
3060
+ }
3061
+
3062
+
3063
+ /**
3064
+ * Set the private key file and password for S/MIME signing.
3065
+ * @access public
3066
+ * @param string $cert_filename
3067
+ * @param string $key_filename
3068
+ * @param string $key_pass Password for private key
3069
+ */
3070
+ public function sign($cert_filename, $key_filename, $key_pass)
3071
+ {
3072
+ $this->sign_cert_file = $cert_filename;
3073
+ $this->sign_key_file = $key_filename;
3074
+ $this->sign_key_pass = $key_pass;
3075
+ }
3076
+
3077
+ /**
3078
+ * Quoted-Printable-encode a DKIM header.
3079
+ * @access public
3080
+ * @param string $txt
3081
+ * @return string
3082
+ */
3083
+ public function DKIM_QP($txt)
3084
+ {
3085
+ $line = '';
3086
+ for ($i = 0; $i < strlen($txt); $i++) {
3087
+ $ord = ord($txt[$i]);
3088
+ if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) {
3089
+ $line .= $txt[$i];
3090
+ } else {
3091
+ $line .= "=" . sprintf("%02X", $ord);
3092
+ }
3093
+ }
3094
+ return $line;
3095
+ }
3096
+
3097
+ /**
3098
+ * Generate a DKIM signature.
3099
+ * @access public
3100
+ * @param string $s Header
3101
+ * @throws phpmailerException
3102
+ * @return string
3103
+ */
3104
+ public function DKIM_Sign($s)
3105
+ {
3106
+ if (!defined('PKCS7_TEXT')) {
3107
+ if ($this->exceptions) {
3108
+ throw new phpmailerException($this->lang("signing") . ' OpenSSL extension missing.');
3109
+ }
3110
+ return '';
3111
+ }
3112
+ $privKeyStr = file_get_contents($this->DKIM_private);
3113
+ if ($this->DKIM_passphrase != '') {
3114
+ $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
3115
+ } else {
3116
+ $privKey = $privKeyStr;
3117
+ }
3118
+ if (openssl_sign($s, $signature, $privKey)) {
3119
+ return base64_encode($signature);
3120
+ }
3121
+ return '';
3122
+ }
3123
+
3124
+ /**
3125
+ * Generate a DKIM canonicalization header.
3126
+ * @access public
3127
+ * @param string $s Header
3128
+ * @return string
3129
+ */
3130
+ public function DKIM_HeaderC($s)
3131
+ {
3132
+ $s = preg_replace("/\r\n\s+/", " ", $s);
3133
+ $lines = explode("\r\n", $s);
3134
+ foreach ($lines as $key => $line) {
3135
+ list($heading, $value) = explode(":", $line, 2);
3136
+ $heading = strtolower($heading);
3137
+ $value = preg_replace("/\s+/", " ", $value); // Compress useless spaces
3138
+ $lines[$key] = $heading . ":" . trim($value); // Don't forget to remove WSP around the value
3139
+ }
3140
+ $s = implode("\r\n", $lines);
3141
+ return $s;
3142
+ }
3143
+
3144
+ /**
3145
+ * Generate a DKIM canonicalization body.
3146
+ * @access public
3147
+ * @param string $body Message Body
3148
+ * @return string
3149
+ */
3150
+ public function DKIM_BodyC($body)
3151
+ {
3152
+ if ($body == '') {
3153
+ return "\r\n";
3154
+ }
3155
+ // stabilize line endings
3156
+ $body = str_replace("\r\n", "\n", $body);
3157
+ $body = str_replace("\n", "\r\n", $body);
3158
+ // END stabilize line endings
3159
+ while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") {
3160
+ $body = substr($body, 0, strlen($body) - 2);
3161
+ }
3162
+ return $body;
3163
+ }
3164
+
3165
+ /**
3166
+ * Create the DKIM header and body in a new message header.
3167
+ * @access public
3168
+ * @param string $headers_line Header lines
3169
+ * @param string $subject Subject
3170
+ * @param string $body Body
3171
+ * @return string
3172
+ */
3173
+ public function DKIM_Add($headers_line, $subject, $body)
3174
+ {
3175
+ $DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms
3176
+ $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
3177
+ $DKIMquery = 'dns/txt'; // Query method
3178
+ $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
3179
+ $subject_header = "Subject: $subject";
3180
+ $headers = explode($this->LE, $headers_line);
3181
+ $from_header = '';
3182
+ $to_header = '';
3183
+ $current = '';
3184
+ foreach ($headers as $header) {
3185
+ if (strpos($header, 'From:') === 0) {
3186
+ $from_header = $header;
3187
+ $current = 'from_header';
3188
+ } elseif (strpos($header, 'To:') === 0) {
3189
+ $to_header = $header;
3190
+ $current = 'to_header';
3191
+ } else {
3192
+ if ($current && strpos($header, ' =?') === 0) {
3193
+ $current .= $header;
3194
+ } else {
3195
+ $current = '';
3196
+ }
3197
+ }
3198
+ }
3199
+ $from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
3200
+ $to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
3201
+ $subject = str_replace(
3202
+ '|',
3203
+ '=7C',
3204
+ $this->DKIM_QP($subject_header)
3205
+ ); // Copied header fields (dkim-quoted-printable)
3206
+ $body = $this->DKIM_BodyC($body);
3207
+ $DKIMlen = strlen($body); // Length of body
3208
+ $DKIMb64 = base64_encode(pack("H*", sha1($body))); // Base64 of packed binary SHA-1 hash of body
3209
+ $ident = ($this->DKIM_identity == '') ? '' : " i=" . $this->DKIM_identity . ";";
3210
+ $dkimhdrs = "DKIM-Signature: v=1; a=" .
3211
+ $DKIMsignatureType . "; q=" .
3212
+ $DKIMquery . "; l=" .
3213
+ $DKIMlen . "; s=" .
3214
+ $this->DKIM_selector .
3215
+ ";\r\n" .
3216
+ "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n" .
3217
+ "\th=From:To:Subject;\r\n" .
3218
+ "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n" .
3219
+ "\tz=$from\r\n" .
3220
+ "\t|$to\r\n" .
3221
+ "\t|$subject;\r\n" .
3222
+ "\tbh=" . $DKIMb64 . ";\r\n" .
3223
+ "\tb=";
3224
+ $toSign = $this->DKIM_HeaderC(
3225
+ $from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs
3226
+ );
3227
+ $signed = $this->DKIM_Sign($toSign);
3228
+ return $dkimhdrs . $signed . "\r\n";
3229
+ }
3230
+
3231
+ /**
3232
+ * Perform a callback.
3233
+ * @param bool $isSent
3234
+ * @param string $to
3235
+ * @param string $cc
3236
+ * @param string $bcc
3237
+ * @param string $subject
3238
+ * @param string $body
3239
+ * @param string $from
3240
+ */
3241
+ protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from = null)
3242
+ {
3243
+ if (!empty($this->action_function) && is_callable($this->action_function)) {
3244
+ $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from);
3245
+ call_user_func_array($this->action_function, $params);
3246
+ }
3247
+ }
3248
+ }
3249
+
3250
+ /**
3251
+ * PHPMailer exception handler
3252
+ * @package PHPMailer
3253
+ */
3254
+ class phpmailerException extends Exception
3255
+ {
3256
+ /**
3257
+ * Prettify error message output
3258
+ * @return string
3259
+ */
3260
+ public function errorMessage()
3261
+ {
3262
+ $errorMsg = '<strong>' . $this->getMessage() . "</strong><br />\n";
3263
+ return $errorMsg;
3264
+ }
3265
+ }