![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /var/www/theprintave/wp-content/plugins/dokan-lite/includes/REST/ |
<?php namespace WeDevs\Dokan\REST; /** * API_Registrar class */ class Manager { /** * Class dir and class name mapping * * @var array */ protected $class_map; /** * Constructor */ public function __construct() { if ( ! class_exists( 'WP_REST_Server' ) ) { return; } // Init REST API routes. add_action( 'rest_api_init', array( $this, 'register_rest_routes' ), 10 ); add_filter( 'woocommerce_rest_prepare_product_object', array( $this, 'prepeare_product_response' ), 10, 3 ); add_filter( 'dokan_vendor_to_array', array( $this, 'filter_store_open_close_option' ) ); // Send email to admin on adding a new product add_action( 'dokan_rest_insert_product_object', array( $this, 'on_dokan_rest_insert_product' ), 10, 3 ); add_filter( 'dokan_vendor_to_array', [ $this, 'filter_payment_response' ] ); } /** * Register REST API routes. * * @since 1.2.0 */ public function register_rest_routes() { // get rest api class map $this->get_rest_api_class_map(); foreach ( $this->class_map as $file_name => $controller ) { // return if file not exists if ( ! file_exists( $file_name ) ) { continue; } // include file require_once $file_name; // check if class exists if ( ! class_exists( $controller ) ) { continue; } // get controller object $object = new $controller(); // check if object is instance of WP_REST_Controller if ( ! is_a( $object, 'WP_REST_Controller' ) ) { continue; } // register routes $object->register_routes(); } } /** * Prepare object for product response * * @since 2.8.0 * * @return void */ public function prepeare_product_response( $response, $object, $request ) { $data = $response->get_data(); $author_id = get_post_field( 'post_author', $data['id'] ); $store = dokan()->vendor->get( $author_id ); $data['store'] = array( 'id' => $store->get_id(), 'name' => $store->get_name(), 'shop_name' => $store->get_shop_name(), 'url' => $store->get_shop_url(), 'address' => $store->get_address(), ); $response->set_data( $data ); return $response; } /** * If store open close is truned off by admin, unset store_open_colse from api response * * @param array $data * * @since 2.9.13 * * @return array */ public function filter_store_open_close_option( $data ) { if ( 'on' !== dokan_get_option( 'store_open_close', 'dokan_appearance', 'on' ) ) { unset( $data['store_open_close'] ); } $vendor_id = ! empty( $data['id'] ) ? absint( $data['id'] ) : 0; if ( current_user_can( 'manage_woocommerce' ) || $vendor_id === absint( dokan_get_current_user_id() ) ) { return $data; } if ( dokan_is_vendor_info_hidden( 'address' ) ) { unset( $data['address'] ); } if ( dokan_is_vendor_info_hidden( 'phone' ) ) { unset( $data['phone'] ); } if ( dokan_is_vendor_info_hidden( 'email' ) || empty( $data['show_email'] ) ) { unset( $data['email'] ); } return $data; } /** * Send email to admin on adding a new product * * @param \WC_Data $object * @param \WP_REST_Request $request * @param Boolean $creating * * @return void */ public function on_dokan_rest_insert_product( $object, $request, $creating ) { // if not creating, meaning product is updating. So return early if ( ! $creating ) { return; } do_action( 'dokan_new_product_added', $object->get_id(), $request ); } /** * Make payment field hidden in api response for other vendor * * @param array $data * * @since 2.9.21 * * @return array */ public function filter_payment_response( $data ) { if ( current_user_can( 'manage_woocommerce' ) ) { return $data; } $vendor_id = ! empty( $data['id'] ) ? absint( $data['id'] ) : 0; if ( $vendor_id !== dokan_get_current_user_id() ) { $data['payment'] = '******'; } return $data; } /** * Generate Rest API class map * * @since 3.5.1 * * @return void */ private function get_rest_api_class_map() { if ( ! empty( $this->class_map ) ) { return; } $this->class_map = apply_filters( 'dokan_rest_api_class_map', array( DOKAN_DIR . '/includes/REST/AdminReportController.php' => 'WeDevs\Dokan\REST\AdminReportController', DOKAN_DIR . '/includes/REST/AdminDashboardController.php' => 'WeDevs\Dokan\REST\AdminDashboardController', DOKAN_DIR . '/includes/REST/AdminMiscController.php' => 'WeDevs\Dokan\REST\AdminMiscController', DOKAN_DIR . '/includes/REST/StoreController.php' => '\WeDevs\Dokan\REST\StoreController', DOKAN_DIR . '/includes/REST/ProductController.php' => '\WeDevs\Dokan\REST\ProductController', DOKAN_DIR . '/includes/REST/ProductControllerV2.php' => '\WeDevs\Dokan\REST\ProductControllerV2', DOKAN_DIR . '/includes/REST/ProductAttributeController.php' => '\WeDevs\Dokan\REST\ProductAttributeController', DOKAN_DIR . '/includes/REST/ProductAttributeTermsController.php' => '\WeDevs\Dokan\REST\ProductAttributeTermsController', DOKAN_DIR . '/includes/REST/OrderController.php' => '\WeDevs\Dokan\REST\OrderController', DOKAN_DIR . '/includes/REST/WithdrawController.php' => '\WeDevs\Dokan\REST\WithdrawController', DOKAN_DIR . '/includes/REST/WithdrawControllerV2.php' => '\WeDevs\Dokan\REST\WithdrawControllerV2', DOKAN_DIR . '/includes/REST/StoreSettingController.php' => '\WeDevs\Dokan\REST\StoreSettingController', DOKAN_DIR . '/includes/REST/AdminNoticeController.php' => '\WeDevs\Dokan\REST\AdminNoticeController', DOKAN_DIR . '/includes/REST/ChangeLogController.php' => '\WeDevs\Dokan\REST\ChangeLogController', DOKAN_DIR . '/includes/REST/DummyDataController.php' => '\WeDevs\Dokan\REST\DummyDataController', DOKAN_DIR . '/includes/REST/OrderControllerV2.php' => '\WeDevs\Dokan\REST\OrderControllerV2', DOKAN_DIR . '/includes/REST/StoreSettingControllerV2.php' => '\WeDevs\Dokan\REST\StoreSettingControllerV2', DOKAN_DIR . '/includes/REST/VendorDashboardController.php' => '\WeDevs\Dokan\REST\VendorDashboardController', DOKAN_DIR . '/includes/REST/ProductBlockController.php' => '\WeDevs\Dokan\REST\ProductBlockController', DOKAN_DIR . '/includes/REST/CommissionControllerV1.php' => '\WeDevs\Dokan\REST\CommissionControllerV1', ) ); } }