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.
- checksums.yaml +8 -8
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +3 -16
- data/Rakefile +2 -0
- data/bin/stump-cli +58 -0
- data/lib/stump-cli/version.rb +3 -0
- data/lib/stump.rb +5 -0
- data/lib/wp/Movefile-example +62 -0
- data/lib/wp/README.md +25 -0
- data/lib/wp/index.php +17 -0
- data/lib/wp/license.txt +385 -0
- data/lib/wp/readme.html +96 -0
- data/lib/wp/wp-activate.php +131 -0
- data/lib/wp/wp-admin/about.php +193 -0
- data/lib/wp/wp-admin/admin-ajax.php +98 -0
- data/lib/wp/wp-admin/admin-footer.php +99 -0
- data/lib/wp/wp-admin/admin-functions.php +15 -0
- data/lib/wp/wp-admin/admin-header.php +243 -0
- data/lib/wp/wp-admin/admin-post.php +71 -0
- data/lib/wp/wp-admin/admin.php +347 -0
- data/lib/wp/wp-admin/async-upload.php +114 -0
- data/lib/wp/wp-admin/comment.php +299 -0
- data/lib/wp/wp-admin/credits.php +192 -0
- data/lib/wp/wp-admin/css/about-rtl.css +446 -0
- data/lib/wp/wp-admin/css/about.css +446 -0
- data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
- data/lib/wp/wp-admin/css/admin-menu.css +917 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/color-picker.css +127 -0
- data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
- data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
- data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
- data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
- data/lib/wp/wp-admin/css/common.css +3212 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-controls.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
- data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
- data/lib/wp/wp-admin/css/dashboard.css +1116 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
- data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
- data/lib/wp/wp-admin/css/edit.css +1501 -0
- data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
- data/lib/wp/wp-admin/css/farbtastic.css +41 -0
- data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
- data/lib/wp/wp-admin/css/forms.css +992 -0
- data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
- data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/ie.css +785 -0
- data/lib/wp/wp-admin/css/ie.min.css +1 -0
- data/lib/wp/wp-admin/css/install-rtl.css +389 -0
- data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/install.css +389 -0
- data/lib/wp/wp-admin/css/install.min.css +1 -0
- data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
- data/lib/wp/wp-admin/css/l10n.css +101 -0
- data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
- data/lib/wp/wp-admin/css/list-tables.css +1875 -0
- data/lib/wp/wp-admin/css/login-rtl.css +269 -0
- data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/login.css +269 -0
- data/lib/wp/wp-admin/css/login.min.css +1 -0
- data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
- data/lib/wp/wp-admin/css/media.css +1196 -0
- data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
- data/lib/wp/wp-admin/css/nav-menus.css +857 -0
- data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
- data/lib/wp/wp-admin/css/press-this.css +458 -0
- data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
- data/lib/wp/wp-admin/css/revisions.css +574 -0
- data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
- data/lib/wp/wp-admin/css/themes.css +1732 -0
- data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
- data/lib/wp/wp-admin/css/widgets.css +577 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/wp-admin.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
- data/lib/wp/wp-admin/custom-background.php +482 -0
- data/lib/wp/wp-admin/custom-header.php +1366 -0
- data/lib/wp/wp-admin/customize.php +278 -0
- data/lib/wp/wp-admin/edit-comments.php +254 -0
- data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
- data/lib/wp/wp-admin/edit-form-comment.php +160 -0
- data/lib/wp/wp-admin/edit-link-form.php +150 -0
- data/lib/wp/wp-admin/edit-tag-form.php +204 -0
- data/lib/wp/wp-admin/edit-tags.php +591 -0
- data/lib/wp/wp-admin/edit.php +330 -0
- data/lib/wp/wp-admin/export.php +243 -0
- data/lib/wp/wp-admin/freedoms.php +57 -0
- data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-center.png +0 -0
- data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-left.png +0 -0
- data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-none.png +0 -0
- data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-right.png +0 -0
- data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
- data/lib/wp/wp-admin/images/arrows.png +0 -0
- data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
- data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
- data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
- data/lib/wp/wp-admin/images/date-button.gif +0 -0
- data/lib/wp/wp-admin/images/generic.png +0 -0
- data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
- data/lib/wp/wp-admin/images/icons32.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
- data/lib/wp/wp-admin/images/list-2x.png +0 -0
- data/lib/wp/wp-admin/images/list.png +0 -0
- data/lib/wp/wp-admin/images/loading.gif +0 -0
- data/lib/wp/wp-admin/images/marker.png +0 -0
- data/lib/wp/wp-admin/images/mask.png +0 -0
- data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
- data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
- data/lib/wp/wp-admin/images/media-button.png +0 -0
- data/lib/wp/wp-admin/images/menu-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs.png +0 -0
- data/lib/wp/wp-admin/images/menu.png +0 -0
- data/lib/wp/wp-admin/images/no.png +0 -0
- data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32.png +0 -0
- data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
- data/lib/wp/wp-admin/images/resize.gif +0 -0
- data/lib/wp/wp-admin/images/se.png +0 -0
- data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
- data/lib/wp/wp-admin/images/sort.gif +0 -0
- data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-admin/images/spinner.gif +0 -0
- data/lib/wp/wp-admin/images/stars-2x.png +0 -0
- data/lib/wp/wp-admin/images/stars.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
- data/lib/wp/wp-admin/images/wheel.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
- data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
- data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
- data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
- data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
- data/lib/wp/wp-admin/images/xit.gif +0 -0
- data/lib/wp/wp-admin/images/yes.png +0 -0
- data/lib/wp/wp-admin/import.php +132 -0
- data/lib/wp/wp-admin/includes/admin.php +74 -0
- data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
- data/lib/wp/wp-admin/includes/bookmark.php +305 -0
- data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
- data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
- data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
- data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
- data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
- data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
- data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
- data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
- data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
- data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
- data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
- data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
- data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
- data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
- data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
- data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/comment.php +171 -0
- data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
- data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
- data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
- data/lib/wp/wp-admin/includes/export.php +508 -0
- data/lib/wp/wp-admin/includes/file.php +1152 -0
- data/lib/wp/wp-admin/includes/image-edit.php +828 -0
- data/lib/wp/wp-admin/includes/image.php +598 -0
- data/lib/wp/wp-admin/includes/import.php +206 -0
- data/lib/wp/wp-admin/includes/list-table.php +113 -0
- data/lib/wp/wp-admin/includes/media.php +3012 -0
- data/lib/wp/wp-admin/includes/menu.php +322 -0
- data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
- data/lib/wp/wp-admin/includes/misc.php +845 -0
- data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
- data/lib/wp/wp-admin/includes/ms.php +814 -0
- data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
- data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
- data/lib/wp/wp-admin/includes/plugin.php +1899 -0
- data/lib/wp/wp-admin/includes/post.php +1661 -0
- data/lib/wp/wp-admin/includes/revision.php +228 -0
- data/lib/wp/wp-admin/includes/schema.php +1038 -0
- data/lib/wp/wp-admin/includes/screen.php +1179 -0
- data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
- data/lib/wp/wp-admin/includes/template.php +2157 -0
- data/lib/wp/wp-admin/includes/theme-install.php +205 -0
- data/lib/wp/wp-admin/includes/theme.php +474 -0
- data/lib/wp/wp-admin/includes/translation-install.php +240 -0
- data/lib/wp/wp-admin/includes/update-core.php +1186 -0
- data/lib/wp/wp-admin/includes/update.php +432 -0
- data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
- data/lib/wp/wp-admin/includes/user.php +442 -0
- data/lib/wp/wp-admin/includes/widgets.php +245 -0
- data/lib/wp/wp-admin/index.php +131 -0
- data/lib/wp/wp-admin/install-helper.php +199 -0
- data/lib/wp/wp-admin/install.php +305 -0
- data/lib/wp/wp-admin/js/accordion.js +143 -0
- data/lib/wp/wp-admin/js/accordion.min.js +1 -0
- data/lib/wp/wp-admin/js/color-picker.js +155 -0
- data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
- data/lib/wp/wp-admin/js/comment.js +50 -0
- data/lib/wp/wp-admin/js/comment.min.js +1 -0
- data/lib/wp/wp-admin/js/common.js +804 -0
- data/lib/wp/wp-admin/js/common.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-background.js +75 -0
- data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-header.js +61 -0
- data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
- data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
- data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
- data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/dashboard.js +190 -0
- data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
- data/lib/wp/wp-admin/js/edit-comments.js +625 -0
- data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
- data/lib/wp/wp-admin/js/editor-expand.js +705 -0
- data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
- data/lib/wp/wp-admin/js/editor.js +324 -0
- data/lib/wp/wp-admin/js/editor.min.js +1 -0
- data/lib/wp/wp-admin/js/farbtastic.js +276 -0
- data/lib/wp/wp-admin/js/gallery.js +237 -0
- data/lib/wp/wp-admin/js/gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/image-edit.js +633 -0
- data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
- data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
- data/lib/wp/wp-admin/js/iris.min.js +4 -0
- data/lib/wp/wp-admin/js/language-chooser.js +26 -0
- data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
- data/lib/wp/wp-admin/js/link.js +69 -0
- data/lib/wp/wp-admin/js/link.min.js +1 -0
- data/lib/wp/wp-admin/js/media-gallery.js +26 -0
- data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/media-upload.js +69 -0
- data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
- data/lib/wp/wp-admin/js/media.js +111 -0
- data/lib/wp/wp-admin/js/media.min.js +1 -0
- data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
- data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
- data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
- data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
- data/lib/wp/wp-admin/js/plugin-install.js +76 -0
- data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
- data/lib/wp/wp-admin/js/post.js +1094 -0
- data/lib/wp/wp-admin/js/post.min.js +1 -0
- data/lib/wp/wp-admin/js/postbox.js +199 -0
- data/lib/wp/wp-admin/js/postbox.min.js +1 -0
- data/lib/wp/wp-admin/js/revisions.js +1110 -0
- data/lib/wp/wp-admin/js/revisions.min.js +1 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
- data/lib/wp/wp-admin/js/svg-painter.js +240 -0
- data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
- data/lib/wp/wp-admin/js/tags.js +72 -0
- data/lib/wp/wp-admin/js/tags.min.js +1 -0
- data/lib/wp/wp-admin/js/theme.js +1691 -0
- data/lib/wp/wp-admin/js/theme.min.js +1 -0
- data/lib/wp/wp-admin/js/updates.js +65 -0
- data/lib/wp/wp-admin/js/updates.min.js +1 -0
- data/lib/wp/wp-admin/js/user-profile.js +127 -0
- data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
- data/lib/wp/wp-admin/js/user-suggest.js +30 -0
- data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
- data/lib/wp/wp-admin/js/widgets.js +494 -0
- data/lib/wp/wp-admin/js/widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/word-count.js +44 -0
- data/lib/wp/wp-admin/js/word-count.min.js +1 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
- data/lib/wp/wp-admin/js/xfn.js +17 -0
- data/lib/wp/wp-admin/js/xfn.min.js +1 -0
- data/lib/wp/wp-admin/link-add.php +29 -0
- data/lib/wp/wp-admin/link-manager.php +99 -0
- data/lib/wp/wp-admin/link-parse-opml.php +84 -0
- data/lib/wp/wp-admin/link.php +117 -0
- data/lib/wp/wp-admin/load-scripts.php +162 -0
- data/lib/wp/wp-admin/load-styles.php +153 -0
- data/lib/wp/wp-admin/maint/repair.php +124 -0
- data/lib/wp/wp-admin/media-new.php +84 -0
- data/lib/wp/wp-admin/media-upload.php +100 -0
- data/lib/wp/wp-admin/media.php +146 -0
- data/lib/wp/wp-admin/menu-header.php +227 -0
- data/lib/wp/wp-admin/menu.php +255 -0
- data/lib/wp/wp-admin/moderation.php +12 -0
- data/lib/wp/wp-admin/ms-admin.php +13 -0
- data/lib/wp/wp-admin/ms-delete-site.php +91 -0
- data/lib/wp/wp-admin/ms-edit.php +13 -0
- data/lib/wp/wp-admin/ms-options.php +12 -0
- data/lib/wp/wp-admin/ms-sites.php +13 -0
- data/lib/wp/wp-admin/ms-themes.php +13 -0
- data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
- data/lib/wp/wp-admin/ms-users.php +13 -0
- data/lib/wp/wp-admin/my-sites.php +145 -0
- data/lib/wp/wp-admin/nav-menus.php +798 -0
- data/lib/wp/wp-admin/network.php +561 -0
- data/lib/wp/wp-admin/network/about.php +16 -0
- data/lib/wp/wp-admin/network/admin.php +32 -0
- data/lib/wp/wp-admin/network/credits.php +16 -0
- data/lib/wp/wp-admin/network/edit.php +42 -0
- data/lib/wp/wp-admin/network/freedoms.php +16 -0
- data/lib/wp/wp-admin/network/index.php +79 -0
- data/lib/wp/wp-admin/network/menu.php +63 -0
- data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
- data/lib/wp/wp-admin/network/plugin-install.php +19 -0
- data/lib/wp/wp-admin/network/plugins.php +16 -0
- data/lib/wp/wp-admin/network/profile.php +16 -0
- data/lib/wp/wp-admin/network/settings.php +347 -0
- data/lib/wp/wp-admin/network/setup.php +16 -0
- data/lib/wp/wp-admin/network/site-info.php +178 -0
- data/lib/wp/wp-admin/network/site-new.php +153 -0
- data/lib/wp/wp-admin/network/site-settings.php +173 -0
- data/lib/wp/wp-admin/network/site-themes.php +185 -0
- data/lib/wp/wp-admin/network/site-users.php +319 -0
- data/lib/wp/wp-admin/network/sites.php +275 -0
- data/lib/wp/wp-admin/network/theme-editor.php +16 -0
- data/lib/wp/wp-admin/network/theme-install.php +19 -0
- data/lib/wp/wp-admin/network/themes.php +291 -0
- data/lib/wp/wp-admin/network/update-core.php +16 -0
- data/lib/wp/wp-admin/network/update.php +19 -0
- data/lib/wp/wp-admin/network/upgrade.php +120 -0
- data/lib/wp/wp-admin/network/user-edit.php +16 -0
- data/lib/wp/wp-admin/network/user-new.php +106 -0
- data/lib/wp/wp-admin/network/users.php +296 -0
- data/lib/wp/wp-admin/options-discussion.php +273 -0
- data/lib/wp/wp-admin/options-general.php +355 -0
- data/lib/wp/wp-admin/options-head.php +18 -0
- data/lib/wp/wp-admin/options-media.php +136 -0
- data/lib/wp/wp-admin/options-permalink.php +289 -0
- data/lib/wp/wp-admin/options-reading.php +184 -0
- data/lib/wp/wp-admin/options-writing.php +194 -0
- data/lib/wp/wp-admin/options.php +265 -0
- data/lib/wp/wp-admin/plugin-editor.php +279 -0
- data/lib/wp/wp-admin/plugin-install.php +134 -0
- data/lib/wp/wp-admin/plugins.php +474 -0
- data/lib/wp/wp-admin/post-new.php +74 -0
- data/lib/wp/wp-admin/post.php +318 -0
- data/lib/wp/wp-admin/press-this.php +691 -0
- data/lib/wp/wp-admin/profile.php +18 -0
- data/lib/wp/wp-admin/revision.php +221 -0
- data/lib/wp/wp-admin/setup-config.php +345 -0
- data/lib/wp/wp-admin/theme-editor.php +243 -0
- data/lib/wp/wp-admin/theme-install.php +278 -0
- data/lib/wp/wp-admin/themes.php +374 -0
- data/lib/wp/wp-admin/tools.php +75 -0
- data/lib/wp/wp-admin/update-core.php +653 -0
- data/lib/wp/wp-admin/update.php +272 -0
- data/lib/wp/wp-admin/upgrade-functions.php +12 -0
- data/lib/wp/wp-admin/upgrade.php +116 -0
- data/lib/wp/wp-admin/upload.php +292 -0
- data/lib/wp/wp-admin/user-edit.php +557 -0
- data/lib/wp/wp-admin/user-new.php +439 -0
- data/lib/wp/wp-admin/user/about.php +13 -0
- data/lib/wp/wp-admin/user/admin.php +32 -0
- data/lib/wp/wp-admin/user/credits.php +13 -0
- data/lib/wp/wp-admin/user/freedoms.php +13 -0
- data/lib/wp/wp-admin/user/index.php +12 -0
- data/lib/wp/wp-admin/user/menu.php +22 -0
- data/lib/wp/wp-admin/user/profile.php +12 -0
- data/lib/wp/wp-admin/user/user-edit.php +12 -0
- data/lib/wp/wp-admin/users.php +460 -0
- data/lib/wp/wp-admin/widgets.php +442 -0
- data/lib/wp/wp-blog-header.php +18 -0
- data/lib/wp/wp-comments-post.php +164 -0
- data/lib/wp/wp-config-sample.php +80 -0
- data/lib/wp/wp-content/index.php +2 -0
- data/lib/wp/wp-content/plugins/hello.php +82 -0
- data/lib/wp/wp-content/plugins/index.php +2 -0
- data/lib/wp/wp-content/themes/index.php +2 -0
- data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
- data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
- data/lib/wp/wp-content/themes/stump/404.php +13 -0
- data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
- data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
- data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
- data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
- data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
- data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
- data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/base.php +36 -0
- data/lib/wp/wp-content/themes/stump/functions.php +19 -0
- data/lib/wp/wp-content/themes/stump/index.php +21 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
- data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
- data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
- data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
- data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
- data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
- data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
- data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
- data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
- data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
- data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
- data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
- data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
- data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
- data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
- data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
- data/lib/wp/wp-content/themes/stump/package.json +32 -0
- data/lib/wp/wp-content/themes/stump/page.php +2 -0
- data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/stump/single.php +1 -0
- data/lib/wp/wp-content/themes/stump/style.css +11 -0
- data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
- data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
- data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
- data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
- data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
- data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
- data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
- data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
- data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
- data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
- data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
- data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
- data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
- data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
- data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
- data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
- data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
- data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
- data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
- data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
- data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
- data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
- data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
- data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
- data/lib/wp/wp-cron.php +115 -0
- data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
- data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
- data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
- data/lib/wp/wp-includes/ID3/license.txt +29 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
- data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
- data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
- data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
- data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
- data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
- data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
- data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
- data/lib/wp/wp-includes/ID3/readme.txt +604 -0
- data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
- data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
- data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
- data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
- data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
- data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
- data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
- data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
- data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
- data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
- data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
- data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
- data/lib/wp/wp-includes/SimplePie/File.php +292 -0
- data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
- data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
- data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
- data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
- data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
- data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
- data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
- data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
- data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
- data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
- data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
- data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
- data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
- data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
- data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
- data/lib/wp/wp-includes/Text/Diff.php +450 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
- data/lib/wp/wp-includes/admin-bar.php +870 -0
- data/lib/wp/wp-includes/atomlib.php +352 -0
- data/lib/wp/wp-includes/author-template.php +471 -0
- data/lib/wp/wp-includes/bookmark-template.php +298 -0
- data/lib/wp/wp-includes/bookmark.php +416 -0
- data/lib/wp/wp-includes/cache.php +704 -0
- data/lib/wp/wp-includes/canonical.php +586 -0
- data/lib/wp/wp-includes/capabilities.php +1539 -0
- data/lib/wp/wp-includes/category-template.php +1407 -0
- data/lib/wp/wp-includes/category.php +343 -0
- data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
- data/lib/wp/wp-includes/class-IXR.php +1100 -0
- data/lib/wp/wp-includes/class-feed.php +140 -0
- data/lib/wp/wp-includes/class-http.php +2245 -0
- data/lib/wp/wp-includes/class-json.php +936 -0
- data/lib/wp/wp-includes/class-oembed.php +579 -0
- data/lib/wp/wp-includes/class-phpass.php +260 -0
- data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
- data/lib/wp/wp-includes/class-pop3.php +652 -0
- data/lib/wp/wp-includes/class-simplepie.php +3119 -0
- data/lib/wp/wp-includes/class-smtp.php +943 -0
- data/lib/wp/wp-includes/class-snoopy.php +1256 -0
- data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
- data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
- data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
- data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
- data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
- data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
- data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
- data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
- data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
- data/lib/wp/wp-includes/class-wp-embed.php +373 -0
- data/lib/wp/wp-includes/class-wp-error.php +276 -0
- data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
- data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
- data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
- data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
- data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
- data/lib/wp/wp-includes/class-wp-walker.php +471 -0
- data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
- data/lib/wp/wp-includes/class-wp.php +782 -0
- data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
- data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
- data/lib/wp/wp-includes/class.wp-styles.php +210 -0
- data/lib/wp/wp-includes/comment-template.php +2286 -0
- data/lib/wp/wp-includes/comment.php +2606 -0
- data/lib/wp/wp-includes/compat.php +125 -0
- data/lib/wp/wp-includes/cron.php +469 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
- data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons.css +364 -0
- data/lib/wp/wp-includes/css/buttons.min.css +1 -0
- data/lib/wp/wp-includes/css/dashicons.css +893 -0
- data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
- data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
- data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/editor.css +1993 -0
- data/lib/wp/wp-includes/css/editor.min.css +1 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
- data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
- data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/media-views.css +2568 -0
- data/lib/wp/wp-includes/css/media-views.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
- data/lib/wp/wp-includes/date.php +475 -0
- data/lib/wp/wp-includes/default-constants.php +323 -0
- data/lib/wp/wp-includes/default-filters.php +307 -0
- data/lib/wp/wp-includes/default-widgets.php +1423 -0
- data/lib/wp/wp-includes/deprecated.php +3501 -0
- data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
- data/lib/wp/wp-includes/feed-atom.php +87 -0
- data/lib/wp/wp-includes/feed-rdf.php +81 -0
- data/lib/wp/wp-includes/feed-rss.php +46 -0
- data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
- data/lib/wp/wp-includes/feed-rss2.php +115 -0
- data/lib/wp/wp-includes/feed.php +659 -0
- data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
- data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
- data/lib/wp/wp-includes/formatting.php +4006 -0
- data/lib/wp/wp-includes/functions.php +4631 -0
- data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
- data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
- data/lib/wp/wp-includes/general-template.php +2982 -0
- data/lib/wp/wp-includes/http.php +551 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
- data/lib/wp/wp-includes/images/blank.gif +0 -0
- data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
- data/lib/wp/wp-includes/images/crystal/code.png +0 -0
- data/lib/wp/wp-includes/images/crystal/default.png +0 -0
- data/lib/wp/wp-includes/images/crystal/document.png +0 -0
- data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
- data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/crystal/text.png +0 -0
- data/lib/wp/wp-includes/images/crystal/video.png +0 -0
- data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
- data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
- data/lib/wp/wp-includes/images/media/archive.png +0 -0
- data/lib/wp/wp-includes/images/media/audio.png +0 -0
- data/lib/wp/wp-includes/images/media/code.png +0 -0
- data/lib/wp/wp-includes/images/media/default.png +0 -0
- data/lib/wp/wp-includes/images/media/document.png +0 -0
- data/lib/wp/wp-includes/images/media/interactive.png +0 -0
- data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/media/text.png +0 -0
- data/lib/wp/wp-includes/images/media/video.png +0 -0
- data/lib/wp/wp-includes/images/rss-2x.png +0 -0
- data/lib/wp/wp-includes/images/rss.png +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
- data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-includes/images/spinner.gif +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
- data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
- data/lib/wp/wp-includes/images/wpicons.png +0 -0
- data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
- data/lib/wp/wp-includes/images/wpspin.gif +0 -0
- data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
- data/lib/wp/wp-includes/images/xit.gif +0 -0
- data/lib/wp/wp-includes/js/admin-bar.js +365 -0
- data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
- data/lib/wp/wp-includes/js/autosave.js +589 -0
- data/lib/wp/wp-includes/js/autosave.min.js +1 -0
- data/lib/wp/wp-includes/js/backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/colorpicker.js +707 -0
- data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
- data/lib/wp/wp-includes/js/comment-reply.js +47 -0
- data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
- data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
- data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
- data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
- data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
- data/lib/wp/wp-includes/js/customize-base.js +617 -0
- data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-loader.js +246 -0
- data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-models.js +247 -0
- data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview.js +154 -0
- data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-views.js +231 -0
- data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
- data/lib/wp/wp-includes/js/heartbeat.js +738 -0
- data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
- data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
- data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
- data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
- data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
- data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
- data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
- data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
- data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
- data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
- data/lib/wp/wp-includes/js/json2.js +480 -0
- data/lib/wp/wp-includes/js/json2.min.js +1 -0
- data/lib/wp/wp-includes/js/masonry.min.js +1 -0
- data/lib/wp/wp-includes/js/mce-view.js +829 -0
- data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
- data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
- data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
- data/lib/wp/wp-includes/js/media-editor.js +1114 -0
- data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
- data/lib/wp/wp-includes/js/media-grid.js +732 -0
- data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
- data/lib/wp/wp-includes/js/media-models.js +1362 -0
- data/lib/wp/wp-includes/js/media-models.min.js +1 -0
- data/lib/wp/wp-includes/js/media-views.js +7484 -0
- data/lib/wp/wp-includes/js/media-views.min.js +3 -0
- data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
- data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
- data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
- data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
- data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
- data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
- data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
- data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
- data/lib/wp/wp-includes/js/quicktags.js +652 -0
- data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
- data/lib/wp/wp-includes/js/shortcode.js +356 -0
- data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
- data/lib/wp/wp-includes/js/swfobject.js +4 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
- data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
- data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
- data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
- data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
- data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
- data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
- data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
- data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
- data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
- data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
- data/lib/wp/wp-includes/js/tw-sack.js +193 -0
- data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
- data/lib/wp/wp-includes/js/underscore.min.js +1 -0
- data/lib/wp/wp-includes/js/utils.js +197 -0
- data/lib/wp/wp-includes/js/utils.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
- data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
- data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-lists.js +469 -0
- data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
- data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-util.js +106 -0
- data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
- data/lib/wp/wp-includes/js/wpdialog.js +19 -0
- data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
- data/lib/wp/wp-includes/js/wplink.js +615 -0
- data/lib/wp/wp-includes/js/wplink.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
- data/lib/wp/wp-includes/kses.php +1526 -0
- data/lib/wp/wp-includes/l10n.php +908 -0
- data/lib/wp/wp-includes/link-template.php +3141 -0
- data/lib/wp/wp-includes/load.php +828 -0
- data/lib/wp/wp-includes/locale.php +368 -0
- data/lib/wp/wp-includes/media-template.php +1235 -0
- data/lib/wp/wp-includes/media.php +3329 -0
- data/lib/wp/wp-includes/meta.php +1221 -0
- data/lib/wp/wp-includes/ms-blogs.php +939 -0
- data/lib/wp/wp-includes/ms-default-constants.php +153 -0
- data/lib/wp/wp-includes/ms-default-filters.php +82 -0
- data/lib/wp/wp-includes/ms-deprecated.php +347 -0
- data/lib/wp/wp-includes/ms-files.php +82 -0
- data/lib/wp/wp-includes/ms-functions.php +2476 -0
- data/lib/wp/wp-includes/ms-load.php +458 -0
- data/lib/wp/wp-includes/ms-settings.php +213 -0
- data/lib/wp/wp-includes/nav-menu-template.php +678 -0
- data/lib/wp/wp-includes/nav-menu.php +895 -0
- data/lib/wp/wp-includes/option.php +1440 -0
- data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
- data/lib/wp/wp-includes/pluggable.php +2283 -0
- data/lib/wp/wp-includes/plugin.php +920 -0
- data/lib/wp/wp-includes/pomo/entry.php +78 -0
- data/lib/wp/wp-includes/pomo/mo.php +262 -0
- data/lib/wp/wp-includes/pomo/po.php +384 -0
- data/lib/wp/wp-includes/pomo/streams.php +209 -0
- data/lib/wp/wp-includes/pomo/translations.php +275 -0
- data/lib/wp/wp-includes/post-formats.php +243 -0
- data/lib/wp/wp-includes/post-template.php +1766 -0
- data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
- data/lib/wp/wp-includes/post.php +5842 -0
- data/lib/wp/wp-includes/query.php +4666 -0
- data/lib/wp/wp-includes/registration-functions.php +7 -0
- data/lib/wp/wp-includes/registration.php +7 -0
- data/lib/wp/wp-includes/revision.php +657 -0
- data/lib/wp/wp-includes/rewrite.php +2180 -0
- data/lib/wp/wp-includes/rss-functions.php +9 -0
- data/lib/wp/wp-includes/rss.php +936 -0
- data/lib/wp/wp-includes/script-loader.php +1045 -0
- data/lib/wp/wp-includes/session.php +430 -0
- data/lib/wp/wp-includes/shortcodes.php +410 -0
- data/lib/wp/wp-includes/taxonomy.php +4006 -0
- data/lib/wp/wp-includes/template-loader.php +76 -0
- data/lib/wp/wp-includes/template.php +505 -0
- data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
- data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
- data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
- data/lib/wp/wp-includes/theme-compat/header.php +49 -0
- data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
- data/lib/wp/wp-includes/theme.php +2014 -0
- data/lib/wp/wp-includes/update.php +674 -0
- data/lib/wp/wp-includes/user.php +2292 -0
- data/lib/wp/wp-includes/vars.php +144 -0
- data/lib/wp/wp-includes/version.php +35 -0
- data/lib/wp/wp-includes/widgets.php +1514 -0
- data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
- data/lib/wp/wp-includes/wp-db.php +2190 -0
- data/lib/wp/wp-includes/wp-diff.php +523 -0
- data/lib/wp/wp-links-opml.php +80 -0
- data/lib/wp/wp-load.php +73 -0
- data/lib/wp/wp-login.php +952 -0
- data/lib/wp/wp-mail.php +260 -0
- data/lib/wp/wp-settings.php +374 -0
- data/lib/wp/wp-signup.php +749 -0
- data/lib/wp/wp-trackback.php +127 -0
- data/lib/wp/xmlrpc.php +101 -0
- data/stump-cli.gemspec +26 -0
- 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
|
+
}
|