addButtons(); $this->addHooks(); parent::__construct(); } protected function addButtons() { $this->addButton(new ProductsPageImportProductsBtn()); $this->addButton(new ProductsPageImportProductBtn()); $this->addButton(new ProductPageImportSingleBtn()); $this->addButton(new ProductPageImportVariationBtn()); $this->addButton(new OrdersPageImportProductsBtn()); $this->addButton(new OrdersPageImportOrdersBtn()); $this->addButton(new OrdersPageImportOrderBtn()); $this->addButton(new OrderPageImportOrderBtn()); $this->addButton(new OrderPageImportAllItemsBtn()); } protected function addButton($btn) { $this->integrationButtons[$btn->getSlug()] = $btn; $this->profileTypes = array_merge($this->profileTypes, array($btn->getProfileType())); } public function getButtons() { return $this->integrationButtons; } public function getBySlug($btnSlug) { return !empty($this->integrationButtons[$btnSlug]) ? $this->integrationButtons[$btnSlug] : null; } public function getButtonsByIntegrationTypes($integrationTypes) { return array_filter($this->integrationButtons, function ($integrationButton) use ($integrationTypes) { return empty(array_diff($integrationTypes, $integrationButton->getIntegrationTypes())); }); } public function getButtonsIncludingSameIntegrationTypesBySlug($btnSlug) { if (empty($this->integrationButtons[$btnSlug])) { return array(); } return $this->getButtonsByIntegrationTypes($this->integrationButtons[$btnSlug]->getIntegrationTypes()); } public function addHooks() { add_filter('uslp_integration_buttons', function ($value, $slug) { $integrationBtn = IntegrationButtons::getInstance()->getBySlug($slug); if (empty($integrationBtn)) { return array( 'success' => false, 'error' => array(__('Button info not found.', 'a4-barcode-generator')), ); } return array( 'success' => true, 'error' => false, 'wpAction' => Core::ajax_action($integrationBtn::AJAX_ACTION), 'integration' => $integrationBtn->getIntegrationTypes(), 'buttonSlug' => $integrationBtn->getSlug(), 'availableProfiles' => $integrationBtn->getAvailableProfiles(), ); }, 10, 2); } }