Changeset 2644211
- Timestamp:
- 12/14/2021 11:13:47 PM (4 years ago)
- Location:
- seo-booster
- Files:
-
- 602 added
- 29 edited
-
tags/3.8.1 (added)
-
tags/3.8.1/assets (added)
-
tags/3.8.1/assets/css (added)
-
tags/3.8.1/assets/css/index.php (added)
-
tags/3.8.1/assets/css/seo-booster.scss (added)
-
tags/3.8.1/assets/index.php (added)
-
tags/3.8.1/changelog.txt (added)
-
tags/3.8.1/css (added)
-
tags/3.8.1/css/index.php (added)
-
tags/3.8.1/css/seo-booster-min.css (added)
-
tags/3.8.1/css/seo-booster-min.css.map (added)
-
tags/3.8.1/freemius (added)
-
tags/3.8.1/freemius/LICENSE.txt (added)
-
tags/3.8.1/freemius/assets (added)
-
tags/3.8.1/freemius/assets/css (added)
-
tags/3.8.1/freemius/assets/css/admin (added)
-
tags/3.8.1/freemius/assets/css/admin/account.css (added)
-
tags/3.8.1/freemius/assets/css/admin/add-ons.css (added)
-
tags/3.8.1/freemius/assets/css/admin/affiliation.css (added)
-
tags/3.8.1/freemius/assets/css/admin/checkout.css (added)
-
tags/3.8.1/freemius/assets/css/admin/common.css (added)
-
tags/3.8.1/freemius/assets/css/admin/connect.css (added)
-
tags/3.8.1/freemius/assets/css/admin/debug.css (added)
-
tags/3.8.1/freemius/assets/css/admin/dialog-boxes.css (added)
-
tags/3.8.1/freemius/assets/css/admin/gdpr-optin-notice.css (added)
-
tags/3.8.1/freemius/assets/css/admin/index.php (added)
-
tags/3.8.1/freemius/assets/css/admin/plugins.css (added)
-
tags/3.8.1/freemius/assets/css/customizer.css (added)
-
tags/3.8.1/freemius/assets/css/index.php (added)
-
tags/3.8.1/freemius/assets/img (added)
-
tags/3.8.1/freemius/assets/img/index.php (added)
-
tags/3.8.1/freemius/assets/img/plugin-icon.png (added)
-
tags/3.8.1/freemius/assets/img/security-ninja.png (added)
-
tags/3.8.1/freemius/assets/img/seo-booster.jpg (added)
-
tags/3.8.1/freemius/assets/img/seo-booster.png (added)
-
tags/3.8.1/freemius/assets/img/theme-icon.png (added)
-
tags/3.8.1/freemius/assets/index.php (added)
-
tags/3.8.1/freemius/assets/js (added)
-
tags/3.8.1/freemius/assets/js/index.php (added)
-
tags/3.8.1/freemius/assets/js/nojquery.ba-postmessage.js (added)
-
tags/3.8.1/freemius/assets/js/nojquery.ba-postmessage.min.js (added)
-
tags/3.8.1/freemius/assets/js/postmessage.js (added)
-
tags/3.8.1/freemius/config.php (added)
-
tags/3.8.1/freemius/includes (added)
-
tags/3.8.1/freemius/includes/class-freemius-abstract.php (added)
-
tags/3.8.1/freemius/includes/class-freemius.php (added)
-
tags/3.8.1/freemius/includes/class-fs-admin-notices.php (added)
-
tags/3.8.1/freemius/includes/class-fs-api.php (added)
-
tags/3.8.1/freemius/includes/class-fs-logger.php (added)
-
tags/3.8.1/freemius/includes/class-fs-options.php (added)
-
tags/3.8.1/freemius/includes/class-fs-plugin-updater.php (added)
-
tags/3.8.1/freemius/includes/class-fs-security.php (added)
-
tags/3.8.1/freemius/includes/class-fs-storage.php (added)
-
tags/3.8.1/freemius/includes/class-fs-user-lock.php (added)
-
tags/3.8.1/freemius/includes/customizer (added)
-
tags/3.8.1/freemius/includes/customizer/class-fs-customizer-support-section.php (added)
-
tags/3.8.1/freemius/includes/customizer/class-fs-customizer-upsell-control.php (added)
-
tags/3.8.1/freemius/includes/customizer/index.php (added)
-
tags/3.8.1/freemius/includes/debug (added)
-
tags/3.8.1/freemius/includes/debug/class-fs-debug-bar-panel.php (added)
-
tags/3.8.1/freemius/includes/debug/debug-bar-start.php (added)
-
tags/3.8.1/freemius/includes/debug/index.php (added)
-
tags/3.8.1/freemius/includes/entities (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-affiliate-terms.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-affiliate.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-billing.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-entity.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-payment.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-plugin-info.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-plugin-license.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-plugin-plan.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-plugin-tag.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-plugin.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-pricing.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-scope-entity.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-site.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-subscription.php (added)
-
tags/3.8.1/freemius/includes/entities/class-fs-user.php (added)
-
tags/3.8.1/freemius/includes/entities/index.php (added)
-
tags/3.8.1/freemius/includes/fs-core-functions.php (added)
-
tags/3.8.1/freemius/includes/fs-essential-functions.php (added)
-
tags/3.8.1/freemius/includes/fs-plugin-info-dialog.php (added)
-
tags/3.8.1/freemius/includes/i18n.php (added)
-
tags/3.8.1/freemius/includes/index.php (added)
-
tags/3.8.1/freemius/includes/l10n.php (added)
-
tags/3.8.1/freemius/includes/managers (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-admin-menu-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-admin-notice-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-cache-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-gdpr-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-key-value-storage.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-license-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-option-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-plan-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/class-fs-plugin-manager.php (added)
-
tags/3.8.1/freemius/includes/managers/index.php (added)
-
tags/3.8.1/freemius/includes/sdk (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/EmptyArgumentException.php (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/Exception.php (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/InvalidArgumentException.php (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/OAuthException.php (added)
-
tags/3.8.1/freemius/includes/sdk/Exceptions/index.php (added)
-
tags/3.8.1/freemius/includes/sdk/FreemiusBase.php (added)
-
tags/3.8.1/freemius/includes/sdk/FreemiusWordPress.php (added)
-
tags/3.8.1/freemius/includes/sdk/LICENSE.txt (added)
-
tags/3.8.1/freemius/includes/sdk/index.php (added)
-
tags/3.8.1/freemius/includes/supplements (added)
-
tags/3.8.1/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php (added)
-
tags/3.8.1/freemius/includes/supplements/fs-essential-functions-2.2.1.php (added)
-
tags/3.8.1/freemius/includes/supplements/index.php (added)
-
tags/3.8.1/freemius/index.php (added)
-
tags/3.8.1/freemius/languages (added)
-
tags/3.8.1/freemius/languages/freemius-cs_CZ.mo (added)
-
tags/3.8.1/freemius/languages/freemius-da_DK.mo (added)
-
tags/3.8.1/freemius/languages/freemius-en.mo (added)
-
tags/3.8.1/freemius/languages/freemius-es_ES.mo (added)
-
tags/3.8.1/freemius/languages/freemius-fr_FR.mo (added)
-
tags/3.8.1/freemius/languages/freemius-he_IL.mo (added)
-
tags/3.8.1/freemius/languages/freemius-hu_HU.mo (added)
-
tags/3.8.1/freemius/languages/freemius-it_IT.mo (added)
-
tags/3.8.1/freemius/languages/freemius-ja.mo (added)
-
tags/3.8.1/freemius/languages/freemius-nl_NL.mo (added)
-
tags/3.8.1/freemius/languages/freemius-ru_RU.mo (added)
-
tags/3.8.1/freemius/languages/freemius-ta.mo (added)
-
tags/3.8.1/freemius/languages/freemius-zh_CN.mo (added)
-
tags/3.8.1/freemius/languages/freemius.pot (added)
-
tags/3.8.1/freemius/languages/index.php (added)
-
tags/3.8.1/freemius/require.php (added)
-
tags/3.8.1/freemius/start.php (added)
-
tags/3.8.1/freemius/templates (added)
-
tags/3.8.1/freemius/templates/account (added)
-
tags/3.8.1/freemius/templates/account.php (added)
-
tags/3.8.1/freemius/templates/account/billing.php (added)
-
tags/3.8.1/freemius/templates/account/index.php (added)
-
tags/3.8.1/freemius/templates/account/partials (added)
-
tags/3.8.1/freemius/templates/account/partials/activate-license-button.php (added)
-
tags/3.8.1/freemius/templates/account/partials/addon.php (added)
-
tags/3.8.1/freemius/templates/account/partials/deactivate-license-button.php (added)
-
tags/3.8.1/freemius/templates/account/partials/index.php (added)
-
tags/3.8.1/freemius/templates/account/partials/site.php (added)
-
tags/3.8.1/freemius/templates/account/payments.php (added)
-
tags/3.8.1/freemius/templates/add-ons.php (added)
-
tags/3.8.1/freemius/templates/add-trial-to-pricing.php (added)
-
tags/3.8.1/freemius/templates/admin-notice.php (added)
-
tags/3.8.1/freemius/templates/ajax-loader.php (added)
-
tags/3.8.1/freemius/templates/auto-installation.php (added)
-
tags/3.8.1/freemius/templates/checkout.php (added)
-
tags/3.8.1/freemius/templates/connect.php (added)
-
tags/3.8.1/freemius/templates/contact.php (added)
-
tags/3.8.1/freemius/templates/debug (added)
-
tags/3.8.1/freemius/templates/debug.php (added)
-
tags/3.8.1/freemius/templates/debug/api-calls.php (added)
-
tags/3.8.1/freemius/templates/debug/index.php (added)
-
tags/3.8.1/freemius/templates/debug/logger.php (added)
-
tags/3.8.1/freemius/templates/debug/plugins-themes-sync.php (added)
-
tags/3.8.1/freemius/templates/debug/scheduled-crons.php (added)
-
tags/3.8.1/freemius/templates/email.php (added)
-
tags/3.8.1/freemius/templates/firewall-issues-js.php (added)
-
tags/3.8.1/freemius/templates/forms (added)
-
tags/3.8.1/freemius/templates/forms/affiliation.php (added)
-
tags/3.8.1/freemius/templates/forms/data-debug-mode.php (added)
-
tags/3.8.1/freemius/templates/forms/deactivation (added)
-
tags/3.8.1/freemius/templates/forms/deactivation/contact.php (added)
-
tags/3.8.1/freemius/templates/forms/deactivation/form.php (added)
-
tags/3.8.1/freemius/templates/forms/deactivation/index.php (added)
-
tags/3.8.1/freemius/templates/forms/deactivation/retry-skip.php (added)
-
tags/3.8.1/freemius/templates/forms/index.php (added)
-
tags/3.8.1/freemius/templates/forms/license-activation.php (added)
-
tags/3.8.1/freemius/templates/forms/optout.php (added)
-
tags/3.8.1/freemius/templates/forms/premium-versions-upgrade-handler.php (added)
-
tags/3.8.1/freemius/templates/forms/premium-versions-upgrade-metadata.php (added)
-
tags/3.8.1/freemius/templates/forms/resend-key.php (added)
-
tags/3.8.1/freemius/templates/forms/subscription-cancellation.php (added)
-
tags/3.8.1/freemius/templates/forms/trial-start.php (added)
-
tags/3.8.1/freemius/templates/forms/user-change.php (added)
-
tags/3.8.1/freemius/templates/gdpr-optin-js.php (added)
-
tags/3.8.1/freemius/templates/index.php (added)
-
tags/3.8.1/freemius/templates/js (added)
-
tags/3.8.1/freemius/templates/js/index.php (added)
-
tags/3.8.1/freemius/templates/js/jquery.content-change.php (added)
-
tags/3.8.1/freemius/templates/js/open-license-activation.php (added)
-
tags/3.8.1/freemius/templates/js/style-premium-theme.php (added)
-
tags/3.8.1/freemius/templates/partials (added)
-
tags/3.8.1/freemius/templates/partials/index.php (added)
-
tags/3.8.1/freemius/templates/partials/network-activation.php (added)
-
tags/3.8.1/freemius/templates/plugin-icon.php (added)
-
tags/3.8.1/freemius/templates/plugin-info (added)
-
tags/3.8.1/freemius/templates/plugin-info/description.php (added)
-
tags/3.8.1/freemius/templates/plugin-info/features.php (added)
-
tags/3.8.1/freemius/templates/plugin-info/index.php (added)
-
tags/3.8.1/freemius/templates/plugin-info/screenshots.php (added)
-
tags/3.8.1/freemius/templates/powered-by.php (added)
-
tags/3.8.1/freemius/templates/pricing.php (added)
-
tags/3.8.1/freemius/templates/secure-https-header.php (added)
-
tags/3.8.1/freemius/templates/sticky-admin-notice-js.php (added)
-
tags/3.8.1/freemius/templates/tabs-capture-js.php (added)
-
tags/3.8.1/freemius/templates/tabs.php (added)
-
tags/3.8.1/images (added)
-
tags/3.8.1/images/blank.gif (added)
-
tags/3.8.1/images/blplaceholder.png (added)
-
tags/3.8.1/images/cleverpluginslogo.png (added)
-
tags/3.8.1/images/flags (added)
-
tags/3.8.1/images/flags/Abkhazia.png (added)
-
tags/3.8.1/images/flags/Afghanistan.png (added)
-
tags/3.8.1/images/flags/Aland.png (added)
-
tags/3.8.1/images/flags/Albania.png (added)
-
tags/3.8.1/images/flags/Algeria.png (added)
-
tags/3.8.1/images/flags/American-Samoa.png (added)
-
tags/3.8.1/images/flags/Andorra.png (added)
-
tags/3.8.1/images/flags/Angola.png (added)
-
tags/3.8.1/images/flags/Anguilla.png (added)
-
tags/3.8.1/images/flags/Antarctica.png (added)
-
tags/3.8.1/images/flags/Antigua-and-Barbuda.png (added)
-
tags/3.8.1/images/flags/Argentina.png (added)
-
tags/3.8.1/images/flags/Armenia.png (added)
-
tags/3.8.1/images/flags/Aruba.png (added)
-
tags/3.8.1/images/flags/Australia.png (added)
-
tags/3.8.1/images/flags/Austria.png (added)
-
tags/3.8.1/images/flags/Azerbaijan.png (added)
-
tags/3.8.1/images/flags/Bahamas.png (added)
-
tags/3.8.1/images/flags/Bahrain.png (added)
-
tags/3.8.1/images/flags/Bangladesh.png (added)
-
tags/3.8.1/images/flags/Barbados.png (added)
-
tags/3.8.1/images/flags/Basque-Country.png (added)
-
tags/3.8.1/images/flags/Belarus.png (added)
-
tags/3.8.1/images/flags/Belgium.png (added)
-
tags/3.8.1/images/flags/Belize.png (added)
-
tags/3.8.1/images/flags/Benin.png (added)
-
tags/3.8.1/images/flags/Bermuda.png (added)
-
tags/3.8.1/images/flags/Bhutan.png (added)
-
tags/3.8.1/images/flags/Bolivia.png (added)
-
tags/3.8.1/images/flags/Bosnia-and-Herzegovina.png (added)
-
tags/3.8.1/images/flags/Botswana.png (added)
-
tags/3.8.1/images/flags/Brazil.png (added)
-
tags/3.8.1/images/flags/British-Antarctic-Territory.png (added)
-
tags/3.8.1/images/flags/British-Virgin-Islands.png (added)
-
tags/3.8.1/images/flags/Brunei.png (added)
-
tags/3.8.1/images/flags/Bulgaria.png (added)
-
tags/3.8.1/images/flags/Burkina-Faso.png (added)
-
tags/3.8.1/images/flags/Burundi.png (added)
-
tags/3.8.1/images/flags/Cambodia.png (added)
-
tags/3.8.1/images/flags/Cameroon.png (added)
-
tags/3.8.1/images/flags/Canada.png (added)
-
tags/3.8.1/images/flags/Canary-Islands.png (added)
-
tags/3.8.1/images/flags/Cape-Verde.png (added)
-
tags/3.8.1/images/flags/Catalonia.png (added)
-
tags/3.8.1/images/flags/Cayman-Islands.png (added)
-
tags/3.8.1/images/flags/Central-African-Republic.png (added)
-
tags/3.8.1/images/flags/Chad.png (added)
-
tags/3.8.1/images/flags/Chile.png (added)
-
tags/3.8.1/images/flags/China.png (added)
-
tags/3.8.1/images/flags/Christmas-Island.png (added)
-
tags/3.8.1/images/flags/Cocos-Keeling-Islands.png (added)
-
tags/3.8.1/images/flags/Colombia.png (added)
-
tags/3.8.1/images/flags/Commonwealth.png (added)
-
tags/3.8.1/images/flags/Comoros.png (added)
-
tags/3.8.1/images/flags/Cook-Islands.png (added)
-
tags/3.8.1/images/flags/Costa-Rica.png (added)
-
tags/3.8.1/images/flags/Cote-dIvoire.png (added)
-
tags/3.8.1/images/flags/Croatia.png (added)
-
tags/3.8.1/images/flags/Cuba.png (added)
-
tags/3.8.1/images/flags/Curacao.png (added)
-
tags/3.8.1/images/flags/Cyprus.png (added)
-
tags/3.8.1/images/flags/Czech-Republic.png (added)
-
tags/3.8.1/images/flags/Democratic-Republic-of-the-Congo.png (added)
-
tags/3.8.1/images/flags/Denmark.png (added)
-
tags/3.8.1/images/flags/Djibouti.png (added)
-
tags/3.8.1/images/flags/Dominica.png (added)
-
tags/3.8.1/images/flags/Dominican-Republic.png (added)
-
tags/3.8.1/images/flags/East-Timor.png (added)
-
tags/3.8.1/images/flags/Ecuador.png (added)
-
tags/3.8.1/images/flags/Egypt.png (added)
-
tags/3.8.1/images/flags/El-Salvador.png (added)
-
tags/3.8.1/images/flags/England.png (added)
-
tags/3.8.1/images/flags/Equatorial-Guinea.png (added)
-
tags/3.8.1/images/flags/Eritrea.png (added)
-
tags/3.8.1/images/flags/Estonia.png (added)
-
tags/3.8.1/images/flags/Ethiopia.png (added)
-
tags/3.8.1/images/flags/European-Union.png (added)
-
tags/3.8.1/images/flags/Falkland-Islands.png (added)
-
tags/3.8.1/images/flags/Faroes.png (added)
-
tags/3.8.1/images/flags/Fiji.png (added)
-
tags/3.8.1/images/flags/Finland.png (added)
-
tags/3.8.1/images/flags/France.png (added)
-
tags/3.8.1/images/flags/French-Polynesia.png (added)
-
tags/3.8.1/images/flags/French-Southern-Territories.png (added)
-
tags/3.8.1/images/flags/Gabon.png (added)
-
tags/3.8.1/images/flags/Gambia.png (added)
-
tags/3.8.1/images/flags/Georgia.png (added)
-
tags/3.8.1/images/flags/Germany.png (added)
-
tags/3.8.1/images/flags/Ghana.png (added)
-
tags/3.8.1/images/flags/Gibraltar.png (added)
-
tags/3.8.1/images/flags/GoSquared.png (added)
-
tags/3.8.1/images/flags/Greece.png (added)
-
tags/3.8.1/images/flags/Greenland.png (added)
-
tags/3.8.1/images/flags/Grenada.png (added)
-
tags/3.8.1/images/flags/Guam.png (added)
-
tags/3.8.1/images/flags/Guatemala.png (added)
-
tags/3.8.1/images/flags/Guernsey.png (added)
-
tags/3.8.1/images/flags/Guinea-Bissau.png (added)
-
tags/3.8.1/images/flags/Guinea.png (added)
-
tags/3.8.1/images/flags/Guyana.png (added)
-
tags/3.8.1/images/flags/Haiti.png (added)
-
tags/3.8.1/images/flags/Honduras.png (added)
-
tags/3.8.1/images/flags/Hong-Kong.png (added)
-
tags/3.8.1/images/flags/Hungary.png (added)
-
tags/3.8.1/images/flags/Iceland.png (added)
-
tags/3.8.1/images/flags/India.png (added)
-
tags/3.8.1/images/flags/Indonesia.png (added)
-
tags/3.8.1/images/flags/Iran.png (added)
-
tags/3.8.1/images/flags/Iraq.png (added)
-
tags/3.8.1/images/flags/Ireland.png (added)
-
tags/3.8.1/images/flags/Isle-of-Man.png (added)
-
tags/3.8.1/images/flags/Israel.png (added)
-
tags/3.8.1/images/flags/Italy.png (added)
-
tags/3.8.1/images/flags/Jamaica.png (added)
-
tags/3.8.1/images/flags/Japan.png (added)
-
tags/3.8.1/images/flags/Jersey.png (added)
-
tags/3.8.1/images/flags/Jordan.png (added)
-
tags/3.8.1/images/flags/Kazakhstan.png (added)
-
tags/3.8.1/images/flags/Kenya.png (added)
-
tags/3.8.1/images/flags/Kiribati.png (added)
-
tags/3.8.1/images/flags/Kosovo.png (added)
-
tags/3.8.1/images/flags/Kuwait.png (added)
-
tags/3.8.1/images/flags/Kyrgyzstan.png (added)
-
tags/3.8.1/images/flags/Laos.png (added)
-
tags/3.8.1/images/flags/Latvia.png (added)
-
tags/3.8.1/images/flags/Lebanon.png (added)
-
tags/3.8.1/images/flags/Lesotho.png (added)
-
tags/3.8.1/images/flags/Liberia.png (added)
-
tags/3.8.1/images/flags/Libya.png (added)
-
tags/3.8.1/images/flags/Liechtenstein.png (added)
-
tags/3.8.1/images/flags/Lithuania.png (added)
-
tags/3.8.1/images/flags/Luxembourg.png (added)
-
tags/3.8.1/images/flags/Macau.png (added)
-
tags/3.8.1/images/flags/Macedonia.png (added)
-
tags/3.8.1/images/flags/Madagascar.png (added)
-
tags/3.8.1/images/flags/Malawi.png (added)
-
tags/3.8.1/images/flags/Malaysia.png (added)
-
tags/3.8.1/images/flags/Maldives.png (added)
-
tags/3.8.1/images/flags/Mali.png (added)
-
tags/3.8.1/images/flags/Malta.png (added)
-
tags/3.8.1/images/flags/Mars.png (added)
-
tags/3.8.1/images/flags/Marshall-Islands.png (added)
-
tags/3.8.1/images/flags/Martinique.png (added)
-
tags/3.8.1/images/flags/Mauritania.png (added)
-
tags/3.8.1/images/flags/Mauritius.png (added)
-
tags/3.8.1/images/flags/Mayotte.png (added)
-
tags/3.8.1/images/flags/Mexico.png (added)
-
tags/3.8.1/images/flags/Micronesia.png (added)
-
tags/3.8.1/images/flags/Moldova.png (added)
-
tags/3.8.1/images/flags/Monaco.png (added)
-
tags/3.8.1/images/flags/Mongolia.png (added)
-
tags/3.8.1/images/flags/Montenegro.png (added)
-
tags/3.8.1/images/flags/Montserrat.png (added)
-
tags/3.8.1/images/flags/Morocco.png (added)
-
tags/3.8.1/images/flags/Mozambique.png (added)
-
tags/3.8.1/images/flags/Myanmar.png (added)
-
tags/3.8.1/images/flags/NATO.png (added)
-
tags/3.8.1/images/flags/Nagorno-Karabakh.png (added)
-
tags/3.8.1/images/flags/Namibia.png (added)
-
tags/3.8.1/images/flags/Nauru.png (added)
-
tags/3.8.1/images/flags/Nepal.png (added)
-
tags/3.8.1/images/flags/Netherlands-Antilles.png (added)
-
tags/3.8.1/images/flags/Netherlands.png (added)
-
tags/3.8.1/images/flags/New-Caledonia.png (added)
-
tags/3.8.1/images/flags/New-Zealand.png (added)
-
tags/3.8.1/images/flags/Nicaragua.png (added)
-
tags/3.8.1/images/flags/Niger.png (added)
-
tags/3.8.1/images/flags/Nigeria.png (added)
-
tags/3.8.1/images/flags/Niue.png (added)
-
tags/3.8.1/images/flags/Norfolk-Island.png (added)
-
tags/3.8.1/images/flags/North-Korea.png (added)
-
tags/3.8.1/images/flags/Northern-Cyprus.png (added)
-
tags/3.8.1/images/flags/Northern-Mariana-Islands.png (added)
-
tags/3.8.1/images/flags/Norway.png (added)
-
tags/3.8.1/images/flags/Olympics.png (added)
-
tags/3.8.1/images/flags/Oman.png (added)
-
tags/3.8.1/images/flags/Pakistan.png (added)
-
tags/3.8.1/images/flags/Palau.png (added)
-
tags/3.8.1/images/flags/Palestine.png (added)
-
tags/3.8.1/images/flags/Panama.png (added)
-
tags/3.8.1/images/flags/Papua-New-Guinea.png (added)
-
tags/3.8.1/images/flags/Paraguay.png (added)
-
tags/3.8.1/images/flags/Peru.png (added)
-
tags/3.8.1/images/flags/Philippines.png (added)
-
tags/3.8.1/images/flags/Pitcairn-Islands.png (added)
-
tags/3.8.1/images/flags/Poland.png (added)
-
tags/3.8.1/images/flags/Portugal.png (added)
-
tags/3.8.1/images/flags/Puerto-Rico.png (added)
-
tags/3.8.1/images/flags/Qatar.png (added)
-
tags/3.8.1/images/flags/Red-Cross.png (added)
-
tags/3.8.1/images/flags/Republic-of-the-Congo.png (added)
-
tags/3.8.1/images/flags/Reunion.png (added)
-
tags/3.8.1/images/flags/Romania.png (added)
-
tags/3.8.1/images/flags/Russia.png (added)
-
tags/3.8.1/images/flags/Rwanda.png (added)
-
tags/3.8.1/images/flags/Saint-Barthelemy.png (added)
-
tags/3.8.1/images/flags/Saint-Helena.png (added)
-
tags/3.8.1/images/flags/Saint-Kitts-and-Nevis.png (added)
-
tags/3.8.1/images/flags/Saint-Lucia.png (added)
-
tags/3.8.1/images/flags/Saint-Martin.png (added)
-
tags/3.8.1/images/flags/Saint-Vincent-and-the-Grenadines.png (added)
-
tags/3.8.1/images/flags/Samoa.png (added)
-
tags/3.8.1/images/flags/San-Marino.png (added)
-
tags/3.8.1/images/flags/Sao-Tome-and-Principe.png (added)
-
tags/3.8.1/images/flags/Saudi-Arabia.png (added)
-
tags/3.8.1/images/flags/Scotland.png (added)
-
tags/3.8.1/images/flags/Senegal.png (added)
-
tags/3.8.1/images/flags/Serbia.png (added)
-
tags/3.8.1/images/flags/Seychelles.png (added)
-
tags/3.8.1/images/flags/Sierra-Leone.png (added)
-
tags/3.8.1/images/flags/Singapore.png (added)
-
tags/3.8.1/images/flags/Sint-Maarten.png (added)
-
tags/3.8.1/images/flags/Slovakia.png (added)
-
tags/3.8.1/images/flags/Slovenia.png (added)
-
tags/3.8.1/images/flags/Solomon-Islands.png (added)
-
tags/3.8.1/images/flags/Somalia.png (added)
-
tags/3.8.1/images/flags/Somaliland.png (added)
-
tags/3.8.1/images/flags/South-Africa.png (added)
-
tags/3.8.1/images/flags/South-Georgia-and-the-South-Sandwich-Islands.png (added)
-
tags/3.8.1/images/flags/South-Korea.png (added)
-
tags/3.8.1/images/flags/South-Ossetia.png (added)
-
tags/3.8.1/images/flags/South-Sudan.png (added)
-
tags/3.8.1/images/flags/Spain.png (added)
-
tags/3.8.1/images/flags/Sri-Lanka.png (added)
-
tags/3.8.1/images/flags/Sudan.png (added)
-
tags/3.8.1/images/flags/Suriname.png (added)
-
tags/3.8.1/images/flags/Swaziland.png (added)
-
tags/3.8.1/images/flags/Sweden.png (added)
-
tags/3.8.1/images/flags/Switzerland.png (added)
-
tags/3.8.1/images/flags/Syria.png (added)
-
tags/3.8.1/images/flags/Taiwan.png (added)
-
tags/3.8.1/images/flags/Tajikistan.png (added)
-
tags/3.8.1/images/flags/Tanzania.png (added)
-
tags/3.8.1/images/flags/Thailand.png (added)
-
tags/3.8.1/images/flags/Togo.png (added)
-
tags/3.8.1/images/flags/Tokelau.png (added)
-
tags/3.8.1/images/flags/Tonga.png (added)
-
tags/3.8.1/images/flags/Trinidad-and-Tobago.png (added)
-
tags/3.8.1/images/flags/Tunisia.png (added)
-
tags/3.8.1/images/flags/Turkey.png (added)
-
tags/3.8.1/images/flags/Turkmenistan.png (added)
-
tags/3.8.1/images/flags/Turks-and-Caicos-Islands.png (added)
-
tags/3.8.1/images/flags/Tuvalu.png (added)
-
tags/3.8.1/images/flags/US-Virgin-Islands.png (added)
-
tags/3.8.1/images/flags/Uganda.png (added)
-
tags/3.8.1/images/flags/Ukraine.png (added)
-
tags/3.8.1/images/flags/United-Arab-Emirates.png (added)
-
tags/3.8.1/images/flags/United-Kingdom.png (added)
-
tags/3.8.1/images/flags/United-Nations.png (added)
-
tags/3.8.1/images/flags/United-States.png (added)
-
tags/3.8.1/images/flags/Unknown.png (added)
-
tags/3.8.1/images/flags/Uruguay.png (added)
-
tags/3.8.1/images/flags/Uzbekistan.png (added)
-
tags/3.8.1/images/flags/Vanuatu.png (added)
-
tags/3.8.1/images/flags/Vatican-City.png (added)
-
tags/3.8.1/images/flags/Venezuela.png (added)
-
tags/3.8.1/images/flags/Vietnam.png (added)
-
tags/3.8.1/images/flags/Wales.png (added)
-
tags/3.8.1/images/flags/Wallis-And-Futuna.png (added)
-
tags/3.8.1/images/flags/Western-Sahara.png (added)
-
tags/3.8.1/images/flags/Yemen.png (added)
-
tags/3.8.1/images/flags/Zambia.png (added)
-
tags/3.8.1/images/flags/Zimbabwe.png (added)
-
tags/3.8.1/images/flags/index.php (added)
-
tags/3.8.1/images/index.php (added)
-
tags/3.8.1/images/sb2-curvebg.jpg (added)
-
tags/3.8.1/images/sb2-curvebg.png (added)
-
tags/3.8.1/images/seo-booster.png (added)
-
tags/3.8.1/images/seoboosterlogo.png (added)
-
tags/3.8.1/images/sort_asc.png (added)
-
tags/3.8.1/images/sort_asc_disabled.png (added)
-
tags/3.8.1/images/sort_both.png (added)
-
tags/3.8.1/images/sort_desc.png (added)
-
tags/3.8.1/images/sort_desc_disabled.png (added)
-
tags/3.8.1/inc (added)
-
tags/3.8.1/inc/adminheader.php (added)
-
tags/3.8.1/inc/class-404-pages-list-table.php (added)
-
tags/3.8.1/inc/class-autolink-list-table.php (added)
-
tags/3.8.1/inc/class-crawled-pages-list-table.php (added)
-
tags/3.8.1/inc/class-forgotten-pages-list-table.php (added)
-
tags/3.8.1/inc/class-sb-backlink-pages-list-table.php (added)
-
tags/3.8.1/inc/class-seobooster-dyn-widget.php (added)
-
tags/3.8.1/inc/class-seobooster-keywords-widget.php (added)
-
tags/3.8.1/inc/emailtemplate-01.html (added)
-
tags/3.8.1/inc/engine-meta.php (added)
-
tags/3.8.1/inc/index.php (added)
-
tags/3.8.1/inc/proonly.php (added)
-
tags/3.8.1/inc/search_engines.php (added)
-
tags/3.8.1/inc/simple_html_dom.php (added)
-
tags/3.8.1/index.php (added)
-
tags/3.8.1/js (added)
-
tags/3.8.1/js/datatable.js (added)
-
tags/3.8.1/js/datatables.min.css (added)
-
tags/3.8.1/js/datatables.min.js (added)
-
tags/3.8.1/js/index.php (added)
-
tags/3.8.1/js/jquery.dataTables.css (added)
-
tags/3.8.1/js/jquery.lazyload.min.js (added)
-
tags/3.8.1/js/min (added)
-
tags/3.8.1/js/min/datatable-min.js (added)
-
tags/3.8.1/js/min/index.php (added)
-
tags/3.8.1/js/min/seo-booster-min.js (added)
-
tags/3.8.1/js/seo-booster-min.js (added)
-
tags/3.8.1/js/seo-booster.js (added)
-
tags/3.8.1/languages (added)
-
tags/3.8.1/languages/index.php (added)
-
tags/3.8.1/languages/seo-booster.pot (added)
-
tags/3.8.1/phpcs.xml (added)
-
tags/3.8.1/readme.txt (added)
-
tags/3.8.1/seo-booster-404s.php (added)
-
tags/3.8.1/seo-booster-autolink.php (added)
-
tags/3.8.1/seo-booster-backlinks.php (added)
-
tags/3.8.1/seo-booster-forgotten.php (added)
-
tags/3.8.1/seo-booster-keywords.php (added)
-
tags/3.8.1/seo-booster-log.php (added)
-
tags/3.8.1/seo-booster-seobooster2.php (added)
-
tags/3.8.1/seo-booster-settings.php (added)
-
tags/3.8.1/seo-booster.php (added)
-
tags/3.8.1/vendor (added)
-
tags/3.8.1/vendor/autoload.php (added)
-
tags/3.8.1/vendor/collizo4sky (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/.gitattributes (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/.gitignore (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/CHANGES.md (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/README.md (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/composer.json (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/dismiss-notice.js (added)
-
tags/3.8.1/vendor/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php (added)
-
tags/3.8.1/vendor/composer (added)
-
tags/3.8.1/vendor/composer/ClassLoader.php (added)
-
tags/3.8.1/vendor/composer/InstalledVersions.php (added)
-
tags/3.8.1/vendor/composer/LICENSE (added)
-
tags/3.8.1/vendor/composer/autoload_classmap.php (added)
-
tags/3.8.1/vendor/composer/autoload_namespaces.php (added)
-
tags/3.8.1/vendor/composer/autoload_psr4.php (added)
-
tags/3.8.1/vendor/composer/autoload_real.php (added)
-
tags/3.8.1/vendor/composer/autoload_static.php (added)
-
tags/3.8.1/vendor/composer/installed.json (added)
-
tags/3.8.1/vendor/composer/installed.php (added)
-
tags/3.8.1/vendor/composer/platform_check.php (added)
-
tags/3.8.1/vendor/index.php (added)
-
tags/3.8.1/vendor/typisttech (added)
-
tags/3.8.1/vendor/typisttech/imposter (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.circleci (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.circleci/config.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.dependabot (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.dependabot/config.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.gitattributes (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/.gitignore (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/LICENSE (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/README.md (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/codeception.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/composer.json (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/composer.lock (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/phpcs.xml (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/src (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/src/ImposterPlugin.php (added)
-
tags/3.8.1/vendor/typisttech/imposter-plugin/src/Transformer.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/.circleci (added)
-
tags/3.8.1/vendor/typisttech/imposter/.circleci/config.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter/.codecov.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter/.dependabot (added)
-
tags/3.8.1/vendor/typisttech/imposter/.dependabot/config.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter/.gitattributes (added)
-
tags/3.8.1/vendor/typisttech/imposter/.gitignore (added)
-
tags/3.8.1/vendor/typisttech/imposter/LICENSE (added)
-
tags/3.8.1/vendor/typisttech/imposter/README.md (added)
-
tags/3.8.1/vendor/typisttech/imposter/codeception.yml (added)
-
tags/3.8.1/vendor/typisttech/imposter/composer.json (added)
-
tags/3.8.1/vendor/typisttech/imposter/composer.lock (added)
-
tags/3.8.1/vendor/typisttech/imposter/phpcs.xml (added)
-
tags/3.8.1/vendor/typisttech/imposter/src (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ArrayUtil.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/Config.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ConfigCollection.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ConfigCollectionFactory.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ConfigCollectionInterface.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ConfigFactory.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ConfigInterface.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/Filesystem.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/FilesystemInterface.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/Imposter.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ImposterFactory.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ImposterInterface.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ProjectConfig.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/ProjectConfigInterface.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/StringUtil.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/Transformer.php (added)
-
tags/3.8.1/vendor/typisttech/imposter/src/TransformerInterface.php (added)
-
tags/3.8.1/views (added)
-
tags/3.8.1/views/404-pages.php (added)
-
tags/3.8.1/views/autolink-pages.php (added)
-
tags/3.8.1/views/backlink-pages.php (added)
-
tags/3.8.1/views/crawled-pages.php (added)
-
tags/3.8.1/views/forgotten-pages.php (added)
-
tags/3.8.1/views/index.php (added)
-
trunk/inc/class-404-pages-list-table.php (modified) (4 diffs)
-
trunk/inc/class-autolink-list-table.php (modified) (7 diffs)
-
trunk/inc/class-crawled-pages-list-table.php (modified) (5 diffs)
-
trunk/inc/class-forgotten-pages-list-table.php (modified) (4 diffs)
-
trunk/inc/class-sb-backlink-pages-list-table.php (modified) (9 diffs)
-
trunk/inc/class-seobooster-dyn-widget.php (modified) (5 diffs)
-
trunk/inc/class-seobooster-keywords-widget.php (modified) (1 diff)
-
trunk/inc/simple_html_dom.php (modified) (1 diff)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/seo-booster-keywords.php (modified) (6 diffs)
-
trunk/seo-booster-log.php (modified) (1 diff)
-
trunk/seo-booster-seobooster2.php (modified) (17 diffs)
-
trunk/seo-booster-settings.php (modified) (28 diffs)
-
trunk/seo-booster.php (modified) (40 diffs)
-
trunk/vendor/collizo4sky/persist-admin-notices-dismissal/CHANGES.md (modified) (1 diff)
-
trunk/vendor/collizo4sky/persist-admin-notices-dismissal/composer.json (modified) (1 diff)
-
trunk/vendor/collizo4sky/persist-admin-notices-dismissal/dismiss-notice.js (modified) (1 diff)
-
trunk/vendor/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php (modified) (2 diffs)
-
trunk/vendor/composer/ClassLoader.php (modified) (18 diffs)
-
trunk/vendor/composer/autoload_classmap.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_static.php (modified) (1 diff)
-
trunk/vendor/composer/installed.json (modified) (1 diff)
-
trunk/vendor/composer/installed.php (modified) (1 diff)
-
trunk/views/404-pages.php (modified) (4 diffs)
-
trunk/views/autolink-pages.php (modified) (8 diffs)
-
trunk/views/backlink-pages.php (modified) (5 diffs)
-
trunk/views/crawled-pages.php (modified) (2 diffs)
-
trunk/views/forgotten-pages.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
seo-booster/trunk/inc/class-404-pages-list-table.php
r2286319 r2644211 81 81 protected function column_lp( $item ) { 82 82 83 $page = wp_unslash( $_REQUEST['page'] ); // WPCS: Input var ok.83 $page = sanitize_text_field( $_REQUEST['page'] ); 84 84 85 85 // Build delete row action. … … 124 124 global $wpdb; 125 125 if ( isset( $_GET['fof'] ) ) { 126 if ( is_array( $_GET['fof'] ) ) { 127 foreach ( $_GET['fof'] as $fofid ) { 126 $fofsan = sanitize_text_field( $_GET['fof'] ); 127 if ( is_array( $fofsan ) ) { 128 foreach ( $fofsan as $fofid ) { 128 129 $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}sb2_404 WHERE id=%d limit 1;", $fofid) ); 129 130 } … … 162 163 163 164 165 /** 166 * prepare_items. 167 * 168 * @author Unknown 169 * @since v0.0.1 170 * @version v1.0.0 Tuesday, November 30th, 2021. 171 * @return void 172 */ 164 173 function prepare_items() { 165 174 global $wpdb; … … 173 182 $this->process_bulk_action(); 174 183 175 $paged = ( isset( $_GET['paged'] ) ) ? $_GET['paged']: 1;184 $paged = ( isset( $_GET['paged'] ) ) ? intval( $_GET[ 'paged' ] ) : 1; 176 185 177 186 $offset = ( $paged * $per_page ) - $per_page; 178 187 179 $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s']: false;188 $search = ( isset( $_REQUEST['s'] ) ) ? sanitize_key( $_REQUEST['s'] ) : false; 180 189 181 190 $do_search = ( $search ) ? $wpdb->prepare( " AND lp LIKE '%%%s%%' ", $search ) : ''; -
seo-booster/trunk/inc/class-autolink-list-table.php
r2296640 r2644211 21 21 /** Text displayed when no customer data is available */ 22 22 public function no_items() { 23 _e( 'No keyword to links made.', 'seo-booster' );23 esc_html_e( 'No keyword to links made.', 'seo-booster' ); 24 24 } 25 25 … … 76 76 return $item[ $column_name ]; 77 77 default: 78 return print_r( $item, true ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r 79 // Show the whole array for troubleshooting purposes 78 return wp_json_encode( $item, true ); 80 79 } 81 80 } … … 86 85 87 86 protected function column_url( $item ) { 88 89 $page = wp_unslash( $_REQUEST['page'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended90 87 return sprintf( 91 88 '<a href="%1$s" target="_blank">%2$s</a>', … … 113 110 protected function column_lp( $item ) { 114 111 115 $page = wp_unslash( $_REQUEST['page'] ); // WordPress.Security.NonceVerification.Recommended112 $page = sanitize_text_field( $_REQUEST['page'] ); 116 113 117 114 // Build delete row action. … … 147 144 148 145 146 /** 147 * process_bulk_action. 148 * 149 * @author Unknown 150 * @since v0.0.1 151 * @version v1.0.0 Tuesday, November 30th, 2021. 152 * @access protected 153 * @return void 154 */ 149 155 protected function process_bulk_action() { 150 156 151 if ( 'delete' === $this->current_action() ) { 157 // security check! 158 if ( isset( $_GET['_wpnonce'] ) && ! empty( $_GET['_wpnonce'] ) ) { 159 160 $nonce = filter_input( INPUT_GET, '_wpnonce', FILTER_SANITIZE_STRING ); 161 $action = 'bulk-' . $this->_args['plural']; 162 163 if ( ! wp_verify_nonce( $nonce, $action ) ) 164 wp_die( 'Nope! Security check failed!' ); 165 166 } 167 if ( 'delete' === $this->current_action() ) { 152 168 global $wpdb; 153 if ( isset( $_GET['alid'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended 154 if ( is_array( $_GET['alid'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended 155 foreach ( $_GET['alid'] as $alid ) { 169 if ( isset( $_GET['alid'] ) ) { 170 171 $alidsan = $_GET['alid']; 172 173 if ( is_array( $alidsan ) ) { 174 foreach ( $alidsan as $alid ) { 156 175 $alid = intval( $alid ); // just to be sure 157 $wpdb->query( "DELETE FROM {$wpdb->prefix}sb2_autolink WHERE id=$alid limit 1;" ); // @todo prepare176 $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}sb2_autolink WHERE id=%d limit 1;", $alid ) ); 158 177 } 159 178 } else { 160 179 $alid = intval( $_GET['alid'] ); 161 $wpdb->query( "DELETE FROM {$wpdb->prefix}sb2_autolink WHERE id=$alid limit 1;" ); // @todo prepare180 $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}sb2_autolink WHERE id=%d limit 1;", $alid) ); 162 181 } 163 182 } … … 200 219 $this->process_bulk_action(); 201 220 202 $paged = ( isset( $_GET['paged'] ) ) ? $_GET['paged']: 1;221 $paged = ( isset( $_GET['paged'] ) ) ? sanitize_text_field( $_GET['paged'] ) : 1; 203 222 204 223 $offset = ( $paged * $per_page ) - $per_page; … … 254 273 */ 255 274 protected function usort_reorder( $a, $b ) { 256 $orderby = ! empty( $_REQUEST['orderby'] ) ? wp_unslash( $_REQUEST['orderby'] ) : 'lastcrawl';257 258 $order = ! empty( $_REQUEST['order'] ) ? wp_unslash( $_REQUEST['order'] ) : 'desc';275 $orderby = ! empty( $_REQUEST['orderby'] ) ? sanitize_text_field( $_REQUEST['orderby'] ) : 'lastcrawl'; 276 277 $order = ! empty( $_REQUEST['order'] ) ? sanitize_text_field( $_REQUEST['order'] ) : 'desc'; 259 278 260 279 $result = strcmp( $a[ $orderby ], $b[ $orderby ] ); -
seo-booster/trunk/inc/class-crawled-pages-list-table.php
r2296640 r2644211 63 63 64 64 65 /** 66 * column_url. 67 * 68 * @author Unknown 69 * @since v0.0.1 70 * @version v1.0.0 Tuesday, November 30th, 2021. 71 * @access protected 72 * @param mixed $item 73 * @return mixed 74 */ 65 75 protected function column_url( $item ) { 66 67 $page = wp_unslash( $_REQUEST['page'] ); // WPCS: Input var ok.68 76 69 77 // Return the title contents. … … 123 131 $this->process_bulk_action(); 124 132 125 $paged = ( isset( $_GET['paged'] ) ) ? $_GET['paged']: 1;133 $paged = ( isset( $_GET['paged'] ) ) ? sanitize_text_field( $_GET['paged'] ) : 1; 126 134 127 135 $offset = ( $paged * $per_page ) - $per_page; 128 136 129 $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s']: false;137 $search = ( isset( $_REQUEST['s'] ) ) ? sanitize_text_field( $_REQUEST['s'] ) : false; 130 138 131 139 if ( $search ) { … … 156 164 foreach ( $data as $da ) { 157 165 $daurl = $da['url']; 158 $crawlers = $wpdb->get_results( "SELECT id,engine,SUM(visits) as visits,lastcrawl FROM {$wpdb->prefix}sb2_crawl WHERE url='$daurl' GROUP BY engine;");166 $crawlers = $wpdb->get_results( $wpdb->prepare( "SELECT id,engine,SUM(visits) as visits,lastcrawl FROM {$wpdb->prefix}sb2_crawl WHERE url=%s GROUP BY engine;", $daurl) ); 159 167 160 168 //$crawlout = '##todo##'; … … 178 186 $current_page = $this->get_pagenum(); 179 187 180 $total_items = $wpdb->get_var( "SELECT count(DISTINCT(url)) FROM {$wpdb->prefix}sb2_crawl WHERE 1=1 $do_search;" );188 $total_items = $wpdb->get_var( "SELECT count(DISTINCT(url)) FROM {$wpdb->prefix}sb2_crawl WHERE 1=1 {$do_search};" ); 181 189 182 190 $this->items = $data; … … 200 208 */ 201 209 protected function usort_reorder( $a, $b ) { 202 $orderby = ! empty( $_REQUEST['orderby'] ) ? wp_unslash( $_REQUEST['orderby'] ) : 'lastcrawl';203 204 $order = ! empty( $_REQUEST['order'] ) ? wp_unslash( $_REQUEST['order'] ) : 'desc';210 $orderby = ! empty( $_REQUEST['orderby'] ) ? sanitize_key( $_REQUEST['orderby'] ) : 'lastcrawl'; 211 212 $order = ! empty( $_REQUEST['order'] ) ? sanitize_key( $_REQUEST['order'] ) : 'desc'; 205 213 206 214 $result = strcmp( $a[ $orderby ], $b[ $orderby ] ); -
seo-booster/trunk/inc/class-forgotten-pages-list-table.php
r2286319 r2644211 44 44 $bltable = $wpdb->prefix . 'sb2_bl'; 45 45 $count = 0; 46 if ( is_array( $_GET['url'] ) ) { 47 foreach ( $_GET['url'] as $urlid ) { 48 $wpdb->query( $wpdb->prepare( "DELETE FROM {$bltable} WHERE id=%d limit 1;" ), $urlid ); 46 $urlsan = sanitize_text_field( $_GET['url'] ); 47 if ( is_array( $urlsan ) ) { 48 foreach ( $urlsan as $urlid ) { 49 $wpdb->query( $wpdb->prepare( "DELETE FROM {$bltable} WHERE id=%d limit 1;" ), intval( $urlid) ); 49 50 $count++; 50 51 } … … 78 79 } 79 80 80 protected function column_lp( $item ) 81 { 82 $page = wp_unslash( $_REQUEST['page'] ); 81 /** 82 * column_lp. 83 * 84 * @author Unknown 85 * @since v0.0.1 86 * @version v1.0.0 Tuesday, November 30th, 2021. 87 * @access protected 88 * @param mixed $item 89 * @return mixed 90 */ 91 protected function column_lp( $item ) { 83 92 return sprintf( 84 93 '<a href="%1$s" target="_blank">%2$s</a> <span style="color:silver;">(Visitors:%3$s)</span>', 85 site_url( $item['lp']),94 esc_url( site_url( $item['lp'] ) ), 86 95 $item['lp'], 87 96 $item['visits'] … … 128 137 $order = ( !empty($order) ? esc_sql( strtoupper( sanitize_text_field( $order ) ) ) : 'ASC' ); 129 138 $order = $this->sanitize_order( $order ); 130 $daquery = "SELECT id,kw,lp,visits,firstvisit,lastvisit,min(firstvisit)\n\t\tFROM {$kwtable}\n\t\tWHERE engine<>'Internal Search'\n\t\tAND visits>1\n\t\tAND kw<>'#'\n\t\tAND ( (lastvisit < DATE_SUB(NOW(), INTERVAL 30 DAY) ) or (firstvisit < DATE_SUB(NOW(), INTERVAL 30 DAY) ) )\n\t\tGROUP BY lp\n\t\tORDER BY {$orderby} {$order}\n\t\tLIMIT {$offset}, {$per_page};"; 139 140 $daquery = "SELECT id,kw,lp,visits,firstvisit,lastvisit,min(firstvisit) FROM {$kwtable} WHERE engine<>'Internal Search' AND visits>1 AND kw<>'#' AND ( (lastvisit < DATE_SUB(NOW(), INTERVAL 30 DAY) ) or (firstvisit < DATE_SUB(NOW(), INTERVAL 30 DAY) ) ) GROUP BY lp ORDER BY {$orderby} {$order} LIMIT {$offset}, {$per_page};"; 131 141 // @todo - lav query der henter data på sideniveua, dvs. man kunne have fået besøg af "blue widget" før, men efterfølgende er der blot "#" - det skal der tages højde for. 132 142 $data = $wpdb->get_results( $daquery, ARRAY_A ); … … 150 160 } 151 161 } 152 $newdat['kws'] = $kwstring;162 $newdat['kws'] = wp_kses( $kwstring, wp_allowed_protocols() ); 153 163 $newarr[] = $newdat; 154 164 } -
seo-booster/trunk/inc/class-sb-backlink-pages-list-table.php
r2317644 r2644211 25 25 $classnames .= ' sesuspect'; 26 26 } 27 echo "<tr id='backlink-" . $item['id'] . "' class='{$classnames}'>" ;27 echo "<tr id='backlink-" . esc_attr( $item['id'] ) . "' class='". esc_attr( $classnames ) ."'>" ; 28 28 WP_List_Table::single_row_columns( $item ); 29 29 echo "</tr>\n" ; … … 122 122 } 123 123 124 $img = '<img src="' . $imgurl . '" class="flag" alt="' . $imgalt. '">';124 $img = '<img src="' . esc_url( $imgurl ) . '" class="flag" alt="' . esc_attr ( $imgalt ) . '">'; 125 125 $imgurl = add_query_arg( array( 126 126 'w' => '250', 127 127 ), '//s.wordpress.com/mshots/v1/' . urlencode( $item['ref'] ) ); 128 $screenshot = "<img data-original='{$imgurl}' src='" . SEOBOOSTER_PLUGINURL . "images/blplaceholder.png' width='125' height='93' class='lazy mshot'>"; 129 return $img . '<a href="' . $item['ref'] . '" target="_blank">' . $seobooster2->truncatestring( $seobooster2->remove_http( $item['ref'] ), 35 ) . '</br>' . $screenshot . '</a>'; 128 129 $screenshot = "<img data-original='". esc_url( $imgurl ). "' src='" . esc_url( SEOBOOSTER_PLUGINURL . 'images/blplaceholder.png') ."' width='125' height='93' class='lazy mshot'>"; 130 return $img . '<a href="' . esc_attr( $item['ref'] ) . '" target="_blank">' . $seobooster2->truncatestring( $seobooster2->remove_http( $item['ref'] ), 35 ) . '</br>' . $screenshot . '</a>'; 130 131 case 'httpstatus': 131 return $item[$column_name];132 return esc_attr( $item[$column_name] ); 132 133 case 'lp': 133 return $seobooster2->truncatestring( $seobooster2->remove_http( $item['lp'] ), 55);134 return esc_attr( $seobooster2->truncatestring( $seobooster2->remove_http( $item['lp'] ), 55 ) ); 134 135 case 'visits': 135 return $item[$column_name];136 return esc_attr( $item[$column_name] ); 136 137 case 'firstvisit': 137 return $item[$column_name];138 return esc_attr( $item[$column_name] ); 138 139 default: 139 140 return ''; … … 143 144 protected function column_cb( $item ) 144 145 { 145 return sprintf( '<input type="checkbox" name="%1$s[]" value="%2$s" />', $this->_args['singular'], urlencode( $item['id'] ) );146 return sprintf( '<input type="checkbox" name="%1$s[]" value="%2$s" />', $this->_args['singular'], esc_attr( $item['id'] ) ); 146 147 } 147 148 … … 154 155 } 155 156 157 /** 158 * process_bulk_action. 159 * 160 * @author Lars Koudal 161 * @since v0.0.1 162 * @version v1.0.0 Tuesday, December 14th, 2021. 163 * @access protected 164 * @return void 165 */ 156 166 protected function process_bulk_action() 157 167 { … … 163 173 $bltable = $wpdb->prefix . 'sb2_bl'; 164 174 $count = 0; 165 if ( is_array( $_GET['url'] ) ) { 166 foreach ( $_GET['url'] as $urlid ) { 175 $urlsan = sanitize_text_field( $_GET['url'] ); 176 if ( is_array( $urlsan ) ) { 177 foreach ( $urlsan as $urlid ) { 167 178 $wpdb->delete( $bltable, array( 168 'id' => $urlid,179 'id' => intval( $urlid ), 169 180 ), array( '%d' ) ); 170 181 $count++; … … 202 213 } 203 214 215 /** 216 * prepare_items. 217 * 218 * @author Unknown 219 * @since v0.0.1 220 * @version v1.0.0 Tuesday, November 30th, 2021. 221 * @return void 222 */ 204 223 function prepare_items() 205 224 { … … 211 230 $this->_column_headers = array( $columns, $hidden, $sortable ); 212 231 $this->process_bulk_action(); 213 $paged = ( isset( $_GET['paged'] ) ? intval( $_GET['paged'] ) : 1 );232 $paged = ( isset( $_GET['paged'] ) ? sanitize_text_field( $_GET['paged'] ) : 1 ); 214 233 $offset = $paged * $per_page - $per_page; 215 234 $bltable = $wpdb->prefix . 'sb2_bl'; … … 233 252 $order = ( !empty($order) ? esc_sql( strtoupper( sanitize_text_field( $order ) ) ) : 'ASC' ); 234 253 $order = $this->sanitize_order( $order ); 235 $daquery = "SELECT * FROM `{$bltable}`WHERE 1 = 1 {$do_search} ORDER BY {$orderby} {$order} LIMIT {$offset}, {$per_page};";254 $daquery = "SELECT * FROM {$wpdb->prefix}sb2_bl WHERE 1 = 1 {$do_search} ORDER BY {$orderby} {$order} LIMIT {$offset}, {$per_page};"; 236 255 $data = $wpdb->get_results( $daquery, ARRAY_A ); 237 256 $current_page = $this->get_pagenum(); 238 $total_items = $wpdb->get_var( "SELECT count(lp) FROM `{$bltable}`WHERE 1=1 {$do_search};" );257 $total_items = $wpdb->get_var( "SELECT count(lp) FROM {$wpdb->prefix}sb2_bl WHERE 1=1 {$do_search};" ); 239 258 $this->items = $data; 240 259 $this->set_pagination_args( array( … … 245 264 } 246 265 266 /** 267 * usort_reorder. 268 * 269 * @author Unknown 270 * @since v0.0.1 271 * @version v1.0.0 Tuesday, November 30th, 2021. 272 * @access protected 273 * @param mixed $a 274 * @param mixed $b 275 * @return mixed 276 */ 247 277 protected function usort_reorder( $a, $b ) 248 278 { 249 $orderby = ( !empty($_REQUEST['orderby']) ? wp_unslash( $_REQUEST['orderby'] ) : 'firstvisit' );250 $order = ( !empty($_REQUEST['order']) ? wp_unslash( $_REQUEST['order'] ) : 'asc' );279 $orderby = ( !empty($_REQUEST['orderby']) ? sanitize_text_field( $_REQUEST['orderby'] ) : 'firstvisit' ); 280 $order = ( !empty($_REQUEST['order']) ? sanitize_text_field( $_REQUEST['order'] ) : 'asc' ); 251 281 $result = strcmp( $a[$orderby], $b[$orderby] ); 252 282 return ( 'asc' === $order ? $result : -$result ); -
seo-booster/trunk/inc/class-seobooster-dyn-widget.php
r2357483 r2644211 20 20 $listtype = $instance['listtype']; 21 21 $limit = $instance['limit']; 22 $showvisits = $instance['showvisits']; 22 if (isset($instance['showvisits'])) { 23 $showvisits = $instance['showvisits']; 24 } 25 else { 26 $showvisits = false; 27 } 23 28 24 29 $output = $before_widget; … … 26 31 $output .= $before_title . $title . $after_title; 27 32 } 28 $kwtable = $wpdb->prefix . 'sb2_kw'; 33 29 34 global $wp_query; 30 35 … … 40 45 if ( 'hightraffic' === $listtype ) { 41 46 // high traffic 42 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM $kwtable MWHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' group by kw ORDER BY visits DESC LIMIT $limit;";47 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM {$wpdb->prefix}sb2_kw WHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' group by kw ORDER BY visits DESC LIMIT $limit;"; 43 48 } 44 49 45 50 if ( 'lowtraffic' === $listtype ) { 46 51 // low traffic 47 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM $kwtable MWHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' GROUP BY kw ORDER BY visits ASC LIMIT $limit;";52 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM {$wpdb->prefix}sb2_kw WHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' GROUP BY kw ORDER BY visits ASC LIMIT $limit;"; 48 53 } 49 54 50 55 if ( 'latest' === $listtype ) { 51 56 // show latest keywords 52 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM $kwtable MWHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' GROUP BY kw ORDER BY lastvisit ASC LIMIT $limit;";57 $query = "SELECT DISTINCT lp,kw,lastvisit,visits FROM {$wpdb->prefix}sb2_kw WHERE $sqlignore ig='0' AND kw<>'#' AND lp<>'$currurl' AND engine<>'Internal Search' GROUP BY kw ORDER BY lastvisit ASC LIMIT $limit;"; 53 58 } 54 59 … … 62 67 $permalink = $ph['lp']; 63 68 if ( $permalink ) { 64 $output .= "<li><a href='" . $permalink . "'>" . ucfirst( stripslashes( $ph['kw']) ) . '</a>';69 $output .= "<li><a href='" . esc_url( $permalink ) . "'>" . esc_attr( ucfirst( stripslashes( $ph['kw'] ) ) ) . '</a>'; 65 70 66 71 if ( $showvisits ) { … … 77 82 $output = ''; 78 83 } 79 echo $output;84 echo wp_kses( $output, wp_allowed_protocols() ); 80 85 } 81 86 -
seo-booster/trunk/inc/class-seobooster-keywords-widget.php
r2357483 r2644211 31 31 $output .= $before_widget; 32 32 if ( ! empty( $title ) ) { 33 $output .= $before_title . $title. $after_title;33 $output .= $before_title . esc_attr( $title ) . $after_title; 34 34 } 35 $output .= '<div style="padding:20px;">' . $keywords . '</div>'; // todo - use builtin classes possible? .textwidget35 $output .= '<div style="padding:20px;">' . $keywords . '</div>'; 36 36 $output .= $after_widget; 37 echo $output;37 echo wp_kses( $output, wp_allowed_protocols() ); 38 38 } 39 39 -
seo-booster/trunk/inc/simple_html_dom.php
r2194133 r2644211 874 874 * Matches the selector list separator 875 875 */ 876 // phpcs:ignore Generic.Files.LineLength877 876 $pattern = "/([\w:\*-]*)(?:\#([\w-]+))?(?:|\.([\w\.-]+))?((?:\[@?(?:!?[\w:-]+)(?:(?:[!*^$|~]?=)[\"']?(?:.*?)[\"']?)?(?:\s*?(?:[iIsS])?)?\])+)?([\/, >+~]+)/is"; 878 877 -
seo-booster/trunk/readme.txt
r2637115 r2644211 6 6 Requires PHP: 5.6 7 7 Tested up to: 5.8.2 8 Stable tag: 3.8 8 Stable tag: 3.8.1 9 9 10 10 Not your usual SEO plugin - Discover new keywords + automatic links + discover new incoming links + 404 error monitoring and much more. -
seo-booster/trunk/seo-booster-keywords.php
r2637115 r2644211 11 11 $kwdttable = $wpdb->prefix . 'sb2_kwdt'; 12 12 if ( isset( $_COOKIE['sbp_kw_length'] ) ) { 13 $the_length = $_COOKIE['sbp_kw_length'];13 $the_length = sanitize_key( $_COOKIE['sbp_kw_length'] ); 14 14 } 15 15 16 16 if ( isset( $_COOKIE['sbp_the_showkws'] ) ) { 17 $the_showkws = $_COOKIE['sbp_the_showkws'];17 $the_showkws = sanitize_key( $_COOKIE['sbp_the_showkws'] ); 18 18 } else { 19 19 $the_showkws = 'all'; … … 22 22 23 23 if ( isset( $_COOKIE['sbp_kw_hideinternal'] ) ) { 24 $the_hideinternal = $_COOKIE['sbp_kw_hideinternal'];24 $the_hideinternal = sanitize_key( $_COOKIE['sbp_kw_hideinternal'] ); 25 25 } else { 26 26 $the_hideinternal = ''; … … 41 41 <?php 42 42 if ( isset( $_COOKIE['sbp_kw_length'] ) ) { 43 $the_length = $_COOKIE['sbp_kw_length'];43 $the_length = sanitize_key( $_COOKIE['sbp_kw_length'] ); 44 44 } 45 45 if ( isset( $_COOKIE['sbp_the_showkws'] ) ) { 46 $the_showkws = $_COOKIE['sbp_the_showkws'];46 $the_showkws = sanitize_key( $_COOKIE['sbp_the_showkws'] ); 47 47 } 48 48 if ( isset( $_COOKIE['sbp_kw_hideinternal'] ) ) { 49 $the_hideinternal = $_COOKIE['sbp_kw_hideinternal'];49 $the_hideinternal = sanitize_key( $_COOKIE['sbp_kw_hideinternal'] ); 50 50 } 51 51 ?> … … 108 108 109 109 <div id="datatable-target"></div> 110 <table cellpadding="0" cellspacing="0" border="0"class="wp-list-table widefat" id="datatable">110 <table cellpadding="0" cellspacing="0" class="wp-list-table widefat" id="datatable"> 111 111 <thead> 112 112 <tr> … … 181 181 </tfoot> 182 182 </table> 183 184 185 183 <hr> 186 187 184 <?php 188 $query = "SELECT engine, COUNT(*) as cnt, SUM(visits) as visits FROM {$wpdb->prefix}sb2_kw where `ig`='0' AND `kw`<>'#' AND engine<>'Internal Search' GROUP BY `engine` ORDER BY `visits` DESC limit 25;"; 189 $engines = $wpdb->get_results( $ query, ARRAY_A ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared185 186 $engines = $wpdb->get_results( $wpdb->prepare( "SELECT engine, COUNT(*) as cnt, SUM(visits) as visits FROM {$wpdb->prefix}sb2_kw where `ig`='0' AND `kw`<>'#' AND engine <> %s GROUP BY %s ORDER BY `visits` DESC limit 25;", 'Internal Search', 'engine'), ARRAY_A ); 190 187 $enginecount = count( $engines ); 191 188 … … 231 228 <tr> 232 229 <td> 233 <?php234 echo esc_attr( $position );235 ?>236 </td>230 <?php 231 echo esc_attr( $position ); 232 ?> 233 </td> 237 234 <td> 238 235 <?php -
seo-booster/trunk/seo-booster-log.php
r2637115 r2644211 22 22 if ( ! empty( $_POST ) && check_admin_referer( 'reset_log', 'seobooster2_nonce' ) ) { 23 23 24 if ( isset( $_POST['sb2_log_action'] ) && 'resetlog' === $_POST['sb2_log_action']) {24 if ( isset( $_POST['sb2_log_action'] ) && 'resetlog' === sanitize_text_field( $_POST['sb2_log_action'] ) ) { 25 25 $wpdb->query( "TRUNCATE TABLE {$wpdb->prefix}sb2_log;" ); 26 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 27 this::log( __( 'Log emptied manually', 'seo-booster' ) ); 26 $seobooster2::log( __( 'Log emptied manually', 'seo-booster' ) ); 28 27 } 29 28 } -
seo-booster/trunk/seo-booster-seobooster2.php
r2637115 r2644211 9 9 global $wpdb, $seobooster_fs; 10 10 $foftable = $wpdb->prefix . 'sb2_404'; 11 $bltable = $wpdb->prefix . 'sb2_bl'; 11 12 12 ?> 13 13 <div class="wrap"> … … 32 32 // TESTING AND FIXING DATABASE TABLES 33 33 34 if ( isset( $_POST['page'] ) && 'sb2_dashboard' === $_POST['page']) {35 $nonce = $_REQUEST['_wpnonce'];34 if ( isset( $_POST['page'] ) && 'sb2_dashboard' === sanitize_text_field( $_POST['page'] ) ) { 35 $nonce = sanitize_text_field( $_REQUEST['_wpnonce'] ); 36 36 37 37 if ( ! wp_verify_nonce( $nonce, 'fixdbtables' ) ) { … … 94 94 95 95 <form id="fixdatabase" method="post"> 96 <input type="hidden" name="page" value="<?php echo esc_attr( $_REQUEST['page']); ?>" />96 <input type="hidden" name="page" value="<?php echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); ?>" /> 97 97 <input type="hidden" name="action" value="sbp_fixdatabasetables" /> 98 98 <input type="hidden" name="_wpnonce" value=" … … 164 164 $latestlimit = 10; 165 165 $latestkws = $wpdb->get_results( "SELECT kw, engine, firstvisit FROM {$wpdb->prefix}sb2_kw WHERE `engine` NOT LIKE 'Internal Search' AND `kw`<>'#' GROUP BY kw ORDER BY visits ASC LIMIT {$latestlimit};" ); 166 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared167 166 168 167 if ( $latestkws ) { … … 181 180 182 181 $totalbls = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_bl;" ); 183 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared184 182 185 183 if ( $totalbls > 0 ) { 186 184 $show_welcome_text = false; 187 185 // translators: 188 echo '<p class="quickie">' . sprintf( __( 'Found <span>%s</span> external links from visitors.', 'seo-booster' ), esc_html( number_format_i18n( $totalbls ) ), esc_html( number_format_i18n( $totalengines ) ) ) . '</p>';186 echo esc_html( '<p class="quickie">' . sprintf( __( 'Found <span>%s</span> external links from visitors.', 'seo-booster' ), number_format_i18n( $totalbls ) , number_format_i18n( $totalengines ) ) . '</p>', wp_kses_allowed_html() ); 189 187 } 190 188 … … 194 192 $show_welcome_text = false; 195 193 // translators: %s - number of 404 errors - pages and links not found 196 echo '<p class="quickie">' . sprintf( __( 'Detected <span>%s</span> not found pages and links.', 'seo-booster' ), esc_html( number_format_i18n( $totalfofs ) ) ) . '</p>';194 echo esc_html( '<p class="quickie">' . sprintf( __( 'Detected <span>%s</span> not found pages and links.', 'seo-booster' ), number_format_i18n( $totalfofs ) ) . '</p>' ); 197 195 } 198 196 … … 229 227 </h3> 230 228 <ul> 231 232 <li><a href="https://wordpress.org/support/plugin/seo-booster/" target="_blank"> 229 <li><a href="https://wordpress.org/support/plugin/seo-booster/" target="_blank"> 233 230 <?php 234 231 esc_html_e( 'WP Support Forum', 'seo-booster' ); … … 248 245 ?> 249 246 "> 250 <?php251 esc_html_e( 'The Settings', 'seo-booster' );252 ?>253 </a></li>247 <?php 248 esc_html_e( 'The Settings', 'seo-booster' ); 249 ?> 250 </a></li> 254 251 <li><a href=" 255 252 <?php … … 257 254 ?> 258 255 "> 259 <?php260 esc_html_e( 'Keyword Details', 'seo-booster' );261 ?>262 </a></li>256 <?php 257 esc_html_e( 'Keyword Details', 'seo-booster' ); 258 ?> 259 </a></li> 263 260 <li><a href=" 264 261 <?php … … 266 263 ?> 267 264 "> 268 <?php269 esc_html_e( 'Backlink Details', 'seo-booster' );270 ?>271 </a></li>265 <?php 266 esc_html_e( 'Backlink Details', 'seo-booster' ); 267 ?> 268 </a></li> 272 269 <li><a href=" 273 270 <?php … … 275 272 ?> 276 273 "> 277 <?php278 esc_html_e( 'Crawled Pages', 'seo-booster' );279 ?>280 </a></li>274 <?php 275 esc_html_e( 'Crawled Pages', 'seo-booster' ); 276 ?> 277 </a></li> 281 278 <li><a href=" 282 279 <?php … … 284 281 ?> 285 282 "> 286 <?php287 esc_html_e( '404 Errors', 'seo-booster' );288 ?>289 </a></li>283 <?php 284 esc_html_e( '404 Errors', 'seo-booster' ); 285 ?> 286 </a></li> 290 287 <li><a href=" 291 288 <?php … … 293 290 ?> 294 291 "> 295 <?php296 esc_html_e( 'Forgotten Pages', 'seo-booster' );297 ?>298 </a></li>292 <?php 293 esc_html_e( 'Forgotten Pages', 'seo-booster' ); 294 ?> 295 </a></li> 299 296 <li><a href=" 300 297 <?php … … 302 299 ?> 303 300 "> 304 <?php305 esc_html_e( 'The Log', 'seo-booster' );306 ?>307 </a></li>301 <?php 302 esc_html_e( 'The Log', 'seo-booster' ); 303 ?> 304 </a></li> 308 305 </ul> 309 306 </div> 310 311 307 </div><!-- .wp-columns --> 312 313 308 </div><!-- .welcome-panel-content --> 314 309 </div><!--#inner-welcome--> … … 316 311 317 312 <?php 318 $searchtrafficbyday_query = "SELECT daday, sum(visits) as totalvisits FROM {$wpdb->prefix}sb2_kwdt WHERE daday > DATE_SUB(NOW(), INTERVAL 120 DAY) GROUP BY daday ORDER BY daday ASC"; 319 $searchtrafficbyday = $wpdb->get_results( $searchtrafficbyday_query ); //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared 313 $searchtrafficbyday_query = $wpdb->prepare( "SELECT daday, sum(visits) as totalvisits FROM {$wpdb->prefix}sb2_kwdt WHERE daday > DATE_SUB(NOW(), INTERVAL 120 DAY) GROUP BY daday ORDER BY daday ASC" ); 314 315 $searchtrafficbyday = $wpdb->get_results( $searchtrafficbyday_query ); 320 316 321 317 if ( $searchtrafficbyday ) { … … 457 453 $query = "SELECT engine, COUNT(*) as cnt, SUM(visits) as visits FROM {$wpdb->prefix}sb2_kw WHERE `ig`='0' AND engine<>'Internal Search' GROUP BY `engine` ORDER BY `visits` DESC LIMIT 35;"; 458 454 $engines = $wpdb->get_results( $query, ARRAY_A ); 459 //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared460 455 461 456 if ( $engines ) { … … 537 532 </p> 538 533 <?php 539 $totalbls = $wpdb->get_var( "SELECT count(*) FROM {$bltable};" ); 540 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 541 $totalblsignore = $wpdb->get_var( "SELECT count(*) FROM {$bltable} WHERE ig='1';" ); 542 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 543 $totalblsverified = $wpdb->get_var( "SELECT count(*) FROM {$bltable} WHERE verified='1' AND ig<>'1';" ); 544 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 545 $totalblsvisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$bltable};" ); 546 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 547 $totalblsignorevisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$bltable} WHERE ig='1';" ); 548 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 549 $totalblsverifiedvisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$bltable} WHERE verified='1' AND ig<>'1';" ); 550 //phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared 534 $totalbls = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_bl;" ); 535 $totalblsignore = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_bl WHERE ig='1';" ); 536 $totalblsverified = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_bl WHERE verified='1' AND ig<>'1';" ); 537 $totalblsvisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$wpdb->prefix}sb2_bl;" ); 538 $totalblsignorevisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$wpdb->prefix}sb2_bl WHERE ig='1';" ); 539 $totalblsverifiedvisits = $wpdb->get_var( "SELECT SUM(visits) FROM {$wpdb->prefix}sb2_bl WHERE verified='1' AND ig<>'1';" ); 551 540 ?> 552 541 <table class="wp-list-table widefat"> -
seo-booster/trunk/seo-booster-settings.php
r2637115 r2644211 9 9 global $wpdb, $seobooster2; 10 10 11 if ( isset( $_POST['page'] ) && 'sb2_settings' === $_POST['page']) {12 // todo - verify nonce 13 $nonce = $_REQUEST['_wpnonce'];11 if ( isset( $_POST['page'] ) && 'sb2_settings' === sanitize_text_field( $_POST['page'] ) ) { 12 13 $nonce = sanitize_text_field( $_REQUEST['_wpnonce'] ); 14 14 if ( ! wp_verify_nonce( $nonce, 'seobooster_save_settings' ) ) { 15 15 die( 'Security check' ); 16 16 } 17 // todo - merge in to one option 17 18 18 19 // todo - to anyone reading this, yes - I need to review the settings API. 19 20 20 21 if ( isset( $_POST['seobooster_internal_linking'] ) ) { 21 update_option( 'seobooster_internal_linking', esc_attr( $_POST['seobooster_internal_linking'] ) );22 update_option( 'seobooster_internal_linking', sanitize_key( $_POST['seobooster_internal_linking'] ) ); 22 23 } else { 23 24 delete_option( 'seobooster_internal_linking' ); … … 26 27 27 28 if ( isset( $_POST['seobooster_replace_kw_multiple'] ) ) { 28 update_option( 'seobooster_replace_kw_multiple', esc_attr( $_POST['seobooster_replace_kw_multiple'] ) );29 update_option( 'seobooster_replace_kw_multiple', sanitize_key( $_POST['seobooster_replace_kw_multiple'] ) ); 29 30 } else { 30 31 delete_option( 'seobooster_replace_kw_multiple' ); … … 32 33 33 34 if ( isset( $_POST['seobooster_dynamic_tag_taxonomy'] ) ) { 34 update_option( 'seobooster_dynamic_tag_taxonomy', esc_attr( $_POST['seobooster_dynamic_tag_taxonomy'] ) );35 update_option( 'seobooster_dynamic_tag_taxonomy', sanitize_key( $_POST['seobooster_dynamic_tag_taxonomy'] ) ); 35 36 } 36 37 if ( isset( $_POST['seobooster_dynamic_tag_maximum'] ) ) { 37 update_option( 'seobooster_dynamic_tag_maximum', esc_attr($_POST['seobooster_dynamic_tag_maximum'] ) );38 update_option( 'seobooster_dynamic_tag_maximum', sanitize_key($_POST['seobooster_dynamic_tag_maximum'] ) ); 38 39 } 39 40 if ( isset( $_POST['seobooster_dynamic_tag_minlength'] ) ) { 40 update_option( 'seobooster_dynamic_tag_minlength', esc_attr($_POST['seobooster_dynamic_tag_minlength'] ) );41 update_option( 'seobooster_dynamic_tag_minlength', sanitize_key($_POST['seobooster_dynamic_tag_minlength'] ) ); 41 42 } 42 43 if ( isset( $_POST['seobooster_dynamic_tag_maxlength'] ) ) { 43 update_option( 'seobooster_dynamic_tag_maxlength', esc_attr($_POST['seobooster_dynamic_tag_maxlength'] ) );44 update_option( 'seobooster_dynamic_tag_maxlength', sanitize_key($_POST['seobooster_dynamic_tag_maxlength'] ) ); 44 45 } 45 46 if ( isset( $_POST['seobooster_pagespeed_api_key'] ) ) { 46 update_option( 'seobooster_pagespeed_api_key', esc_attr( $_POST['seobooster_pagespeed_api_key'] ) );47 update_option( 'seobooster_pagespeed_api_key', sanitize_text_field( $_POST['seobooster_pagespeed_api_key'] ) ); 47 48 } 48 49 if ( isset( $_POST['seobooster_pagespeed_url_limit'] ) ) { 49 update_option( 'seobooster_pagespeed_url_limit', esc_attr( $_POST['seobooster_pagespeed_url_limit'] ) );50 update_option( 'seobooster_pagespeed_url_limit', sanitize_text_field( $_POST['seobooster_pagespeed_url_limit'] ) ); 50 51 } 51 52 52 53 if ( isset( $_POST['seobooster_enable_pagespeed'] ) ) { 53 update_option( 'seobooster_enable_pagespeed', esc_attr( $_POST['seobooster_enable_pagespeed'] ) );54 update_option( 'seobooster_enable_pagespeed', sanitize_key( $_POST['seobooster_enable_pagespeed'] ) ); 54 55 } else { 55 56 delete_option( 'seobooster_enable_pagespeed' ); … … 57 58 58 59 if ( isset( $_POST['seobooster_replace_kw_limit'] ) ) { 59 update_option( 'seobooster_replace_kw_limit', esc_attr( $_POST['seobooster_replace_kw_limit'] ) );60 update_option( 'seobooster_replace_kw_limit', sanitize_text_field( $_POST['seobooster_replace_kw_limit'] ) ); 60 61 } 61 62 62 63 if ( isset( $_POST['seobooster_dynamic_tagging_related'] ) ) { 63 update_option( 'seobooster_dynamic_tagging_related', esc_attr($_POST['seobooster_dynamic_tagging_related'] ) );64 update_option( 'seobooster_dynamic_tagging_related', sanitize_key( $_POST['seobooster_dynamic_tagging_related'] ) ); 64 65 } else { 65 66 delete_option( 'seobooster_dynamic_tagging_related' ); … … 68 69 69 70 if ( isset( $_POST['seobooster_ignore_internal_searches'] ) ) { 70 update_option( 'seobooster_ignore_internal_searches', esc_attr( $_POST['seobooster_ignore_internal_searches'] ) );71 update_option( 'seobooster_ignore_internal_searches', sanitize_key( $_POST['seobooster_ignore_internal_searches'] ) ); 71 72 } else { 72 73 delete_option( 'seobooster_ignore_internal_searches' ); … … 75 76 76 77 if ( isset( $_POST['seobooster_delete_deactivate'] ) ) { 77 update_option( 'seobooster_delete_deactivate', esc_attr( $_POST['seobooster_delete_deactivate'] ) );78 update_option( 'seobooster_delete_deactivate', sanitize_key( $_POST['seobooster_delete_deactivate'] ) ); 78 79 } else { 79 80 delete_option( 'seobooster_delete_deactivate' ); … … 82 83 83 84 if ( isset( $_POST['seobooster_dynamic_tagging'] ) ) { 84 update_option( 'seobooster_dynamic_tagging', esc_attr( $_POST['seobooster_dynamic_tagging'] ) );85 update_option( 'seobooster_dynamic_tagging', sanitize_key( $_POST['seobooster_dynamic_tagging'] ) ); 85 86 } else { 86 87 delete_option( 'seobooster_dynamic_tagging' ); … … 89 90 90 91 if ( isset( $_POST['seobooster_dynamic_tag_assigncpts'] ) ) { 91 update_option( 'seobooster_dynamic_tag_assigncpts', esc_attr( $_POST['seobooster_dynamic_tag_assigncpts'] ) );92 update_option( 'seobooster_dynamic_tag_assigncpts', sanitize_key( $_POST['seobooster_dynamic_tag_assigncpts'] ) ); 92 93 } else { 93 94 delete_option( 'seobooster_dynamic_tag_assigncpts' ); … … 96 97 97 98 if ( isset( $_POST['seobooster_weekly_email'] ) ) { 98 update_option( 'seobooster_weekly_email', esc_attr( $_POST['seobooster_weekly_email'] ) );99 update_option( 'seobooster_weekly_email', sanitize_text_field( $_POST['seobooster_weekly_email'] ) ); 99 100 } else { 100 101 delete_option( 'seobooster_weekly_email' ); … … 103 104 104 105 if ( isset( $_POST['seobooster_weekly_email_recipient'] ) ) { 105 update_option( 'seobooster_weekly_email_recipient', esc_attr( $_POST['seobooster_weekly_email_recipient'] ) );106 update_option( 'seobooster_weekly_email_recipient', sanitize_text_field( $_POST['seobooster_weekly_email_recipient'] ) ); 106 107 } else { 107 108 delete_option( 'seobooster_weekly_email_recipient' ); … … 110 111 111 112 if ( isset( $_POST['seobooster_debug_logging'] ) ) { 112 update_option( 'seobooster_debug_logging', esc_attr( $_POST['seobooster_debug_logging'] ) );113 update_option( 'seobooster_debug_logging', sanitize_text_field( $_POST['seobooster_debug_logging'] ) ); 113 114 } else { 114 115 delete_option( 'seobooster_debug_logging' ); … … 117 118 118 119 if ( isset( $_POST['seobooster_fof_monitoring'] ) ) { 119 update_option( 'seobooster_fof_monitoring', esc_attr( $_POST['seobooster_fof_monitoring'] ) );120 update_option( 'seobooster_fof_monitoring', sanitize_text_field( $_POST['seobooster_fof_monitoring'] ) ); 120 121 } else { 121 122 delete_option( 'seobooster_fof_monitoring' ); … … 123 124 124 125 if ( isset( $_POST['seobooster_backlinks_ignore'] ) ) { 125 update_option( 'seobooster_backlinks_ignore', esc_attr( stripslashes( $_POST['seobooster_backlinks_ignore'] )) );126 update_option( 'seobooster_backlinks_ignore', sanitize_textarea_field( $_POST['seobooster_backlinks_ignore'] ) ); 126 127 } 127 128 if ( isset( $_POST['seobooster_ignorelist'] ) ) { 128 update_option( 'seobooster_ignorelist', esc_attr( stripslashes( $_POST['seobooster_ignorelist'] )) );129 update_option( 'seobooster_ignorelist', sanitize_text_field( $_POST['seobooster_ignorelist'] ) ); 129 130 } 130 131 if ( isset( $_POST['seobooster_fof_ignore'] ) ) { 131 update_option( 'seobooster_fof_ignore', esc_attr( stripslashes( $_POST['seobooster_fof_ignore'] )) );132 update_option( 'seobooster_fof_ignore', sanitize_text_field( $_POST['seobooster_fof_ignore'] ) ); 132 133 } 133 134 // WooCommerce 134 135 135 136 if ( isset( $_POST['seobooster_woocommerce'] ) ) { 136 update_option( 'seobooster_woocommerce', esc_attr( $_POST['seobooster_woocommerce'] ) );137 update_option( 'seobooster_woocommerce', sanitize_text_field( $_POST['seobooster_woocommerce'] ) ); 137 138 } else { 138 139 delete_option( 'seobooster_woocommerce' ); … … 140 141 } 141 142 142 // TODO - CHECK NONCE 143 143 144 // Trimming old keywords 144 145 if ( isset( $_POST['delete_old_kws'] ) && $_POST['delete_old_kws'] ) { 145 146 $oldkws = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}sb2_kw WHERE lastvisit < DATE_SUB(NOW(), INTERVAL 90 DAY) LIMIT 10000;" ); 146 147 if ( $oldkws ) { 147 148 foreach ( $oldkws as $oldkw ) { 148 $query = "DELETE FROM {$wpdb->prefix}sb2_kw where id=" . $oldkw->id . ' LIMIT 1;'; 149 $wpdb->query( $query ); 149 $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}sb2_kw where id=%d LIMIT 1;", $oldkw->id ) ); 150 150 } 151 151 } 152 152 } 153 153 154 // TODO - CHECK NONCE 155 154 // Running DB updates 156 155 if ( isset( $_POST['submit_dbupdates'] ) && $_POST['submit_dbupdates'] ) { 157 156 // start migrate old data process.. … … 162 161 163 162 // Resets and starts the guided tour again. 164 165 163 if ( isset( $_POST['reset_guided_tours'] ) && $_POST['reset_guided_tours'] ) { 166 164 $pointer = 'sbp_tour_pointer'; … … 193 191 $fof_monitoring = get_option( 'seobooster_fof_monitoring' ); 194 192 $seobooster_delete_deactivate = get_option( 'seobooster_delete_deactivate' ); 193 195 194 $seobooster_backlinks_ignore = get_option( 'seobooster_backlinks_ignore' ); 196 195 $seobooster_backlinks_ignore = preg_replace( '/,+/', ',', $seobooster_backlinks_ignore ); 197 196 $seobooster_backlinks_ignore = strtolower( $seobooster_backlinks_ignore ); 197 198 198 $ignorelist = get_option( 'seobooster_ignorelist' ); 199 $ignorelist = preg_replace( "/\r|\n/", ',', $ignorelist );199 //$ignorelist = preg_replace( "/\r|\n/", ',', $ignorelist ); 200 200 $ignorelist = preg_replace( '/,+/', ',', $ignorelist ); 201 201 $ignorelist = strtolower( $ignorelist ); 202 202 203 $seobooster_fof_ignore = get_option( 'seobooster_fof_ignore' ); 203 $seobooster_fof_ignore = preg_replace( "/\r|\n/", ',', $seobooster_fof_ignore );204 //$seobooster_fof_ignore = preg_replace( "/\r|\n/", ',', $seobooster_fof_ignore ); 204 205 $seobooster_fof_ignore = preg_replace( '/,+/', ',', $seobooster_fof_ignore ); 205 206 $seobooster_fof_ignore = strtolower( $seobooster_fof_ignore ); … … 244 245 </th> 245 246 <td> 246 <textarea id="seobooster_ignorelist" name="seobooster_ignorelist" class="large-text code"> 247 <?php 248 echo esc_textarea( $ignorelist ); 249 ?> 250 </textarea> 247 <textarea id="seobooster_ignorelist" name="seobooster_ignorelist" class="large-text code"><?php echo sanitize_textarea_field( $ignorelist ); ?></textarea> 251 248 <p class="description"> 252 249 <?php … … 430 427 'and' 431 428 ); 432 $taxonomies = array_merge( $builtintaxonomies, $customtaxonomies );429 $taxonomies = array_merge( $builtintaxonomies, $customtaxonomies ); 433 430 ?> 434 431 <select name="seobooster_dynamic_tag_taxonomy" id="seobooster_dynamic_tag_taxonomy"> … … 436 433 if ( $taxonomies ) { 437 434 foreach ( $taxonomies as $name => $atax ) { 438 echo "<option name=' {$name}' value='" . esc_attr( $name ) . "'";435 echo "<option name='" . esc_attr( $name) . "' value ='" . esc_attr( $name ) . "'"; 439 436 if ( $dynamic_tag_tax === $name ) { 440 437 echo " selected='selected' "; … … 445 442 ?> 446 443 </select> 447 448 449 444 <p class="description"> 450 445 <?php … … 503 498 : <strong> 504 499 <?php 505 echo $cptlist;500 echo esc_html( $cptlist ); 506 501 ?> 507 502 </strong>.</p> … … 531 526 ?> 532 527 </p> 533 534 528 </td> 535 529 </tr> 536 537 530 </tr> 538 531 <tr valign="top" class="taggingrelated … … 581 574 </td> 582 575 </tr> 583 584 585 586 576 <tr valign="top" id="autolinks"> 587 577 <th colspan="2"> … … 593 583 </th> 594 584 </tr> 595 596 585 <tr valign="top"> 597 586 <th scope="row" valign="top"> … … 624 613 </td> 625 614 </tr> 626 627 628 615 <tr valign="top"> 629 616 <th scope="row" valign="top"> … … 656 643 </td> 657 644 </tr> 658 659 660 645 <tr valign="top"> 661 646 <th scope="row" valign="top"> … … 677 662 </td> 678 663 </tr> 679 680 664 <?php 681 665 // premium only … … 695 679 /> 696 680 <p class="description">Enables keywords to links in WooCommerce product descriptions.</a></p> 697 698 </label> 699 </fieldset> 700 </td> 701 </tr> 702 703 704 <tr valign="top"> 705 <th colspan="2"> 706 <h2> 707 <?php 708 esc_html_e( 'Weekly Email Reports', 'seo-booster' ); 709 ?> 710 </h2> 711 </th> 712 </tr> 713 <tr valign="top"> 714 <th scope="row" valign="top"> 715 <?php 716 esc_html_e( 'Enable/Disable', 'seo-booster' ); 717 ?> 718 </th> 719 <td> 720 <input type="checkbox" id="seobooster_weekly_email" name="seobooster_weekly_email" value="on" 721 <?php 722 if ( 'on' === $seobooster_weekly_email ) { 723 echo " checked='checked'"; 724 } 725 ?> 726 /> 727 <p class="description"><label for="seobooster_weekly_email"> 728 <?php 729 esc_html_e( 'Send a weekly email with information of keyword stats, new backlinks and 404 errors detected the past week.', 'seo-booster' ); 730 ?> 731 </label></p> 732 733 </td> 734 </tr> 735 736 <tr valign="top"> 737 <th scope="row" valign="top"> 738 <?php 739 esc_html_e( 'Email recipient', 'seo-booster' ); 740 ?> 741 </th> 742 <td> 743 <input type="text" id="seobooster_weekly_email_recipient" name="seobooster_weekly_email_recipient" value=" 744 <?php 745 echo esc_attr( $seobooster_weekly_email_recipient ); 746 ?> 747 " class="regular-text"> 748 <p class="description"><label for="seobooster_weekly_email_recipient"> 749 <?php 750 esc_html_e( 'Email recipent.', 'seo-booster' ); 751 ?> 752 </label></p> 753 </td> 754 </tr> 755 756 757 <tr valign="top"> 758 <th colspan="2"> 759 <h2> 760 <?php 761 esc_html_e( '404 Errors', 'seo-booster' ); 762 ?> 763 </h2> 764 </th> 765 </tr> 766 <tr valign="top"> 767 <th scope="row" valign="top"> 768 <p> 769 <?php 770 esc_html_e( 'Enable/Disable', 'seo-booster' ); 771 ?> 772 </p> 773 774 </th> 775 <td> 776 <input type="checkbox" id="seobooster_fof_monitoring" name="seobooster_fof_monitoring" value="on" 777 <?php 778 if ( 'on' === $fof_monitoring ) { 779 echo " checked='checked'"; 780 } 781 ?> 782 /> 783 <p class="description"><label for="seobooster_fof_monitoring"> 784 <?php 785 esc_html_e( 'If turned on, 404 errors will be monitored.', 'seo-booster' ); 786 ?> 787 </label></p> 788 </td> 789 </tr> 790 791 <tr valign="top"> 792 <th scope="row" valign="top"> 793 <?php 794 esc_html_e( 'Ignore links', 'seo-booster' ); 795 ?> 796 </th> 797 <td> 798 <textarea id="seobooster_fof_ignore" name="seobooster_fof_ignore" class="large-text code"> 799 <?php 800 echo esc_textarea( $seobooster_fof_ignore ); 801 ?> 802 </textarea> 803 <p class="description"> 804 <?php 805 esc_html_e( 'Here you can instruct the plugin to ignore 404 errors on URLs that match.', 'seo-booster' ); 806 ?> 807 </p> 808 <p class="description"> 809 <?php 810 esc_html_e( 'For example if you want to ignore 404 errors URLs with', 'seo-booster' ); 811 ?> 812 <code>well-known.tar.gz</code> or <code>.php.suspected</code></p> 813 814 <p class="description"> 815 <?php 816 esc_html_e( 'Separate with a comma or linebreak.', 'seo-booster' ); 817 ?> 818 </p> 819 </td> 820 </tr> 821 822 823 824 825 826 827 828 829 <tr valign="top"> 830 <th colspan="2"> 831 <h2> 832 <?php 833 esc_html_e( 'Debug Logging', 'seo-booster' ); 834 ?> 835 </h2> 836 </th> 837 </tr> 838 <tr valign="top"> 839 <th scope="row" valign="top"> 840 <p> 841 <?php 842 esc_html_e( 'Enable/Disable', 'seo-booster' ); 843 ?> 844 </p> 845 846 </th> 847 <td> 848 <input type="checkbox" id="seobooster_debug_logging" name="seobooster_debug_logging" value="on" 849 <?php 850 if ( 'on' === $debug_logging ) { 851 echo " checked='checked'"; 852 } 853 ?> 854 /> 855 <p class="description"><label for="seobooster_debug_logging"> 856 <?php 857 esc_html_e( 'If turned on, the log will have debug information that can be helpful for finding errors or configuration issues.', 'seo-booster' ); 858 ?> 859 </label></p> 860 </td> 861 </tr> 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 <?php 877 // premium only 878 ?> 879 880 <tr valign="top"> 881 <th colspan="2"> 882 <hr> 681 </label> 682 </fieldset> 683 </td> 684 </tr> 685 <tr valign="top"> 686 <th colspan="2"> 687 <h2> 688 <?php 689 esc_html_e( 'Weekly Email Reports', 'seo-booster' ); 690 ?> 691 </h2> 883 692 </th> 884 </tr> 885 <tr valign="top"> 886 <th scope="row" valign="top"> 887 <?php 888 esc_html_e( 'Delete data on deactivate:', 'seo-booster' ); 889 ?> 890 </th> 891 <td> 892 <input type="checkbox" id="seobooster_delete_deactivate" name="seobooster_delete_deactivate" value="on" 893 <?php 894 if ( 'on' === $seobooster_delete_deactivate ) { 895 echo " checked='checked'"; 896 } 897 ?> 898 /> 899 <p class="description"><label for="seobooster_delete_deactivate"> 900 <?php 901 esc_html_e( 'Turn this on to delete all data when deactivating the plugin. This cannot be undone.', 'seo-booster' ); 902 ?> 903 </label></p> 904 905 <p class="description"> 906 <?php 907 esc_html_e( 'WordPress Multisite users: Careful! Turning this on and deactivating the plugin deletes ALL SEO Booster database tables on ALL sites.', 'seo-booster' ); 908 ?> 909 </p> 910 </td> 911 </tr> 912 913 914 <tr> 915 <td colspan="2"> 916 <input type="hidden" name="page" value="sb2_settings"> 917 <?php 918 wp_nonce_field( 'seobooster_save_settings' ); 919 ?> 920 <?php 921 submit_button(); 922 ?> 923 </td> 924 </tr> 925 </tbody> 926 </table> 927 </form> 928 929 <hr> 930 931 <h3> 932 <?php 933 esc_html_e( 'Tools', 'seo-booster' ); 934 ?> 935 </h3> 936 <form method="post"> 937 <?php 938 wp_nonce_field( 'seobooster_do_actions' ); 939 ?> 940 <table class="form-table"> 941 <tbody> 942 <tr valign="top"> 943 <th scope="row" valign="top"> 944 <?php 945 esc_html_e( 'Database Update', 'seo-booster' ); 946 ?> 947 </th> 948 <td> 949 <?php 950 submit_button( __( 'Run Update Database', 'seo-booster' ), 'secondary', 'submit_dbupdates' ); 951 ?> 952 <label class="description" for="submit"> 953 <?php 954 esc_html_e( 'If you need to manually run the database updates. No need to use unless directed by support.', 'seo-booster' ); 955 ?> 956 </label> 957 </td> 958 </tr> 959 960 <tr valign="top"> 961 <th scope="row" valign="top"> 962 <?php 963 esc_html_e( 'Guided Tour', 'seo-booster' ); 964 ?> 965 </th> 966 <td> 967 <?php 968 submit_button( __( 'See Guided Tour', 'seo-booster' ), 'secondary', 'reset_guided_tours' ); 969 ?> 970 <p class="description" for="reset_guided_tours"> 971 <?php 972 esc_html_e( 'Click to start the Guided Tour again.', 'seo-booster' ); 973 ?> 974 </p> 975 </td> 976 </tr> 977 <tr valign="top"> 978 <th scope="row" valign="top"> 979 <?php 980 esc_html_e( 'Account Reset', 'seo-booster' ); 981 ?> 982 </th> 983 <td> 984 <a href=" 985 <?php 986 echo esc_url( $seobooster_fs->get_reconnect_url() ); 987 ?> 988 "> 989 <?php 990 esc_html_e( 'Click to Reset', 'seo-booster' ); 991 ?> 992 </a> 993 <p class="description" for="reset_account_details"> 994 <?php 995 esc_html_e( 'Click to reset and start registration process again.', 'seo-booster' ); 996 ?> 997 </p> 998 </td> 999 </tr> 1000 </tbody> 1001 </table> 1002 </form> 1003 </div> 1004 693 </tr> 694 <tr valign="top"> 695 <th scope="row" valign="top"> 696 <?php 697 esc_html_e( 'Enable/Disable', 'seo-booster' ); 698 ?> 699 </th> 700 <td> 701 <input type="checkbox" id="seobooster_weekly_email" name="seobooster_weekly_email" value="on" 702 <?php 703 if ( 'on' === $seobooster_weekly_email ) { 704 echo " checked='checked'"; 705 } 706 ?> 707 /> 708 <p class="description"><label for="seobooster_weekly_email"> 709 <?php 710 esc_html_e( 'Send a weekly email with information of keyword stats, new backlinks and 404 errors detected the past week.', 'seo-booster' ); 711 ?> 712 </label></p> 713 </td> 714 </tr> 715 <tr valign="top"> 716 <th scope="row" valign="top"> 717 <?php 718 esc_html_e( 'Email recipient', 'seo-booster' ); 719 ?> 720 </th> 721 <td> 722 <input type="text" id="seobooster_weekly_email_recipient" name="seobooster_weekly_email_recipient" value=" 723 <?php 724 echo esc_attr( $seobooster_weekly_email_recipient ); 725 ?> 726 " class="regular-text"> 727 <p class="description"><label for="seobooster_weekly_email_recipient"> 728 <?php 729 esc_html_e( 'Email recipent.', 'seo-booster' ); 730 ?> 731 </label></p> 732 </td> 733 </tr> 734 <tr valign="top"> 735 <th colspan="2"> 736 <h2> 737 <?php 738 esc_html_e( '404 Errors', 'seo-booster' ); 739 ?> 740 </h2> 741 </th> 742 </tr> 743 <tr valign="top"> 744 <th scope="row" valign="top"> 745 <p> 746 <?php 747 esc_html_e( 'Enable/Disable', 'seo-booster' ); 748 ?> 749 </p> 750 </th> 751 <td> 752 <input type="checkbox" id="seobooster_fof_monitoring" name="seobooster_fof_monitoring" value="on" 753 <?php 754 if ( 'on' === $fof_monitoring ) { 755 echo " checked='checked'"; 756 } 757 ?> 758 /> 759 <p class="description"><label for="seobooster_fof_monitoring"> 760 <?php 761 esc_html_e( 'If turned on, 404 errors will be monitored.', 'seo-booster' ); 762 ?> 763 </label></p> 764 </td> 765 </tr> 766 <tr valign="top"> 767 <th scope="row" valign="top"> 768 <?php 769 esc_html_e( 'Ignore links', 'seo-booster' ); 770 ?> 771 </th> 772 <td> 773 <textarea id="seobooster_fof_ignore" name="seobooster_fof_ignore" class="large-text code"><?php echo sanitize_textarea_field( $seobooster_fof_ignore ); ?></textarea> 774 <p class="description"> 775 <?php 776 esc_html_e( 'Here you can instruct the plugin to ignore 404 errors on URLs that match.', 'seo-booster' ); 777 ?> 778 </p> 779 <p class="description"> 780 <?php 781 esc_html_e( 'For example if you want to ignore 404 errors URLs with', 'seo-booster' ); 782 ?> 783 <code>well-known.tar.gz</code> or <code>.php.suspected</code></p> 784 785 <p class="description"> 786 <?php 787 esc_html_e( 'Separate with a comma or linebreak.', 'seo-booster' ); 788 ?> 789 </p> 790 </td> 791 </tr> 792 <tr valign="top"> 793 <th colspan="2"> 794 <h2> 795 <?php 796 esc_html_e( 'Debug Logging', 'seo-booster' ); 797 ?> 798 </h2> 799 </th> 800 </tr> 801 <tr valign="top"> 802 <th scope="row" valign="top"> 803 <p> 804 <?php 805 esc_html_e( 'Enable/Disable', 'seo-booster' ); 806 ?> 807 </p> 808 </th> 809 <td> 810 <input type="checkbox" id="seobooster_debug_logging" name="seobooster_debug_logging" value="on" 811 <?php 812 if ( 'on' === $debug_logging ) { 813 echo " checked='checked'"; 814 } 815 ?> 816 /> 817 <p class="description"><label for="seobooster_debug_logging"> 818 <?php 819 esc_html_e( 'If turned on, the log will have debug information that can be helpful for finding errors or configuration issues.', 'seo-booster' ); 820 ?> 821 </label></p> 822 </td> 823 </tr> 824 <?php 825 // premium only 826 ?> 827 <tr valign="top"> 828 <th colspan="2"> 829 <hr> 830 </th> 831 </tr> 832 <tr valign="top"> 833 <th scope="row" valign="top"> 834 <?php 835 esc_html_e( 'Delete data on deactivate:', 'seo-booster' ); 836 ?> 837 </th> 838 <td> 839 <input type="checkbox" id="seobooster_delete_deactivate" name="seobooster_delete_deactivate" value="on" 840 <?php 841 if ( 'on' === $seobooster_delete_deactivate ) { 842 echo " checked='checked'"; 843 } 844 ?> 845 /> 846 <p class="description"><label for="seobooster_delete_deactivate"> 847 <?php 848 esc_html_e( 'Turn this on to delete all data when deactivating the plugin. This cannot be undone.', 'seo-booster' ); 849 ?> 850 </label></p> 851 <p class="description"> 852 <?php 853 esc_html_e( 'WordPress Multisite users: Careful! Turning this on and deactivating the plugin deletes ALL SEO Booster database tables on ALL sites.', 'seo-booster' ); 854 ?> 855 </p> 856 </td> 857 </tr> 858 <tr> 859 <td colspan="2"> 860 <input type="hidden" name="page" value="sb2_settings"> 861 862 <?php 863 submit_button(); 864 ?> 865 </td> 866 </tr> 867 </tbody> 868 </table> 869 <?php 870 wp_nonce_field( 'seobooster_save_settings' ); 871 ?> 872 </form> 873 <hr> 874 <h3> 875 <?php 876 esc_html_e( 'Tools', 'seo-booster' ); 877 ?> 878 </h3> 879 <form method="post"> 880 <?php 881 wp_nonce_field( 'seobooster_do_actions' ); 882 ?> 883 <table class="form-table"> 884 <tbody> 885 <tr valign="top"> 886 <th scope="row" valign="top"> 887 <?php 888 esc_html_e( 'Database Update', 'seo-booster' ); 889 ?> 890 </th> 891 <td> 892 <?php 893 submit_button( __( 'Run Update Database', 'seo-booster' ), 'secondary', 'submit_dbupdates' ); 894 ?> 895 <label class="description" for="submit"> 896 <?php 897 esc_html_e( 'If you need to manually run the database updates. No need to use unless directed by support.', 'seo-booster' ); 898 ?> 899 </label> 900 </td> 901 </tr> 902 903 <tr valign="top"> 904 <th scope="row" valign="top"> 905 <?php 906 esc_html_e( 'Guided Tour', 'seo-booster' ); 907 ?> 908 </th> 909 <td> 910 <?php 911 submit_button( __( 'See Guided Tour', 'seo-booster' ), 'secondary', 'reset_guided_tours' ); 912 ?> 913 <p class="description" for="reset_guided_tours"> 914 <?php 915 esc_html_e( 'Click to start the Guided Tour again.', 'seo-booster' ); 916 ?> 917 </p> 918 </td> 919 </tr> 920 <tr valign="top"> 921 <th scope="row" valign="top"> 922 <?php 923 esc_html_e( 'Account Reset', 'seo-booster' ); 924 ?> 925 </th> 926 <td> 927 <a href="<?php echo esc_url( $seobooster_fs->get_reconnect_url() ); ?>"> 928 <?php 929 esc_html_e( 'Click to Reset', 'seo-booster' ); 930 ?> 931 </a> 932 <p class="description" for="reset_account_details"> 933 <?php 934 esc_html_e( 'Click to reset and start registration process again.', 'seo-booster' ); 935 ?> 936 </p> 937 </td> 938 </tr> 939 </tbody> 940 </table> 941 </form> 942 </div> -
seo-booster/trunk/seo-booster.php
r2637115 r2644211 3 3 /** 4 4 * Plugin Name: SEO Booster 5 * Version: 3.8 5 * Version: 3.8.1 6 6 * Plugin URI: https://cleverplugins.com/ 7 7 * Description: Automatic linking + Monitor keywords from hundreds of search engines + 404 errors tracking + backlink collecting + Crosslinking widgets and template functions + much more. … … 73 73 } 74 74 75 define( 'SEOBOOSTER_VERSION', '3. 7' );75 define( 'SEOBOOSTER_VERSION', '3.8.1' ); 76 76 define( 'SEOBOOSTER_PLUGINPATH', plugin_dir_path( __FILE__ ) ); 77 77 define( 'SEOBOOSTER_PLUGINURL', plugin_dir_url( __FILE__ ) ); … … 216 216 // Choice selected by user. 217 217 // Verify nonce. 218 error_log( 'seobooster_fs_opt_in() ' . print_r( $nonce, true ) . ' ' . print_r( $choice, true ) ); 218 219 219 220 if ( empty($nonce) || !wp_verify_nonce( $nonce, 'seobooster-freemius-opt' ) ) { … … 455 456 </a> 456 457 </p> 457 <input type="hidden" id="seobooster-freemius-opt-nonce" value=" 458 <?php 458 <input type="hidden" id="seobooster-freemius-opt-nonce" value="<?php 459 459 echo esc_attr( wp_create_nonce( 'seobooster-freemius-opt' ) ) ; 460 ?> 461 " /> 462 460 ?>" /> 463 461 </div> 464 462 <?php … … 579 577 check_ajax_referer( 'add-keyword-nonce', 'add-keyword-nonce', true ); 580 578 global $wpdb ; 581 $keyword = esc_attr( $_POST['newkeyword'] ); 582 //todo sanitize ssss 583 $targeturl = esc_attr( $_POST['targeturl'] ); 584 //todo sanitize ssss 579 $keyword = sanitize_text_field( $_POST['newkeyword'] ); 580 $targeturl = sanitize_text_field( $_POST['targeturl'] ); 585 581 $keyword_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$wpdb->prefix}sb2_autolink WHERE keyword = %s", $keyword ) ); 586 582 if ( $keyword_id ) { … … 591 587 } 592 588 // Check URL is valid 593 if ( filter_var( $_POST['targeturl'], FILTER_VALIDATE_URL ) === false ) {589 if ( filter_var( sanitize_text_field( $_POST['targeturl'] ), FILTER_VALIDATE_URL ) === false ) { 594 590 wp_send_json( array( 595 'answer' => sprintf( __( 'Error - <code>%s</code> is not a valid URL.', 'seo-booster' ), esc_attr( $_POST['targeturl']) ),591 'answer' => sprintf( __( 'Error - <code>%s</code> is not a valid URL.', 'seo-booster' ), esc_attr( sanitize_text_field( $_POST['targeturl'] ) ) ), 596 592 'error' => 'malurl', 597 593 ) ); … … 601 597 if ( $keyword && $targeturl ) { 602 598 $wpdb->insert( "{$wpdb->prefix}sb2_autolink", array( 603 'keyword' => $_POST['newkeyword'],604 'url' => $_POST['targeturl'],599 'keyword' => sanitize_text_field( $_POST['newkeyword'] ), 600 'url' => sanitize_text_field( $_POST['targeturl'] ), 605 601 ), array( '%s', '%s' ) ); 606 602 $last_insert_id = $wpdb->insert_id; 607 603 608 604 if ( $last_insert_id ) { 609 $newrow = '<tr><th scope="row" class="check-column"><input type="checkbox" name="alid[]" value="' . $last_insert_id . '"></th><td class="keyword column-keyword has-row-actions column-primary" data-colname="' . __( 'Keyword', 'seo-booster' ) . '">' . $keyword . '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details', 'seo-booster' ) . '</span></button></td><td class="pointing column-pointing" data-colname=""><span class="dashicons dashicons-arrow-right-alt"></span></td><td class="url column-url" data-colname="' . __( 'Target URL', 'seo-booster' ) . '"><a href="' . $targeturl . '" target="_blank">' . $targeturl. '</a></td></tr>';605 $newrow = '<tr><th scope="row" class="check-column"><input type="checkbox" name="alid[]" value="' . esc_attr( $last_insert_id ) . '"></th><td class="keyword column-keyword has-row-actions column-primary" data-colname="' . __( 'Keyword', 'seo-booster' ) . '">' . esc_html( $keyword ) . '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details', 'seo-booster' ) . '</span></button></td><td class="pointing column-pointing" data-colname=""><span class="dashicons dashicons-arrow-right-alt"></span></td><td class="url column-url" data-colname="' . __( 'Target URL', 'seo-booster' ) . '"><a href="' . esc_url( $targeturl ) . '" target="_blank">' . esc_url( $targeturl ) . '</a></td></tr>'; 610 606 wp_send_json( array( 611 607 'newrow' => $newrow, … … 621 617 } 622 618 619 /** 620 * do_custom_meta. 621 * 622 * @author Unknown 623 * @since v0.0.1 624 * @version v1.0.0 Tuesday, November 30th, 2021. 625 * @access public static 626 * @return void 627 */ 623 628 public static function do_custom_meta() 624 629 { … … 633 638 array( __CLASS__, 'sbp_meta_callback' ), 634 639 $post_types, 635 // screen @todo get list of public post types 636 $context = 'side', 637 $priority = 'default', 638 $callback_args = null 640 'side', 641 'default', 642 null 639 643 ); 640 644 } 641 645 646 /** 647 * sbp_meta_callback. 648 * 649 * @author Unknown 650 * @since v0.0.1 651 * @version v1.0.0 Tuesday, November 30th, 2021. 652 * @access public static 653 * @param mixed $post 654 * @return void 655 */ 642 656 public static function sbp_meta_callback( $post ) 643 657 { … … 668 682 } 669 683 ?> 670 />671 <?php684 /> 685 <?php 672 686 esc_html_e( 'Change keywords on this page to links.', 'seo-booster' ); 673 687 ?> … … 686 700 <?php 687 701 echo esc_url( $autolink_url ) ; 688 ?> 689 " target="_blank">Autolink</a></small> 702 ?>" target="_blank">Autolink</a></small> 690 703 <?php 691 704 } … … 714 727 checked( $appendkeywords, 'yes' ); 715 728 } 716 ?> 717 /> 729 ?>/> 718 730 <?php 719 731 esc_html_e( 'Append the list of popular keywords to this page.', 'seo-booster' ); … … 735 747 $is_autosave = wp_is_post_autosave( $post_id ); 736 748 $is_revision = wp_is_post_revision( $post_id ); 737 $is_valid_nonce = ( isset( $_POST['sbp_nonce'] ) && wp_verify_nonce( $_POST['sbp_nonce'], basename( __FILE__ ) ) ? 'true' : 'false' );749 $is_valid_nonce = ( isset( $_POST['sbp_nonce'] ) && wp_verify_nonce( sanitize_text_field( $_POST['sbp_nonce'] ), basename( __FILE__ ) ) ? 'true' : 'false' ); 738 750 // Exits script depending on save status 739 751 if ( $is_autosave || $is_revision || !$is_valid_nonce ) { … … 768 780 } 769 781 770 // @lars - bruges stadig? kan ikke s referencer i kode?771 782 /** 772 783 * Find a word in a string 773 784 * Ref https://stackoverflow.com/questions/4366730/how-do-i-check-if-a-string-contains-a-specific-word 774 * @param string $str String to search in 775 * @param string $word Word to look for 776 * @return array 785 * 786 * @author Unknown 787 * @since v0.0.1 788 * @version v1.0.0 Tuesday, November 30th, 2021. 789 * @access public static 790 * @param mixed $str String to search in 791 * @param mixed $word Word to look for 792 * @return mixed 777 793 */ 778 794 public static function contains_word( $str, $word ) … … 787 803 } 788 804 789 // from shkspr.mobi - https://shkspr.mobi/blog/2012/09/a-utf-8-aware-substr_replace-for-use-in-app-net/ 805 /** 806 * from shkspr.mobi - https://shkspr.mobi/blog/2012/09/a-utf-8-aware-substr_replace-for-use-in-app-net/ 807 * 808 * @var public stati 809 */ 790 810 public static function utf8_substr_replace( 791 811 $original, … … 813 833 /** 814 834 * Checks a string against an array of keywords and returns any matches or false if no match. 835 * 836 * @author Unknown 837 * @since v0.0.1 838 * @version v1.0.0 Tuesday, November 30th, 2021. 839 * @access public static 840 * @param mixed $str 841 * @param array $arr 842 * @return boolean 815 843 */ 816 844 public static function array_in_string( $str, array $arr ) … … 833 861 } 834 862 863 /** 864 * do_filter_the_content. 865 * 866 * @author Unknown 867 * @since v0.0.1 868 * @version v1.0.0 Tuesday, November 30th, 2021. 869 * @access public static 870 * @param mixed $content 871 * @param boolean $forced Default: false 872 * @return mixed 873 */ 835 874 public static function do_filter_the_content( $content, $forced = false ) 836 875 { … … 1072 1111 /** 1073 1112 * Returns icon in SVG format 1074 *1075 1113 * Thanks Yoast for example code. 1076 1114 * 1077 * @param type|bool $base64 Default true - returns content base64 encoded 1078 * @return string 1115 * @author Unknown 1116 * @since v0.0.1 1117 * @version v1.0.0 Tuesday, November 30th, 2021. 1118 * @access public static 1119 * @param boolean $base64 Default: true 1120 * @return mixed 1079 1121 */ 1080 1122 public static function get_icon_svg( $base64 = true ) … … 1185 1227 } 1186 1228 1187 // Runs on action "template_redirect" - 404 1229 /** 1230 * Runs on action "template_redirect" - 404 1231 * 1232 * @author Unknown 1233 * @since v0.0.1 1234 * @version v1.0.0 Tuesday, November 30th, 2021. 1235 * @access public static 1236 * @return void 1237 */ 1188 1238 public static function template_redirect_action() 1189 1239 { 1190 1240 if ( empty($_POST) && defined( 'DOING_AJAX' ) || defined( 'DOING_CRON' ) || defined( 'XMLRPC_REQUEST' ) || defined( 'DOING_AUTOSAVE' ) || defined( 'REST_REQUEST' ) ) { 1191 // phpcs:ignore WordPress.Security.NonceVerification.Missing1192 1241 return; 1193 1242 } … … 1243 1292 1244 1293 if ( isset( $_SERVER['HTTP_REFERER'] ) ) { 1245 $parsedurl = wp_parse_url( $_SERVER['HTTP_REFERER']);1294 $parsedurl = wp_parse_url( sanitize_text_field( $_SERVER['HTTP_REFERER'] ) ); 1246 1295 $domain = $parsedurl['host']; 1247 1296 } … … 1251 1300 1252 1301 if ( isset( $_SERVER['HTTP_REFERER'] ) ) { 1253 $referer = strtolower( $_SERVER['HTTP_REFERER']);1302 $referer = strtolower( sanitize_text_field( $_SERVER['HTTP_REFERER'] ) ); 1254 1303 } else { 1255 1304 $referer = ''; … … 1374 1423 1375 1424 /** 1376 * When deleting a blog in multisite. 1425 * When deleting a blog in multisite - returns array of tables to delete 1426 * 1427 * @author Unknown 1428 * @since v0.0.1 1429 * @version v1.0.0 Tuesday, November 30th, 2021. 1430 * @access public static 1431 * @param mixed $tables 1432 * @return mixed 1377 1433 */ 1378 1434 public static function on_delete_blog( $tables ) 1379 1435 { 1380 1436 global $wpdb ; 1437 $tables = array(); 1381 1438 $tables[] = $wpdb->prefix . 'sb2_crawl'; 1382 1439 $tables[] = $wpdb->prefix . 'sb2_autolink'; … … 1393 1450 /** 1394 1451 * Turns a relative URL to absolute URL. 1452 * 1453 * @author Unknown 1454 * @since v0.0.1 1455 * @version v1.0.0 Tuesday, November 30th, 2021. 1456 * @access public static 1457 * @param mixed $rel 1458 * @param mixed $base 1459 * @return mixed 1395 1460 */ 1396 1461 public static function rel2abs( $rel, $base ) … … 1433 1498 } 1434 1499 1500 /** 1501 * plugins_loaded_register_visitor. 1502 * 1503 * @author Unknown 1504 * @since v0.0.1 1505 * @version v1.0.0 Tuesday, November 30th, 2021. 1506 * @access public static 1507 * @return void 1508 */ 1435 1509 public static function plugins_loaded_register_visitor() 1436 1510 { … … 1486 1560 } 1487 1561 1562 /** 1563 * send_email_update. 1564 * 1565 * @author Unknown 1566 * @since v0.0.1 1567 * @version v1.0.0 Tuesday, November 30th, 2021. 1568 * @access public static 1569 * @param integer $days Default: 7 1570 * @param boolean $forced Default: false 1571 * @return void 1572 */ 1488 1573 public static function send_email_update( $days = 7, $forced = false ) 1489 1574 { … … 1557 1642 ); 1558 1643 $html = file_get_contents( SEOBOOSTER_PLUGINURL . 'inc/emailtemplate-01.html' ); 1644 // @todo load via filesystem instead 1559 1645 foreach ( $my_replacements as $needle => $replacement ) { 1560 1646 $html = str_replace( $needle, $replacement, $html ); … … 1613 1699 public static function seobooster_generateignorelist( $ignorelist = '' ) 1614 1700 { 1701 global $wpdb ; 1615 1702 1616 1703 if ( !$ignorelist ) { … … 1635 1722 $ignoresearchstring .= ' OR '; 1636 1723 } 1637 $ignoresearchstring .= " (kw LIKE '%" . $tag . "%') "; 1724 $like = '%' . $wpdb->esc_like( $tag ) . '%'; 1725 $ignoresearchstring .= $wpdb->prepare( " (kw LIKE %s) ", $like ); 1638 1726 // REMOVED esc_sc.l 1639 1727 $count++; … … 1666 1754 $drawval = 1; 1667 1755 if ( isset( $_REQUEST['draw'] ) ) { 1668 $drawval = intval( $_REQUEST['draw'] );1756 $drawval = sanitize_text_field( $_REQUEST['draw'] ); 1669 1757 } 1670 1758 $a_columns = array( … … 1684 1772 1685 1773 if ( isset( $_REQUEST['length'] ) ) { 1686 $the_length = intval( $_REQUEST['length'] );1774 $the_length = sanitize_text_field( $_REQUEST['length'] ); 1687 1775 setcookie( 1688 1776 'sbp_kw_length', 1689 $the_length,1690 $expiry,1691 $path,1692 $host,1777 esc_attr( $the_length ), 1778 esc_attr( $expiry ), 1779 esc_url( $path ), 1780 esc_attr( $host ), 1693 1781 true, 1694 1782 true … … 1702 1790 'sbp_the_showkws', 1703 1791 esc_attr( $the_showkws ), 1704 $expiry,1705 $path,1706 $host,1792 esc_attr( $expiry ), 1793 esc_url( $path ), 1794 esc_attr( $host ), 1707 1795 true, 1708 1796 true … … 1716 1804 'sbp_kw_hideinternal', 1717 1805 esc_attr( $the_hideinternal ), 1718 $expiry,1719 $path,1720 $host,1806 esc_attr( $expiry ), 1807 esc_url( $path ), 1808 esc_attr( $host ), 1721 1809 true, 1722 1810 true … … 1727 1815 '', 1728 1816 time() - 3600, 1729 $path,1730 $host,1817 esc_url( $path ), 1818 esc_attr( $host ), 1731 1819 true, 1732 1820 true … … 1837 1925 $ifiltered_total = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_kw {$s_where} " ); 1838 1926 $itotal = $wpdb->get_var( "SELECT count(*) FROM {$wpdb->prefix}sb2_kw;" ); 1839 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared1840 1927 $output = array( 1841 1928 'draw' => $drawval, … … 2272 2359 ) 2273 2360 { 2361 $wp_allowed_protocols = wp_allowed_protocols(); 2274 2362 ?> 2275 2363 <script type="text/javascript"> … … 2286 2374 2287 2375 button = jQuery ('<a id="pointer-close" class="button-secondary">' + '<?php 2288 echo wp_kses( $button1 ) ;2376 echo wp_kses( $button1, $wp_allowed_protocols ) ; 2289 2377 ?>' + '</a>'); 2290 2378 button.bind ('click.pointer', function () { … … 2316 2404 2317 2405 jQuery ('#pointer-close').after ('<a id="pointer-primary" class="button-primary">' + '<?php 2318 echo $button2;2406 echo wp_kses( $button2, $wp_allowed_protocols ) ; 2319 2407 ?>' + '</a>'); 2320 2408 jQuery ('#pointer-primary').click (function () { … … 2408 2496 } 2409 2497 global $post, $wpdb ; 2410 $kwtable = $wpdb->prefix . 'sb2_kw';2411 2498 $sqlignore = self::seobooster_generateignorelist(); 2412 $query = "SELECT DISTINCT(kw) FROM {$wpdb->prefix}sb2_kw WHERE {$sqlignore} lp like '%{$currurl}' AND ig='0' AND kw<>'#' ORDER BY visits DESC LIMIT {$limit};";2499 $query = $wpdb->prepare( "SELECT DISTINCT(kw) FROM {$wpdb->prefix}sb2_kw WHERE {$sqlignore} lp like '%{$currurl}' AND ig='0' AND kw<>'#' ORDER BY visits DESC LIMIT %d;", $limit ); 2413 2500 $kws = $wpdb->get_results( $query, ARRAY_A ); 2414 2501 $kwlist = ''; … … 3913 4000 * check_page_for_url. 3914 4001 * 3915 * @author Unknown 3916 * @since v0.0.1 3917 * @version v1.0.0 Saturday, August 7th, 2021. 3918 * @access public static 3919 * @param mixed $page_url 3920 * @param mixed $check_url 3921 * @return mixed 4002 * @author Unknown 4003 * @since v0.0.1 4004 * @version v1.0.0 Saturday, August 7th, 2021. 4005 * @version v1.0.1 Tuesday, November 30th, 2021. 4006 * @access public static 4007 * @param mixed $page_url 4008 * @param mixed $check_url 4009 * @return mixed 3922 4010 */ 3923 4011 public static function check_page_for_url( $page_url, $check_url ) 3924 4012 { 3925 4013 $result = array(); 3926 // todo - make this check with WP default? 3927 $ch = curl_init( $page_url ); 3928 curl_setopt( $ch, CURLOPT_HEADER, 0 ); 3929 curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; SEO Booster/' . SEOBOOSTER_VERSION . '; +https://cleverplugins.com)' ); 3930 curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 30 ); 3931 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); 3932 $output = curl_exec( $ch ); 3933 $http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); 3934 curl_close( $ch ); 3935 $result['code'] = $http_code; 4014 $response = wp_remote_get( $page_url, array( 4015 'timeout' => 30, 4016 'user-agent' => esc_attr( 'Mozilla/5.0 (compatible; SEO Booster Bot v.' . SEOBOOSTER_VERSION . '; +https://cleverplugins.com)' ), 4017 ) ); 4018 $http_code = wp_remote_retrieve_response_code( $response ); 4019 $output = wp_remote_retrieve_body( $response ); 3936 4020 3937 4021 if ( 200 === $http_code ) { … … 3995 4079 $sqlignore = ''; 3996 4080 $sqlignore = $seobooster2->seobooster_generateignorelist(); 3997 $prepared = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}sb2_kw WHERE {$sqlignore} `lp` = %s AND kw<>'#' and kw<>'' ORDER BY visits DESC ;", $currurl);4081 $prepared = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}sb2_kw WHERE {$sqlignore} `lp` = %s AND kw<>'#' and kw<>'' ORDER BY visits DESC LIMIT %d;", $currurl, $limit ); 3998 4082 $posthits = $wpdb->get_results( $prepared, ARRAY_A ); 3999 4083 $allowed_html = wp_kses_allowed_html( 'post' ); -
seo-booster/trunk/vendor/collizo4sky/persist-admin-notices-dismissal/CHANGES.md
r2579952 r2644211 1 #### 1.4.42 * Added support for extra dismissible links via `.dismiss-this` CSS class.3 4 1 #### 1.4.3 5 * Added filter hook `pand_dismiss_notice_js_url` in case you're using this in a theme or a local environment that doesn't quite find the correct URL.6 * Added filter hook `pand_theme_loader` that returns a boolean for simpler usage of the `pand_dismiss_notice_js_url` hook2 * added filter hook `pand_dismiss_notice_js_url` in case you're using this in a theme or a local environment that doesn't quite find the correct URL. 3 * added filter hook `pand_theme_loader` that returns a boolean for simpler usage of the `pand_dismiss_notice_js_url` hook 7 4 8 5 #### 1.4.2 9 6 * No changes to `class PAnD` 10 * Updated `.gitignore` and `.gitattributes`11 * Now use classmap in composer's autoloader, should be more efficient7 * updated `.gitignore` and `.gitattributes` 8 * now use classmap in composer's autoloader, should be more efficient 12 9 13 10 #### 1.4.1 14 * Fixed the `forever` setting with options11 * fixed the `forever` setting with options 15 12 16 13 #### 1.4.0 17 14 * WPCS 1.1.0 linting done 18 * Switched from storing timeout in transients to storing in the options table, this should play much better with object caching15 * switched from storing timeout in transients to storing in the options table, this should play much better with object caching 19 16 20 17 #### 1.3.x 21 * Uses transients to store timeout18 * uses transients to store timeout -
seo-booster/trunk/vendor/collizo4sky/persist-admin-notices-dismissal/composer.json
r2579952 r2644211 2 2 "name": "collizo4sky/persist-admin-notices-dismissal", 3 3 "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard.", 4 "version": "1.4.4",5 "type": "library",6 "license": "GPL-3.0-or-later",7 4 "authors": [ 8 5 { 9 6 "name": "Collins Agbonghama", 10 "email": "[email protected]", 11 "role": "developer" 7 "email": "[email protected]" 12 8 } 13 9 ], 14 "prefer-stable": true,15 "require": {16 "php": ">=5.4"17 },18 "support": {19 "issues": "https://github.com/w3guy/persist-admin-notices-dismissal/issues",20 "source": "https://github.com/w3guy/persist-admin-notices-dismissal"21 },22 10 "autoload": { 23 11 "classmap": [ -
seo-booster/trunk/vendor/collizo4sky/persist-admin-notices-dismissal/dismiss-notice.js
r2579952 r2644211 3 3 $( 4 4 function () { 5 $( 'div[data-dismissible] button.notice-dismiss, div[data-dismissible] .dismiss-this' ). on("click",5 $( 'div[data-dismissible] button.notice-dismiss, div[data-dismissible] .dismiss-this' ).click( 6 6 function (event) { 7 7 event.preventDefault(); -
seo-booster/trunk/vendor/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php
r2579952 r2644211 4 4 * Persist Admin notices Dismissal 5 5 * 6 * Copyright (C) 2016 Collins Agbonghama <http s://w3guy.com>6 * Copyright (C) 2016 Collins Agbonghama <http://w3guy.com> 7 7 * 8 8 * This program is free software: you can redistribute it and/or modify … … 23 23 * @author Andy Fragen 24 24 * @license http://www.gnu.org/licenses GNU General Public License 25 * @version 1.4.3 25 26 */ 26 27 -
seo-booster/trunk/vendor/composer/ClassLoader.php
r2637115 r2644211 38 38 * @author Fabien Potencier <[email protected]> 39 39 * @author Jordi Boggiano <[email protected]> 40 * @see http s://www.php-fig.org/psr/psr-0/41 * @see http s://www.php-fig.org/psr/psr-4/40 * @see http://www.php-fig.org/psr/psr-0/ 41 * @see http://www.php-fig.org/psr/psr-4/ 42 42 */ 43 43 class ClassLoader 44 44 { 45 /** @var ?string */46 private $vendorDir;47 48 45 // PSR-4 49 /**50 * @var array[]51 * @psalm-var array<string, array<string, int>>52 */53 46 private $prefixLengthsPsr4 = array(); 54 /**55 * @var array[]56 * @psalm-var array<string, array<int, string>>57 */58 47 private $prefixDirsPsr4 = array(); 59 /**60 * @var array[]61 * @psalm-var array<string, string>62 */63 48 private $fallbackDirsPsr4 = array(); 64 49 65 50 // PSR-0 66 /**67 * @var array[]68 * @psalm-var array<string, array<string, string[]>>69 */70 51 private $prefixesPsr0 = array(); 71 /**72 * @var array[]73 * @psalm-var array<string, string>74 */75 52 private $fallbackDirsPsr0 = array(); 76 53 77 /** @var bool */78 54 private $useIncludePath = false; 79 80 /**81 * @var string[]82 * @psalm-var array<string, string>83 */84 55 private $classMap = array(); 85 86 /** @var bool */87 56 private $classMapAuthoritative = false; 88 89 /**90 * @var bool[]91 * @psalm-var array<string, bool>92 */93 57 private $missingClasses = array(); 94 95 /** @var ?string */96 58 private $apcuPrefix; 97 59 98 /**99 * @var self[]100 */101 private static $registeredLoaders = array();102 103 /**104 * @param ?string $vendorDir105 */106 public function __construct($vendorDir = null)107 {108 $this->vendorDir = $vendorDir;109 }110 111 /**112 * @return string[]113 */114 60 public function getPrefixes() 115 61 { … … 121 67 } 122 68 123 /**124 * @return array[]125 * @psalm-return array<string, array<int, string>>126 */127 69 public function getPrefixesPsr4() 128 70 { … … 130 72 } 131 73 132 /**133 * @return array[]134 * @psalm-return array<string, string>135 */136 74 public function getFallbackDirs() 137 75 { … … 139 77 } 140 78 141 /**142 * @return array[]143 * @psalm-return array<string, string>144 */145 79 public function getFallbackDirsPsr4() 146 80 { … … 148 82 } 149 83 150 /**151 * @return string[] Array of classname => path152 * @psalm-var array<string, string>153 */154 84 public function getClassMap() 155 85 { … … 158 88 159 89 /** 160 * @param string[] $classMap Class to filename map 161 * @psalm-param array<string, string> $classMap 162 * 163 * @return void 90 * @param array $classMap Class to filename map 164 91 */ 165 92 public function addClassMap(array $classMap) … … 176 103 * appending or prepending to the ones previously set for this prefix. 177 104 * 178 * @param string $prefix The prefix 179 * @param string[]|string $paths The PSR-0 root directories 180 * @param bool $prepend Whether to prepend the directories 181 * 182 * @return void 105 * @param string $prefix The prefix 106 * @param array|string $paths The PSR-0 root directories 107 * @param bool $prepend Whether to prepend the directories 183 108 */ 184 109 public function add($prefix, $paths, $prepend = false) … … 223 148 * appending or prepending to the ones previously set for this namespace. 224 149 * 225 * @param string $prefix The prefix/namespace, with trailing '\\'226 * @param string[]|string $paths The PSR-4 base directories227 * @param bool $prepend Whether to prepend the directories150 * @param string $prefix The prefix/namespace, with trailing '\\' 151 * @param array|string $paths The PSR-4 base directories 152 * @param bool $prepend Whether to prepend the directories 228 153 * 229 154 * @throws \InvalidArgumentException 230 *231 * @return void232 155 */ 233 156 public function addPsr4($prefix, $paths, $prepend = false) … … 273 196 * replacing any others previously set for this prefix. 274 197 * 275 * @param string $prefix The prefix 276 * @param string[]|string $paths The PSR-0 base directories 277 * 278 * @return void 198 * @param string $prefix The prefix 199 * @param array|string $paths The PSR-0 base directories 279 200 */ 280 201 public function set($prefix, $paths) … … 291 212 * replacing any others previously set for this namespace. 292 213 * 293 * @param string $prefix The prefix/namespace, with trailing '\\'294 * @param string[]|string $paths The PSR-4 base directories214 * @param string $prefix The prefix/namespace, with trailing '\\' 215 * @param array|string $paths The PSR-4 base directories 295 216 * 296 217 * @throws \InvalidArgumentException 297 *298 * @return void299 218 */ 300 219 public function setPsr4($prefix, $paths) … … 316 235 * 317 236 * @param bool $useIncludePath 318 *319 * @return void320 237 */ 321 238 public function setUseIncludePath($useIncludePath) … … 340 257 * 341 258 * @param bool $classMapAuthoritative 342 *343 * @return void344 259 */ 345 260 public function setClassMapAuthoritative($classMapAuthoritative) … … 362 277 * 363 278 * @param string|null $apcuPrefix 364 *365 * @return void366 279 */ 367 280 public function setApcuPrefix($apcuPrefix) … … 384 297 * 385 298 * @param bool $prepend Whether to prepend the autoloader or not 386 *387 * @return void388 299 */ 389 300 public function register($prepend = false) 390 301 { 391 302 spl_autoload_register(array($this, 'loadClass'), true, $prepend); 392 393 if (null === $this->vendorDir) {394 return;395 }396 397 if ($prepend) {398 self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;399 } else {400 unset(self::$registeredLoaders[$this->vendorDir]);401 self::$registeredLoaders[$this->vendorDir] = $this;402 }403 303 } 404 304 405 305 /** 406 306 * Unregisters this instance as an autoloader. 407 *408 * @return void409 307 */ 410 308 public function unregister() 411 309 { 412 310 spl_autoload_unregister(array($this, 'loadClass')); 413 414 if (null !== $this->vendorDir) {415 unset(self::$registeredLoaders[$this->vendorDir]);416 }417 311 } 418 312 … … 421 315 * 422 316 * @param string $class The name of the class 423 * @return true|null True if loaded, null otherwise317 * @return bool|null True if loaded, null otherwise 424 318 */ 425 319 public function loadClass($class) … … 430 324 return true; 431 325 } 432 433 return null;434 326 } 435 327 … … 476 368 } 477 369 478 /**479 * Returns the currently registered loaders indexed by their corresponding vendor directories.480 *481 * @return self[]482 */483 public static function getRegisteredLoaders()484 {485 return self::$registeredLoaders;486 }487 488 /**489 * @param string $class490 * @param string $ext491 * @return string|false492 */493 370 private function findFileWithExtension($class, $ext) 494 371 { … … 562 439 * 563 440 * Prevents access to $this/self from included files. 564 *565 * @param string $file566 * @return void567 * @private568 441 */ 569 442 function includeFile($file) -
seo-booster/trunk/vendor/composer/autoload_classmap.php
r2637115 r2644211 7 7 8 8 return array( 9 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',10 9 'PAnD' => $vendorDir . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php', 11 10 'TypistTech\\Imposter\\ArrayUtil' => $vendorDir . '/typisttech/imposter/src/ArrayUtil.php', -
seo-booster/trunk/vendor/composer/autoload_real.php
r2637115 r2644211 23 23 } 24 24 25 require __DIR__ . '/platform_check.php';26 27 25 spl_autoload_register(array('ComposerAutoloaderInit781db4b4892d1b7d96462ad38f838330', 'loadClassLoader'), true, true); 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader( \dirname(\dirname(__FILE__)));26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(); 29 27 spl_autoload_unregister(array('ComposerAutoloaderInit781db4b4892d1b7d96462ad38f838330', 'loadClassLoader')); 30 28 31 29 $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); 32 30 if ($useStaticLoader) { 33 require __DIR__ . '/autoload_static.php';31 require_once __DIR__ . '/autoload_static.php'; 34 32 35 33 call_user_func(\Composer\Autoload\ComposerStaticInit781db4b4892d1b7d96462ad38f838330::getInitializer($loader)); -
seo-booster/trunk/vendor/composer/autoload_static.php
r2637115 r2644211 27 27 28 28 public static $classMap = array ( 29 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',30 29 'PAnD' => __DIR__ . '/..' . '/collizo4sky/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php', 31 30 'TypistTech\\Imposter\\ArrayUtil' => __DIR__ . '/..' . '/typisttech/imposter/src/ArrayUtil.php', -
seo-booster/trunk/vendor/composer/installed.json
r2637115 r2644211 1 { 2 "packages": [ 3 { 4 "name": "collizo4sky/persist-admin-notices-dismissal", 5 "version": "1.4.4", 6 "version_normalized": "1.4.4.0", 7 "source": { 8 "type": "git", 9 "url": "https://github.com/w3guy/persist-admin-notices-dismissal.git", 10 "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4" 11 }, 12 "dist": { 13 "type": "zip", 14 "url": "https://api.github.com/repos/w3guy/persist-admin-notices-dismissal/zipball/900739eb6b0ec0210465f5983a6d4e0e420289e4", 15 "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4", 16 "shasum": "" 17 }, 18 "require": { 19 "php": ">=5.4" 20 }, 21 "time": "2020-12-31T17:12:37+00:00", 22 "type": "library", 23 "installation-source": "source", 24 "autoload": { 25 "classmap": [ 26 "persist-admin-notices-dismissal.php" 27 ] 28 }, 29 "notification-url": "https://packagist.org/downloads/", 30 "license": [ 31 "GPL-3.0-or-later" 32 ], 33 "authors": [ 34 { 35 "name": "Collins Agbonghama", 36 "email": "[email protected]", 37 "role": "developer" 38 } 39 ], 40 "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard.", 41 "install-path": "../collizo4sky/persist-admin-notices-dismissal" 42 }, 43 { 44 "name": "typisttech/imposter", 45 "version": "0.6.1", 46 "version_normalized": "0.6.1.0", 47 "source": { 48 "type": "git", 49 "url": "https://github.com/TypistTech/imposter.git", 50 "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83" 51 }, 52 "dist": { 53 "type": "zip", 54 "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83", 55 "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83", 56 "shasum": "" 57 }, 58 "require": { 59 "ext-json": "*", 60 "php": "^7.3 || ^8.0" 61 }, 62 "require-dev": { 63 "codeception/codeception": "^4.1", 64 "codeception/mockery-module": "^0.4.0", 65 "codeception/module-asserts": "^1.3", 66 "codeception/module-filesystem": "^1.0", 67 "squizlabs/php_codesniffer": "^3.5" 68 }, 69 "suggest": { 70 "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter" 71 }, 72 "time": "2020-12-06T22:57:09+00:00", 73 "type": "library", 74 "extra": { 75 "branch-alias": { 76 "dev-master": "0.6.x-dev" 77 } 78 }, 79 "installation-source": "source", 80 "autoload": { 81 "psr-4": { 82 "TypistTech\\Imposter\\": "src" 83 } 84 }, 85 "notification-url": "https://packagist.org/downloads/", 86 "license": [ 87 "MIT" 88 ], 89 "authors": [ 90 { 91 "name": "Typist Tech", 92 "email": "[email protected]", 93 "homepage": "https://typist.tech" 94 }, 95 { 96 "name": "Tang Rufus", 97 "email": "[email protected]", 98 "homepage": "https://typist.tech", 99 "role": "Developer" 100 } 101 ], 102 "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.", 103 "homepage": "https://github.com/TypistTech/imposter", 104 "keywords": [ 105 "composer", 106 "dependency", 107 "monkey-patching", 108 "namespace", 109 "wordpress" 110 ], 111 "support": { 1 [ 2 { 3 "name": "collizo4sky/persist-admin-notices-dismissal", 4 "version": "1.4.4", 5 "version_normalized": "1.4.4.0", 6 "source": { 7 "type": "git", 8 "url": "https://github.com/w3guy/persist-admin-notices-dismissal.git", 9 "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4" 10 }, 11 "dist": { 12 "type": "zip", 13 "url": "https://api.github.com/repos/w3guy/persist-admin-notices-dismissal/zipball/900739eb6b0ec0210465f5983a6d4e0e420289e4", 14 "reference": "900739eb6b0ec0210465f5983a6d4e0e420289e4", 15 "shasum": "" 16 }, 17 "require": { 18 "php": ">=5.4" 19 }, 20 "time": "2020-12-31T17:12:37+00:00", 21 "type": "library", 22 "installation-source": "source", 23 "autoload": { 24 "classmap": [ 25 "persist-admin-notices-dismissal.php" 26 ] 27 }, 28 "notification-url": "https://packagist.org/downloads/", 29 "license": [ 30 "GPL-3.0-or-later" 31 ], 32 "authors": [ 33 { 34 "name": "Collins Agbonghama", 35 "email": "[email protected]", 36 "role": "developer" 37 } 38 ], 39 "description": "Simple library to persist dismissal of admin notices across pages in WordPress dashboard." 40 }, 41 { 42 "name": "typisttech/imposter", 43 "version": "0.6.1", 44 "version_normalized": "0.6.1.0", 45 "source": { 46 "type": "git", 47 "url": "https://github.com/TypistTech/imposter.git", 48 "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83" 49 }, 50 "dist": { 51 "type": "zip", 52 "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83", 53 "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83", 54 "shasum": "" 55 }, 56 "require": { 57 "ext-json": "*", 58 "php": "^7.3 || ^8.0" 59 }, 60 "require-dev": { 61 "codeception/codeception": "^4.1", 62 "codeception/mockery-module": "^0.4.0", 63 "codeception/module-asserts": "^1.3", 64 "codeception/module-filesystem": "^1.0", 65 "squizlabs/php_codesniffer": "^3.5" 66 }, 67 "suggest": { 68 "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter" 69 }, 70 "time": "2020-12-06T22:57:09+00:00", 71 "type": "library", 72 "extra": { 73 "branch-alias": { 74 "dev-master": "0.6.x-dev" 75 } 76 }, 77 "installation-source": "source", 78 "autoload": { 79 "psr-4": { 80 "TypistTech\\Imposter\\": "src" 81 } 82 }, 83 "notification-url": "https://packagist.org/downloads/", 84 "license": [ 85 "MIT" 86 ], 87 "authors": [ 88 { 89 "name": "Typist Tech", 112 90 "email": "[email protected]", 113 "issues": "https://github.com/TypistTech/imposter/issues", 114 "source": "https://github.com/TypistTech/imposter" 115 }, 116 "funding": [ 117 { 118 "url": "https://typist.tech/donation/", 119 "type": "custom" 120 }, 121 { 122 "url": "https://www.paypal.me/iAmTangRufus/30usd", 123 "type": "custom" 124 }, 125 { 126 "url": "https://github.com/tangrufus", 127 "type": "github" 128 } 129 ], 130 "install-path": "../typisttech/imposter" 131 }, 132 { 133 "name": "typisttech/imposter-plugin", 134 "version": "0.6.2", 135 "version_normalized": "0.6.2.0", 136 "source": { 137 "type": "git", 138 "url": "https://github.com/TypistTech/imposter-plugin.git", 139 "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c" 140 }, 141 "dist": { 142 "type": "zip", 143 "url": "https://api.github.com/repos/TypistTech/imposter-plugin/zipball/15fa3c90aca3b79497f438b9e02a6176498de53c", 144 "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c", 145 "shasum": "" 146 }, 147 "require": { 148 "composer-plugin-api": "^1.1 || ^2.0", 149 "php": "^7.3 || ^8.0", 150 "typisttech/imposter": "^0.6.1" 151 }, 152 "require-dev": { 153 "codeception/codeception": "^4.1", 154 "codeception/module-asserts": "^1.3", 155 "codeception/module-cli": "^1.1", 156 "codeception/module-filesystem": "^1.0", 157 "composer/composer": "^1.10.19 || ^2.0", 158 "squizlabs/php_codesniffer": "^3.5", 159 "typisttech/codeception-composer-project-module": "^0.1.1" 160 }, 161 "time": "2020-12-06T23:41:30+00:00", 162 "type": "composer-plugin", 163 "extra": { 164 "branch-alias": { 165 "dev-master": "0.6.x-dev" 166 }, 167 "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin" 168 }, 169 "installation-source": "source", 170 "autoload": { 171 "psr-4": { 172 "TypistTech\\Imposter\\Plugin\\": "src" 173 } 174 }, 175 "notification-url": "https://packagist.org/downloads/", 176 "license": [ 177 "MIT" 178 ], 179 "authors": [ 180 { 181 "name": "Typist Tech", 182 "email": "[email protected]", 183 "homepage": "https://www.typist.tech" 184 }, 185 { 186 "name": "Tang Rufus", 187 "email": "[email protected]", 188 "homepage": "https://www.typist.tech", 189 "role": "Developer" 190 } 191 ], 192 "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.", 193 "homepage": "https://github.com/TypistTech/imposter-plugin", 194 "keywords": [ 195 "composer", 196 "composer-plugin", 197 "dependency", 198 "monkey-patching", 199 "namespace", 200 "wordpress" 201 ], 202 "support": { 91 "homepage": "https://typist.tech" 92 }, 93 { 94 "name": "Tang Rufus", 95 "email": "[email protected]", 96 "homepage": "https://typist.tech", 97 "role": "Developer" 98 } 99 ], 100 "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.", 101 "homepage": "https://github.com/TypistTech/imposter", 102 "keywords": [ 103 "composer", 104 "dependency", 105 "monkey-patching", 106 "namespace", 107 "wordpress" 108 ], 109 "support": { 110 "email": "[email protected]", 111 "issues": "https://github.com/TypistTech/imposter/issues", 112 "source": "https://github.com/TypistTech/imposter" 113 }, 114 "funding": [ 115 { 116 "url": "https://typist.tech/donation/", 117 "type": "custom" 118 }, 119 { 120 "url": "https://www.paypal.me/iAmTangRufus/30usd", 121 "type": "custom" 122 }, 123 { 124 "url": "https://github.com/tangrufus", 125 "type": "github" 126 } 127 ] 128 }, 129 { 130 "name": "typisttech/imposter-plugin", 131 "version": "0.6.2", 132 "version_normalized": "0.6.2.0", 133 "source": { 134 "type": "git", 135 "url": "https://github.com/TypistTech/imposter-plugin.git", 136 "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c" 137 }, 138 "dist": { 139 "type": "zip", 140 "url": "https://api.github.com/repos/TypistTech/imposter-plugin/zipball/15fa3c90aca3b79497f438b9e02a6176498de53c", 141 "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c", 142 "shasum": "" 143 }, 144 "require": { 145 "composer-plugin-api": "^1.1 || ^2.0", 146 "php": "^7.3 || ^8.0", 147 "typisttech/imposter": "^0.6.1" 148 }, 149 "require-dev": { 150 "codeception/codeception": "^4.1", 151 "codeception/module-asserts": "^1.3", 152 "codeception/module-cli": "^1.1", 153 "codeception/module-filesystem": "^1.0", 154 "composer/composer": "^1.10.19 || ^2.0", 155 "squizlabs/php_codesniffer": "^3.5", 156 "typisttech/codeception-composer-project-module": "^0.1.1" 157 }, 158 "time": "2020-12-06T23:41:30+00:00", 159 "type": "composer-plugin", 160 "extra": { 161 "branch-alias": { 162 "dev-master": "0.6.x-dev" 163 }, 164 "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin" 165 }, 166 "installation-source": "source", 167 "autoload": { 168 "psr-4": { 169 "TypistTech\\Imposter\\Plugin\\": "src" 170 } 171 }, 172 "notification-url": "https://packagist.org/downloads/", 173 "license": [ 174 "MIT" 175 ], 176 "authors": [ 177 { 178 "name": "Typist Tech", 203 179 "email": "[email protected]", 204 "issues": "https://github.com/TypistTech/imposter-plugin/issues", 205 "source": "https://github.com/TypistTech/imposter-plugin" 206 }, 207 "funding": [ 208 { 209 "url": "https://typist.tech/donation/", 210 "type": "custom" 211 }, 212 { 213 "url": "https://www.paypal.me/iAmTangRufus/30usd", 214 "type": "custom" 215 }, 216 { 217 "url": "https://github.com/tangrufus", 218 "type": "github" 219 } 220 ], 221 "install-path": "../typisttech/imposter-plugin" 222 } 223 ], 224 "dev": false, 225 "dev-package-names": [] 226 } 180 "homepage": "https://www.typist.tech" 181 }, 182 { 183 "name": "Tang Rufus", 184 "email": "[email protected]", 185 "homepage": "https://www.typist.tech", 186 "role": "Developer" 187 } 188 ], 189 "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.", 190 "homepage": "https://github.com/TypistTech/imposter-plugin", 191 "keywords": [ 192 "composer", 193 "composer-plugin", 194 "dependency", 195 "monkey-patching", 196 "namespace", 197 "wordpress" 198 ], 199 "support": { 200 "email": "[email protected]", 201 "issues": "https://github.com/TypistTech/imposter-plugin/issues", 202 "source": "https://github.com/TypistTech/imposter-plugin" 203 }, 204 "funding": [ 205 { 206 "url": "https://typist.tech/donation/", 207 "type": "custom" 208 }, 209 { 210 "url": "https://www.paypal.me/iAmTangRufus/30usd", 211 "type": "custom" 212 }, 213 { 214 "url": "https://github.com/tangrufus", 215 "type": "github" 216 } 217 ] 218 } 219 ] -
seo-booster/trunk/vendor/composer/installed.php
r2637115 r2644211 1 1 <?php return array( 2 2 'root' => array( 3 'pretty_version' => ' 1.0.0+no-version-set',4 'version' => ' 1.0.0.0',3 'pretty_version' => 'dev-develop', 4 'version' => 'dev-develop', 5 5 'type' => 'library', 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => NULL,8 'reference' => '2ac2f01063fccdfed5fd83740115b8d3c8765800', 9 9 'name' => '__root__', 10 'dev' => false,10 'dev' => true, 11 11 ), 12 12 'versions' => array( 13 13 '__root__' => array( 14 'pretty_version' => ' 1.0.0+no-version-set',15 'version' => ' 1.0.0.0',14 'pretty_version' => 'dev-develop', 15 'version' => 'dev-develop', 16 16 'type' => 'library', 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => NULL,19 'reference' => '2ac2f01063fccdfed5fd83740115b8d3c8765800', 20 20 'dev_requirement' => false, 21 21 ), -
seo-booster/trunk/views/404-pages.php
r2418701 r2644211 42 42 <form id="urls-filter" method="get"> 43 43 <input type="hidden" name="page" value="<?php 44 echo esc_attr( $_REQUEST['page'] );44 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); 45 45 ?>" /> 46 46 <?php … … 54 54 <form id="reset404s" method="get"> 55 55 <input type="hidden" name="page" value="<?php 56 echo esc_attr( $_REQUEST['page'] );56 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); 57 57 ?>" /> 58 58 <input type="hidden" name="action" value="deleteall" /> … … 63 63 64 64 <form id="export404s" method="get" class="profeature"> 65 <input type="hidden" name="page" value="<?php 66 echo esc_attr( $_REQUEST['page'] ) ; 67 ?>" /> 65 <input type="hidden" name="page" value="<?php echo esc_attr( sanitize_text_field( $_REQUEST['page'] ));?>" /> 68 66 <input type="hidden" name="action" value="sbp_404_export_csv" /> 69 <input type="hidden" name="_wpnonce" value="<?php 70 echo wp_create_nonce( 'sbp-nonce' ) ; 71 ?>" /> 67 <input type="hidden" name="_wpnonce" value="<?php echo esc_attr( wp_create_nonce( 'sbp-nonce' ) ); ?>" /> 72 68 <?php 73 69 submit_button( __( 'Export to .csv', 'seo-booster' ), 'secondary' ); … … 93 89 $step++; 94 90 if ( $step < $ipcount ) { 95 echo ', ' ;91 echo ', '; 96 92 } 97 93 } -
seo-booster/trunk/views/autolink-pages.php
r2418701 r2644211 59 59 60 60 if ( isset( $_POST['btn_reset_pages_autolink'] ) ) { 61 $nonce = $_REQUEST['_wpnonce'];61 $nonce = sanitize_text_field( $_REQUEST['_wpnonce'] ); 62 62 63 63 if ( !wp_verify_nonce( $nonce, 'seobooster_reset_pages_autolink' ) ) { … … 82 82 83 83 <div class="notice notice-success"><p> 84 <?php 85 echo esc_html(84 <?php 85 echo esc_html( 86 86 // translators: 87 87 sprintf( __( 'Success! Turned on automatic linking on %s posts and pages.', 'seo-booster' ), number_format_i18n( $stepcount ) ) … … 98 98 99 99 if ( isset( $_POST['focuskw_convert'] ) ) { 100 $nonce = $_REQUEST['_wpnonce'];100 $nonce = sanitize_text_field( $_REQUEST['_wpnonce'] ); 101 101 102 102 if ( !wp_verify_nonce( $nonce, 'seobooster_convert_focuskw_autolink' ) ) { 103 103 die( 'Security check' ); 104 104 } else { 105 $fokuskw_query = "SELECT {$wpdb->prefix}posts.ID as ID, {$wpdb->prefix}postmeta.meta_value as kw, {$wpdb->prefix}postmeta.meta_key as dakey FROM {$wpdb->prefix}posts, {$wpdb->prefix}postmeta WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}postmeta.post_id AND (( {$wpdb->prefix}postmeta.meta_key = '_yoast_wpseo_focuskw' ) OR ( {$wpdb->prefix}postmeta.meta_key = '_yoast_wpseo_focuskeywords' ) ) AND {$wpdb->prefix}postmeta.meta_value <> '' AND {$wpdb->prefix}postmeta.meta_value <> '[]' AND {$wpdb->prefix}posts.post_status = 'publish GROUP BY kw ' \n\t\t\tLIMIT {$lookupkwlimit};";105 $fokuskw_query = "SELECT {$wpdb->prefix}posts.ID as ID, {$wpdb->prefix}postmeta.meta_value as kw, {$wpdb->prefix}postmeta.meta_key as dakey FROM {$wpdb->prefix}posts, {$wpdb->prefix}postmeta WHERE {$wpdb->prefix}posts.ID = {$wpdb->prefix}postmeta.post_id AND (( {$wpdb->prefix}postmeta.meta_key = '_yoast_wpseo_focuskw' ) OR ( {$wpdb->prefix}postmeta.meta_key = '_yoast_wpseo_focuskeywords' ) ) AND {$wpdb->prefix}postmeta.meta_value <> '' AND {$wpdb->prefix}postmeta.meta_value <> '[]' AND {$wpdb->prefix}posts.post_status = 'publish GROUP BY kw 'LIMIT {$lookupkwlimit};"; 106 106 // TODO 107 107 $kwresults = $wpdb->get_results( $fokuskw_query ); … … 128 128 if ( is_array( $focuskeywords ) ) { 129 129 foreach ( $focuskeywords as $focuskw ) { 130 $foundid = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$wpdb->prefix}sb2_autolink WHERE `keyword` = \t%s", $focuskw->keyword ) );130 $foundid = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM {$wpdb->prefix}sb2_autolink WHERE `keyword` = %s", $focuskw->keyword ) ); 131 131 132 if ( ! $foundid ) {132 if ( ! $foundid ) { 133 133 $yoastkwlist[$stepcount]['kw'] = $focuskw->keyword; 134 134 $yoastkwlist[$stepcount]['lp'] = get_permalink( $kw->ID ); … … 228 228 <form id="urls-filter" method="get"> 229 229 <input type="hidden" name="page" value="<?php 230 echo esc_attr( $_REQUEST['page'] );230 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); 231 231 ?>" /> 232 232 <?php … … 235 235 ?> 236 236 <input type="hidden" name="order" value="<?php 237 echo esc_attr( $_REQUEST['order'] );237 echo esc_attr( sanitize_text_field( $_REQUEST['order'] ) ); 238 238 ?>" /> 239 239 <?php … … 246 246 ?> 247 247 <input type="hidden" name="orderby" value="<?php 248 echo esc_attr( $_REQUEST['orderby']) ;248 echo esc_attr( sanitize_text_field( $_REQUEST['orderby'] ) ) ; 249 249 ?>" /> 250 250 <?php … … 330 330 <div class="notices notice-info"> 331 331 <h3>Import Focus Keywords from Yoast SEO</h3> 332 <h4> 333 <?php 332 <h4><?php 334 333 // translators: 335 printf( _n( 336 '%s keyword found', 337 '%s keywords found', 338 $yoastkwlistcount, 339 'seo-booster' 340 ), intval( $yoastkwlistcount ) ); 341 ?> 342 </h4> 343 344 <p class="lead"> 334 printf( _n( '%s keyword found', '%s keywords found', $yoastkwlistcount, 'seo-booster' ), intval( $yoastkwlistcount ) ); 335 ?></h4> 336 337 <p class="lead"> 345 338 <?php 346 339 esc_html_e( 'Import Focus Keyword from Yoast SEO plugin and turn in to links on other pages.', 'seo-booster' ); -
seo-booster/trunk/views/backlink-pages.php
r2637115 r2644211 34 34 <form id="urls-filter" method="get"> 35 35 <input type="hidden" name="page" value="<?php 36 echo esc_attr( $_REQUEST['page']) ;36 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ) ; 37 37 ?>" /> 38 38 <?php … … 44 44 esc_html_e( 'Note - Backlinks you delete from this list will reappear next time someone visits again.', 'seo-booster' ); 45 45 ?></p> 46 <p><?php 47 esc_html_e( 'You can filter out specific domains in the settings.', 'seo-booster' ); 48 ?></p> 46 <p><?php esc_html_e( 'You can filter out specific domains in the settings.', 'seo-booster' ); ?></p> 49 47 </div> 50 48 </form> … … 54 52 <h3>Export Backlinks</h3> 55 53 <form id="exportbacklinks" method="get"> 56 <input type="hidden" name="page" value="<?php 57 echo esc_attr( $_REQUEST['page'] ) ; 58 ?>" /> 54 <input type="hidden" name="page" value="<?php echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); ?>" /> 59 55 <input type="hidden" name="action" value="sbp_backlinks_export_csv" /> 60 <input type="hidden" name="_wpnonce" value="<?php 61 echo esc_attr( wp_create_nonce( 'sbp-nonce' ) ) ; 62 ?>" /> 63 <?php 64 submit_button( 'Export to .csv', 'secondary' ); 65 ?> 56 <input type="hidden" name="_wpnonce" value="<?php echo esc_attr( wp_create_nonce( 'sbp-nonce' ) ); ?>" /> 57 <?php submit_button( 'Export to .csv', 'secondary' ); ?> 66 58 </form> 67 68 69 59 <div class="about__section has-2-columns"> 70 60 <div class="column"> 71 72 73 61 <h3>Top 10 most linked to pages</h3> 74 62 <p>Shows the most linked to URLs on your website.</p> … … 78 66 <tbody> 79 67 <?php 80 $bls = $wpdb->get_results( "SELECT lp, COUNT(lp) as CNT FROM `{$wpdb->prefix}sb2_bl`GROUP by lp ORDER BY `CNT` DESC LIMIT 10;" );68 $bls = $wpdb->get_results( "SELECT lp, COUNT(lp) as CNT FROM {$wpdb->prefix}sb2_bl GROUP by lp ORDER BY `CNT` DESC LIMIT 10;" ); 81 69 82 70 if ( $bls ) { 83 71 foreach ( $bls as $bl ) { 84 ?><tr><td><a href="<?php echo esc_url( site_url( $bl->lp ) ) ;?>" target="_blank" rel="noopener"><?php 85 echo esc_attr( $bl->lp ) ; 86 ?></a></td><td><?php 87 echo number_format_i18n( $bl->CNT ) ; 88 ?></td></tr> 72 ?><tr><td><a href="<?php echo esc_url( site_url( $bl->lp ) ); ?>" target="_blank" rel="noopener"><?php echo esc_attr( $bl->lp ); ?></a></td><td><?php 73 echo esc_html( number_format_i18n( $bl->CNT ) ); ?></td></tr> 89 74 <?php 90 75 } … … 136 121 </div> 137 122 </div> 138 139 140 141 142 143 144 145 123 </div> -
seo-booster/trunk/views/crawled-pages.php
r2317644 r2644211 20 20 <form id="urls-filter" method="get"> 21 21 <input type="hidden" name="page" value="<?php 22 echo esc_attr( $_REQUEST['page'] );22 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); 23 23 ?>" /> 24 24 … … 31 31 <form id="resetcrawls" method="get"> 32 32 <input type="hidden" name="page" value="<?php 33 echo esc_attr( $_REQUEST['page'] );33 echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) ); 34 34 ?>" /> 35 35 <input type="hidden" name="action" value="deleteall" /> -
seo-booster/trunk/views/forgotten-pages.php
r2317644 r2644211 30 30 <div id="wp_pointer-target"></div> 31 31 <form id="urls-filter" method="get"> 32 <input type="hidden" name="page" value="<?php 33 echo esc_attr( $_REQUEST['page'] ) ; 34 ?>" /> 35 <?php 32 <input type="hidden" name="page" value="<?php echo esc_attr( sanitize_text_field( $_REQUEST['page'] ) );?>" /> 33 <?php 36 34 $test_list_table->display(); 37 35 ?>
Note: See TracChangeset
for help on using the changeset viewer.