/** * Print the Single Taxonomy Metabox * * @author Andrea Grillo <*****@*****.**> * @since 1.0.0 * * @param $taxonomy string Taxonomy Name * @param $taxonomy_box string Taxonomy Box * * @return void */ public function single_taxonomy_meta_box($taxonomy, $taxonomy_box) { $taxonomy_label = YITH_Vendors()->get_vendors_taxonomy_label(); $vendor = yith_get_vendor('current', 'product'); $vendor_id = 0; $wpml_vendor = null; /* WPML Support */ global $sitepress, $pagenow; if ($vendor->is_valid()) { if (isset($sitepress)) { $vendor_id = yit_wpml_object_id($vendor->id, YITH_Vendors()->get_taxonomy_name(), true); $wpml_vendor = get_term_by('id', $vendor_id, $vendor->term->taxonomy); $vendor_id = $wpml_vendor->term_id; } else { $vendor_id = $vendor->id; } } elseif (isset($sitepress) && $vendor->is_super_user() && 'post-new.php' == $pagenow && !empty($_GET['trid'])) { $original_product_id = SitePress::get_original_element_id_by_trid($_GET['trid']); $original_vendor = yith_get_vendor($original_product_id, 'product'); if ($original_vendor->is_valid()) { $vendor_id = yit_wpml_object_id($original_vendor->id, YITH_Vendors()->get_taxonomy_name(), true); $wpml_vendor = get_term_by('id', $vendor_id, $original_vendor->term->taxonomy); $vendor_id = $wpml_vendor->term_id; } } $args = array('id' => 'tax-input-yith_shop_vendor', 'name' => 'tax_input[yith_shop_vendor]', 'taxonomy' => $this->_taxonomy_name, 'show_option_none' => !$vendor->is_super_user() ? '' : sprintf(__('No %s'), strtolower($taxonomy_label['singular_name'])), 'hide_empty' => !$vendor->is_super_user(), 'selected' => $vendor_id, 'walker' => YITH_Walker_CategoryDropdown(), 'option_none_value' => ''); $vendor = yith_get_vendor('current', 'user'); if ($vendor->is_valid() && $vendor->has_limited_access() && $vendor->is_user_admin()) { echo is_null($wpml_vendor) ? $vendor->name : $wpml_vendor->name; } else { wp_dropdown_categories($args); } }
/** * Construct * * @param mixed $vendor The vendor object * @param string $obj What object is if is numeric (vendor|user|product) * * @return bool|YITH_Vendor */ public static function retrieve($vendor = false, $obj = 'vendor') { self::$_usermetaKey = YITH_Vendors()->get_user_meta_key(); self::$_usermetaOwner = YITH_Vendors()->get_user_meta_owner(); self::$taxonomy = YITH_Vendors()->get_taxonomy_name(); // change value 'current' to false for $vendor, to make it more rock! if ('current' == $vendor) { $vendor = false; } // Get by user if ('user' == $obj) { // get vendor of actual user if nothind passed if (false === $vendor) { $vendor = get_user_meta(get_current_user_id(), self::$_usermetaKey, true); } else { $vendor = get_user_meta($vendor, self::$_usermetaKey, true); } $obj = 'vendor'; } elseif ('product' == $obj) { // get vendor of actual product if nothind passed if (false === $vendor) { global $post; $vendor = $post->ID; } elseif ($vendor instanceof WP_Post) { $vendor = $vendor->ID; } elseif ($vendor instanceof WC_Product) { $vendor = $vendor->id; } $terms = wp_get_post_terms($vendor, self::$taxonomy); if (empty($terms)) { return self::_instance(); } /* WPML SUPPORT */ $vendor_term = array_shift($terms); $default_language = function_exists('wpml_get_default_language') ? wpml_get_default_language() : null; $vendor_id = yit_wpml_object_id($vendor_term->term_id, YITH_Vendors()->get_taxonomy_name(), true, $default_language); return self::_instance($vendor_id, $vendor_term); } // exit if any object is retrieved if (empty($vendor)) { return self::_instance(); } // RETRIEVE OBJECT // Get vendor by Vendor ID if (is_numeric($vendor) && 'vendor' == $obj) { $vendor_id = absint($vendor); $vendor_term = get_term_by('term_id', $vendor_id, self::$taxonomy); } elseif (is_string($vendor)) { $vendor_term = get_term_by('slug', $vendor, self::$taxonomy); if (empty($vendor_term) || is_wp_error($vendor_term)) { $vendor_term = get_term_by('name', $vendor, self::$taxonomy); } if (empty($vendor_term) || is_wp_error($vendor_term)) { return self::_instance(); } $vendor_id = $vendor_term->term_id; } elseif ($vendor instanceof YITH_Vendor) { $vendor_id = absint($vendor->id); $vendor_term = $vendor->term; return self::_instance($vendor_id, $vendor_term); } elseif (isset($vendor->slug) && term_exists($vendor->slug, self::$taxonomy)) { $vendor_id = absint($vendor->term_id); $vendor_term = $vendor; } else { return self::_instance(); } // return false is there is a term associated if (empty($vendor_term)) { return self::_instance(); } return self::_instance($vendor_id, $vendor_term); }
/** * Restrict vendors from editing other vendors' posts * * @author Andrea Grillo <*****@*****.**> * @return void * @since 1.3 * @use current_screen filter */ public function disabled_manage_other_vendors_posts() { global $typenow; $vendor = yith_get_vendor('current', 'user'); $is_seller = $vendor->is_valid() && $vendor->has_limited_access(); if ($is_seller && !empty($typenow) && 'post' == $typenow) { wp_die(sprintf(__('You do not have permission to edit this post. %1$sClick here to view your dashboard%2$s.', 'yith_wc_product_vendors'), '<a href="' . esc_url(admin_url()) . '">', '</a>')); } if (isset($_POST['post_ID']) || !isset($_GET['post'])) { return; } /* WPML Support */ $default_language = function_exists('wpml_get_default_language') ? wpml_get_default_language() : null; $post_id = yit_wpml_object_id($_GET['post'], 'product', true, $default_language); $product_vendor = yith_get_vendor($post_id, 'product'); // If false, the product hasn't any vendor set $post = get_post($_GET['post']); if ($is_seller) { if ('product' == $post->post_type && false !== $product_vendor && $vendor->id != $product_vendor->id) { wp_die(sprintf(__('You do not have permission to edit this product. %1$sClick here to view and edit your products%2$s.', 'yith_wc_product_vendors'), '<a href="' . esc_url('edit.php?post_type=product') . '">', '</a>')); } else { if ('shop_coupon' == $post->post_type && !in_array($post->post_author, $vendor->admins)) { wp_die(sprintf(__('You do not have permission to edit this coupon. %1$sClick here to view and edit your coupons%2$s.', 'yith_wc_product_vendors'), '<a href="' . esc_url('edit.php?post_type=shop_coupon') . '">', '</a>')); } } } }
/** * Print vendor store header in archive-product template * * @since 1.0 * @return void * @author Andrea Grillo <*****@*****.**> * @use woocommerce_show_page_title filter */ public function add_store_page_header() { if ($this->is_vendor_page()) { global $sitepress; $has_wpml = !empty($sitepress); $term = $default_term = null; $term_slug = get_query_var('term'); if ($has_wpml) { $term = get_term_by('slug', $term_slug, YITH_Vendors()->get_taxonomy_name()); $term_slug = yit_wpml_object_id($term->term_id, YITH_Vendors()->get_taxonomy_name(), true, wpml_get_default_language()); $default_term = get_term($term_slug, YITH_Vendors()->get_taxonomy_name()); } $vendor = yith_get_vendor($term_slug, 'vendor'); if ('no' == $vendor->enable_selling) { return false; } $header_img_class = apply_filters('yith_wcmv_header_img_class', array('class' => 'store-image')); $args = array('vendor' => $vendor, 'name' => $has_wpml ? $default_term->name : $vendor->name, 'header_skin' => get_option('yith_vendors_skin_header'), 'show_total_sales' => 'yes' == get_option('yith_wpv_vendor_total_sales') ? true : false, 'icons' => apply_filters('yith_wcmv_header_icons_class', array('rating' => 'fa fa-star-half-o', 'sales' => 'fa fa-credit-card', 'vat' => 'fa fa-file-text-o')), 'owner' => get_user_by('id', $vendor->owner), 'header_img_class' => $header_img_class, 'header_image' => wp_get_attachment_image($vendor->header_image, 'big', false, $header_img_class), 'owner_avatar' => get_avatar($vendor->owner, get_option('yith_vendors_gravatar_image_size', '62')), 'vendor_reviews' => $vendor->get_reviews_average_and_product(), 'total_sales' => count($vendor->get_orders()), 'store_header_class' => apply_filters('yith_wcmv_store_header_class', 'store-header-wrapper'), 'show_vendor_vat' => 'yes' === get_option('yith_wpv_vendor_show_vendor_vat', 'yes') ? true : false, 'show_gravatar' => 'enabled' == get_option('yith_vendors_show_gravatar_image', 'enabled') && 'yes' == $vendor->show_gravatar); yith_wcpv_get_template('store-header', $args, 'woocommerce/loop'); /* Vacation Module */ if ($vendor->is_on_vacation()) { yith_wcpv_get_template('store-vacation', array('vacation_message' => $vendor->vacation_message), 'woocommerce/loop'); } /* Vendor Description */ $vendor_description = $has_wpml ? $default_term->description : $vendor->description; if ('yes' == get_option('yith_wpv_vendor_store_description', 'no') && !empty($vendor_description)) { $args = array('store_description_class' => apply_filters('yith_wcmv_store_descritpion_class', 'store-description-wrapper'), 'vendor_description' => $vendor_description); yith_wcpv_get_template('store-description', $args, 'woocommerce/loop'); } } }