stump-cli 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }