stump-cli 0.1.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/README.md +9 -5
- data/bin/stump-cli +77 -27
- data/lib/{wp/.gitignore → .gitignore.erb} +2 -2
- data/lib/stump-cli/version.rb +1 -1
- data/lib/style.erb +11 -0
- data/stump-cli.gemspec +2 -0
- metadata +56 -1268
- data/lib/wp/Movefile-example +0 -62
- data/lib/wp/README.md +0 -25
- data/lib/wp/index.php +0 -17
- data/lib/wp/license.txt +0 -385
- data/lib/wp/readme.html +0 -96
- data/lib/wp/wp-activate.php +0 -131
- data/lib/wp/wp-admin/about.php +0 -193
- data/lib/wp/wp-admin/admin-ajax.php +0 -98
- data/lib/wp/wp-admin/admin-footer.php +0 -99
- data/lib/wp/wp-admin/admin-functions.php +0 -15
- data/lib/wp/wp-admin/admin-header.php +0 -243
- data/lib/wp/wp-admin/admin-post.php +0 -71
- data/lib/wp/wp-admin/admin.php +0 -347
- data/lib/wp/wp-admin/async-upload.php +0 -114
- data/lib/wp/wp-admin/comment.php +0 -299
- data/lib/wp/wp-admin/credits.php +0 -192
- data/lib/wp/wp-admin/css/about-rtl.css +0 -446
- data/lib/wp/wp-admin/css/about.css +0 -446
- data/lib/wp/wp-admin/css/admin-menu-rtl.css +0 -917
- data/lib/wp/wp-admin/css/admin-menu.css +0 -917
- data/lib/wp/wp-admin/css/color-picker-rtl.css +0 -127
- data/lib/wp/wp-admin/css/color-picker-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/color-picker.css +0 -127
- data/lib/wp/wp-admin/css/color-picker.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/_admin.scss +0 -525
- data/lib/wp/wp-admin/css/colors/_mixins.scss +0 -43
- data/lib/wp/wp-admin/css/colors/_variables.scss +0 -58
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/blue/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/blue/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/blue/colors.scss +0 -11
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/coffee/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/coffee/colors.scss +0 -7
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +0 -8
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +0 -349
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/light/colors.css +0 -349
- data/lib/wp/wp-admin/css/colors/light/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/light/colors.scss +0 -38
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/midnight/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/midnight/colors.scss +0 -5
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/ocean/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/ocean/colors.scss +0 -8
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +0 -341
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/sunrise/colors.css +0 -341
- data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +0 -1
- data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +0 -6
- data/lib/wp/wp-admin/css/common-rtl.css +0 -3212
- data/lib/wp/wp-admin/css/common.css +0 -3212
- data/lib/wp/wp-admin/css/customize-controls-rtl.css +0 -889
- data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/customize-controls.css +0 -889
- data/lib/wp/wp-admin/css/customize-controls.min.css +0 -1
- data/lib/wp/wp-admin/css/customize-widgets-rtl.css +0 -603
- data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/customize-widgets.css +0 -603
- data/lib/wp/wp-admin/css/customize-widgets.min.css +0 -1
- data/lib/wp/wp-admin/css/dashboard-rtl.css +0 -1116
- data/lib/wp/wp-admin/css/dashboard.css +0 -1116
- data/lib/wp/wp-admin/css/deprecated-media-rtl.css +0 -371
- data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/deprecated-media.css +0 -371
- data/lib/wp/wp-admin/css/deprecated-media.min.css +0 -1
- data/lib/wp/wp-admin/css/edit-rtl.css +0 -1501
- data/lib/wp/wp-admin/css/edit.css +0 -1501
- data/lib/wp/wp-admin/css/farbtastic-rtl.css +0 -41
- data/lib/wp/wp-admin/css/farbtastic.css +0 -41
- data/lib/wp/wp-admin/css/forms-rtl.css +0 -992
- data/lib/wp/wp-admin/css/forms.css +0 -992
- data/lib/wp/wp-admin/css/ie-rtl.css +0 -785
- data/lib/wp/wp-admin/css/ie-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/ie.css +0 -785
- data/lib/wp/wp-admin/css/ie.min.css +0 -1
- data/lib/wp/wp-admin/css/install-rtl.css +0 -389
- data/lib/wp/wp-admin/css/install-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/install.css +0 -389
- data/lib/wp/wp-admin/css/install.min.css +0 -1
- data/lib/wp/wp-admin/css/l10n-rtl.css +0 -101
- data/lib/wp/wp-admin/css/l10n.css +0 -101
- data/lib/wp/wp-admin/css/list-tables-rtl.css +0 -1875
- data/lib/wp/wp-admin/css/list-tables.css +0 -1875
- data/lib/wp/wp-admin/css/login-rtl.css +0 -269
- data/lib/wp/wp-admin/css/login-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/login.css +0 -269
- data/lib/wp/wp-admin/css/login.min.css +0 -1
- data/lib/wp/wp-admin/css/media-rtl.css +0 -1196
- data/lib/wp/wp-admin/css/media.css +0 -1196
- data/lib/wp/wp-admin/css/nav-menus-rtl.css +0 -857
- data/lib/wp/wp-admin/css/nav-menus.css +0 -857
- data/lib/wp/wp-admin/css/press-this-rtl.css +0 -458
- data/lib/wp/wp-admin/css/press-this.css +0 -458
- data/lib/wp/wp-admin/css/revisions-rtl.css +0 -574
- data/lib/wp/wp-admin/css/revisions.css +0 -574
- data/lib/wp/wp-admin/css/themes-rtl.css +0 -1732
- data/lib/wp/wp-admin/css/themes.css +0 -1732
- data/lib/wp/wp-admin/css/widgets-rtl.css +0 -577
- data/lib/wp/wp-admin/css/widgets.css +0 -577
- data/lib/wp/wp-admin/css/wp-admin-rtl.css +0 -14
- data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +0 -1
- data/lib/wp/wp-admin/css/wp-admin.css +0 -14
- data/lib/wp/wp-admin/css/wp-admin.min.css +0 -1
- data/lib/wp/wp-admin/custom-background.php +0 -482
- data/lib/wp/wp-admin/custom-header.php +0 -1366
- data/lib/wp/wp-admin/customize.php +0 -278
- data/lib/wp/wp-admin/edit-comments.php +0 -254
- data/lib/wp/wp-admin/edit-form-advanced.php +0 -636
- data/lib/wp/wp-admin/edit-form-comment.php +0 -160
- data/lib/wp/wp-admin/edit-link-form.php +0 -150
- data/lib/wp/wp-admin/edit-tag-form.php +0 -204
- data/lib/wp/wp-admin/edit-tags.php +0 -591
- data/lib/wp/wp-admin/edit.php +0 -330
- data/lib/wp/wp-admin/export.php +0 -243
- data/lib/wp/wp-admin/freedoms.php +0 -57
- 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 +0 -1
- data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo.svg +0 -1
- 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 +0 -132
- data/lib/wp/wp-admin/includes/admin.php +0 -74
- data/lib/wp/wp-admin/includes/ajax-actions.php +0 -2762
- data/lib/wp/wp-admin/includes/bookmark.php +0 -305
- data/lib/wp/wp-admin/includes/class-ftp-pure.php +0 -190
- data/lib/wp/wp-admin/includes/class-ftp-sockets.php +0 -250
- data/lib/wp/wp-admin/includes/class-ftp.php +0 -907
- data/lib/wp/wp-admin/includes/class-pclzip.php +0 -5687
- data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +0 -637
- data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +0 -815
- data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +0 -384
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +0 -415
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +0 -352
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +0 -392
- data/lib/wp/wp-admin/includes/class-wp-importer.php +0 -302
- data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +0 -207
- data/lib/wp/wp-admin/includes/class-wp-list-table.php +0 -1080
- data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +0 -574
- data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +0 -402
- data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +0 -459
- data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +0 -303
- data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +0 -490
- data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +0 -605
- data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +0 -1306
- data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +0 -466
- data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +0 -431
- data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +0 -279
- data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +0 -767
- data/lib/wp/wp-admin/includes/class-wp-upgrader.php +0 -2676
- data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +0 -459
- data/lib/wp/wp-admin/includes/comment.php +0 -171
- data/lib/wp/wp-admin/includes/continents-cities.php +0 -493
- data/lib/wp/wp-admin/includes/dashboard.php +0 -1333
- data/lib/wp/wp-admin/includes/deprecated.php +0 -1190
- data/lib/wp/wp-admin/includes/export.php +0 -508
- data/lib/wp/wp-admin/includes/file.php +0 -1152
- data/lib/wp/wp-admin/includes/image-edit.php +0 -828
- data/lib/wp/wp-admin/includes/image.php +0 -598
- data/lib/wp/wp-admin/includes/import.php +0 -206
- data/lib/wp/wp-admin/includes/list-table.php +0 -113
- data/lib/wp/wp-admin/includes/media.php +0 -3012
- data/lib/wp/wp-admin/includes/menu.php +0 -322
- data/lib/wp/wp-admin/includes/meta-boxes.php +0 -1119
- data/lib/wp/wp-admin/includes/misc.php +0 -845
- data/lib/wp/wp-admin/includes/ms-deprecated.php +0 -78
- data/lib/wp/wp-admin/includes/ms.php +0 -814
- data/lib/wp/wp-admin/includes/nav-menu.php +0 -1328
- data/lib/wp/wp-admin/includes/plugin-install.php +0 -550
- data/lib/wp/wp-admin/includes/plugin.php +0 -1899
- data/lib/wp/wp-admin/includes/post.php +0 -1661
- data/lib/wp/wp-admin/includes/revision.php +0 -228
- data/lib/wp/wp-admin/includes/schema.php +0 -1038
- data/lib/wp/wp-admin/includes/screen.php +0 -1179
- data/lib/wp/wp-admin/includes/taxonomy.php +0 -284
- data/lib/wp/wp-admin/includes/template.php +0 -2157
- data/lib/wp/wp-admin/includes/theme-install.php +0 -205
- data/lib/wp/wp-admin/includes/theme.php +0 -474
- data/lib/wp/wp-admin/includes/translation-install.php +0 -240
- data/lib/wp/wp-admin/includes/update-core.php +0 -1186
- data/lib/wp/wp-admin/includes/update.php +0 -432
- data/lib/wp/wp-admin/includes/upgrade.php +0 -2218
- data/lib/wp/wp-admin/includes/user.php +0 -442
- data/lib/wp/wp-admin/includes/widgets.php +0 -245
- data/lib/wp/wp-admin/index.php +0 -131
- data/lib/wp/wp-admin/install-helper.php +0 -199
- data/lib/wp/wp-admin/install.php +0 -305
- data/lib/wp/wp-admin/js/accordion.js +0 -143
- data/lib/wp/wp-admin/js/accordion.min.js +0 -1
- data/lib/wp/wp-admin/js/color-picker.js +0 -155
- data/lib/wp/wp-admin/js/color-picker.min.js +0 -1
- data/lib/wp/wp-admin/js/comment.js +0 -50
- data/lib/wp/wp-admin/js/comment.min.js +0 -1
- data/lib/wp/wp-admin/js/common.js +0 -804
- data/lib/wp/wp-admin/js/common.min.js +0 -1
- data/lib/wp/wp-admin/js/custom-background.js +0 -75
- data/lib/wp/wp-admin/js/custom-background.min.js +0 -1
- data/lib/wp/wp-admin/js/custom-header.js +0 -61
- data/lib/wp/wp-admin/js/customize-controls.js +0 -1305
- data/lib/wp/wp-admin/js/customize-controls.min.js +0 -1
- data/lib/wp/wp-admin/js/customize-widgets.js +0 -1882
- data/lib/wp/wp-admin/js/customize-widgets.min.js +0 -1
- data/lib/wp/wp-admin/js/dashboard.js +0 -190
- data/lib/wp/wp-admin/js/dashboard.min.js +0 -1
- data/lib/wp/wp-admin/js/edit-comments.js +0 -625
- data/lib/wp/wp-admin/js/edit-comments.min.js +0 -1
- data/lib/wp/wp-admin/js/editor-expand.js +0 -705
- data/lib/wp/wp-admin/js/editor-expand.min.js +0 -1
- data/lib/wp/wp-admin/js/editor.js +0 -324
- data/lib/wp/wp-admin/js/editor.min.js +0 -1
- data/lib/wp/wp-admin/js/farbtastic.js +0 -276
- data/lib/wp/wp-admin/js/gallery.js +0 -237
- data/lib/wp/wp-admin/js/gallery.min.js +0 -1
- data/lib/wp/wp-admin/js/image-edit.js +0 -633
- data/lib/wp/wp-admin/js/image-edit.min.js +0 -1
- data/lib/wp/wp-admin/js/inline-edit-post.js +0 -359
- data/lib/wp/wp-admin/js/inline-edit-post.min.js +0 -1
- data/lib/wp/wp-admin/js/inline-edit-tax.js +0 -142
- data/lib/wp/wp-admin/js/inline-edit-tax.min.js +0 -1
- data/lib/wp/wp-admin/js/iris.min.js +0 -4
- data/lib/wp/wp-admin/js/language-chooser.js +0 -26
- data/lib/wp/wp-admin/js/language-chooser.min.js +0 -1
- data/lib/wp/wp-admin/js/link.js +0 -69
- data/lib/wp/wp-admin/js/link.min.js +0 -1
- data/lib/wp/wp-admin/js/media-gallery.js +0 -26
- data/lib/wp/wp-admin/js/media-gallery.min.js +0 -1
- data/lib/wp/wp-admin/js/media-upload.js +0 -69
- data/lib/wp/wp-admin/js/media-upload.min.js +0 -1
- data/lib/wp/wp-admin/js/media.js +0 -111
- data/lib/wp/wp-admin/js/media.min.js +0 -1
- data/lib/wp/wp-admin/js/nav-menu.js +0 -1205
- data/lib/wp/wp-admin/js/nav-menu.min.js +0 -1
- data/lib/wp/wp-admin/js/password-strength-meter.js +0 -75
- data/lib/wp/wp-admin/js/password-strength-meter.min.js +0 -1
- data/lib/wp/wp-admin/js/plugin-install.js +0 -76
- data/lib/wp/wp-admin/js/plugin-install.min.js +0 -1
- data/lib/wp/wp-admin/js/post.js +0 -1094
- data/lib/wp/wp-admin/js/post.min.js +0 -1
- data/lib/wp/wp-admin/js/postbox.js +0 -199
- data/lib/wp/wp-admin/js/postbox.min.js +0 -1
- data/lib/wp/wp-admin/js/revisions.js +0 -1110
- data/lib/wp/wp-admin/js/revisions.min.js +0 -1
- data/lib/wp/wp-admin/js/set-post-thumbnail.js +0 -24
- data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +0 -1
- data/lib/wp/wp-admin/js/svg-painter.js +0 -240
- data/lib/wp/wp-admin/js/svg-painter.min.js +0 -1
- data/lib/wp/wp-admin/js/tags.js +0 -72
- data/lib/wp/wp-admin/js/tags.min.js +0 -1
- data/lib/wp/wp-admin/js/theme.js +0 -1691
- data/lib/wp/wp-admin/js/theme.min.js +0 -1
- data/lib/wp/wp-admin/js/updates.js +0 -65
- data/lib/wp/wp-admin/js/updates.min.js +0 -1
- data/lib/wp/wp-admin/js/user-profile.js +0 -127
- data/lib/wp/wp-admin/js/user-profile.min.js +0 -1
- data/lib/wp/wp-admin/js/user-suggest.js +0 -30
- data/lib/wp/wp-admin/js/user-suggest.min.js +0 -1
- data/lib/wp/wp-admin/js/widgets.js +0 -494
- data/lib/wp/wp-admin/js/widgets.min.js +0 -1
- data/lib/wp/wp-admin/js/word-count.js +0 -44
- data/lib/wp/wp-admin/js/word-count.min.js +0 -1
- data/lib/wp/wp-admin/js/wp-fullscreen.js +0 -704
- data/lib/wp/wp-admin/js/wp-fullscreen.min.js +0 -1
- data/lib/wp/wp-admin/js/xfn.js +0 -17
- data/lib/wp/wp-admin/js/xfn.min.js +0 -1
- data/lib/wp/wp-admin/link-add.php +0 -29
- data/lib/wp/wp-admin/link-manager.php +0 -99
- data/lib/wp/wp-admin/link-parse-opml.php +0 -84
- data/lib/wp/wp-admin/link.php +0 -117
- data/lib/wp/wp-admin/load-scripts.php +0 -162
- data/lib/wp/wp-admin/load-styles.php +0 -153
- data/lib/wp/wp-admin/maint/repair.php +0 -124
- data/lib/wp/wp-admin/media-new.php +0 -84
- data/lib/wp/wp-admin/media-upload.php +0 -100
- data/lib/wp/wp-admin/media.php +0 -146
- data/lib/wp/wp-admin/menu-header.php +0 -227
- data/lib/wp/wp-admin/menu.php +0 -255
- data/lib/wp/wp-admin/moderation.php +0 -12
- data/lib/wp/wp-admin/ms-admin.php +0 -13
- data/lib/wp/wp-admin/ms-delete-site.php +0 -91
- data/lib/wp/wp-admin/ms-edit.php +0 -13
- data/lib/wp/wp-admin/ms-options.php +0 -12
- data/lib/wp/wp-admin/ms-sites.php +0 -13
- data/lib/wp/wp-admin/ms-themes.php +0 -13
- data/lib/wp/wp-admin/ms-upgrade-network.php +0 -13
- data/lib/wp/wp-admin/ms-users.php +0 -13
- data/lib/wp/wp-admin/my-sites.php +0 -145
- data/lib/wp/wp-admin/nav-menus.php +0 -798
- data/lib/wp/wp-admin/network.php +0 -561
- data/lib/wp/wp-admin/network/about.php +0 -16
- data/lib/wp/wp-admin/network/admin.php +0 -32
- data/lib/wp/wp-admin/network/credits.php +0 -16
- data/lib/wp/wp-admin/network/edit.php +0 -42
- data/lib/wp/wp-admin/network/freedoms.php +0 -16
- data/lib/wp/wp-admin/network/index.php +0 -79
- data/lib/wp/wp-admin/network/menu.php +0 -63
- data/lib/wp/wp-admin/network/plugin-editor.php +0 -16
- data/lib/wp/wp-admin/network/plugin-install.php +0 -19
- data/lib/wp/wp-admin/network/plugins.php +0 -16
- data/lib/wp/wp-admin/network/profile.php +0 -16
- data/lib/wp/wp-admin/network/settings.php +0 -347
- data/lib/wp/wp-admin/network/setup.php +0 -16
- data/lib/wp/wp-admin/network/site-info.php +0 -178
- data/lib/wp/wp-admin/network/site-new.php +0 -153
- data/lib/wp/wp-admin/network/site-settings.php +0 -173
- data/lib/wp/wp-admin/network/site-themes.php +0 -185
- data/lib/wp/wp-admin/network/site-users.php +0 -319
- data/lib/wp/wp-admin/network/sites.php +0 -275
- data/lib/wp/wp-admin/network/theme-editor.php +0 -16
- data/lib/wp/wp-admin/network/theme-install.php +0 -19
- data/lib/wp/wp-admin/network/themes.php +0 -291
- data/lib/wp/wp-admin/network/update-core.php +0 -16
- data/lib/wp/wp-admin/network/update.php +0 -19
- data/lib/wp/wp-admin/network/upgrade.php +0 -120
- data/lib/wp/wp-admin/network/user-edit.php +0 -16
- data/lib/wp/wp-admin/network/user-new.php +0 -106
- data/lib/wp/wp-admin/network/users.php +0 -296
- data/lib/wp/wp-admin/options-discussion.php +0 -273
- data/lib/wp/wp-admin/options-general.php +0 -355
- data/lib/wp/wp-admin/options-head.php +0 -18
- data/lib/wp/wp-admin/options-media.php +0 -136
- data/lib/wp/wp-admin/options-permalink.php +0 -289
- data/lib/wp/wp-admin/options-reading.php +0 -184
- data/lib/wp/wp-admin/options-writing.php +0 -194
- data/lib/wp/wp-admin/options.php +0 -265
- data/lib/wp/wp-admin/plugin-editor.php +0 -279
- data/lib/wp/wp-admin/plugin-install.php +0 -134
- data/lib/wp/wp-admin/plugins.php +0 -474
- data/lib/wp/wp-admin/post-new.php +0 -74
- data/lib/wp/wp-admin/post.php +0 -318
- data/lib/wp/wp-admin/press-this.php +0 -691
- data/lib/wp/wp-admin/profile.php +0 -18
- data/lib/wp/wp-admin/revision.php +0 -221
- data/lib/wp/wp-admin/setup-config.php +0 -345
- data/lib/wp/wp-admin/theme-editor.php +0 -243
- data/lib/wp/wp-admin/theme-install.php +0 -278
- data/lib/wp/wp-admin/themes.php +0 -374
- data/lib/wp/wp-admin/tools.php +0 -75
- data/lib/wp/wp-admin/update-core.php +0 -653
- data/lib/wp/wp-admin/update.php +0 -272
- data/lib/wp/wp-admin/upgrade-functions.php +0 -12
- data/lib/wp/wp-admin/upgrade.php +0 -116
- data/lib/wp/wp-admin/upload.php +0 -292
- data/lib/wp/wp-admin/user-edit.php +0 -557
- data/lib/wp/wp-admin/user-new.php +0 -439
- data/lib/wp/wp-admin/user/about.php +0 -13
- data/lib/wp/wp-admin/user/admin.php +0 -32
- data/lib/wp/wp-admin/user/credits.php +0 -13
- data/lib/wp/wp-admin/user/freedoms.php +0 -13
- data/lib/wp/wp-admin/user/index.php +0 -12
- data/lib/wp/wp-admin/user/menu.php +0 -22
- data/lib/wp/wp-admin/user/profile.php +0 -12
- data/lib/wp/wp-admin/user/user-edit.php +0 -12
- data/lib/wp/wp-admin/users.php +0 -460
- data/lib/wp/wp-admin/widgets.php +0 -442
- data/lib/wp/wp-blog-header.php +0 -18
- data/lib/wp/wp-comments-post.php +0 -164
- data/lib/wp/wp-config-sample.php +0 -80
- data/lib/wp/wp-content/index.php +0 -2
- data/lib/wp/wp-content/plugins/hello.php +0 -82
- data/lib/wp/wp-content/plugins/index.php +0 -2
- data/lib/wp/wp-content/themes/index.php +0 -2
- data/lib/wp/wp-content/themes/stump/.editorconfig +0 -11
- data/lib/wp/wp-content/themes/stump/.jshintrc +0 -16
- data/lib/wp/wp-content/themes/stump/404.php +0 -13
- data/lib/wp/wp-content/themes/stump/CHANGELOG.md +0 -333
- data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +0 -121
- data/lib/wp/wp-content/themes/stump/Gruntfile.js +0 -151
- data/lib/wp/wp-content/themes/stump/LICENSE.md +0 -19
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
- data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +0 -548
- 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 +0 -229
- 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 +0 -63
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +0 -137
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +0 -88
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +0 -107
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +0 -205
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +0 -170
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +0 -147
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +0 -243
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +0 -110
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +0 -153
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +0 -125
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +0 -399
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +0 -48
- data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +0 -1
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +0 -4
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +0 -4
- data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +0 -9
- data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +0 -1
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +0 -67
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +0 -55
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +0 -49
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +0 -26
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +0 -226
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +0 -159
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +0 -232
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +0 -35
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +0 -63
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +0 -29
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +0 -213
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +0 -436
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +0 -233
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +0 -84
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +0 -162
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +0 -44
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +0 -64
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +0 -110
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +0 -56
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +0 -947
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +0 -139
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +0 -620
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +0 -242
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +0 -423
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +0 -55
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +0 -88
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +0 -241
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +0 -133
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +0 -101
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +0 -80
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +0 -74
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +0 -134
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +0 -233
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +0 -247
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +0 -38
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +0 -95
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +0 -284
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +0 -56
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +0 -833
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +0 -29
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +0 -13
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +0 -59
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +0 -273
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +0 -29
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +0 -5
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +0 -5
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +0 -56
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +0 -42
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +0 -49
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +0 -32
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +0 -44
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +0 -32
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +0 -45
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +0 -52
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +0 -3
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +0 -6
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +0 -48
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +0 -103
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +0 -55
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +0 -22
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +0 -4
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +0 -47
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +0 -52
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +0 -23
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +0 -10
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +0 -13
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +0 -43
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +0 -41
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +0 -29
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +0 -44
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +0 -15
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +0 -34
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +0 -3
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +0 -11
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +0 -39
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +0 -13
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +0 -13
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +0 -40
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +0 -23
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +0 -9
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +0 -22
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +0 -39
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +0 -13
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +0 -61
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +0 -69
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +0 -18
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +0 -26
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +0 -10
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +0 -11
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +0 -161
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +0 -63
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +0 -24
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +0 -42
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +0 -21
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +0 -16
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +0 -107
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +0 -3
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +0 -7
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +0 -5
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +0 -51
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +0 -79
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +0 -8
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +0 -50
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +0 -12
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +0 -17
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +0 -9
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +0 -38
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +0 -57
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +0 -41
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +0 -7
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +0 -5
- data/lib/wp/wp-content/themes/stump/base.php +0 -36
- data/lib/wp/wp-content/themes/stump/functions.php +0 -19
- data/lib/wp/wp-content/themes/stump/index.php +0 -21
- data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.po +0 -270
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +0 -338
- data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.po +0 -517
- data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.po +0 -305
- data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.po +0 -271
- data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/el.po +0 -319
- data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.po +0 -270
- data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/et.po +0 -262
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +0 -273
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +0 -367
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +0 -336
- data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.po +0 -336
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +0 -271
- data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.po +0 -278
- data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.po +0 -269
- data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.po +0 -267
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +0 -282
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +0 -297
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +0 -342
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +0 -517
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +0 -261
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +0 -517
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +0 -283
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +0 -394
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +0 -271
- data/lib/wp/wp-content/themes/stump/lang/roots.pot +0 -244
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +0 -255
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +0 -267
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +0 -261
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +0 -323
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +0 -405
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +0 -516
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +0 -329
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +0 -261
- data/lib/wp/wp-content/themes/stump/lib/activation.php +0 -215
- data/lib/wp/wp-content/themes/stump/lib/cleanup.php +0 -261
- data/lib/wp/wp-content/themes/stump/lib/comments.php +0 -52
- data/lib/wp/wp-content/themes/stump/lib/config.php +0 -79
- data/lib/wp/wp-content/themes/stump/lib/custom.php +0 -4
- data/lib/wp/wp-content/themes/stump/lib/gallery.php +0 -130
- data/lib/wp/wp-content/themes/stump/lib/init.php +0 -25
- data/lib/wp/wp-content/themes/stump/lib/nav.php +0 -93
- data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +0 -50
- data/lib/wp/wp-content/themes/stump/lib/scripts.php +0 -67
- data/lib/wp/wp-content/themes/stump/lib/sidebar.php +0 -43
- data/lib/wp/wp-content/themes/stump/lib/titles.php +0 -37
- data/lib/wp/wp-content/themes/stump/lib/utils.php +0 -14
- data/lib/wp/wp-content/themes/stump/lib/widgets.php +0 -133
- data/lib/wp/wp-content/themes/stump/lib/wrapper.php +0 -49
- data/lib/wp/wp-content/themes/stump/package.json +0 -32
- data/lib/wp/wp-content/themes/stump/page.php +0 -2
- data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/stump/single.php +0 -1
- data/lib/wp/wp-content/themes/stump/style.css +0 -11
- data/lib/wp/wp-content/themes/stump/template-custom.php +0 -8
- data/lib/wp/wp-content/themes/stump/templates/comment.php +0 -14
- data/lib/wp/wp-content/themes/stump/templates/comments.php +0 -80
- data/lib/wp/wp-content/themes/stump/templates/content-page.php +0 -4
- data/lib/wp/wp-content/themes/stump/templates/content-single.php +0 -15
- data/lib/wp/wp-content/themes/stump/templates/content.php +0 -9
- data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +0 -2
- data/lib/wp/wp-content/themes/stump/templates/footer.php +0 -8
- data/lib/wp/wp-content/themes/stump/templates/head.php +0 -12
- data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +0 -21
- data/lib/wp/wp-content/themes/stump/templates/header.php +0 -14
- data/lib/wp/wp-content/themes/stump/templates/page-header.php +0 -5
- data/lib/wp/wp-content/themes/stump/templates/searchform.php +0 -9
- data/lib/wp/wp-content/themes/stump/templates/sidebar.php +0 -1
- data/lib/wp/wp-cron.php +0 -115
- data/lib/wp/wp-includes/ID3/getid3.lib.php +0 -1376
- data/lib/wp/wp-includes/ID3/getid3.php +0 -1796
- data/lib/wp/wp-includes/ID3/license.commercial.txt +0 -27
- data/lib/wp/wp-includes/ID3/license.txt +0 -29
- data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +0 -2013
- data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +0 -745
- data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +0 -1751
- data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +0 -2246
- data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +0 -2586
- data/lib/wp/wp-includes/ID3/module.audio.ac3.php +0 -474
- data/lib/wp/wp-includes/ID3/module.audio.dts.php +0 -291
- data/lib/wp/wp-includes/ID3/module.audio.flac.php +0 -443
- data/lib/wp/wp-includes/ID3/module.audio.mp3.php +0 -2012
- data/lib/wp/wp-includes/ID3/module.audio.ogg.php +0 -756
- data/lib/wp/wp-includes/ID3/module.tag.apetag.php +0 -371
- data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +0 -360
- data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +0 -3424
- data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +0 -294
- data/lib/wp/wp-includes/ID3/readme.txt +0 -604
- data/lib/wp/wp-includes/SimplePie/Author.php +0 -157
- data/lib/wp/wp-includes/SimplePie/Cache.php +0 -133
- data/lib/wp/wp-includes/SimplePie/Cache/Base.php +0 -114
- data/lib/wp/wp-includes/SimplePie/Cache/DB.php +0 -137
- data/lib/wp/wp-includes/SimplePie/Cache/File.php +0 -173
- data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +0 -183
- data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +0 -438
- data/lib/wp/wp-includes/SimplePie/Caption.php +0 -210
- data/lib/wp/wp-includes/SimplePie/Category.php +0 -157
- data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +0 -332
- data/lib/wp/wp-includes/SimplePie/Copyright.php +0 -130
- data/lib/wp/wp-includes/SimplePie/Core.php +0 -57
- data/lib/wp/wp-includes/SimplePie/Credit.php +0 -156
- data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +0 -617
- data/lib/wp/wp-includes/SimplePie/Enclosure.php +0 -1380
- data/lib/wp/wp-includes/SimplePie/Exception.php +0 -52
- data/lib/wp/wp-includes/SimplePie/File.php +0 -292
- data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +0 -500
- data/lib/wp/wp-includes/SimplePie/IRI.php +0 -1238
- data/lib/wp/wp-includes/SimplePie/Item.php +0 -2964
- data/lib/wp/wp-includes/SimplePie/Locator.php +0 -372
- data/lib/wp/wp-includes/SimplePie/Misc.php +0 -2247
- data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +0 -276
- data/lib/wp/wp-includes/SimplePie/Parse/Date.php +0 -983
- data/lib/wp/wp-includes/SimplePie/Parser.php +0 -407
- data/lib/wp/wp-includes/SimplePie/Rating.php +0 -129
- data/lib/wp/wp-includes/SimplePie/Registry.php +0 -225
- data/lib/wp/wp-includes/SimplePie/Restriction.php +0 -155
- data/lib/wp/wp-includes/SimplePie/Sanitize.php +0 -554
- data/lib/wp/wp-includes/SimplePie/Source.php +0 -611
- data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +0 -362
- data/lib/wp/wp-includes/SimplePie/gzdecode.php +0 -371
- data/lib/wp/wp-includes/Text/Diff.php +0 -450
- data/lib/wp/wp-includes/Text/Diff/Engine/native.php +0 -436
- data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +0 -162
- data/lib/wp/wp-includes/Text/Diff/Engine/string.php +0 -248
- data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +0 -64
- data/lib/wp/wp-includes/Text/Diff/Renderer.php +0 -235
- data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +0 -206
- data/lib/wp/wp-includes/admin-bar.php +0 -870
- data/lib/wp/wp-includes/atomlib.php +0 -352
- data/lib/wp/wp-includes/author-template.php +0 -471
- data/lib/wp/wp-includes/bookmark-template.php +0 -298
- data/lib/wp/wp-includes/bookmark.php +0 -416
- data/lib/wp/wp-includes/cache.php +0 -704
- data/lib/wp/wp-includes/canonical.php +0 -586
- data/lib/wp/wp-includes/capabilities.php +0 -1539
- data/lib/wp/wp-includes/category-template.php +0 -1407
- data/lib/wp/wp-includes/category.php +0 -343
- data/lib/wp/wp-includes/certificates/ca-bundle.crt +0 -3785
- data/lib/wp/wp-includes/class-IXR.php +0 -1100
- data/lib/wp/wp-includes/class-feed.php +0 -140
- data/lib/wp/wp-includes/class-http.php +0 -2245
- data/lib/wp/wp-includes/class-json.php +0 -936
- data/lib/wp/wp-includes/class-oembed.php +0 -579
- data/lib/wp/wp-includes/class-phpass.php +0 -260
- data/lib/wp/wp-includes/class-phpmailer.php +0 -3265
- data/lib/wp/wp-includes/class-pop3.php +0 -652
- data/lib/wp/wp-includes/class-simplepie.php +0 -3119
- data/lib/wp/wp-includes/class-smtp.php +0 -943
- data/lib/wp/wp-includes/class-snoopy.php +0 -1256
- data/lib/wp/wp-includes/class-wp-admin-bar.php +0 -517
- data/lib/wp/wp-includes/class-wp-ajax-response.php +0 -199
- data/lib/wp/wp-includes/class-wp-customize-control.php +0 -1124
- data/lib/wp/wp-includes/class-wp-customize-manager.php +0 -1272
- data/lib/wp/wp-includes/class-wp-customize-panel.php +0 -200
- data/lib/wp/wp-includes/class-wp-customize-section.php +0 -196
- data/lib/wp/wp-includes/class-wp-customize-setting.php +0 -554
- data/lib/wp/wp-includes/class-wp-customize-widgets.php +0 -1556
- data/lib/wp/wp-includes/class-wp-editor.php +0 -1435
- data/lib/wp/wp-includes/class-wp-embed.php +0 -373
- data/lib/wp/wp-includes/class-wp-error.php +0 -276
- data/lib/wp/wp-includes/class-wp-http-ixr-client.php +0 -97
- data/lib/wp/wp-includes/class-wp-image-editor-gd.php +0 -459
- data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +0 -512
- data/lib/wp/wp-includes/class-wp-image-editor.php +0 -475
- data/lib/wp/wp-includes/class-wp-theme.php +0 -1235
- data/lib/wp/wp-includes/class-wp-walker.php +0 -471
- data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +0 -5984
- data/lib/wp/wp-includes/class-wp.php +0 -782
- data/lib/wp/wp-includes/class.wp-dependencies.php +0 -509
- data/lib/wp/wp-includes/class.wp-scripts.php +0 -247
- data/lib/wp/wp-includes/class.wp-styles.php +0 -210
- data/lib/wp/wp-includes/comment-template.php +0 -2286
- data/lib/wp/wp-includes/comment.php +0 -2606
- data/lib/wp/wp-includes/compat.php +0 -125
- data/lib/wp/wp-includes/cron.php +0 -469
- data/lib/wp/wp-includes/css/admin-bar-rtl.css +0 -1099
- data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/admin-bar.css +0 -1099
- data/lib/wp/wp-includes/css/admin-bar.min.css +0 -1
- data/lib/wp/wp-includes/css/buttons-rtl.css +0 -364
- data/lib/wp/wp-includes/css/buttons-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/buttons.css +0 -364
- data/lib/wp/wp-includes/css/buttons.min.css +0 -1
- data/lib/wp/wp-includes/css/dashicons.css +0 -893
- data/lib/wp/wp-includes/css/dashicons.min.css +0 -1
- data/lib/wp/wp-includes/css/editor-rtl.css +0 -1993
- data/lib/wp/wp-includes/css/editor-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/editor.css +0 -1993
- data/lib/wp/wp-includes/css/editor.min.css +0 -1
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +0 -343
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +0 -19
- data/lib/wp/wp-includes/css/jquery-ui-dialog.css +0 -343
- data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +0 -19
- data/lib/wp/wp-includes/css/media-views-rtl.css +0 -2568
- data/lib/wp/wp-includes/css/media-views-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/media-views.css +0 -2568
- data/lib/wp/wp-includes/css/media-views.min.css +0 -1
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +0 -100
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/wp-auth-check.css +0 -100
- data/lib/wp/wp-includes/css/wp-auth-check.min.css +0 -1
- data/lib/wp/wp-includes/css/wp-pointer-rtl.css +0 -212
- data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +0 -1
- data/lib/wp/wp-includes/css/wp-pointer.css +0 -212
- data/lib/wp/wp-includes/css/wp-pointer.min.css +0 -1
- data/lib/wp/wp-includes/date.php +0 -475
- data/lib/wp/wp-includes/default-constants.php +0 -323
- data/lib/wp/wp-includes/default-filters.php +0 -307
- data/lib/wp/wp-includes/default-widgets.php +0 -1423
- data/lib/wp/wp-includes/deprecated.php +0 -3501
- data/lib/wp/wp-includes/feed-atom-comments.php +0 -115
- data/lib/wp/wp-includes/feed-atom.php +0 -87
- data/lib/wp/wp-includes/feed-rdf.php +0 -81
- data/lib/wp/wp-includes/feed-rss.php +0 -46
- data/lib/wp/wp-includes/feed-rss2-comments.php +0 -97
- data/lib/wp/wp-includes/feed-rss2.php +0 -115
- data/lib/wp/wp-includes/feed.php +0 -659
- data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.svg +0 -250
- 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 +0 -4006
- data/lib/wp/wp-includes/functions.php +0 -4631
- data/lib/wp/wp-includes/functions.wp-scripts.php +0 -258
- data/lib/wp/wp-includes/functions.wp-styles.php +0 -245
- data/lib/wp/wp-includes/general-template.php +0 -2982
- data/lib/wp/wp-includes/http.php +0 -551
- 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 +0 -9
- 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 +0 -365
- data/lib/wp/wp-includes/js/admin-bar.min.js +0 -1
- data/lib/wp/wp-includes/js/autosave.js +0 -589
- data/lib/wp/wp-includes/js/autosave.min.js +0 -1
- data/lib/wp/wp-includes/js/backbone.min.js +0 -1
- data/lib/wp/wp-includes/js/colorpicker.js +0 -707
- data/lib/wp/wp-includes/js/colorpicker.min.js +0 -1
- data/lib/wp/wp-includes/js/comment-reply.js +0 -47
- data/lib/wp/wp-includes/js/comment-reply.min.js +0 -1
- data/lib/wp/wp-includes/js/crop/cropper.css +0 -165
- data/lib/wp/wp-includes/js/crop/cropper.js +0 -516
- 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 +0 -617
- data/lib/wp/wp-includes/js/customize-base.min.js +0 -1
- data/lib/wp/wp-includes/js/customize-loader.js +0 -246
- data/lib/wp/wp-includes/js/customize-loader.min.js +0 -1
- data/lib/wp/wp-includes/js/customize-models.js +0 -247
- data/lib/wp/wp-includes/js/customize-models.min.js +0 -1
- data/lib/wp/wp-includes/js/customize-preview-widgets.js +0 -129
- data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +0 -1
- data/lib/wp/wp-includes/js/customize-preview.js +0 -154
- data/lib/wp/wp-includes/js/customize-preview.min.js +0 -1
- data/lib/wp/wp-includes/js/customize-views.js +0 -231
- data/lib/wp/wp-includes/js/customize-views.min.js +0 -1
- data/lib/wp/wp-includes/js/heartbeat.js +0 -738
- data/lib/wp/wp-includes/js/heartbeat.min.js +0 -1
- data/lib/wp/wp-includes/js/hoverIntent.js +0 -115
- data/lib/wp/wp-includes/js/hoverIntent.min.js +0 -1
- 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 +0 -41
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +0 -1205
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +0 -1
- data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +0 -29
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +0 -22
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +0 -521
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +0 -2
- data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +0 -2
- data/lib/wp/wp-includes/js/jquery/jquery.form.js +0 -1193
- data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +0 -134
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +0 -1
- data/lib/wp/wp-includes/js/jquery/jquery.js +0 -5
- data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/jquery.query.js +0 -11
- data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +0 -36
- data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +0 -31
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +0 -99
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +0 -1
- data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +0 -11
- data/lib/wp/wp-includes/js/jquery/suggest.js +0 -316
- data/lib/wp/wp-includes/js/jquery/suggest.min.js +0 -1
- data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/button.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/core.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +0 -12
- data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +0 -21
- data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/position.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +0 -11
- data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +0 -11
- data/lib/wp/wp-includes/js/json2.js +0 -480
- data/lib/wp/wp-includes/js/json2.min.js +0 -1
- data/lib/wp/wp-includes/js/masonry.min.js +0 -1
- data/lib/wp/wp-includes/js/mce-view.js +0 -829
- data/lib/wp/wp-includes/js/mce-view.min.js +0 -1
- data/lib/wp/wp-includes/js/media-audiovideo.js +0 -831
- data/lib/wp/wp-includes/js/media-audiovideo.min.js +0 -1
- data/lib/wp/wp-includes/js/media-editor.js +0 -1114
- data/lib/wp/wp-includes/js/media-editor.min.js +0 -1
- data/lib/wp/wp-includes/js/media-grid.js +0 -732
- data/lib/wp/wp-includes/js/media-grid.min.js +0 -1
- data/lib/wp/wp-includes/js/media-models.js +0 -1362
- data/lib/wp/wp-includes/js/media-models.min.js +0 -1
- data/lib/wp/wp-includes/js/media-views.js +0 -7484
- data/lib/wp/wp-includes/js/media-views.min.js +0 -3
- 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 +0 -1
- data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.svg +0 -1
- 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 +0 -181
- data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +0 -1
- data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +0 -274
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +0 -34
- data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +0 -175
- data/lib/wp/wp-includes/js/plupload/handlers.js +0 -488
- data/lib/wp/wp-includes/js/plupload/handlers.min.js +0 -1
- data/lib/wp/wp-includes/js/plupload/license.txt +0 -339
- data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
- data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +0 -28
- data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.js +0 -376
- data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +0 -1
- data/lib/wp/wp-includes/js/quicktags.js +0 -652
- data/lib/wp/wp-includes/js/quicktags.min.js +0 -1
- data/lib/wp/wp-includes/js/shortcode.js +0 -356
- data/lib/wp/wp-includes/js/shortcode.min.js +0 -1
- data/lib/wp/wp-includes/js/swfobject.js +0 -4
- data/lib/wp/wp-includes/js/swfupload/handlers.js +0 -376
- data/lib/wp/wp-includes/js/swfupload/handlers.min.js +0 -1
- data/lib/wp/wp-includes/js/swfupload/license.txt +0 -32
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +0 -53
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +0 -98
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +0 -342
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +0 -105
- data/lib/wp/wp-includes/js/swfupload/swfupload.js +0 -980
- 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 +0 -138
- data/lib/wp/wp-includes/js/thickbox/thickbox.js +0 -314
- data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +0 -519
- data/lib/wp/wp-includes/js/tinymce/license.txt +0 -504
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +0 -370
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +0 -112
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +0 -212
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +0 -304
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +0 -64
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +0 -136
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +0 -30
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +0 -450
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +0 -786
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +0 -774
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +0 -1553
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +0 -125
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +0 -272
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +0 -513
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +0 -207
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +0 -92
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +0 -1035
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +0 -78
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +0 -130
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +0 -63
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +0 -694
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +0 -1
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +0 -1
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +0 -1
- 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 +0 -62
- 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 +0 -63
- 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 +0 -1
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +0 -1
- 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 +0 -618
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +0 -617
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +0 -1
- data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +0 -539
- data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +0 -11
- data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +0 -70
- data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +0 -210
- data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +0 -164
- data/lib/wp/wp-includes/js/tinymce/utils/validate.js +0 -252
- data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +0 -145
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +0 -39
- data/lib/wp/wp-includes/js/tw-sack.js +0 -193
- data/lib/wp/wp-includes/js/tw-sack.min.js +0 -1
- data/lib/wp/wp-includes/js/underscore.min.js +0 -1
- data/lib/wp/wp-includes/js/utils.js +0 -197
- data/lib/wp/wp-includes/js/utils.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-ajax-response.js +0 -64
- data/lib/wp/wp-includes/js/wp-ajax-response.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-auth-check.js +0 -112
- data/lib/wp/wp-includes/js/wp-auth-check.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-backbone.js +0 -386
- data/lib/wp/wp-includes/js/wp-backbone.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-list-revisions.js +0 -24
- data/lib/wp/wp-includes/js/wp-list-revisions.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-lists.js +0 -469
- data/lib/wp/wp-includes/js/wp-lists.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-pointer.js +0 -282
- data/lib/wp/wp-includes/js/wp-pointer.min.js +0 -1
- data/lib/wp/wp-includes/js/wp-util.js +0 -106
- data/lib/wp/wp-includes/js/wp-util.min.js +0 -1
- data/lib/wp/wp-includes/js/wpdialog.js +0 -19
- data/lib/wp/wp-includes/js/wpdialog.min.js +0 -1
- data/lib/wp/wp-includes/js/wplink.js +0 -615
- data/lib/wp/wp-includes/js/wplink.min.js +0 -1
- data/lib/wp/wp-includes/js/zxcvbn-async.js +0 -18
- data/lib/wp/wp-includes/js/zxcvbn-async.min.js +0 -1
- data/lib/wp/wp-includes/js/zxcvbn.min.js +0 -47
- data/lib/wp/wp-includes/kses.php +0 -1526
- data/lib/wp/wp-includes/l10n.php +0 -908
- data/lib/wp/wp-includes/link-template.php +0 -3141
- data/lib/wp/wp-includes/load.php +0 -828
- data/lib/wp/wp-includes/locale.php +0 -368
- data/lib/wp/wp-includes/media-template.php +0 -1235
- data/lib/wp/wp-includes/media.php +0 -3329
- data/lib/wp/wp-includes/meta.php +0 -1221
- data/lib/wp/wp-includes/ms-blogs.php +0 -939
- data/lib/wp/wp-includes/ms-default-constants.php +0 -153
- data/lib/wp/wp-includes/ms-default-filters.php +0 -82
- data/lib/wp/wp-includes/ms-deprecated.php +0 -347
- data/lib/wp/wp-includes/ms-files.php +0 -82
- data/lib/wp/wp-includes/ms-functions.php +0 -2476
- data/lib/wp/wp-includes/ms-load.php +0 -458
- data/lib/wp/wp-includes/ms-settings.php +0 -213
- data/lib/wp/wp-includes/nav-menu-template.php +0 -678
- data/lib/wp/wp-includes/nav-menu.php +0 -895
- data/lib/wp/wp-includes/option.php +0 -1440
- data/lib/wp/wp-includes/pluggable-deprecated.php +0 -192
- data/lib/wp/wp-includes/pluggable.php +0 -2283
- data/lib/wp/wp-includes/plugin.php +0 -920
- data/lib/wp/wp-includes/pomo/entry.php +0 -78
- data/lib/wp/wp-includes/pomo/mo.php +0 -262
- data/lib/wp/wp-includes/pomo/po.php +0 -384
- data/lib/wp/wp-includes/pomo/streams.php +0 -209
- data/lib/wp/wp-includes/pomo/translations.php +0 -275
- data/lib/wp/wp-includes/post-formats.php +0 -243
- data/lib/wp/wp-includes/post-template.php +0 -1766
- data/lib/wp/wp-includes/post-thumbnail-template.php +0 -142
- data/lib/wp/wp-includes/post.php +0 -5842
- data/lib/wp/wp-includes/query.php +0 -4666
- data/lib/wp/wp-includes/registration-functions.php +0 -7
- data/lib/wp/wp-includes/registration.php +0 -7
- data/lib/wp/wp-includes/revision.php +0 -657
- data/lib/wp/wp-includes/rewrite.php +0 -2180
- data/lib/wp/wp-includes/rss-functions.php +0 -9
- data/lib/wp/wp-includes/rss.php +0 -936
- data/lib/wp/wp-includes/script-loader.php +0 -1045
- data/lib/wp/wp-includes/session.php +0 -430
- data/lib/wp/wp-includes/shortcodes.php +0 -410
- data/lib/wp/wp-includes/taxonomy.php +0 -4006
- data/lib/wp/wp-includes/template-loader.php +0 -76
- data/lib/wp/wp-includes/template.php +0 -505
- data/lib/wp/wp-includes/theme-compat/comments-popup.php +0 -128
- data/lib/wp/wp-includes/theme-compat/comments.php +0 -101
- data/lib/wp/wp-includes/theme-compat/footer.php +0 -30
- data/lib/wp/wp-includes/theme-compat/header.php +0 -49
- data/lib/wp/wp-includes/theme-compat/sidebar.php +0 -83
- data/lib/wp/wp-includes/theme.php +0 -2014
- data/lib/wp/wp-includes/update.php +0 -674
- data/lib/wp/wp-includes/user.php +0 -2292
- data/lib/wp/wp-includes/vars.php +0 -144
- data/lib/wp/wp-includes/version.php +0 -35
- data/lib/wp/wp-includes/widgets.php +0 -1514
- data/lib/wp/wp-includes/wlwmanifest.xml +0 -43
- data/lib/wp/wp-includes/wp-db.php +0 -2190
- data/lib/wp/wp-includes/wp-diff.php +0 -523
- data/lib/wp/wp-links-opml.php +0 -80
- data/lib/wp/wp-load.php +0 -73
- data/lib/wp/wp-login.php +0 -952
- data/lib/wp/wp-mail.php +0 -260
- data/lib/wp/wp-settings.php +0 -374
- data/lib/wp/wp-signup.php +0 -749
- data/lib/wp/wp-trackback.php +0 -127
- data/lib/wp/xmlrpc.php +0 -101
@@ -1,2606 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
/**
|
3
|
-
* Manages WordPress comments
|
4
|
-
*
|
5
|
-
* @package WordPress
|
6
|
-
* @subpackage Comment
|
7
|
-
*/
|
8
|
-
|
9
|
-
/**
|
10
|
-
* Check whether a comment passes internal checks to be allowed to add.
|
11
|
-
*
|
12
|
-
* If manual comment moderation is set in the administration, then all checks,
|
13
|
-
* regardless of their type and whitelist, will fail and the function will
|
14
|
-
* return false.
|
15
|
-
*
|
16
|
-
* If the number of links exceeds the amount in the administration, then the
|
17
|
-
* check fails. If any of the parameter contents match the blacklist of words,
|
18
|
-
* then the check fails.
|
19
|
-
*
|
20
|
-
* If the comment author was approved before, then the comment is automatically
|
21
|
-
* whitelisted.
|
22
|
-
*
|
23
|
-
* If all checks pass, the function will return true.
|
24
|
-
*
|
25
|
-
* @since 1.2.0
|
26
|
-
*
|
27
|
-
* @global wpdb $wpdb WordPress database access abstraction object.
|
28
|
-
*
|
29
|
-
* @param string $author Comment author name.
|
30
|
-
* @param string $email Comment author email.
|
31
|
-
* @param string $url Comment author URL.
|
32
|
-
* @param string $comment Content of the comment.
|
33
|
-
* @param string $user_ip Comment author IP address.
|
34
|
-
* @param string $user_agent Comment author User-Agent.
|
35
|
-
* @param string $comment_type Comment type, either user-submitted comment,
|
36
|
-
* trackback, or pingback.
|
37
|
-
* @return bool If all checks pass, true, otherwise false.
|
38
|
-
*/
|
39
|
-
function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {
|
40
|
-
global $wpdb;
|
41
|
-
|
42
|
-
// If manual moderation is enabled, skip all checks and return false.
|
43
|
-
if ( 1 == get_option('comment_moderation') )
|
44
|
-
return false;
|
45
|
-
|
46
|
-
/** This filter is documented in wp-includes/comment-template.php */
|
47
|
-
$comment = apply_filters( 'comment_text', $comment );
|
48
|
-
|
49
|
-
// Check for the number of external links if a max allowed number is set.
|
50
|
-
if ( $max_links = get_option( 'comment_max_links' ) ) {
|
51
|
-
$num_links = preg_match_all( '/<a [^>]*href/i', $comment, $out );
|
52
|
-
|
53
|
-
/**
|
54
|
-
* Filter the maximum number of links allowed in a comment.
|
55
|
-
*
|
56
|
-
* @since 3.0.0
|
57
|
-
*
|
58
|
-
* @param int $num_links The number of links allowed.
|
59
|
-
* @param string $url Comment author's URL. Included in allowed links total.
|
60
|
-
*/
|
61
|
-
$num_links = apply_filters( 'comment_max_links_url', $num_links, $url );
|
62
|
-
|
63
|
-
/*
|
64
|
-
* If the number of links in the comment exceeds the allowed amount,
|
65
|
-
* fail the check by returning false.
|
66
|
-
*/
|
67
|
-
if ( $num_links >= $max_links )
|
68
|
-
return false;
|
69
|
-
}
|
70
|
-
|
71
|
-
$mod_keys = trim(get_option('moderation_keys'));
|
72
|
-
|
73
|
-
// If moderation 'keys' (keywords) are set, process them.
|
74
|
-
if ( !empty($mod_keys) ) {
|
75
|
-
$words = explode("\n", $mod_keys );
|
76
|
-
|
77
|
-
foreach ( (array) $words as $word) {
|
78
|
-
$word = trim($word);
|
79
|
-
|
80
|
-
// Skip empty lines.
|
81
|
-
if ( empty($word) )
|
82
|
-
continue;
|
83
|
-
|
84
|
-
/*
|
85
|
-
* Do some escaping magic so that '#' (number of) characters in the spam
|
86
|
-
* words don't break things:
|
87
|
-
*/
|
88
|
-
$word = preg_quote($word, '#');
|
89
|
-
|
90
|
-
/*
|
91
|
-
* Check the comment fields for moderation keywords. If any are found,
|
92
|
-
* fail the check for the given field by returning false.
|
93
|
-
*/
|
94
|
-
$pattern = "#$word#i";
|
95
|
-
if ( preg_match($pattern, $author) ) return false;
|
96
|
-
if ( preg_match($pattern, $email) ) return false;
|
97
|
-
if ( preg_match($pattern, $url) ) return false;
|
98
|
-
if ( preg_match($pattern, $comment) ) return false;
|
99
|
-
if ( preg_match($pattern, $user_ip) ) return false;
|
100
|
-
if ( preg_match($pattern, $user_agent) ) return false;
|
101
|
-
}
|
102
|
-
}
|
103
|
-
|
104
|
-
/*
|
105
|
-
* Check if the option to approve comments by previously-approved authors is enabled.
|
106
|
-
*
|
107
|
-
* If it is enabled, check whether the comment author has a previously-approved comment,
|
108
|
-
* as well as whether there are any moderation keywords (if set) present in the author
|
109
|
-
* email address. If both checks pass, return true. Otherwise, return false.
|
110
|
-
*/
|
111
|
-
if ( 1 == get_option('comment_whitelist')) {
|
112
|
-
if ( 'trackback' != $comment_type && 'pingback' != $comment_type && $author != '' && $email != '' ) {
|
113
|
-
// expected_slashed ($author, $email)
|
114
|
-
$ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$author' AND comment_author_email = '$email' and comment_approved = '1' LIMIT 1");
|
115
|
-
if ( ( 1 == $ok_to_comment ) &&
|
116
|
-
( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )
|
117
|
-
return true;
|
118
|
-
else
|
119
|
-
return false;
|
120
|
-
} else {
|
121
|
-
return false;
|
122
|
-
}
|
123
|
-
}
|
124
|
-
return true;
|
125
|
-
}
|
126
|
-
|
127
|
-
/**
|
128
|
-
* Retrieve the approved comments for post $post_id.
|
129
|
-
*
|
130
|
-
* @since 2.0.0
|
131
|
-
* @uses $wpdb
|
132
|
-
*
|
133
|
-
* @param int $post_id The ID of the post
|
134
|
-
* @return array $comments The approved comments
|
135
|
-
*/
|
136
|
-
function get_approved_comments($post_id) {
|
137
|
-
global $wpdb;
|
138
|
-
return $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' ORDER BY comment_date", $post_id));
|
139
|
-
}
|
140
|
-
|
141
|
-
/**
|
142
|
-
* Retrieves comment data given a comment ID or comment object.
|
143
|
-
*
|
144
|
-
* If an object is passed then the comment data will be cached and then returned
|
145
|
-
* after being passed through a filter. If the comment is empty, then the global
|
146
|
-
* comment variable will be used, if it is set.
|
147
|
-
*
|
148
|
-
* @since 2.0.0
|
149
|
-
* @uses $wpdb
|
150
|
-
*
|
151
|
-
* @param object|string|int $comment Comment to retrieve.
|
152
|
-
* @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants.
|
153
|
-
* @return object|array|null Depends on $output value.
|
154
|
-
*/
|
155
|
-
function get_comment(&$comment, $output = OBJECT) {
|
156
|
-
global $wpdb;
|
157
|
-
|
158
|
-
if ( empty($comment) ) {
|
159
|
-
if ( isset($GLOBALS['comment']) )
|
160
|
-
$_comment = & $GLOBALS['comment'];
|
161
|
-
else
|
162
|
-
$_comment = null;
|
163
|
-
} elseif ( is_object($comment) ) {
|
164
|
-
wp_cache_add($comment->comment_ID, $comment, 'comment');
|
165
|
-
$_comment = $comment;
|
166
|
-
} else {
|
167
|
-
if ( isset($GLOBALS['comment']) && ($GLOBALS['comment']->comment_ID == $comment) ) {
|
168
|
-
$_comment = & $GLOBALS['comment'];
|
169
|
-
} elseif ( ! $_comment = wp_cache_get($comment, 'comment') ) {
|
170
|
-
$_comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment));
|
171
|
-
if ( ! $_comment )
|
172
|
-
return null;
|
173
|
-
wp_cache_add($_comment->comment_ID, $_comment, 'comment');
|
174
|
-
}
|
175
|
-
}
|
176
|
-
|
177
|
-
/**
|
178
|
-
* Fires after a comment is retrieved.
|
179
|
-
*
|
180
|
-
* @since 2.3.0
|
181
|
-
*
|
182
|
-
* @param mixed $_comment Comment data.
|
183
|
-
*/
|
184
|
-
$_comment = apply_filters( 'get_comment', $_comment );
|
185
|
-
|
186
|
-
if ( $output == OBJECT ) {
|
187
|
-
return $_comment;
|
188
|
-
} elseif ( $output == ARRAY_A ) {
|
189
|
-
$__comment = get_object_vars($_comment);
|
190
|
-
return $__comment;
|
191
|
-
} elseif ( $output == ARRAY_N ) {
|
192
|
-
$__comment = array_values(get_object_vars($_comment));
|
193
|
-
return $__comment;
|
194
|
-
} else {
|
195
|
-
return $_comment;
|
196
|
-
}
|
197
|
-
}
|
198
|
-
|
199
|
-
/**
|
200
|
-
* Retrieve a list of comments.
|
201
|
-
*
|
202
|
-
* The comment list can be for the blog as a whole or for an individual post.
|
203
|
-
*
|
204
|
-
* The list of comment arguments are 'status', 'orderby', 'comment_date_gmt',
|
205
|
-
* 'order', 'number', 'offset', and 'post_id'.
|
206
|
-
*
|
207
|
-
* @since 2.7.0
|
208
|
-
* @uses $wpdb
|
209
|
-
*
|
210
|
-
* @param mixed $args Optional. Array or string of options to override defaults.
|
211
|
-
* @return array List of comments.
|
212
|
-
*/
|
213
|
-
function get_comments( $args = '' ) {
|
214
|
-
$query = new WP_Comment_Query;
|
215
|
-
return $query->query( $args );
|
216
|
-
}
|
217
|
-
|
218
|
-
/**
|
219
|
-
* WordPress Comment Query class.
|
220
|
-
*
|
221
|
-
* @since 3.1.0
|
222
|
-
*/
|
223
|
-
class WP_Comment_Query {
|
224
|
-
/**
|
225
|
-
* Metadata query container
|
226
|
-
*
|
227
|
-
* @since 3.5.0
|
228
|
-
* @access public
|
229
|
-
* @var object WP_Meta_Query
|
230
|
-
*/
|
231
|
-
public $meta_query = false;
|
232
|
-
|
233
|
-
/**
|
234
|
-
* Date query container
|
235
|
-
*
|
236
|
-
* @since 3.7.0
|
237
|
-
* @access public
|
238
|
-
* @var object WP_Date_Query
|
239
|
-
*/
|
240
|
-
public $date_query = false;
|
241
|
-
|
242
|
-
/**
|
243
|
-
* Make private/protected methods readable for backwards compatibility.
|
244
|
-
*
|
245
|
-
* @since 4.0.0
|
246
|
-
* @access public
|
247
|
-
*
|
248
|
-
* @param callable $name Method to call.
|
249
|
-
* @param array $arguments Arguments to pass when calling.
|
250
|
-
* @return mixed|bool Return value of the callback, false otherwise.
|
251
|
-
*/
|
252
|
-
public function __call( $name, $arguments ) {
|
253
|
-
return call_user_func_array( array( $this, $name ), $arguments );
|
254
|
-
}
|
255
|
-
|
256
|
-
/**
|
257
|
-
* Execute the query
|
258
|
-
*
|
259
|
-
* @since 3.1.0
|
260
|
-
* @since 4.1.0 Introduced 'comment__in', 'comment__not_in',
|
261
|
-
* 'post__in', and 'post__not_in' to $query_vars.
|
262
|
-
*
|
263
|
-
* @param string|array $query_vars
|
264
|
-
* @return int|array
|
265
|
-
*/
|
266
|
-
public function query( $query_vars ) {
|
267
|
-
global $wpdb;
|
268
|
-
|
269
|
-
$defaults = array(
|
270
|
-
'author_email' => '',
|
271
|
-
'fields' => '',
|
272
|
-
'ID' => '',
|
273
|
-
'comment__in' => '',
|
274
|
-
'comment__not_in' => '',
|
275
|
-
'karma' => '',
|
276
|
-
'number' => '',
|
277
|
-
'offset' => '',
|
278
|
-
'orderby' => '',
|
279
|
-
'order' => 'DESC',
|
280
|
-
'parent' => '',
|
281
|
-
'post_ID' => '',
|
282
|
-
'post_id' => 0,
|
283
|
-
'post__in' => '',
|
284
|
-
'post__not_in' => '',
|
285
|
-
'post_author' => '',
|
286
|
-
'post_name' => '',
|
287
|
-
'post_parent' => '',
|
288
|
-
'post_status' => '',
|
289
|
-
'post_type' => '',
|
290
|
-
'status' => '',
|
291
|
-
'type' => '',
|
292
|
-
'user_id' => '',
|
293
|
-
'search' => '',
|
294
|
-
'count' => false,
|
295
|
-
'meta_key' => '',
|
296
|
-
'meta_value' => '',
|
297
|
-
'meta_query' => '',
|
298
|
-
'date_query' => null, // See WP_Date_Query
|
299
|
-
);
|
300
|
-
|
301
|
-
$groupby = '';
|
302
|
-
|
303
|
-
$this->query_vars = wp_parse_args( $query_vars, $defaults );
|
304
|
-
|
305
|
-
// Parse meta query
|
306
|
-
$this->meta_query = new WP_Meta_Query();
|
307
|
-
$this->meta_query->parse_query_vars( $this->query_vars );
|
308
|
-
|
309
|
-
/**
|
310
|
-
* Fires before comments are retrieved.
|
311
|
-
*
|
312
|
-
* @since 3.1.0
|
313
|
-
*
|
314
|
-
* @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference.
|
315
|
-
*/
|
316
|
-
do_action_ref_array( 'pre_get_comments', array( &$this ) );
|
317
|
-
|
318
|
-
// $args can be whatever, only use the args defined in defaults to compute the key
|
319
|
-
$key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $defaults ) ) ) );
|
320
|
-
$last_changed = wp_cache_get( 'last_changed', 'comment' );
|
321
|
-
if ( ! $last_changed ) {
|
322
|
-
$last_changed = microtime();
|
323
|
-
wp_cache_set( 'last_changed', $last_changed, 'comment' );
|
324
|
-
}
|
325
|
-
$cache_key = "get_comments:$key:$last_changed";
|
326
|
-
|
327
|
-
if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) {
|
328
|
-
return $cache;
|
329
|
-
}
|
330
|
-
|
331
|
-
$status = $this->query_vars['status'];
|
332
|
-
if ( 'hold' == $status ) {
|
333
|
-
$approved = "comment_approved = '0'";
|
334
|
-
} elseif ( 'approve' == $status ) {
|
335
|
-
$approved = "comment_approved = '1'";
|
336
|
-
} elseif ( ! empty( $status ) && 'all' != $status ) {
|
337
|
-
$approved = $wpdb->prepare( "comment_approved = %s", $status );
|
338
|
-
} else {
|
339
|
-
$approved = "( comment_approved = '0' OR comment_approved = '1' )";
|
340
|
-
}
|
341
|
-
$order = ( 'ASC' == strtoupper( $this->query_vars['order'] ) ) ? 'ASC' : 'DESC';
|
342
|
-
|
343
|
-
if ( ! empty( $this->query_vars['orderby'] ) ) {
|
344
|
-
$ordersby = is_array( $this->query_vars['orderby'] ) ?
|
345
|
-
$this->query_vars['orderby'] :
|
346
|
-
preg_split( '/[,\s]/', $this->query_vars['orderby'] );
|
347
|
-
|
348
|
-
$allowed_keys = array(
|
349
|
-
'comment_agent',
|
350
|
-
'comment_approved',
|
351
|
-
'comment_author',
|
352
|
-
'comment_author_email',
|
353
|
-
'comment_author_IP',
|
354
|
-
'comment_author_url',
|
355
|
-
'comment_content',
|
356
|
-
'comment_date',
|
357
|
-
'comment_date_gmt',
|
358
|
-
'comment_ID',
|
359
|
-
'comment_karma',
|
360
|
-
'comment_parent',
|
361
|
-
'comment_post_ID',
|
362
|
-
'comment_type',
|
363
|
-
'user_id',
|
364
|
-
);
|
365
|
-
if ( ! empty( $this->query_vars['meta_key'] ) ) {
|
366
|
-
$allowed_keys[] = $this->query_vars['meta_key'];
|
367
|
-
$allowed_keys[] = 'meta_value';
|
368
|
-
$allowed_keys[] = 'meta_value_num';
|
369
|
-
}
|
370
|
-
$ordersby = array_intersect( $ordersby, $allowed_keys );
|
371
|
-
foreach ( $ordersby as $key => $value ) {
|
372
|
-
if ( $value == $this->query_vars['meta_key'] || $value == 'meta_value' ) {
|
373
|
-
$ordersby[ $key ] = "$wpdb->commentmeta.meta_value";
|
374
|
-
} elseif ( $value == 'meta_value_num' ) {
|
375
|
-
$ordersby[ $key ] = "$wpdb->commentmeta.meta_value+0";
|
376
|
-
}
|
377
|
-
}
|
378
|
-
$orderby = empty( $ordersby ) ? 'comment_date_gmt' : implode(', ', $ordersby);
|
379
|
-
} else {
|
380
|
-
$orderby = 'comment_date_gmt';
|
381
|
-
}
|
382
|
-
|
383
|
-
$number = absint( $this->query_vars['number'] );
|
384
|
-
$offset = absint( $this->query_vars['offset'] );
|
385
|
-
|
386
|
-
if ( ! empty( $number ) ) {
|
387
|
-
if ( $offset ) {
|
388
|
-
$limits = 'LIMIT ' . $offset . ',' . $number;
|
389
|
-
} else {
|
390
|
-
$limits = 'LIMIT ' . $number;
|
391
|
-
}
|
392
|
-
} else {
|
393
|
-
$limits = '';
|
394
|
-
}
|
395
|
-
|
396
|
-
if ( $this->query_vars['count'] ) {
|
397
|
-
$fields = 'COUNT(*)';
|
398
|
-
} else {
|
399
|
-
switch ( strtolower( $this->query_vars['fields'] ) ) {
|
400
|
-
case 'ids':
|
401
|
-
$fields = "$wpdb->comments.comment_ID";
|
402
|
-
break;
|
403
|
-
default:
|
404
|
-
$fields = "*";
|
405
|
-
break;
|
406
|
-
}
|
407
|
-
}
|
408
|
-
|
409
|
-
$join = '';
|
410
|
-
$where = $approved;
|
411
|
-
|
412
|
-
$post_id = absint( $this->query_vars['post_id'] );
|
413
|
-
if ( ! empty( $post_id ) ) {
|
414
|
-
$where .= $wpdb->prepare( ' AND comment_post_ID = %d', $post_id );
|
415
|
-
}
|
416
|
-
|
417
|
-
// Parse comment IDs for an IN clause.
|
418
|
-
if ( ! empty( $this->query_vars['comment__in'] ) ) {
|
419
|
-
$where .= ' AND comment_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['comment__in'] ) ) . ' )';
|
420
|
-
}
|
421
|
-
|
422
|
-
// Parse comment IDs for a NOT IN clause.
|
423
|
-
if ( ! empty( $this->query_vars['comment__not_in'] ) ) {
|
424
|
-
$where .= ' AND comment_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['comment__not_in'] ) ) . ' )';
|
425
|
-
}
|
426
|
-
|
427
|
-
// Parse comment post IDs for an IN clause.
|
428
|
-
if ( ! empty( $this->query_vars['post__in'] ) ) {
|
429
|
-
$where .= ' AND comment_post_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__in'] ) ) . ' )';
|
430
|
-
}
|
431
|
-
|
432
|
-
// Parse comment post IDs for a NOT IN clause.
|
433
|
-
if ( ! empty( $this->query_vars['post__not_in'] ) ) {
|
434
|
-
$where .= ' AND comment_post_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__not_in'] ) ) . ' )';
|
435
|
-
}
|
436
|
-
|
437
|
-
if ( '' !== $this->query_vars['author_email'] ) {
|
438
|
-
$where .= $wpdb->prepare( ' AND comment_author_email = %s', $this->query_vars['author_email'] );
|
439
|
-
}
|
440
|
-
|
441
|
-
if ( '' !== $this->query_vars['karma'] ) {
|
442
|
-
$where .= $wpdb->prepare( ' AND comment_karma = %d', $this->query_vars['karma'] );
|
443
|
-
}
|
444
|
-
|
445
|
-
if ( 'comment' == $this->query_vars['type'] ) {
|
446
|
-
$where .= " AND comment_type = ''";
|
447
|
-
} elseif( 'pings' == $this->query_vars['type'] ) {
|
448
|
-
$where .= ' AND comment_type IN ("pingback", "trackback")';
|
449
|
-
} elseif ( ! empty( $this->query_vars['type'] ) ) {
|
450
|
-
$where .= $wpdb->prepare( ' AND comment_type = %s', $this->query_vars['type'] );
|
451
|
-
}
|
452
|
-
|
453
|
-
if ( '' !== $this->query_vars['parent'] ) {
|
454
|
-
$where .= $wpdb->prepare( ' AND comment_parent = %d', $this->query_vars['parent'] );
|
455
|
-
}
|
456
|
-
|
457
|
-
if ( is_array( $this->query_vars['user_id'] ) ) {
|
458
|
-
$where .= ' AND user_id IN (' . implode( ',', array_map( 'absint', $this->query_vars['user_id'] ) ) . ')';
|
459
|
-
} elseif ( '' !== $this->query_vars['user_id'] ) {
|
460
|
-
$where .= $wpdb->prepare( ' AND user_id = %d', $this->query_vars['user_id'] );
|
461
|
-
}
|
462
|
-
|
463
|
-
if ( '' !== $this->query_vars['search'] ) {
|
464
|
-
$where .= $this->get_search_sql(
|
465
|
-
$this->query_vars['search'],
|
466
|
-
array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' )
|
467
|
-
);
|
468
|
-
}
|
469
|
-
|
470
|
-
$plucked = wp_array_slice_assoc( $this->query_vars, array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type' ) );
|
471
|
-
$post_fields = array_filter( $plucked );
|
472
|
-
|
473
|
-
if ( ! empty( $post_fields ) ) {
|
474
|
-
$join = "JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID";
|
475
|
-
foreach( $post_fields as $field_name => $field_value )
|
476
|
-
$where .= $wpdb->prepare( " AND {$wpdb->posts}.{$field_name} = %s", $field_value );
|
477
|
-
}
|
478
|
-
|
479
|
-
if ( ! empty( $this->meta_query->queries ) ) {
|
480
|
-
$clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
|
481
|
-
$join .= $clauses['join'];
|
482
|
-
$where .= $clauses['where'];
|
483
|
-
$groupby = "{$wpdb->comments}.comment_ID";
|
484
|
-
}
|
485
|
-
|
486
|
-
$date_query = $this->query_vars['date_query'];
|
487
|
-
if ( ! empty( $date_query ) && is_array( $date_query ) ) {
|
488
|
-
$date_query_object = new WP_Date_Query( $date_query, 'comment_date' );
|
489
|
-
$where .= $date_query_object->get_sql();
|
490
|
-
}
|
491
|
-
|
492
|
-
$pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits', 'groupby' );
|
493
|
-
/**
|
494
|
-
* Filter the comment query clauses.
|
495
|
-
*
|
496
|
-
* @since 3.1.0
|
497
|
-
*
|
498
|
-
* @param array $pieces A compacted array of comment query clauses.
|
499
|
-
* @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference.
|
500
|
-
*/
|
501
|
-
$clauses = apply_filters_ref_array( 'comments_clauses', array( compact( $pieces ), &$this ) );
|
502
|
-
|
503
|
-
$fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
|
504
|
-
$join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
|
505
|
-
$where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
|
506
|
-
$orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : '';
|
507
|
-
$order = isset( $clauses[ 'order' ] ) ? $clauses[ 'order' ] : '';
|
508
|
-
$limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
|
509
|
-
$groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
|
510
|
-
|
511
|
-
if ( $groupby ) {
|
512
|
-
$groupby = 'GROUP BY ' . $groupby;
|
513
|
-
}
|
514
|
-
$query = "SELECT $fields FROM $wpdb->comments $join WHERE $where $groupby ORDER BY $orderby $order $limits";
|
515
|
-
|
516
|
-
if ( $this->query_vars['count'] ) {
|
517
|
-
return $wpdb->get_var( $query );
|
518
|
-
}
|
519
|
-
|
520
|
-
if ( 'ids' == $this->query_vars['fields'] ) {
|
521
|
-
$this->comments = $wpdb->get_col( $query );
|
522
|
-
return array_map( 'intval', $this->comments );
|
523
|
-
}
|
524
|
-
|
525
|
-
$results = $wpdb->get_results( $query );
|
526
|
-
/**
|
527
|
-
* Filter the comment query results.
|
528
|
-
*
|
529
|
-
* @since 3.1.0
|
530
|
-
*
|
531
|
-
* @param array $results An array of comments.
|
532
|
-
* @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference.
|
533
|
-
*/
|
534
|
-
$comments = apply_filters_ref_array( 'the_comments', array( $results, &$this ) );
|
535
|
-
|
536
|
-
wp_cache_add( $cache_key, $comments, 'comment' );
|
537
|
-
|
538
|
-
return $comments;
|
539
|
-
}
|
540
|
-
|
541
|
-
/**
|
542
|
-
* Used internally to generate an SQL string for searching across multiple columns
|
543
|
-
*
|
544
|
-
* @access protected
|
545
|
-
* @since 3.1.0
|
546
|
-
*
|
547
|
-
* @param string $string
|
548
|
-
* @param array $cols
|
549
|
-
* @return string
|
550
|
-
*/
|
551
|
-
protected function get_search_sql( $string, $cols ) {
|
552
|
-
global $wpdb;
|
553
|
-
|
554
|
-
$like = '%' . $wpdb->esc_like( $string ) . '%';
|
555
|
-
|
556
|
-
$searches = array();
|
557
|
-
foreach ( $cols as $col ) {
|
558
|
-
$searches[] = $wpdb->prepare( "$col LIKE %s", $like );
|
559
|
-
}
|
560
|
-
|
561
|
-
return ' AND (' . implode(' OR ', $searches) . ')';
|
562
|
-
}
|
563
|
-
}
|
564
|
-
|
565
|
-
/**
|
566
|
-
* Retrieve all of the WordPress supported comment statuses.
|
567
|
-
*
|
568
|
-
* Comments have a limited set of valid status values, this provides the comment
|
569
|
-
* status values and descriptions.
|
570
|
-
*
|
571
|
-
* @since 2.7.0
|
572
|
-
*
|
573
|
-
* @return array List of comment statuses.
|
574
|
-
*/
|
575
|
-
function get_comment_statuses() {
|
576
|
-
$status = array(
|
577
|
-
'hold' => __('Unapproved'),
|
578
|
-
/* translators: comment status */
|
579
|
-
'approve' => _x('Approved', 'adjective'),
|
580
|
-
/* translators: comment status */
|
581
|
-
'spam' => _x('Spam', 'adjective'),
|
582
|
-
);
|
583
|
-
|
584
|
-
return $status;
|
585
|
-
}
|
586
|
-
|
587
|
-
/**
|
588
|
-
* The date the last comment was modified.
|
589
|
-
*
|
590
|
-
* @since 1.5.0
|
591
|
-
* @uses $wpdb
|
592
|
-
*
|
593
|
-
* @param string $timezone Which timezone to use in reference to 'gmt', 'blog',
|
594
|
-
* or 'server' locations.
|
595
|
-
* @return string Last comment modified date.
|
596
|
-
*/
|
597
|
-
function get_lastcommentmodified($timezone = 'server') {
|
598
|
-
global $wpdb;
|
599
|
-
static $cache_lastcommentmodified = array();
|
600
|
-
|
601
|
-
if ( isset($cache_lastcommentmodified[$timezone]) )
|
602
|
-
return $cache_lastcommentmodified[$timezone];
|
603
|
-
|
604
|
-
$add_seconds_server = date('Z');
|
605
|
-
|
606
|
-
switch ( strtolower($timezone)) {
|
607
|
-
case 'gmt':
|
608
|
-
$lastcommentmodified = $wpdb->get_var("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");
|
609
|
-
break;
|
610
|
-
case 'blog':
|
611
|
-
$lastcommentmodified = $wpdb->get_var("SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1");
|
612
|
-
break;
|
613
|
-
case 'server':
|
614
|
-
$lastcommentmodified = $wpdb->get_var($wpdb->prepare("SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND) FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1", $add_seconds_server));
|
615
|
-
break;
|
616
|
-
}
|
617
|
-
|
618
|
-
$cache_lastcommentmodified[$timezone] = $lastcommentmodified;
|
619
|
-
|
620
|
-
return $lastcommentmodified;
|
621
|
-
}
|
622
|
-
|
623
|
-
/**
|
624
|
-
* The amount of comments in a post or total comments.
|
625
|
-
*
|
626
|
-
* A lot like {@link wp_count_comments()}, in that they both return comment
|
627
|
-
* stats (albeit with different types). The {@link wp_count_comments()} actual
|
628
|
-
* caches, but this function does not.
|
629
|
-
*
|
630
|
-
* @since 2.0.0
|
631
|
-
* @uses $wpdb
|
632
|
-
*
|
633
|
-
* @param int $post_id Optional. Comment amount in post if > 0, else total comments blog wide.
|
634
|
-
* @return array The amount of spam, approved, awaiting moderation, and total comments.
|
635
|
-
*/
|
636
|
-
function get_comment_count( $post_id = 0 ) {
|
637
|
-
global $wpdb;
|
638
|
-
|
639
|
-
$post_id = (int) $post_id;
|
640
|
-
|
641
|
-
$where = '';
|
642
|
-
if ( $post_id > 0 ) {
|
643
|
-
$where = $wpdb->prepare("WHERE comment_post_ID = %d", $post_id);
|
644
|
-
}
|
645
|
-
|
646
|
-
$totals = (array) $wpdb->get_results("
|
647
|
-
SELECT comment_approved, COUNT( * ) AS total
|
648
|
-
FROM {$wpdb->comments}
|
649
|
-
{$where}
|
650
|
-
GROUP BY comment_approved
|
651
|
-
", ARRAY_A);
|
652
|
-
|
653
|
-
$comment_count = array(
|
654
|
-
"approved" => 0,
|
655
|
-
"awaiting_moderation" => 0,
|
656
|
-
"spam" => 0,
|
657
|
-
"total_comments" => 0
|
658
|
-
);
|
659
|
-
|
660
|
-
foreach ( $totals as $row ) {
|
661
|
-
switch ( $row['comment_approved'] ) {
|
662
|
-
case 'spam':
|
663
|
-
$comment_count['spam'] = $row['total'];
|
664
|
-
$comment_count["total_comments"] += $row['total'];
|
665
|
-
break;
|
666
|
-
case 1:
|
667
|
-
$comment_count['approved'] = $row['total'];
|
668
|
-
$comment_count['total_comments'] += $row['total'];
|
669
|
-
break;
|
670
|
-
case 0:
|
671
|
-
$comment_count['awaiting_moderation'] = $row['total'];
|
672
|
-
$comment_count['total_comments'] += $row['total'];
|
673
|
-
break;
|
674
|
-
default:
|
675
|
-
break;
|
676
|
-
}
|
677
|
-
}
|
678
|
-
|
679
|
-
return $comment_count;
|
680
|
-
}
|
681
|
-
|
682
|
-
//
|
683
|
-
// Comment meta functions
|
684
|
-
//
|
685
|
-
|
686
|
-
/**
|
687
|
-
* Add meta data field to a comment.
|
688
|
-
*
|
689
|
-
* @since 2.9.0
|
690
|
-
* @uses add_metadata
|
691
|
-
* @link http://codex.wordpress.org/Function_Reference/add_comment_meta
|
692
|
-
*
|
693
|
-
* @param int $comment_id Comment ID.
|
694
|
-
* @param string $meta_key Metadata name.
|
695
|
-
* @param mixed $meta_value Metadata value.
|
696
|
-
* @param bool $unique Optional, default is false. Whether the same key should not be added.
|
697
|
-
* @return int|bool Meta ID on success, false on failure.
|
698
|
-
*/
|
699
|
-
function add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false) {
|
700
|
-
return add_metadata('comment', $comment_id, $meta_key, $meta_value, $unique);
|
701
|
-
}
|
702
|
-
|
703
|
-
/**
|
704
|
-
* Remove metadata matching criteria from a comment.
|
705
|
-
*
|
706
|
-
* You can match based on the key, or key and value. Removing based on key and
|
707
|
-
* value, will keep from removing duplicate metadata with the same key. It also
|
708
|
-
* allows removing all metadata matching key, if needed.
|
709
|
-
*
|
710
|
-
* @since 2.9.0
|
711
|
-
* @uses delete_metadata
|
712
|
-
* @link http://codex.wordpress.org/Function_Reference/delete_comment_meta
|
713
|
-
*
|
714
|
-
* @param int $comment_id comment ID
|
715
|
-
* @param string $meta_key Metadata name.
|
716
|
-
* @param mixed $meta_value Optional. Metadata value.
|
717
|
-
* @return bool True on success, false on failure.
|
718
|
-
*/
|
719
|
-
function delete_comment_meta($comment_id, $meta_key, $meta_value = '') {
|
720
|
-
return delete_metadata('comment', $comment_id, $meta_key, $meta_value);
|
721
|
-
}
|
722
|
-
|
723
|
-
/**
|
724
|
-
* Retrieve comment meta field for a comment.
|
725
|
-
*
|
726
|
-
* @since 2.9.0
|
727
|
-
* @uses get_metadata
|
728
|
-
* @link http://codex.wordpress.org/Function_Reference/get_comment_meta
|
729
|
-
*
|
730
|
-
* @param int $comment_id Comment ID.
|
731
|
-
* @param string $key Optional. The meta key to retrieve. By default, returns data for all keys.
|
732
|
-
* @param bool $single Whether to return a single value.
|
733
|
-
* @return mixed Will be an array if $single is false. Will be value of meta data field if $single
|
734
|
-
* is true.
|
735
|
-
*/
|
736
|
-
function get_comment_meta($comment_id, $key = '', $single = false) {
|
737
|
-
return get_metadata('comment', $comment_id, $key, $single);
|
738
|
-
}
|
739
|
-
|
740
|
-
/**
|
741
|
-
* Update comment meta field based on comment ID.
|
742
|
-
*
|
743
|
-
* Use the $prev_value parameter to differentiate between meta fields with the
|
744
|
-
* same key and comment ID.
|
745
|
-
*
|
746
|
-
* If the meta field for the comment does not exist, it will be added.
|
747
|
-
*
|
748
|
-
* @since 2.9.0
|
749
|
-
* @uses update_metadata
|
750
|
-
* @link http://codex.wordpress.org/Function_Reference/update_comment_meta
|
751
|
-
*
|
752
|
-
* @param int $comment_id Comment ID.
|
753
|
-
* @param string $meta_key Metadata key.
|
754
|
-
* @param mixed $meta_value Metadata value.
|
755
|
-
* @param mixed $prev_value Optional. Previous value to check before removing.
|
756
|
-
* @return int|bool Meta ID if the key didn't exist, true on successful update, false on failure.
|
757
|
-
*/
|
758
|
-
function update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value = '') {
|
759
|
-
return update_metadata('comment', $comment_id, $meta_key, $meta_value, $prev_value);
|
760
|
-
}
|
761
|
-
|
762
|
-
/**
|
763
|
-
* Sets the cookies used to store an unauthenticated commentator's identity. Typically used
|
764
|
-
* to recall previous comments by this commentator that are still held in moderation.
|
765
|
-
*
|
766
|
-
* @param object $comment Comment object.
|
767
|
-
* @param object $user Comment author's object.
|
768
|
-
*
|
769
|
-
* @since 3.4.0
|
770
|
-
*/
|
771
|
-
function wp_set_comment_cookies($comment, $user) {
|
772
|
-
if ( $user->exists() )
|
773
|
-
return;
|
774
|
-
|
775
|
-
/**
|
776
|
-
* Filter the lifetime of the comment cookie in seconds.
|
777
|
-
*
|
778
|
-
* @since 2.8.0
|
779
|
-
*
|
780
|
-
* @param int $seconds Comment cookie lifetime. Default 30000000.
|
781
|
-
*/
|
782
|
-
$comment_cookie_lifetime = apply_filters( 'comment_cookie_lifetime', 30000000 );
|
783
|
-
$secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
|
784
|
-
setcookie( 'comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
|
785
|
-
setcookie( 'comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
|
786
|
-
setcookie( 'comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
|
787
|
-
}
|
788
|
-
|
789
|
-
/**
|
790
|
-
* Sanitizes the cookies sent to the user already.
|
791
|
-
*
|
792
|
-
* Will only do anything if the cookies have already been created for the user.
|
793
|
-
* Mostly used after cookies had been sent to use elsewhere.
|
794
|
-
*
|
795
|
-
* @since 2.0.4
|
796
|
-
*/
|
797
|
-
function sanitize_comment_cookies() {
|
798
|
-
if ( isset( $_COOKIE['comment_author_' . COOKIEHASH] ) ) {
|
799
|
-
/**
|
800
|
-
* Filter the comment author's name cookie before it is set.
|
801
|
-
*
|
802
|
-
* When this filter hook is evaluated in wp_filter_comment(),
|
803
|
-
* the comment author's name string is passed.
|
804
|
-
*
|
805
|
-
* @since 1.5.0
|
806
|
-
*
|
807
|
-
* @param string $author_cookie The comment author name cookie.
|
808
|
-
*/
|
809
|
-
$comment_author = apply_filters( 'pre_comment_author_name', $_COOKIE['comment_author_' . COOKIEHASH] );
|
810
|
-
$comment_author = wp_unslash($comment_author);
|
811
|
-
$comment_author = esc_attr($comment_author);
|
812
|
-
$_COOKIE['comment_author_' . COOKIEHASH] = $comment_author;
|
813
|
-
}
|
814
|
-
|
815
|
-
if ( isset( $_COOKIE['comment_author_email_' . COOKIEHASH] ) ) {
|
816
|
-
/**
|
817
|
-
* Filter the comment author's email cookie before it is set.
|
818
|
-
*
|
819
|
-
* When this filter hook is evaluated in wp_filter_comment(),
|
820
|
-
* the comment author's email string is passed.
|
821
|
-
*
|
822
|
-
* @since 1.5.0
|
823
|
-
*
|
824
|
-
* @param string $author_email_cookie The comment author email cookie.
|
825
|
-
*/
|
826
|
-
$comment_author_email = apply_filters( 'pre_comment_author_email', $_COOKIE['comment_author_email_' . COOKIEHASH] );
|
827
|
-
$comment_author_email = wp_unslash($comment_author_email);
|
828
|
-
$comment_author_email = esc_attr($comment_author_email);
|
829
|
-
$_COOKIE['comment_author_email_'.COOKIEHASH] = $comment_author_email;
|
830
|
-
}
|
831
|
-
|
832
|
-
if ( isset( $_COOKIE['comment_author_url_' . COOKIEHASH] ) ) {
|
833
|
-
/**
|
834
|
-
* Filter the comment author's URL cookie before it is set.
|
835
|
-
*
|
836
|
-
* When this filter hook is evaluated in wp_filter_comment(),
|
837
|
-
* the comment author's URL string is passed.
|
838
|
-
*
|
839
|
-
* @since 1.5.0
|
840
|
-
*
|
841
|
-
* @param string $author_url_cookie The comment author URL cookie.
|
842
|
-
*/
|
843
|
-
$comment_author_url = apply_filters( 'pre_comment_author_url', $_COOKIE['comment_author_url_' . COOKIEHASH] );
|
844
|
-
$comment_author_url = wp_unslash($comment_author_url);
|
845
|
-
$_COOKIE['comment_author_url_'.COOKIEHASH] = $comment_author_url;
|
846
|
-
}
|
847
|
-
}
|
848
|
-
|
849
|
-
/**
|
850
|
-
* Validates whether this comment is allowed to be made.
|
851
|
-
*
|
852
|
-
* @since 2.0.0
|
853
|
-
* @uses $wpdb
|
854
|
-
*
|
855
|
-
* @param array $commentdata Contains information on the comment
|
856
|
-
* @return mixed Signifies the approval status (0|1|'spam')
|
857
|
-
*/
|
858
|
-
function wp_allow_comment( $commentdata ) {
|
859
|
-
global $wpdb;
|
860
|
-
|
861
|
-
// Simple duplicate check
|
862
|
-
// expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content)
|
863
|
-
$dupe = $wpdb->prepare(
|
864
|
-
"SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = %s AND comment_approved != 'trash' AND ( comment_author = %s ",
|
865
|
-
wp_unslash( $commentdata['comment_post_ID'] ),
|
866
|
-
wp_unslash( $commentdata['comment_parent'] ),
|
867
|
-
wp_unslash( $commentdata['comment_author'] )
|
868
|
-
);
|
869
|
-
if ( $commentdata['comment_author_email'] ) {
|
870
|
-
$dupe .= $wpdb->prepare(
|
871
|
-
"OR comment_author_email = %s ",
|
872
|
-
wp_unslash( $commentdata['comment_author_email'] )
|
873
|
-
);
|
874
|
-
}
|
875
|
-
$dupe .= $wpdb->prepare(
|
876
|
-
") AND comment_content = %s LIMIT 1",
|
877
|
-
wp_unslash( $commentdata['comment_content'] )
|
878
|
-
);
|
879
|
-
if ( $wpdb->get_var( $dupe ) ) {
|
880
|
-
/**
|
881
|
-
* Fires immediately after a duplicate comment is detected.
|
882
|
-
*
|
883
|
-
* @since 3.0.0
|
884
|
-
*
|
885
|
-
* @param array $commentdata Comment data.
|
886
|
-
*/
|
887
|
-
do_action( 'comment_duplicate_trigger', $commentdata );
|
888
|
-
if ( defined( 'DOING_AJAX' ) ) {
|
889
|
-
die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
|
890
|
-
}
|
891
|
-
wp_die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
|
892
|
-
}
|
893
|
-
|
894
|
-
/**
|
895
|
-
* Fires immediately before a comment is marked approved.
|
896
|
-
*
|
897
|
-
* Allows checking for comment flooding.
|
898
|
-
*
|
899
|
-
* @since 2.3.0
|
900
|
-
*
|
901
|
-
* @param string $comment_author_IP Comment author's IP address.
|
902
|
-
* @param string $comment_author_email Comment author's email.
|
903
|
-
* @param string $comment_date_gmt GMT date the comment was posted.
|
904
|
-
*/
|
905
|
-
do_action(
|
906
|
-
'check_comment_flood',
|
907
|
-
$commentdata['comment_author_IP'],
|
908
|
-
$commentdata['comment_author_email'],
|
909
|
-
$commentdata['comment_date_gmt']
|
910
|
-
);
|
911
|
-
|
912
|
-
if ( ! empty( $commentdata['user_id'] ) ) {
|
913
|
-
$user = get_userdata( $commentdata['user_id'] );
|
914
|
-
$post_author = $wpdb->get_var( $wpdb->prepare(
|
915
|
-
"SELECT post_author FROM $wpdb->posts WHERE ID = %d LIMIT 1",
|
916
|
-
$commentdata['comment_post_ID']
|
917
|
-
) );
|
918
|
-
}
|
919
|
-
|
920
|
-
if ( isset( $user ) && ( $commentdata['user_id'] == $post_author || $user->has_cap( 'moderate_comments' ) ) ) {
|
921
|
-
// The author and the admins get respect.
|
922
|
-
$approved = 1;
|
923
|
-
} else {
|
924
|
-
// Everyone else's comments will be checked.
|
925
|
-
if ( check_comment(
|
926
|
-
$commentdata['comment_author'],
|
927
|
-
$commentdata['comment_author_email'],
|
928
|
-
$commentdata['comment_author_url'],
|
929
|
-
$commentdata['comment_content'],
|
930
|
-
$commentdata['comment_author_IP'],
|
931
|
-
$commentdata['comment_agent'],
|
932
|
-
$commentdata['comment_type']
|
933
|
-
) ) {
|
934
|
-
$approved = 1;
|
935
|
-
} else {
|
936
|
-
$approved = 0;
|
937
|
-
}
|
938
|
-
|
939
|
-
if ( wp_blacklist_check(
|
940
|
-
$commentdata['comment_author'],
|
941
|
-
$commentdata['comment_author_email'],
|
942
|
-
$commentdata['comment_author_url'],
|
943
|
-
$commentdata['comment_content'],
|
944
|
-
$commentdata['comment_author_IP'],
|
945
|
-
$commentdata['comment_agent']
|
946
|
-
) ) {
|
947
|
-
$approved = 'spam';
|
948
|
-
}
|
949
|
-
}
|
950
|
-
|
951
|
-
/**
|
952
|
-
* Filter a comment's approval status before it is set.
|
953
|
-
*
|
954
|
-
* @since 2.1.0
|
955
|
-
*
|
956
|
-
* @param bool|string $approved The approval status. Accepts 1, 0, or 'spam'.
|
957
|
-
* @param array $commentdata Comment data.
|
958
|
-
*/
|
959
|
-
$approved = apply_filters( 'pre_comment_approved', $approved, $commentdata );
|
960
|
-
return $approved;
|
961
|
-
}
|
962
|
-
|
963
|
-
/**
|
964
|
-
* Check whether comment flooding is occurring.
|
965
|
-
*
|
966
|
-
* Won't run, if current user can manage options, so to not block
|
967
|
-
* administrators.
|
968
|
-
*
|
969
|
-
* @since 2.3.0
|
970
|
-
* @uses $wpdb
|
971
|
-
*
|
972
|
-
* @param string $ip Comment IP.
|
973
|
-
* @param string $email Comment author email address.
|
974
|
-
* @param string $date MySQL time string.
|
975
|
-
*/
|
976
|
-
function check_comment_flood_db( $ip, $email, $date ) {
|
977
|
-
global $wpdb;
|
978
|
-
if ( current_user_can( 'manage_options' ) )
|
979
|
-
return; // don't throttle admins
|
980
|
-
$hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS );
|
981
|
-
if ( $lasttime = $wpdb->get_var( $wpdb->prepare( "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( `comment_author_IP` = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $ip, $email ) ) ) {
|
982
|
-
$time_lastcomment = mysql2date('U', $lasttime, false);
|
983
|
-
$time_newcomment = mysql2date('U', $date, false);
|
984
|
-
/**
|
985
|
-
* Filter the comment flood status.
|
986
|
-
*
|
987
|
-
* @since 2.1.0
|
988
|
-
*
|
989
|
-
* @param bool $bool Whether a comment flood is occurring. Default false.
|
990
|
-
* @param int $time_lastcomment Timestamp of when the last comment was posted.
|
991
|
-
* @param int $time_newcomment Timestamp of when the new comment was posted.
|
992
|
-
*/
|
993
|
-
$flood_die = apply_filters( 'comment_flood_filter', false, $time_lastcomment, $time_newcomment );
|
994
|
-
if ( $flood_die ) {
|
995
|
-
/**
|
996
|
-
* Fires before the comment flood message is triggered.
|
997
|
-
*
|
998
|
-
* @since 1.5.0
|
999
|
-
*
|
1000
|
-
* @param int $time_lastcomment Timestamp of when the last comment was posted.
|
1001
|
-
* @param int $time_newcomment Timestamp of when the new comment was posted.
|
1002
|
-
*/
|
1003
|
-
do_action( 'comment_flood_trigger', $time_lastcomment, $time_newcomment );
|
1004
|
-
|
1005
|
-
if ( defined('DOING_AJAX') )
|
1006
|
-
die( __('You are posting comments too quickly. Slow down.') );
|
1007
|
-
|
1008
|
-
wp_die( __('You are posting comments too quickly. Slow down.'), '', array('response' => 403) );
|
1009
|
-
}
|
1010
|
-
}
|
1011
|
-
}
|
1012
|
-
|
1013
|
-
/**
|
1014
|
-
* Separates an array of comments into an array keyed by comment_type.
|
1015
|
-
*
|
1016
|
-
* @since 2.7.0
|
1017
|
-
*
|
1018
|
-
* @param array $comments Array of comments
|
1019
|
-
* @return array Array of comments keyed by comment_type.
|
1020
|
-
*/
|
1021
|
-
function separate_comments(&$comments) {
|
1022
|
-
$comments_by_type = array('comment' => array(), 'trackback' => array(), 'pingback' => array(), 'pings' => array());
|
1023
|
-
$count = count($comments);
|
1024
|
-
for ( $i = 0; $i < $count; $i++ ) {
|
1025
|
-
$type = $comments[$i]->comment_type;
|
1026
|
-
if ( empty($type) )
|
1027
|
-
$type = 'comment';
|
1028
|
-
$comments_by_type[$type][] = &$comments[$i];
|
1029
|
-
if ( 'trackback' == $type || 'pingback' == $type )
|
1030
|
-
$comments_by_type['pings'][] = &$comments[$i];
|
1031
|
-
}
|
1032
|
-
|
1033
|
-
return $comments_by_type;
|
1034
|
-
}
|
1035
|
-
|
1036
|
-
/**
|
1037
|
-
* Calculate the total number of comment pages.
|
1038
|
-
*
|
1039
|
-
* @since 2.7.0
|
1040
|
-
*
|
1041
|
-
* @uses Walker_Comment
|
1042
|
-
*
|
1043
|
-
* @param array $comments Optional array of comment objects. Defaults to $wp_query->comments
|
1044
|
-
* @param int $per_page Optional comments per page.
|
1045
|
-
* @param boolean $threaded Optional control over flat or threaded comments.
|
1046
|
-
* @return int Number of comment pages.
|
1047
|
-
*/
|
1048
|
-
function get_comment_pages_count( $comments = null, $per_page = null, $threaded = null ) {
|
1049
|
-
global $wp_query;
|
1050
|
-
|
1051
|
-
if ( null === $comments && null === $per_page && null === $threaded && !empty($wp_query->max_num_comment_pages) )
|
1052
|
-
return $wp_query->max_num_comment_pages;
|
1053
|
-
|
1054
|
-
if ( ( ! $comments || ! is_array( $comments ) ) && ! empty( $wp_query->comments ) )
|
1055
|
-
$comments = $wp_query->comments;
|
1056
|
-
|
1057
|
-
if ( empty($comments) )
|
1058
|
-
return 0;
|
1059
|
-
|
1060
|
-
if ( ! get_option( 'page_comments' ) )
|
1061
|
-
return 1;
|
1062
|
-
|
1063
|
-
if ( !isset($per_page) )
|
1064
|
-
$per_page = (int) get_query_var('comments_per_page');
|
1065
|
-
if ( 0 === $per_page )
|
1066
|
-
$per_page = (int) get_option('comments_per_page');
|
1067
|
-
if ( 0 === $per_page )
|
1068
|
-
return 1;
|
1069
|
-
|
1070
|
-
if ( !isset($threaded) )
|
1071
|
-
$threaded = get_option('thread_comments');
|
1072
|
-
|
1073
|
-
if ( $threaded ) {
|
1074
|
-
$walker = new Walker_Comment;
|
1075
|
-
$count = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page );
|
1076
|
-
} else {
|
1077
|
-
$count = ceil( count( $comments ) / $per_page );
|
1078
|
-
}
|
1079
|
-
|
1080
|
-
return $count;
|
1081
|
-
}
|
1082
|
-
|
1083
|
-
/**
|
1084
|
-
* Calculate what page number a comment will appear on for comment paging.
|
1085
|
-
*
|
1086
|
-
* @since 2.7.0
|
1087
|
-
* @uses get_comment() Gets the full comment of the $comment_ID parameter.
|
1088
|
-
* @uses get_option() Get various settings to control function and defaults.
|
1089
|
-
* @uses get_page_of_comment() Used to loop up to top level comment.
|
1090
|
-
*
|
1091
|
-
* @param int $comment_ID Comment ID.
|
1092
|
-
* @param array $args Optional args.
|
1093
|
-
* @return int|null Comment page number or null on error.
|
1094
|
-
*/
|
1095
|
-
function get_page_of_comment( $comment_ID, $args = array() ) {
|
1096
|
-
global $wpdb;
|
1097
|
-
|
1098
|
-
if ( !$comment = get_comment( $comment_ID ) )
|
1099
|
-
return;
|
1100
|
-
|
1101
|
-
$defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
|
1102
|
-
$args = wp_parse_args( $args, $defaults );
|
1103
|
-
|
1104
|
-
if ( '' === $args['per_page'] && get_option('page_comments') )
|
1105
|
-
$args['per_page'] = get_query_var('comments_per_page');
|
1106
|
-
if ( empty($args['per_page']) ) {
|
1107
|
-
$args['per_page'] = 0;
|
1108
|
-
$args['page'] = 0;
|
1109
|
-
}
|
1110
|
-
if ( $args['per_page'] < 1 )
|
1111
|
-
return 1;
|
1112
|
-
|
1113
|
-
if ( '' === $args['max_depth'] ) {
|
1114
|
-
if ( get_option('thread_comments') )
|
1115
|
-
$args['max_depth'] = get_option('thread_comments_depth');
|
1116
|
-
else
|
1117
|
-
$args['max_depth'] = -1;
|
1118
|
-
}
|
1119
|
-
|
1120
|
-
// Find this comment's top level parent if threading is enabled
|
1121
|
-
if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
|
1122
|
-
return get_page_of_comment( $comment->comment_parent, $args );
|
1123
|
-
|
1124
|
-
$allowedtypes = array(
|
1125
|
-
'comment' => '',
|
1126
|
-
'pingback' => 'pingback',
|
1127
|
-
'trackback' => 'trackback',
|
1128
|
-
);
|
1129
|
-
|
1130
|
-
$comtypewhere = ( 'all' != $args['type'] && isset($allowedtypes[$args['type']]) ) ? " AND comment_type = '" . $allowedtypes[$args['type']] . "'" : '';
|
1131
|
-
|
1132
|
-
// Count comments older than this one
|
1133
|
-
$oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
|
1134
|
-
|
1135
|
-
// No older comments? Then it's page #1.
|
1136
|
-
if ( 0 == $oldercoms )
|
1137
|
-
return 1;
|
1138
|
-
|
1139
|
-
// Divide comments older than this one by comments per page to get this comment's page number
|
1140
|
-
return ceil( ( $oldercoms + 1 ) / $args['per_page'] );
|
1141
|
-
}
|
1142
|
-
|
1143
|
-
/**
|
1144
|
-
* Does comment contain blacklisted characters or words.
|
1145
|
-
*
|
1146
|
-
* @since 1.5.0
|
1147
|
-
*
|
1148
|
-
* @param string $author The author of the comment
|
1149
|
-
* @param string $email The email of the comment
|
1150
|
-
* @param string $url The url used in the comment
|
1151
|
-
* @param string $comment The comment content
|
1152
|
-
* @param string $user_ip The comment author IP address
|
1153
|
-
* @param string $user_agent The author's browser user agent
|
1154
|
-
* @return bool True if comment contains blacklisted content, false if comment does not
|
1155
|
-
*/
|
1156
|
-
function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_agent) {
|
1157
|
-
/**
|
1158
|
-
* Fires before the comment is tested for blacklisted characters or words.
|
1159
|
-
*
|
1160
|
-
* @since 1.5.0
|
1161
|
-
*
|
1162
|
-
* @param string $author Comment author.
|
1163
|
-
* @param string $email Comment author's email.
|
1164
|
-
* @param string $url Comment author's URL.
|
1165
|
-
* @param string $comment Comment content.
|
1166
|
-
* @param string $user_ip Comment author's IP address.
|
1167
|
-
* @param string $user_agent Comment author's browser user agent.
|
1168
|
-
*/
|
1169
|
-
do_action( 'wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent );
|
1170
|
-
|
1171
|
-
$mod_keys = trim( get_option('blacklist_keys') );
|
1172
|
-
if ( '' == $mod_keys )
|
1173
|
-
return false; // If moderation keys are empty
|
1174
|
-
$words = explode("\n", $mod_keys );
|
1175
|
-
|
1176
|
-
foreach ( (array) $words as $word ) {
|
1177
|
-
$word = trim($word);
|
1178
|
-
|
1179
|
-
// Skip empty lines
|
1180
|
-
if ( empty($word) ) { continue; }
|
1181
|
-
|
1182
|
-
// Do some escaping magic so that '#' chars in the
|
1183
|
-
// spam words don't break things:
|
1184
|
-
$word = preg_quote($word, '#');
|
1185
|
-
|
1186
|
-
$pattern = "#$word#i";
|
1187
|
-
if (
|
1188
|
-
preg_match($pattern, $author)
|
1189
|
-
|| preg_match($pattern, $email)
|
1190
|
-
|| preg_match($pattern, $url)
|
1191
|
-
|| preg_match($pattern, $comment)
|
1192
|
-
|| preg_match($pattern, $user_ip)
|
1193
|
-
|| preg_match($pattern, $user_agent)
|
1194
|
-
)
|
1195
|
-
return true;
|
1196
|
-
}
|
1197
|
-
return false;
|
1198
|
-
}
|
1199
|
-
|
1200
|
-
/**
|
1201
|
-
* Retrieve total comments for blog or single post.
|
1202
|
-
*
|
1203
|
-
* The properties of the returned object contain the 'moderated', 'approved',
|
1204
|
-
* and spam comments for either the entire blog or single post. Those properties
|
1205
|
-
* contain the amount of comments that match the status. The 'total_comments'
|
1206
|
-
* property contains the integer of total comments.
|
1207
|
-
*
|
1208
|
-
* The comment stats are cached and then retrieved, if they already exist in the
|
1209
|
-
* cache.
|
1210
|
-
*
|
1211
|
-
* @since 2.5.0
|
1212
|
-
*
|
1213
|
-
* @param int $post_id Optional. Post ID.
|
1214
|
-
* @return object Comment stats.
|
1215
|
-
*/
|
1216
|
-
function wp_count_comments( $post_id = 0 ) {
|
1217
|
-
global $wpdb;
|
1218
|
-
|
1219
|
-
$post_id = (int) $post_id;
|
1220
|
-
|
1221
|
-
/**
|
1222
|
-
* Filter the comments count for a given post.
|
1223
|
-
*
|
1224
|
-
* @since 2.7.0
|
1225
|
-
*
|
1226
|
-
* @param array $count An empty array.
|
1227
|
-
* @param int $post_id The post ID.
|
1228
|
-
*/
|
1229
|
-
$stats = apply_filters( 'wp_count_comments', array(), $post_id );
|
1230
|
-
if ( !empty($stats) )
|
1231
|
-
return $stats;
|
1232
|
-
|
1233
|
-
$count = wp_cache_get("comments-{$post_id}", 'counts');
|
1234
|
-
|
1235
|
-
if ( false !== $count )
|
1236
|
-
return $count;
|
1237
|
-
|
1238
|
-
$where = '';
|
1239
|
-
if ( $post_id > 0 )
|
1240
|
-
$where = $wpdb->prepare( "WHERE comment_post_ID = %d", $post_id );
|
1241
|
-
|
1242
|
-
$count = $wpdb->get_results( "SELECT comment_approved, COUNT( * ) AS num_comments FROM {$wpdb->comments} {$where} GROUP BY comment_approved", ARRAY_A );
|
1243
|
-
|
1244
|
-
$total = 0;
|
1245
|
-
$approved = array('0' => 'moderated', '1' => 'approved', 'spam' => 'spam', 'trash' => 'trash', 'post-trashed' => 'post-trashed');
|
1246
|
-
foreach ( (array) $count as $row ) {
|
1247
|
-
// Don't count post-trashed toward totals
|
1248
|
-
if ( 'post-trashed' != $row['comment_approved'] && 'trash' != $row['comment_approved'] )
|
1249
|
-
$total += $row['num_comments'];
|
1250
|
-
if ( isset( $approved[$row['comment_approved']] ) )
|
1251
|
-
$stats[$approved[$row['comment_approved']]] = $row['num_comments'];
|
1252
|
-
}
|
1253
|
-
|
1254
|
-
$stats['total_comments'] = $total;
|
1255
|
-
foreach ( $approved as $key ) {
|
1256
|
-
if ( empty($stats[$key]) )
|
1257
|
-
$stats[$key] = 0;
|
1258
|
-
}
|
1259
|
-
|
1260
|
-
$stats = (object) $stats;
|
1261
|
-
wp_cache_set("comments-{$post_id}", $stats, 'counts');
|
1262
|
-
|
1263
|
-
return $stats;
|
1264
|
-
}
|
1265
|
-
|
1266
|
-
/**
|
1267
|
-
* Trashes or deletes a comment.
|
1268
|
-
*
|
1269
|
-
* The comment is moved to trash instead of permanently deleted unless trash is
|
1270
|
-
* disabled, item is already in the trash, or $force_delete is true.
|
1271
|
-
*
|
1272
|
-
* The post comment count will be updated if the comment was approved and has a
|
1273
|
-
* post ID available.
|
1274
|
-
*
|
1275
|
-
* @since 2.0.0
|
1276
|
-
* @uses $wpdb
|
1277
|
-
* @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
|
1278
|
-
*
|
1279
|
-
* @param int $comment_id Comment ID
|
1280
|
-
* @param bool $force_delete Whether to bypass trash and force deletion. Default is false.
|
1281
|
-
* @return bool True on success, false on failure.
|
1282
|
-
*/
|
1283
|
-
function wp_delete_comment($comment_id, $force_delete = false) {
|
1284
|
-
global $wpdb;
|
1285
|
-
if (!$comment = get_comment($comment_id))
|
1286
|
-
return false;
|
1287
|
-
|
1288
|
-
if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status($comment_id), array( 'trash', 'spam' ) ) )
|
1289
|
-
return wp_trash_comment($comment_id);
|
1290
|
-
|
1291
|
-
/**
|
1292
|
-
* Fires immediately before a comment is deleted from the database.
|
1293
|
-
*
|
1294
|
-
* @since 1.2.0
|
1295
|
-
*
|
1296
|
-
* @param int $comment_id The comment ID.
|
1297
|
-
*/
|
1298
|
-
do_action( 'delete_comment', $comment_id );
|
1299
|
-
|
1300
|
-
// Move children up a level.
|
1301
|
-
$children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) );
|
1302
|
-
if ( !empty($children) ) {
|
1303
|
-
$wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment_id));
|
1304
|
-
clean_comment_cache($children);
|
1305
|
-
}
|
1306
|
-
|
1307
|
-
// Delete metadata
|
1308
|
-
$meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment_id ) );
|
1309
|
-
foreach ( $meta_ids as $mid )
|
1310
|
-
delete_metadata_by_mid( 'comment', $mid );
|
1311
|
-
|
1312
|
-
if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment_id ) ) )
|
1313
|
-
return false;
|
1314
|
-
|
1315
|
-
/**
|
1316
|
-
* Fires immediately after a comment is deleted from the database.
|
1317
|
-
*
|
1318
|
-
* @since 2.9.0
|
1319
|
-
*
|
1320
|
-
* @param int $comment_id The comment ID.
|
1321
|
-
*/
|
1322
|
-
do_action( 'deleted_comment', $comment_id );
|
1323
|
-
|
1324
|
-
$post_id = $comment->comment_post_ID;
|
1325
|
-
if ( $post_id && $comment->comment_approved == 1 )
|
1326
|
-
wp_update_comment_count($post_id);
|
1327
|
-
|
1328
|
-
clean_comment_cache($comment_id);
|
1329
|
-
|
1330
|
-
/** This action is documented in wp-includes/comment.php */
|
1331
|
-
do_action( 'wp_set_comment_status', $comment_id, 'delete' );
|
1332
|
-
|
1333
|
-
wp_transition_comment_status('delete', $comment->comment_approved, $comment);
|
1334
|
-
return true;
|
1335
|
-
}
|
1336
|
-
|
1337
|
-
/**
|
1338
|
-
* Moves a comment to the Trash
|
1339
|
-
*
|
1340
|
-
* If trash is disabled, comment is permanently deleted.
|
1341
|
-
*
|
1342
|
-
* @since 2.9.0
|
1343
|
-
*
|
1344
|
-
* @uses wp_delete_comment() if trash is disabled
|
1345
|
-
*
|
1346
|
-
* @param int $comment_id Comment ID.
|
1347
|
-
* @return bool True on success, false on failure.
|
1348
|
-
*/
|
1349
|
-
function wp_trash_comment($comment_id) {
|
1350
|
-
if ( !EMPTY_TRASH_DAYS )
|
1351
|
-
return wp_delete_comment($comment_id, true);
|
1352
|
-
|
1353
|
-
if ( !$comment = get_comment($comment_id) )
|
1354
|
-
return false;
|
1355
|
-
|
1356
|
-
/**
|
1357
|
-
* Fires immediately before a comment is sent to the Trash.
|
1358
|
-
*
|
1359
|
-
* @since 2.9.0
|
1360
|
-
*
|
1361
|
-
* @param int $comment_id The comment ID.
|
1362
|
-
*/
|
1363
|
-
do_action( 'trash_comment', $comment_id );
|
1364
|
-
|
1365
|
-
if ( wp_set_comment_status($comment_id, 'trash') ) {
|
1366
|
-
add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved);
|
1367
|
-
add_comment_meta($comment_id, '_wp_trash_meta_time', time() );
|
1368
|
-
|
1369
|
-
/**
|
1370
|
-
* Fires immediately after a comment is sent to Trash.
|
1371
|
-
*
|
1372
|
-
* @since 2.9.0
|
1373
|
-
*
|
1374
|
-
* @param int $comment_id The comment ID.
|
1375
|
-
*/
|
1376
|
-
do_action( 'trashed_comment', $comment_id );
|
1377
|
-
return true;
|
1378
|
-
}
|
1379
|
-
|
1380
|
-
return false;
|
1381
|
-
}
|
1382
|
-
|
1383
|
-
/**
|
1384
|
-
* Removes a comment from the Trash
|
1385
|
-
*
|
1386
|
-
* @since 2.9.0
|
1387
|
-
*
|
1388
|
-
* @param int $comment_id Comment ID.
|
1389
|
-
* @return bool True on success, false on failure.
|
1390
|
-
*/
|
1391
|
-
function wp_untrash_comment($comment_id) {
|
1392
|
-
if ( ! (int)$comment_id )
|
1393
|
-
return false;
|
1394
|
-
|
1395
|
-
/**
|
1396
|
-
* Fires immediately before a comment is restored from the Trash.
|
1397
|
-
*
|
1398
|
-
* @since 2.9.0
|
1399
|
-
*
|
1400
|
-
* @param int $comment_id The comment ID.
|
1401
|
-
*/
|
1402
|
-
do_action( 'untrash_comment', $comment_id );
|
1403
|
-
|
1404
|
-
$status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true);
|
1405
|
-
if ( empty($status) )
|
1406
|
-
$status = '0';
|
1407
|
-
|
1408
|
-
if ( wp_set_comment_status($comment_id, $status) ) {
|
1409
|
-
delete_comment_meta($comment_id, '_wp_trash_meta_time');
|
1410
|
-
delete_comment_meta($comment_id, '_wp_trash_meta_status');
|
1411
|
-
/**
|
1412
|
-
* Fires immediately after a comment is restored from the Trash.
|
1413
|
-
*
|
1414
|
-
* @since 2.9.0
|
1415
|
-
*
|
1416
|
-
* @param int $comment_id The comment ID.
|
1417
|
-
*/
|
1418
|
-
do_action( 'untrashed_comment', $comment_id );
|
1419
|
-
return true;
|
1420
|
-
}
|
1421
|
-
|
1422
|
-
return false;
|
1423
|
-
}
|
1424
|
-
|
1425
|
-
/**
|
1426
|
-
* Marks a comment as Spam
|
1427
|
-
*
|
1428
|
-
* @since 2.9.0
|
1429
|
-
*
|
1430
|
-
* @param int $comment_id Comment ID.
|
1431
|
-
* @return bool True on success, false on failure.
|
1432
|
-
*/
|
1433
|
-
function wp_spam_comment($comment_id) {
|
1434
|
-
if ( !$comment = get_comment($comment_id) )
|
1435
|
-
return false;
|
1436
|
-
|
1437
|
-
/**
|
1438
|
-
* Fires immediately before a comment is marked as Spam.
|
1439
|
-
*
|
1440
|
-
* @since 2.9.0
|
1441
|
-
*
|
1442
|
-
* @param int $comment_id The comment ID.
|
1443
|
-
*/
|
1444
|
-
do_action( 'spam_comment', $comment_id );
|
1445
|
-
|
1446
|
-
if ( wp_set_comment_status($comment_id, 'spam') ) {
|
1447
|
-
add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved);
|
1448
|
-
/**
|
1449
|
-
* Fires immediately after a comment is marked as Spam.
|
1450
|
-
*
|
1451
|
-
* @since 2.9.0
|
1452
|
-
*
|
1453
|
-
* @param int $comment_id The comment ID.
|
1454
|
-
*/
|
1455
|
-
do_action( 'spammed_comment', $comment_id );
|
1456
|
-
return true;
|
1457
|
-
}
|
1458
|
-
|
1459
|
-
return false;
|
1460
|
-
}
|
1461
|
-
|
1462
|
-
/**
|
1463
|
-
* Removes a comment from the Spam
|
1464
|
-
*
|
1465
|
-
* @since 2.9.0
|
1466
|
-
*
|
1467
|
-
* @param int $comment_id Comment ID.
|
1468
|
-
* @return bool True on success, false on failure.
|
1469
|
-
*/
|
1470
|
-
function wp_unspam_comment($comment_id) {
|
1471
|
-
if ( ! (int)$comment_id )
|
1472
|
-
return false;
|
1473
|
-
|
1474
|
-
/**
|
1475
|
-
* Fires immediately before a comment is unmarked as Spam.
|
1476
|
-
*
|
1477
|
-
* @since 2.9.0
|
1478
|
-
*
|
1479
|
-
* @param int $comment_id The comment ID.
|
1480
|
-
*/
|
1481
|
-
do_action( 'unspam_comment', $comment_id );
|
1482
|
-
|
1483
|
-
$status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true);
|
1484
|
-
if ( empty($status) )
|
1485
|
-
$status = '0';
|
1486
|
-
|
1487
|
-
if ( wp_set_comment_status($comment_id, $status) ) {
|
1488
|
-
delete_comment_meta($comment_id, '_wp_trash_meta_status');
|
1489
|
-
/**
|
1490
|
-
* Fires immediately after a comment is unmarked as Spam.
|
1491
|
-
*
|
1492
|
-
* @since 2.9.0
|
1493
|
-
*
|
1494
|
-
* @param int $comment_id The comment ID.
|
1495
|
-
*/
|
1496
|
-
do_action( 'unspammed_comment', $comment_id );
|
1497
|
-
return true;
|
1498
|
-
}
|
1499
|
-
|
1500
|
-
return false;
|
1501
|
-
}
|
1502
|
-
|
1503
|
-
/**
|
1504
|
-
* The status of a comment by ID.
|
1505
|
-
*
|
1506
|
-
* @since 1.0.0
|
1507
|
-
*
|
1508
|
-
* @param int $comment_id Comment ID
|
1509
|
-
* @return string|bool Status might be 'trash', 'approved', 'unapproved', 'spam'. False on failure.
|
1510
|
-
*/
|
1511
|
-
function wp_get_comment_status($comment_id) {
|
1512
|
-
$comment = get_comment($comment_id);
|
1513
|
-
if ( !$comment )
|
1514
|
-
return false;
|
1515
|
-
|
1516
|
-
$approved = $comment->comment_approved;
|
1517
|
-
|
1518
|
-
if ( $approved == null )
|
1519
|
-
return false;
|
1520
|
-
elseif ( $approved == '1' )
|
1521
|
-
return 'approved';
|
1522
|
-
elseif ( $approved == '0' )
|
1523
|
-
return 'unapproved';
|
1524
|
-
elseif ( $approved == 'spam' )
|
1525
|
-
return 'spam';
|
1526
|
-
elseif ( $approved == 'trash' )
|
1527
|
-
return 'trash';
|
1528
|
-
else
|
1529
|
-
return false;
|
1530
|
-
}
|
1531
|
-
|
1532
|
-
/**
|
1533
|
-
* Call hooks for when a comment status transition occurs.
|
1534
|
-
*
|
1535
|
-
* Calls hooks for comment status transitions. If the new comment status is not the same
|
1536
|
-
* as the previous comment status, then two hooks will be ran, the first is
|
1537
|
-
* 'transition_comment_status' with new status, old status, and comment data. The
|
1538
|
-
* next action called is 'comment_OLDSTATUS_to_NEWSTATUS' the NEWSTATUS is the
|
1539
|
-
* $new_status parameter and the OLDSTATUS is $old_status parameter; it has the
|
1540
|
-
* comment data.
|
1541
|
-
*
|
1542
|
-
* The final action will run whether or not the comment statuses are the same. The
|
1543
|
-
* action is named 'comment_NEWSTATUS_COMMENTTYPE', NEWSTATUS is from the $new_status
|
1544
|
-
* parameter and COMMENTTYPE is comment_type comment data.
|
1545
|
-
*
|
1546
|
-
* @since 2.7.0
|
1547
|
-
*
|
1548
|
-
* @param string $new_status New comment status.
|
1549
|
-
* @param string $old_status Previous comment status.
|
1550
|
-
* @param object $comment Comment data.
|
1551
|
-
*/
|
1552
|
-
function wp_transition_comment_status($new_status, $old_status, $comment) {
|
1553
|
-
/*
|
1554
|
-
* Translate raw statuses to human readable formats for the hooks.
|
1555
|
-
* This is not a complete list of comment status, it's only the ones
|
1556
|
-
* that need to be renamed
|
1557
|
-
*/
|
1558
|
-
$comment_statuses = array(
|
1559
|
-
0 => 'unapproved',
|
1560
|
-
'hold' => 'unapproved', // wp_set_comment_status() uses "hold"
|
1561
|
-
1 => 'approved',
|
1562
|
-
'approve' => 'approved', // wp_set_comment_status() uses "approve"
|
1563
|
-
);
|
1564
|
-
if ( isset($comment_statuses[$new_status]) ) $new_status = $comment_statuses[$new_status];
|
1565
|
-
if ( isset($comment_statuses[$old_status]) ) $old_status = $comment_statuses[$old_status];
|
1566
|
-
|
1567
|
-
// Call the hooks
|
1568
|
-
if ( $new_status != $old_status ) {
|
1569
|
-
/**
|
1570
|
-
* Fires when the comment status is in transition.
|
1571
|
-
*
|
1572
|
-
* @since 2.7.0
|
1573
|
-
*
|
1574
|
-
* @param int|string $new_status The new comment status.
|
1575
|
-
* @param int|string $old_status The old comment status.
|
1576
|
-
* @param object $comment The comment data.
|
1577
|
-
*/
|
1578
|
-
do_action( 'transition_comment_status', $new_status, $old_status, $comment );
|
1579
|
-
/**
|
1580
|
-
* Fires when the comment status is in transition from one specific status to another.
|
1581
|
-
*
|
1582
|
-
* The dynamic portions of the hook name, $old_status, and $new_status,
|
1583
|
-
* refer to the old and new comment statuses, respectively.
|
1584
|
-
*
|
1585
|
-
* @since 2.7.0
|
1586
|
-
*
|
1587
|
-
* @param object $comment Comment object.
|
1588
|
-
*/
|
1589
|
-
do_action( "comment_{$old_status}_to_{$new_status}", $comment );
|
1590
|
-
}
|
1591
|
-
/**
|
1592
|
-
* Fires when the status of a specific comment type is in transition.
|
1593
|
-
*
|
1594
|
-
* The dynamic portions of the hook name, $new_status, and $comment->comment_type,
|
1595
|
-
* refer to the new comment status, and the type of comment, respectively.
|
1596
|
-
*
|
1597
|
-
* Typical comment types include an empty string (standard comment), 'pingback',
|
1598
|
-
* or 'trackback'.
|
1599
|
-
*
|
1600
|
-
* @since 2.7.0
|
1601
|
-
*
|
1602
|
-
* @param int $comment_ID The comment ID.
|
1603
|
-
* @param obj $comment Comment object.
|
1604
|
-
*/
|
1605
|
-
do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment );
|
1606
|
-
}
|
1607
|
-
|
1608
|
-
/**
|
1609
|
-
* Get current commenter's name, email, and URL.
|
1610
|
-
*
|
1611
|
-
* Expects cookies content to already be sanitized. User of this function might
|
1612
|
-
* wish to recheck the returned array for validity.
|
1613
|
-
*
|
1614
|
-
* @see sanitize_comment_cookies() Use to sanitize cookies
|
1615
|
-
*
|
1616
|
-
* @since 2.0.4
|
1617
|
-
*
|
1618
|
-
* @return array Comment author, email, url respectively.
|
1619
|
-
*/
|
1620
|
-
function wp_get_current_commenter() {
|
1621
|
-
// Cookies should already be sanitized.
|
1622
|
-
|
1623
|
-
$comment_author = '';
|
1624
|
-
if ( isset($_COOKIE['comment_author_'.COOKIEHASH]) )
|
1625
|
-
$comment_author = $_COOKIE['comment_author_'.COOKIEHASH];
|
1626
|
-
|
1627
|
-
$comment_author_email = '';
|
1628
|
-
if ( isset($_COOKIE['comment_author_email_'.COOKIEHASH]) )
|
1629
|
-
$comment_author_email = $_COOKIE['comment_author_email_'.COOKIEHASH];
|
1630
|
-
|
1631
|
-
$comment_author_url = '';
|
1632
|
-
if ( isset($_COOKIE['comment_author_url_'.COOKIEHASH]) )
|
1633
|
-
$comment_author_url = $_COOKIE['comment_author_url_'.COOKIEHASH];
|
1634
|
-
|
1635
|
-
/**
|
1636
|
-
* Filter the current commenter's name, email, and URL.
|
1637
|
-
*
|
1638
|
-
* @since 3.1.0
|
1639
|
-
*
|
1640
|
-
* @param string $comment_author Comment author's name.
|
1641
|
-
* @param string $comment_author_email Comment author's email.
|
1642
|
-
* @param string $comment_author_url Comment author's URL.
|
1643
|
-
*/
|
1644
|
-
return apply_filters( 'wp_get_current_commenter', compact('comment_author', 'comment_author_email', 'comment_author_url') );
|
1645
|
-
}
|
1646
|
-
|
1647
|
-
/**
|
1648
|
-
* Inserts a comment to the database.
|
1649
|
-
*
|
1650
|
-
* The available comment data key names are 'comment_author_IP', 'comment_date',
|
1651
|
-
* 'comment_date_gmt', 'comment_parent', 'comment_approved', and 'user_id'.
|
1652
|
-
*
|
1653
|
-
* @since 2.0.0
|
1654
|
-
* @uses $wpdb
|
1655
|
-
*
|
1656
|
-
* @param array $commentdata Contains information on the comment.
|
1657
|
-
* @return int|bool The new comment's ID on success, false on failure.
|
1658
|
-
*/
|
1659
|
-
function wp_insert_comment( $commentdata ) {
|
1660
|
-
global $wpdb;
|
1661
|
-
$data = wp_unslash( $commentdata );
|
1662
|
-
|
1663
|
-
$comment_author = ! isset( $data['comment_author'] ) ? '' : $data['comment_author'];
|
1664
|
-
$comment_author_email = ! isset( $data['comment_author_email'] ) ? '' : $data['comment_author_email'];
|
1665
|
-
$comment_author_url = ! isset( $data['comment_author_url'] ) ? '' : $data['comment_author_url'];
|
1666
|
-
$comment_author_IP = ! isset( $data['comment_author_IP'] ) ? '' : $data['comment_author_IP'];
|
1667
|
-
|
1668
|
-
$comment_date = ! isset( $data['comment_date'] ) ? current_time( 'mysql' ) : $data['comment_date'];
|
1669
|
-
$comment_date_gmt = ! isset( $data['comment_date_gmt'] ) ? get_gmt_from_date( $comment_date ) : $data['comment_date_gmt'];
|
1670
|
-
|
1671
|
-
$comment_post_ID = ! isset( $data['comment_post_ID'] ) ? '' : $data['comment_post_ID'];
|
1672
|
-
$comment_content = ! isset( $data['comment_content'] ) ? '' : $data['comment_content'];
|
1673
|
-
$comment_karma = ! isset( $data['comment_karma'] ) ? 0 : $data['comment_karma'];
|
1674
|
-
$comment_approved = ! isset( $data['comment_approved'] ) ? 1 : $data['comment_approved'];
|
1675
|
-
$comment_agent = ! isset( $data['comment_agent'] ) ? '' : $data['comment_agent'];
|
1676
|
-
$comment_type = ! isset( $data['comment_type'] ) ? '' : $data['comment_type'];
|
1677
|
-
$comment_parent = ! isset( $data['comment_parent'] ) ? 0 : $data['comment_parent'];
|
1678
|
-
|
1679
|
-
$user_id = ! isset( $data['user_id'] ) ? 0 : $data['user_id'];
|
1680
|
-
|
1681
|
-
$compacted = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_karma', 'comment_approved', 'comment_agent', 'comment_type', 'comment_parent', 'user_id' );
|
1682
|
-
if ( ! $wpdb->insert( $wpdb->comments, $compacted ) ) {
|
1683
|
-
return false;
|
1684
|
-
}
|
1685
|
-
|
1686
|
-
$id = (int) $wpdb->insert_id;
|
1687
|
-
|
1688
|
-
if ( $comment_approved == 1 ) {
|
1689
|
-
wp_update_comment_count( $comment_post_ID );
|
1690
|
-
}
|
1691
|
-
$comment = get_comment( $id );
|
1692
|
-
|
1693
|
-
/**
|
1694
|
-
* Fires immediately after a comment is inserted into the database.
|
1695
|
-
*
|
1696
|
-
* @since 2.8.0
|
1697
|
-
*
|
1698
|
-
* @param int $id The comment ID.
|
1699
|
-
* @param obj $comment Comment object.
|
1700
|
-
*/
|
1701
|
-
do_action( 'wp_insert_comment', $id, $comment );
|
1702
|
-
|
1703
|
-
wp_cache_set( 'last_changed', microtime(), 'comment' );
|
1704
|
-
|
1705
|
-
return $id;
|
1706
|
-
}
|
1707
|
-
|
1708
|
-
/**
|
1709
|
-
* Filters and sanitizes comment data.
|
1710
|
-
*
|
1711
|
-
* Sets the comment data 'filtered' field to true when finished. This can be
|
1712
|
-
* checked as to whether the comment should be filtered and to keep from
|
1713
|
-
* filtering the same comment more than once.
|
1714
|
-
*
|
1715
|
-
* @since 2.0.0
|
1716
|
-
*
|
1717
|
-
* @param array $commentdata Contains information on the comment.
|
1718
|
-
* @return array Parsed comment information.
|
1719
|
-
*/
|
1720
|
-
function wp_filter_comment($commentdata) {
|
1721
|
-
if ( isset( $commentdata['user_ID'] ) ) {
|
1722
|
-
/**
|
1723
|
-
* Filter the comment author's user id before it is set.
|
1724
|
-
*
|
1725
|
-
* The first time this filter is evaluated, 'user_ID' is checked
|
1726
|
-
* (for back-compat), followed by the standard 'user_id' value.
|
1727
|
-
*
|
1728
|
-
* @since 1.5.0
|
1729
|
-
*
|
1730
|
-
* @param int $user_ID The comment author's user ID.
|
1731
|
-
*/
|
1732
|
-
$commentdata['user_id'] = apply_filters( 'pre_user_id', $commentdata['user_ID'] );
|
1733
|
-
} elseif ( isset( $commentdata['user_id'] ) ) {
|
1734
|
-
/** This filter is documented in wp-includes/comment.php */
|
1735
|
-
$commentdata['user_id'] = apply_filters( 'pre_user_id', $commentdata['user_id'] );
|
1736
|
-
}
|
1737
|
-
|
1738
|
-
/**
|
1739
|
-
* Filter the comment author's browser user agent before it is set.
|
1740
|
-
*
|
1741
|
-
* @since 1.5.0
|
1742
|
-
*
|
1743
|
-
* @param int $comment_agent The comment author's browser user agent.
|
1744
|
-
*/
|
1745
|
-
$commentdata['comment_agent'] = apply_filters( 'pre_comment_user_agent', ( isset( $commentdata['comment_agent'] ) ? $commentdata['comment_agent'] : '' ) );
|
1746
|
-
/** This filter is documented in wp-includes/comment.php */
|
1747
|
-
$commentdata['comment_author'] = apply_filters( 'pre_comment_author_name', $commentdata['comment_author'] );
|
1748
|
-
/**
|
1749
|
-
* Filter the comment content before it is set.
|
1750
|
-
*
|
1751
|
-
* @since 1.5.0
|
1752
|
-
*
|
1753
|
-
* @param int $comment_content The comment content.
|
1754
|
-
*/
|
1755
|
-
$commentdata['comment_content'] = apply_filters( 'pre_comment_content', $commentdata['comment_content'] );
|
1756
|
-
/**
|
1757
|
-
* Filter the comment author's IP before it is set.
|
1758
|
-
*
|
1759
|
-
* @since 1.5.0
|
1760
|
-
*
|
1761
|
-
* @param int $comment_author_ip The comment author's IP.
|
1762
|
-
*/
|
1763
|
-
$commentdata['comment_author_IP'] = apply_filters( 'pre_comment_user_ip', $commentdata['comment_author_IP'] );
|
1764
|
-
/** This filter is documented in wp-includes/comment.php */
|
1765
|
-
$commentdata['comment_author_url'] = apply_filters( 'pre_comment_author_url', $commentdata['comment_author_url'] );
|
1766
|
-
/** This filter is documented in wp-includes/comment.php */
|
1767
|
-
$commentdata['comment_author_email'] = apply_filters( 'pre_comment_author_email', $commentdata['comment_author_email'] );
|
1768
|
-
$commentdata['filtered'] = true;
|
1769
|
-
return $commentdata;
|
1770
|
-
}
|
1771
|
-
|
1772
|
-
/**
|
1773
|
-
* Whether a comment should be blocked because of comment flood.
|
1774
|
-
*
|
1775
|
-
* @since 2.1.0
|
1776
|
-
*
|
1777
|
-
* @param bool $block Whether plugin has already blocked comment.
|
1778
|
-
* @param int $time_lastcomment Timestamp for last comment.
|
1779
|
-
* @param int $time_newcomment Timestamp for new comment.
|
1780
|
-
* @return bool Whether comment should be blocked.
|
1781
|
-
*/
|
1782
|
-
function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment) {
|
1783
|
-
if ( $block ) // a plugin has already blocked... we'll let that decision stand
|
1784
|
-
return $block;
|
1785
|
-
if ( ($time_newcomment - $time_lastcomment) < 15 )
|
1786
|
-
return true;
|
1787
|
-
return false;
|
1788
|
-
}
|
1789
|
-
|
1790
|
-
/**
|
1791
|
-
* Adds a new comment to the database.
|
1792
|
-
*
|
1793
|
-
* Filters new comment to ensure that the fields are sanitized and valid before
|
1794
|
-
* inserting comment into database. Calls 'comment_post' action with comment ID
|
1795
|
-
* and whether comment is approved by WordPress. Also has 'preprocess_comment'
|
1796
|
-
* filter for processing the comment data before the function handles it.
|
1797
|
-
*
|
1798
|
-
* We use REMOTE_ADDR here directly. If you are behind a proxy, you should ensure
|
1799
|
-
* that it is properly set, such as in wp-config.php, for your environment.
|
1800
|
-
* See {@link https://core.trac.wordpress.org/ticket/9235}
|
1801
|
-
*
|
1802
|
-
* @since 1.5.0
|
1803
|
-
* @param array $commentdata Contains information on the comment.
|
1804
|
-
* @return int|bool The ID of the comment on success, false on failure.
|
1805
|
-
*/
|
1806
|
-
function wp_new_comment( $commentdata ) {
|
1807
|
-
if ( isset( $commentdata['user_ID'] ) ) {
|
1808
|
-
$commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID'];
|
1809
|
-
}
|
1810
|
-
|
1811
|
-
$prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0;
|
1812
|
-
|
1813
|
-
/**
|
1814
|
-
* Filter a comment's data before it is sanitized and inserted into the database.
|
1815
|
-
*
|
1816
|
-
* @since 1.5.0
|
1817
|
-
*
|
1818
|
-
* @param array $commentdata Comment data.
|
1819
|
-
*/
|
1820
|
-
$commentdata = apply_filters( 'preprocess_comment', $commentdata );
|
1821
|
-
|
1822
|
-
$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
|
1823
|
-
if ( isset( $commentdata['user_ID'] ) && $prefiltered_user_id !== (int) $commentdata['user_ID'] ) {
|
1824
|
-
$commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID'];
|
1825
|
-
} elseif ( isset( $commentdata['user_id'] ) ) {
|
1826
|
-
$commentdata['user_id'] = (int) $commentdata['user_id'];
|
1827
|
-
}
|
1828
|
-
|
1829
|
-
$commentdata['comment_parent'] = isset($commentdata['comment_parent']) ? absint($commentdata['comment_parent']) : 0;
|
1830
|
-
$parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : '';
|
1831
|
-
$commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0;
|
1832
|
-
|
1833
|
-
$commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '',$_SERVER['REMOTE_ADDR'] );
|
1834
|
-
$commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? substr( $_SERVER['HTTP_USER_AGENT'], 0, 254 ) : '';
|
1835
|
-
|
1836
|
-
$commentdata['comment_date'] = current_time('mysql');
|
1837
|
-
$commentdata['comment_date_gmt'] = current_time('mysql', 1);
|
1838
|
-
|
1839
|
-
$commentdata = wp_filter_comment($commentdata);
|
1840
|
-
|
1841
|
-
$commentdata['comment_approved'] = wp_allow_comment($commentdata);
|
1842
|
-
|
1843
|
-
$comment_ID = wp_insert_comment($commentdata);
|
1844
|
-
if ( ! $comment_ID ) {
|
1845
|
-
return false;
|
1846
|
-
}
|
1847
|
-
|
1848
|
-
/**
|
1849
|
-
* Fires immediately after a comment is inserted into the database.
|
1850
|
-
*
|
1851
|
-
* @since 1.2.0
|
1852
|
-
*
|
1853
|
-
* @param int $comment_ID The comment ID.
|
1854
|
-
* @param int $comment_approved 1 (true) if the comment is approved, 0 (false) if not.
|
1855
|
-
*/
|
1856
|
-
do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'] );
|
1857
|
-
|
1858
|
-
if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
|
1859
|
-
if ( '0' == $commentdata['comment_approved'] ) {
|
1860
|
-
wp_notify_moderator( $comment_ID );
|
1861
|
-
}
|
1862
|
-
|
1863
|
-
// wp_notify_postauthor() checks if notifying the author of their own comment.
|
1864
|
-
// By default, it won't, but filters can override this.
|
1865
|
-
if ( get_option( 'comments_notify' ) && $commentdata['comment_approved'] ) {
|
1866
|
-
wp_notify_postauthor( $comment_ID );
|
1867
|
-
}
|
1868
|
-
}
|
1869
|
-
|
1870
|
-
return $comment_ID;
|
1871
|
-
}
|
1872
|
-
|
1873
|
-
/**
|
1874
|
-
* Sets the status of a comment.
|
1875
|
-
*
|
1876
|
-
* The 'wp_set_comment_status' action is called after the comment is handled.
|
1877
|
-
* If the comment status is not in the list, then false is returned.
|
1878
|
-
*
|
1879
|
-
* @since 1.0.0
|
1880
|
-
* @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
|
1881
|
-
*
|
1882
|
-
* @param int $comment_id Comment ID.
|
1883
|
-
* @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'.
|
1884
|
-
* @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
|
1885
|
-
* @return bool|WP_Error True on success, false or WP_Error on failure.
|
1886
|
-
*/
|
1887
|
-
function wp_set_comment_status($comment_id, $comment_status, $wp_error = false) {
|
1888
|
-
global $wpdb;
|
1889
|
-
|
1890
|
-
switch ( $comment_status ) {
|
1891
|
-
case 'hold':
|
1892
|
-
case '0':
|
1893
|
-
$status = '0';
|
1894
|
-
break;
|
1895
|
-
case 'approve':
|
1896
|
-
case '1':
|
1897
|
-
$status = '1';
|
1898
|
-
if ( get_option('comments_notify') ) {
|
1899
|
-
wp_notify_postauthor( $comment_id );
|
1900
|
-
}
|
1901
|
-
break;
|
1902
|
-
case 'spam':
|
1903
|
-
$status = 'spam';
|
1904
|
-
break;
|
1905
|
-
case 'trash':
|
1906
|
-
$status = 'trash';
|
1907
|
-
break;
|
1908
|
-
default:
|
1909
|
-
return false;
|
1910
|
-
}
|
1911
|
-
|
1912
|
-
$comment_old = clone get_comment($comment_id);
|
1913
|
-
|
1914
|
-
if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array('comment_ID' => $comment_id) ) ) {
|
1915
|
-
if ( $wp_error )
|
1916
|
-
return new WP_Error('db_update_error', __('Could not update comment status'), $wpdb->last_error);
|
1917
|
-
else
|
1918
|
-
return false;
|
1919
|
-
}
|
1920
|
-
|
1921
|
-
clean_comment_cache($comment_id);
|
1922
|
-
|
1923
|
-
$comment = get_comment($comment_id);
|
1924
|
-
|
1925
|
-
/**
|
1926
|
-
* Fires immediately before transitioning a comment's status from one to another
|
1927
|
-
* in the database.
|
1928
|
-
*
|
1929
|
-
* @since 1.5.0
|
1930
|
-
*
|
1931
|
-
* @param int $comment_id Comment ID.
|
1932
|
-
* @param string|bool $comment_status Current comment status. Possible values include
|
1933
|
-
* 'hold', 'approve', 'spam', 'trash', or false.
|
1934
|
-
*/
|
1935
|
-
do_action( 'wp_set_comment_status', $comment_id, $comment_status );
|
1936
|
-
|
1937
|
-
wp_transition_comment_status($comment_status, $comment_old->comment_approved, $comment);
|
1938
|
-
|
1939
|
-
wp_update_comment_count($comment->comment_post_ID);
|
1940
|
-
|
1941
|
-
return true;
|
1942
|
-
}
|
1943
|
-
|
1944
|
-
/**
|
1945
|
-
* Updates an existing comment in the database.
|
1946
|
-
*
|
1947
|
-
* Filters the comment and makes sure certain fields are valid before updating.
|
1948
|
-
*
|
1949
|
-
* @since 2.0.0
|
1950
|
-
* @uses $wpdb
|
1951
|
-
* @uses wp_transition_comment_status() Passes new and old comment status along with $comment object
|
1952
|
-
*
|
1953
|
-
* @param array $commentarr Contains information on the comment.
|
1954
|
-
* @return int Comment was updated if value is 1, or was not updated if value is 0.
|
1955
|
-
*/
|
1956
|
-
function wp_update_comment($commentarr) {
|
1957
|
-
global $wpdb;
|
1958
|
-
|
1959
|
-
// First, get all of the original fields
|
1960
|
-
$comment = get_comment($commentarr['comment_ID'], ARRAY_A);
|
1961
|
-
if ( empty( $comment ) ) {
|
1962
|
-
return 0;
|
1963
|
-
}
|
1964
|
-
// Escape data pulled from DB.
|
1965
|
-
$comment = wp_slash($comment);
|
1966
|
-
|
1967
|
-
$old_status = $comment['comment_approved'];
|
1968
|
-
|
1969
|
-
// Merge old and new fields with new fields overwriting old ones.
|
1970
|
-
$commentarr = array_merge($comment, $commentarr);
|
1971
|
-
|
1972
|
-
$commentarr = wp_filter_comment( $commentarr );
|
1973
|
-
|
1974
|
-
// Now extract the merged array.
|
1975
|
-
$data = wp_unslash( $commentarr );
|
1976
|
-
|
1977
|
-
/**
|
1978
|
-
* Filter the comment content before it is updated in the database.
|
1979
|
-
*
|
1980
|
-
* @since 1.5.0
|
1981
|
-
*
|
1982
|
-
* @param string $comment_content The comment data.
|
1983
|
-
*/
|
1984
|
-
$data['comment_content'] = apply_filters( 'comment_save_pre', $data['comment_content'] );
|
1985
|
-
|
1986
|
-
$data['comment_date_gmt'] = get_gmt_from_date( $data['comment_date'] );
|
1987
|
-
|
1988
|
-
if ( ! isset( $data['comment_approved'] ) ) {
|
1989
|
-
$data['comment_approved'] = 1;
|
1990
|
-
} else if ( 'hold' == $data['comment_approved'] ) {
|
1991
|
-
$data['comment_approved'] = 0;
|
1992
|
-
} else if ( 'approve' == $data['comment_approved'] ) {
|
1993
|
-
$data['comment_approved'] = 1;
|
1994
|
-
}
|
1995
|
-
|
1996
|
-
$comment_ID = $data['comment_ID'];
|
1997
|
-
$comment_post_ID = $data['comment_post_ID'];
|
1998
|
-
$keys = array( 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_parent' );
|
1999
|
-
$data = wp_array_slice_assoc( $data, $keys );
|
2000
|
-
$rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) );
|
2001
|
-
|
2002
|
-
clean_comment_cache( $comment_ID );
|
2003
|
-
wp_update_comment_count( $comment_post_ID );
|
2004
|
-
/**
|
2005
|
-
* Fires immediately after a comment is updated in the database.
|
2006
|
-
*
|
2007
|
-
* The hook also fires immediately before comment status transition hooks are fired.
|
2008
|
-
*
|
2009
|
-
* @since 1.2.0
|
2010
|
-
*
|
2011
|
-
* @param int $comment_ID The comment ID.
|
2012
|
-
*/
|
2013
|
-
do_action( 'edit_comment', $comment_ID );
|
2014
|
-
$comment = get_comment($comment_ID);
|
2015
|
-
wp_transition_comment_status($comment->comment_approved, $old_status, $comment);
|
2016
|
-
return $rval;
|
2017
|
-
}
|
2018
|
-
|
2019
|
-
/**
|
2020
|
-
* Whether to defer comment counting.
|
2021
|
-
*
|
2022
|
-
* When setting $defer to true, all post comment counts will not be updated
|
2023
|
-
* until $defer is set to false. When $defer is set to false, then all
|
2024
|
-
* previously deferred updated post comment counts will then be automatically
|
2025
|
-
* updated without having to call wp_update_comment_count() after.
|
2026
|
-
*
|
2027
|
-
* @since 2.5.0
|
2028
|
-
* @staticvar bool $_defer
|
2029
|
-
*
|
2030
|
-
* @param bool $defer
|
2031
|
-
* @return unknown
|
2032
|
-
*/
|
2033
|
-
function wp_defer_comment_counting($defer=null) {
|
2034
|
-
static $_defer = false;
|
2035
|
-
|
2036
|
-
if ( is_bool($defer) ) {
|
2037
|
-
$_defer = $defer;
|
2038
|
-
// flush any deferred counts
|
2039
|
-
if ( !$defer )
|
2040
|
-
wp_update_comment_count( null, true );
|
2041
|
-
}
|
2042
|
-
|
2043
|
-
return $_defer;
|
2044
|
-
}
|
2045
|
-
|
2046
|
-
/**
|
2047
|
-
* Updates the comment count for post(s).
|
2048
|
-
*
|
2049
|
-
* When $do_deferred is false (is by default) and the comments have been set to
|
2050
|
-
* be deferred, the post_id will be added to a queue, which will be updated at a
|
2051
|
-
* later date and only updated once per post ID.
|
2052
|
-
*
|
2053
|
-
* If the comments have not be set up to be deferred, then the post will be
|
2054
|
-
* updated. When $do_deferred is set to true, then all previous deferred post
|
2055
|
-
* IDs will be updated along with the current $post_id.
|
2056
|
-
*
|
2057
|
-
* @since 2.1.0
|
2058
|
-
* @see wp_update_comment_count_now() For what could cause a false return value
|
2059
|
-
*
|
2060
|
-
* @param int $post_id Post ID
|
2061
|
-
* @param bool $do_deferred Whether to process previously deferred post comment counts
|
2062
|
-
* @return bool True on success, false on failure
|
2063
|
-
*/
|
2064
|
-
function wp_update_comment_count($post_id, $do_deferred=false) {
|
2065
|
-
static $_deferred = array();
|
2066
|
-
|
2067
|
-
if ( $do_deferred ) {
|
2068
|
-
$_deferred = array_unique($_deferred);
|
2069
|
-
foreach ( $_deferred as $i => $_post_id ) {
|
2070
|
-
wp_update_comment_count_now($_post_id);
|
2071
|
-
unset( $_deferred[$i] ); /** @todo Move this outside of the foreach and reset $_deferred to an array instead */
|
2072
|
-
}
|
2073
|
-
}
|
2074
|
-
|
2075
|
-
if ( wp_defer_comment_counting() ) {
|
2076
|
-
$_deferred[] = $post_id;
|
2077
|
-
return true;
|
2078
|
-
}
|
2079
|
-
elseif ( $post_id ) {
|
2080
|
-
return wp_update_comment_count_now($post_id);
|
2081
|
-
}
|
2082
|
-
|
2083
|
-
}
|
2084
|
-
|
2085
|
-
/**
|
2086
|
-
* Updates the comment count for the post.
|
2087
|
-
*
|
2088
|
-
* @since 2.5.0
|
2089
|
-
* @uses $wpdb
|
2090
|
-
*
|
2091
|
-
* @param int $post_id Post ID
|
2092
|
-
* @return bool True on success, false on '0' $post_id or if post with ID does not exist.
|
2093
|
-
*/
|
2094
|
-
function wp_update_comment_count_now($post_id) {
|
2095
|
-
global $wpdb;
|
2096
|
-
$post_id = (int) $post_id;
|
2097
|
-
if ( !$post_id )
|
2098
|
-
return false;
|
2099
|
-
if ( !$post = get_post($post_id) )
|
2100
|
-
return false;
|
2101
|
-
|
2102
|
-
$old = (int) $post->comment_count;
|
2103
|
-
$new = (int) $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1'", $post_id) );
|
2104
|
-
$wpdb->update( $wpdb->posts, array('comment_count' => $new), array('ID' => $post_id) );
|
2105
|
-
|
2106
|
-
clean_post_cache( $post );
|
2107
|
-
|
2108
|
-
/**
|
2109
|
-
* Fires immediately after a post's comment count is updated in the database.
|
2110
|
-
*
|
2111
|
-
* @since 2.3.0
|
2112
|
-
*
|
2113
|
-
* @param int $post_id Post ID.
|
2114
|
-
* @param int $new The new comment count.
|
2115
|
-
* @param int $old The old comment count.
|
2116
|
-
*/
|
2117
|
-
do_action( 'wp_update_comment_count', $post_id, $new, $old );
|
2118
|
-
/** This action is documented in wp-includes/post.php */
|
2119
|
-
do_action( 'edit_post', $post_id, $post );
|
2120
|
-
|
2121
|
-
return true;
|
2122
|
-
}
|
2123
|
-
|
2124
|
-
//
|
2125
|
-
// Ping and trackback functions.
|
2126
|
-
//
|
2127
|
-
|
2128
|
-
/**
|
2129
|
-
* Finds a pingback server URI based on the given URL.
|
2130
|
-
*
|
2131
|
-
* Checks the HTML for the rel="pingback" link and x-pingback headers. It does
|
2132
|
-
* a check for the x-pingback headers first and returns that, if available. The
|
2133
|
-
* check for the rel="pingback" has more overhead than just the header.
|
2134
|
-
*
|
2135
|
-
* @since 1.5.0
|
2136
|
-
*
|
2137
|
-
* @param string $url URL to ping.
|
2138
|
-
* @param int $deprecated Not Used.
|
2139
|
-
* @return bool|string False on failure, string containing URI on success.
|
2140
|
-
*/
|
2141
|
-
function discover_pingback_server_uri( $url, $deprecated = '' ) {
|
2142
|
-
if ( !empty( $deprecated ) )
|
2143
|
-
_deprecated_argument( __FUNCTION__, '2.7' );
|
2144
|
-
|
2145
|
-
$pingback_str_dquote = 'rel="pingback"';
|
2146
|
-
$pingback_str_squote = 'rel=\'pingback\'';
|
2147
|
-
|
2148
|
-
/** @todo Should use Filter Extension or custom preg_match instead. */
|
2149
|
-
$parsed_url = parse_url($url);
|
2150
|
-
|
2151
|
-
if ( ! isset( $parsed_url['host'] ) ) // Not an URL. This should never happen.
|
2152
|
-
return false;
|
2153
|
-
|
2154
|
-
//Do not search for a pingback server on our own uploads
|
2155
|
-
$uploads_dir = wp_upload_dir();
|
2156
|
-
if ( 0 === strpos($url, $uploads_dir['baseurl']) )
|
2157
|
-
return false;
|
2158
|
-
|
2159
|
-
$response = wp_safe_remote_head( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
|
2160
|
-
|
2161
|
-
if ( is_wp_error( $response ) )
|
2162
|
-
return false;
|
2163
|
-
|
2164
|
-
if ( wp_remote_retrieve_header( $response, 'x-pingback' ) )
|
2165
|
-
return wp_remote_retrieve_header( $response, 'x-pingback' );
|
2166
|
-
|
2167
|
-
// Not an (x)html, sgml, or xml page, no use going further.
|
2168
|
-
if ( preg_match('#(image|audio|video|model)/#is', wp_remote_retrieve_header( $response, 'content-type' )) )
|
2169
|
-
return false;
|
2170
|
-
|
2171
|
-
// Now do a GET since we're going to look in the html headers (and we're sure it's not a binary file)
|
2172
|
-
$response = wp_safe_remote_get( $url, array( 'timeout' => 2, 'httpversion' => '1.0' ) );
|
2173
|
-
|
2174
|
-
if ( is_wp_error( $response ) )
|
2175
|
-
return false;
|
2176
|
-
|
2177
|
-
$contents = wp_remote_retrieve_body( $response );
|
2178
|
-
|
2179
|
-
$pingback_link_offset_dquote = strpos($contents, $pingback_str_dquote);
|
2180
|
-
$pingback_link_offset_squote = strpos($contents, $pingback_str_squote);
|
2181
|
-
if ( $pingback_link_offset_dquote || $pingback_link_offset_squote ) {
|
2182
|
-
$quote = ($pingback_link_offset_dquote) ? '"' : '\'';
|
2183
|
-
$pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote : $pingback_link_offset_squote;
|
2184
|
-
$pingback_href_pos = @strpos($contents, 'href=', $pingback_link_offset);
|
2185
|
-
$pingback_href_start = $pingback_href_pos+6;
|
2186
|
-
$pingback_href_end = @strpos($contents, $quote, $pingback_href_start);
|
2187
|
-
$pingback_server_url_len = $pingback_href_end - $pingback_href_start;
|
2188
|
-
$pingback_server_url = substr($contents, $pingback_href_start, $pingback_server_url_len);
|
2189
|
-
|
2190
|
-
// We may find rel="pingback" but an incomplete pingback URL
|
2191
|
-
if ( $pingback_server_url_len > 0 ) { // We got it!
|
2192
|
-
return $pingback_server_url;
|
2193
|
-
}
|
2194
|
-
}
|
2195
|
-
|
2196
|
-
return false;
|
2197
|
-
}
|
2198
|
-
|
2199
|
-
/**
|
2200
|
-
* Perform all pingbacks, enclosures, trackbacks, and send to pingback services.
|
2201
|
-
*
|
2202
|
-
* @since 2.1.0
|
2203
|
-
* @uses $wpdb
|
2204
|
-
*/
|
2205
|
-
function do_all_pings() {
|
2206
|
-
global $wpdb;
|
2207
|
-
|
2208
|
-
// Do pingbacks
|
2209
|
-
while ($ping = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
|
2210
|
-
delete_metadata_by_mid( 'post', $ping->meta_id );
|
2211
|
-
pingback( $ping->post_content, $ping->ID );
|
2212
|
-
}
|
2213
|
-
|
2214
|
-
// Do Enclosures
|
2215
|
-
while ($enclosure = $wpdb->get_row("SELECT ID, post_content, meta_id FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
|
2216
|
-
delete_metadata_by_mid( 'post', $enclosure->meta_id );
|
2217
|
-
do_enclose( $enclosure->post_content, $enclosure->ID );
|
2218
|
-
}
|
2219
|
-
|
2220
|
-
// Do Trackbacks
|
2221
|
-
$trackbacks = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE to_ping <> '' AND post_status = 'publish'");
|
2222
|
-
if ( is_array($trackbacks) )
|
2223
|
-
foreach ( $trackbacks as $trackback )
|
2224
|
-
do_trackbacks($trackback);
|
2225
|
-
|
2226
|
-
//Do Update Services/Generic Pings
|
2227
|
-
generic_ping();
|
2228
|
-
}
|
2229
|
-
|
2230
|
-
/**
|
2231
|
-
* Perform trackbacks.
|
2232
|
-
*
|
2233
|
-
* @since 1.5.0
|
2234
|
-
* @uses $wpdb
|
2235
|
-
*
|
2236
|
-
* @param int $post_id Post ID to do trackbacks on.
|
2237
|
-
*/
|
2238
|
-
function do_trackbacks($post_id) {
|
2239
|
-
global $wpdb;
|
2240
|
-
|
2241
|
-
$post = get_post( $post_id );
|
2242
|
-
$to_ping = get_to_ping($post_id);
|
2243
|
-
$pinged = get_pung($post_id);
|
2244
|
-
if ( empty($to_ping) ) {
|
2245
|
-
$wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) );
|
2246
|
-
return;
|
2247
|
-
}
|
2248
|
-
|
2249
|
-
if ( empty($post->post_excerpt) ) {
|
2250
|
-
/** This filter is documented in wp-includes/post-template.php */
|
2251
|
-
$excerpt = apply_filters( 'the_content', $post->post_content, $post->ID );
|
2252
|
-
} else {
|
2253
|
-
/** This filter is documented in wp-includes/post-template.php */
|
2254
|
-
$excerpt = apply_filters( 'the_excerpt', $post->post_excerpt );
|
2255
|
-
}
|
2256
|
-
|
2257
|
-
$excerpt = str_replace(']]>', ']]>', $excerpt);
|
2258
|
-
$excerpt = wp_html_excerpt($excerpt, 252, '…');
|
2259
|
-
|
2260
|
-
/** This filter is documented in wp-includes/post-template.php */
|
2261
|
-
$post_title = apply_filters( 'the_title', $post->post_title, $post->ID );
|
2262
|
-
$post_title = strip_tags($post_title);
|
2263
|
-
|
2264
|
-
if ( $to_ping ) {
|
2265
|
-
foreach ( (array) $to_ping as $tb_ping ) {
|
2266
|
-
$tb_ping = trim($tb_ping);
|
2267
|
-
if ( !in_array($tb_ping, $pinged) ) {
|
2268
|
-
trackback($tb_ping, $post_title, $excerpt, $post_id);
|
2269
|
-
$pinged[] = $tb_ping;
|
2270
|
-
} else {
|
2271
|
-
$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $tb_ping, $post_id) );
|
2272
|
-
}
|
2273
|
-
}
|
2274
|
-
}
|
2275
|
-
}
|
2276
|
-
|
2277
|
-
/**
|
2278
|
-
* Sends pings to all of the ping site services.
|
2279
|
-
*
|
2280
|
-
* @since 1.2.0
|
2281
|
-
*
|
2282
|
-
* @param int $post_id Post ID.
|
2283
|
-
* @return int Same as Post ID from parameter
|
2284
|
-
*/
|
2285
|
-
function generic_ping( $post_id = 0 ) {
|
2286
|
-
$services = get_option('ping_sites');
|
2287
|
-
|
2288
|
-
$services = explode("\n", $services);
|
2289
|
-
foreach ( (array) $services as $service ) {
|
2290
|
-
$service = trim($service);
|
2291
|
-
if ( '' != $service )
|
2292
|
-
weblog_ping($service);
|
2293
|
-
}
|
2294
|
-
|
2295
|
-
return $post_id;
|
2296
|
-
}
|
2297
|
-
|
2298
|
-
/**
|
2299
|
-
* Pings back the links found in a post.
|
2300
|
-
*
|
2301
|
-
* @since 0.71
|
2302
|
-
* @uses $wp_version
|
2303
|
-
* @uses IXR_Client
|
2304
|
-
*
|
2305
|
-
* @param string $content Post content to check for links.
|
2306
|
-
* @param int $post_ID Post ID.
|
2307
|
-
*/
|
2308
|
-
function pingback($content, $post_ID) {
|
2309
|
-
global $wp_version;
|
2310
|
-
include_once(ABSPATH . WPINC . '/class-IXR.php');
|
2311
|
-
include_once(ABSPATH . WPINC . '/class-wp-http-ixr-client.php');
|
2312
|
-
|
2313
|
-
// original code by Mort (http://mort.mine.nu:8080)
|
2314
|
-
$post_links = array();
|
2315
|
-
|
2316
|
-
$pung = get_pung($post_ID);
|
2317
|
-
|
2318
|
-
// Step 1
|
2319
|
-
// Parsing the post, external links (if any) are stored in the $post_links array
|
2320
|
-
$post_links_temp = wp_extract_urls( $content );
|
2321
|
-
|
2322
|
-
// Step 2.
|
2323
|
-
// Walking thru the links array
|
2324
|
-
// first we get rid of links pointing to sites, not to specific files
|
2325
|
-
// Example:
|
2326
|
-
// http://dummy-weblog.org
|
2327
|
-
// http://dummy-weblog.org/
|
2328
|
-
// http://dummy-weblog.org/post.php
|
2329
|
-
// We don't wanna ping first and second types, even if they have a valid <link/>
|
2330
|
-
|
2331
|
-
foreach ( (array) $post_links_temp as $link_test ) :
|
2332
|
-
if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
|
2333
|
-
&& !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
|
2334
|
-
if ( $test = @parse_url($link_test) ) {
|
2335
|
-
if ( isset($test['query']) )
|
2336
|
-
$post_links[] = $link_test;
|
2337
|
-
elseif ( isset( $test['path'] ) && ( $test['path'] != '/' ) && ( $test['path'] != '' ) )
|
2338
|
-
$post_links[] = $link_test;
|
2339
|
-
}
|
2340
|
-
endif;
|
2341
|
-
endforeach;
|
2342
|
-
|
2343
|
-
$post_links = array_unique( $post_links );
|
2344
|
-
/**
|
2345
|
-
* Fires just before pinging back links found in a post.
|
2346
|
-
*
|
2347
|
-
* @since 2.0.0
|
2348
|
-
*
|
2349
|
-
* @param array &$post_links An array of post links to be checked, passed by reference.
|
2350
|
-
* @param array &$pung Whether a link has already been pinged, passed by reference.
|
2351
|
-
* @param int $post_ID The post ID.
|
2352
|
-
*/
|
2353
|
-
do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post_ID ) );
|
2354
|
-
|
2355
|
-
foreach ( (array) $post_links as $pagelinkedto ) {
|
2356
|
-
$pingback_server_url = discover_pingback_server_uri( $pagelinkedto );
|
2357
|
-
|
2358
|
-
if ( $pingback_server_url ) {
|
2359
|
-
@ set_time_limit( 60 );
|
2360
|
-
// Now, the RPC call
|
2361
|
-
$pagelinkedfrom = get_permalink($post_ID);
|
2362
|
-
|
2363
|
-
// using a timeout of 3 seconds should be enough to cover slow servers
|
2364
|
-
$client = new WP_HTTP_IXR_Client($pingback_server_url);
|
2365
|
-
$client->timeout = 3;
|
2366
|
-
/**
|
2367
|
-
* Filter the user agent sent when pinging-back a URL.
|
2368
|
-
*
|
2369
|
-
* @since 2.9.0
|
2370
|
-
*
|
2371
|
-
* @param string $concat_useragent The user agent concatenated with ' -- WordPress/'
|
2372
|
-
* and the WordPress version.
|
2373
|
-
* @param string $useragent The useragent.
|
2374
|
-
* @param string $pingback_server_url The server URL being linked to.
|
2375
|
-
* @param string $pagelinkedto URL of page linked to.
|
2376
|
-
* @param string $pagelinkedfrom URL of page linked from.
|
2377
|
-
*/
|
2378
|
-
$client->useragent = apply_filters( 'pingback_useragent', $client->useragent . ' -- WordPress/' . $wp_version, $client->useragent, $pingback_server_url, $pagelinkedto, $pagelinkedfrom );
|
2379
|
-
// when set to true, this outputs debug messages by itself
|
2380
|
-
$client->debug = false;
|
2381
|
-
|
2382
|
-
if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto) || ( isset($client->error->code) && 48 == $client->error->code ) ) // Already registered
|
2383
|
-
add_ping( $post_ID, $pagelinkedto );
|
2384
|
-
}
|
2385
|
-
}
|
2386
|
-
}
|
2387
|
-
|
2388
|
-
/**
|
2389
|
-
* Check whether blog is public before returning sites.
|
2390
|
-
*
|
2391
|
-
* @since 2.1.0
|
2392
|
-
*
|
2393
|
-
* @param mixed $sites Will return if blog is public, will not return if not public.
|
2394
|
-
* @return mixed Empty string if blog is not public, returns $sites, if site is public.
|
2395
|
-
*/
|
2396
|
-
function privacy_ping_filter($sites) {
|
2397
|
-
if ( '0' != get_option('blog_public') )
|
2398
|
-
return $sites;
|
2399
|
-
else
|
2400
|
-
return '';
|
2401
|
-
}
|
2402
|
-
|
2403
|
-
/**
|
2404
|
-
* Send a Trackback.
|
2405
|
-
*
|
2406
|
-
* Updates database when sending trackback to prevent duplicates.
|
2407
|
-
*
|
2408
|
-
* @since 0.71
|
2409
|
-
* @uses $wpdb
|
2410
|
-
*
|
2411
|
-
* @param string $trackback_url URL to send trackbacks.
|
2412
|
-
* @param string $title Title of post.
|
2413
|
-
* @param string $excerpt Excerpt of post.
|
2414
|
-
* @param int $ID Post ID.
|
2415
|
-
* @return mixed Database query from update.
|
2416
|
-
*/
|
2417
|
-
function trackback($trackback_url, $title, $excerpt, $ID) {
|
2418
|
-
global $wpdb;
|
2419
|
-
|
2420
|
-
if ( empty($trackback_url) )
|
2421
|
-
return;
|
2422
|
-
|
2423
|
-
$options = array();
|
2424
|
-
$options['timeout'] = 4;
|
2425
|
-
$options['body'] = array(
|
2426
|
-
'title' => $title,
|
2427
|
-
'url' => get_permalink($ID),
|
2428
|
-
'blog_name' => get_option('blogname'),
|
2429
|
-
'excerpt' => $excerpt
|
2430
|
-
);
|
2431
|
-
|
2432
|
-
$response = wp_safe_remote_post( $trackback_url, $options );
|
2433
|
-
|
2434
|
-
if ( is_wp_error( $response ) )
|
2435
|
-
return;
|
2436
|
-
|
2437
|
-
$wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', %s) WHERE ID = %d", $trackback_url, $ID) );
|
2438
|
-
return $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $trackback_url, $ID) );
|
2439
|
-
}
|
2440
|
-
|
2441
|
-
/**
|
2442
|
-
* Send a pingback.
|
2443
|
-
*
|
2444
|
-
* @since 1.2.0
|
2445
|
-
* @uses $wp_version
|
2446
|
-
* @uses IXR_Client
|
2447
|
-
*
|
2448
|
-
* @param string $server Host of blog to connect to.
|
2449
|
-
* @param string $path Path to send the ping.
|
2450
|
-
*/
|
2451
|
-
function weblog_ping($server = '', $path = '') {
|
2452
|
-
global $wp_version;
|
2453
|
-
include_once(ABSPATH . WPINC . '/class-IXR.php');
|
2454
|
-
include_once(ABSPATH . WPINC . '/class-wp-http-ixr-client.php');
|
2455
|
-
|
2456
|
-
// using a timeout of 3 seconds should be enough to cover slow servers
|
2457
|
-
$client = new WP_HTTP_IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path));
|
2458
|
-
$client->timeout = 3;
|
2459
|
-
$client->useragent .= ' -- WordPress/'.$wp_version;
|
2460
|
-
|
2461
|
-
// when set to true, this outputs debug messages by itself
|
2462
|
-
$client->debug = false;
|
2463
|
-
$home = trailingslashit( home_url() );
|
2464
|
-
if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping
|
2465
|
-
$client->query('weblogUpdates.ping', get_option('blogname'), $home);
|
2466
|
-
}
|
2467
|
-
|
2468
|
-
/**
|
2469
|
-
* Default filter attached to pingback_ping_source_uri to validate the pingback's Source URI
|
2470
|
-
*
|
2471
|
-
* @since 3.5.1
|
2472
|
-
* @see wp_http_validate_url()
|
2473
|
-
*
|
2474
|
-
* @param string $source_uri
|
2475
|
-
* @return string
|
2476
|
-
*/
|
2477
|
-
function pingback_ping_source_uri( $source_uri ) {
|
2478
|
-
return (string) wp_http_validate_url( $source_uri );
|
2479
|
-
}
|
2480
|
-
|
2481
|
-
/**
|
2482
|
-
* Default filter attached to xmlrpc_pingback_error.
|
2483
|
-
*
|
2484
|
-
* Returns a generic pingback error code unless the error code is 48,
|
2485
|
-
* which reports that the pingback is already registered.
|
2486
|
-
*
|
2487
|
-
* @since 3.5.1
|
2488
|
-
* @link http://www.hixie.ch/specs/pingback/pingback#TOC3
|
2489
|
-
*
|
2490
|
-
* @param IXR_Error $ixr_error
|
2491
|
-
* @return IXR_Error
|
2492
|
-
*/
|
2493
|
-
function xmlrpc_pingback_error( $ixr_error ) {
|
2494
|
-
if ( $ixr_error->code === 48 )
|
2495
|
-
return $ixr_error;
|
2496
|
-
return new IXR_Error( 0, '' );
|
2497
|
-
}
|
2498
|
-
|
2499
|
-
//
|
2500
|
-
// Cache
|
2501
|
-
//
|
2502
|
-
|
2503
|
-
/**
|
2504
|
-
* Removes comment ID from the comment cache.
|
2505
|
-
*
|
2506
|
-
* @since 2.3.0
|
2507
|
-
*
|
2508
|
-
* @param int|array $ids Comment ID or array of comment IDs to remove from cache
|
2509
|
-
*/
|
2510
|
-
function clean_comment_cache($ids) {
|
2511
|
-
foreach ( (array) $ids as $id )
|
2512
|
-
wp_cache_delete($id, 'comment');
|
2513
|
-
|
2514
|
-
wp_cache_set( 'last_changed', microtime(), 'comment' );
|
2515
|
-
}
|
2516
|
-
|
2517
|
-
/**
|
2518
|
-
* Updates the comment cache of given comments.
|
2519
|
-
*
|
2520
|
-
* Will add the comments in $comments to the cache. If comment ID already exists
|
2521
|
-
* in the comment cache then it will not be updated. The comment is added to the
|
2522
|
-
* cache using the comment group with the key using the ID of the comments.
|
2523
|
-
*
|
2524
|
-
* @since 2.3.0
|
2525
|
-
*
|
2526
|
-
* @param array $comments Array of comment row objects
|
2527
|
-
*/
|
2528
|
-
function update_comment_cache($comments) {
|
2529
|
-
foreach ( (array) $comments as $comment )
|
2530
|
-
wp_cache_add($comment->comment_ID, $comment, 'comment');
|
2531
|
-
}
|
2532
|
-
|
2533
|
-
//
|
2534
|
-
// Internal
|
2535
|
-
//
|
2536
|
-
|
2537
|
-
/**
|
2538
|
-
* Close comments on old posts on the fly, without any extra DB queries. Hooked to the_posts.
|
2539
|
-
*
|
2540
|
-
* @access private
|
2541
|
-
* @since 2.7.0
|
2542
|
-
*
|
2543
|
-
* @param object $posts Post data object.
|
2544
|
-
* @param object $query Query object.
|
2545
|
-
* @return object
|
2546
|
-
*/
|
2547
|
-
function _close_comments_for_old_posts( $posts, $query ) {
|
2548
|
-
if ( empty( $posts ) || ! $query->is_singular() || ! get_option( 'close_comments_for_old_posts' ) )
|
2549
|
-
return $posts;
|
2550
|
-
|
2551
|
-
/**
|
2552
|
-
* Filter the list of post types to automatically close comments for.
|
2553
|
-
*
|
2554
|
-
* @since 3.2.0
|
2555
|
-
*
|
2556
|
-
* @param array $post_types An array of registered post types. Default array with 'post'.
|
2557
|
-
*/
|
2558
|
-
$post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) );
|
2559
|
-
if ( ! in_array( $posts[0]->post_type, $post_types ) )
|
2560
|
-
return $posts;
|
2561
|
-
|
2562
|
-
$days_old = (int) get_option( 'close_comments_days_old' );
|
2563
|
-
if ( ! $days_old )
|
2564
|
-
return $posts;
|
2565
|
-
|
2566
|
-
if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) {
|
2567
|
-
$posts[0]->comment_status = 'closed';
|
2568
|
-
$posts[0]->ping_status = 'closed';
|
2569
|
-
}
|
2570
|
-
|
2571
|
-
return $posts;
|
2572
|
-
}
|
2573
|
-
|
2574
|
-
/**
|
2575
|
-
* Close comments on an old post. Hooked to comments_open and pings_open.
|
2576
|
-
*
|
2577
|
-
* @access private
|
2578
|
-
* @since 2.7.0
|
2579
|
-
*
|
2580
|
-
* @param bool $open Comments open or closed
|
2581
|
-
* @param int $post_id Post ID
|
2582
|
-
* @return bool $open
|
2583
|
-
*/
|
2584
|
-
function _close_comments_for_old_post( $open, $post_id ) {
|
2585
|
-
if ( ! $open )
|
2586
|
-
return $open;
|
2587
|
-
|
2588
|
-
if ( !get_option('close_comments_for_old_posts') )
|
2589
|
-
return $open;
|
2590
|
-
|
2591
|
-
$days_old = (int) get_option('close_comments_days_old');
|
2592
|
-
if ( !$days_old )
|
2593
|
-
return $open;
|
2594
|
-
|
2595
|
-
$post = get_post($post_id);
|
2596
|
-
|
2597
|
-
/** This filter is documented in wp-includes/comment.php */
|
2598
|
-
$post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) );
|
2599
|
-
if ( ! in_array( $post->post_type, $post_types ) )
|
2600
|
-
return $open;
|
2601
|
-
|
2602
|
-
if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) )
|
2603
|
-
return false;
|
2604
|
-
|
2605
|
-
return $open;
|
2606
|
-
}
|