WP_REST_Server::READABLE, 'callback' => array(new \Ceneo\Application\Controller\RestApiController(), 'getXMLFeed') ]); }); if ( ! function_exists( 'ceneo_force_xml_response' ) ) { function ceneo_force_xml_response( $served, $result, $request, $server ) { if ( '/ceneo/v1/feed' !== $request->get_route() ) { return $served; } $server->send_header( 'Content-Type', 'text/xml' ); echo $result->get_data(); exit; } add_filter( 'rest_pre_serve_request', 'ceneo_force_xml_response', 10, 4 ); } register_activation_hook( __FILE__, array(new \Ceneo\PluginManagement(), 'activate') ); register_deactivation_hook( __FILE__, array(new \Ceneo\PluginManagement(), 'deactivate') ); register_uninstall_hook(__FILE__, array('Ceneo\PluginManagement', 'uninstall')); if ( is_plugin_active( 'woocommerce-ceneo-official/woocommerce-ceneo-official.php' ) ) { add_filter( 'cron_schedules', array('Ceneo\PluginManagement', 'addCustomSchedules') ); add_action('generateFeed', array(new \Ceneo\Domain\Service\FeedGeneratorService(), 'generate') ); add_action('getNewOrdersFromCeneo', array(new \Ceneo\Application\Worker\CeneoBuyNowWorker(), 'getNewOrdersFromCeneo')); add_action( 'admin_menu', 'ceneo_admin_page' ); add_action( 'admin_action_assign-attributes', array(new \Ceneo\Application\Controller\CategoryMappingController(), 'postIntegrationOptions') ); add_action( 'admin_action_update-configuration', array(new \Ceneo\Application\Controller\DashboardController(), 'postDashboard') ); add_action( 'admin_action_generate-feed', array(new \Ceneo\Application\Controller\DashboardController(), 'postGenerateFeed') ); add_action( 'admin_action_stop-generate-feed', array(new \Ceneo\Application\Controller\DashboardController(), 'postStopGenerateFeed') ); add_action( 'admin_action_update-trusted-opinions', array(new \Ceneo\Application\Controller\DashboardController(), 'postTrustedOpinionsOptions') ); add_action( 'admin_action_synchronize-with-ceneo', array(new \Ceneo\Application\Worker\CeneoCategoriesWorker(), 'init')); add_action( 'admin_action_update-buy-now', array(new \Ceneo\Application\Controller\DashboardController(), 'postApiKey')); add_action( 'ceneo_generate_chunk', array( new \Ceneo\Domain\Service\FeedGeneratorService(), 'generateChunk' ) ); add_action( 'ceneo_synchronize_with_ceneo', array(new \Ceneo\Application\Worker\CeneoCategoriesWorker(), 'getCategoriesAndAttributesFromCeneoAndSaveToDb')); add_action( 'wp_head', array(new \Ceneo\Application\Controller\ProductPageController(), 'injectCeneoScript')); add_action( 'woocommerce_billing_fields', array(new \Ceneo\Application\Controller\ProductPageController(), 'injectZoCheckbox')); add_action( 'woocommerce_checkout_update_order_meta', array(new \Ceneo\Application\Controller\ProductPageController(), 'saveZoCheckbox')); add_action( 'woocommerce_thankyou', array(new \Ceneo\Application\Controller\ProductPageController(), 'getFinalConfirmationScript')); add_action( 'save_post', array(new \Ceneo\Application\Controller\ProductPageController(), 'postCeneoSettingsMetaBox'), 10, 1 ); add_action( 'woocommerce_product_options_attributes', array(new \Ceneo\Application\Controller\ProductPageController(), 'getSuggestedAttributes')); add_action( 'manage_shop_order_posts_custom_column', array(new \Ceneo\Application\Controller\OrderListController(), 'getCustomColumnData') ); add_action( 'woocommerce_product_data_panels', array(new \Ceneo\Application\Controller\ProductPageController(), 'getCeneoSettingsMetaBox') ); add_filter( 'manage_edit-shop_order_columns', array(new \Ceneo\Application\Controller\OrderListController(), 'getCustomColumn') ); /** * Handle custom ceneo query vars to get orders with the source and ceneo_id meta. * @param array $query - Args for WP_Query. * @param array $query_vars - Query vars from WC_Order_Query. * @return array modified $query */ if ( ! function_exists( 'ceneo_handle_query_var' ) ) { function ceneo_handle_query_var( $query, $query_vars ) { if ( ! empty( $query_vars['source'] ) ) { $query['meta_query'][] = array( 'key' => 'source', 'value' => esc_attr( $query_vars['source'] ), ); } if ( ! empty( $query_vars['ceneo_id'] ) ) { $query['meta_query'][] = array( 'key' => 'ceneo_id', 'value' => esc_attr( $query_vars['ceneo_id'] ), ); } if ( ! empty( $query_vars['vat_id'] ) ) { $query['meta_query'][] = array( 'key' => 'vat_id', 'value' => esc_attr( $query_vars['vat_id'] ), ); } return $query; } add_filter( 'woocommerce_order_data_store_cpt_get_orders_query', 'ceneo_handle_query_var', 10, 2 ); } if ( ! function_exists( 'ceneo_create_meta_tab' ) ) { function ceneo_create_meta_tab($productDataTabs) { $productDataTabs['ceneo-settings'] = [ 'label' => 'Ustawienia Ceneo', 'target' => 'ceneo_options', 'class' => array( 'show_if_simple', 'show_if_variable', 'show_if_grouped', 'show_if_external' ), ]; return $productDataTabs; } add_filter( 'woocommerce_product_data_tabs', 'ceneo_create_meta_tab' ); } if ( ! function_exists('ceneo_vat_id_display_admin_order_meta')) { function ceneo_vat_id_display_admin_order_meta($order) { echo '

' . __('NIP') . ': ' . ($order->get_meta('vat_id') ? $order->get_meta('vat_id') : '-') . '

'; } add_action('woocommerce_admin_order_data_after_billing_address', 'ceneo_vat_id_display_admin_order_meta', 10, 1); } if ( ! function_exists( 'ceneo_before_order_item_meta' ) ) { function ceneo_before_order_item_meta( $order ) { if ( $order->get_meta( 'source' ) === 'ceneo' ) { echo ''; } } add_action( 'woocommerce_admin_order_data_after_order_details', 'ceneo_before_order_item_meta', 10, 3 ); } if ( ! function_exists( 'ceneo_admin_page' ) ) { function ceneo_admin_page() { add_menu_page( 'Konfiguracja', 'Ceneo', 'manage_options', 'ceneo-integration', array( new \Ceneo\Application\Controller\DashboardController(), 'getDashboard' ), plugin_dir_url( __FILE__ ) . 'src/assets/img/logo-ceneo-menu.svg', 58 ); # add_submenu_page( 'wdvh-startpoint', 'page-from-plugin', 'menu-from-plugin', 'manage_options', 'plugin-slug', 'wvdh_settings_page' ); add_submenu_page( 'ceneo-integration', 'Mapowanie kategorii', 'Mapowanie kategorii', 'manage_options', 'ceneo-category-mapping', array( new \Ceneo\Application\Controller\CategoryMappingController(), 'getCategoryMapping' ) ); } } /** * Add custom styles for plugin */ if ( ! function_exists( 'ceneo_admin_scripts' ) ) { function ceneo_admin_scripts() { wp_register_style( 'wc-ceneo-material-icons', 'https://fonts.googleapis.com/icon?family=Material+Icons+Outlined', array(), '1.0.1' ); wp_register_style( 'wc-ceneo-style', plugin_dir_url( __FILE__ ) . 'src/assets/style/style.css', array(), '1.0.1' ); wp_register_script( 'wc-ceneo-script', plugin_dir_url( __FILE__ ) . 'src/assets/js/script.js', array(), '1.0.1' ); wp_enqueue_style( 'wc-ceneo-material-icons' ); wp_enqueue_style( 'wc-ceneo-style' ); wp_enqueue_script( 'jquery-ui-accordion' ); wp_enqueue_script( 'jquery-ui-draggable' ); wp_enqueue_script( 'jquery-ui-droppable' ); wp_enqueue_script( 'jquery-ui-progressbar' ); wp_enqueue_script( 'wc-ceneo-script' ); } add_action( 'admin_enqueue_scripts', 'ceneo_admin_scripts' ); } }