Commit Graph

171 Commits

Author SHA1 Message Date
Nestor Soriano 6fd84a0401 Add shortcut methods for the LegacyProxy in the WooCommerce class.
The following methods are added and can be invoked using `WC()`,
they just redirect to the same methods in LegacyProxy:

call_function
call_static
get_instance_of
2020-07-24 09:25:11 +02:00
Nestor Soriano 064ae558ab Changes in the overall organization of the dependency injection:
- The `Container` class now implements `Psr\Container\ContainerInterface`
  (and registers itself as such), holding a private instance of the
  real container. This way it's a read-only container from the point
  of view of plugins (which should use their own containers, but
  can still use this to get WooCommerce classes).
- All registrations are now done in the `Container` constructor via
  service providers.
- The container instance is now held in a global variable, set in
  `woocommerce.php`
- Added the `wc_get_container` function for old code.
- Added the `AbstractServiceProvider` class, which inherits with the
  corresponding League's class and adds some utility methods,
  most notably `add/shareWithAutoArguments`.
- Added the `ActionsProxy` and `LegacyProxy` classes, they are
  registered via a dedicated service provider.
- `WC_Queue_Interface` is no longer resolvable via the container
  (which is for classes inside `src` only).
- All the method names in the new classes have the format `fooBarFizz`
  to be PSR4 compliant, so the MethodNameInvalid error has been
  disabled in phpcs.xml for the `src` directory.
- Introduced the `@public` annotation for public API classes
  (classes that plugins can use and whose backwards compatibility
  we guarantee), applied to `ActionsProxy` and to `LegacyProxy` for now.
- Removed the hack for the autoloader as now it doesn't work anyway.
  For the changes in this branch to work, now WP_DEBUG must be false.
2020-07-24 09:23:01 +02:00
Nestor Soriano a7829525eb Changes in the dependency injection container:
- Renamed from `ObjectContainer` to `Container`.
- It now inherits from PHP League's `Container`.
- It has now a `defineAsSharedAutowired` method.
- Initialization moved to the `WooCommerce::init_container` method.
- The static method for object resolution is now `WooCommerce::get_instance_of`.
2020-07-24 09:20:24 +02:00
Nestor Soriano 281ec18158 Undo the registration of old singletons in the DI container.
The container will in principle be used only to register classes
in the `src` directory.

Also, CustomerProvider class removed.
2020-07-24 09:20:24 +02:00
Nestor Soriano 312383ae47 First steps towards introducing a dependency injection framework.
- Add PHP League's Container package via Composer.
- Add an ObjectContainer class that encapsulates all the configuration
  and insulates the codebase from the concrete DI engine used.
- Add an improved ReflectionContainer class that will allow to
  register individual classes as singletons while autowiring.
- Use ObjectContainer to resolve the WooCommerce class, everything
  instantiated with "new" inside it, and all singletons that are
  usually obtained via WC() function.
- Introduce the CustomerProvider class.
- Introduce a service provider to resolve WC_Queue_Interface,
  this replaces the WC_Queue class.
- Mark as obsolete all the replaced "instance()" methods,
  and the entire WC_Queue class.
