PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/elintscleaningservices.co.uk/wp-content/plugins/dokan-lite/includes/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/elintscleaningservices.co.uk/wp-content/plugins/dokan-lite/includes/Core.php |
<?php namespace WeDevs\Dokan; use WeDevs\Dokan\Utilities\OrderUtil; /** * Core Class for Dokan Main functionality * * @since 3.0.0 * * @package dokan */ class Core { /** * Load autometically when class initiate * * @since 3.0.0 */ public function __construct() { add_action( 'admin_init', [ $this, 'block_admin_access' ] ); add_filter( 'posts_where', [ $this, 'hide_others_uploads' ] ); add_filter( 'body_class', [ $this, 'add_dashboard_template_class' ], 99 ); add_filter( 'wp_title', [ $this, 'wp_title' ], 20, 2 ); add_action( 'template_redirect', [ $this, 'redirect_if_not_logged_seller' ], 11 ); add_action( 'admin_init', [ $this, 'redirect_after_activate' ], 999 ); } /** * Block user access to admin panel for specific roles * * @since 1.0.0 * * @global string $pagenow */ public function block_admin_access() { global $pagenow, $current_user; // bail out if we are from WP Cli if ( defined( 'WP_CLI' ) ) { return; } $no_access = dokan_get_option( 'admin_access', 'dokan_general', 'on' ); if ( OrderUtil::is_hpos_enabled() ) { $no_access = 'on'; } $valid_pages = [ 'admin-ajax.php', 'admin-post.php', 'async-upload.php', 'media-upload.php' ]; $user_role = reset( $current_user->roles ); if ( ( 'on' === $no_access ) && ( ! in_array( $pagenow, $valid_pages, true ) ) && in_array( $user_role, [ 'seller', 'customer', 'vendor_staff' ], true ) ) { wp_safe_redirect( home_url() ); exit; } } /** * Hide other users uploads for `seller` users * * Hide media uploads in page "upload.php" and "media-upload.php" for * sellers. They can see only thier uploads. * * FIXME: fix the upload counts * * @param string $where * * @global object $wpdb * @global string $pagenow * * @return string */ public function hide_others_uploads( $where ) { global $pagenow, $wpdb; if ( current_user_can( 'manage_woocommerce' ) ) { return $where; } if ( ( $pagenow === 'upload.php' || $pagenow === 'media-upload.php' ) && current_user_can( 'dokandar' ) ) { $user_id = dokan_get_current_user_id(); $where .= " AND $wpdb->posts.post_author = $user_id"; } return $where; } /** * Add body class for dokan-dashboard * * @since 3.0.0 * * @param array $classes */ public function add_dashboard_template_class( $classes ) { $page_id = dokan_get_option( 'dashboard', 'dokan_pages' ); if ( ! $page_id ) { return $classes; } if ( is_page( $page_id ) || ( get_query_var( 'edit' ) && is_singular( 'product' ) ) ) { $classes[] = 'dokan-dashboard'; } if ( dokan_is_store_page() ) { $classes[] = 'dokan-store'; } $classes[] = 'dokan-theme-' . get_option( 'template' ); return $classes; } /** * Create a nicely formatted and more specific title element text for output * in head of document, based on current view. * * @since Dokan 1.0.4 * * @param string $title Default title text for current view. * @param string $sep Optional separator. * * @return string The filtered title. */ public function wp_title( $title, $sep ) { global $paged, $page; if ( is_feed() ) { return $title; } if ( dokan_is_store_page() ) { $site_title = get_bloginfo( 'name' ); $store_user = get_userdata( get_query_var( 'author' ) ); if ( ! $store_user ) { return $title; } $store_info = dokan_get_store_info( $store_user->ID ); $store_name = esc_html( $store_info['store_name'] ); $title = "$store_name $sep $site_title"; // Add a page number if necessary. if ( $paged >= 2 || $page >= 2 ) { // translators: 1) page number $title = "$title $sep " . sprintf( __( 'Page %1$s', 'dokan-lite' ), max( $paged, $page ) ); } return $title; } return $title; } /** * Redirect if not logged Seller * * @since 2.4 * * @return void [redirection] */ public function redirect_if_not_logged_seller() { global $post; $page_id = dokan_get_option( 'dashboard', 'dokan_pages' ); if ( ! $page_id ) { return; } if ( is_page( $page_id ) || apply_filters( 'dokan_force_page_redirect', false, $page_id ) ) { dokan_redirect_login(); dokan_redirect_if_not_seller(); } } /** * Redirect after activation * * @since 2.8.0 * * @return void */ public function redirect_after_activate() { if ( ! get_transient( '_dokan_setup_page_redirect' ) ) { return; } dokan_redirect_to_admin_setup_wizard(); } }