/**
  * Get variant limit value for a product.
  *
  * @param \ITELIC\Product $product
  *
  * @return array|string
  */
 protected function get_variant_limit_for_product(\ITELIC\Product $product)
 {
     if (!function_exists('it_exchange_variants_addon_get_product_feature_controller')) {
         return 'disabled';
     }
     $c = it_exchange_variants_addon_get_product_feature_controller($product->ID, 'base-price', array('setting' => 'variants'));
     $hashes = $product->get_feature('licensing', array('field' => 'activation_variant'));
     $return = array();
     foreach ($c->post_meta as $hash => $variant) {
         $limit = empty($hashes[$hash]) ? 'Unlimited' : $hashes[$hash];
         $return[] = array('combo' => $variant['combos_title'], 'limit' => $limit, 'hash' => $hash);
     }
     return $return;
 }
 /**
  * Get the variants controller.
  *
  * @since 1.0
  *
  * @param $product_id int
  *
  * @return \IT_Exchange_Variants_Addon_Product_Feature_Combos|null
  */
 protected function get_variants_controller($product_id)
 {
     if (function_exists('it_exchange_variants_addon_get_product_feature_controller')) {
         $controller = it_exchange_variants_addon_get_product_feature_controller($product_id, '', array('setting' => 'variants'));
         $controller->set_all_variant_combos_for_product(false);
     } else {
         $controller = null;
     }
     return $controller;
 }
 /**
  * Get the variants controller.
  *
  * @since 1.0
  *
  * @param $product_id int
  *
  * @return \IT_Exchange_Variants_Addon_Product_Feature_Combos|null
  */
 protected function get_variants_controller($product_id)
 {
     if (function_exists('it_exchange_variants_addon_get_product_feature_controller')) {
         $controller = it_exchange_variants_addon_get_product_feature_controller($product_id, 'base-price', array('setting' => 'variants'));
     } else {
         $controller = null;
     }
     return $controller;
 }
 /**
  * Get the variant title.
  *
  * @since 1.0
  *
  * @return string
  */
 public function get_variant_title()
 {
     if (!$this->has_variant()) {
         return '';
     }
     $controller = it_exchange_variants_addon_get_product_feature_controller($this->get_product()->ID, 'base-price', array('setting' => 'variants'));
     return $controller->post_meta[$this->get_upgrade_variant_hash()]['combos_title'];
 }