Merge branch 'master' into add_before_set_stock_action
This commit is contained in:
commit
49c85e9c5e
|
@ -1,17 +1,14 @@
|
|||
/** @format */
|
||||
const baseConfig = require( '@woocommerce/e2e-environment' ).esLintConfig;
|
||||
const { useE2EEsLintConfig } = require( '@woocommerce/e2e-environment' );
|
||||
|
||||
module.exports = {
|
||||
...baseConfig,
|
||||
module.exports = useE2EEsLintConfig( {
|
||||
root: true,
|
||||
env: {
|
||||
...baseConfig.env,
|
||||
browser: true,
|
||||
es6: true,
|
||||
node: true
|
||||
},
|
||||
globals: {
|
||||
...baseConfig.globals,
|
||||
wp: true,
|
||||
wpApiSettings: true,
|
||||
wcSettings: true,
|
||||
|
@ -32,4 +29,4 @@ module.exports = {
|
|||
jsx: true
|
||||
}
|
||||
},
|
||||
};
|
||||
} );
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: "\U0001F47D External issues"
|
||||
about: Please report WooCommerce REST API, WooCommerce Admin or WooCommerce Gutenberg Products Blocks issues directly to their respective repositories.
|
||||
about: Please report WooCommerce Admin, WooCommerce Gutenberg Products Blocks or Action Scheduler issues directly to their respective repositories.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
@ -9,10 +9,12 @@ assignees: ''
|
|||
|
||||
Please report issues for the following features directly to their respective repositories.
|
||||
|
||||
WooCommerce REST API: https://github.com/woocommerce/woocommerce-rest-api
|
||||
|
||||
WooCommerce Admin: https://github.com/woocommerce/woocommerce-admin
|
||||
|
||||
WooCommerce Gutenberg Products Blocks: https://github.com/woocommerce/woocommerce-gutenberg-products-block
|
||||
|
||||
Action Scheduler: https://github.com/woocommerce/action-scheduler
|
||||
|
||||
WooCommerce REST API Docs: https://github.com/woocommerce/woocommerce-rest-api-docs
|
||||
|
||||
WooCommerce Code Reference: https://github.com/woocommerce/code-reference
|
||||
|
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
id: build
|
||||
uses: woocommerce/action-build@v2
|
||||
- name: Deploy nightly build
|
||||
uses: WebFreak001/deploy-nightly@v1.0.3
|
||||
uses: WebFreak001/deploy-nightly@v1.1.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
@ -34,7 +34,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Update nightly tag
|
||||
uses: richardsimko/github-tag-action@1.0.0
|
||||
uses: richardsimko/github-tag-action@v1.0.4
|
||||
with:
|
||||
tag_name: nightly
|
||||
env:
|
||||
|
|
|
@ -45,6 +45,8 @@ tests/cli/vendor
|
|||
/tests/bin/tmp
|
||||
/tests/e2e/config/local-*.json
|
||||
/tests/e2e/config/local.json
|
||||
/tests/e2e/config/default.json
|
||||
/tests/e2e/env/config/default.json
|
||||
/tests/e2e/docker
|
||||
/tests/e2e/env/docker/wp-cli/initialize.sh
|
||||
/tests/e2e/env/build/
|
||||
|
@ -57,6 +59,7 @@ tests/cli/vendor
|
|||
|
||||
# Composer
|
||||
/vendor/
|
||||
/bin/composer/**/vendor
|
||||
contributors.md
|
||||
contributors.html
|
||||
|
||||
|
|
21
.travis.yml
21
.travis.yml
|
@ -9,7 +9,6 @@ cache:
|
|||
|
||||
# Since Xenial services are not started by default, we need to instruct it below to start.
|
||||
services:
|
||||
- xvfb
|
||||
- mysql
|
||||
- docker
|
||||
|
||||
|
@ -30,12 +29,13 @@ jobs:
|
|||
fast_finish: true
|
||||
include:
|
||||
- name: "Core E2E Tests"
|
||||
php: 7.4
|
||||
env: WP_VERSION=latest WP_MULTISITE=0 RUN_E2E=1
|
||||
install:
|
||||
- nvm install
|
||||
- npm install
|
||||
- composer install
|
||||
script:
|
||||
- npm run build:assets
|
||||
- npm run build:packages
|
||||
- npm install jest --global
|
||||
- npm run docker:up
|
||||
- npm run test:e2e
|
||||
after_script:
|
||||
|
@ -43,15 +43,12 @@ jobs:
|
|||
- name: "WP Nightly"
|
||||
php: 7.4
|
||||
env: WP_VERSION=nightly WP_MULTISITE=0
|
||||
- name: "WP Latest"
|
||||
php: 7.2
|
||||
env: WP_VERSION=5.4 WP_MULTISITE=0
|
||||
- name: "WP Latest - 1"
|
||||
php: 7.2
|
||||
env: WP_VERSION=5.3 WP_MULTISITE=0
|
||||
env: WP_VERSION=5.4 WP_MULTISITE=0
|
||||
- name: "WP Latest - 2"
|
||||
php: 7.2
|
||||
env: WP_VERSION=5.2 WP_MULTISITE=0
|
||||
env: WP_VERSION=5.3 WP_MULTISITE=0
|
||||
- name: "Code Standards"
|
||||
php: 7.4
|
||||
env: WP_VERSION=latest WP_MULTISITE=0 RUN_PHPCS=1
|
||||
|
@ -61,6 +58,7 @@ jobs:
|
|||
allow_failures:
|
||||
- php: 7.4
|
||||
env: WP_VERSION=latest WP_MULTISITE=0 RUN_CODE_COVERAGE=1
|
||||
- name: "WP Nightly"
|
||||
|
||||
install:
|
||||
- export PATH="$HOME/.composer/vendor/bin:$PATH"
|
||||
|
@ -71,16 +69,13 @@ install:
|
|||
else
|
||||
echo "xdebug.ini does not exist"
|
||||
fi
|
||||
- nvm install 10
|
||||
- npm install
|
||||
- composer install --no-dev
|
||||
- composer install
|
||||
- |
|
||||
# Install WP Test suite, install PHPUnit globally:
|
||||
if [[ ! -z "$WP_VERSION" ]]; then
|
||||
bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION
|
||||
composer global require "phpunit/phpunit=6.5.*|7.5.*"
|
||||
fi
|
||||
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16"
|
||||
|
||||
script:
|
||||
- bash tests/bin/phpunit.sh
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
# Security Policy
|
||||
|
||||
Full details of the Automattic Security Policy can be found on [automattic.com/security](https://automattic.com/security/).
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Generally, *only the latest version of WooCommerce has continued support*. If a critical vulnerability is found in the current version of WooCommerce, we may opt to backport any patches to previous versions.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
[WooCommerce](https://wordpress.org/plugins/woocommerce) is an open-source plugin for WordPress. Our HackerOne program covers the plugin software, as well as a variety of related projects and infrastructure.
|
||||
|
||||
**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report based on instructions found on [automattic.com/security](https://automattic.com/security).**
|
||||
|
||||
Our most critical targets are:
|
||||
|
||||
* WooCommerce core (this repository)
|
||||
* WooCommerce [Blocks](https://wordpress.org/plugins/woo-gutenberg-products-block/) and [Admin](https://wordpress.org/plugins/woocommerce-admin/) packages and plugins
|
||||
* WooCommerce.com -- the primary marketplace and marketing site, and all of it subdomains, e.g. [developer.woocommerce.com](https://developer.woocommerce.com/)
|
||||
* wordpress.com -- hosted WooCommerce for Business and eCommerce offering on WordPress.com.
|
||||
|
||||
For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic).
|
||||
|
||||
_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._
|
||||
|
||||
## Guidelines
|
||||
|
||||
We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines:
|
||||
|
||||
* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines).
|
||||
* Pen-testing Production:
|
||||
* Please **setup a local environment** instead whenever possible. Most of our code is open source (see above).
|
||||
* If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC.
|
||||
* **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels.
|
||||
* To be eligible for a bounty, please follow all of these guidelines.
|
||||
* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability.
|
||||
|
||||
We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties.
|
|
@ -5067,6 +5067,7 @@ img.help_tip {
|
|||
|
||||
.handlediv {
|
||||
width: 27px;
|
||||
float: right;
|
||||
|
||||
&::before {
|
||||
content: "\f142" !important;
|
||||
|
|
|
@ -255,3 +255,18 @@ ul.woocommerce_stats {
|
|||
font-family: "WooCommerce";
|
||||
content: "\e01d";
|
||||
}
|
||||
|
||||
#dashboard_activity {
|
||||
#activity-widget {
|
||||
#the-comment-list {
|
||||
.review.comment-item {
|
||||
.avatar {
|
||||
margin-right: 12px;
|
||||
position: relative;
|
||||
top: 0;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -56,6 +56,18 @@ button.pswp__button--zoom:hover {
|
|||
.pswp img {
|
||||
max-width: none; }
|
||||
|
||||
/* adjust for admin bar */
|
||||
.admin-bar .pswp {
|
||||
height: calc(100% - 32px);
|
||||
top: 32px;
|
||||
}
|
||||
@media screen and (max-width: 782px) {
|
||||
.admin-bar .pswp {
|
||||
height: calc(100% - 46px);
|
||||
top: 46px;
|
||||
}
|
||||
}
|
||||
|
||||
/* style is added when JS option showHideOpacity is set to true */
|
||||
.pswp--animate_opacity {
|
||||
/* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/* stylelint-disable no-descending-specificity */
|
||||
|
||||
/* @deprecated 4.6.0 */
|
||||
body {
|
||||
margin: 65px auto 24px;
|
||||
box-shadow: none;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*global wc_setup_params */
|
||||
/*global wc_setup_currencies */
|
||||
/*global wc_base_state */
|
||||
/* @deprecated 4.6.0 */
|
||||
jQuery( function( $ ) {
|
||||
function blockWizardUI() {
|
||||
$('.wc-setup-content').block({
|
||||
|
|
|
@ -1 +1 @@
|
|||
!function(t){t.fn.tipTip=function(e){var o={activation:"hover",keepAlive:!1,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:!1,enter:function(){},exit:function(){}},i=t.extend(o,e);if(t("#tiptip_holder").length<=0){var n=t('<div id="tiptip_holder" style="max-width:'+i.maxWidth+';"></div>'),r=t('<div id="tiptip_content"></div>'),a=t('<div id="tiptip_arrow"></div>');t("body").append(n.html(r).prepend(a.html('<div id="tiptip_arrow_inner"></div>')))}else var n=t("#tiptip_holder"),r=t("#tiptip_content"),a=t("#tiptip_arrow");return this.each(function(){function e(){i.enter.call(this),r.html(d),n.hide().removeAttr("class").css("margin","0"),a.removeAttr("style");var e=parseInt(f.offset().top),o=parseInt(f.offset().left),p=parseInt(f.outerWidth()),l=parseInt(f.outerHeight()),h=n.outerWidth(),c=n.outerHeight(),s=Math.round((p-h)/2),_=Math.round((l-c)/2),v=Math.round(o+s),m=Math.round(e+l+i.edgeOffset),g="",b="",M=Math.round(h-12)/2;"bottom"==i.defaultPosition?g="_bottom":"top"==i.defaultPosition?g="_top":"left"==i.defaultPosition?g="_left":"right"==i.defaultPosition&&(g="_right");var w=s+o<parseInt(t(window).scrollLeft()),O=h+o>parseInt(t(window).width());w&&s<0||"_right"==g&&!O||"_left"==g&&o<h+i.edgeOffset+5?(g="_right",b=Math.round(c-13)/2,M=-12,v=Math.round(o+p+i.edgeOffset),m=Math.round(e+_)):(O&&s<0||"_left"==g&&!w)&&(g="_left",b=Math.round(c-13)/2,M=Math.round(h),v=Math.round(o-(h+i.edgeOffset+5)),m=Math.round(e+_));var x=e+l+i.edgeOffset+c+8>parseInt(t(window).height()+t(window).scrollTop()),I=e+l-(i.edgeOffset+c+8)<0;x||"_bottom"==g&&x||"_top"==g&&!I?("_top"==g||"_bottom"==g?g="_top":g+="_top",b=c,m=Math.round(e-(c+5+i.edgeOffset))):(I|("_top"==g&&I)||"_bottom"==g&&!x)&&("_top"==g||"_bottom"==g?g="_bottom":g+="_bottom",b=-12,m=Math.round(e+l+i.edgeOffset)),"_right_top"==g||"_left_top"==g?m+=5:"_right_bottom"!=g&&"_left_bottom"!=g||(m-=5),"_left_top"!=g&&"_left_bottom"!=g||(v+=5),a.css({"margin-left":M+"px","margin-top":b+"px"}),n.css({"margin-left":v+"px","margin-top":m+"px"}).attr("class","tip"+g),u&&clearTimeout(u),u=setTimeout(function(){n.stop(!0,!0).fadeIn(i.fadeIn)},i.delay)}function o(){i.exit.call(this),u&&clearTimeout(u),n.fadeOut(i.fadeOut)}var f=t(this);if(i.content)d=i.content;else var d=f.attr(i.attribute);if(""!=d){i.content||f.removeAttr(i.attribute);var u=!1;"hover"==i.activation?(f.hover(function(){e()},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()})):"focus"==i.activation?f.focus(function(){e()}).blur(function(){o()}):"click"==i.activation&&(f.click(function(){return e(),!1}).hover(function(){},function(){i.keepAlive||o()}),i.keepAlive&&n.hover(function(){},function(){o()}))}})}}(jQuery);
|
||||
!function(O){O.fn.tipTip=function(t){var g,b,M,w=O.extend({activation:"hover",keepAlive:!1,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:!1,enter:function(){},exit:function(){}},t);return O("#tiptip_holder").length<=0?(g=O('<div id="tiptip_holder" style="max-width:'+w.maxWidth+';"></div>'),b=O('<div id="tiptip_content"></div>'),M=O('<div id="tiptip_arrow"></div>'),O("body").append(g.html(b).prepend(M.html('<div id="tiptip_arrow_inner"></div>')))):(g=O("#tiptip_holder"),b=O("#tiptip_content"),M=O("#tiptip_arrow")),this.each(function(){var _,v,m=O(this);function t(){w.enter.call(this),b.html(_),g.hide().removeAttr("class").css("margin","0"),M.removeAttr("style");var t=parseInt(m.offset().top),e=parseInt(m.offset().left),o=parseInt(m.outerWidth()),i=parseInt(m.outerHeight()),n=g.outerWidth(),r=g.outerHeight(),a=Math.round((o-n)/2),f=Math.round((i-r)/2),d=Math.round(e+a),u=Math.round(t+i+w.edgeOffset),p="",h="",l=Math.round(n-12)/2;"bottom"==w.defaultPosition?p="_bottom":"top"==w.defaultPosition?p="_top":"left"==w.defaultPosition?p="_left":"right"==w.defaultPosition&&(p="_right");var c=a+e<parseInt(O(window).scrollLeft()),s=n+e>parseInt(O(window).width());c&&a<0||"_right"==p&&!s||"_left"==p&&e<n+w.edgeOffset+5?(p="_right",h=Math.round(r-13)/2,l=-12,d=Math.round(e+o+w.edgeOffset),u=Math.round(t+f)):(s&&a<0||"_left"==p&&!c)&&(p="_left",h=Math.round(r-13)/2,l=Math.round(n),d=Math.round(e-(n+w.edgeOffset+5)),u=Math.round(t+f));n=t+i+w.edgeOffset+r+8>parseInt(O(window).height()+O(window).scrollTop()),f=t+i-(w.edgeOffset+r+8)<0;n||"_bottom"==p&&n||"_top"==p&&!f?("_top"==p||"_bottom"==p?p="_top":p+="_top",h=r,u=Math.round(t-(r+5+w.edgeOffset))):(f|("_top"==p&&f)||"_bottom"==p&&!n)&&("_top"==p||"_bottom"==p?p="_bottom":p+="_bottom",h=-12,u=Math.round(t+i+w.edgeOffset)),"_right_top"==p||"_left_top"==p?u+=5:"_right_bottom"!=p&&"_left_bottom"!=p||(u-=5),"_left_top"!=p&&"_left_bottom"!=p||(d+=5),M.css({"margin-left":l+"px","margin-top":h+"px"}),g.css({"margin-left":d+"px","margin-top":u+"px"}).attr("class","tip"+p),v&&clearTimeout(v),v=setTimeout(function(){g.stop(!0,!0).fadeIn(w.fadeIn)},w.delay)}function e(){w.exit.call(this),v&&clearTimeout(v),g.fadeOut(w.fadeOut)}""!=(_=w.content?w.content:m.attr(w.attribute))&&(w.content||m.removeAttr(w.attribute),v=!1,"hover"==w.activation?(m.hover(function(){t()},function(){w.keepAlive&&g.is(":hover")||e()}),w.keepAlive&&g.hover(function(){},function(){e()})):"focus"==w.activation?m.focus(function(){t()}).blur(function(){e()}):"click"==w.activation&&(m.click(function(){return t(),!1}).hover(function(){},function(){w.keepAlive||e()}),w.keepAlive&&g.hover(function(){},function(){e()})))})}}(jQuery);
|
|
@ -1,4 +1,4 @@
|
|||
const e2eBabelConfig = require( '@woocommerce/e2e-environment' ).babelConfig;
|
||||
const { e2eBabelConfig } = require( '@woocommerce/e2e-environment' );
|
||||
|
||||
module.exports = function( api ) {
|
||||
api.cache( true );
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"require-dev": {
|
||||
"woocommerce/woocommerce-sniffs": "^0.1.0"
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.1"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,385 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "ee5c0c106a076ca3b426771807c3ffeb",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "dealerdirect/phpcodesniffer-composer-installer",
|
||||
"version": "v0.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
|
||||
"reference": "e8d808670b8f882188368faaf1144448c169c0b7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e8d808670b8f882188368faaf1144448c169c0b7",
|
||||
"reference": "e8d808670b8f882188368faaf1144448c169c0b7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^1.0 || ^2.0",
|
||||
"php": ">=5.3",
|
||||
"squizlabs/php_codesniffer": "^2 || ^3 || 4.0.x-dev"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "*",
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"sensiolabs/security-checker": "^4.1.0"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
"class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Franck Nijhof",
|
||||
"email": "franck.nijhof@dealerdirect.com",
|
||||
"homepage": "http://www.frenck.nl",
|
||||
"role": "Developer / IT Manager"
|
||||
}
|
||||
],
|
||||
"description": "PHP_CodeSniffer Standards Composer Installer Plugin",
|
||||
"homepage": "http://www.dealerdirect.com",
|
||||
"keywords": [
|
||||
"PHPCodeSniffer",
|
||||
"PHP_CodeSniffer",
|
||||
"code quality",
|
||||
"codesniffer",
|
||||
"composer",
|
||||
"installer",
|
||||
"phpcs",
|
||||
"plugin",
|
||||
"qa",
|
||||
"quality",
|
||||
"standard",
|
||||
"standards",
|
||||
"style guide",
|
||||
"stylecheck",
|
||||
"tests"
|
||||
],
|
||||
"time": "2020-06-25T14:57:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpcompatibility/php-compatibility",
|
||||
"version": "9.3.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
|
||||
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
|
||||
"reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3",
|
||||
"squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
|
||||
},
|
||||
"conflict": {
|
||||
"squizlabs/php_codesniffer": "2.6.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"suggest": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
|
||||
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
||||
},
|
||||
"type": "phpcodesniffer-standard",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Wim Godden",
|
||||
"homepage": "https://github.com/wimg",
|
||||
"role": "lead"
|
||||
},
|
||||
{
|
||||
"name": "Juliette Reinders Folmer",
|
||||
"homepage": "https://github.com/jrfnl",
|
||||
"role": "lead"
|
||||
},
|
||||
{
|
||||
"name": "Contributors",
|
||||
"homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
|
||||
}
|
||||
],
|
||||
"description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
|
||||
"homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"phpcs",
|
||||
"standards"
|
||||
],
|
||||
"time": "2019-12-27T09:44:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpcompatibility/phpcompatibility-paragonie",
|
||||
"version": "1.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
|
||||
"reference": "b862bc32f7e860d0b164b199bd995e690b4b191c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c",
|
||||
"reference": "b862bc32f7e860d0b164b199bd995e690b4b191c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"phpcompatibility/php-compatibility": "^9.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5",
|
||||
"paragonie/random_compat": "dev-master",
|
||||
"paragonie/sodium_compat": "dev-master"
|
||||
},
|
||||
"suggest": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
|
||||
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
||||
},
|
||||
"type": "phpcodesniffer-standard",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Wim Godden",
|
||||
"role": "lead"
|
||||
},
|
||||
{
|
||||
"name": "Juliette Reinders Folmer",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
|
||||
"homepage": "http://phpcompatibility.com/",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"paragonie",
|
||||
"phpcs",
|
||||
"polyfill",
|
||||
"standards"
|
||||
],
|
||||
"time": "2019-11-04T15:17:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpcompatibility/phpcompatibility-wp",
|
||||
"version": "2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
|
||||
"reference": "41bef18ba688af638b7310666db28e1ea9158b2f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f",
|
||||
"reference": "41bef18ba688af638b7310666db28e1ea9158b2f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"phpcompatibility/phpcompatibility-paragonie": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5"
|
||||
},
|
||||
"suggest": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
|
||||
"roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
|
||||
},
|
||||
"type": "phpcodesniffer-standard",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Wim Godden",
|
||||
"role": "lead"
|
||||
},
|
||||
{
|
||||
"name": "Juliette Reinders Folmer",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
|
||||
"homepage": "http://phpcompatibility.com/",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"phpcs",
|
||||
"standards",
|
||||
"wordpress"
|
||||
],
|
||||
"time": "2019-08-28T14:22:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "squizlabs/php_codesniffer",
|
||||
"version": "3.5.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
||||
"reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
|
||||
"reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-simplexml": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/phpcs",
|
||||
"bin/phpcbf"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Greg Sherwood",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
|
||||
"homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
|
||||
"keywords": [
|
||||
"phpcs",
|
||||
"standards"
|
||||
],
|
||||
"time": "2020-08-10T04:50:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "woocommerce/woocommerce-sniffs",
|
||||
"version": "0.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/woocommerce/woocommerce-sniffs.git",
|
||||
"reference": "b72b7dd2e70aa6aed16f80cdae5b1e6cce2e4c79"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/woocommerce/woocommerce-sniffs/zipball/b72b7dd2e70aa6aed16f80cdae5b1e6cce2e4c79",
|
||||
"reference": "b72b7dd2e70aa6aed16f80cdae5b1e6cce2e4c79",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "0.7.0",
|
||||
"php": ">=7.0",
|
||||
"phpcompatibility/phpcompatibility-wp": "2.1.0",
|
||||
"wp-coding-standards/wpcs": "2.3.0"
|
||||
},
|
||||
"type": "phpcodesniffer-standard",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Claudio Sanches",
|
||||
"email": "claudio@automattic.com"
|
||||
}
|
||||
],
|
||||
"description": "WooCommerce sniffs",
|
||||
"keywords": [
|
||||
"phpcs",
|
||||
"standards",
|
||||
"woocommerce",
|
||||
"wordpress"
|
||||
],
|
||||
"time": "2020-08-06T18:23:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wp-coding-standards/wpcs",
|
||||
"version": "2.3.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
|
||||
"reference": "7da1894633f168fe244afc6de00d141f27517b62"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
|
||||
"reference": "7da1894633f168fe244afc6de00d141f27517b62",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4",
|
||||
"squizlabs/php_codesniffer": "^3.3.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"phpcsstandards/phpcsdevtools": "^1.0",
|
||||
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
||||
},
|
||||
"suggest": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
|
||||
},
|
||||
"type": "phpcodesniffer-standard",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Contributors",
|
||||
"homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
|
||||
}
|
||||
],
|
||||
"description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
|
||||
"keywords": [
|
||||
"phpcs",
|
||||
"standards",
|
||||
"wordpress"
|
||||
],
|
||||
"time": "2020-05-13T23:57:56+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
"php": "7.1"
|
||||
},
|
||||
"plugin-api-version": "1.1.0"
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "7.5.20"
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.1"
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true,
|
||||
"require-dev": {
|
||||
"wp-cli/i18n-command": "^2.2"
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "7.1"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,565 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "f89bceee93cc1d38e71a45e4cbf4f4aa",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "gettext/gettext",
|
||||
"version": "v4.8.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-gettext/Gettext.git",
|
||||
"reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-gettext/Gettext/zipball/e474f872f2c8636cf53fd283ec4ce1218f3d236a",
|
||||
"reference": "e474f872f2c8636cf53fd283ec4ce1218f3d236a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"gettext/languages": "^2.3",
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"illuminate/view": "*",
|
||||
"phpunit/phpunit": "^4.8|^5.7|^6.5",
|
||||
"squizlabs/php_codesniffer": "^3.0",
|
||||
"symfony/yaml": "~2",
|
||||
"twig/extensions": "*",
|
||||
"twig/twig": "^1.31|^2.0"
|
||||
},
|
||||
"suggest": {
|
||||
"illuminate/view": "Is necessary if you want to use the Blade extractor",
|
||||
"symfony/yaml": "Is necessary if you want to use the Yaml extractor/generator",
|
||||
"twig/extensions": "Is necessary if you want to use the Twig extractor",
|
||||
"twig/twig": "Is necessary if you want to use the Twig extractor"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gettext\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Oscar Otero",
|
||||
"email": "oom@oscarotero.com",
|
||||
"homepage": "http://oscarotero.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP gettext manager",
|
||||
"homepage": "https://github.com/oscarotero/Gettext",
|
||||
"keywords": [
|
||||
"JS",
|
||||
"gettext",
|
||||
"i18n",
|
||||
"mo",
|
||||
"po",
|
||||
"translation"
|
||||
],
|
||||
"time": "2019-12-02T10:21:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "gettext/languages",
|
||||
"version": "2.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-gettext/Languages.git",
|
||||
"reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-gettext/Languages/zipball/38ea0482f649e0802e475f0ed19fa993bcb7a618",
|
||||
"reference": "38ea0482f649e0802e475f0ed19fa993bcb7a618",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.16.0",
|
||||
"phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5 || ^8.4"
|
||||
},
|
||||
"bin": [
|
||||
"bin/export-plural-rules"
|
||||
],
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gettext\\Languages\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michele Locati",
|
||||
"email": "mlocati@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "gettext languages with plural rules",
|
||||
"homepage": "https://github.com/php-gettext/Languages",
|
||||
"keywords": [
|
||||
"cldr",
|
||||
"i18n",
|
||||
"internationalization",
|
||||
"l10n",
|
||||
"language",
|
||||
"languages",
|
||||
"localization",
|
||||
"php",
|
||||
"plural",
|
||||
"plural rules",
|
||||
"plurals",
|
||||
"translate",
|
||||
"translations",
|
||||
"unicode"
|
||||
],
|
||||
"time": "2019-11-13T10:30:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mck89/peast",
|
||||
"version": "v1.11.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mck89/peast.git",
|
||||
"reference": "2a2bc6826114c46ff0bc1359208b7083a17f7a99"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/mck89/peast/zipball/2a2bc6826114c46ff0bc1359208b7083a17f7a99",
|
||||
"reference": "2a2bc6826114c46ff0bc1359208b7083a17f7a99",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.11.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Peast\\": "lib/Peast/",
|
||||
"Peast\\test\\": "test/Peast/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Marco Marchiò",
|
||||
"email": "marco.mm89@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Peast is PHP library that generates AST for JavaScript code",
|
||||
"time": "2020-10-09T15:12:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mustache/mustache",
|
||||
"version": "v2.13.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bobthecow/mustache.php.git",
|
||||
"reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4",
|
||||
"reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.2.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "~1.11",
|
||||
"phpunit/phpunit": "~3.7|~4.0|~5.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Mustache": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Justin Hileman",
|
||||
"email": "justin@justinhileman.info",
|
||||
"homepage": "http://justinhileman.com"
|
||||
}
|
||||
],
|
||||
"description": "A Mustache implementation in PHP.",
|
||||
"homepage": "https://github.com/bobthecow/mustache.php",
|
||||
"keywords": [
|
||||
"mustache",
|
||||
"templating"
|
||||
],
|
||||
"time": "2019-11-23T21:40:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rmccue/requests",
|
||||
"version": "v1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rmccue/Requests.git",
|
||||
"reference": "87932f52ffad70504d93f04f15690cf16a089546"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546",
|
||||
"reference": "87932f52ffad70504d93f04f15690cf16a089546",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"requests/test-server": "dev-master"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Requests": "library/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"ISC"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ryan McCue",
|
||||
"homepage": "http://ryanmccue.info"
|
||||
}
|
||||
],
|
||||
"description": "A HTTP library written in PHP, for human beings.",
|
||||
"homepage": "http://github.com/rmccue/Requests",
|
||||
"keywords": [
|
||||
"curl",
|
||||
"fsockopen",
|
||||
"http",
|
||||
"idna",
|
||||
"ipv6",
|
||||
"iri",
|
||||
"sockets"
|
||||
],
|
||||
"time": "2016-10-13T00:11:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v3.4.45",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "52140652ed31cee3dabd0c481b5577201fa769b4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/52140652ed31cee3dabd0c481b5577201fa769b4",
|
||||
"reference": "52140652ed31cee3dabd0c481b5577201fa769b4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5.9|>=7.0.8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.4-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Finder\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-09-02T16:06:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wp-cli/i18n-command",
|
||||
"version": "v2.2.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/wp-cli/i18n-command.git",
|
||||
"reference": "b02ecdc9a57f9633740c254d19749118b7411f0f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/wp-cli/i18n-command/zipball/b02ecdc9a57f9633740c254d19749118b7411f0f",
|
||||
"reference": "b02ecdc9a57f9633740c254d19749118b7411f0f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"gettext/gettext": "^4.8",
|
||||
"mck89/peast": "^1.8",
|
||||
"wp-cli/wp-cli": "^2"
|
||||
},
|
||||
"require-dev": {
|
||||
"wp-cli/scaffold-command": "^1.2 || ^2",
|
||||
"wp-cli/wp-cli-tests": "^2.1.3"
|
||||
},
|
||||
"type": "wp-cli-package",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.x-dev"
|
||||
},
|
||||
"bundled": true,
|
||||
"commands": [
|
||||
"i18n",
|
||||
"i18n make-pot",
|
||||
"i18n make-json"
|
||||
]
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"WP_CLI\\I18n\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"i18n-command.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Pascal Birchler",
|
||||
"homepage": "https://pascalbirchler.com/"
|
||||
}
|
||||
],
|
||||
"description": "Provides internationalization tools for WordPress projects.",
|
||||
"homepage": "https://github.com/wp-cli/i18n-command",
|
||||
"time": "2020-07-08T15:20:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wp-cli/mustangostang-spyc",
|
||||
"version": "0.6.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/wp-cli/spyc.git",
|
||||
"reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
|
||||
"reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.3.*@dev"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Mustangostang\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"includes/functions.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "mustangostang",
|
||||
"email": "vlad.andersen@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)",
|
||||
"homepage": "https://github.com/mustangostang/spyc/",
|
||||
"time": "2017-04-25T11:26:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wp-cli/php-cli-tools",
|
||||
"version": "v0.11.11",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/wp-cli/php-cli-tools.git",
|
||||
"reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f",
|
||||
"reference": "fe9c7c44a9e1bf2196ec51dc38da0593dbf2993f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">= 5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"cli": "lib/"
|
||||
},
|
||||
"files": [
|
||||
"lib/cli/cli.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "James Logsdon",
|
||||
"email": "jlogsdon@php.net",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Bachhuber",
|
||||
"email": "daniel@handbuilt.co",
|
||||
"role": "Maintainer"
|
||||
}
|
||||
],
|
||||
"description": "Console utilities for PHP",
|
||||
"homepage": "http://github.com/wp-cli/php-cli-tools",
|
||||
"keywords": [
|
||||
"cli",
|
||||
"console"
|
||||
],
|
||||
"time": "2018-09-04T13:28:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "wp-cli/wp-cli",
|
||||
"version": "v2.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/wp-cli/wp-cli.git",
|
||||
"reference": "ceb18598e79befa9b2a37a51efbb34910628988b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/ceb18598e79befa9b2a37a51efbb34910628988b",
|
||||
"reference": "ceb18598e79befa9b2a37a51efbb34910628988b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"mustache/mustache": "~2.13",
|
||||
"php": "^5.4 || ^7.0",
|
||||
"rmccue/requests": "~1.6",
|
||||
"symfony/finder": ">2.7",
|
||||
"wp-cli/mustangostang-spyc": "^0.6.3",
|
||||
"wp-cli/php-cli-tools": "~0.11.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"roave/security-advisories": "dev-master",
|
||||
"wp-cli/db-command": "^1.3 || ^2",
|
||||
"wp-cli/entity-command": "^1.2 || ^2",
|
||||
"wp-cli/extension-command": "^1.1 || ^2",
|
||||
"wp-cli/package-command": "^1 || ^2",
|
||||
"wp-cli/wp-cli-tests": "^2.1"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-readline": "Include for a better --prompt implementation",
|
||||
"ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates"
|
||||
},
|
||||
"bin": [
|
||||
"bin/wp",
|
||||
"bin/wp.bat"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.4.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"WP_CLI": "php"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "WP-CLI framework",
|
||||
"homepage": "https://wp-cli.org",
|
||||
"keywords": [
|
||||
"cli",
|
||||
"wordpress"
|
||||
],
|
||||
"time": "2020-02-18T08:15:37+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"platform-overrides": {
|
||||
"php": "7.1"
|
||||
},
|
||||
"plugin-api-version": "1.1.0"
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
read -p 'What date (YYYY-MM-DD) should we get contributions since? (i.e. date of previous release): ' from_date
|
||||
read -sp 'Provide a personal access token (you must): ' auth_token
|
||||
|
||||
ignored_users="renovate-bot,apps/renovate,renovate,renovate[bot]"
|
||||
ignored_users="renovate-bot,apps/renovate,renovate,renovate[bot],github-actions[bot]"
|
||||
output_file="contributors.html"
|
||||
common_arguments="--owner woocommerce --fromDate $from_date --authToken $auth_token --cols 6 --sortBy contributions --format html --sortOrder desc --showlogin true --filter $ignored_users"
|
||||
|
||||
|
@ -25,8 +25,4 @@ echo "<h2>Action Scheduler</h2>" >> $output_file
|
|||
echo "Generating contributor list for Action Scheduler since $from_date"
|
||||
./node_modules/.bin/githubcontrib --repo action-scheduler $common_arguments >> $output_file
|
||||
|
||||
echo "<h2>REST API</h2>" >> $output_file
|
||||
echo "Generating contributor list for REST API since $from_date"
|
||||
./node_modules/.bin/githubcontrib --repo woocommerce-rest-api $common_arguments >> $output_file
|
||||
|
||||
echo "Output generated to $output_file."
|
||||
|
|
|
@ -3,7 +3,10 @@
|
|||
changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
|
||||
|
||||
runOnChange() {
|
||||
echo "$changedFiles" | grep -q "$1" && eval "$2"
|
||||
if echo "$changedFiles" | grep -q "$1"
|
||||
then
|
||||
eval "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
runOnChange "package-lock.json" "npm install"
|
||||
|
|
|
@ -4,8 +4,8 @@ PROTECTED_BRANCH="master"
|
|||
REMOTE_REF=$(echo "$HUSKY_GIT_STDIN" | cut -d " " -f 3)
|
||||
|
||||
if [ -n "$REMOTE_REF" ]; then
|
||||
if [ "refs/heads/${PROTECTED_BRANCH}" == "$REMOTE_REF" ]; then
|
||||
if [ "$TERM" == "dumb" ]; then
|
||||
if [ "refs/heads/${PROTECTED_BRANCH}" = "$REMOTE_REF" ]; then
|
||||
if [ "$TERM" = "dumb" ]; then
|
||||
>&2 echo "Sorry, you are unable to push to master using a GUI client! Please use git CLI."
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Output colorized strings
|
||||
#
|
||||
# Color codes:
|
||||
# 0 - black
|
||||
# 1 - red
|
||||
# 2 - green
|
||||
# 3 - yellow
|
||||
# 4 - blue
|
||||
# 5 - magenta
|
||||
# 6 - cian
|
||||
# 7 - white
|
||||
output() {
|
||||
echo "$(tput setaf "$1")$2$(tput sgr0)"
|
||||
}
|
||||
|
||||
output 6 "Prefixing the appropriate vendor namespaces with Automattic\WooCommerce\Vendor"
|
||||
|
||||
# Replace "League\Container" in "use" and "namespace" with "Automattic\WooCommerce\Vendor\League\Container".
|
||||
REGEX='s/^[[:space:]]*(use|namespace)[[:space:]]*(League\\Container)/\1 Automattic\\WooCommerce\\Vendor\\\2/g'
|
||||
|
||||
find ./vendor/league/container -iname '*.php' -exec sed -i'.bak' -E -e "$REGEX" {} \;
|
||||
find ./vendor/league/container -name "*.php.bak" -type f -delete
|
||||
|
||||
# Replace too in the composer.json file for the package.
|
||||
sed -i'.bak' -E -e "s/\"(League\\\\\\\Container)/\"Automattic\\\\\\\WooCommerce\\\\\\\Vendor\\\\\\\\\1/g" vendor/league/container/composer.json
|
||||
rm -f vendor/league/container/composer.json.bak
|
||||
|
126
changelog.txt
126
changelog.txt
|
@ -1,5 +1,128 @@
|
|||
== Changelog ==
|
||||
|
||||
= 4.6.1 - 2020-10-21 =
|
||||
|
||||
**WooCommerce**
|
||||
|
||||
* Update woocommerce-admin to 1.6.2. #28006
|
||||
|
||||
**WooCommerce Admin - 1.6.2**
|
||||
|
||||
* Fix for missing activity panels. #5400
|
||||
* Adds array casting on onboarding profile option. #5415
|
||||
* Gutenberg compatibility fix for home screen inbox. #5416
|
||||
* Gutenberg compat fix for empty reports (leaderboard, customers report). #5409
|
||||
* i18n fix for Performance Indicators labels Home Screen. #5405
|
||||
|
||||
= 4.6.0 - 2020-10-14 =
|
||||
|
||||
**WooCommerce**
|
||||
|
||||
* Tweak - Removed the "Features" settings page now that the WooCommerce Admin dashboard is enabled by default. #27047
|
||||
* Tweak - Deprecate old setup wizard. #26853
|
||||
* Tweak - Add WC pages when the plugin is activated now that the old setup wizard was deprecated. #26853
|
||||
* Fix - When adding a grouped product to the cart, quantity is passed through the `woocommerce_stock_amount` filter like it's done for simple and variable products. #27219
|
||||
* Fix - Several style improvements to notices in theme Twenty Twenty. #27387
|
||||
* Fix - Fixed countries list sorting and added support to PHP internationalization functions. #27416
|
||||
* Fix - Remove "There are no notes yet" after adding the first one by AJAX. #27449
|
||||
* Fix - Fix PHP docblock summary to properly reflect the role of `wc_get_coupon_id_by_code` function. #27453
|
||||
* Fix - Fix white space character in add-to-cart script. #27459
|
||||
* Fix - Adding missing css property to email templates to ensure header background color is less likely to be overridden by email client. #27525
|
||||
* Fix - Encapsulate scope of `c` variable to avoid polluting the global scope and potentially causing problems if other plugins use the same variable name. #27610
|
||||
* Fix - Fix bug when using tax classes with some non-ASCII characters. #27615
|
||||
* Fix - Paypal gateway: protect code against a fatal error if WooCommerce is unable to communicate with PayPal. #27616
|
||||
* Fix - Added WP environment type to tracker. #27685
|
||||
* Fix - Prevent fatal errors when trying to determine what is the product type taxonomy term. #27441
|
||||
* Fix - Typo in the error message shown in the customizer. #27008
|
||||
* Dev - Introduced `woocommerce_return_to_shop_text` filter. #25419
|
||||
* Dev - Introduced `woocommerce_cart_item_required_stock_is_not_enough` filter. #26196
|
||||
* Dev - Changed relative `include` paths to absolute `include` paths using `__DIR__`. #27433
|
||||
* Dev - Fixed duplicated use of `woocommerce_add_$notice_type`. #27437
|
||||
* Dev - Allow public access to core capabilities for other plugins. #26976
|
||||
* Dev - Add `woocommerce_should_send_no_stock_notification` filter. #27634
|
||||
* Dev - New action 'woocommerce_after_order_details' added in a order-details.php template. #26327
|
||||
* Dev - Fix and improve documentation of wc_string_to_bool and wc_bool_to_string. #27662
|
||||
* Localization - Remove duplicated entry for Cyprus when listing countries by continent. #27636
|
||||
* Localization - Add Egypt regions. #27495
|
||||
* Localization - Updated name for the Hungarian county called Csongrád-Csanád. #27075
|
||||
* Localization - Adding states for Benin country. #27217
|
||||
* Localization - Add KR locale info. #27496
|
||||
* Localization - Fixed the name of the Spain state of `Biscay`. #27548
|
||||
|
||||
**WooCommerce Admin - 1.6.1**
|
||||
|
||||
- Dev: Reviews wp.data store #4941
|
||||
- Dev: Notes wp.data store #4943
|
||||
- Dev: Add woocommerce_analytics_update_order_stats_data filter #4934
|
||||
- Dev: Remove unused lib/date #4987
|
||||
- Dev: Exports wp.data store #4958
|
||||
- Dev: Remove _experimentalResolveSelect usage #4949
|
||||
- Dev: Items wp.data store #5009
|
||||
- Dev: Import wp.data store #4982
|
||||
- Dev: Remove `fresh-data` wc-api dependency #5075
|
||||
- Dev: Add initial e2e test suite #5028
|
||||
- Dev: Combine translation chunks when languages updated #5094
|
||||
- Dev: Add filters for columns in reports #5134
|
||||
- Dev: Don't include "min" suffix in build JS files for core build #5130
|
||||
- Dev: Store Profiler - Industry step: reduced padding and removed industry #5157
|
||||
- Dev: Remove product settings video note #5213
|
||||
- Enhancement: Add free local shipping zone on profile complete #4857
|
||||
- Enhancement: Add woocommerce/tracks pacakage #5107
|
||||
- Enhancement: Add filter to allow modification of report columns #4984
|
||||
- Enhancement: Add WooCommerce Mobile Banner #5037
|
||||
- Enhancement: Add Product Attribute advanced filter #5038
|
||||
- Enhancement: Add support for advanced filters with multiple instances #5050
|
||||
- Enhancement: Automated taxes smart default #5076
|
||||
- Enhancement: Add product attribute filter to Orders report #5068
|
||||
- Tweak: Remove payment task actions #4917
|
||||
- Tweak: Don't import from React, use @wordpress/element #4978
|
||||
- Tweak: Use filtered headers array in onColumnsChange callback #4964
|
||||
- Tweak: Orders panel get selectors form wc-api #4997
|
||||
- Tweak: Group tasks by completion in setup checklist #5001
|
||||
- Tweak: Replace useFilters with WP withFilters #4962
|
||||
- Tweak: Refactor header component to function #5023
|
||||
- Tweak: Refactor task list status to onboarding data store #4998
|
||||
- Tweak: Add monthly pricing toggle in OBW #5015
|
||||
- Tweak: OBW style updates #5059
|
||||
- Tweak: Remove chevron icons from Fish Setup task list #5114
|
||||
- Tweak: Add option to not charge sales tax in setup checklist #5111
|
||||
- Tweak: Enable homescreen for all sites #5108
|
||||
- Tweak: Enable remote inbox in all envs #5160
|
||||
- Tweak: Add opt-out for remote inbox #5162
|
||||
- Fix: Table componenbt onQueryChange default prop #4959
|
||||
- Fix: Dependency declarations in woocommerce/components #4972
|
||||
- Fix: Text domains in stock report #4980
|
||||
- Fix: Typo in reports store action creators #4992
|
||||
- Fix: Note data actions and consolidate query constants #4990
|
||||
- Fix: Advanced filters screen reader text #5032
|
||||
- Fix: Show full variation name in products report #5056
|
||||
- Fix: Card to connect to woocommerce.com #5129
|
||||
- Fix: Search all variation attribute values #5141
|
||||
- Fix: Force float before addition in taxes #5149
|
||||
- Fix: Enlarged store profiler text in two steps #5194
|
||||
- Fix: Bug where sometimes the task list would not vanish after being completed #5205
|
||||
|
||||
**WooCommerce Blocks - 3.2.0, 3.3.0 and 3.4.0**
|
||||
|
||||
- Fix an undefined variable PHP notice related to Product REST API. [#2962](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/2962)
|
||||
- Fixed an issue that was making some blocks not to render correctly in the Empty cart template. [#2904](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/2904)
|
||||
- Fixes a styling issue in the Product Search block in the editor. [#3014](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3014)
|
||||
- Improved focus styles of error states on form elements. [#2974](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/2974)
|
||||
- Deprecate wc.wcSettings.setSetting function. [#3010](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3010)
|
||||
- Improve behaviour of draft order cleanup to account for clobbered custom shop order status. [#2912](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/2912)
|
||||
- Fixed styling options of the Product Title block (in All Products). [3095](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3095)
|
||||
- Fix product reviews schema date fields to use new (WP 5.5) `date-time` format. ([3109](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3109))
|
||||
- Use wp_login_url instead of hardcoding login path. ([3090](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3090))
|
||||
- Create DebouncedValidatedTextInput component. ([3108](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3108))
|
||||
- Merge ProductPrice atomic block and component. ([3065](https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3065))
|
||||
|
||||
= 4.5.2 - 2020-09-14 =
|
||||
* Fix - Revert the changes in filtering by attribute that were introduced in WooCommerce 4.4. #27625
|
||||
* Fix - Adjusted validation to allow for variations with "0" as an attribute value. #27633
|
||||
|
||||
= 4.5.1 - 2020-09-09 =
|
||||
* Fix - Check for state and postcode fields only if required in `show_shipping`. #27628
|
||||
|
||||
= 4.5.0 - 2020-09-08 =
|
||||
|
||||
**WooCommerce**
|
||||
|
@ -22,6 +145,8 @@
|
|||
* Fix - Switch to site locale before translating refund reason. #27323
|
||||
* Fix - Declare `WC_Post_Types::updated_term_messages` as a static method to remove PHP deprecation warning. #27436
|
||||
* Fix - Allow HTML to be entered in product title for formatting purposes. #27465
|
||||
* Fix - Filter by attribute widget not working properly for variations having attribute values of "Any...". #27508
|
||||
* Fix - Fixed the layout of the variations and attributes sections in the product page in the admin when running WP >= 5.5. #27590
|
||||
* Dev - Added additional stock-based cart filters including `woocommerce_cart_product_cannot_add_another_message`, `woocommerce_cart_product_out_of_stock_message`, and `woocommerce_cart_product_not_enough_stock_message`. #26439
|
||||
* Dev - Changed text domain to `woocommerce` for REST API files. #27248
|
||||
* Dev - Added file path to the `woocommerce_file_download_method` filter. #27152
|
||||
|
@ -30,6 +155,7 @@
|
|||
**WooCommerce Admin 1.5.0**
|
||||
* Enhancement - Add eWAY to Payment Setup for AU/NZ Stores. #4947
|
||||
* Fix - Use clipRule and fillRule props. #4889, part of #4864
|
||||
* Fix - Admin order page shipping label prompt compatibility with WCS 1.24. #5025
|
||||
* Dev - New notification: Don't forget to test your checkout. #4805
|
||||
* Dev - Enable tax calculation before redirecting to standard tax rates page. #4878
|
||||
* Dev - Added event recording to Orders, Stock, and Reviews panels. #4861
|
||||
|
|
|
@ -9,19 +9,18 @@
|
|||
"require": {
|
||||
"php": ">=7.0",
|
||||
"automattic/jetpack-autoloader": "2.2.0",
|
||||
"automattic/jetpack-constants": "1.4.0",
|
||||
"automattic/jetpack-constants": "1.5.0",
|
||||
"composer/installers": "1.7.0",
|
||||
"maxmind-db/reader": "1.6.0",
|
||||
"pelago/emogrifier": "3.1.0",
|
||||
"psr/container": "^1.0",
|
||||
"psr/container": "1.0.0",
|
||||
"woocommerce/action-scheduler": "3.1.6",
|
||||
"woocommerce/woocommerce-admin": "1.5.0-rc.2",
|
||||
"woocommerce/woocommerce-blocks": "3.1.0"
|
||||
"woocommerce/woocommerce-admin": "1.6.2",
|
||||
"woocommerce/woocommerce-blocks": "3.6.0",
|
||||
"league/container": "3.3.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "7.5.20",
|
||||
"woocommerce/woocommerce-sniffs": "^0.1.0",
|
||||
"wp-cli/i18n-command": "^2.2"
|
||||
"bamarni/composer-bin-plugin": "^1.4"
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
|
@ -43,7 +42,8 @@
|
|||
"includes/rest-api"
|
||||
],
|
||||
"psr-4": {
|
||||
"Automattic\\WooCommerce\\": "src/"
|
||||
"Automattic\\WooCommerce\\": "src/",
|
||||
"Automattic\\WooCommerce\\Vendor\\League\\Container\\": "vendor/league/container/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
|
@ -57,9 +57,13 @@
|
|||
},
|
||||
"scripts": {
|
||||
"post-install-cmd": [
|
||||
"@composer bin all install --ansi",
|
||||
"sh ./bin/prefix-vendor-namespaces.sh",
|
||||
"sh ./bin/package-update.sh"
|
||||
],
|
||||
"post-update-cmd": [
|
||||
"@composer bin all update --ansi",
|
||||
"sh ./bin/prefix-vendor-namespaces.sh",
|
||||
"sh ./bin/package-update.sh"
|
||||
],
|
||||
"test": [
|
||||
|
@ -79,6 +83,9 @@
|
|||
],
|
||||
"makepot": [
|
||||
"@makepot-audit --skip-audit"
|
||||
],
|
||||
"bin": [
|
||||
"echo 'bin not installed'"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
|
@ -94,6 +101,9 @@
|
|||
"phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier",
|
||||
"makepot-audit": "Generate i18n/languages/woocommerce.pot file and run audit",
|
||||
"makepot": "Generate i18n/languages/woocommerce.pot file"
|
||||
},
|
||||
"bamarni-bin": {
|
||||
"target-directory": "bin/composer"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,14 +0,0 @@
|
|||
version: '3.3'
|
||||
|
||||
services:
|
||||
|
||||
wordpress-www:
|
||||
volumes:
|
||||
# This path is relative to the first config file
|
||||
# which is in tests/e2e/env or node_modules/@woocommerce/e2e-environment
|
||||
- "../../../:/var/www/html/wp-content/plugins/woocommerce"
|
||||
|
||||
wordpress-cli:
|
||||
volumes:
|
||||
- "../../../:/var/www/html/wp-content/plugins/woocommerce"
|
||||
|
|
@ -154,7 +154,6 @@ return array(
|
|||
'BG',
|
||||
'BY',
|
||||
'CH',
|
||||
'CY',
|
||||
'CZ',
|
||||
'DE',
|
||||
'DK',
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
* Countries
|
||||
*
|
||||
* Returns an array of countries and codes.
|
||||
* Country codes and names should follow the Unicode CLDR recommendation (http://cldr.unicode.org/translation/country-names).
|
||||
* Country codes and names should follow the Unicode CLDR recommendation (http://cldr.unicode.org/translation/displaynames/country-names).
|
||||
*
|
||||
* See https://github.com/unicode-org/cldr/blob/master/common/subdivisions/en.xml
|
||||
*
|
||||
* @package WooCommerce\i18n
|
||||
* @version 3.8.0
|
||||
|
|
|
@ -162,6 +162,24 @@ return array(
|
|||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'KE' => array(
|
||||
'currency_code' => 'KES',
|
||||
'currency_pos' => 'left',
|
||||
'thousand_sep' => ',',
|
||||
'decimal_sep' => '.',
|
||||
'num_decimals' => 0,
|
||||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'KR' => array(
|
||||
'currency_code' => 'KRW',
|
||||
'currency_pos' => 'right',
|
||||
'thousand_sep' => ',',
|
||||
'decimal_sep' => '.',
|
||||
'num_decimals' => 0,
|
||||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'LI' => array(
|
||||
'currency_code' => 'CHF',
|
||||
'currency_pos' => 'left_space',
|
||||
|
@ -262,6 +280,24 @@ return array(
|
|||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'TZ' => array(
|
||||
'currency_code' => 'TZS',
|
||||
'currency_pos' => 'left',
|
||||
'thousand_sep' => ',',
|
||||
'decimal_sep' => '.',
|
||||
'num_decimals' => 0,
|
||||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'UG' => array(
|
||||
'currency_code' => 'UGX',
|
||||
'currency_pos' => 'left',
|
||||
'thousand_sep' => ',',
|
||||
'decimal_sep' => '.',
|
||||
'num_decimals' => 0,
|
||||
'weight_unit' => 'kg',
|
||||
'dimension_unit' => 'cm',
|
||||
),
|
||||
'US' => array(
|
||||
'currency_code' => 'USD',
|
||||
'currency_pos' => 'left',
|
||||
|
|
|
@ -172,6 +172,20 @@ return array(
|
|||
),
|
||||
'BH' => array(),
|
||||
'BI' => array(),
|
||||
'BJ' => array( // Benin states.
|
||||
'AL' => __( 'Alibori', 'woocommerce' ),
|
||||
'AK' => __( 'Atakora', 'woocommerce' ),
|
||||
'AQ' => __( 'Atlantique', 'woocommerce' ),
|
||||
'BO' => __( 'Borgou', 'woocommerce' ),
|
||||
'CO' => __( 'Collines', 'woocommerce' ),
|
||||
'KO' => __( 'Kouffo', 'woocommerce' ),
|
||||
'DO' => __( 'Donga', 'woocommerce' ),
|
||||
'LI' => __( 'Littoral', 'woocommerce' ),
|
||||
'MO' => __( 'Mono', 'woocommerce' ),
|
||||
'OU' => __( 'Ouémé', 'woocommerce' ),
|
||||
'PL' => __( 'Plateau', 'woocommerce' ),
|
||||
'ZO' => __( 'Zou', 'woocommerce' ),
|
||||
),
|
||||
'BO' => array( // Bolivian states.
|
||||
'B' => __( 'Chuquisaca', 'woocommerce' ),
|
||||
'H' => __( 'Beni', 'woocommerce' ),
|
||||
|
@ -343,6 +357,35 @@ return array(
|
|||
'DZ-48' => __( 'Relizane', 'woocommerce' ),
|
||||
),
|
||||
'EE' => array(),
|
||||
'EG' => array( // Egypt states.
|
||||
'EGALX' => __( 'Alexandria', 'woocommerce' ),
|
||||
'EGASN' => __( 'Aswan', 'woocommerce' ),
|
||||
'EGAST' => __( 'Asyut', 'woocommerce' ),
|
||||
'EGBA' => __( 'Red Sea', 'woocommerce' ),
|
||||
'EGBH' => __( 'Beheira', 'woocommerce' ),
|
||||
'EGBNS' => __( 'Beni Suef', 'woocommerce' ),
|
||||
'EGC' => __( 'Cairo', 'woocommerce' ),
|
||||
'EGDK' => __( 'Dakahlia', 'woocommerce' ),
|
||||
'EGDT' => __( 'Damietta', 'woocommerce' ),
|
||||
'EGFYM' => __( 'Faiyum', 'woocommerce' ),
|
||||
'EGGH' => __( 'Gharbia', 'woocommerce' ),
|
||||
'EGGZ' => __( 'Giza', 'woocommerce' ),
|
||||
'EGIS' => __( 'Ismailia', 'woocommerce' ),
|
||||
'EGJS' => __( 'South Sinai', 'woocommerce' ),
|
||||
'EGKB' => __( 'Qalyubia', 'woocommerce' ),
|
||||
'EGKFS' => __( 'Kafr el-Sheikh', 'woocommerce' ),
|
||||
'EGKN' => __( 'Qena', 'woocommerce' ),
|
||||
'EGLX' => __( 'Luxor', 'woocommerce' ),
|
||||
'EGMN' => __( 'Minya', 'woocommerce' ),
|
||||
'EGMNF' => __( 'Monufia', 'woocommerce' ),
|
||||
'EGMT' => __( 'Matrouh', 'woocommerce' ),
|
||||
'EGPTS' => __( 'Port Said', 'woocommerce' ),
|
||||
'EGSHG' => __( 'Sohag', 'woocommerce' ),
|
||||
'EGSHR' => __( 'Al Sharqia', 'woocommerce' ),
|
||||
'EGSIN' => __( 'North Sinai', 'woocommerce' ),
|
||||
'EGSUZ' => __( 'Suez', 'woocommerce' ),
|
||||
'EGWAD' => __( 'New Valley', 'woocommerce' ),
|
||||
),
|
||||
'ES' => array( // Spanish states.
|
||||
'C' => __( 'A Coruña', 'woocommerce' ),
|
||||
'VI' => __( 'Araba/Álava', 'woocommerce' ),
|
||||
|
@ -393,7 +436,7 @@ return array(
|
|||
'TO' => __( 'Toledo', 'woocommerce' ),
|
||||
'V' => __( 'Valencia', 'woocommerce' ),
|
||||
'VA' => __( 'Valladolid', 'woocommerce' ),
|
||||
'BI' => __( 'Bizkaia', 'woocommerce' ),
|
||||
'BI' => __( 'Biscay', 'woocommerce' ),
|
||||
'ZA' => __( 'Zamora', 'woocommerce' ),
|
||||
'Z' => __( 'Zaragoza', 'woocommerce' ),
|
||||
),
|
||||
|
@ -446,7 +489,7 @@ return array(
|
|||
'BA' => __( 'Baranya', 'woocommerce' ),
|
||||
'BZ' => __( 'Borsod-Abaúj-Zemplén', 'woocommerce' ),
|
||||
'BU' => __( 'Budapest', 'woocommerce' ),
|
||||
'CS' => __( 'Csongrád', 'woocommerce' ),
|
||||
'CS' => __( 'Csongrád-Csanád', 'woocommerce' ),
|
||||
'FE' => __( 'Fejér', 'woocommerce' ),
|
||||
'GS' => __( 'Győr-Moson-Sopron', 'woocommerce' ),
|
||||
'HB' => __( 'Hajdú-Bihar', 'woocommerce' ),
|
||||
|
@ -1442,6 +1485,40 @@ return array(
|
|||
'TZ30' => __( 'Simiyu', 'woocommerce' ),
|
||||
),
|
||||
'LK' => array(),
|
||||
'RS' => array( // Serbia districts. Ref: https://github.com/unicode-org/cldr/blob/release-37/common/subdivisions/en.xml#L4251-L4283
|
||||
'RS00' => _x( 'Belgrade', 'district', 'woocommerce' ),
|
||||
'RS14' => _x( 'Bor', 'district', 'woocommerce' ),
|
||||
'RS11' => _x( 'Braničevo', 'district', 'woocommerce' ),
|
||||
'RS02' => _x( 'Central Banat', 'district', 'woocommerce' ),
|
||||
'RS10' => _x( 'Danube', 'district', 'woocommerce' ),
|
||||
'RS23' => _x( 'Jablanica', 'district', 'woocommerce' ),
|
||||
'RS09' => _x( 'Kolubara', 'district', 'woocommerce' ),
|
||||
'RS08' => _x( 'Mačva', 'district', 'woocommerce' ),
|
||||
'RS17' => _x( 'Morava', 'district', 'woocommerce' ),
|
||||
'RS20' => _x( 'Nišava', 'district', 'woocommerce' ),
|
||||
'RS01' => _x( 'North Bačka', 'district', 'woocommerce' ),
|
||||
'RS03' => _x( 'North Banat', 'district', 'woocommerce' ),
|
||||
'RS24' => _x( 'Pčinja', 'district', 'woocommerce' ),
|
||||
'RS22' => _x( 'Pirot', 'district', 'woocommerce' ),
|
||||
'RS13' => _x( 'Pomoravlje', 'district', 'woocommerce' ),
|
||||
'RS19' => _x( 'Rasina', 'district', 'woocommerce' ),
|
||||
'RS18' => _x( 'Raška', 'district', 'woocommerce' ),
|
||||
'RS06' => _x( 'South Bačka', 'district', 'woocommerce' ),
|
||||
'RS04' => _x( 'South Banat', 'district', 'woocommerce' ),
|
||||
'RS07' => _x( 'Srem', 'district', 'woocommerce' ),
|
||||
'RS12' => _x( 'Šumadija', 'district', 'woocommerce' ),
|
||||
'RS21' => _x( 'Toplica', 'district', 'woocommerce' ),
|
||||
'RS05' => _x( 'West Bačka', 'district', 'woocommerce' ),
|
||||
'RS15' => _x( 'Zaječar', 'district', 'woocommerce' ),
|
||||
'RS16' => _x( 'Zlatibor', 'district', 'woocommerce' ),
|
||||
'RS25' => _x( 'Kosovo', 'district', 'woocommerce' ),
|
||||
'RS26' => _x( 'Peć', 'district', 'woocommerce' ),
|
||||
'RS27' => _x( 'Prizren', 'district', 'woocommerce' ),
|
||||
'RS28' => _x( 'Kosovska Mitrovica', 'district', 'woocommerce' ),
|
||||
'RS29' => _x( 'Kosovo-Pomoravlje', 'district', 'woocommerce' ),
|
||||
'RSKM' => _x( 'Kosovo-Metohija', 'district', 'woocommerce' ),
|
||||
'RSVO' => _x( 'Vojvodina', 'district', 'woocommerce' ),
|
||||
),
|
||||
'SE' => array(),
|
||||
'UG' => array( // Uganda districts. Ref: https://en.wikipedia.org/wiki/ISO_3166-2:UG.
|
||||
'UG314' => __( 'Abim', 'woocommerce' ),
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
* @package WooCommerce\Classes
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
require_once WC_ABSPATH . 'includes/legacy/abstract-wc-legacy-order.php';
|
||||
|
@ -428,7 +430,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
} else {
|
||||
$total_discount = $this->get_discount_total() + $this->get_discount_tax();
|
||||
}
|
||||
return apply_filters( 'woocommerce_order_get_total_discount', round( $total_discount, WC_ROUNDING_PRECISION ), $this );
|
||||
return apply_filters( 'woocommerce_order_get_total_discount', NumberUtil::round( $total_discount, WC_ROUNDING_PRECISION ), $this );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -437,7 +439,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
* @return float
|
||||
*/
|
||||
public function get_subtotal() {
|
||||
$subtotal = round( $this->get_cart_subtotal_for_order(), wc_get_price_decimals() );
|
||||
$subtotal = NumberUtil::round( $this->get_cart_subtotal_for_order(), wc_get_price_decimals() );
|
||||
return apply_filters( 'woocommerce_order_get_subtotal', (float) $subtotal, $this );
|
||||
}
|
||||
|
||||
|
@ -672,7 +674,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
*/
|
||||
protected function set_total_tax( $value ) {
|
||||
// We round here because this is a total entry, as opposed to line items in other setters.
|
||||
$this->set_prop( 'total_tax', wc_format_decimal( round( $value, wc_get_price_decimals() ) ) );
|
||||
$this->set_prop( 'total_tax', wc_format_decimal( NumberUtil::round( $value, wc_get_price_decimals() ) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1677,7 +1679,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
|
||||
// Sum shipping costs.
|
||||
foreach ( $this->get_shipping_methods() as $shipping ) {
|
||||
$shipping_total += round( $shipping->get_total(), wc_get_price_decimals() );
|
||||
$shipping_total += NumberUtil::round( $shipping->get_total(), wc_get_price_decimals() );
|
||||
}
|
||||
|
||||
$this->set_shipping_total( $shipping_total );
|
||||
|
@ -1687,7 +1689,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
$fee_total = $item->get_total();
|
||||
|
||||
if ( 0 > $fee_total ) {
|
||||
$max_discount = round( $cart_total + $fees_total + $shipping_total, wc_get_price_decimals() ) * -1;
|
||||
$max_discount = NumberUtil::round( $cart_total + $fees_total + $shipping_total, wc_get_price_decimals() ) * -1;
|
||||
|
||||
if ( $fee_total < $max_discount && 0 > $max_discount ) {
|
||||
$item->set_total( $max_discount );
|
||||
|
@ -1714,9 +1716,9 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
}
|
||||
}
|
||||
|
||||
$this->set_discount_total( round( $cart_subtotal - $cart_total, wc_get_price_decimals() ) );
|
||||
$this->set_discount_total( NumberUtil::round( $cart_subtotal - $cart_total, wc_get_price_decimals() ) );
|
||||
$this->set_discount_tax( wc_round_tax_total( $cart_subtotal_tax - $cart_total_tax ) );
|
||||
$this->set_total( round( $cart_total + $fees_total + $this->get_shipping_total() + $this->get_cart_tax() + $this->get_shipping_tax(), wc_get_price_decimals() ) );
|
||||
$this->set_total( NumberUtil::round( $cart_total + $fees_total + $this->get_shipping_total() + $this->get_cart_tax() + $this->get_shipping_tax(), wc_get_price_decimals() ) );
|
||||
|
||||
do_action( 'woocommerce_order_after_calculate_totals', $and_taxes, $this );
|
||||
|
||||
|
@ -1767,7 +1769,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
$subtotal = $item->get_subtotal();
|
||||
}
|
||||
|
||||
$subtotal = $round ? round( $subtotal, wc_get_price_decimals() ) : $subtotal;
|
||||
$subtotal = $round ? NumberUtil::round( $subtotal, wc_get_price_decimals() ) : $subtotal;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_order_amount_line_subtotal', $subtotal, $this, $item, $inc_tax, $round );
|
||||
|
@ -1791,7 +1793,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
$total = floatval( $item->get_total() ) / $item->get_quantity();
|
||||
}
|
||||
|
||||
$total = $round ? round( $total, wc_get_price_decimals() ) : $total;
|
||||
$total = $round ? NumberUtil::round( $total, wc_get_price_decimals() ) : $total;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_order_amount_item_total', $total, $this, $item, $inc_tax, $round );
|
||||
|
@ -1813,7 +1815,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order {
|
|||
$total = $inc_tax ? $item->get_total() + $item->get_total_tax() : $item->get_total();
|
||||
|
||||
// Check if we need to round.
|
||||
$total = $round ? round( $total, wc_get_price_decimals() ) : $total;
|
||||
$total = $round ? NumberUtil::round( $total, wc_get_price_decimals() ) : $total;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_order_amount_line_total', $total, $this, $item, $inc_tax, $round );
|
||||
|
|
|
@ -71,18 +71,6 @@ class WC_Admin_Help {
|
|||
)
|
||||
);
|
||||
|
||||
$screen->add_help_tab(
|
||||
array(
|
||||
'id' => 'woocommerce_onboard_tab',
|
||||
'title' => __( 'Setup wizard', 'woocommerce' ),
|
||||
'content' =>
|
||||
'<h2>' . __( 'Setup wizard', 'woocommerce' ) . '</h2>' .
|
||||
'<p>' . __( 'If you need to access the setup wizard again, please click on the button below.', 'woocommerce' ) . '</p>' .
|
||||
'<p><a href="' . admin_url( 'index.php?page=wc-setup' ) . '" class="button button-primary">' . __( 'Setup wizard', 'woocommerce' ) . '</a></p>',
|
||||
|
||||
)
|
||||
);
|
||||
|
||||
$screen->set_help_sidebar(
|
||||
'<p><strong>' . __( 'For more information:', 'woocommerce' ) . '</strong></p>' .
|
||||
'<p><a href="https://woocommerce.com/?utm_source=helptab&utm_medium=product&utm_content=about&utm_campaign=woocommerceplugin" target="_blank">' . __( 'About WooCommerce', 'woocommerce' ) . '</a></p>' .
|
||||
|
|
|
@ -28,7 +28,6 @@ class WC_Admin_Notices {
|
|||
* @var array
|
||||
*/
|
||||
private static $core_notices = array(
|
||||
'install' => 'install_notice',
|
||||
'update' => 'update_notice',
|
||||
'template_files' => 'template_file_check_notice',
|
||||
'legacy_shipping' => 'legacy_shipping_notice',
|
||||
|
@ -253,16 +252,17 @@ class WC_Admin_Notices {
|
|||
include dirname( __FILE__ ) . '/views/html-notice-update.php';
|
||||
}
|
||||
} else {
|
||||
WC_Install::update_db_version();
|
||||
include dirname( __FILE__ ) . '/views/html-notice-updated.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If we have just installed, show a message with the install pages button.
|
||||
*
|
||||
* @deprecated 4.6.0
|
||||
*/
|
||||
public static function install_notice() {
|
||||
include dirname( __FILE__ ) . '/views/html-notice-install.php';
|
||||
_deprecated_function( __CLASS__ . '::' . __FUNCTION__, '4.6.0', __( 'Onboarding is maintained in WooCommerce Admin.', 'woocommerce' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
use Automattic\Jetpack\Constants;
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
|
@ -28,10 +29,10 @@ class WC_Admin_Post_Types {
|
|||
* Constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-meta-boxes.php';
|
||||
include_once __DIR__ . '/class-wc-admin-meta-boxes.php';
|
||||
|
||||
if ( ! function_exists( 'duplicate_post_plugin_activation' ) ) {
|
||||
include_once 'class-wc-admin-duplicate-product.php';
|
||||
include_once __DIR__ . '/class-wc-admin-duplicate-product.php';
|
||||
}
|
||||
|
||||
// Load correct list table classes for current screen.
|
||||
|
@ -94,15 +95,15 @@ class WC_Admin_Post_Types {
|
|||
|
||||
switch ( $screen_id ) {
|
||||
case 'edit-shop_order':
|
||||
include_once 'list-tables/class-wc-admin-list-table-orders.php';
|
||||
include_once __DIR__ . '/list-tables/class-wc-admin-list-table-orders.php';
|
||||
$wc_list_table = new WC_Admin_List_Table_Orders();
|
||||
break;
|
||||
case 'edit-shop_coupon':
|
||||
include_once 'list-tables/class-wc-admin-list-table-coupons.php';
|
||||
include_once __DIR__ . '/list-tables/class-wc-admin-list-table-coupons.php';
|
||||
$wc_list_table = new WC_Admin_List_Table_Coupons();
|
||||
break;
|
||||
case 'edit-product':
|
||||
include_once 'list-tables/class-wc-admin-list-table-products.php';
|
||||
include_once __DIR__ . '/list-tables/class-wc-admin-list-table-products.php';
|
||||
$wc_list_table = new WC_Admin_List_Table_Products();
|
||||
break;
|
||||
}
|
||||
|
@ -137,8 +138,8 @@ class WC_Admin_Post_Types {
|
|||
9 => sprintf(
|
||||
/* translators: 1: date 2: product url */
|
||||
__( 'Product scheduled for: %1$s. <a target="_blank" href="%2$s">Preview product</a>', 'woocommerce' ),
|
||||
'<strong>' . date_i18n( __( 'M j, Y @ G:i', 'woocommerce' ), strtotime( $post->post_date ) ),
|
||||
esc_url( get_permalink( $post->ID ) ) . '</strong>'
|
||||
'<strong>' . date_i18n( __( 'M j, Y @ G:i', 'woocommerce' ), strtotime( $post->post_date ) ) . '</strong>',
|
||||
esc_url( get_permalink( $post->ID ) )
|
||||
),
|
||||
/* translators: %s: product url */
|
||||
10 => sprintf( __( 'Product draft updated. <a target="_blank" href="%s">Preview product</a>', 'woocommerce' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ),
|
||||
|
@ -956,7 +957,7 @@ class WC_Admin_Post_Types {
|
|||
$regular_price = $product->get_regular_price();
|
||||
if ( $is_percentage ) {
|
||||
$percent = $price / 100;
|
||||
$new_price = max( 0, $regular_price - ( round( $regular_price * $percent, wc_get_price_decimals() ) ) );
|
||||
$new_price = max( 0, $regular_price - ( NumberUtil::round( $regular_price * $percent, wc_get_price_decimals() ) ) );
|
||||
} else {
|
||||
$new_price = max( 0, $regular_price - $price );
|
||||
}
|
||||
|
@ -968,7 +969,7 @@ class WC_Admin_Post_Types {
|
|||
|
||||
if ( isset( $new_price ) && $new_price !== $old_price ) {
|
||||
$price_changed = true;
|
||||
$new_price = round( $new_price, wc_get_price_decimals() );
|
||||
$new_price = NumberUtil::round( $new_price, wc_get_price_decimals() );
|
||||
$product->{"set_{$price_type}_price"}( $new_price );
|
||||
}
|
||||
|
||||
|
|
|
@ -49,15 +49,15 @@ if ( ! class_exists( 'WC_Admin_Settings', false ) ) :
|
|||
|
||||
include_once dirname( __FILE__ ) . '/settings/class-wc-settings-page.php';
|
||||
|
||||
$settings[] = include 'settings/class-wc-settings-general.php';
|
||||
$settings[] = include 'settings/class-wc-settings-products.php';
|
||||
$settings[] = include 'settings/class-wc-settings-tax.php';
|
||||
$settings[] = include 'settings/class-wc-settings-shipping.php';
|
||||
$settings[] = include 'settings/class-wc-settings-payment-gateways.php';
|
||||
$settings[] = include 'settings/class-wc-settings-accounts.php';
|
||||
$settings[] = include 'settings/class-wc-settings-emails.php';
|
||||
$settings[] = include 'settings/class-wc-settings-integrations.php';
|
||||
$settings[] = include 'settings/class-wc-settings-advanced.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-general.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-products.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-tax.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-shipping.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-payment-gateways.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-accounts.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-emails.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-integrations.php';
|
||||
$settings[] = include __DIR__ . '/settings/class-wc-settings-advanced.php';
|
||||
|
||||
self::$settings = apply_filters( 'woocommerce_get_settings_pages', $settings );
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -19,14 +19,14 @@ class WC_Admin_Status {
|
|||
* Handles output of the reports page in admin.
|
||||
*/
|
||||
public static function output() {
|
||||
include_once dirname( __FILE__ ) . '/views/html-admin-page-status.php';
|
||||
include_once __DIR__ . '/views/html-admin-page-status.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles output of report.
|
||||
*/
|
||||
public static function status_report() {
|
||||
include_once dirname( __FILE__ ) . '/views/html-admin-page-status-report.php';
|
||||
include_once __DIR__ . '/views/html-admin-page-status-report.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -80,7 +80,7 @@ class WC_Admin_Status {
|
|||
echo '<div class="updated inline"><p>' . esc_html__( 'Your changes have been saved.', 'woocommerce' ) . '</p></div>';
|
||||
}
|
||||
|
||||
include_once dirname( __FILE__ ) . '/views/html-admin-page-status-tools.php';
|
||||
include_once __DIR__ . '/views/html-admin-page-status-tools.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,7 +124,7 @@ class WC_Admin_Status {
|
|||
self::remove_log();
|
||||
}
|
||||
|
||||
include_once 'views/html-admin-page-status-logs.php';
|
||||
include_once __DIR__ . '/views/html-admin-page-status-logs.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -142,7 +142,7 @@ class WC_Admin_Status {
|
|||
$log_table_list = new WC_Admin_Log_Table_List();
|
||||
$log_table_list->prepare_items();
|
||||
|
||||
include_once 'views/html-admin-page-status-logs-db.php';
|
||||
include_once __DIR__ . '/views/html-admin-page-status-logs-db.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -387,7 +387,7 @@ class WC_Admin_Taxonomies {
|
|||
* @param object $term Term object.
|
||||
* @return array
|
||||
*/
|
||||
public function product_cat_row_actions( $actions = array(), $term ) {
|
||||
public function product_cat_row_actions( $actions, $term ) {
|
||||
$default_category_id = absint( get_option( 'default_product_cat', 0 ) );
|
||||
|
||||
if ( $default_category_id !== $term->term_id && current_user_can( 'edit_term', $term->term_id ) ) {
|
||||
|
|
|
@ -208,7 +208,7 @@ class WC_Admin_Webhooks {
|
|||
$webhook_id = absint( $_GET['edit-webhook'] ); // WPCS: input var okay, CSRF ok.
|
||||
$webhook = new WC_Webhook( $webhook_id );
|
||||
|
||||
include 'settings/views/html-webhooks-edit.php';
|
||||
include __DIR__ . '/settings/views/html-webhooks-edit.php';
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ class WC_Admin {
|
|||
add_action( 'admin_init', array( $this, 'admin_redirects' ) );
|
||||
add_action( 'admin_footer', 'wc_print_js', 25 );
|
||||
add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ), 1 );
|
||||
add_action( 'wp_ajax_setup_wizard_check_jetpack', array( $this, 'setup_wizard_check_jetpack' ) );
|
||||
add_action( 'init', array( 'WC_Site_Tracking', 'init' ) );
|
||||
|
||||
// Disable WXR export of schedule action posts.
|
||||
|
@ -49,19 +48,19 @@ class WC_Admin {
|
|||
* Include any classes we need within admin.
|
||||
*/
|
||||
public function includes() {
|
||||
include_once dirname( __FILE__ ) . '/wc-admin-functions.php';
|
||||
include_once dirname( __FILE__ ) . '/wc-meta-box-functions.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-post-types.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-taxonomies.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-menus.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-customize.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-notices.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-assets.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-api-keys.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-webhooks.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-pointers.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-importers.php';
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-exporters.php';
|
||||
include_once __DIR__ . '/wc-admin-functions.php';
|
||||
include_once __DIR__ . '/wc-meta-box-functions.php';
|
||||
include_once __DIR__ . '/class-wc-admin-post-types.php';
|
||||
include_once __DIR__ . '/class-wc-admin-taxonomies.php';
|
||||
include_once __DIR__ . '/class-wc-admin-menus.php';
|
||||
include_once __DIR__ . '/class-wc-admin-customize.php';
|
||||
include_once __DIR__ . '/class-wc-admin-notices.php';
|
||||
include_once __DIR__ . '/class-wc-admin-assets.php';
|
||||
include_once __DIR__ . '/class-wc-admin-api-keys.php';
|
||||
include_once __DIR__ . '/class-wc-admin-webhooks.php';
|
||||
include_once __DIR__ . '/class-wc-admin-pointers.php';
|
||||
include_once __DIR__ . '/class-wc-admin-importers.php';
|
||||
include_once __DIR__ . '/class-wc-admin-exporters.php';
|
||||
|
||||
include_once WC_ABSPATH . 'includes/tracks/class-wc-tracks.php';
|
||||
include_once WC_ABSPATH . 'includes/tracks/class-wc-tracks-event.php';
|
||||
|
@ -71,24 +70,15 @@ class WC_Admin {
|
|||
|
||||
// Help Tabs.
|
||||
if ( apply_filters( 'woocommerce_enable_admin_help_tab', true ) ) {
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-help.php';
|
||||
}
|
||||
|
||||
// Setup/welcome.
|
||||
if ( ! empty( $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
switch ( $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
case 'wc-setup':
|
||||
include_once dirname( __FILE__ ) . '/class-wc-admin-setup-wizard.php';
|
||||
break;
|
||||
}
|
||||
include_once __DIR__ . '/class-wc-admin-help.php';
|
||||
}
|
||||
|
||||
// Helper.
|
||||
include_once dirname( __FILE__ ) . '/helper/class-wc-helper.php';
|
||||
include_once __DIR__ . '/helper/class-wc-helper.php';
|
||||
|
||||
// Marketplace suggestions & related REST API.
|
||||
include_once dirname( __FILE__ ) . '/marketplace-suggestions/class-wc-marketplace-suggestions.php';
|
||||
include_once dirname( __FILE__ ) . '/marketplace-suggestions/class-wc-marketplace-updater.php';
|
||||
include_once __DIR__ . '/marketplace-suggestions/class-wc-marketplace-suggestions.php';
|
||||
include_once __DIR__ . '/marketplace-suggestions/class-wc-marketplace-updater.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -104,22 +94,22 @@ class WC_Admin {
|
|||
switch ( $screen->id ) {
|
||||
case 'dashboard':
|
||||
case 'dashboard-network':
|
||||
include 'class-wc-admin-dashboard.php';
|
||||
include __DIR__ . '/class-wc-admin-dashboard.php';
|
||||
break;
|
||||
case 'options-permalink':
|
||||
include 'class-wc-admin-permalink-settings.php';
|
||||
include __DIR__ . '/class-wc-admin-permalink-settings.php';
|
||||
break;
|
||||
case 'plugins':
|
||||
include 'plugin-updates/class-wc-plugins-screen-updates.php';
|
||||
include __DIR__ . '/plugin-updates/class-wc-plugins-screen-updates.php';
|
||||
break;
|
||||
case 'update-core':
|
||||
include 'plugin-updates/class-wc-updates-screen-updates.php';
|
||||
include __DIR__ . '/plugin-updates/class-wc-updates-screen-updates.php';
|
||||
break;
|
||||
case 'users':
|
||||
case 'user':
|
||||
case 'profile':
|
||||
case 'user-edit':
|
||||
include 'class-wc-admin-profile.php';
|
||||
include __DIR__ . '/class-wc-admin-profile.php';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +117,7 @@ class WC_Admin {
|
|||
/**
|
||||
* Handle redirects to setup/welcome page after install and updates.
|
||||
*
|
||||
* For setup wizard, transient must be present, the user must have access rights, and we must ignore the network/bulk plugin updaters.
|
||||
* The user must have access rights, and we must ignore the network/bulk plugin updaters.
|
||||
*/
|
||||
public function admin_redirects() {
|
||||
// Don't run this fn from Action Scheduler requests, as it would clear _wc_activation_redirect transient.
|
||||
|
@ -152,28 +142,6 @@ class WC_Admin {
|
|||
exit;
|
||||
}
|
||||
|
||||
// Setup wizard redirect.
|
||||
if ( get_transient( '_wc_activation_redirect' ) && apply_filters( 'woocommerce_enable_setup_wizard', true ) ) {
|
||||
$do_redirect = true;
|
||||
$current_page = isset( $_GET['page'] ) ? wc_clean( wp_unslash( $_GET['page'] ) ) : false;
|
||||
|
||||
// On these pages, or during these events, postpone the redirect.
|
||||
if ( wp_doing_ajax() || is_network_admin() || ! current_user_can( 'manage_woocommerce' ) ) {
|
||||
$do_redirect = false;
|
||||
}
|
||||
|
||||
// On these pages, or during these events, disable the redirect.
|
||||
if ( 'wc-setup' === $current_page || ! WC_Admin_Notices::has_notice( 'install' ) || apply_filters( 'woocommerce_prevent_automatic_wizard_redirect', false ) || isset( $_GET['activate-multi'] ) ) {
|
||||
delete_transient( '_wc_activation_redirect' );
|
||||
$do_redirect = false;
|
||||
}
|
||||
|
||||
if ( $do_redirect ) {
|
||||
delete_transient( '_wc_activation_redirect' );
|
||||
wp_safe_redirect( admin_url( 'index.php?page=wc-setup' ) );
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// phpcs:enable WordPress.Security.NonceVerification.Recommended
|
||||
}
|
||||
|
||||
|
@ -223,7 +191,7 @@ class WC_Admin {
|
|||
|
||||
// get the preview email content.
|
||||
ob_start();
|
||||
include 'views/html-email-template-preview.php';
|
||||
include __DIR__ . '/views/html-email-template-preview.php';
|
||||
$message = ob_get_clean();
|
||||
|
||||
// create a new email.
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
/**
|
||||
* WooCommerce Admin
|
||||
* WooCommerce Admin Helper API
|
||||
*
|
||||
* @class WC_Helper_API
|
||||
* @package WooCommerce\Admin
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
<?php
|
||||
/**
|
||||
* WooCommerce Admin Helper Compat
|
||||
*
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
<?php
|
||||
/**
|
||||
* WooCommerce Admin Helper Options
|
||||
*
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
<?php
|
||||
/**
|
||||
* WooCommerce Admin Helper Plugin Info
|
||||
*
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* The update helper for WooCommerce.com plugins.
|
||||
*
|
||||
* @class WC_Helper_Updater
|
||||
* @package WooCommerce\Admin.
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
<?php
|
||||
/**
|
||||
* WooCommerce Admin
|
||||
* WooCommerce Admin Helper
|
||||
*
|
||||
* @class WC_Helper
|
||||
* @package WooCommerce\Admin
|
||||
* @package WooCommerce\Admin\Helper
|
||||
*/
|
||||
|
||||
use Automattic\Jetpack\Constants;
|
||||
|
|
|
@ -15,7 +15,7 @@ if ( class_exists( 'WC_Admin_List_Table_Coupons', false ) ) {
|
|||
}
|
||||
|
||||
if ( ! class_exists( 'WC_Admin_List_Table', false ) ) {
|
||||
include_once 'abstract-class-wc-admin-list-table.php';
|
||||
include_once __DIR__ . '/abstract-class-wc-admin-list-table.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,7 +15,7 @@ if ( class_exists( 'WC_Admin_List_Table_Orders', false ) ) {
|
|||
}
|
||||
|
||||
if ( ! class_exists( 'WC_Admin_List_Table', false ) ) {
|
||||
include_once 'abstract-class-wc-admin-list-table.php';
|
||||
include_once __DIR__ . '/abstract-class-wc-admin-list-table.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,7 +15,7 @@ if ( class_exists( 'WC_Admin_List_Table_Products', false ) ) {
|
|||
}
|
||||
|
||||
if ( ! class_exists( 'WC_Admin_List_Table', false ) ) {
|
||||
include_once 'abstract-class-wc-admin-list-table.php';
|
||||
include_once __DIR__ . '/abstract-class-wc-admin-list-table.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -344,6 +344,8 @@ class WC_Meta_Box_Order_Data {
|
|||
|
||||
if ( 'billing_phone' === $field_name ) {
|
||||
$field_value = wc_make_phone_clickable( $field_value );
|
||||
} elseif ( 'billing_email' === $field_name ) {
|
||||
$field_value = '<a href="' . esc_url( 'mailto:' . $field_value ) . '">' . $field_value . '</a>';
|
||||
} else {
|
||||
$field_value = make_clickable( esc_html( $field_value ) );
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ class WC_Meta_Box_Order_Downloads {
|
|||
$file = $product->get_file( $download->get_download_id() );
|
||||
$file_count = isset( $file['name'] ) ? $file['name'] : sprintf( __( 'File %d', 'woocommerce' ), $file_counter );
|
||||
|
||||
include 'views/html-order-download-permission.php';
|
||||
include __DIR__ . '/views/html-order-download-permission.php';
|
||||
|
||||
$loop++;
|
||||
$file_counter++;
|
||||
|
|
|
@ -38,7 +38,7 @@ class WC_Meta_Box_Order_Items {
|
|||
$order = $theorder;
|
||||
$data = get_post_meta( $post->ID );
|
||||
|
||||
include 'views/html-order-items.php';
|
||||
include __DIR__ . '/views/html-order-items.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -28,7 +28,7 @@ class WC_Meta_Box_Order_Notes {
|
|||
|
||||
$notes = wc_get_order_notes( $args );
|
||||
|
||||
include 'views/html-order-notes.php';
|
||||
include __DIR__ . '/views/html-order-notes.php';
|
||||
?>
|
||||
<div class="add_note">
|
||||
<p>
|
||||
|
|
|
@ -30,7 +30,7 @@ class WC_Meta_Box_Product_Data {
|
|||
|
||||
wp_nonce_field( 'woocommerce_save_data', 'woocommerce_meta_nonce' );
|
||||
|
||||
include 'views/html-product-data-panel.php';
|
||||
include __DIR__ . '/views/html-product-data-panel.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -39,12 +39,12 @@ class WC_Meta_Box_Product_Data {
|
|||
private static function output_tabs() {
|
||||
global $post, $thepostid, $product_object;
|
||||
|
||||
include 'views/html-product-data-general.php';
|
||||
include 'views/html-product-data-inventory.php';
|
||||
include 'views/html-product-data-shipping.php';
|
||||
include 'views/html-product-data-linked-products.php';
|
||||
include 'views/html-product-data-attributes.php';
|
||||
include 'views/html-product-data-advanced.php';
|
||||
include __DIR__ . '/views/html-product-data-general.php';
|
||||
include __DIR__ . '/views/html-product-data-inventory.php';
|
||||
include __DIR__ . '/views/html-product-data-shipping.php';
|
||||
include __DIR__ . '/views/html-product-data-linked-products.php';
|
||||
include __DIR__ . '/views/html-product-data-attributes.php';
|
||||
include __DIR__ . '/views/html-product-data-advanced.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -177,7 +177,7 @@ class WC_Meta_Box_Product_Data {
|
|||
$variations_per_page = absint( apply_filters( 'woocommerce_admin_meta_boxes_variations_per_page', 15 ) );
|
||||
$variations_total_pages = ceil( $variations_count / $variations_per_page );
|
||||
|
||||
include 'views/html-product-data-variations.php';
|
||||
include __DIR__ . '/views/html-product-data-variations.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -371,7 +371,7 @@ class WC_Meta_Box_Product_Data {
|
|||
'featured' => isset( $_POST['_featured'] ),
|
||||
'catalog_visibility' => isset( $_POST['_visibility'] ) ? wc_clean( wp_unslash( $_POST['_visibility'] ) ) : null,
|
||||
'tax_status' => isset( $_POST['_tax_status'] ) ? wc_clean( wp_unslash( $_POST['_tax_status'] ) ) : null,
|
||||
'tax_class' => isset( $_POST['_tax_class'] ) ? wc_clean( wp_unslash( $_POST['_tax_class'] ) ) : null,
|
||||
'tax_class' => isset( $_POST['_tax_class'] ) ? sanitize_title( wp_unslash( $_POST['_tax_class'] ) ) : null,
|
||||
'weight' => isset( $_POST['_weight'] ) ? wc_clean( wp_unslash( $_POST['_weight'] ) ) : null,
|
||||
'length' => isset( $_POST['_length'] ) ? wc_clean( wp_unslash( $_POST['_length'] ) ) : null,
|
||||
'width' => isset( $_POST['_width'] ) ? wc_clean( wp_unslash( $_POST['_width'] ) ) : null,
|
||||
|
|
|
@ -41,7 +41,7 @@ $row_class = apply_filters( 'woocommerce_admin_html_order_item_class', ! empt
|
|||
<input type="hidden" name="order_item_tax_class[<?php echo absint( $item_id ); ?>]" value="<?php echo esc_attr( $item->get_tax_class() ); ?>" />
|
||||
|
||||
<?php do_action( 'woocommerce_before_order_itemmeta', $item_id, $item, $product ); ?>
|
||||
<?php require 'html-order-item-meta.php'; ?>
|
||||
<?php require __DIR__ . '/html-order-item-meta.php'; ?>
|
||||
<?php do_action( 'woocommerce_after_order_itemmeta', $item_id, $item, $product ); ?>
|
||||
</td>
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ if ( wc_tax_enabled() ) {
|
|||
foreach ( $line_items as $item_id => $item ) {
|
||||
do_action( 'woocommerce_before_order_item_' . $item->get_type() . '_html', $item_id, $item, $order );
|
||||
|
||||
include 'html-order-item.php';
|
||||
include __DIR__ . '/html-order-item.php';
|
||||
|
||||
do_action( 'woocommerce_order_item_' . $item->get_type() . '_html', $item_id, $item, $order );
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ if ( wc_tax_enabled() ) {
|
|||
<tbody id="order_fee_line_items">
|
||||
<?php
|
||||
foreach ( $line_items_fee as $item_id => $item ) {
|
||||
include 'html-order-fee.php';
|
||||
include __DIR__ . '/html-order-fee.php';
|
||||
}
|
||||
do_action( 'woocommerce_admin_order_items_after_fees', $order->get_id() );
|
||||
?>
|
||||
|
@ -78,7 +78,7 @@ if ( wc_tax_enabled() ) {
|
|||
<?php
|
||||
$shipping_methods = WC()->shipping() ? WC()->shipping()->load_shipping_methods() : array();
|
||||
foreach ( $line_items_shipping as $item_id => $item ) {
|
||||
include 'html-order-shipping.php';
|
||||
include __DIR__ . '/html-order-shipping.php';
|
||||
}
|
||||
do_action( 'woocommerce_admin_order_items_after_shipping', $order->get_id() );
|
||||
?>
|
||||
|
@ -89,7 +89,7 @@ if ( wc_tax_enabled() ) {
|
|||
|
||||
if ( $refunds ) {
|
||||
foreach ( $refunds as $refund ) {
|
||||
include 'html-order-refund.php';
|
||||
include __DIR__ . '/html-order-refund.php';
|
||||
}
|
||||
do_action( 'woocommerce_admin_order_items_after_refunds', $order->get_id() );
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_before_order_itemmeta', $item_id, $item, null ); ?>
|
||||
<?php require 'html-order-item-meta.php'; ?>
|
||||
<?php require __DIR__ . '/html-order-item-meta.php'; ?>
|
||||
<?php do_action( 'woocommerce_after_order_itemmeta', $item_id, $item, null ); ?>
|
||||
</td>
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
$metabox_class[] = $attribute->get_name();
|
||||
}
|
||||
|
||||
include 'html-product-attribute.php';
|
||||
include __DIR__ . '/html-product-attribute.php';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
|
|
@ -89,7 +89,7 @@ defined( 'ABSPATH' ) || exit;
|
|||
$downloadable_files = $product_object->get_downloads( 'edit' );
|
||||
if ( $downloadable_files ) {
|
||||
foreach ( $downloadable_files as $key => $file ) {
|
||||
include 'html-product-download.php';
|
||||
include __DIR__ . '/html-product-download.php';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -105,7 +105,7 @@ defined( 'ABSPATH' ) || exit;
|
|||
'name' => '',
|
||||
);
|
||||
ob_start();
|
||||
require 'html-product-download.php';
|
||||
require __DIR__ . '/html-product-download.php';
|
||||
echo esc_attr( ob_get_clean() );
|
||||
?>
|
||||
"><?php esc_html_e( 'Add File', 'woocommerce' ); ?></a>
|
||||
|
|
|
@ -378,7 +378,7 @@ defined( 'ABSPATH' ) || exit;
|
|||
|
||||
if ( $downloads ) {
|
||||
foreach ( $downloads as $key => $file ) {
|
||||
include 'html-product-variation-download.php';
|
||||
include __DIR__ . '/html-product-variation-download.php';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@ -394,7 +394,7 @@ defined( 'ABSPATH' ) || exit;
|
|||
'name' => '',
|
||||
);
|
||||
ob_start();
|
||||
require 'html-product-variation-download.php';
|
||||
require __DIR__ . '/html-product-variation-download.php';
|
||||
echo esc_attr( ob_get_clean() );
|
||||
?>
|
||||
"><?php esc_html_e( 'Add file', 'woocommerce' ); ?></a>
|
||||
|
|
|
@ -272,7 +272,6 @@ class WC_Notes_Run_Db_Update {
|
|||
return;
|
||||
} else {
|
||||
// Db update not needed && notice is unactioned -> Thank you note.
|
||||
\WC_Install::update_db_version();
|
||||
self::update_done_notice( $note_id );
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ class WC_Plugin_Updates {
|
|||
$message = sprintf( __( "<strong>Heads up!</strong> The versions of the following plugins you're running haven't been tested with WooCommerce %s. Please update them or confirm compatibility before updating WooCommerce, or you may experience issues:", 'woocommerce' ), $new_version );
|
||||
|
||||
ob_start();
|
||||
include 'views/html-notice-untested-extensions-inline.php';
|
||||
include __DIR__ . '/views/html-notice-untested-extensions-inline.php';
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ class WC_Plugin_Updates {
|
|||
$plugins = $this->major_untested_plugins;
|
||||
|
||||
ob_start();
|
||||
include 'views/html-notice-untested-extensions-modal.php';
|
||||
include __DIR__ . '/views/html-notice-untested-extensions-modal.php';
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ class WC_Settings_Advanced extends WC_Settings_Page {
|
|||
'webhooks' => __( 'Webhooks', 'woocommerce' ),
|
||||
'legacy_api' => __( 'Legacy API', 'woocommerce' ),
|
||||
'woocommerce_com' => __( 'WooCommerce.com', 'woocommerce' ),
|
||||
'features' => __( 'Features', 'woocommerce' ),
|
||||
);
|
||||
|
||||
return apply_filters( 'woocommerce_get_sections_' . $this->id, $sections );
|
||||
|
@ -398,28 +397,6 @@ class WC_Settings_Advanced extends WC_Settings_Page {
|
|||
),
|
||||
)
|
||||
);
|
||||
} elseif ( 'features' === $current_section ) {
|
||||
$settings = apply_filters(
|
||||
'woocommerce_settings_features',
|
||||
array(
|
||||
array(
|
||||
'title' => __( 'Features', 'woocommerce' ),
|
||||
'type' => 'title',
|
||||
'desc' => __( 'Start using new features that are being progressively rolled out to improve the store management experience.', 'woocommerce' ),
|
||||
'id' => 'features_options',
|
||||
),
|
||||
array(
|
||||
'title' => __( 'Home Screen', 'woocommerce' ),
|
||||
'desc' => __( 'Displays analytical insights, inbox notifications, and handy shortcuts in a single screen', 'woocommerce' ),
|
||||
'id' => 'woocommerce_homescreen_enabled',
|
||||
'type' => 'checkbox',
|
||||
),
|
||||
array(
|
||||
'type' => 'sectionend',
|
||||
'id' => 'features_options',
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_get_settings_' . $this->id, $settings, $current_section );
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
return include 'class-wc-settings-payment-gateways.php';
|
||||
return include __DIR__ . '/class-wc-settings-payment-gateways.php';
|
||||
|
|
|
@ -304,6 +304,7 @@ class WC_Settings_Products extends WC_Settings_Page {
|
|||
'id' => 'woocommerce_shop_page_id',
|
||||
'type' => 'single_select_page',
|
||||
'default' => '',
|
||||
'args' => array( 'post_status' => 'publish,private' ),
|
||||
'class' => 'wc-enhanced-select-nostd',
|
||||
'css' => 'min-width:300px;',
|
||||
'desc_tip' => __( 'This sets the base page of your shop - this is where your product archive will be.', 'woocommerce' ),
|
||||
|
|
|
@ -82,7 +82,7 @@ class WC_Settings_Tax extends WC_Settings_Page {
|
|||
$settings = array();
|
||||
|
||||
if ( '' === $current_section ) {
|
||||
$settings = include 'views/settings-tax.php';
|
||||
$settings = include __DIR__ . '/views/settings-tax.php';
|
||||
}
|
||||
return apply_filters( 'woocommerce_get_settings_' . $this->id, $settings, $current_section );
|
||||
}
|
||||
|
@ -237,7 +237,7 @@ class WC_Settings_Tax extends WC_Settings_Page {
|
|||
);
|
||||
wp_enqueue_script( 'wc-settings-tax' );
|
||||
|
||||
include 'views/html-settings-tax.php';
|
||||
include __DIR__ . '/views/html-settings-tax.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -8,4 +8,4 @@
|
|||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
return include 'class-wc-settings-advanced.php';
|
||||
return include __DIR__ . '/class-wc-settings-advanced.php';
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
/**
|
||||
* Admin View: Notice - Install
|
||||
*
|
||||
* @deprecated 4.6.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
|
|
|
@ -210,7 +210,7 @@ function wc_maybe_adjust_line_item_product_stock( $item, $item_quantity = -1 ) {
|
|||
$item_quantity = wc_stock_amount( $item_quantity >= 0 ? $item_quantity : $item->get_quantity() );
|
||||
$already_reduced_stock = wc_stock_amount( $item->get_meta( '_reduced_stock', true ) );
|
||||
|
||||
if ( ! $product || ! $product->managing_stock() || ! $already_reduced_stock || $item_quantity === $already_reduced_stock ) {
|
||||
if ( ! $product || ! $product->managing_stock() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
use Automattic\Jetpack\Constants;
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
|
@ -545,10 +546,10 @@ class WC_AJAX {
|
|||
wp_die( -1 );
|
||||
}
|
||||
|
||||
$order = wc_get_order( absint( $_GET['order_id'] ) ); // WPCS: sanitization ok.
|
||||
$order = wc_get_order( absint( $_GET['order_id'] ) );
|
||||
|
||||
if ( $order ) {
|
||||
include_once 'admin/list-tables/class-wc-admin-list-table-orders.php';
|
||||
include_once __DIR__ . '/admin/list-tables/class-wc-admin-list-table-orders.php';
|
||||
|
||||
wp_send_json_success( WC_Admin_List_Table_Orders::order_preview_get_order_details( $order ) );
|
||||
}
|
||||
|
@ -581,7 +582,7 @@ class WC_AJAX {
|
|||
$metabox_class[] = $attribute->get_name();
|
||||
}
|
||||
|
||||
include 'admin/meta-boxes/views/html-product-attribute.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-product-attribute.php';
|
||||
wp_die();
|
||||
}
|
||||
|
||||
|
@ -681,7 +682,7 @@ class WC_AJAX {
|
|||
$metabox_class[] = $attribute->get_name();
|
||||
}
|
||||
|
||||
include 'admin/meta-boxes/views/html-product-attribute.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-product-attribute.php';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -716,7 +717,7 @@ class WC_AJAX {
|
|||
$variation_id = $variation_object->save();
|
||||
$variation = get_post( $variation_id );
|
||||
$variation_data = array_merge( get_post_custom( $variation_id ), wc_get_product_variation_attributes( $variation_id ) ); // kept for BW compatibility.
|
||||
include 'admin/meta-boxes/views/html-variation-admin.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-variation-admin.php';
|
||||
wp_die();
|
||||
}
|
||||
|
||||
|
@ -816,7 +817,7 @@ class WC_AJAX {
|
|||
/* translators: %d file count */
|
||||
$file_count = sprintf( __( 'File %d', 'woocommerce' ), $file_counter );
|
||||
}
|
||||
include 'admin/meta-boxes/views/html-order-download-permission.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-download-permission.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -925,6 +926,7 @@ class WC_AJAX {
|
|||
$validation_error = apply_filters( 'woocommerce_ajax_add_order_item_validation', $validation_error, $product, $order, $qty );
|
||||
|
||||
if ( $validation_error->get_error_code() ) {
|
||||
/* translators: %s: error message */
|
||||
throw new Exception( sprintf( __( 'Error: %s', 'woocommerce' ), $validation_error->get_error_message() ) );
|
||||
}
|
||||
$item_id = $order->add_product( $product, $qty );
|
||||
|
@ -946,12 +948,12 @@ class WC_AJAX {
|
|||
|
||||
// Get HTML to return.
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$items_html = ob_get_clean();
|
||||
|
||||
ob_start();
|
||||
$notes = wc_get_order_notes( array( 'order_id' => $order_id ) );
|
||||
include 'admin/meta-boxes/views/html-order-notes.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-notes.php';
|
||||
$notes_html = ob_get_clean();
|
||||
|
||||
return array(
|
||||
|
@ -1015,7 +1017,7 @@ class WC_AJAX {
|
|||
$order->save();
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1057,7 +1059,7 @@ class WC_AJAX {
|
|||
$item_id = $item->save();
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-shipping.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-shipping.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1104,7 +1106,7 @@ class WC_AJAX {
|
|||
$item->save();
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1167,7 +1169,7 @@ class WC_AJAX {
|
|||
$order->calculate_totals( false );
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1214,7 +1216,7 @@ class WC_AJAX {
|
|||
$order->calculate_totals( false );
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1300,12 +1302,12 @@ class WC_AJAX {
|
|||
|
||||
// Get HTML to return.
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$items_html = ob_get_clean();
|
||||
|
||||
ob_start();
|
||||
$notes = wc_get_order_notes( array( 'order_id' => $order_id ) );
|
||||
include 'admin/meta-boxes/views/html-order-notes.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-notes.php';
|
||||
$notes_html = ob_get_clean();
|
||||
|
||||
wp_send_json_success(
|
||||
|
@ -1352,7 +1354,7 @@ class WC_AJAX {
|
|||
$order->calculate_totals( false );
|
||||
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$response['html'] = ob_get_clean();
|
||||
} catch ( Exception $e ) {
|
||||
wp_send_json_error( array( 'error' => $e->getMessage() ) );
|
||||
|
@ -1391,7 +1393,7 @@ class WC_AJAX {
|
|||
$order = wc_get_order( $order_id );
|
||||
$order->calculate_taxes( $calculate_tax_args );
|
||||
$order->calculate_totals( false );
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
wp_die();
|
||||
}
|
||||
|
||||
|
@ -1420,12 +1422,12 @@ class WC_AJAX {
|
|||
|
||||
// Get HTML to return.
|
||||
ob_start();
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
$items_html = ob_get_clean();
|
||||
|
||||
ob_start();
|
||||
$notes = wc_get_order_notes( array( 'order_id' => $order_id ) );
|
||||
include 'admin/meta-boxes/views/html-order-notes.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-notes.php';
|
||||
$notes_html = ob_get_clean();
|
||||
|
||||
wp_send_json_success(
|
||||
|
@ -1451,7 +1453,7 @@ class WC_AJAX {
|
|||
// Return HTML items.
|
||||
$order_id = absint( $_POST['order_id'] );
|
||||
$order = wc_get_order( $order_id );
|
||||
include 'admin/meta-boxes/views/html-order-items.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-order-items.php';
|
||||
wp_die();
|
||||
}
|
||||
|
||||
|
@ -1582,7 +1584,7 @@ class WC_AJAX {
|
|||
}
|
||||
|
||||
if ( $managing_stock && ! empty( $_GET['display_stock'] ) ) {
|
||||
$stock_amount = $product_object->get_stock_quantity();
|
||||
$stock_amount = $product_object->get_stock_quantity();
|
||||
/* Translators: %d stock amount */
|
||||
$formatted_name .= ' – ' . sprintf( __( 'Stock: %d', 'woocommerce' ), wc_format_stock_quantity_for_display( $stock_amount, $product_object ) );
|
||||
}
|
||||
|
@ -1861,8 +1863,8 @@ class WC_AJAX {
|
|||
$response = array();
|
||||
|
||||
try {
|
||||
$order = wc_get_order( $order_id );
|
||||
$max_refund = wc_format_decimal( $order->get_total() - $order->get_total_refunded(), wc_get_price_decimals() );
|
||||
$order = wc_get_order( $order_id );
|
||||
$max_refund = wc_format_decimal( $order->get_total() - $order->get_total_refunded(), wc_get_price_decimals() );
|
||||
|
||||
if ( ! $refund_amount || $max_refund < $refund_amount || 0 > $refund_amount ) {
|
||||
throw new Exception( __( 'Invalid refund amount', 'woocommerce' ) );
|
||||
|
@ -2101,7 +2103,7 @@ class WC_AJAX {
|
|||
$variation_id = $variation_object->get_id();
|
||||
$variation = get_post( $variation_id );
|
||||
$variation_data = array_merge( get_post_custom( $variation_id ), wc_get_product_variation_attributes( $variation_id ) ); // kept for BW compatibility.
|
||||
include 'admin/meta-boxes/views/html-variation-admin.php';
|
||||
include __DIR__ . '/admin/meta-boxes/views/html-variation-admin.php';
|
||||
$loop++;
|
||||
}
|
||||
}
|
||||
|
@ -2465,7 +2467,7 @@ class WC_AJAX {
|
|||
|
||||
if ( '%' === substr( $value, -1 ) ) {
|
||||
$percent = wc_format_decimal( substr( $value, 0, -1 ) );
|
||||
$field_value += round( ( $field_value / 100 ) * $percent, wc_get_price_decimals() ) * "{$operator}1";
|
||||
$field_value += NumberUtil::round( ( $field_value / 100 ) * $percent, wc_get_price_decimals() ) * "{$operator}1";
|
||||
} else {
|
||||
$field_value += $value * "{$operator}1";
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* - Legacy REST API - Deprecated in 2.6.0. @see class-wc-legacy-api.php
|
||||
* - WP REST API - The main REST API in WooCommerce which is built on top of the WP REST API.
|
||||
*
|
||||
* @package WooCommerce\API
|
||||
* @package WooCommerce\RestApi
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Handles wc-auth endpoint requests.
|
||||
*
|
||||
* @package WooCommerce\API
|
||||
* @package WooCommerce\RestApi
|
||||
* @since 2.4.0
|
||||
*/
|
||||
|
||||
|
|
|
@ -349,8 +349,9 @@ class WC_Breadcrumb {
|
|||
* Endpoints.
|
||||
*/
|
||||
protected function endpoint_trail() {
|
||||
$action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : '';
|
||||
$endpoint = is_wc_endpoint_url() ? WC()->query->get_current_endpoint() : '';
|
||||
$endpoint_title = $endpoint ? WC()->query->get_endpoint_title( $endpoint ) : '';
|
||||
$endpoint_title = $endpoint ? WC()->query->get_endpoint_title( $endpoint, $action ) : '';
|
||||
|
||||
if ( $endpoint_title ) {
|
||||
$this->add_crumb( $endpoint_title );
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
* @version 3.2.0
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
@ -280,7 +282,7 @@ final class WC_Cart_Totals {
|
|||
|
||||
// Negative fees should not make the order total go negative.
|
||||
if ( 0 > $fee->total ) {
|
||||
$max_discount = round( $this->get_total( 'items_total', true ) + $fee_running_total + $this->get_total( 'shipping_total', true ) ) * -1;
|
||||
$max_discount = NumberUtil::round( $this->get_total( 'items_total', true ) + $fee_running_total + $this->get_total( 'shipping_total', true ) ) * -1;
|
||||
|
||||
if ( $fee->total < $max_discount ) {
|
||||
$fee->total = $max_discount;
|
||||
|
@ -429,7 +431,7 @@ final class WC_Cart_Totals {
|
|||
$taxes = WC_Tax::calc_tax( $item->price, $base_tax_rates, true );
|
||||
|
||||
// Now we have a new item price (excluding TAX).
|
||||
$item->price = round( $item->price - array_sum( $taxes ) );
|
||||
$item->price = NumberUtil::round( $item->price - array_sum( $taxes ) );
|
||||
$item->price_includes_tax = false;
|
||||
}
|
||||
return $item;
|
||||
|
@ -539,7 +541,7 @@ final class WC_Cart_Totals {
|
|||
* @param string $key Total name you want to set.
|
||||
* @param int $total Total to set.
|
||||
*/
|
||||
protected function set_total( $key = 'total', $total ) {
|
||||
protected function set_total( $key, $total ) {
|
||||
$this->totals[ $key ] = $total;
|
||||
}
|
||||
|
||||
|
@ -748,7 +750,7 @@ final class WC_Cart_Totals {
|
|||
|
||||
$items_subtotal = $this->get_rounded_items_total( $this->get_values_for_total( 'subtotal' ) );
|
||||
|
||||
$this->set_total( 'items_subtotal', round( $items_subtotal ) );
|
||||
$this->set_total( 'items_subtotal', NumberUtil::round( $items_subtotal ) );
|
||||
$this->set_total( 'items_subtotal_tax', wc_round_tax_total( array_sum( $merged_subtotal_taxes ), 0 ) );
|
||||
|
||||
$this->cart->set_subtotal( $this->get_total( 'items_subtotal' ) );
|
||||
|
@ -859,7 +861,7 @@ final class WC_Cart_Totals {
|
|||
* @since 3.2.0
|
||||
*/
|
||||
protected function calculate_totals() {
|
||||
$this->set_total( 'total', round( $this->get_total( 'items_total', true ) + $this->get_total( 'fees_total', true ) + $this->get_total( 'shipping_total', true ) + array_sum( $this->get_merged_taxes( true ) ), 0 ) );
|
||||
$this->set_total( 'total', NumberUtil::round( $this->get_total( 'items_total', true ) + $this->get_total( 'fees_total', true ) + $this->get_total( 'shipping_total', true ) + array_sum( $this->get_merged_taxes( true ) ), 0 ) );
|
||||
$this->cart->set_total_tax( array_sum( $this->get_merged_taxes( false ) ) );
|
||||
|
||||
// Allow plugins to hook and alter totals before final total is calculated.
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
* @version 2.1.0
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
require_once WC_ABSPATH . 'includes/legacy/class-wc-legacy-cart.php';
|
||||
|
@ -858,8 +860,8 @@ class WC_Cart extends WC_Legacy_Cart {
|
|||
*/
|
||||
public function get_tax_totals() {
|
||||
$shipping_taxes = $this->get_shipping_taxes(); // Shipping taxes are rounded differently, so we will subtract from all taxes, then round and then add them back.
|
||||
$taxes = $this->get_taxes();
|
||||
$tax_totals = array();
|
||||
$taxes = $this->get_taxes();
|
||||
$tax_totals = array();
|
||||
|
||||
foreach ( $taxes as $key => $tax ) {
|
||||
$code = WC_Tax::get_rate_code( $key );
|
||||
|
@ -877,7 +879,7 @@ class WC_Cart extends WC_Legacy_Cart {
|
|||
if ( isset( $shipping_taxes[ $key ] ) ) {
|
||||
$tax -= $shipping_taxes[ $key ];
|
||||
$tax = wc_round_tax_total( $tax );
|
||||
$tax += round( $shipping_taxes[ $key ], wc_get_price_decimals() );
|
||||
$tax += NumberUtil::round( $shipping_taxes[ $key ], wc_get_price_decimals() );
|
||||
unset( $shipping_taxes[ $key ] );
|
||||
}
|
||||
$tax_totals[ $code ]->amount += wc_round_tax_total( $tax );
|
||||
|
@ -1040,7 +1042,6 @@ class WC_Cart extends WC_Legacy_Cart {
|
|||
|
||||
// Gather posted attributes.
|
||||
$posted_attributes = array();
|
||||
|
||||
foreach ( $parent_data->get_attributes() as $attribute ) {
|
||||
if ( ! $attribute['is_variation'] ) {
|
||||
continue;
|
||||
|
@ -1056,7 +1057,7 @@ class WC_Cart extends WC_Legacy_Cart {
|
|||
}
|
||||
|
||||
// Don't include if it's empty.
|
||||
if ( ! empty( $value ) ) {
|
||||
if ( ! empty( $value ) || '0' === $value ) {
|
||||
$posted_attributes[ $attribute_key ] = $value;
|
||||
}
|
||||
}
|
||||
|
@ -1528,7 +1529,15 @@ class WC_Cart extends WC_Legacy_Cart {
|
|||
}
|
||||
|
||||
if ( 'yes' === get_option( 'woocommerce_shipping_cost_requires_address' ) ) {
|
||||
if ( ! $this->get_customer()->get_shipping_country() || ! $this->get_customer()->get_shipping_state() || ! $this->get_customer()->get_shipping_postcode() ) {
|
||||
$country = $this->get_customer()->get_shipping_country();
|
||||
if ( ! $country ) {
|
||||
return false;
|
||||
}
|
||||
$country_fields = WC()->countries->get_address_fields( $country, 'shipping_' );
|
||||
if ( isset( $country_fields['shipping_state'] ) && $country_fields['shipping_state']['required'] && ! $this->get_customer()->get_shipping_state() ) {
|
||||
return false;
|
||||
}
|
||||
if ( isset( $country_fields['shipping_postcode'] ) && $country_fields['shipping_postcode']['required'] && ! $this->get_customer()->get_shipping_postcode() ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1155,7 +1155,7 @@ class WC_Checkout {
|
|||
|
||||
do_action( 'woocommerce_checkout_order_processed', $order_id, $posted_data, $order );
|
||||
|
||||
if ( WC()->cart->needs_payment() ) {
|
||||
if ( $order->needs_payment() ) {
|
||||
$this->process_order_payment( $order_id, $posted_data['payment_method'] );
|
||||
} else {
|
||||
$this->process_order_without_payment( $order_id );
|
||||
|
|
|
@ -50,7 +50,7 @@ class WC_Countries {
|
|||
if ( empty( $this->countries ) ) {
|
||||
$this->countries = apply_filters( 'woocommerce_countries', include WC()->plugin_path() . '/i18n/countries.php' );
|
||||
if ( apply_filters( 'woocommerce_sort_countries', true ) ) {
|
||||
uasort( $this->countries, 'wc_ascii_uasort_comparison' );
|
||||
wc_asort_by_locale( $this->countries );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1052,6 +1052,14 @@ class WC_Countries {
|
|||
'required' => false,
|
||||
),
|
||||
),
|
||||
'IN' => array(
|
||||
'postcode' => array(
|
||||
'label' => __( 'Pin code', 'woocommerce' ),
|
||||
),
|
||||
'state' => array(
|
||||
'label' => __( 'State', 'woocommerce' ),
|
||||
),
|
||||
),
|
||||
'IT' => array(
|
||||
'postcode' => array(
|
||||
'priority' => 65,
|
||||
|
@ -1207,9 +1215,15 @@ class WC_Countries {
|
|||
),
|
||||
),
|
||||
'RS' => array(
|
||||
'state' => array(
|
||||
'city' => array(
|
||||
'required' => false,
|
||||
),
|
||||
'postcode' => array(
|
||||
'required' => false,
|
||||
),
|
||||
'state' => array(
|
||||
'label' => __( 'District', 'woocommerce' ),
|
||||
'required' => false,
|
||||
'hidden' => true,
|
||||
),
|
||||
),
|
||||
'SG' => array(
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
* @version 3.0.0
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
require_once dirname( __FILE__ ) . '/legacy/class-wc-legacy-coupon.php';
|
||||
|
@ -446,7 +448,14 @@ class WC_Coupon extends WC_Legacy_Coupon {
|
|||
$discount = $single ? $discount : $discount * $cart_item_qty;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_coupon_get_discount_amount', round( min( $discount, $discounting_amount ), wc_get_rounding_precision() ), $discounting_amount, $cart_item, $single, $this );
|
||||
return apply_filters(
|
||||
'woocommerce_coupon_get_discount_amount',
|
||||
NumberUtil::round( min( $discount, $discounting_amount ), wc_get_rounding_precision() ),
|
||||
$discounting_amount,
|
||||
$cart_item,
|
||||
$single,
|
||||
$this
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -35,7 +35,7 @@ class WC_Customer extends WC_Legacy_Customer {
|
|||
'company' => '',
|
||||
'address_1' => '',
|
||||
'address_2' => '',
|
||||
'city' => '',
|
||||
'city' => '',
|
||||
'postcode' => '',
|
||||
'country' => '',
|
||||
'state' => '',
|
||||
|
@ -48,7 +48,7 @@ class WC_Customer extends WC_Legacy_Customer {
|
|||
'company' => '',
|
||||
'address_1' => '',
|
||||
'address_2' => '',
|
||||
'city' => '',
|
||||
'city' => '',
|
||||
'postcode' => '',
|
||||
'country' => '',
|
||||
'state' => '',
|
||||
|
@ -859,7 +859,7 @@ class WC_Customer extends WC_Legacy_Customer {
|
|||
* @param string $address Name of address to set. billing or shipping.
|
||||
* @param mixed $value Value of the prop.
|
||||
*/
|
||||
protected function set_address_prop( $prop, $address = 'billing', $value ) {
|
||||
protected function set_address_prop( $prop, $address, $value ) {
|
||||
if ( array_key_exists( $prop, $this->data[ $address ] ) ) {
|
||||
if ( true === $this->object_read ) {
|
||||
if ( $value !== $this->data[ $address ][ $prop ] || ( isset( $this->changes[ $address ] ) && array_key_exists( $prop, $this->changes[ $address ] ) ) ) {
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
* @since 3.2.0
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
|
@ -230,7 +232,7 @@ class WC_Discounts {
|
|||
* @return int
|
||||
*/
|
||||
public function get_discounted_price_in_cents( $item ) {
|
||||
return absint( round( $item->price - $this->get_discount( $item->key, true ) ) );
|
||||
return absint( NumberUtil::round( $item->price - $this->get_discount( $item->key, true ) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -359,7 +361,7 @@ class WC_Discounts {
|
|||
$discounted_price = $this->get_discounted_price_in_cents( $item );
|
||||
|
||||
// Get the price we actually want to discount, based on settings.
|
||||
$price_to_discount = ( 'yes' === get_option( 'woocommerce_calc_discounts_sequentially', 'no' ) ) ? $discounted_price : round( $item->price );
|
||||
$price_to_discount = ( 'yes' === get_option( 'woocommerce_calc_discounts_sequentially', 'no' ) ) ? $discounted_price : NumberUtil::round( $item->price );
|
||||
|
||||
// See how many and what price to apply to.
|
||||
$apply_quantity = $limit_usage_qty && ( $limit_usage_qty - $applied_count ) < $item->quantity ? $limit_usage_qty - $applied_count : $item->quantity;
|
||||
|
@ -910,7 +912,7 @@ class WC_Discounts {
|
|||
|
||||
if ( $this->object->get_prices_include_tax() ) {
|
||||
// Add tax to tax-exclusive subtotal.
|
||||
$subtotal = $subtotal + wc_add_number_precision( round( $this->object->get_total_tax(), wc_get_price_decimals() ) );
|
||||
$subtotal = $subtotal + wc_add_number_precision( NumberUtil::round( $this->object->get_total_tax(), wc_get_price_decimals() ) );
|
||||
}
|
||||
|
||||
return $subtotal;
|
||||
|
|
|
@ -218,17 +218,17 @@ class WC_Emails {
|
|||
// Include email classes.
|
||||
include_once dirname( __FILE__ ) . '/emails/class-wc-email.php';
|
||||
|
||||
$this->emails['WC_Email_New_Order'] = include 'emails/class-wc-email-new-order.php';
|
||||
$this->emails['WC_Email_Cancelled_Order'] = include 'emails/class-wc-email-cancelled-order.php';
|
||||
$this->emails['WC_Email_Failed_Order'] = include 'emails/class-wc-email-failed-order.php';
|
||||
$this->emails['WC_Email_Customer_On_Hold_Order'] = include 'emails/class-wc-email-customer-on-hold-order.php';
|
||||
$this->emails['WC_Email_Customer_Processing_Order'] = include 'emails/class-wc-email-customer-processing-order.php';
|
||||
$this->emails['WC_Email_Customer_Completed_Order'] = include 'emails/class-wc-email-customer-completed-order.php';
|
||||
$this->emails['WC_Email_Customer_Refunded_Order'] = include 'emails/class-wc-email-customer-refunded-order.php';
|
||||
$this->emails['WC_Email_Customer_Invoice'] = include 'emails/class-wc-email-customer-invoice.php';
|
||||
$this->emails['WC_Email_Customer_Note'] = include 'emails/class-wc-email-customer-note.php';
|
||||
$this->emails['WC_Email_Customer_Reset_Password'] = include 'emails/class-wc-email-customer-reset-password.php';
|
||||
$this->emails['WC_Email_Customer_New_Account'] = include 'emails/class-wc-email-customer-new-account.php';
|
||||
$this->emails['WC_Email_New_Order'] = include __DIR__ . '/emails/class-wc-email-new-order.php';
|
||||
$this->emails['WC_Email_Cancelled_Order'] = include __DIR__ . '/emails/class-wc-email-cancelled-order.php';
|
||||
$this->emails['WC_Email_Failed_Order'] = include __DIR__ . '/emails/class-wc-email-failed-order.php';
|
||||
$this->emails['WC_Email_Customer_On_Hold_Order'] = include __DIR__ . '/emails/class-wc-email-customer-on-hold-order.php';
|
||||
$this->emails['WC_Email_Customer_Processing_Order'] = include __DIR__ . '/emails/class-wc-email-customer-processing-order.php';
|
||||
$this->emails['WC_Email_Customer_Completed_Order'] = include __DIR__ . '/emails/class-wc-email-customer-completed-order.php';
|
||||
$this->emails['WC_Email_Customer_Refunded_Order'] = include __DIR__ . '/emails/class-wc-email-customer-refunded-order.php';
|
||||
$this->emails['WC_Email_Customer_Invoice'] = include __DIR__ . '/emails/class-wc-email-customer-invoice.php';
|
||||
$this->emails['WC_Email_Customer_Note'] = include __DIR__ . '/emails/class-wc-email-customer-note.php';
|
||||
$this->emails['WC_Email_Customer_Reset_Password'] = include __DIR__ . '/emails/class-wc-email-customer-reset-password.php';
|
||||
$this->emails['WC_Email_Customer_New_Account'] = include __DIR__ . '/emails/class-wc-email-customer-new-account.php';
|
||||
|
||||
$this->emails = apply_filters( 'woocommerce_email_classes', $this->emails );
|
||||
}
|
||||
|
@ -611,6 +611,17 @@ class WC_Emails {
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the current product should trigger a low stock notification
|
||||
*
|
||||
* @param int $product_id - The low stock product id
|
||||
*
|
||||
* @since 4.7.0
|
||||
*/
|
||||
if ( false === apply_filters( 'woocommerce_should_send_low_stock_notification', true, $product->get_id() ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$subject = sprintf( '[%s] %s', $this->get_blogname(), __( 'Product low in stock', 'woocommerce' ) );
|
||||
$message = sprintf(
|
||||
/* translators: 1: product name 2: items in stock */
|
||||
|
@ -638,6 +649,17 @@ class WC_Emails {
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the current product should trigger a no stock notification
|
||||
*
|
||||
* @param int $product_id - The out of stock product id
|
||||
*
|
||||
* @since 4.6.0
|
||||
*/
|
||||
if ( false === apply_filters( 'woocommerce_should_send_no_stock_notification', true, $product->get_id() ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$subject = sprintf( '[%s] %s', $this->get_blogname(), __( 'Product out of stock', 'woocommerce' ) );
|
||||
/* translators: %s: product name */
|
||||
$message = sprintf( __( '%s is out of stock.', 'woocommerce' ), html_entity_decode( wp_strip_all_tags( $product->get_formatted_name() ), ENT_QUOTES, get_bloginfo( 'charset' ) ) );
|
||||
|
|
|
@ -49,9 +49,25 @@ class WC_Form_Handler {
|
|||
$user_id = absint( $_GET['id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
|
||||
}
|
||||
|
||||
$value = sprintf( '%d:%s', $user_id, wp_unslash( $_GET['key'] ) ); // phpcs:ignore
|
||||
// If the reset token is not for the current user, ignore the reset request (don't redirect).
|
||||
$logged_in_user_id = get_current_user_id();
|
||||
if ( $logged_in_user_id && $logged_in_user_id !== $user_id ) {
|
||||
wc_add_notice( __( 'This password reset key is for a different user account. Please log out and try again.', 'woocommerce' ), 'error' );
|
||||
return;
|
||||
}
|
||||
|
||||
$action = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : '';
|
||||
$value = sprintf( '%d:%s', $user_id, wp_unslash( $_GET['key'] ) ); // phpcs:ignore
|
||||
WC_Shortcode_My_Account::set_reset_password_cookie( $value );
|
||||
wp_safe_redirect( add_query_arg( 'show-reset-form', 'true', wc_lostpassword_url() ) );
|
||||
wp_safe_redirect(
|
||||
add_query_arg(
|
||||
array(
|
||||
'show-reset-form' => 'true',
|
||||
'action' => $action,
|
||||
),
|
||||
wc_lostpassword_url()
|
||||
)
|
||||
);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
@ -826,6 +842,7 @@ class WC_Form_Handler {
|
|||
$quantity_set = false;
|
||||
|
||||
foreach ( $items as $item => $quantity ) {
|
||||
$quantity = wc_stock_amount( $quantity );
|
||||
if ( $quantity <= 0 ) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -303,10 +303,10 @@ class WC_Install {
|
|||
self::create_terms();
|
||||
self::create_cron_jobs();
|
||||
self::create_files();
|
||||
self::maybe_enable_setup_wizard();
|
||||
self::maybe_create_pages();
|
||||
self::maybe_set_activation_transients();
|
||||
self::update_wc_version();
|
||||
self::maybe_update_db_version();
|
||||
self::maybe_enable_homescreen();
|
||||
|
||||
delete_transient( 'wc_installing' );
|
||||
|
||||
|
@ -351,17 +351,6 @@ class WC_Install {
|
|||
return $missing_tables;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the homepage should be enabled and set the appropriate option if thats the case.
|
||||
*
|
||||
* @since 4.3.0
|
||||
*/
|
||||
private static function maybe_enable_homescreen() {
|
||||
if ( self::is_new_install() && ! get_option( 'woocommerce_homescreen_enabled' ) ) {
|
||||
add_option( 'woocommerce_homescreen_enabled', 'yes' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset any notices added to admin.
|
||||
*
|
||||
|
@ -416,13 +405,12 @@ class WC_Install {
|
|||
}
|
||||
|
||||
/**
|
||||
* See if we need the wizard or not.
|
||||
* See if we need to set redirect transients for activation or not.
|
||||
*
|
||||
* @since 3.2.0
|
||||
* @since 4.6.0
|
||||
*/
|
||||
private static function maybe_enable_setup_wizard() {
|
||||
if ( apply_filters( 'woocommerce_enable_setup_wizard', true ) && self::is_new_install() ) {
|
||||
WC_Admin_Notices::add_notice( 'install', true );
|
||||
private static function maybe_set_activation_transients() {
|
||||
if ( self::is_new_install() ) {
|
||||
set_transient( '_wc_activation_redirect', 1, 30 );
|
||||
}
|
||||
}
|
||||
|
@ -448,8 +436,7 @@ class WC_Install {
|
|||
* Update WC version to current.
|
||||
*/
|
||||
private static function update_wc_version() {
|
||||
delete_option( 'woocommerce_version' );
|
||||
add_option( 'woocommerce_version', WC()->version );
|
||||
update_option( 'woocommerce_version', WC()->version );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -492,8 +479,7 @@ class WC_Install {
|
|||
* @param string|null $version New WooCommerce DB version or null.
|
||||
*/
|
||||
public static function update_db_version( $version = null ) {
|
||||
delete_option( 'woocommerce_db_version' );
|
||||
add_option( 'woocommerce_db_version', is_null( $version ) ? WC()->version : $version );
|
||||
update_option( 'woocommerce_db_version', is_null( $version ) ? WC()->version : $version );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -548,6 +534,15 @@ class WC_Install {
|
|||
wp_schedule_event( time() + 10, apply_filters( 'woocommerce_tracker_event_recurrence', 'daily' ), 'woocommerce_tracker_send_event' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Create pages on installation.
|
||||
*/
|
||||
public static function maybe_create_pages() {
|
||||
if ( empty( get_option( 'woocommerce_db_version' ) ) ) {
|
||||
self::create_pages();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create pages that the plugin relies on, storing page IDs in variables.
|
||||
*/
|
||||
|
@ -753,7 +748,7 @@ class WC_Install {
|
|||
|
||||
// Add constraint to download logs if the columns matches.
|
||||
if ( ! empty( $download_permissions_column_type ) && ! empty( $download_log_column_type ) && $download_permissions_column_type === $download_log_column_type ) {
|
||||
$fk_result = $wpdb->get_row( "SHOW CREATE TABLE {$wpdb->prefix}wc_download_log" ); // WPCS: unprepared SQL ok.
|
||||
$fk_result = $wpdb->get_row( "SHOW CREATE TABLE {$wpdb->prefix}wc_download_log" );
|
||||
if ( false === strpos( $fk_result->{'Create Table'}, "fk_{$wpdb->prefix}wc_download_log_permission_id" ) ) {
|
||||
$wpdb->query(
|
||||
"ALTER TABLE `{$wpdb->prefix}wc_download_log`
|
||||
|
|
|
@ -426,7 +426,7 @@ class WC_Order extends WC_Abstract_Order {
|
|||
*/
|
||||
public function get_base_data() {
|
||||
return array_merge(
|
||||
array( 'id' => $this->get_id() ),
|
||||
array( 'id' => $this->get_id() ),
|
||||
$this->data,
|
||||
array( 'number' => $this->get_order_number() )
|
||||
);
|
||||
|
@ -983,7 +983,7 @@ class WC_Order extends WC_Abstract_Order {
|
|||
* @param string $address Name of address to set. billing or shipping.
|
||||
* @param mixed $value Value of the prop.
|
||||
*/
|
||||
protected function set_address_prop( $prop, $address = 'billing', $value ) {
|
||||
protected function set_address_prop( $prop, $address, $value ) {
|
||||
if ( array_key_exists( $prop, $this->data[ $address ] ) ) {
|
||||
if ( true === $this->object_read ) {
|
||||
if ( $value !== $this->data[ $address ][ $prop ] || ( isset( $this->changes[ $address ] ) && array_key_exists( $prop, $this->changes[ $address ] ) ) ) {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
if ( ! class_exists( 'WC_Privacy_Background_Process', false ) ) {
|
||||
include_once dirname( __FILE__ ) . '/class-wc-privacy-background-process.php';
|
||||
include_once __DIR__ . '/class-wc-privacy-background-process.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,8 +35,8 @@ class WC_Privacy extends WC_Abstract_Privacy {
|
|||
}
|
||||
|
||||
// Include supporting classes.
|
||||
include_once 'class-wc-privacy-erasers.php';
|
||||
include_once 'class-wc-privacy-exporters.php';
|
||||
include_once __DIR__ . '/class-wc-privacy-erasers.php';
|
||||
include_once __DIR__ . '/class-wc-privacy-exporters.php';
|
||||
|
||||
// This hook registers WooCommerce data exporters.
|
||||
$this->add_exporter( 'woocommerce-customer-data', __( 'WooCommerce Customer Data', 'woocommerce' ), array( 'WC_Privacy_Exporters', 'customer_data_exporter' ) );
|
||||
|
|
|
@ -593,94 +593,6 @@ class WC_Product_Variable extends WC_Product {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether or not the product is visible in the catalog (doesn't trigger filters).
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function is_visible_core() {
|
||||
if ( ! $this->parent_is_visible_core() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$query_filters = $this->get_layered_nav_chosen_attributes();
|
||||
if ( empty( $query_filters ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If there are attribute filters in the request, a variable product will be visible
|
||||
* if at least one of the available variations matches the filters.
|
||||
*/
|
||||
|
||||
$attributes_with_terms = array();
|
||||
array_walk(
|
||||
$query_filters,
|
||||
function( $value, $key ) use ( &$attributes_with_terms ) {
|
||||
$attributes_with_terms[ $key ] = $value['terms'];
|
||||
}
|
||||
);
|
||||
|
||||
$variations = $this->get_available_variations( 'objects' );
|
||||
foreach ( $variations as $variation ) {
|
||||
if ( $this->variation_matches_filters( $variation, $attributes_with_terms ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a given variation matches the active attribute filters.
|
||||
*
|
||||
* @param WC_Product_Variation $variation The variation to check.
|
||||
* @param array $query_filters The active filters as an array of attribute_name => [term1, term2...].
|
||||
*
|
||||
* @return bool True if the variation matches the active attribute filters.
|
||||
*/
|
||||
private function variation_matches_filters( WC_Product_Variation $variation, array $query_filters ) {
|
||||
// Get the variation attributes as an array of attribute_name => attribute_value.
|
||||
// The array_filter will filter out attributes having a value of '', these correspond
|
||||
// to "Any..." variations that don't participate in filtering.
|
||||
$variation_attributes = array_filter( $variation->get_variation_attributes( false ) );
|
||||
|
||||
$variation_attribute_names_in_filters = array_intersect( array_keys( $query_filters ), array_keys( $variation_attributes ) );
|
||||
if ( empty( $variation_attribute_names_in_filters ) ) {
|
||||
// The variation doesn't have any attribute that participates in filtering so we consider it a match.
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach ( $variation_attribute_names_in_filters as $attribute_name ) {
|
||||
if ( ! in_array( $variation_attributes[ $attribute_name ], $query_filters[ $attribute_name ], true ) ) {
|
||||
// Multiple filters interact with AND logic, so as soon as one of them
|
||||
// doesn't match then the variation doesn't match.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* What does is_visible_core in the parent class say?
|
||||
* This method exists to ease unit testing.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function parent_is_visible_core() {
|
||||
return parent::is_visible_core();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of attributes and terms selected with the layered nav widget.
|
||||
* This method exists to ease unit testing.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function get_layered_nav_chosen_attributes() {
|
||||
return WC()->query::get_layered_nav_chosen_attributes();
|
||||
}
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
@ -598,7 +598,6 @@ class WC_Product_Variation extends WC_Product_Simple {
|
|||
return false;
|
||||
}
|
||||
|
||||
wp_delete_object_term_relationships( $variation_id, wc_get_attribute_taxonomy_names() );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ class WC_Query {
|
|||
/**
|
||||
* Reference to the main product query on the page.
|
||||
*
|
||||
* @var array
|
||||
* @var WP_Query
|
||||
*/
|
||||
private static $product_query;
|
||||
|
||||
|
@ -88,10 +88,14 @@ class WC_Query {
|
|||
/**
|
||||
* Get page title for an endpoint.
|
||||
*
|
||||
* @param string $endpoint Endpoint key.
|
||||
* @return string
|
||||
* @param string $endpoint Endpoint key.
|
||||
* @param string $action Optional action or variation within the endpoint.
|
||||
*
|
||||
* @since 2.3.0
|
||||
* @since 4.6.0 Added $action parameter.
|
||||
* @return string The page title.
|
||||
*/
|
||||
public function get_endpoint_title( $endpoint ) {
|
||||
public function get_endpoint_title( $endpoint, $action = '' ) {
|
||||
global $wp;
|
||||
|
||||
switch ( $endpoint ) {
|
||||
|
@ -130,14 +134,30 @@ class WC_Query {
|
|||
$title = __( 'Add payment method', 'woocommerce' );
|
||||
break;
|
||||
case 'lost-password':
|
||||
$title = __( 'Lost password', 'woocommerce' );
|
||||
if ( in_array( $action, array( 'rp', 'resetpass', 'newaccount' ) ) ) {
|
||||
$title = __( 'Set password', 'woocommerce' );
|
||||
} else {
|
||||
$title = __( 'Lost password', 'woocommerce' );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
$title = '';
|
||||
break;
|
||||
}
|
||||
|
||||
return apply_filters( 'woocommerce_endpoint_' . $endpoint . '_title', $title, $endpoint );
|
||||
/**
|
||||
* Filters the page title used for my-account endpoints.
|
||||
*
|
||||
* @since 2.6.0
|
||||
* @since 4.6.0 Added $action parameter.
|
||||
*
|
||||
* @see get_endpoint_title()
|
||||
*
|
||||
* @param string $title Default title.
|
||||
* @param string $endpoint Endpoint key.
|
||||
* @param string $action Optional action or variation within the endpoint.
|
||||
*/
|
||||
return apply_filters( 'woocommerce_endpoint_' . $endpoint . '_title', $title, $endpoint, $action );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -362,23 +382,10 @@ class WC_Query {
|
|||
if ( 'product_query' !== $query->get( 'wc_query' ) ) {
|
||||
return $posts;
|
||||
}
|
||||
$this->adjust_total_pages();
|
||||
$this->remove_product_query_filters( $posts );
|
||||
return $posts;
|
||||
}
|
||||
|
||||
/**
|
||||
* The 'adjust_posts_count' method that handles the 'found_posts' filter indirectly initializes
|
||||
* the loop properties with a call to 'wc_setup_loop'. This includes setting 'total_pages' to
|
||||
* '$GLOBALS['wp_query']->max_num_pages', which at that point has a value of zero.
|
||||
* Thus we need to set the real value from the 'the_posts' filter, where $GLOBALS['wp_query']->max_num_pages'
|
||||
* will aready have been initialized.
|
||||
*/
|
||||
private function adjust_total_pages() {
|
||||
if ( 0 === wc_get_loop_prop( 'total_pages' ) ) {
|
||||
wc_set_loop_prop( 'total_pages', $GLOBALS['wp_query']->max_num_pages );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre_get_posts above may adjust the main query to add WooCommerce logic. When this query is done, we need to ensure
|
||||
|
@ -396,12 +403,9 @@ class WC_Query {
|
|||
}
|
||||
|
||||
/**
|
||||
* When we are listing products and the request is filtering by attributes via layered nav plugin
|
||||
* we need to adjust the total posts count to account for variable products having stock
|
||||
* in some variations but not in others.
|
||||
* We do that by just checking if each product is visible.
|
||||
*
|
||||
* We also cache the post visibility so that it isn't checked again when displaying the posts list.
|
||||
* This function used to be hooked to found_posts and adjust the posts count when the filtering by attribute
|
||||
* widget was used and variable products were present. Now it isn't hooked anymore and does nothing but return
|
||||
* the input unchanged, since the pull request in which it was introduced has been reverted.
|
||||
*
|
||||
* @since 4.4.0
|
||||
* @param int $count Original posts count, as supplied by the found_posts filter.
|
||||
|
@ -410,35 +414,6 @@ class WC_Query {
|
|||
* @return int Adjusted posts count.
|
||||
*/
|
||||
public function adjust_posts_count( $count, $query ) {
|
||||
if ( ! $query->get( 'wc_query' ) ) {
|
||||
return $count;
|
||||
}
|
||||
|
||||
$posts = $this->get_current_posts();
|
||||
if ( is_null( $posts ) ) {
|
||||
return $count;
|
||||
}
|
||||
|
||||
foreach ( $posts as $post ) {
|
||||
if ( is_object( $post ) && 'product' !== $post->post_type ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$product_id = is_object( $post ) ? $post->ID : $post;
|
||||
$product = wc_get_product( $product_id );
|
||||
if ( ! is_object( $product ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( $product->is_visible() ) {
|
||||
wc_set_loop_product_visibility( $product_id, true );
|
||||
} else {
|
||||
wc_set_loop_product_visibility( $product_id, false );
|
||||
$count--;
|
||||
}
|
||||
}
|
||||
|
||||
wc_set_loop_prop( 'total', $count );
|
||||
return $count;
|
||||
}
|
||||
|
||||
|
@ -514,7 +489,7 @@ class WC_Query {
|
|||
// Additonal hooks to change WP Query.
|
||||
add_filter( 'posts_clauses', array( $this, 'price_filter_post_clauses' ), 10, 2 );
|
||||
add_filter( 'the_posts', array( $this, 'handle_get_posts' ), 10, 2 );
|
||||
add_filter( 'found_posts', array( $this, 'adjust_posts_count' ), 10, 2 );
|
||||
|
||||
do_action( 'woocommerce_product_query', $q, $this );
|
||||
}
|
||||
|
||||
|
@ -614,7 +589,7 @@ class WC_Query {
|
|||
* @since 3.6.0
|
||||
*
|
||||
* @param array $args Query args.
|
||||
* @param WC_Query $wp_query WC_Query object.
|
||||
* @param WP_Query $wp_query WP_Query object.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
|
@ -806,7 +781,7 @@ class WC_Query {
|
|||
/**
|
||||
* Get the main query which product queries ran against.
|
||||
*
|
||||
* @return array
|
||||
* @return WP_Query
|
||||
*/
|
||||
public static function get_main_query() {
|
||||
return self::$product_query;
|
||||
|
|
|
@ -241,7 +241,16 @@ class WC_Regenerate_Images_Request extends WC_Background_Process {
|
|||
* @return array
|
||||
*/
|
||||
public function adjust_intermediate_image_sizes( $sizes ) {
|
||||
return apply_filters( 'woocommerce_regenerate_images_intermediate_image_sizes', array( 'woocommerce_thumbnail', 'woocommerce_gallery_thumbnail', 'woocommerce_single' ) );
|
||||
// Prevent a filter loop.
|
||||
$unfiltered_sizes = array( 'woocommerce_thumbnail', 'woocommerce_gallery_thumbnail', 'woocommerce_single' );
|
||||
static $in_filter = false;
|
||||
if ( $in_filter ) {
|
||||
return $unfiltered_sizes;
|
||||
}
|
||||
$in_filter = true;
|
||||
$filtered_sizes = apply_filters( 'woocommerce_regenerate_images_intermediate_image_sizes', $unfiltered_sizes );
|
||||
$in_filter = false;
|
||||
return $filtered_sizes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
* REST API Authentication
|
||||
*
|
||||
* @package WooCommerce\API
|
||||
* @package WooCommerce\RestApi
|
||||
* @since 2.6.0
|
||||
*/
|
||||
|
||||
|
@ -39,6 +39,7 @@ class WC_REST_Authentication {
|
|||
*/
|
||||
public function __construct() {
|
||||
add_filter( 'determine_current_user', array( $this, 'authenticate' ), 15 );
|
||||
add_filter( 'rest_authentication_errors', array( $this, 'authentication_fallback' ) );
|
||||
add_filter( 'rest_authentication_errors', array( $this, 'check_authentication_error' ), 15 );
|
||||
add_filter( 'rest_post_dispatch', array( $this, 'send_unauthorized_headers' ), 50 );
|
||||
add_filter( 'rest_pre_dispatch', array( $this, 'check_user_permissions' ), 10, 3 );
|
||||
|
@ -89,6 +90,33 @@ class WC_REST_Authentication {
|
|||
return $this->perform_oauth_authentication();
|
||||
}
|
||||
|
||||
/**
|
||||
* Authenticate the user if authentication wasn't performed during the
|
||||
* determine_current_user action.
|
||||
*
|
||||
* Necessary in cases where wp_get_current_user() is called before WooCommerce is loaded.
|
||||
*
|
||||
* @see https://github.com/woocommerce/woocommerce/issues/26847
|
||||
*
|
||||
* @param WP_Error|null|bool $error Error data.
|
||||
* @return WP_Error|null|bool
|
||||
*/
|
||||
public function authentication_fallback( $error ) {
|
||||
if ( ! empty( $error ) ) {
|
||||
// Another plugin has already declared a failure.
|
||||
return $error;
|
||||
}
|
||||
if ( empty( $this->error ) && empty( $this->auth_method ) && empty( $this->user ) && 0 === get_current_user_id() ) {
|
||||
// Authentication hasn't occurred during `determine_current_user`, so check auth.
|
||||
$user_id = $this->authenticate( false );
|
||||
if ( $user_id ) {
|
||||
wp_set_current_user( $user_id );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return $error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for authentication error.
|
||||
*
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Extends Exception to provide additional data.
|
||||
*
|
||||
* @package WooCommerce\API
|
||||
* @package WooCommerce\RestApi
|
||||
* @since 2.6.0
|
||||
*/
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
require_once 'legacy/class-wc-legacy-shipping-zone.php';
|
||||
require_once __DIR__ . '/legacy/class-wc-legacy-shipping-zone.php';
|
||||
|
||||
/**
|
||||
* WC_Shipping_Zone class.
|
||||
|
|
|
@ -150,7 +150,7 @@ class WC_Shipping {
|
|||
|
||||
/**
|
||||
* Loads all shipping methods which are hooked in.
|
||||
* If a $package is passed some methods may add themselves conditionally and zones will be used.
|
||||
* If a $package is passed, some methods may add themselves conditionally and zones will be used.
|
||||
*
|
||||
* @param array $package Package information.
|
||||
* @return WC_Shipping_Method[]
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
* @package WooCommerce\Classes
|
||||
*/
|
||||
|
||||
use Automattic\WooCommerce\Utilities\NumberUtil;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
|
@ -98,7 +100,7 @@ class WC_Tax {
|
|||
* @return float
|
||||
*/
|
||||
public static function round( $in ) {
|
||||
return apply_filters( 'woocommerce_tax_round', round( $in, wc_get_rounding_precision() ), $in );
|
||||
return apply_filters( 'woocommerce_tax_round', NumberUtil::round( $in, wc_get_rounding_precision() ), $in );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -403,7 +405,7 @@ class WC_Tax {
|
|||
|
||||
$criteria_string = implode( ' AND ', $criteria );
|
||||
|
||||
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
|
||||
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||
$found_rates = $wpdb->get_results(
|
||||
"
|
||||
SELECT tax_rates.*, COUNT( locations.location_id ) as postcode_count, COUNT( locations2.location_id ) as city_count
|
||||
|
|
|
@ -83,7 +83,12 @@ class WC_Template_Loader {
|
|||
$template = locate_template( $search_files );
|
||||
|
||||
if ( ! $template || WC_TEMPLATE_DEBUG_MODE ) {
|
||||
$template = WC()->plugin_path() . '/templates/' . $default_file;
|
||||
if ( false !== strpos( $default_file, 'product_cat' ) || false !== strpos( $default_file, 'product_tag' ) ) {
|
||||
$cs_template = str_replace( '_', '-', $default_file );
|
||||
$template = WC()->plugin_path() . '/templates/' . $cs_template;
|
||||
} else {
|
||||
$template = WC()->plugin_path() . '/templates/' . $default_file;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,14 +154,27 @@ class WC_Template_Loader {
|
|||
}
|
||||
|
||||
if ( is_product_taxonomy() ) {
|
||||
$object = get_queried_object();
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '.php';
|
||||
$object = get_queried_object();
|
||||
if ( is_tax( 'product_cat' ) || is_tax( 'product_tag' ) ) {
|
||||
$cs_taxonomy = str_replace( '_', '-', $object->taxonomy );
|
||||
$cs_default = str_replace( '_', '-', $default_file );
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $cs_taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $cs_taxonomy . '.php';
|
||||
$templates[] = $cs_default;
|
||||
} else {
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
|
||||
$templates[] = 'taxonomy-' . $object->taxonomy . '.php';
|
||||
$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '.php';
|
||||
}
|
||||
}
|
||||
|
||||
$templates[] = $default_file;
|
||||
if ( isset( $cs_default ) ) {
|
||||
$templates[] = WC()->template_path() . $cs_default;
|
||||
}
|
||||
$templates[] = WC()->template_path() . $default_file;
|
||||
|
||||
return array_unique( $templates );
|
||||
|
|
|
@ -202,11 +202,19 @@ class WC_Tracker {
|
|||
$memory = max( $memory, $system_memory );
|
||||
}
|
||||
|
||||
// WordPress 5.5+ environment type specification.
|
||||
// 'production' is the default in WP, thus using it as a default here, too.
|
||||
$environment_type = 'production';
|
||||
if ( function_exists( 'wp_get_environment_type' ) ) {
|
||||
$environment_type = wp_get_environment_type();
|
||||
}
|
||||
|
||||
$wp_data['memory_limit'] = size_format( $memory );
|
||||
$wp_data['debug_mode'] = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? 'Yes' : 'No';
|
||||
$wp_data['locale'] = get_locale();
|
||||
$wp_data['version'] = get_bloginfo( 'version' );
|
||||
$wp_data['multisite'] = is_multisite() ? 'Yes' : 'No';
|
||||
$wp_data['env_type'] = $environment_type;
|
||||
|
||||
return $wp_data;
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue