/**
  * 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);
     }
 }
Example #2
0
 /**
  * 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');
         }
     }
 }