stump-cli 0.1.0 → 0.1.1

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 (1310) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +3 -16
  6. data/Rakefile +2 -0
  7. data/bin/stump-cli +58 -0
  8. data/lib/stump-cli/version.rb +3 -0
  9. data/lib/stump.rb +5 -0
  10. data/lib/wp/Movefile-example +62 -0
  11. data/lib/wp/README.md +25 -0
  12. data/lib/wp/index.php +17 -0
  13. data/lib/wp/license.txt +385 -0
  14. data/lib/wp/readme.html +96 -0
  15. data/lib/wp/wp-activate.php +131 -0
  16. data/lib/wp/wp-admin/about.php +193 -0
  17. data/lib/wp/wp-admin/admin-ajax.php +98 -0
  18. data/lib/wp/wp-admin/admin-footer.php +99 -0
  19. data/lib/wp/wp-admin/admin-functions.php +15 -0
  20. data/lib/wp/wp-admin/admin-header.php +243 -0
  21. data/lib/wp/wp-admin/admin-post.php +71 -0
  22. data/lib/wp/wp-admin/admin.php +347 -0
  23. data/lib/wp/wp-admin/async-upload.php +114 -0
  24. data/lib/wp/wp-admin/comment.php +299 -0
  25. data/lib/wp/wp-admin/credits.php +192 -0
  26. data/lib/wp/wp-admin/css/about-rtl.css +446 -0
  27. data/lib/wp/wp-admin/css/about.css +446 -0
  28. data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
  29. data/lib/wp/wp-admin/css/admin-menu.css +917 -0
  30. data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
  31. data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
  32. data/lib/wp/wp-admin/css/color-picker.css +127 -0
  33. data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
  34. data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
  35. data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
  36. data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
  37. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
  38. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
  39. data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
  40. data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
  41. data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
  42. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
  43. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
  44. data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
  45. data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
  46. data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
  47. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
  48. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
  49. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
  50. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
  51. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
  52. data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
  53. data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
  54. data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
  55. data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
  56. data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
  57. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
  58. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
  59. data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
  60. data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
  61. data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
  62. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
  63. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
  64. data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
  65. data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
  66. data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
  67. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
  68. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
  69. data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
  70. data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
  71. data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
  72. data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
  73. data/lib/wp/wp-admin/css/common.css +3212 -0
  74. data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
  75. data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
  76. data/lib/wp/wp-admin/css/customize-controls.css +889 -0
  77. data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
  78. data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
  79. data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
  80. data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
  81. data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
  82. data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
  83. data/lib/wp/wp-admin/css/dashboard.css +1116 -0
  84. data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
  85. data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
  86. data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
  87. data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
  88. data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
  89. data/lib/wp/wp-admin/css/edit.css +1501 -0
  90. data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
  91. data/lib/wp/wp-admin/css/farbtastic.css +41 -0
  92. data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
  93. data/lib/wp/wp-admin/css/forms.css +992 -0
  94. data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
  95. data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
  96. data/lib/wp/wp-admin/css/ie.css +785 -0
  97. data/lib/wp/wp-admin/css/ie.min.css +1 -0
  98. data/lib/wp/wp-admin/css/install-rtl.css +389 -0
  99. data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
  100. data/lib/wp/wp-admin/css/install.css +389 -0
  101. data/lib/wp/wp-admin/css/install.min.css +1 -0
  102. data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
  103. data/lib/wp/wp-admin/css/l10n.css +101 -0
  104. data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
  105. data/lib/wp/wp-admin/css/list-tables.css +1875 -0
  106. data/lib/wp/wp-admin/css/login-rtl.css +269 -0
  107. data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
  108. data/lib/wp/wp-admin/css/login.css +269 -0
  109. data/lib/wp/wp-admin/css/login.min.css +1 -0
  110. data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
  111. data/lib/wp/wp-admin/css/media.css +1196 -0
  112. data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
  113. data/lib/wp/wp-admin/css/nav-menus.css +857 -0
  114. data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
  115. data/lib/wp/wp-admin/css/press-this.css +458 -0
  116. data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
  117. data/lib/wp/wp-admin/css/revisions.css +574 -0
  118. data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
  119. data/lib/wp/wp-admin/css/themes.css +1732 -0
  120. data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
  121. data/lib/wp/wp-admin/css/widgets.css +577 -0
  122. data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
  123. data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
  124. data/lib/wp/wp-admin/css/wp-admin.css +14 -0
  125. data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
  126. data/lib/wp/wp-admin/custom-background.php +482 -0
  127. data/lib/wp/wp-admin/custom-header.php +1366 -0
  128. data/lib/wp/wp-admin/customize.php +278 -0
  129. data/lib/wp/wp-admin/edit-comments.php +254 -0
  130. data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
  131. data/lib/wp/wp-admin/edit-form-comment.php +160 -0
  132. data/lib/wp/wp-admin/edit-link-form.php +150 -0
  133. data/lib/wp/wp-admin/edit-tag-form.php +204 -0
  134. data/lib/wp/wp-admin/edit-tags.php +591 -0
  135. data/lib/wp/wp-admin/edit.php +330 -0
  136. data/lib/wp/wp-admin/export.php +243 -0
  137. data/lib/wp/wp-admin/freedoms.php +57 -0
  138. data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
  139. data/lib/wp/wp-admin/images/align-center.png +0 -0
  140. data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
  141. data/lib/wp/wp-admin/images/align-left.png +0 -0
  142. data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
  143. data/lib/wp/wp-admin/images/align-none.png +0 -0
  144. data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
  145. data/lib/wp/wp-admin/images/align-right.png +0 -0
  146. data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
  147. data/lib/wp/wp-admin/images/arrows.png +0 -0
  148. data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
  149. data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
  150. data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
  151. data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
  152. data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
  153. data/lib/wp/wp-admin/images/date-button.gif +0 -0
  154. data/lib/wp/wp-admin/images/generic.png +0 -0
  155. data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
  156. data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
  157. data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
  158. data/lib/wp/wp-admin/images/icons32.png +0 -0
  159. data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
  160. data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
  161. data/lib/wp/wp-admin/images/list-2x.png +0 -0
  162. data/lib/wp/wp-admin/images/list.png +0 -0
  163. data/lib/wp/wp-admin/images/loading.gif +0 -0
  164. data/lib/wp/wp-admin/images/marker.png +0 -0
  165. data/lib/wp/wp-admin/images/mask.png +0 -0
  166. data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
  167. data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
  168. data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
  169. data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
  170. data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
  171. data/lib/wp/wp-admin/images/media-button.png +0 -0
  172. data/lib/wp/wp-admin/images/menu-2x.png +0 -0
  173. data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
  174. data/lib/wp/wp-admin/images/menu-vs.png +0 -0
  175. data/lib/wp/wp-admin/images/menu.png +0 -0
  176. data/lib/wp/wp-admin/images/no.png +0 -0
  177. data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
  178. data/lib/wp/wp-admin/images/post-formats.png +0 -0
  179. data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
  180. data/lib/wp/wp-admin/images/post-formats32.png +0 -0
  181. data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
  182. data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
  183. data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
  184. data/lib/wp/wp-admin/images/resize.gif +0 -0
  185. data/lib/wp/wp-admin/images/se.png +0 -0
  186. data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
  187. data/lib/wp/wp-admin/images/sort.gif +0 -0
  188. data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
  189. data/lib/wp/wp-admin/images/spinner.gif +0 -0
  190. data/lib/wp/wp-admin/images/stars-2x.png +0 -0
  191. data/lib/wp/wp-admin/images/stars.png +0 -0
  192. data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
  193. data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
  194. data/lib/wp/wp-admin/images/wheel.png +0 -0
  195. data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
  196. data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
  197. data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
  198. data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
  199. data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
  200. data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
  201. data/lib/wp/wp-admin/images/xit.gif +0 -0
  202. data/lib/wp/wp-admin/images/yes.png +0 -0
  203. data/lib/wp/wp-admin/import.php +132 -0
  204. data/lib/wp/wp-admin/includes/admin.php +74 -0
  205. data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
  206. data/lib/wp/wp-admin/includes/bookmark.php +305 -0
  207. data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
  208. data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
  209. data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
  210. data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
  211. data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
  212. data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
  213. data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
  214. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
  215. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
  216. data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
  217. data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
  218. data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
  219. data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
  220. data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
  221. data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
  222. data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
  223. data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
  224. data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
  225. data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
  226. data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
  227. data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
  228. data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
  229. data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
  230. data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
  231. data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
  232. data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
  233. data/lib/wp/wp-admin/includes/comment.php +171 -0
  234. data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
  235. data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
  236. data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
  237. data/lib/wp/wp-admin/includes/export.php +508 -0
  238. data/lib/wp/wp-admin/includes/file.php +1152 -0
  239. data/lib/wp/wp-admin/includes/image-edit.php +828 -0
  240. data/lib/wp/wp-admin/includes/image.php +598 -0
  241. data/lib/wp/wp-admin/includes/import.php +206 -0
  242. data/lib/wp/wp-admin/includes/list-table.php +113 -0
  243. data/lib/wp/wp-admin/includes/media.php +3012 -0
  244. data/lib/wp/wp-admin/includes/menu.php +322 -0
  245. data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
  246. data/lib/wp/wp-admin/includes/misc.php +845 -0
  247. data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
  248. data/lib/wp/wp-admin/includes/ms.php +814 -0
  249. data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
  250. data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
  251. data/lib/wp/wp-admin/includes/plugin.php +1899 -0
  252. data/lib/wp/wp-admin/includes/post.php +1661 -0
  253. data/lib/wp/wp-admin/includes/revision.php +228 -0
  254. data/lib/wp/wp-admin/includes/schema.php +1038 -0
  255. data/lib/wp/wp-admin/includes/screen.php +1179 -0
  256. data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
  257. data/lib/wp/wp-admin/includes/template.php +2157 -0
  258. data/lib/wp/wp-admin/includes/theme-install.php +205 -0
  259. data/lib/wp/wp-admin/includes/theme.php +474 -0
  260. data/lib/wp/wp-admin/includes/translation-install.php +240 -0
  261. data/lib/wp/wp-admin/includes/update-core.php +1186 -0
  262. data/lib/wp/wp-admin/includes/update.php +432 -0
  263. data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
  264. data/lib/wp/wp-admin/includes/user.php +442 -0
  265. data/lib/wp/wp-admin/includes/widgets.php +245 -0
  266. data/lib/wp/wp-admin/index.php +131 -0
  267. data/lib/wp/wp-admin/install-helper.php +199 -0
  268. data/lib/wp/wp-admin/install.php +305 -0
  269. data/lib/wp/wp-admin/js/accordion.js +143 -0
  270. data/lib/wp/wp-admin/js/accordion.min.js +1 -0
  271. data/lib/wp/wp-admin/js/color-picker.js +155 -0
  272. data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
  273. data/lib/wp/wp-admin/js/comment.js +50 -0
  274. data/lib/wp/wp-admin/js/comment.min.js +1 -0
  275. data/lib/wp/wp-admin/js/common.js +804 -0
  276. data/lib/wp/wp-admin/js/common.min.js +1 -0
  277. data/lib/wp/wp-admin/js/custom-background.js +75 -0
  278. data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
  279. data/lib/wp/wp-admin/js/custom-header.js +61 -0
  280. data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
  281. data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
  282. data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
  283. data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
  284. data/lib/wp/wp-admin/js/dashboard.js +190 -0
  285. data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
  286. data/lib/wp/wp-admin/js/edit-comments.js +625 -0
  287. data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
  288. data/lib/wp/wp-admin/js/editor-expand.js +705 -0
  289. data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
  290. data/lib/wp/wp-admin/js/editor.js +324 -0
  291. data/lib/wp/wp-admin/js/editor.min.js +1 -0
  292. data/lib/wp/wp-admin/js/farbtastic.js +276 -0
  293. data/lib/wp/wp-admin/js/gallery.js +237 -0
  294. data/lib/wp/wp-admin/js/gallery.min.js +1 -0
  295. data/lib/wp/wp-admin/js/image-edit.js +633 -0
  296. data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
  297. data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
  298. data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
  299. data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
  300. data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
  301. data/lib/wp/wp-admin/js/iris.min.js +4 -0
  302. data/lib/wp/wp-admin/js/language-chooser.js +26 -0
  303. data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
  304. data/lib/wp/wp-admin/js/link.js +69 -0
  305. data/lib/wp/wp-admin/js/link.min.js +1 -0
  306. data/lib/wp/wp-admin/js/media-gallery.js +26 -0
  307. data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
  308. data/lib/wp/wp-admin/js/media-upload.js +69 -0
  309. data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
  310. data/lib/wp/wp-admin/js/media.js +111 -0
  311. data/lib/wp/wp-admin/js/media.min.js +1 -0
  312. data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
  313. data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
  314. data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
  315. data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
  316. data/lib/wp/wp-admin/js/plugin-install.js +76 -0
  317. data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
  318. data/lib/wp/wp-admin/js/post.js +1094 -0
  319. data/lib/wp/wp-admin/js/post.min.js +1 -0
  320. data/lib/wp/wp-admin/js/postbox.js +199 -0
  321. data/lib/wp/wp-admin/js/postbox.min.js +1 -0
  322. data/lib/wp/wp-admin/js/revisions.js +1110 -0
  323. data/lib/wp/wp-admin/js/revisions.min.js +1 -0
  324. data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
  325. data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
  326. data/lib/wp/wp-admin/js/svg-painter.js +240 -0
  327. data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
  328. data/lib/wp/wp-admin/js/tags.js +72 -0
  329. data/lib/wp/wp-admin/js/tags.min.js +1 -0
  330. data/lib/wp/wp-admin/js/theme.js +1691 -0
  331. data/lib/wp/wp-admin/js/theme.min.js +1 -0
  332. data/lib/wp/wp-admin/js/updates.js +65 -0
  333. data/lib/wp/wp-admin/js/updates.min.js +1 -0
  334. data/lib/wp/wp-admin/js/user-profile.js +127 -0
  335. data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
  336. data/lib/wp/wp-admin/js/user-suggest.js +30 -0
  337. data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
  338. data/lib/wp/wp-admin/js/widgets.js +494 -0
  339. data/lib/wp/wp-admin/js/widgets.min.js +1 -0
  340. data/lib/wp/wp-admin/js/word-count.js +44 -0
  341. data/lib/wp/wp-admin/js/word-count.min.js +1 -0
  342. data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
  343. data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
  344. data/lib/wp/wp-admin/js/xfn.js +17 -0
  345. data/lib/wp/wp-admin/js/xfn.min.js +1 -0
  346. data/lib/wp/wp-admin/link-add.php +29 -0
  347. data/lib/wp/wp-admin/link-manager.php +99 -0
  348. data/lib/wp/wp-admin/link-parse-opml.php +84 -0
  349. data/lib/wp/wp-admin/link.php +117 -0
  350. data/lib/wp/wp-admin/load-scripts.php +162 -0
  351. data/lib/wp/wp-admin/load-styles.php +153 -0
  352. data/lib/wp/wp-admin/maint/repair.php +124 -0
  353. data/lib/wp/wp-admin/media-new.php +84 -0
  354. data/lib/wp/wp-admin/media-upload.php +100 -0
  355. data/lib/wp/wp-admin/media.php +146 -0
  356. data/lib/wp/wp-admin/menu-header.php +227 -0
  357. data/lib/wp/wp-admin/menu.php +255 -0
  358. data/lib/wp/wp-admin/moderation.php +12 -0
  359. data/lib/wp/wp-admin/ms-admin.php +13 -0
  360. data/lib/wp/wp-admin/ms-delete-site.php +91 -0
  361. data/lib/wp/wp-admin/ms-edit.php +13 -0
  362. data/lib/wp/wp-admin/ms-options.php +12 -0
  363. data/lib/wp/wp-admin/ms-sites.php +13 -0
  364. data/lib/wp/wp-admin/ms-themes.php +13 -0
  365. data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
  366. data/lib/wp/wp-admin/ms-users.php +13 -0
  367. data/lib/wp/wp-admin/my-sites.php +145 -0
  368. data/lib/wp/wp-admin/nav-menus.php +798 -0
  369. data/lib/wp/wp-admin/network.php +561 -0
  370. data/lib/wp/wp-admin/network/about.php +16 -0
  371. data/lib/wp/wp-admin/network/admin.php +32 -0
  372. data/lib/wp/wp-admin/network/credits.php +16 -0
  373. data/lib/wp/wp-admin/network/edit.php +42 -0
  374. data/lib/wp/wp-admin/network/freedoms.php +16 -0
  375. data/lib/wp/wp-admin/network/index.php +79 -0
  376. data/lib/wp/wp-admin/network/menu.php +63 -0
  377. data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
  378. data/lib/wp/wp-admin/network/plugin-install.php +19 -0
  379. data/lib/wp/wp-admin/network/plugins.php +16 -0
  380. data/lib/wp/wp-admin/network/profile.php +16 -0
  381. data/lib/wp/wp-admin/network/settings.php +347 -0
  382. data/lib/wp/wp-admin/network/setup.php +16 -0
  383. data/lib/wp/wp-admin/network/site-info.php +178 -0
  384. data/lib/wp/wp-admin/network/site-new.php +153 -0
  385. data/lib/wp/wp-admin/network/site-settings.php +173 -0
  386. data/lib/wp/wp-admin/network/site-themes.php +185 -0
  387. data/lib/wp/wp-admin/network/site-users.php +319 -0
  388. data/lib/wp/wp-admin/network/sites.php +275 -0
  389. data/lib/wp/wp-admin/network/theme-editor.php +16 -0
  390. data/lib/wp/wp-admin/network/theme-install.php +19 -0
  391. data/lib/wp/wp-admin/network/themes.php +291 -0
  392. data/lib/wp/wp-admin/network/update-core.php +16 -0
  393. data/lib/wp/wp-admin/network/update.php +19 -0
  394. data/lib/wp/wp-admin/network/upgrade.php +120 -0
  395. data/lib/wp/wp-admin/network/user-edit.php +16 -0
  396. data/lib/wp/wp-admin/network/user-new.php +106 -0
  397. data/lib/wp/wp-admin/network/users.php +296 -0
  398. data/lib/wp/wp-admin/options-discussion.php +273 -0
  399. data/lib/wp/wp-admin/options-general.php +355 -0
  400. data/lib/wp/wp-admin/options-head.php +18 -0
  401. data/lib/wp/wp-admin/options-media.php +136 -0
  402. data/lib/wp/wp-admin/options-permalink.php +289 -0
  403. data/lib/wp/wp-admin/options-reading.php +184 -0
  404. data/lib/wp/wp-admin/options-writing.php +194 -0
  405. data/lib/wp/wp-admin/options.php +265 -0
  406. data/lib/wp/wp-admin/plugin-editor.php +279 -0
  407. data/lib/wp/wp-admin/plugin-install.php +134 -0
  408. data/lib/wp/wp-admin/plugins.php +474 -0
  409. data/lib/wp/wp-admin/post-new.php +74 -0
  410. data/lib/wp/wp-admin/post.php +318 -0
  411. data/lib/wp/wp-admin/press-this.php +691 -0
  412. data/lib/wp/wp-admin/profile.php +18 -0
  413. data/lib/wp/wp-admin/revision.php +221 -0
  414. data/lib/wp/wp-admin/setup-config.php +345 -0
  415. data/lib/wp/wp-admin/theme-editor.php +243 -0
  416. data/lib/wp/wp-admin/theme-install.php +278 -0
  417. data/lib/wp/wp-admin/themes.php +374 -0
  418. data/lib/wp/wp-admin/tools.php +75 -0
  419. data/lib/wp/wp-admin/update-core.php +653 -0
  420. data/lib/wp/wp-admin/update.php +272 -0
  421. data/lib/wp/wp-admin/upgrade-functions.php +12 -0
  422. data/lib/wp/wp-admin/upgrade.php +116 -0
  423. data/lib/wp/wp-admin/upload.php +292 -0
  424. data/lib/wp/wp-admin/user-edit.php +557 -0
  425. data/lib/wp/wp-admin/user-new.php +439 -0
  426. data/lib/wp/wp-admin/user/about.php +13 -0
  427. data/lib/wp/wp-admin/user/admin.php +32 -0
  428. data/lib/wp/wp-admin/user/credits.php +13 -0
  429. data/lib/wp/wp-admin/user/freedoms.php +13 -0
  430. data/lib/wp/wp-admin/user/index.php +12 -0
  431. data/lib/wp/wp-admin/user/menu.php +22 -0
  432. data/lib/wp/wp-admin/user/profile.php +12 -0
  433. data/lib/wp/wp-admin/user/user-edit.php +12 -0
  434. data/lib/wp/wp-admin/users.php +460 -0
  435. data/lib/wp/wp-admin/widgets.php +442 -0
  436. data/lib/wp/wp-blog-header.php +18 -0
  437. data/lib/wp/wp-comments-post.php +164 -0
  438. data/lib/wp/wp-config-sample.php +80 -0
  439. data/lib/wp/wp-content/index.php +2 -0
  440. data/lib/wp/wp-content/plugins/hello.php +82 -0
  441. data/lib/wp/wp-content/plugins/index.php +2 -0
  442. data/lib/wp/wp-content/themes/index.php +2 -0
  443. data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
  444. data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
  445. data/lib/wp/wp-content/themes/stump/404.php +13 -0
  446. data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
  447. data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
  448. data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
  449. data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
  450. data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
  451. data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
  452. data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
  453. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
  454. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
  455. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  456. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  457. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  458. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  459. data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
  460. data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
  461. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
  462. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
  463. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
  464. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
  465. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
  466. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
  467. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
  468. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
  469. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
  470. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
  471. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
  472. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
  473. data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
  474. data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
  475. data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
  476. data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
  477. data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
  478. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
  479. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
  480. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
  481. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
  482. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
  483. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
  484. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
  485. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
  486. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
  487. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
  488. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
  489. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
  490. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
  491. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
  492. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
  493. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
  494. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
  495. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
  496. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
  497. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
  498. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
  499. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
  500. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
  501. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
  502. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
  503. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
  504. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
  505. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
  506. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
  507. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
  508. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
  509. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
  510. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
  511. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
  512. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
  513. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
  514. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
  515. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
  516. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
  517. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
  518. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
  519. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
  520. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
  521. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
  522. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
  523. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
  524. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
  525. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
  526. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
  527. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
  528. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
  529. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
  530. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
  531. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
  532. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
  533. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
  534. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
  535. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
  536. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
  537. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
  538. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
  539. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
  540. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
  541. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
  542. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
  543. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
  544. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
  545. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
  546. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
  547. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
  548. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
  549. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
  550. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
  551. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
  552. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
  553. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
  554. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
  555. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
  556. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
  557. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
  558. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
  559. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
  560. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
  561. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
  562. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
  563. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
  564. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
  565. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
  566. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
  567. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
  568. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
  569. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
  570. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
  571. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
  572. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
  573. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
  574. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
  575. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
  576. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
  577. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
  578. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
  579. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
  580. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
  581. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
  582. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
  583. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
  584. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
  585. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
  586. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
  587. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
  588. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
  589. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
  590. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
  591. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
  592. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
  593. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
  594. data/lib/wp/wp-content/themes/stump/base.php +36 -0
  595. data/lib/wp/wp-content/themes/stump/functions.php +19 -0
  596. data/lib/wp/wp-content/themes/stump/index.php +21 -0
  597. data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
  598. data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
  599. data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
  600. data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
  601. data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
  602. data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
  603. data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
  604. data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
  605. data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
  606. data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
  607. data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
  608. data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
  609. data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
  610. data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
  611. data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
  612. data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
  613. data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
  614. data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
  615. data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
  616. data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
  617. data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
  618. data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
  619. data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
  620. data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
  621. data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
  622. data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
  623. data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
  624. data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
  625. data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
  626. data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
  627. data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
  628. data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
  629. data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
  630. data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
  631. data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
  632. data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
  633. data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
  634. data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
  635. data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
  636. data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
  637. data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
  638. data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
  639. data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
  640. data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
  641. data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
  642. data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
  643. data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
  644. data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
  645. data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
  646. data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
  647. data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
  648. data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
  649. data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
  650. data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
  651. data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
  652. data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
  653. data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
  654. data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
  655. data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
  656. data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
  657. data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
  658. data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
  659. data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
  660. data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
  661. data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
  662. data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
  663. data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
  664. data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
  665. data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
  666. data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
  667. data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
  668. data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
  669. data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
  670. data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
  671. data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
  672. data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
  673. data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
  674. data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
  675. data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
  676. data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
  677. data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
  678. data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
  679. data/lib/wp/wp-content/themes/stump/package.json +32 -0
  680. data/lib/wp/wp-content/themes/stump/page.php +2 -0
  681. data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
  682. data/lib/wp/wp-content/themes/stump/single.php +1 -0
  683. data/lib/wp/wp-content/themes/stump/style.css +11 -0
  684. data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
  685. data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
  686. data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
  687. data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
  688. data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
  689. data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
  690. data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
  691. data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
  692. data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
  693. data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
  694. data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
  695. data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
  696. data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
  697. data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
  698. data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
  699. data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
  700. data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
  701. data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
  702. data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
  703. data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
  704. data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
  705. data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
  706. data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
  707. data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
  708. data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
  709. data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
  710. data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
  711. data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
  712. data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
  713. data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
  714. data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
  715. data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
  716. data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
  717. data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
  718. data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
  719. data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
  720. data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
  721. data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
  722. data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
  723. data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
  724. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
  725. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
  726. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
  727. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
  728. data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
  729. data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
  730. data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
  731. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
  732. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
  733. data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
  734. data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
  735. data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
  736. data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
  737. data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
  738. data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
  739. data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
  740. data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
  741. data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
  742. data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
  743. data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
  744. data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
  745. data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
  746. data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
  747. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
  748. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
  749. data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
  750. data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
  751. data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
  752. data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
  753. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
  754. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
  755. data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
  756. data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
  757. data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
  758. data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
  759. data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
  760. data/lib/wp/wp-cron.php +115 -0
  761. data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
  762. data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
  763. data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
  764. data/lib/wp/wp-includes/ID3/license.txt +29 -0
  765. data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
  766. data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
  767. data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
  768. data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
  769. data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
  770. data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
  771. data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
  772. data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
  773. data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
  774. data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
  775. data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
  776. data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
  777. data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
  778. data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
  779. data/lib/wp/wp-includes/ID3/readme.txt +604 -0
  780. data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
  781. data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
  782. data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
  783. data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
  784. data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
  785. data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
  786. data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
  787. data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
  788. data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
  789. data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
  790. data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
  791. data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
  792. data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
  793. data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
  794. data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
  795. data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
  796. data/lib/wp/wp-includes/SimplePie/File.php +292 -0
  797. data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
  798. data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
  799. data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
  800. data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
  801. data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
  802. data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
  803. data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
  804. data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
  805. data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
  806. data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
  807. data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
  808. data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
  809. data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
  810. data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
  811. data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
  812. data/lib/wp/wp-includes/Text/Diff.php +450 -0
  813. data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
  814. data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
  815. data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
  816. data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
  817. data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
  818. data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
  819. data/lib/wp/wp-includes/admin-bar.php +870 -0
  820. data/lib/wp/wp-includes/atomlib.php +352 -0
  821. data/lib/wp/wp-includes/author-template.php +471 -0
  822. data/lib/wp/wp-includes/bookmark-template.php +298 -0
  823. data/lib/wp/wp-includes/bookmark.php +416 -0
  824. data/lib/wp/wp-includes/cache.php +704 -0
  825. data/lib/wp/wp-includes/canonical.php +586 -0
  826. data/lib/wp/wp-includes/capabilities.php +1539 -0
  827. data/lib/wp/wp-includes/category-template.php +1407 -0
  828. data/lib/wp/wp-includes/category.php +343 -0
  829. data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
  830. data/lib/wp/wp-includes/class-IXR.php +1100 -0
  831. data/lib/wp/wp-includes/class-feed.php +140 -0
  832. data/lib/wp/wp-includes/class-http.php +2245 -0
  833. data/lib/wp/wp-includes/class-json.php +936 -0
  834. data/lib/wp/wp-includes/class-oembed.php +579 -0
  835. data/lib/wp/wp-includes/class-phpass.php +260 -0
  836. data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
  837. data/lib/wp/wp-includes/class-pop3.php +652 -0
  838. data/lib/wp/wp-includes/class-simplepie.php +3119 -0
  839. data/lib/wp/wp-includes/class-smtp.php +943 -0
  840. data/lib/wp/wp-includes/class-snoopy.php +1256 -0
  841. data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
  842. data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
  843. data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
  844. data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
  845. data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
  846. data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
  847. data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
  848. data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
  849. data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
  850. data/lib/wp/wp-includes/class-wp-embed.php +373 -0
  851. data/lib/wp/wp-includes/class-wp-error.php +276 -0
  852. data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
  853. data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
  854. data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
  855. data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
  856. data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
  857. data/lib/wp/wp-includes/class-wp-walker.php +471 -0
  858. data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
  859. data/lib/wp/wp-includes/class-wp.php +782 -0
  860. data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
  861. data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
  862. data/lib/wp/wp-includes/class.wp-styles.php +210 -0
  863. data/lib/wp/wp-includes/comment-template.php +2286 -0
  864. data/lib/wp/wp-includes/comment.php +2606 -0
  865. data/lib/wp/wp-includes/compat.php +125 -0
  866. data/lib/wp/wp-includes/cron.php +469 -0
  867. data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
  868. data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
  869. data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
  870. data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
  871. data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
  872. data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
  873. data/lib/wp/wp-includes/css/buttons.css +364 -0
  874. data/lib/wp/wp-includes/css/buttons.min.css +1 -0
  875. data/lib/wp/wp-includes/css/dashicons.css +893 -0
  876. data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
  877. data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
  878. data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
  879. data/lib/wp/wp-includes/css/editor.css +1993 -0
  880. data/lib/wp/wp-includes/css/editor.min.css +1 -0
  881. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
  882. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
  883. data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
  884. data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
  885. data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
  886. data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
  887. data/lib/wp/wp-includes/css/media-views.css +2568 -0
  888. data/lib/wp/wp-includes/css/media-views.min.css +1 -0
  889. data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
  890. data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
  891. data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
  892. data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
  893. data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
  894. data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
  895. data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
  896. data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
  897. data/lib/wp/wp-includes/date.php +475 -0
  898. data/lib/wp/wp-includes/default-constants.php +323 -0
  899. data/lib/wp/wp-includes/default-filters.php +307 -0
  900. data/lib/wp/wp-includes/default-widgets.php +1423 -0
  901. data/lib/wp/wp-includes/deprecated.php +3501 -0
  902. data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
  903. data/lib/wp/wp-includes/feed-atom.php +87 -0
  904. data/lib/wp/wp-includes/feed-rdf.php +81 -0
  905. data/lib/wp/wp-includes/feed-rss.php +46 -0
  906. data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
  907. data/lib/wp/wp-includes/feed-rss2.php +115 -0
  908. data/lib/wp/wp-includes/feed.php +659 -0
  909. data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
  910. data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
  911. data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
  912. data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
  913. data/lib/wp/wp-includes/formatting.php +4006 -0
  914. data/lib/wp/wp-includes/functions.php +4631 -0
  915. data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
  916. data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
  917. data/lib/wp/wp-includes/general-template.php +2982 -0
  918. data/lib/wp/wp-includes/http.php +551 -0
  919. data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
  920. data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
  921. data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
  922. data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
  923. data/lib/wp/wp-includes/images/blank.gif +0 -0
  924. data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
  925. data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
  926. data/lib/wp/wp-includes/images/crystal/code.png +0 -0
  927. data/lib/wp/wp-includes/images/crystal/default.png +0 -0
  928. data/lib/wp/wp-includes/images/crystal/document.png +0 -0
  929. data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
  930. data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
  931. data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
  932. data/lib/wp/wp-includes/images/crystal/text.png +0 -0
  933. data/lib/wp/wp-includes/images/crystal/video.png +0 -0
  934. data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
  935. data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
  936. data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
  937. data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
  938. data/lib/wp/wp-includes/images/media/archive.png +0 -0
  939. data/lib/wp/wp-includes/images/media/audio.png +0 -0
  940. data/lib/wp/wp-includes/images/media/code.png +0 -0
  941. data/lib/wp/wp-includes/images/media/default.png +0 -0
  942. data/lib/wp/wp-includes/images/media/document.png +0 -0
  943. data/lib/wp/wp-includes/images/media/interactive.png +0 -0
  944. data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
  945. data/lib/wp/wp-includes/images/media/text.png +0 -0
  946. data/lib/wp/wp-includes/images/media/video.png +0 -0
  947. data/lib/wp/wp-includes/images/rss-2x.png +0 -0
  948. data/lib/wp/wp-includes/images/rss.png +0 -0
  949. data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
  950. data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
  951. data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
  952. data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
  953. data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
  954. data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
  955. data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
  956. data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
  957. data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
  958. data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
  959. data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
  960. data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
  961. data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
  962. data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
  963. data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
  964. data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
  965. data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
  966. data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
  967. data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
  968. data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
  969. data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
  970. data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
  971. data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
  972. data/lib/wp/wp-includes/images/spinner.gif +0 -0
  973. data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
  974. data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
  975. data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
  976. data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
  977. data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
  978. data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
  979. data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
  980. data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
  981. data/lib/wp/wp-includes/images/wpicons.png +0 -0
  982. data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
  983. data/lib/wp/wp-includes/images/wpspin.gif +0 -0
  984. data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
  985. data/lib/wp/wp-includes/images/xit.gif +0 -0
  986. data/lib/wp/wp-includes/js/admin-bar.js +365 -0
  987. data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
  988. data/lib/wp/wp-includes/js/autosave.js +589 -0
  989. data/lib/wp/wp-includes/js/autosave.min.js +1 -0
  990. data/lib/wp/wp-includes/js/backbone.min.js +1 -0
  991. data/lib/wp/wp-includes/js/colorpicker.js +707 -0
  992. data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
  993. data/lib/wp/wp-includes/js/comment-reply.js +47 -0
  994. data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
  995. data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
  996. data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
  997. data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
  998. data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
  999. data/lib/wp/wp-includes/js/customize-base.js +617 -0
  1000. data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
  1001. data/lib/wp/wp-includes/js/customize-loader.js +246 -0
  1002. data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
  1003. data/lib/wp/wp-includes/js/customize-models.js +247 -0
  1004. data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
  1005. data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
  1006. data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
  1007. data/lib/wp/wp-includes/js/customize-preview.js +154 -0
  1008. data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
  1009. data/lib/wp/wp-includes/js/customize-views.js +231 -0
  1010. data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
  1011. data/lib/wp/wp-includes/js/heartbeat.js +738 -0
  1012. data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
  1013. data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
  1014. data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
  1015. data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
  1016. data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
  1017. data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
  1018. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
  1019. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
  1020. data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
  1021. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
  1022. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
  1023. data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
  1024. data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
  1025. data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
  1026. data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
  1027. data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
  1028. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
  1029. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
  1030. data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
  1031. data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
  1032. data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
  1033. data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
  1034. data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
  1035. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
  1036. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
  1037. data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
  1038. data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
  1039. data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
  1040. data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
  1041. data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
  1042. data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
  1043. data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
  1044. data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
  1045. data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
  1046. data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
  1047. data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
  1048. data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
  1049. data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
  1050. data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
  1051. data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
  1052. data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
  1053. data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
  1054. data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
  1055. data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
  1056. data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
  1057. data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
  1058. data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
  1059. data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
  1060. data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
  1061. data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
  1062. data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
  1063. data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
  1064. data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
  1065. data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
  1066. data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
  1067. data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
  1068. data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
  1069. data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
  1070. data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
  1071. data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
  1072. data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
  1073. data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
  1074. data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
  1075. data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
  1076. data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
  1077. data/lib/wp/wp-includes/js/json2.js +480 -0
  1078. data/lib/wp/wp-includes/js/json2.min.js +1 -0
  1079. data/lib/wp/wp-includes/js/masonry.min.js +1 -0
  1080. data/lib/wp/wp-includes/js/mce-view.js +829 -0
  1081. data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
  1082. data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
  1083. data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
  1084. data/lib/wp/wp-includes/js/media-editor.js +1114 -0
  1085. data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
  1086. data/lib/wp/wp-includes/js/media-grid.js +732 -0
  1087. data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
  1088. data/lib/wp/wp-includes/js/media-models.js +1362 -0
  1089. data/lib/wp/wp-includes/js/media-models.min.js +1 -0
  1090. data/lib/wp/wp-includes/js/media-views.js +7484 -0
  1091. data/lib/wp/wp-includes/js/media-views.min.js +3 -0
  1092. data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
  1093. data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
  1094. data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
  1095. data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
  1096. data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
  1097. data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
  1098. data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
  1099. data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
  1100. data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
  1101. data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
  1102. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
  1103. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
  1104. data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
  1105. data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
  1106. data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
  1107. data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
  1108. data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
  1109. data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
  1110. data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
  1111. data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
  1112. data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
  1113. data/lib/wp/wp-includes/js/quicktags.js +652 -0
  1114. data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
  1115. data/lib/wp/wp-includes/js/shortcode.js +356 -0
  1116. data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
  1117. data/lib/wp/wp-includes/js/swfobject.js +4 -0
  1118. data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
  1119. data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
  1120. data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
  1121. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
  1122. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
  1123. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
  1124. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
  1125. data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
  1126. data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
  1127. data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
  1128. data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
  1129. data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
  1130. data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
  1131. data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
  1132. data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
  1133. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
  1134. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
  1135. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
  1136. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  1137. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
  1138. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
  1139. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
  1140. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
  1141. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
  1142. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
  1143. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  1144. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
  1145. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
  1146. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
  1147. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
  1148. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
  1149. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
  1150. data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
  1151. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
  1152. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
  1153. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
  1154. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
  1155. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
  1156. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  1157. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
  1158. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
  1159. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
  1160. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
  1161. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
  1162. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
  1163. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
  1164. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
  1165. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
  1166. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
  1167. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
  1168. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
  1169. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
  1170. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
  1171. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
  1172. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
  1173. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
  1174. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
  1175. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
  1176. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
  1177. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
  1178. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  1179. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
  1180. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  1181. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  1182. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  1183. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
  1184. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  1185. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  1186. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
  1187. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
  1188. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
  1189. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
  1190. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  1191. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
  1192. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
  1193. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
  1194. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
  1195. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
  1196. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
  1197. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
  1198. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
  1199. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
  1200. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
  1201. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
  1202. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
  1203. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
  1204. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
  1205. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
  1206. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
  1207. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
  1208. data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
  1209. data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
  1210. data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
  1211. data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
  1212. data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
  1213. data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
  1214. data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
  1215. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
  1216. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
  1217. data/lib/wp/wp-includes/js/tw-sack.js +193 -0
  1218. data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
  1219. data/lib/wp/wp-includes/js/underscore.min.js +1 -0
  1220. data/lib/wp/wp-includes/js/utils.js +197 -0
  1221. data/lib/wp/wp-includes/js/utils.min.js +1 -0
  1222. data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
  1223. data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
  1224. data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
  1225. data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
  1226. data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
  1227. data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
  1228. data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
  1229. data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
  1230. data/lib/wp/wp-includes/js/wp-lists.js +469 -0
  1231. data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
  1232. data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
  1233. data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
  1234. data/lib/wp/wp-includes/js/wp-util.js +106 -0
  1235. data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
  1236. data/lib/wp/wp-includes/js/wpdialog.js +19 -0
  1237. data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
  1238. data/lib/wp/wp-includes/js/wplink.js +615 -0
  1239. data/lib/wp/wp-includes/js/wplink.min.js +1 -0
  1240. data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
  1241. data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
  1242. data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
  1243. data/lib/wp/wp-includes/kses.php +1526 -0
  1244. data/lib/wp/wp-includes/l10n.php +908 -0
  1245. data/lib/wp/wp-includes/link-template.php +3141 -0
  1246. data/lib/wp/wp-includes/load.php +828 -0
  1247. data/lib/wp/wp-includes/locale.php +368 -0
  1248. data/lib/wp/wp-includes/media-template.php +1235 -0
  1249. data/lib/wp/wp-includes/media.php +3329 -0
  1250. data/lib/wp/wp-includes/meta.php +1221 -0
  1251. data/lib/wp/wp-includes/ms-blogs.php +939 -0
  1252. data/lib/wp/wp-includes/ms-default-constants.php +153 -0
  1253. data/lib/wp/wp-includes/ms-default-filters.php +82 -0
  1254. data/lib/wp/wp-includes/ms-deprecated.php +347 -0
  1255. data/lib/wp/wp-includes/ms-files.php +82 -0
  1256. data/lib/wp/wp-includes/ms-functions.php +2476 -0
  1257. data/lib/wp/wp-includes/ms-load.php +458 -0
  1258. data/lib/wp/wp-includes/ms-settings.php +213 -0
  1259. data/lib/wp/wp-includes/nav-menu-template.php +678 -0
  1260. data/lib/wp/wp-includes/nav-menu.php +895 -0
  1261. data/lib/wp/wp-includes/option.php +1440 -0
  1262. data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
  1263. data/lib/wp/wp-includes/pluggable.php +2283 -0
  1264. data/lib/wp/wp-includes/plugin.php +920 -0
  1265. data/lib/wp/wp-includes/pomo/entry.php +78 -0
  1266. data/lib/wp/wp-includes/pomo/mo.php +262 -0
  1267. data/lib/wp/wp-includes/pomo/po.php +384 -0
  1268. data/lib/wp/wp-includes/pomo/streams.php +209 -0
  1269. data/lib/wp/wp-includes/pomo/translations.php +275 -0
  1270. data/lib/wp/wp-includes/post-formats.php +243 -0
  1271. data/lib/wp/wp-includes/post-template.php +1766 -0
  1272. data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
  1273. data/lib/wp/wp-includes/post.php +5842 -0
  1274. data/lib/wp/wp-includes/query.php +4666 -0
  1275. data/lib/wp/wp-includes/registration-functions.php +7 -0
  1276. data/lib/wp/wp-includes/registration.php +7 -0
  1277. data/lib/wp/wp-includes/revision.php +657 -0
  1278. data/lib/wp/wp-includes/rewrite.php +2180 -0
  1279. data/lib/wp/wp-includes/rss-functions.php +9 -0
  1280. data/lib/wp/wp-includes/rss.php +936 -0
  1281. data/lib/wp/wp-includes/script-loader.php +1045 -0
  1282. data/lib/wp/wp-includes/session.php +430 -0
  1283. data/lib/wp/wp-includes/shortcodes.php +410 -0
  1284. data/lib/wp/wp-includes/taxonomy.php +4006 -0
  1285. data/lib/wp/wp-includes/template-loader.php +76 -0
  1286. data/lib/wp/wp-includes/template.php +505 -0
  1287. data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
  1288. data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
  1289. data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
  1290. data/lib/wp/wp-includes/theme-compat/header.php +49 -0
  1291. data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
  1292. data/lib/wp/wp-includes/theme.php +2014 -0
  1293. data/lib/wp/wp-includes/update.php +674 -0
  1294. data/lib/wp/wp-includes/user.php +2292 -0
  1295. data/lib/wp/wp-includes/vars.php +144 -0
  1296. data/lib/wp/wp-includes/version.php +35 -0
  1297. data/lib/wp/wp-includes/widgets.php +1514 -0
  1298. data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
  1299. data/lib/wp/wp-includes/wp-db.php +2190 -0
  1300. data/lib/wp/wp-includes/wp-diff.php +523 -0
  1301. data/lib/wp/wp-links-opml.php +80 -0
  1302. data/lib/wp/wp-load.php +73 -0
  1303. data/lib/wp/wp-login.php +952 -0
  1304. data/lib/wp/wp-mail.php +260 -0
  1305. data/lib/wp/wp-settings.php +374 -0
  1306. data/lib/wp/wp-signup.php +749 -0
  1307. data/lib/wp/wp-trackback.php +127 -0
  1308. data/lib/wp/xmlrpc.php +101 -0
  1309. data/stump-cli.gemspec +26 -0
  1310. metadata +1332 -4
