/**
  * Constructor
  *
  * @access public
  * @since 1.0.0
  */
 public function __construct()
 {
     // populate default fields for the comparison table
     $this->default_fields = YITH_Woocompare_Helper::standard_fields();
     // add image size
     YITH_Woocompare_Helper::set_image_size();
     //Actions
     add_action('init', array($this, 'init'));
     add_action('admin_enqueue_scripts', array($this, 'enqueue_styles_scripts'));
     add_action('woocommerce_settings_tabs_yith_woocompare', array($this, 'print_plugin_options'));
     add_action('woocommerce_update_options_yith_woocompare', array($this, 'update_options'));
     if (!has_action('woocommerce_admin_field_slider')) {
         add_action('woocommerce_admin_field_slider', array($this, 'admin_fields_slider'));
     }
     if (!has_action('woocommerce_admin_field_picker')) {
         add_action('woocommerce_admin_field_picker', array($this, 'admin_fields_picker'));
     }
     if (!has_action('woocommerce_admin_field_attributes')) {
         add_action('woocommerce_admin_field_attributes', array($this, 'admin_fields_attributes'));
     }
     add_action('admin_print_footer_scripts', array($this, 'admin_fields_image_deps'));
     add_action('woocommerce_update_option_slider', array($this, 'admin_update_option'));
     add_action('woocommerce_update_option_picker', array($this, 'admin_update_option'));
     add_action('woocommerce_update_option_attributes', array($this, 'admin_update_option'));
     //Filters
     add_filter('woocommerce_settings_tabs_array', array($this, 'add_tab_woocommerce'));
     // YITH WCWL Loaded
     do_action('yith_woocompare_loaded');
 }
        /**
         * Create new Woocommerce admin field: checkboxes
         *
         * @access public
         * @param array $value
         * @return void
         * @since 1.0.0
         */
        public function admin_fields_attributes($value)
        {
            $fields = YITH_Woocompare_Helper::standard_fields();
            $all = array();
            $checked = get_option(str_replace('_attrs', '', $value['id']), $value['default'] == 'all' ? $all : array());
            foreach (array_keys($fields) as $field) {
                $all[$field] = true;
            }
            // then add fields that are not still saved
            foreach ($checked as $k => $v) {
                unset($all[$k]);
            }
            $checkboxes = array_merge($checked, $all);
            ?>
			<tr valign="top">
				<th scope="row" class="titledesc">
					<label for="<?php 
            echo esc_attr($value['id']);
            ?>
"><?php 
            echo $value['name'];
            ?>
</label>
				</th>

				<td class="forminp attributes">
					<p class="description"><?php 
            echo $value['desc'];
            ?>
</p>
					<ul class="fields">
						<?php 
            foreach ($checkboxes as $slug => $checked) {
                if (!isset($fields[$slug])) {
                    continue;
                }
                ?>
							<li>
								<label>
									<input type="checkbox" name="<?php 
                echo $value['id'];
                ?>
[]" id="<?php 
                echo $value['id'];
                ?>
_<?php 
                echo $slug;
                ?>
" value="<?php 
                echo $slug;
                ?>
"<?php 
                checked($checked);
                ?>
 /> <?php 
                echo $fields[$slug];
                ?>
								</label>
							</li>
						<?php 
            }
            ?>
					</ul>
					<input type="hidden" name="<?php 
            echo $value['id'];
            ?>
_positions" value="<?php 
            echo implode(',', array_keys($checkboxes));
            ?>
" />
				</td>
			</tr>
		<?php 
        }
 /**
  * Constructor
  *
  * @return YITH_Woocompare_Frontend
  * @since 1.0.0
  */
 public function __construct()
 {
     // set coookiename
     if (is_multisite()) {
         $this->cookie_name .= '_' . get_current_blog_id();
     }
     // populate the list of products
     $this->products_list = isset($_COOKIE[$this->cookie_name]) ? unserialize($_COOKIE[$this->cookie_name]) : array();
     // populate default fields for the comparison table
     $this->default_fields = YITH_Woocompare_Helper::standard_fields();
     // add image size
     YITH_Woocompare_Helper::set_image_size();
     // Add link or button in the products list or
     if (get_option('yith_woocompare_compare_button_in_product_page') == 'yes') {
         add_action('woocommerce_single_product_summary', array($this, 'add_compare_link'), 35);
     }
     if (get_option('yith_woocompare_compare_button_in_products_list') == 'yes') {
         add_action('woocommerce_after_shop_loop_item', array($this, 'add_compare_link'), 20);
     }
     add_action('init', array($this, 'add_product_to_compare_action'));
     add_action('init', array($this, 'remove_product_from_compare_action'));
     add_action('wp_enqueue_scripts', array($this, 'enqueue_scripts'));
     add_action('template_redirect', array($this, 'compare_table_html'));
     // add the shortcode
     add_shortcode('yith_compare_button', array($this, 'compare_button_sc'));
     // AJAX
     add_action('wp_ajax_' . $this->action_add, array($this, 'add_product_to_compare_ajax'));
     add_action('wp_ajax_nopriv_' . $this->action_add, array($this, 'add_product_to_compare_ajax'));
     add_action('wp_ajax_' . $this->action_remove, array($this, 'remove_product_from_compare_ajax'));
     add_action('wp_ajax_nopriv_' . $this->action_remove, array($this, 'remove_product_from_compare_ajax'));
     add_action('wp_ajax_' . $this->action_view, array($this, 'refresh_widget_list_ajax'));
     add_action('wp_ajax_nopriv_' . $this->action_view, array($this, 'refresh_widget_list_ajax'));
     return $this;
 }