src/VindiWoocommerce.php
A file should declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it should execute logic with side effects, but should not do both. The first symbol is defined on line 11 and the first side effect is on line 5.<?php namespace VindiPaymentGateways; require_once plugin_dir_path(__FILE__) . '/utils/AbstractInstance.php'; /** * @SuppressWarnings(PHPMD) */class WcVindiPayment extends AbstractInstance{ /** * @var string */ const TEMPLATE_DIR = '/templates/'; /** * @var string */ const WC_API_CALLBACK = 'vindi_webhook'; /** * Instance of this class. * * @var object */Visibility must be declared on property "$instance" static $instance = null; /** * @var VindiPaymentGateway\VindiLanguages */ private $languages; /** * @var VindiPaymentGateway\VindiSettings */ private $settings; /** * @var VindiPaymentGateway\VindiControllers */ private $controllers; /** * @var VindiPaymentGateway\VindiWebhooks */ private $webhooks; /** * @var VindiPaymentGateway\FrontendFilesLoader */ private $frontend_files_loader; /** * @var VindiPaymentGateway\VindiSubscriptionStatusHandler */ private $subscription_status_handler; /** * @var VindiPaymentGateway\ProductsMetabox */ private $product_metabox; /** * @var VindiPaymentGateway\VindiProductStatus */ private $vindi_status_notifier; /** * @var VindiPaymentGateway\InterestPriceHandler */ private $interest_price_handler; /** * @var VindiWCSRenewalDisable */ private $wcs_renewal_disable; /** * @var VindiPaymentGateway\WcVindiColumns */ private $custom_shop_order_columns; /** * @var VindiPaymentGateway\ButtonPaymentLink */ private $add_button_payment; /** * @var VindiPaymentGateway\WCCartSubscriptionLimiter */ private $subscription_limiter; /** * @var VindiPaymentGateway\CheckoutGateways */ private $gateway_filters_checkout; /** * @var VindiPaymentGateway\OrderSetup */ private $parent_order_setup; /** * @var VindiPaymentGateway\FilterCartNeedsPayment */ private $filter_cart_needs_payment; /** * @var VindiPaymentGateway\RenewPixCharge */ private $renew_pix_charge; /** * @var VindiPaymentGateway\GenerateUser; */ private $generate_user; /** * @var VindiPaymentGateway\OrderActionsRemover; */ private $actions_remover; public function __construct() { // Checks if Woocommerce is installed and activated $this->init(); $this->languages = new VindiLanguages(); $this->settings = new VindiSettings(); $this->controllers = new VindiControllers($this->settings); $this->webhooks = new VindiWebhooks($this->settings); $this->frontend_files_loader = new FrontendFilesLoader(); $this->subscription_status_handler = new VindiSubscriptionStatusHandler($this->settings); $this->vindi_status_notifier = new VindiProductStatus($this->settings); $this->interest_price_handler = new InterestPriceHandler(); $this->product_metabox = new ProductsMetabox(); $this->wcs_renewal_disable = new VindiWCSRenewalDisable(); $this->custom_shop_order_columns = new WcVindiColumns(); $this->add_button_payment = new ButtonPaymentLink(); $this->subscription_limiter = new WCCartSubscriptionLimiter(); $this->gateway_filters_checkout = new CheckoutGateways(); $this->parent_order_setup = new OrderSetup(); $this->filter_cart_needs_payment = new FilterCartNeedsPayment(); $this->renew_pix_charge = new RenewPixCharge(); $this->generate_user = new GenerateUser(); $this->actions_remover = new OrderActionsRemover(); /** * Add Gateway to Woocommerce */ add_filter('woocommerce_payment_gateways', array(&$this, 'add_gateway')); /** * Register webhook handler */ add_action('woocommerce_api_' . self::WC_API_CALLBACK, array( $this->webhooks, 'handle' )); do_action('woocommerce_set_cart_cookies', true); } /** * Init the plugin after plugins_loaded so environment variables are set. * * @since 1.0.0 * @version 1.0.0 */ public function init() { // Helpers and Languages require_once plugin_dir_path(__FILE__) . '/services/Api.php'; require_once plugin_dir_path(__FILE__) . '/services/Logger.php'; require_once plugin_dir_path(__FILE__) . '/i18n/Languages.php'; require_once plugin_dir_path(__FILE__) . '/services/VindiHelpers.php'; require_once plugin_dir_path(__FILE__) . '/services/Webhooks.php'; require_once plugin_dir_path(__FILE__) . '/services/WebhooksHelpers.php'; // Loading Abstract Method and Utils require_once plugin_dir_path(__FILE__) . '/utils/PaymentGateway.php'; require_once plugin_dir_path(__FILE__) . '/utils/Conversions.php'; require_once plugin_dir_path(__FILE__) . '/utils/RedirectCheckout.php'; require_once plugin_dir_path(__FILE__) . '/utils/PostMeta.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/CouponsMetaBox.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/ProductsMetabox.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/Settings.php'; require_once plugin_dir_path(__FILE__) . '/includes/gateways/CreditPayment.php'; require_once plugin_dir_path(__FILE__) . '/includes/gateways/BankSlipPayment.php'; require_once plugin_dir_path(__FILE__) . '/includes/gateways/PixPayment.php'; require_once plugin_dir_path(__FILE__) . '/includes/gateways/BolepixPayment.php'; require_once plugin_dir_path(__FILE__) . '/utils/SubscriptionStatusHandler.php'; require_once plugin_dir_path(__FILE__) . '/utils/InterestPriceHandler.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/ProductStatus.php'; // Routes import require_once plugin_dir_path(__FILE__) . '/routes/RoutesApi.php'; // Controllers require_once plugin_dir_path(__FILE__) . '/controllers/index.php'; require_once plugin_dir_path(__FILE__) . '/utils/PaymentProcessor.php'; $this->initialize_dependencies(); } public static function getPath() { return plugin_dir_path(__FILE__); } public static function get_instance() { require_once plugin_dir_path(__FILE__) . '/utils/FrontendFilesLoader.php'; new FrontendFilesLoader(); if (VindiDependencies::check()) { // If the single instance hasn't been set, set it now. if (null == self::$instance) { self::$instance = new self; } return self::$instance; } } /** * Add the gateway to WooCommerce. * @param array $methods WooCommerce payment methods. * @return array Payment methods with Vindi. */ public function add_gateway($methods) { $methods[] = new VindiCreditGateway($this->settings, $this->controllers); $methods[] = new VindiBankSlipGateway($this->settings, $this->controllers); $methods[] = new VindiPixGateway($this->settings, $this->controllers); $methods[] = new VindiBolepixGateway($this->settings, $this->controllers); return $methods; } public function initialize_dependencies() { require_once plugin_dir_path(__FILE__) . '/includes/gateways/RenewPixCharge.php'; require_once plugin_dir_path(__FILE__) . '/includes/checkout/CheckoutGateways.php'; require_once plugin_dir_path(__FILE__) . '/includes/checkout/WcsOrderSetup.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/WcVindiColumns.php'; require_once plugin_dir_path(__FILE__) . '/includes/admin/ButtonPaymentLink.php'; //Validators require_once plugin_dir_path(__FILE__) . '/validators/WCCartSubscriptionLimiter.php'; require_once plugin_dir_path(__FILE__) . '/validators/WCFilterCartNeedsPayment.php'; require_once plugin_dir_path(__FILE__) . '/utils/WCSRenewalDisable.php'; require_once plugin_dir_path(__FILE__) . '/utils/GenerateUser.php'; require_once plugin_dir_path(__FILE__) . '/utils/FieldsArray.php'; require_once plugin_dir_path(__FILE__) . '/utils/ViewOrderHelpers.php'; require_once plugin_dir_path(__FILE__) . '/utils/CreditPaymentHelpers.php'; require_once plugin_dir_path(__FILE__) . '/utils/OrderActionsCustomizer.php'; }} add_action('plugins_loaded', array(WcVindiPayment::class, 'get_instance'));