@@ -0,0 +1,1796 @@
1
+ <?php
2
+ /////////////////////////////////////////////////////////////////
3
+ /// getID3() by James Heinrich <info@getid3.org> //
4
+ // available at http://getid3.sourceforge.net //
5
+ // or http://www.getid3.org //
6
+ // also https://github.com/JamesHeinrich/getID3 //
7
+ /////////////////////////////////////////////////////////////////
8
+ // //
9
+ // Please see readme.txt for more information //
10
+ // ///
11
+ /////////////////////////////////////////////////////////////////
12
+
13
+ // define a constant rather than looking up every time it is needed
14
+ if (!defined('GETID3_OS_ISWINDOWS')) {
15
+ define('GETID3_OS_ISWINDOWS', (stripos(PHP_OS, 'WIN') === 0));
16
+ }
17
+ // Get base path of getID3() - ONCE
18
+ if (!defined('GETID3_INCLUDEPATH')) {
19
+ define('GETID3_INCLUDEPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
20
+ }
21
+ // Workaround Bug #39923 (https://bugs.php.net/bug.php?id=39923)
22
+ if (!defined('IMG_JPG') && defined('IMAGETYPE_JPEG')) {
23
+ define('IMG_JPG', IMAGETYPE_JPEG);
24
+ }
25
+
26
+ // attempt to define temp dir as something flexible but reliable
27
+ $temp_dir = ini_get('upload_tmp_dir');
28
+ if ($temp_dir && (!is_dir($temp_dir) || !is_readable($temp_dir))) {
29
+ $temp_dir = '';
30
+ }
31
+ if (!$temp_dir) {
32
+ // sys_get_temp_dir() may give inaccessible temp dir, e.g. with open_basedir on virtual hosts
33
+ $temp_dir = sys_get_temp_dir();
34
+ }
35
+ $temp_dir = @realpath($temp_dir); // see https://github.com/JamesHeinrich/getID3/pull/10
36
+ $open_basedir = ini_get('open_basedir');
37
+ if ($open_basedir) {
38
+ // e.g. "/var/www/vhosts/getid3.org/httpdocs/:/tmp/"
39
+ $temp_dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $temp_dir);
40
+ $open_basedir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $open_basedir);
41
+ if (substr($temp_dir, -1, 1) != DIRECTORY_SEPARATOR) {
42
+ $temp_dir .= DIRECTORY_SEPARATOR;
43
+ }
44
+ $found_valid_tempdir = false;
45
+ $open_basedirs = explode(PATH_SEPARATOR, $open_basedir);
46
+ foreach ($open_basedirs as $basedir) {
47
+ if (substr($basedir, -1, 1) != DIRECTORY_SEPARATOR) {
48
+ $basedir .= DIRECTORY_SEPARATOR;
49
+ }
50
+ if (preg_match('#^'.preg_quote($basedir).'#', $temp_dir)) {
51
+ $found_valid_tempdir = true;
52
+ break;
53
+ }
54
+ }
55
+ if (!$found_valid_tempdir) {
56
+ $temp_dir = '';
57
+ }
58
+ unset($open_basedirs, $found_valid_tempdir, $basedir);
59
+ }
60
+ if (!$temp_dir) {
61
+ $temp_dir = '*'; // invalid directory name should force tempnam() to use system default temp dir
62
+ }
63
+ // $temp_dir = '/something/else/'; // feel free to override temp dir here if it works better for your system
64
+ if (!defined('GETID3_TEMP_DIR')) {
65
+ define('GETID3_TEMP_DIR', $temp_dir);
66
+ }
67
+ unset($open_basedir, $temp_dir);
68
+
69
+ // End: Defines
70
+
71
+
72
+ class getID3
73
+ {
74
+ // public: Settings
75
+ public $encoding = 'UTF-8'; // CASE SENSITIVE! - i.e. (must be supported by iconv()). Examples: ISO-8859-1 UTF-8 UTF-16 UTF-16BE
76
+ public $encoding_id3v1 = 'ISO-8859-1'; // Should always be 'ISO-8859-1', but some tags may be written in other encodings such as 'EUC-CN' or 'CP1252'
77
+
78
+ // public: Optional tag checks - disable for speed.
79
+ public $option_tag_id3v1 = true; // Read and process ID3v1 tags
80
+ public $option_tag_id3v2 = true; // Read and process ID3v2 tags
81
+ public $option_tag_lyrics3 = true; // Read and process Lyrics3 tags
82
+ public $option_tag_apetag = true; // Read and process APE tags
83
+ public $option_tags_process = true; // Copy tags to root key 'tags' and encode to $this->encoding
84
+ public $option_tags_html = true; // Copy tags to root key 'tags_html' properly translated from various encodings to HTML entities
85
+
86
+ // public: Optional tag/comment calucations
87
+ public $option_extra_info = true; // Calculate additional info such as bitrate, channelmode etc
88
+
89
+ // public: Optional handling of embedded attachments (e.g. images)
90
+ public $option_save_attachments = true; // defaults to true (ATTACHMENTS_INLINE) for backward compatibility
91
+
92
+ // public: Optional calculations
93
+ public $option_md5_data = false; // Get MD5 sum of data part - slow
94
+ public $option_md5_data_source = false; // Use MD5 of source file if availble - only FLAC and OptimFROG
95
+ public $option_sha1_data = false; // Get SHA1 sum of data part - slow
96
+ public $option_max_2gb_check = null; // Check whether file is larger than 2GB and thus not supported by 32-bit PHP (null: auto-detect based on PHP_INT_MAX)
97
+
98
+ // public: Read buffer size in bytes
99
+ public $option_fread_buffer_size = 32768;
100
+
101
+ // Public variables
102
+ public $filename; // Filename of file being analysed.
103
+ public $fp; // Filepointer to file being analysed.
104
+ public $info; // Result array.
105
+ public $tempdir = GETID3_TEMP_DIR;
106
+ public $memory_limit = 0;
107
+
108
+ // Protected variables
109
+ protected $startup_error = '';
110
+ protected $startup_warning = '';
111
+
112
+ const VERSION = '1.9.8-20140511';
113
+ const FREAD_BUFFER_SIZE = 32768;
114
+
115
+ const ATTACHMENTS_NONE = false;
116
+ const ATTACHMENTS_INLINE = true;
117
+
118
+ // public: constructor
119
+ public function __construct() {
120
+
121
+ // Check memory
122
+ $this->memory_limit = ini_get('memory_limit');
123
+ if (preg_match('#([0-9]+)M#i', $this->memory_limit, $matches)) {
124
+ // could be stored as "16M" rather than 16777216 for example
125
+ $this->memory_limit = $matches[1] * 1048576;
126
+ } elseif (preg_match('#([0-9]+)G#i', $this->memory_limit, $matches)) { // The 'G' modifier is available since PHP 5.1.0
127
+ // could be stored as "2G" rather than 2147483648 for example
128
+ $this->memory_limit = $matches[1] * 1073741824;
129
+ }
130
+ if ($this->memory_limit <= 0) {
131
+ // memory limits probably disabled
132
+ } elseif ($this->memory_limit <= 4194304) {
133
+ $this->startup_error .= 'PHP has less than 4MB available memory and will very likely run out. Increase memory_limit in php.ini';
134
+ } elseif ($this->memory_limit <= 12582912) {
135
+ $this->startup_warning .= 'PHP has less than 12MB available memory and might run out if all modules are loaded. Increase memory_limit in php.ini';
136
+ }
137
+
138
+ // Check safe_mode off
139
+ if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
140
+ $this->warning('WARNING: Safe mode is on, shorten support disabled, md5data/sha1data for ogg vorbis disabled, ogg vorbos/flac tag writing disabled.');
141
+ }
142
+
143
+ if (intval(ini_get('mbstring.func_overload')) > 0) {
144
+ $this->warning('WARNING: php.ini contains "mbstring.func_overload = '.ini_get('mbstring.func_overload').'", this may break things.');
145
+ }
146
+
147
+ // Check for magic_quotes_runtime
148
+ if (function_exists('get_magic_quotes_runtime')) {
149
+ if (get_magic_quotes_runtime()) {
150
+ return $this->startup_error('magic_quotes_runtime must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_runtime(0) and set_magic_quotes_runtime(1).');
151
+ }
152
+ }
153
+
154
+ // Check for magic_quotes_gpc
155
+ if (function_exists('magic_quotes_gpc')) {
156
+ if (get_magic_quotes_gpc()) {
157
+ return $this->startup_error('magic_quotes_gpc must be disabled before running getID3(). Surround getid3 block by set_magic_quotes_gpc(0) and set_magic_quotes_gpc(1).');
158
+ }
159
+ }
160
+
161
+ // Load support library
162
+ if (!include_once(GETID3_INCLUDEPATH.'getid3.lib.php')) {
163
+ $this->startup_error .= 'getid3.lib.php is missing or corrupt';
164
+ }
165
+
166
+ if ($this->option_max_2gb_check === null) {
167
+ $this->option_max_2gb_check = (PHP_INT_MAX <= 2147483647);
168
+ }
169
+
170
+
171
+ // Needed for Windows only:
172
+ // Define locations of helper applications for Shorten, VorbisComment, MetaFLAC
173
+ // as well as other helper functions such as head, tail, md5sum, etc
174
+ // This path cannot contain spaces, but the below code will attempt to get the
175
+ // 8.3-equivalent path automatically
176
+ // IMPORTANT: This path must include the trailing slash
177
+ if (GETID3_OS_ISWINDOWS && !defined('GETID3_HELPERAPPSDIR')) {
178
+
179
+ $helperappsdir = GETID3_INCLUDEPATH.'..'.DIRECTORY_SEPARATOR.'helperapps'; // must not have any space in this path
180
+
181
+ if (!is_dir($helperappsdir)) {
182
+ $this->startup_warning .= '"'.$helperappsdir.'" cannot be defined as GETID3_HELPERAPPSDIR because it does not exist';
183
+ } elseif (strpos(realpath($helperappsdir), ' ') !== false) {
184
+ $DirPieces = explode(DIRECTORY_SEPARATOR, realpath($helperappsdir));
185
+ $path_so_far = array();
186
+ foreach ($DirPieces as $key => $value) {
187
+ if (strpos($value, ' ') !== false) {
188
+ if (!empty($path_so_far)) {
189
+ $commandline = 'dir /x '.escapeshellarg(implode(DIRECTORY_SEPARATOR, $path_so_far));
190
+ $dir_listing = `$commandline`;
191
+ $lines = explode("\n", $dir_listing);
192
+ foreach ($lines as $line) {
193
+ $line = trim($line);
194
+ if (preg_match('#^([0-9/]{10}) +([0-9:]{4,5}( [AP]M)?) +(<DIR>|[0-9,]+) +([^ ]{0,11}) +(.+)$#', $line, $matches)) {
195
+ list($dummy, $date, $time, $ampm, $filesize, $shortname, $filename) = $matches;
196
+ if ((strtoupper($filesize) == '<DIR>') && (strtolower($filename) == strtolower($value))) {
197
+ $value = $shortname;
198
+ }
199
+ }
200
+ }
201
+ } else {
202
+ $this->startup_warning .= 'GETID3_HELPERAPPSDIR must not have any spaces in it - use 8dot3 naming convention if neccesary. You can run "dir /x" from the commandline to see the correct 8.3-style names.';
203
+ }
204
+ }
205
+ $path_so_far[] = $value;
206
+ }
207
+ $helperappsdir = implode(DIRECTORY_SEPARATOR, $path_so_far);
208
+ }
209
+ define('GETID3_HELPERAPPSDIR', $helperappsdir.DIRECTORY_SEPARATOR);
210
+ }
211
+
212
+ return true;
213
+ }
214
+
215
+ public function version() {
216
+ return self::VERSION;
217
+ }
218
+
219
+ public function fread_buffer_size() {
220
+ return $this->option_fread_buffer_size;
221
+ }
222
+
223
+
224
+ // public: setOption
225
+ public function setOption($optArray) {
226
+ if (!is_array($optArray) || empty($optArray)) {
227
+ return false;
228
+ }
229
+ foreach ($optArray as $opt => $val) {
230
+ if (isset($this->$opt) === false) {
231
+ continue;
232
+ }
233
+ $this->$opt = $val;
234
+ }
235
+ return true;
236
+ }
237
+
238
+
239
+ public function openfile($filename) {
240
+ try {
241
+ if (!empty($this->startup_error)) {
242
+ throw new getid3_exception($this->startup_error);
243
+ }
244
+ if (!empty($this->startup_warning)) {
245
+ $this->warning($this->startup_warning);
246
+ }
247
+
248
+ // init result array and set parameters
249
+ $this->filename = $filename;
250
+ $this->info = array();
251
+ $this->info['GETID3_VERSION'] = $this->version();
252
+ $this->info['php_memory_limit'] = $this->memory_limit;
253
+
254
+ // remote files not supported
255
+ if (preg_match('/^(ht|f)tp:\/\//', $filename)) {
256
+ throw new getid3_exception('Remote files are not supported - please copy the file locally first');
257
+ }
258
+
259
+ $filename = str_replace('/', DIRECTORY_SEPARATOR, $filename);
260
+ $filename = preg_replace('#(.+)'.preg_quote(DIRECTORY_SEPARATOR).'{2,}#U', '\1'.DIRECTORY_SEPARATOR, $filename);
261
+
262
+ // open local file
263
+ //if (is_readable($filename) && is_file($filename) && ($this->fp = fopen($filename, 'rb'))) { // see http://www.getid3.org/phpBB3/viewtopic.php?t=1720
264
+ if ((is_readable($filename) || file_exists($filename)) && is_file($filename) && ($this->fp = fopen($filename, 'rb'))) {
265
+ // great
266
+ } else {
267
+ $errormessagelist = array();
268
+ if (!is_readable($filename)) {
269
+ $errormessagelist[] = '!is_readable';
270
+ }
271
+ if (!is_file($filename)) {
272
+ $errormessagelist[] = '!is_file';
273
+ }
274
+ if (!file_exists($filename)) {
275
+ $errormessagelist[] = '!file_exists';
276
+ }
277
+ if (empty($errormessagelist)) {
278
+ $errormessagelist[] = 'fopen failed';
279
+ }
280
+ throw new getid3_exception('Could not open "'.$filename.'" ('.implode('; ', $errormessagelist).')');
281
+ }
282
+
283
+ $this->info['filesize'] = filesize($filename);
284
+ // set redundant parameters - might be needed in some include file
285
+ // filenames / filepaths in getID3 are always expressed with forward slashes (unix-style) for both Windows and other to try and minimize confusion
286
+ $filename = str_replace('\\', '/', $filename);
287
+ $this->info['filepath'] = str_replace('\\', '/', realpath(dirname($filename)));
288
+ $this->info['filename'] = getid3_lib::mb_basename($filename);
289
+ $this->info['filenamepath'] = $this->info['filepath'].'/'.$this->info['filename'];
290
+
291
+
292
+ // option_max_2gb_check
293
+ if ($this->option_max_2gb_check) {
294
+ // PHP (32-bit all, and 64-bit Windows) doesn't support integers larger than 2^31 (~2GB)
295
+ // filesize() simply returns (filesize % (pow(2, 32)), no matter the actual filesize
296
+ // ftell() returns 0 if seeking to the end is beyond the range of unsigned integer
297
+ $fseek = fseek($this->fp, 0, SEEK_END);
298
+ if (($fseek < 0) || (($this->info['filesize'] != 0) && (ftell($this->fp) == 0)) ||
299
+ ($this->info['filesize'] < 0) ||
300
+ (ftell($this->fp) < 0)) {
301
+ $real_filesize = getid3_lib::getFileSizeSyscall($this->info['filenamepath']);
302
+
303
+ if ($real_filesize === false) {
304
+ unset($this->info['filesize']);
305
+ fclose($this->fp);
306
+ throw new getid3_exception('Unable to determine actual filesize. File is most likely larger than '.round(PHP_INT_MAX / 1073741824).'GB and is not supported by PHP.');
307
+ } elseif (getid3_lib::intValueSupported($real_filesize)) {
308
+ unset($this->info['filesize']);
309
+ fclose($this->fp);
310
+ throw new getid3_exception('PHP seems to think the file is larger than '.round(PHP_INT_MAX / 1073741824).'GB, but filesystem reports it as '.number_format($real_filesize, 3).'GB, please report to info@getid3.org');
311
+ }
312
+ $this->info['filesize'] = $real_filesize;
313
+ $this->warning('File is larger than '.round(PHP_INT_MAX / 1073741824).'GB (filesystem reports it as '.number_format($real_filesize, 3).'GB) and is not properly supported by PHP.');
314
+ }
315
+ }
316
+
317
+ // set more parameters
318
+ $this->info['avdataoffset'] = 0;
319
+ $this->info['avdataend'] = $this->info['filesize'];
320
+ $this->info['fileformat'] = ''; // filled in later
321
+ $this->info['audio']['dataformat'] = ''; // filled in later, unset if not used
322
+ $this->info['video']['dataformat'] = ''; // filled in later, unset if not used
323
+ $this->info['tags'] = array(); // filled in later, unset if not used
324
+ $this->info['error'] = array(); // filled in later, unset if not used
325
+ $this->info['warning'] = array(); // filled in later, unset if not used
326
+ $this->info['comments'] = array(); // filled in later, unset if not used
327
+ $this->info['encoding'] = $this->encoding; // required by id3v2 and iso modules - can be unset at the end if desired
328
+
329
+ return true;
330
+
331
+ } catch (Exception $e) {
332
+ $this->error($e->getMessage());
333
+ }
334
+ return false;
335
+ }
336
+
337
+ // public: analyze file
338
+ public function analyze($filename) {
339
+ try {
340
+ if (!$this->openfile($filename)) {
341
+ return $this->info;
342
+ }
343
+
344
+ // Handle tags
345
+ foreach (array('id3v2'=>'id3v2', 'id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
346
+ $option_tag = 'option_tag_'.$tag_name;
347
+ if ($this->$option_tag) {
348
+ $this->include_module('tag.'.$tag_name);
349
+ try {
350
+ $tag_class = 'getid3_'.$tag_name;
351
+ $tag = new $tag_class($this);
352
+ $tag->Analyze();
353
+ }
354
+ catch (getid3_exception $e) {
355
+ throw $e;
356
+ }
357
+ }
358
+ }
359
+ if (isset($this->info['id3v2']['tag_offset_start'])) {
360
+ $this->info['avdataoffset'] = max($this->info['avdataoffset'], $this->info['id3v2']['tag_offset_end']);
361
+ }
362
+ foreach (array('id3v1'=>'id3v1', 'apetag'=>'ape', 'lyrics3'=>'lyrics3') as $tag_name => $tag_key) {
363
+ if (isset($this->info[$tag_key]['tag_offset_start'])) {
364
+ $this->info['avdataend'] = min($this->info['avdataend'], $this->info[$tag_key]['tag_offset_start']);
365
+ }
366
+ }
367
+
368
+ // ID3v2 detection (NOT parsing), even if ($this->option_tag_id3v2 == false) done to make fileformat easier
369
+ if (!$this->option_tag_id3v2) {
370
+ fseek($this->fp, 0);
371
+ $header = fread($this->fp, 10);
372
+ if ((substr($header, 0, 3) == 'ID3') && (strlen($header) == 10)) {
373
+ $this->info['id3v2']['header'] = true;
374
+ $this->info['id3v2']['majorversion'] = ord($header{3});
375
+ $this->info['id3v2']['minorversion'] = ord($header{4});
376
+ $this->info['avdataoffset'] += getid3_lib::BigEndian2Int(substr($header, 6, 4), 1) + 10; // length of ID3v2 tag in 10-byte header doesn't include 10-byte header length
377
+ }
378
+ }
379
+
380
+ // read 32 kb file data
381
+ fseek($this->fp, $this->info['avdataoffset']);
382
+ $formattest = fread($this->fp, 32774);
383
+
384
+ // determine format
385
+ $determined_format = $this->GetFileFormat($formattest, $filename);
386
+
387
+ // unable to determine file format
388
+ if (!$determined_format) {
389
+ fclose($this->fp);
390
+ return $this->error('unable to determine file format');
391
+ }
392
+
393
+ // check for illegal ID3 tags
394
+ if (isset($determined_format['fail_id3']) && (in_array('id3v1', $this->info['tags']) || in_array('id3v2', $this->info['tags']))) {
395
+ if ($determined_format['fail_id3'] === 'ERROR') {
396
+ fclose($this->fp);
397
+ return $this->error('ID3 tags not allowed on this file type.');
398
+ } elseif ($determined_format['fail_id3'] === 'WARNING') {
399
+ $this->warning('ID3 tags not allowed on this file type.');
400
+ }
401
+ }
402
+
403
+ // check for illegal APE tags
404
+ if (isset($determined_format['fail_ape']) && in_array('ape', $this->info['tags'])) {
405
+ if ($determined_format['fail_ape'] === 'ERROR') {
406
+ fclose($this->fp);
407
+ return $this->error('APE tags not allowed on this file type.');
408
+ } elseif ($determined_format['fail_ape'] === 'WARNING') {
409
+ $this->warning('APE tags not allowed on this file type.');
410
+ }
411
+ }
412
+
413
+ // set mime type
414
+ $this->info['mime_type'] = $determined_format['mime_type'];
415
+
416
+ // supported format signature pattern detected, but module deleted
417
+ if (!file_exists(GETID3_INCLUDEPATH.$determined_format['include'])) {
418
+ fclose($this->fp);
419
+ return $this->error('Format not supported, module "'.$determined_format['include'].'" was removed.');
420
+ }
421
+
422
+ // module requires iconv support
423
+ // Check encoding/iconv support
424
+ if (!empty($determined_format['iconv_req']) && !function_exists('iconv') && !in_array($this->encoding, array('ISO-8859-1', 'UTF-8', 'UTF-16LE', 'UTF-16BE', 'UTF-16'))) {
425
+ $errormessage = 'iconv() support is required for this module ('.$determined_format['include'].') for encodings other than ISO-8859-1, UTF-8, UTF-16LE, UTF16-BE, UTF-16. ';
426
+ if (GETID3_OS_ISWINDOWS) {
427
+ $errormessage .= 'PHP does not have iconv() support. Please enable php_iconv.dll in php.ini, and copy iconv.dll from c:/php/dlls to c:/windows/system32';
428
+ } else {
429
+ $errormessage .= 'PHP is not compiled with iconv() support. Please recompile with the --with-iconv switch';
430
+ }
431
+ return $this->error($errormessage);
432
+ }
433
+
434
+ // include module
435
+ include_once(GETID3_INCLUDEPATH.$determined_format['include']);
436
+
437
+ // instantiate module class
438
+ $class_name = 'getid3_'.$determined_format['module'];
439
+ if (!class_exists($class_name)) {
440
+ return $this->error('Format not supported, module "'.$determined_format['include'].'" is corrupt.');
441
+ }
442
+ $class = new $class_name($this);
443
+ $class->Analyze();
444
+ unset($class);
445
+
446
+ // close file
447
+ fclose($this->fp);
448
+
449
+ // process all tags - copy to 'tags' and convert charsets
450
+ if ($this->option_tags_process) {
451
+ $this->HandleAllTags();
452
+ }
453
+
454
+ // perform more calculations
455
+ if ($this->option_extra_info) {
456
+ $this->ChannelsBitratePlaytimeCalculations();
457
+ $this->CalculateCompressionRatioVideo();
458
+ $this->CalculateCompressionRatioAudio();
459
+ $this->CalculateReplayGain();
460
+ $this->ProcessAudioStreams();
461
+ }
462
+
463
+ // get the MD5 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
464
+ if ($this->option_md5_data) {
465
+ // do not calc md5_data if md5_data_source is present - set by flac only - future MPC/SV8 too
466
+ if (!$this->option_md5_data_source || empty($this->info['md5_data_source'])) {
467
+ $this->getHashdata('md5');
468
+ }
469
+ }
470
+
471
+ // get the SHA1 sum of the audio/video portion of the file - without ID3/APE/Lyrics3/etc header/footer tags
472
+ if ($this->option_sha1_data) {
473
+ $this->getHashdata('sha1');
474
+ }
475
+
476
+ // remove undesired keys
477
+ $this->CleanUp();
478
+
479
+ } catch (Exception $e) {
480
+ $this->error('Caught exception: '.$e->getMessage());
481
+ }
482
+
483
+ // return info array
484
+ return $this->info;
485
+ }
486
+
487
+
488
+ // private: error handling
489
+ public function error($message) {
490
+ $this->CleanUp();
491
+ if (!isset($this->info['error'])) {
492
+ $this->info['error'] = array();
493
+ }
494
+ $this->info['error'][] = $message;
495
+ return $this->info;
496
+ }
497
+
498
+
499
+ // private: warning handling
500
+ public function warning($message) {
501
+ $this->info['warning'][] = $message;
502
+ return true;
503
+ }
504
+
505
+
506
+ // private: CleanUp
507
+ private function CleanUp() {
508
+
509
+ // remove possible empty keys
510
+ $AVpossibleEmptyKeys = array('dataformat', 'bits_per_sample', 'encoder_options', 'streams', 'bitrate');
511
+ foreach ($AVpossibleEmptyKeys as $dummy => $key) {
512
+ if (empty($this->info['audio'][$key]) && isset($this->info['audio'][$key])) {
513
+ unset($this->info['audio'][$key]);
514
+ }
515
+ if (empty($this->info['video'][$key]) && isset($this->info['video'][$key])) {
516
+ unset($this->info['video'][$key]);
517
+ }
518
+ }
519
+
520
+ // remove empty root keys
521
+ if (!empty($this->info)) {
522
+ foreach ($this->info as $key => $value) {
523
+ if (empty($this->info[$key]) && ($this->info[$key] !== 0) && ($this->info[$key] !== '0')) {
524
+ unset($this->info[$key]);
525
+ }
526
+ }
527
+ }
528
+
529
+ // remove meaningless entries from unknown-format files
530
+ if (empty($this->info['fileformat'])) {
531
+ if (isset($this->info['avdataoffset'])) {
532
+ unset($this->info['avdataoffset']);
533
+ }
534
+ if (isset($this->info['avdataend'])) {
535
+ unset($this->info['avdataend']);
536
+ }
537
+ }
538
+
539
+ // remove possible duplicated identical entries
540
+ if (!empty($this->info['error'])) {
541
+ $this->info['error'] = array_values(array_unique($this->info['error']));
542
+ }
543
+ if (!empty($this->info['warning'])) {
544
+ $this->info['warning'] = array_values(array_unique($this->info['warning']));
545
+ }
546
+
547
+ // remove "global variable" type keys
548
+ unset($this->info['php_memory_limit']);
549
+
550
+ return true;
551
+ }
552
+
553
+
554
+ // return array containing information about all supported formats
555
+ public function GetFileFormatArray() {
556
+ static $format_info = array();
557
+ if (empty($format_info)) {
558
+ $format_info = array(
559
+
560
+ // Audio formats
561
+
562
+ // AC-3 - audio - Dolby AC-3 / Dolby Digital
563
+ 'ac3' => array(
564
+ 'pattern' => '^\x0B\x77',
565
+ 'group' => 'audio',
566
+ 'module' => 'ac3',
567
+ 'mime_type' => 'audio/ac3',
568
+ ),
569
+
570
+ // AAC - audio - Advanced Audio Coding (AAC) - ADIF format
571
+ 'adif' => array(
572
+ 'pattern' => '^ADIF',
573
+ 'group' => 'audio',
574
+ 'module' => 'aac',
575
+ 'mime_type' => 'application/octet-stream',
576
+ 'fail_ape' => 'WARNING',
577
+ ),
578
+
579
+ /*
580
+ // AA - audio - Audible Audiobook
581
+ 'aa' => array(
582
+ 'pattern' => '^.{4}\x57\x90\x75\x36',
583
+ 'group' => 'audio',
584
+ 'module' => 'aa',
585
+ 'mime_type' => 'audio/audible',
586
+ ),
587
+ */
588
+ // AAC - audio - Advanced Audio Coding (AAC) - ADTS format (very similar to MP3)
589
+ 'adts' => array(
590
+ 'pattern' => '^\xFF[\xF0-\xF1\xF8-\xF9]',
591
+ 'group' => 'audio',
592
+ 'module' => 'aac',
593
+ 'mime_type' => 'application/octet-stream',
594
+ 'fail_ape' => 'WARNING',
595
+ ),
596
+
597
+
598
+ // AU - audio - NeXT/Sun AUdio (AU)
599
+ 'au' => array(
600
+ 'pattern' => '^\.snd',
601
+ 'group' => 'audio',
602
+ 'module' => 'au',
603
+ 'mime_type' => 'audio/basic',
604
+ ),
605
+
606
+ // AMR - audio - Adaptive Multi Rate
607
+ 'amr' => array(
608
+ 'pattern' => '^\x23\x21AMR\x0A', // #!AMR[0A]
609
+ 'group' => 'audio',
610
+ 'module' => 'amr',
611
+ 'mime_type' => 'audio/amr',
612
+ ),
613
+
614
+ // AVR - audio - Audio Visual Research
615
+ 'avr' => array(
616
+ 'pattern' => '^2BIT',
617
+ 'group' => 'audio',
618
+ 'module' => 'avr',
619
+ 'mime_type' => 'application/octet-stream',
620
+ ),
621
+
622
+ // BONK - audio - Bonk v0.9+
623
+ 'bonk' => array(
624
+ 'pattern' => '^\x00(BONK|INFO|META| ID3)',
625
+ 'group' => 'audio',
626
+ 'module' => 'bonk',
627
+ 'mime_type' => 'audio/xmms-bonk',
628
+ ),
629
+
630
+ // DSS - audio - Digital Speech Standard
631
+ 'dss' => array(
632
+ 'pattern' => '^[\x02-\x03]ds[s2]',
633
+ 'group' => 'audio',
634
+ 'module' => 'dss',
635
+ 'mime_type' => 'application/octet-stream',
636
+ ),
637
+
638
+ // DTS - audio - Dolby Theatre System
639
+ 'dts' => array(
640
+ 'pattern' => '^\x7F\xFE\x80\x01',
641
+ 'group' => 'audio',
642
+ 'module' => 'dts',
643
+ 'mime_type' => 'audio/dts',
644
+ ),
645
+
646
+ // FLAC - audio - Free Lossless Audio Codec
647
+ 'flac' => array(
648
+ 'pattern' => '^fLaC',
649
+ 'group' => 'audio',
650
+ 'module' => 'flac',
651
+ 'mime_type' => 'audio/x-flac',
652
+ ),
653
+
654
+ // LA - audio - Lossless Audio (LA)
655
+ 'la' => array(
656
+ 'pattern' => '^LA0[2-4]',
657
+ 'group' => 'audio',
658
+ 'module' => 'la',
659
+ 'mime_type' => 'application/octet-stream',
660
+ ),
661
+
662
+ // LPAC - audio - Lossless Predictive Audio Compression (LPAC)
663
+ 'lpac' => array(
664
+ 'pattern' => '^LPAC',
665
+ 'group' => 'audio',
666
+ 'module' => 'lpac',
667
+ 'mime_type' => 'application/octet-stream',
668
+ ),
669
+
670
+ // MIDI - audio - MIDI (Musical Instrument Digital Interface)
671
+ 'midi' => array(
672
+ 'pattern' => '^MThd',
673
+ 'group' => 'audio',
674
+ 'module' => 'midi',
675
+ 'mime_type' => 'audio/midi',
676
+ ),
677
+
678
+ // MAC - audio - Monkey's Audio Compressor
679
+ 'mac' => array(
680
+ 'pattern' => '^MAC ',
681
+ 'group' => 'audio',
682
+ 'module' => 'monkey',
683
+ 'mime_type' => 'application/octet-stream',
684
+ ),
685
+
686
+ // has been known to produce false matches in random files (e.g. JPEGs), leave out until more precise matching available
687
+ // // MOD - audio - MODule (assorted sub-formats)
688
+ // 'mod' => array(
689
+ // 'pattern' => '^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)',
690
+ // 'group' => 'audio',
691
+ // 'module' => 'mod',
692
+ // 'option' => 'mod',
693
+ // 'mime_type' => 'audio/mod',
694
+ // ),
695
+
696
+ // MOD - audio - MODule (Impulse Tracker)
697
+ 'it' => array(
698
+ 'pattern' => '^IMPM',
699
+ 'group' => 'audio',
700
+ 'module' => 'mod',
701
+ //'option' => 'it',
702
+ 'mime_type' => 'audio/it',
703
+ ),
704
+
705
+ // MOD - audio - MODule (eXtended Module, various sub-formats)
706
+ 'xm' => array(
707
+ 'pattern' => '^Extended Module',
708
+ 'group' => 'audio',
709
+ 'module' => 'mod',
710
+ //'option' => 'xm',
711
+ 'mime_type' => 'audio/xm',
712
+ ),
713
+
714
+ // MOD - audio - MODule (ScreamTracker)
715
+ 's3m' => array(
716
+ 'pattern' => '^.{44}SCRM',
717
+ 'group' => 'audio',
718
+ 'module' => 'mod',
719
+ //'option' => 's3m',
720
+ 'mime_type' => 'audio/s3m',
721
+ ),
722
+
723
+ // MPC - audio - Musepack / MPEGplus
724
+ 'mpc' => array(
725
+ 'pattern' => '^(MPCK|MP\+|[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0])',
726
+ 'group' => 'audio',
727
+ 'module' => 'mpc',
728
+ 'mime_type' => 'audio/x-musepack',
729
+ ),
730
+
731
+ // MP3 - audio - MPEG-audio Layer 3 (very similar to AAC-ADTS)
732
+ 'mp3' => array(
733
+ 'pattern' => '^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\x0B\x10-\x1B\x20-\x2B\x30-\x3B\x40-\x4B\x50-\x5B\x60-\x6B\x70-\x7B\x80-\x8B\x90-\x9B\xA0-\xAB\xB0-\xBB\xC0-\xCB\xD0-\xDB\xE0-\xEB\xF0-\xFB]',
734
+ 'group' => 'audio',
735
+ 'module' => 'mp3',
736
+ 'mime_type' => 'audio/mpeg',
737
+ ),
738
+
739
+ // OFR - audio - OptimFROG
740
+ 'ofr' => array(
741
+ 'pattern' => '^(\*RIFF|OFR)',
742
+ 'group' => 'audio',
743
+ 'module' => 'optimfrog',
744
+ 'mime_type' => 'application/octet-stream',
745
+ ),
746
+
747
+ // RKAU - audio - RKive AUdio compressor
748
+ 'rkau' => array(
749
+ 'pattern' => '^RKA',
750
+ 'group' => 'audio',
751
+ 'module' => 'rkau',
752
+ 'mime_type' => 'application/octet-stream',
753
+ ),
754
+
755
+ // SHN - audio - Shorten
756
+ 'shn' => array(
757
+ 'pattern' => '^ajkg',
758
+ 'group' => 'audio',
759
+ 'module' => 'shorten',
760
+ 'mime_type' => 'audio/xmms-shn',
761
+ 'fail_id3' => 'ERROR',
762
+ 'fail_ape' => 'ERROR',
763
+ ),
764
+
765
+ // TTA - audio - TTA Lossless Audio Compressor (http://tta.corecodec.org)
766
+ 'tta' => array(
767
+ 'pattern' => '^TTA', // could also be '^TTA(\x01|\x02|\x03|2|1)'
768
+ 'group' => 'audio',
769
+ 'module' => 'tta',
770
+ 'mime_type' => 'application/octet-stream',
771
+ ),
772
+
773
+ // VOC - audio - Creative Voice (VOC)
774
+ 'voc' => array(
775
+ 'pattern' => '^Creative Voice File',
776
+ 'group' => 'audio',
777
+ 'module' => 'voc',
778
+ 'mime_type' => 'audio/voc',
779
+ ),
780
+
781
+ // VQF - audio - transform-domain weighted interleave Vector Quantization Format (VQF)
782
+ 'vqf' => array(
783
+ 'pattern' => '^TWIN',
784
+ 'group' => 'audio',
785
+ 'module' => 'vqf',
786
+ 'mime_type' => 'application/octet-stream',
787
+ ),
788
+
789
+ // WV - audio - WavPack (v4.0+)
790
+ 'wv' => array(
791
+ 'pattern' => '^wvpk',
792
+ 'group' => 'audio',
793
+ 'module' => 'wavpack',
794
+ 'mime_type' => 'application/octet-stream',
795
+ ),
796
+
797
+
798
+ // Audio-Video formats
799
+
800
+ // ASF - audio/video - Advanced Streaming Format, Windows Media Video, Windows Media Audio
801
+ 'asf' => array(
802
+ 'pattern' => '^\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C',
803
+ 'group' => 'audio-video',
804
+ 'module' => 'asf',
805
+ 'mime_type' => 'video/x-ms-asf',
806
+ 'iconv_req' => false,
807
+ ),
808
+
809
+ // BINK - audio/video - Bink / Smacker
810
+ 'bink' => array(
811
+ 'pattern' => '^(BIK|SMK)',
812
+ 'group' => 'audio-video',
813
+ 'module' => 'bink',
814
+ 'mime_type' => 'application/octet-stream',
815
+ ),
816
+
817
+ // FLV - audio/video - FLash Video
818
+ 'flv' => array(
819
+ 'pattern' => '^FLV\x01',
820
+ 'group' => 'audio-video',
821
+ 'module' => 'flv',
822
+ 'mime_type' => 'video/x-flv',
823
+ ),
824
+
825
+ // MKAV - audio/video - Mastroka
826
+ 'matroska' => array(
827
+ 'pattern' => '^\x1A\x45\xDF\xA3',
828
+ 'group' => 'audio-video',
829
+ 'module' => 'matroska',
830
+ 'mime_type' => 'video/x-matroska', // may also be audio/x-matroska
831
+ ),
832
+
833
+ // MPEG - audio/video - MPEG (Moving Pictures Experts Group)
834
+ 'mpeg' => array(
835
+ 'pattern' => '^\x00\x00\x01(\xBA|\xB3)',
836
+ 'group' => 'audio-video',
837
+ 'module' => 'mpeg',
838
+ 'mime_type' => 'video/mpeg',
839
+ ),
840
+
841
+ // NSV - audio/video - Nullsoft Streaming Video (NSV)
842
+ 'nsv' => array(
843
+ 'pattern' => '^NSV[sf]',
844
+ 'group' => 'audio-video',
845
+ 'module' => 'nsv',
846
+ 'mime_type' => 'application/octet-stream',
847
+ ),
848
+
849
+ // Ogg - audio/video - Ogg (Ogg-Vorbis, Ogg-FLAC, Speex, Ogg-Theora(*), Ogg-Tarkin(*))
850
+ 'ogg' => array(
851
+ 'pattern' => '^OggS',
852
+ 'group' => 'audio',
853
+ 'module' => 'ogg',
854
+ 'mime_type' => 'application/ogg',
855
+ 'fail_id3' => 'WARNING',
856
+ 'fail_ape' => 'WARNING',
857
+ ),
858
+
859
+ // QT - audio/video - Quicktime
860
+ 'quicktime' => array(
861
+ 'pattern' => '^.{4}(cmov|free|ftyp|mdat|moov|pnot|skip|wide)',
862
+ 'group' => 'audio-video',
863
+ 'module' => 'quicktime',
864
+ 'mime_type' => 'video/quicktime',
865
+ ),
866
+
867
+ // RIFF - audio/video - Resource Interchange File Format (RIFF) / WAV / AVI / CD-audio / SDSS = renamed variant used by SmartSound QuickTracks (www.smartsound.com) / FORM = Audio Interchange File Format (AIFF)
868
+ 'riff' => array(
869
+ 'pattern' => '^(RIFF|SDSS|FORM)',
870
+ 'group' => 'audio-video',
871
+ 'module' => 'riff',
872
+ 'mime_type' => 'audio/x-wave',
873
+ 'fail_ape' => 'WARNING',
874
+ ),
875
+
876
+ // Real - audio/video - RealAudio, RealVideo
877
+ 'real' => array(
878
+ 'pattern' => '^(\\.RMF|\\.ra)',
879
+ 'group' => 'audio-video',
880
+ 'module' => 'real',
881
+ 'mime_type' => 'audio/x-realaudio',
882
+ ),
883
+
884
+ // SWF - audio/video - ShockWave Flash
885
+ 'swf' => array(
886
+ 'pattern' => '^(F|C)WS',
887
+ 'group' => 'audio-video',
888
+ 'module' => 'swf',
889
+ 'mime_type' => 'application/x-shockwave-flash',
890
+ ),
891
+
892
+ // TS - audio/video - MPEG-2 Transport Stream
893
+ 'ts' => array(
894
+ 'pattern' => '^(\x47.{187}){10,}', // packets are 188 bytes long and start with 0x47 "G". Check for at least 10 packets matching this pattern
895
+ 'group' => 'audio-video',
896
+ 'module' => 'ts',
897
+ 'mime_type' => 'video/MP2T',
898
+ ),
899
+
900
+
901
+ // Still-Image formats
902
+
903
+ // BMP - still image - Bitmap (Windows, OS/2; uncompressed, RLE8, RLE4)
904
+ 'bmp' => array(
905
+ 'pattern' => '^BM',
906
+ 'group' => 'graphic',
907
+ 'module' => 'bmp',
908
+ 'mime_type' => 'image/bmp',
909
+ 'fail_id3' => 'ERROR',
910
+ 'fail_ape' => 'ERROR',
911
+ ),
912
+
913
+ // GIF - still image - Graphics Interchange Format
914
+ 'gif' => array(
915
+ 'pattern' => '^GIF',
916
+ 'group' => 'graphic',
917
+ 'module' => 'gif',
918
+ 'mime_type' => 'image/gif',
919
+ 'fail_id3' => 'ERROR',
920
+ 'fail_ape' => 'ERROR',
921
+ ),
922
+
923
+ // JPEG - still image - Joint Photographic Experts Group (JPEG)
924
+ 'jpg' => array(
925
+ 'pattern' => '^\xFF\xD8\xFF',
926
+ 'group' => 'graphic',
927
+ 'module' => 'jpg',
928
+ 'mime_type' => 'image/jpeg',
929
+ 'fail_id3' => 'ERROR',
930
+ 'fail_ape' => 'ERROR',
931
+ ),
932
+
933
+ // PCD - still image - Kodak Photo CD
934
+ 'pcd' => array(
935
+ 'pattern' => '^.{2048}PCD_IPI\x00',
936
+ 'group' => 'graphic',
937
+ 'module' => 'pcd',
938
+ 'mime_type' => 'image/x-photo-cd',
939
+ 'fail_id3' => 'ERROR',
940
+ 'fail_ape' => 'ERROR',
941
+ ),
942
+
943
+
944
+ // PNG - still image - Portable Network Graphics (PNG)
945
+ 'png' => array(
946
+ 'pattern' => '^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A',
947
+ 'group' => 'graphic',
948
+ 'module' => 'png',
949
+ 'mime_type' => 'image/png',
950
+ 'fail_id3' => 'ERROR',
951
+ 'fail_ape' => 'ERROR',
952
+ ),
953
+
954
+
955
+ // SVG - still image - Scalable Vector Graphics (SVG)
956
+ 'svg' => array(
957
+ 'pattern' => '(<!DOCTYPE svg PUBLIC |xmlns="http:\/\/www\.w3\.org\/2000\/svg")',
958
+ 'group' => 'graphic',
959
+ 'module' => 'svg',
960
+ 'mime_type' => 'image/svg+xml',
961
+ 'fail_id3' => 'ERROR',
962
+ 'fail_ape' => 'ERROR',
963
+ ),
964
+
965
+
966
+ // TIFF - still image - Tagged Information File Format (TIFF)
967
+ 'tiff' => array(
968
+ 'pattern' => '^(II\x2A\x00|MM\x00\x2A)',
969
+ 'group' => 'graphic',
970
+ 'module' => 'tiff',
971
+ 'mime_type' => 'image/tiff',
972
+ 'fail_id3' => 'ERROR',
973
+ 'fail_ape' => 'ERROR',
974
+ ),
975
+
976
+
977
+ // EFAX - still image - eFax (TIFF derivative)
978
+ 'efax' => array(
979
+ 'pattern' => '^\xDC\xFE',
980
+ 'group' => 'graphic',
981
+ 'module' => 'efax',
982
+ 'mime_type' => 'image/efax',
983
+ 'fail_id3' => 'ERROR',
984
+ 'fail_ape' => 'ERROR',
985
+ ),
986
+
987
+
988
+ // Data formats
989
+
990
+ // ISO - data - International Standards Organization (ISO) CD-ROM Image
991
+ 'iso' => array(
992
+ 'pattern' => '^.{32769}CD001',
993
+ 'group' => 'misc',
994
+ 'module' => 'iso',
995
+ 'mime_type' => 'application/octet-stream',
996
+ 'fail_id3' => 'ERROR',
997
+ 'fail_ape' => 'ERROR',
998
+ 'iconv_req' => false,
999
+ ),
1000
+
1001
+ // RAR - data - RAR compressed data
1002
+ 'rar' => array(
1003
+ 'pattern' => '^Rar\!',
1004
+ 'group' => 'archive',
1005
+ 'module' => 'rar',
1006
+ 'mime_type' => 'application/octet-stream',
1007
+ 'fail_id3' => 'ERROR',
1008
+ 'fail_ape' => 'ERROR',
1009
+ ),
1010
+
1011
+ // SZIP - audio/data - SZIP compressed data
1012
+ 'szip' => array(
1013
+ 'pattern' => '^SZ\x0A\x04',
1014
+ 'group' => 'archive',
1015
+ 'module' => 'szip',
1016
+ 'mime_type' => 'application/octet-stream',
1017
+ 'fail_id3' => 'ERROR',
1018
+ 'fail_ape' => 'ERROR',
1019
+ ),
1020
+
1021
+ // TAR - data - TAR compressed data
1022
+ 'tar' => array(
1023
+ 'pattern' => '^.{100}[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20\x00]{12}[0-9\x20\x00]{12}',
1024
+ 'group' => 'archive',
1025
+ 'module' => 'tar',
1026
+ 'mime_type' => 'application/x-tar',
1027
+ 'fail_id3' => 'ERROR',
1028
+ 'fail_ape' => 'ERROR',
1029
+ ),
1030
+
1031
+ // GZIP - data - GZIP compressed data
1032
+ 'gz' => array(
1033
+ 'pattern' => '^\x1F\x8B\x08',
1034
+ 'group' => 'archive',
1035
+ 'module' => 'gzip',
1036
+ 'mime_type' => 'application/x-gzip',
1037
+ 'fail_id3' => 'ERROR',
1038
+ 'fail_ape' => 'ERROR',
1039
+ ),
1040
+
1041
+ // ZIP - data - ZIP compressed data
1042
+ 'zip' => array(
1043
+ 'pattern' => '^PK\x03\x04',
1044
+ 'group' => 'archive',
1045
+ 'module' => 'zip',
1046
+ 'mime_type' => 'application/zip',
1047
+ 'fail_id3' => 'ERROR',
1048
+ 'fail_ape' => 'ERROR',
1049
+ ),
1050
+
1051
+
1052
+ // Misc other formats
1053
+
1054
+ // PAR2 - data - Parity Volume Set Specification 2.0
1055
+ 'par2' => array (
1056
+ 'pattern' => '^PAR2\x00PKT',
1057
+ 'group' => 'misc',
1058
+ 'module' => 'par2',
1059
+ 'mime_type' => 'application/octet-stream',
1060
+ 'fail_id3' => 'ERROR',
1061
+ 'fail_ape' => 'ERROR',
1062
+ ),
1063
+
1064
+ // PDF - data - Portable Document Format
1065
+ 'pdf' => array(
1066
+ 'pattern' => '^\x25PDF',
1067
+ 'group' => 'misc',
1068
+ 'module' => 'pdf',
1069
+ 'mime_type' => 'application/pdf',
1070
+ 'fail_id3' => 'ERROR',
1071
+ 'fail_ape' => 'ERROR',
1072
+ ),
1073
+
1074
+ // MSOFFICE - data - ZIP compressed data
1075
+ 'msoffice' => array(
1076
+ 'pattern' => '^\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1', // D0CF11E == DOCFILE == Microsoft Office Document
1077
+ 'group' => 'misc',
1078
+ 'module' => 'msoffice',
1079
+ 'mime_type' => 'application/octet-stream',
1080
+ 'fail_id3' => 'ERROR',
1081
+ 'fail_ape' => 'ERROR',
1082
+ ),
1083
+
1084
+ // CUE - data - CUEsheet (index to single-file disc images)
1085
+ 'cue' => array(
1086
+ 'pattern' => '', // empty pattern means cannot be automatically detected, will fall through all other formats and match based on filename and very basic file contents
1087
+ 'group' => 'misc',
1088
+ 'module' => 'cue',
1089
+ 'mime_type' => 'application/octet-stream',
1090
+ ),
1091
+
1092
+ );
1093
+ }
1094
+
1095
+ return $format_info;
1096
+ }
1097
+
1098
+
1099
+
1100
+ public function GetFileFormat(&$filedata, $filename='') {
1101
+ // this function will determine the format of a file based on usually
1102
+ // the first 2-4 bytes of the file (8 bytes for PNG, 16 bytes for JPG,
1103
+ // and in the case of ISO CD image, 6 bytes offset 32kb from the start
1104
+ // of the file).
1105
+
1106
+ // Identify file format - loop through $format_info and detect with reg expr
1107
+ foreach ($this->GetFileFormatArray() as $format_name => $info) {
1108
+ // The /s switch on preg_match() forces preg_match() NOT to treat
1109
+ // newline (0x0A) characters as special chars but do a binary match
1110
+ if (!empty($info['pattern']) && preg_match('#'.$info['pattern'].'#s', $filedata)) {
1111
+ $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php';
1112
+ return $info;
1113
+ }
1114
+ }
1115
+
1116
+
1117
+ if (preg_match('#\.mp[123a]$#i', $filename)) {
1118
+ // Too many mp3 encoders on the market put gabage in front of mpeg files
1119
+ // use assume format on these if format detection failed
1120
+ $GetFileFormatArray = $this->GetFileFormatArray();
1121
+ $info = $GetFileFormatArray['mp3'];
1122
+ $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php';
1123
+ return $info;
1124
+ } elseif (preg_match('/\.cue$/i', $filename) && preg_match('#FILE "[^"]+" (BINARY|MOTOROLA|AIFF|WAVE|MP3)#', $filedata)) {
1125
+ // there's not really a useful consistent "magic" at the beginning of .cue files to identify them
1126
+ // so until I think of something better, just go by filename if all other format checks fail
1127
+ // and verify there's at least one instance of "TRACK xx AUDIO" in the file
1128
+ $GetFileFormatArray = $this->GetFileFormatArray();
1129
+ $info = $GetFileFormatArray['cue'];
1130
+ $info['include'] = 'module.'.$info['group'].'.'.$info['module'].'.php';
1131
+ return $info;
1132
+ }
1133
+
1134
+ return false;
1135
+ }
1136
+
1137
+
1138
+ // converts array to $encoding charset from $this->encoding
1139
+ public function CharConvert(&$array, $encoding) {
1140
+
1141
+ // identical encoding - end here
1142
+ if ($encoding == $this->encoding) {
1143
+ return;
1144
+ }
1145
+
1146
+ // loop thru array
1147
+ foreach ($array as $key => $value) {
1148
+
1149
+ // go recursive
1150
+ if (is_array($value)) {
1151
+ $this->CharConvert($array[$key], $encoding);
1152
+ }
1153
+
1154
+ // convert string
1155
+ elseif (is_string($value)) {
1156
+ $array[$key] = trim(getid3_lib::iconv_fallback($encoding, $this->encoding, $value));
1157
+ }
1158
+ }
1159
+ }
1160
+
1161
+
1162
+ public function HandleAllTags() {
1163
+
1164
+ // key name => array (tag name, character encoding)
1165
+ static $tags;
1166
+ if (empty($tags)) {
1167
+ $tags = array(
1168
+ 'asf' => array('asf' , 'UTF-16LE'),
1169
+ 'midi' => array('midi' , 'ISO-8859-1'),
1170
+ 'nsv' => array('nsv' , 'ISO-8859-1'),
1171
+ 'ogg' => array('vorbiscomment' , 'UTF-8'),
1172
+ 'png' => array('png' , 'UTF-8'),
1173
+ 'tiff' => array('tiff' , 'ISO-8859-1'),
1174
+ 'quicktime' => array('quicktime' , 'UTF-8'),
1175
+ 'real' => array('real' , 'ISO-8859-1'),
1176
+ 'vqf' => array('vqf' , 'ISO-8859-1'),
1177
+ 'zip' => array('zip' , 'ISO-8859-1'),
1178
+ 'riff' => array('riff' , 'ISO-8859-1'),
1179
+ 'lyrics3' => array('lyrics3' , 'ISO-8859-1'),
1180
+ 'id3v1' => array('id3v1' , $this->encoding_id3v1),
1181
+ 'id3v2' => array('id3v2' , 'UTF-8'), // not according to the specs (every frame can have a different encoding), but getID3() force-converts all encodings to UTF-8
1182
+ 'ape' => array('ape' , 'UTF-8'),
1183
+ 'cue' => array('cue' , 'ISO-8859-1'),
1184
+ 'matroska' => array('matroska' , 'UTF-8'),
1185
+ 'flac' => array('vorbiscomment' , 'UTF-8'),
1186
+ 'divxtag' => array('divx' , 'ISO-8859-1'),
1187
+ 'iptc' => array('iptc' , 'ISO-8859-1'),
1188
+ );
1189
+ }
1190
+
1191
+ // loop through comments array
1192
+ foreach ($tags as $comment_name => $tagname_encoding_array) {
1193
+ list($tag_name, $encoding) = $tagname_encoding_array;
1194
+
1195
+ // fill in default encoding type if not already present
1196
+ if (isset($this->info[$comment_name]) && !isset($this->info[$comment_name]['encoding'])) {
1197
+ $this->info[$comment_name]['encoding'] = $encoding;
1198
+ }
1199
+
1200
+ // copy comments if key name set
1201
+ if (!empty($this->info[$comment_name]['comments'])) {
1202
+ foreach ($this->info[$comment_name]['comments'] as $tag_key => $valuearray) {
1203
+ foreach ($valuearray as $key => $value) {
1204
+ if (is_string($value)) {
1205
+ $value = trim($value, " \r\n\t"); // do not trim nulls from $value!! Unicode characters will get mangled if trailing nulls are removed!
1206
+ }
1207
+ if ($value) {
1208
+ if (!is_numeric($key)) {
1209
+ $this->info['tags'][trim($tag_name)][trim($tag_key)][$key] = $value;
1210
+ } else {
1211
+ $this->info['tags'][trim($tag_name)][trim($tag_key)][] = $value;
1212
+ }
1213
+ }
1214
+ }
1215
+ if ($tag_key == 'picture') {
1216
+ unset($this->info[$comment_name]['comments'][$tag_key]);
1217
+ }
1218
+ }
1219
+
1220
+ if (!isset($this->info['tags'][$tag_name])) {
1221
+ // comments are set but contain nothing but empty strings, so skip
1222
+ continue;
1223
+ }
1224
+
1225
+ if ($this->option_tags_html) {
1226
+ foreach ($this->info['tags'][$tag_name] as $tag_key => $valuearray) {
1227
+ $this->info['tags_html'][$tag_name][$tag_key] = getid3_lib::recursiveMultiByteCharString2HTML($valuearray, $encoding);
1228
+ }
1229
+ }
1230
+
1231
+ $this->CharConvert($this->info['tags'][$tag_name], $encoding); // only copy gets converted!
1232
+ }
1233
+
1234
+ }
1235
+
1236
+ // pictures can take up a lot of space, and we don't need multiple copies of them
1237
+ // let there be a single copy in [comments][picture], and not elsewhere
1238
+ if (!empty($this->info['tags'])) {
1239
+ $unset_keys = array('tags', 'tags_html');
1240
+ foreach ($this->info['tags'] as $tagtype => $tagarray) {
1241
+ foreach ($tagarray as $tagname => $tagdata) {
1242
+ if ($tagname == 'picture') {
1243
+ foreach ($tagdata as $key => $tagarray) {
1244
+ $this->info['comments']['picture'][] = $tagarray;
1245
+ if (isset($tagarray['data']) && isset($tagarray['image_mime'])) {
1246
+ if (isset($this->info['tags'][$tagtype][$tagname][$key])) {
1247
+ unset($this->info['tags'][$tagtype][$tagname][$key]);
1248
+ }
1249
+ if (isset($this->info['tags_html'][$tagtype][$tagname][$key])) {
1250
+ unset($this->info['tags_html'][$tagtype][$tagname][$key]);
1251
+ }
1252
+ }
1253
+ }
1254
+ }
1255
+ }
1256
+ foreach ($unset_keys as $unset_key) {
1257
+ // remove possible empty keys from (e.g. [tags][id3v2][picture])
1258
+ if (empty($this->info[$unset_key][$tagtype]['picture'])) {
1259
+ unset($this->info[$unset_key][$tagtype]['picture']);
1260
+ }
1261
+ if (empty($this->info[$unset_key][$tagtype])) {
1262
+ unset($this->info[$unset_key][$tagtype]);
1263
+ }
1264
+ if (empty($this->info[$unset_key])) {
1265
+ unset($this->info[$unset_key]);
1266
+ }
1267
+ }
1268
+ // remove duplicate copy of picture data from (e.g. [id3v2][comments][picture])
1269
+ if (isset($this->info[$tagtype]['comments']['picture'])) {
1270
+ unset($this->info[$tagtype]['comments']['picture']);
1271
+ }
1272
+ if (empty($this->info[$tagtype]['comments'])) {
1273
+ unset($this->info[$tagtype]['comments']);
1274
+ }
1275
+ if (empty($this->info[$tagtype])) {
1276
+ unset($this->info[$tagtype]);
1277
+ }
1278
+ }
1279
+ }
1280
+ return true;
1281
+ }
1282
+
1283
+ public function getHashdata($algorithm) {
1284
+ switch ($algorithm) {
1285
+ case 'md5':
1286
+ case 'sha1':
1287
+ break;
1288
+
1289
+ default:
1290
+ return $this->error('bad algorithm "'.$algorithm.'" in getHashdata()');
1291
+ break;
1292
+ }
1293
+
1294
+ if (!empty($this->info['fileformat']) && !empty($this->info['dataformat']) && ($this->info['fileformat'] == 'ogg') && ($this->info['audio']['dataformat'] == 'vorbis')) {
1295
+
1296
+ // We cannot get an identical md5_data value for Ogg files where the comments
1297
+ // span more than 1 Ogg page (compared to the same audio data with smaller
1298
+ // comments) using the normal getID3() method of MD5'ing the data between the
1299
+ // end of the comments and the end of the file (minus any trailing tags),
1300
+ // because the page sequence numbers of the pages that the audio data is on
1301
+ // do not match. Under normal circumstances, where comments are smaller than
1302
+ // the nominal 4-8kB page size, then this is not a problem, but if there are
1303
+ // very large comments, the only way around it is to strip off the comment
1304
+ // tags with vorbiscomment and MD5 that file.
1305
+ // This procedure must be applied to ALL Ogg files, not just the ones with
1306
+ // comments larger than 1 page, because the below method simply MD5's the
1307
+ // whole file with the comments stripped, not just the portion after the
1308
+ // comments block (which is the standard getID3() method.
1309
+
1310
+ // The above-mentioned problem of comments spanning multiple pages and changing
1311
+ // page sequence numbers likely happens for OggSpeex and OggFLAC as well, but
1312
+ // currently vorbiscomment only works on OggVorbis files.
1313
+
1314
+ if (preg_match('#(1|ON)#i', ini_get('safe_mode'))) {
1315
+
1316
+ $this->warning('Failed making system call to vorbiscomment.exe - '.$algorithm.'_data is incorrect - error returned: PHP running in Safe Mode (backtick operator not available)');
1317
+ $this->info[$algorithm.'_data'] = false;
1318
+
1319
+ } else {
1320
+
1321
+ // Prevent user from aborting script
1322
+ $old_abort = ignore_user_abort(true);
1323
+
1324
+ // Create empty file
1325
+ $empty = tempnam(GETID3_TEMP_DIR, 'getID3');
1326
+ touch($empty);
1327
+
1328
+ // Use vorbiscomment to make temp file without comments
1329
+ $temp = tempnam(GETID3_TEMP_DIR, 'getID3');
1330
+ $file = $this->info['filenamepath'];
1331
+
1332
+ if (GETID3_OS_ISWINDOWS) {
1333
+
1334
+ if (file_exists(GETID3_HELPERAPPSDIR.'vorbiscomment.exe')) {
1335
+
1336
+ $commandline = '"'.GETID3_HELPERAPPSDIR.'vorbiscomment.exe" -w -c "'.$empty.'" "'.$file.'" "'.$temp.'"';
1337
+ $VorbisCommentError = `$commandline`;
1338
+
1339
+ } else {
1340
+
1341
+ $VorbisCommentError = 'vorbiscomment.exe not found in '.GETID3_HELPERAPPSDIR;
1342
+
1343
+ }
1344
+
1345
+ } else {
1346
+
1347
+ $commandline = 'vorbiscomment -w -c "'.$empty.'" "'.$file.'" "'.$temp.'" 2>&1';
1348
+ $commandline = 'vorbiscomment -w -c '.escapeshellarg($empty).' '.escapeshellarg($file).' '.escapeshellarg($temp).' 2>&1';
1349
+ $VorbisCommentError = `$commandline`;
1350
+
1351
+ }
1352
+
1353
+ if (!empty($VorbisCommentError)) {
1354
+
1355
+ $this->info['warning'][] = 'Failed making system call to vorbiscomment(.exe) - '.$algorithm.'_data will be incorrect. If vorbiscomment is unavailable, please download from http://www.vorbis.com/download.psp and put in the getID3() directory. Error returned: '.$VorbisCommentError;
1356
+ $this->info[$algorithm.'_data'] = false;
1357
+
1358
+ } else {
1359
+
1360
+ // Get hash of newly created file
1361
+ switch ($algorithm) {
1362
+ case 'md5':
1363
+ $this->info[$algorithm.'_data'] = md5_file($temp);
1364
+ break;
1365
+
1366
+ case 'sha1':
1367
+ $this->info[$algorithm.'_data'] = sha1_file($temp);
1368
+ break;
1369
+ }
1370
+ }
1371
+
1372
+ // Clean up
1373
+ unlink($empty);
1374
+ unlink($temp);
1375
+
1376
+ // Reset abort setting
1377
+ ignore_user_abort($old_abort);
1378
+
1379
+ }
1380
+
1381
+ } else {
1382
+
1383
+ if (!empty($this->info['avdataoffset']) || (isset($this->info['avdataend']) && ($this->info['avdataend'] < $this->info['filesize']))) {
1384
+
1385
+ // get hash from part of file
1386
+ $this->info[$algorithm.'_data'] = getid3_lib::hash_data($this->info['filenamepath'], $this->info['avdataoffset'], $this->info['avdataend'], $algorithm);
1387
+
1388
+ } else {
1389
+
1390
+ // get hash from whole file
1391
+ switch ($algorithm) {
1392
+ case 'md5':
1393
+ $this->info[$algorithm.'_data'] = md5_file($this->info['filenamepath']);
1394
+ break;
1395
+
1396
+ case 'sha1':
1397
+ $this->info[$algorithm.'_data'] = sha1_file($this->info['filenamepath']);
1398
+ break;
1399
+ }
1400
+ }
1401
+
1402
+ }
1403
+ return true;
1404
+ }
1405
+
1406
+
1407
+ public function ChannelsBitratePlaytimeCalculations() {
1408
+
1409
+ // set channelmode on audio
1410
+ if (!empty($this->info['audio']['channelmode']) || !isset($this->info['audio']['channels'])) {
1411
+ // ignore
1412
+ } elseif ($this->info['audio']['channels'] == 1) {
1413
+ $this->info['audio']['channelmode'] = 'mono';
1414
+ } elseif ($this->info['audio']['channels'] == 2) {
1415
+ $this->info['audio']['channelmode'] = 'stereo';
1416
+ }
1417
+
1418
+ // Calculate combined bitrate - audio + video
1419
+ $CombinedBitrate = 0;
1420
+ $CombinedBitrate += (isset($this->info['audio']['bitrate']) ? $this->info['audio']['bitrate'] : 0);
1421
+ $CombinedBitrate += (isset($this->info['video']['bitrate']) ? $this->info['video']['bitrate'] : 0);
1422
+ if (($CombinedBitrate > 0) && empty($this->info['bitrate'])) {
1423
+ $this->info['bitrate'] = $CombinedBitrate;
1424
+ }
1425
+ //if ((isset($this->info['video']) && !isset($this->info['video']['bitrate'])) || (isset($this->info['audio']) && !isset($this->info['audio']['bitrate']))) {
1426
+ // // for example, VBR MPEG video files cannot determine video bitrate:
1427
+ // // should not set overall bitrate and playtime from audio bitrate only
1428
+ // unset($this->info['bitrate']);
1429
+ //}
1430
+
1431
+ // video bitrate undetermined, but calculable
1432
+ if (isset($this->info['video']['dataformat']) && $this->info['video']['dataformat'] && (!isset($this->info['video']['bitrate']) || ($this->info['video']['bitrate'] == 0))) {
1433
+ // if video bitrate not set
1434
+ if (isset($this->info['audio']['bitrate']) && ($this->info['audio']['bitrate'] > 0) && ($this->info['audio']['bitrate'] == $this->info['bitrate'])) {
1435
+ // AND if audio bitrate is set to same as overall bitrate
1436
+ if (isset($this->info['playtime_seconds']) && ($this->info['playtime_seconds'] > 0)) {
1437
+ // AND if playtime is set
1438
+ if (isset($this->info['avdataend']) && isset($this->info['avdataoffset'])) {
1439
+ // AND if AV data offset start/end is known
1440
+ // THEN we can calculate the video bitrate
1441
+ $this->info['bitrate'] = round((($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds']);
1442
+ $this->info['video']['bitrate'] = $this->info['bitrate'] - $this->info['audio']['bitrate'];
1443
+ }
1444
+ }
1445
+ }
1446
+ }
1447
+
1448
+ if ((!isset($this->info['playtime_seconds']) || ($this->info['playtime_seconds'] <= 0)) && !empty($this->info['bitrate'])) {
1449
+ $this->info['playtime_seconds'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['bitrate'];
1450
+ }
1451
+
1452
+ if (!isset($this->info['bitrate']) && !empty($this->info['playtime_seconds'])) {
1453
+ $this->info['bitrate'] = (($this->info['avdataend'] - $this->info['avdataoffset']) * 8) / $this->info['playtime_seconds'];
1454
+ }
1455
+ if (isset($this->info['bitrate']) && empty($this->info['audio']['bitrate']) && empty($this->info['video']['bitrate'])) {
1456
+ if (isset($this->info['audio']['dataformat']) && empty($this->info['video']['resolution_x'])) {
1457
+ // audio only
1458
+ $this->info['audio']['bitrate'] = $this->info['bitrate'];
1459
+ } elseif (isset($this->info['video']['resolution_x']) && empty($this->info['audio']['dataformat'])) {
1460
+ // video only
1461
+ $this->info['video']['bitrate'] = $this->info['bitrate'];
1462
+ }
1463
+ }
1464
+
1465
+ // Set playtime string
1466
+ if (!empty($this->info['playtime_seconds']) && empty($this->info['playtime_string'])) {
1467
+ $this->info['playtime_string'] = getid3_lib::PlaytimeString($this->info['playtime_seconds']);
1468
+ }
1469
+ }
1470
+
1471
+
1472
+ public function CalculateCompressionRatioVideo() {
1473
+ if (empty($this->info['video'])) {
1474
+ return false;
1475
+ }
1476
+ if (empty($this->info['video']['resolution_x']) || empty($this->info['video']['resolution_y'])) {
1477
+ return false;
1478
+ }
1479
+ if (empty($this->info['video']['bits_per_sample'])) {
1480
+ return false;
1481
+ }
1482
+
1483
+ switch ($this->info['video']['dataformat']) {
1484
+ case 'bmp':
1485
+ case 'gif':
1486
+ case 'jpeg':
1487
+ case 'jpg':
1488
+ case 'png':
1489
+ case 'tiff':
1490
+ $FrameRate = 1;
1491
+ $PlaytimeSeconds = 1;
1492
+ $BitrateCompressed = $this->info['filesize'] * 8;
1493
+ break;
1494
+
1495
+ default:
1496
+ if (!empty($this->info['video']['frame_rate'])) {
1497
+ $FrameRate = $this->info['video']['frame_rate'];
1498
+ } else {
1499
+ return false;
1500
+ }
1501
+ if (!empty($this->info['playtime_seconds'])) {
1502
+ $PlaytimeSeconds = $this->info['playtime_seconds'];
1503
+ } else {
1504
+ return false;
1505
+ }
1506
+ if (!empty($this->info['video']['bitrate'])) {
1507
+ $BitrateCompressed = $this->info['video']['bitrate'];
1508
+ } else {
1509
+ return false;
1510
+ }
1511
+ break;
1512
+ }
1513
+ $BitrateUncompressed = $this->info['video']['resolution_x'] * $this->info['video']['resolution_y'] * $this->info['video']['bits_per_sample'] * $FrameRate;
1514
+
1515
+ $this->info['video']['compression_ratio'] = $BitrateCompressed / $BitrateUncompressed;
1516
+ return true;
1517
+ }
1518
+
1519
+
1520
+ public function CalculateCompressionRatioAudio() {
1521
+ if (empty($this->info['audio']['bitrate']) || empty($this->info['audio']['channels']) || empty($this->info['audio']['sample_rate']) || !is_numeric($this->info['audio']['sample_rate'])) {
1522
+ return false;
1523
+ }
1524
+ $this->info['audio']['compression_ratio'] = $this->info['audio']['bitrate'] / ($this->info['audio']['channels'] * $this->info['audio']['sample_rate'] * (!empty($this->info['audio']['bits_per_sample']) ? $this->info['audio']['bits_per_sample'] : 16));
1525
+
1526
+ if (!empty($this->info['audio']['streams'])) {
1527
+ foreach ($this->info['audio']['streams'] as $streamnumber => $streamdata) {
1528
+ if (!empty($streamdata['bitrate']) && !empty($streamdata['channels']) && !empty($streamdata['sample_rate'])) {
1529
+ $this->info['audio']['streams'][$streamnumber]['compression_ratio'] = $streamdata['bitrate'] / ($streamdata['channels'] * $streamdata['sample_rate'] * (!empty($streamdata['bits_per_sample']) ? $streamdata['bits_per_sample'] : 16));
1530
+ }
1531
+ }
1532
+ }
1533
+ return true;
1534
+ }
1535
+
1536
+
1537
+ public function CalculateReplayGain() {
1538
+ if (isset($this->info['replay_gain'])) {
1539
+ if (!isset($this->info['replay_gain']['reference_volume'])) {
1540
+ $this->info['replay_gain']['reference_volume'] = (double) 89.0;
1541
+ }
1542
+ if (isset($this->info['replay_gain']['track']['adjustment'])) {
1543
+ $this->info['replay_gain']['track']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['track']['adjustment'];
1544
+ }
1545
+ if (isset($this->info['replay_gain']['album']['adjustment'])) {
1546
+ $this->info['replay_gain']['album']['volume'] = $this->info['replay_gain']['reference_volume'] - $this->info['replay_gain']['album']['adjustment'];
1547
+ }
1548
+
1549
+ if (isset($this->info['replay_gain']['track']['peak'])) {
1550
+ $this->info['replay_gain']['track']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['track']['peak']);
1551
+ }
1552
+ if (isset($this->info['replay_gain']['album']['peak'])) {
1553
+ $this->info['replay_gain']['album']['max_noclip_gain'] = 0 - getid3_lib::RGADamplitude2dB($this->info['replay_gain']['album']['peak']);
1554
+ }
1555
+ }
1556
+ return true;
1557
+ }
1558
+
1559
+ public function ProcessAudioStreams() {
1560
+ if (!empty($this->info['audio']['bitrate']) || !empty($this->info['audio']['channels']) || !empty($this->info['audio']['sample_rate'])) {
1561
+ if (!isset($this->info['audio']['streams'])) {
1562
+ foreach ($this->info['audio'] as $key => $value) {
1563
+ if ($key != 'streams') {
1564
+ $this->info['audio']['streams'][0][$key] = $value;
1565
+ }
1566
+ }
1567
+ }
1568
+ }
1569
+ return true;
1570
+ }
1571
+
1572
+ public function getid3_tempnam() {
1573
+ return tempnam($this->tempdir, 'gI3');
1574
+ }
1575
+
1576
+ public function include_module($name) {
1577
+ //if (!file_exists($this->include_path.'module.'.$name.'.php')) {
1578
+ if (!file_exists(GETID3_INCLUDEPATH.'module.'.$name.'.php')) {
1579
+ throw new getid3_exception('Required module.'.$name.'.php is missing.');
1580
+ }
1581
+ include_once(GETID3_INCLUDEPATH.'module.'.$name.'.php');
1582
+ return true;
1583
+ }
1584
+
1585
+ }
1586
+
1587
+
1588
+ abstract class getid3_handler {
1589
+
1590
+ /**
1591
+ * @var getID3
1592
+ */
1593
+ protected $getid3; // pointer
1594
+
1595
+ protected $data_string_flag = false; // analyzing filepointer or string
1596
+ protected $data_string = ''; // string to analyze
1597
+ protected $data_string_position = 0; // seek position in string
1598
+ protected $data_string_length = 0; // string length
1599
+
1600
+ private $dependency_to = null;
1601
+
1602
+
1603
+ public function __construct(getID3 $getid3, $call_module=null) {
1604
+ $this->getid3 = $getid3;
1605
+
1606
+ if ($call_module) {
1607
+ $this->dependency_to = str_replace('getid3_', '', $call_module);
1608
+ }
1609
+ }
1610
+
1611
+
1612
+ // Analyze from file pointer
1613
+ abstract public function Analyze();
1614
+
1615
+
1616
+ // Analyze from string instead
1617
+ public function AnalyzeString($string) {
1618
+ // Enter string mode
1619
+ $this->setStringMode($string);
1620
+
1621
+ // Save info
1622
+ $saved_avdataoffset = $this->getid3->info['avdataoffset'];
1623
+ $saved_avdataend = $this->getid3->info['avdataend'];
1624
+ $saved_filesize = (isset($this->getid3->info['filesize']) ? $this->getid3->info['filesize'] : null); // may be not set if called as dependency without openfile() call
1625
+
1626
+ // Reset some info
1627
+ $this->getid3->info['avdataoffset'] = 0;
1628
+ $this->getid3->info['avdataend'] = $this->getid3->info['filesize'] = $this->data_string_length;
1629
+
1630
+ // Analyze
1631
+ $this->Analyze();
1632
+
1633
+ // Restore some info
1634
+ $this->getid3->info['avdataoffset'] = $saved_avdataoffset;
1635
+ $this->getid3->info['avdataend'] = $saved_avdataend;
1636
+ $this->getid3->info['filesize'] = $saved_filesize;
1637
+
1638
+ // Exit string mode
1639
+ $this->data_string_flag = false;
1640
+ }
1641
+
1642
+ public function setStringMode($string) {
1643
+ $this->data_string_flag = true;
1644
+ $this->data_string = $string;
1645
+ $this->data_string_length = strlen($string);
1646
+ }
1647
+
1648
+ protected function ftell() {
1649
+ if ($this->data_string_flag) {
1650
+ return $this->data_string_position;
1651
+ }
1652
+ return ftell($this->getid3->fp);
1653
+ }
1654
+
1655
+ protected function fread($bytes) {
1656
+ if ($this->data_string_flag) {
1657
+ $this->data_string_position += $bytes;
1658
+ return substr($this->data_string, $this->data_string_position - $bytes, $bytes);
1659
+ }
1660
+ $pos = $this->ftell() + $bytes;
1661
+ if (!getid3_lib::intValueSupported($pos)) {
1662
+ throw new getid3_exception('cannot fread('.$bytes.' from '.$this->ftell().') because beyond PHP filesystem limit', 10);
1663
+ }
1664
+ return fread($this->getid3->fp, $bytes);
1665
+ }
1666
+
1667
+ protected function fseek($bytes, $whence=SEEK_SET) {
1668
+ if ($this->data_string_flag) {
1669
+ switch ($whence) {
1670
+ case SEEK_SET:
1671
+ $this->data_string_position = $bytes;
1672
+ break;
1673
+
1674
+ case SEEK_CUR:
1675
+ $this->data_string_position += $bytes;
1676
+ break;
1677
+
1678
+ case SEEK_END:
1679
+ $this->data_string_position = $this->data_string_length + $bytes;
1680
+ break;
1681
+ }
1682
+ return 0;
1683
+ } else {
1684
+ $pos = $bytes;
1685
+ if ($whence == SEEK_CUR) {
1686
+ $pos = $this->ftell() + $bytes;
1687
+ } elseif ($whence == SEEK_END) {
1688
+ $pos = $this->getid3->info['filesize'] + $bytes;
1689
+ }
1690
+ if (!getid3_lib::intValueSupported($pos)) {
1691
+ throw new getid3_exception('cannot fseek('.$pos.') because beyond PHP filesystem limit', 10);
1692
+ }
1693
+ }
1694
+ return fseek($this->getid3->fp, $bytes, $whence);
1695
+ }
1696
+
1697
+ protected function feof() {
1698
+ if ($this->data_string_flag) {
1699
+ return $this->data_string_position >= $this->data_string_length;
1700
+ }
1701
+ return feof($this->getid3->fp);
1702
+ }
1703
+
1704
+ final protected function isDependencyFor($module) {
1705
+ return $this->dependency_to == $module;
1706
+ }
1707
+
1708
+ protected function error($text) {
1709
+ $this->getid3->info['error'][] = $text;
1710
+
1711
+ return false;
1712
+ }
1713
+
1714
+ protected function warning($text) {
1715
+ return $this->getid3->warning($text);
1716
+ }
1717
+
1718
+ protected function notice($text) {
1719
+ // does nothing for now
1720
+ }
1721
+
1722
+ public function saveAttachment($name, $offset, $length, $image_mime=null) {
1723
+ try {
1724
+
1725
+ // do not extract at all
1726
+ if ($this->getid3->option_save_attachments === getID3::ATTACHMENTS_NONE) {
1727
+
1728
+ $attachment = null; // do not set any
1729
+
1730
+ // extract to return array
1731
+ } elseif ($this->getid3->option_save_attachments === getID3::ATTACHMENTS_INLINE) {
1732
+
1733
+ $this->fseek($offset);
1734
+ $attachment = $this->fread($length); // get whole data in one pass, till it is anyway stored in memory
1735
+ if ($attachment === false || strlen($attachment) != $length) {
1736
+ throw new Exception('failed to read attachment data');
1737
+ }
1738
+
1739
+ // assume directory path is given
1740
+ } else {
1741
+
1742
+ // set up destination path
1743
+ $dir = rtrim(str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $this->getid3->option_save_attachments), DIRECTORY_SEPARATOR);
1744
+ if (!is_dir($dir) || !is_writable($dir)) { // check supplied directory
1745
+ throw new Exception('supplied path ('.$dir.') does not exist, or is not writable');
1746
+ }
1747
+ $dest = $dir.DIRECTORY_SEPARATOR.$name.($image_mime ? '.'.getid3_lib::ImageExtFromMime($image_mime) : '');
1748
+
1749
+ // create dest file
1750
+ if (($fp_dest = fopen($dest, 'wb')) == false) {
1751
+ throw new Exception('failed to create file '.$dest);
1752
+ }
1753
+
1754
+ // copy data
1755
+ $this->fseek($offset);
1756
+ $buffersize = ($this->data_string_flag ? $length : $this->getid3->fread_buffer_size());
1757
+ $bytesleft = $length;
1758
+ while ($bytesleft > 0) {
1759
+ if (($buffer = $this->fread(min($buffersize, $bytesleft))) === false || ($byteswritten = fwrite($fp_dest, $buffer)) === false || ($byteswritten === 0)) {
1760
+ throw new Exception($buffer === false ? 'not enough data to read' : 'failed to write to destination file, may be not enough disk space');
1761
+ }
1762
+ $bytesleft -= $byteswritten;
1763
+ }
1764
+
1765
+ fclose($fp_dest);
1766
+ $attachment = $dest;
1767
+
1768
+ }
1769
+
1770
+ } catch (Exception $e) {
1771
+
1772
+ // close and remove dest file if created
1773
+ if (isset($fp_dest) && is_resource($fp_dest)) {
1774
+ fclose($fp_dest);
1775
+ unlink($dest);
1776
+ }
1777
+
1778
+ // do not set any is case of error
1779
+ $attachment = null;
1780
+ $this->warning('Failed to extract attachment '.$name.': '.$e->getMessage());
1781
+
1782
+ }
1783
+
1784
+ // seek to the end of attachment
1785
+ $this->fseek($offset + $length);
1786
+
1787
+ return $attachment;
1788
+ }
1789
+
1790
+ }
1791
+
1792
+
1793
+ class getid3_exception extends Exception
1794
+ {
1795
+ public $message;
1796
+ }