2020-07-24 09:20:21 +02:00
Peter Fabian 23028a90a1 Schema has not been updated, so revert. 2020-07-13 15:34:54 +02:00
Peter Fabian 6bc0ca724f Update versions and changelog from latest releases. 2020-07-09 13:18:51 +02:00
Peter Fabian dc0d567137
Merge pull request #26775 from woocommerce/update/php7.2
Show notice to update to latest PHP if version is < 7.2
2020-06-16 12:56:15 +02:00
vedanshujain 513b517b5b Show notice to update to latest PHP if version is < 7.2 2020-06-15 21:51:03 +05:30
Vedanshu Jain b45373fe0c Revert "Revert "Introduce a `reserved stock` class and database table to prevent race conditions during checkout"" 2020-06-05 15:18:01 +05:30
vedanshujain e0de059f23 Use seperate db version to better track changes 2020-06-04 22:38:13 +05:30
Claudio Sanches f01c5a3b79 Start 4.3.0 development 2020-05-12 17:49:20 -03:00
Vedanshu Jain ee119e0a7e
Revert "Introduce a `reserved stock` class and database table to prevent race conditions during checkout" 2020-04-21 15:37:21 +05:30
Peter Fabian 5a1ad5daf1 Updated min WP version to 5.2 2020-04-07 11:25:29 +02:00
Mike Jolley 62e099bd84 Add table schema 2020-04-03 15:55:15 +01:00
Rodrigo Primo 83691541c2 Bump WooCommerce version since 4.1.0 development has begun 2020-03-11 11:37:35 -03:00
Peter Fabian 7ec65a1b35 Added the WC Admin enabled db update notice. 2020-02-23 21:59:03 +01:00
Mike Jolley a67ece743d Avoid Automattic\Jetpack\Constants in main woocommerce file 2020-02-18 15:13:30 +00:00
Peter Fabian 68fe4d9f0e Used the final desired version in class WooCommerce. 2020-02-06 21:33:22 +01:00
Peter Fabian 422d8787f5 Updated version to 4.0.0-beta.1 2020-02-06 14:00:43 +01:00
Christopher Allford 57734ca8ce Merge branch 'master' into refactor/add-jetpack-constants 2020-02-04 14:36:35 -08:00
Claudio Sanches 94d1b742ad
Merge pull request #25545 from woocommerce/prep/after-3.9
Bumped versions for the upcoming release.
2020-02-04 13:05:27 -03:00
Peter Fabian e83934edff Bumped versions for the upcoming release. 2020-01-31 17:53:02 +01:00
Christopher Allford 6ad091a9b7 Changed all of the constant accesses into corresponding Automattic\Jetpack\Constants usages 2020-01-28 21:21:29 -08:00
Ron Rennick fda63f4536 move action scheduler to external via composer 2020-01-15 10:31:04 -04:00
Peter Fabian 72925ef41c Centralize check for default themes.
This should make Storefront appear in the Setup Wizard again.
2019-12-11 18:35:04 +01:00
Claudio Sanches 589d8c4591 Updated WooCommerce::$version 2019-12-10 22:55:08 -03:00
Claudio Sanches d7e2a98aaf
Merge pull request #24828 from woocommerce/fix/24695
Adds shared code between Orders and Cart calculation logic.
2019-12-05 12:39:50 -03:00
vedanshujain bee7ea4490 Add trait which contains common total calc logic.
`WC_Abstract_Order` and `WC_Cart_Totals` have their own logic to calculate totals. This means that we would have to fix in two places. This commit adds a trait which can be used to place shared logic between above two classes.
2019-11-25 17:53:14 +05:30
Peter Fabian bc04b8f45b Added basic declaration for WC support to Twentytwenty. 2019-11-19 17:58:16 +01:00
vedanshujain 451139e68e Use MIN_PHP and MIN_WP constants in PHP_MIN_REQUIREMENT value so that we don't have to change it everytime. 2019-10-15 16:07:03 +05:30
vedanshujain 20e1584654 Update `$version` to `3.8.0` because its used for checking DB Upgrades 2019-10-03 12:11:31 +05:30
vedanshujain cd2a63c293 Update version to 3.8-beta.1 2019-10-03 12:07:16 +05:30
Gerhard 414d31d191 Bump PHP recommended version to 7.0 and WP recommended version to 5.0 2019-10-01 12:21:51 +02:00
David Stone 1c47315b89 Fix trying to access array offset on a boolean notice 2019-08-19 20:11:43 -06:00
Akeda Bagus e1743bfadb
Remove extra new line. 2019-07-11 18:22:39 +07:00
Akeda Bagus d51e843190
Move WCCOM Site related files to `/wccom-site` directory.
Also use queue when installing products so API can respond immediately.
2019-07-11 16:01:53 +07:00
Mike Jolley c928188831 Update from master 2019-07-10 12:57:02 +01:00
Rodrigo Primo 2827b57060
Merge pull request #23785 from woocommerce/update/14361
Use WP 5.0 determine_locale() function
2019-07-09 15:46:47 -03:00
Gerhard 7038c73ab4 Merge branch 'master' into update/exclude-compiled-assets-from-git 2019-07-09 10:57:40 +02:00
Claudio Sanches db06d3dbae Merge branch 'master' into update/22164-tax-rate-class-table 2019-07-08 18:12:23 -03:00
Claudio Sanches da99bc8ca0 Merge branch 'master' into feature/feature-plugin-packages 2019-07-08 14:33:21 -03:00
Gerhard 7ff9788450 Use plugin_path instead of plugin_url. 2019-07-03 11:49:51 +02:00
Gerhard 77e8e36f72 Add notice when assets are not built, introduce grunt assets task for compiling and minifying assets. 2019-07-03 11:46:28 +02:00
Peter Fabian 6727fdba62 Updated constants' names to better reflect their usage. 2019-07-02 18:44:43 +02:00
Gerhard Potgieter 698625ce1d WP & PHP Upgrade Notices (#23975)
This commit introduces a banner that notifies and prompts users to upgrade their WordPress and/or PHP if they are outdated and not part of the minimum required versions going into WooCommerce 3.7.

* Add backward compatible function wp_check_php_version for sites running WP version smaller than 5.1

* Refactor some messaging, move widget to top of WC dashboard widgets, add buttons linking out to WP pages with instructions.

* Add missing variables for adding nag class

* Add styling to dashboard widget

* Rework css to use exclamation instead

* Clean up widget, make sure no widget is registered when dismissed. Add banner that links to widget and make it dismissable.

* Update constant to reflect minimum requirements.

* Don't show banner. Fix undefined variable.

* Remove dashboard widget

* Update banner link to docs site

* Add link to docs page where instructions live for updating

* Change button text

* Add UTM params to docs link

* Moved the msg logic from template to php file.

* Bail out early when PHP and WP versions are ok.

* Added missing translation functiog

* Extracted notice function from reset_admin_notices.

To follow suit with other similar functions in the file.

* Synchronize fetching of WP version.

* Removed unused functions.

* Corrected indent.

* Reduce number of variables and fixed coding standards

* Updated wording of the notice.
2019-06-26 14:09:20 -03:00
Mike Jolley 48e1dc5bec Remove init_packages from class-woocommerce 2019-06-25 13:12:14 +01:00
Mike Jolley 6bfe8d63c5 Load Packge files 2019-06-21 19:58:38 +01:00
Mike Jolley d31f6f70a2 Package init method 2019-06-21 17:28:46 +01:00
Mike Jolley e3dc79481d Init the blocks library using autoloading 2019-06-21 15:03:28 +01:00