public function add_meta_all_products()
 {
     // Add deactivate compare feature meta for all products when activate this plugin
     $have_deactivate_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private'), 'meta_key' => '_woo_deactivate_compare_feature'));
     $have_ids = array();
     if (is_array($have_deactivate_meta) && count($have_deactivate_meta) > 0) {
         foreach ($have_deactivate_meta as $product) {
             $have_ids[] = $product->ID;
         }
     }
     if (is_array($have_ids) && count($have_ids) > 0) {
         $no_deactivate_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private'), 'post__not_in' => $have_ids));
     } else {
         $no_deactivate_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private')));
     }
     if (is_array($no_deactivate_meta) && count($no_deactivate_meta) > 0) {
         foreach ($no_deactivate_meta as $product) {
             add_post_meta($product->ID, '_woo_deactivate_compare_feature', '');
         }
     }
     // Add deactivate compare feature meta for all products when activate this plugin
     $have_compare_category_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private'), 'meta_key' => '_woo_compare_category_name'));
     $have_ids = array();
     if (is_array($have_compare_category_meta) && count($have_compare_category_meta) > 0) {
         foreach ($have_compare_category_meta as $product) {
             $have_ids[] = $product->ID;
         }
     }
     if (is_array($have_ids) && count($have_ids) > 0) {
         $no_compare_category_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private'), 'post__not_in' => $have_ids));
     } else {
         $no_compare_category_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private')));
     }
     if (is_array($no_compare_category_meta) && count($no_compare_category_meta) > 0) {
         foreach ($no_compare_category_meta as $product) {
             add_post_meta($product->ID, '_woo_compare_category_name', '');
         }
     }
     // Add compare category name into product have compare category id
     $have_compare_category_id_meta = get_posts(array('numberposts' => -1, 'post_type' => array('product', 'product_variation'), 'post_status' => array('publish', 'private'), 'meta_key' => '_woo_compare_category'));
     if (is_array($have_compare_category_id_meta) && count($have_compare_category_id_meta) > 0) {
         foreach ($have_compare_category_id_meta as $product) {
             $compare_category = get_post_meta($product->ID, '_woo_compare_category', true);
             $category_data = WC_Compare_Categories_Data::get_row($compare_category);
             @update_post_meta($product->ID, '_woo_compare_category_name', stripslashes($category_data->category_name));
         }
     }
 }
 public static function save_compare_meta_boxes($post_id)
 {
     $post_status = get_post_status($post_id);
     $post_type = get_post_type($post_id);
     if ($post_type == 'product' && $post_status != false) {
         if (isset($_REQUEST['_woo_deactivate_compare_feature']) && $_REQUEST['_woo_deactivate_compare_feature'] == 'no') {
             update_post_meta($post_id, '_woo_deactivate_compare_feature', 'no');
         } else {
             update_post_meta($post_id, '_woo_deactivate_compare_feature', 'yes');
         }
         $compare_category = 0;
         if (isset($_REQUEST['_woo_compare_category'])) {
             $compare_category = $_REQUEST['_woo_compare_category'];
             update_post_meta($post_id, '_woo_compare_category', $compare_category);
         }
         $category_data = WC_Compare_Categories_Data::get_row($compare_category);
         if ($category_data != NULL) {
             update_post_meta($post_id, '_woo_compare_category_name', stripslashes($category_data->category_name));
         }
         $compare_fields = WC_Compare_Categories_Fields_Data::get_results("cat_id='" . $compare_category . "'", 'cf.field_order ASC');
         if (is_array($compare_fields) && count($compare_fields) > 0) {
             foreach ($compare_fields as $field_data) {
                 if (isset($_REQUEST['_woo_compare_' . $field_data->field_key])) {
                     update_post_meta($post_id, '_woo_compare_' . $field_data->field_key, $_REQUEST['_woo_compare_' . $field_data->field_key]);
                 }
             }
         }
         if (isset($_REQUEST['variable_post_id'])) {
             $variable_ids = $_REQUEST['variable_post_id'];
             foreach ($variable_ids as $variation_id) {
                 $post_type = get_post_type($variation_id);
                 if ($post_type == 'product_variation') {
                     if (isset($_REQUEST['variable_woo_deactivate_compare_feature'][$variation_id]) && $_REQUEST['variable_woo_deactivate_compare_feature'][$variation_id] == 'no') {
                         update_post_meta($variation_id, '_woo_deactivate_compare_feature', 'no');
                     } else {
                         update_post_meta($variation_id, '_woo_deactivate_compare_feature', 'yes');
                     }
                     $variation_compare_category = 0;
                     if (isset($_REQUEST['variable_woo_compare_category'][$variation_id])) {
                         $variation_compare_category = $_REQUEST['variable_woo_compare_category'][$variation_id];
                         update_post_meta($variation_id, '_woo_compare_category', $variation_compare_category);
                     }
                     $variation_category_data = WC_Compare_Categories_Data::get_row($variation_compare_category);
                     if ($variation_category_data != NULL) {
                         update_post_meta($variation_id, '_woo_compare_category_name', stripslashes($variation_category_data->category_name));
                     }
                     $compare_fields = WC_Compare_Categories_Fields_Data::get_results("cat_id='" . $variation_compare_category . "'", 'cf.field_order ASC');
                     if (is_array($compare_fields) && count($compare_fields) > 0) {
                         foreach ($compare_fields as $field_data) {
                             if (isset($_REQUEST['variable_woo_compare_' . $field_data->field_key][$variation_id])) {
                                 update_post_meta($variation_id, '_woo_compare_' . $field_data->field_key, $_REQUEST['variable_woo_compare_' . $field_data->field_key][$variation_id]);
                             }
                         }
                     }
                 }
             }
         }
     }
 }
    public static function woocp_categories_manager()
    {
        global $wpdb;
        ?>

        <h3><?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-edit') {
            _e('Edit Compare Product Categories', 'woo_cp');
        } else {
            _e('Add Compare Product Categories', 'woo_cp');
        }
        ?>
</h3>
        <?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] != 'cat-edit') {
            ?>
<p><?php 
            _e('Create Categories based on groups of products that share the same compare feature list.', 'woo_cp');
            ?>
</p><?php 
        }
        ?>
        <form action="admin.php?page=woo-compare-features" method="post" name="form_add_compare" id="form_add_compare">
        <?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-edit') {
            $category_id = $_REQUEST['category_id'];
            $cat_data = WC_Compare_Categories_Data::get_row($category_id);
            ?>
        	<input type="hidden" value="<?php 
            echo $category_id;
            ?>
" name="category_id" id="category_id" />
        <?php 
        }
        ?>
        	<table class="form-table">
                <tbody>
                	<tr valign="top">
                    	<th class="titledesc" scope="rpw"><label for="category_name"><?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-edit') {
            _e('Edit Category Name', 'woo_cp');
        } else {
            _e('Category Name', 'woo_cp');
        }
        ?>
</label></th>
                        <td class="forminp"><input type="text" name="category_name" id="category_name" value="<?php 
        if (!empty($cat_data)) {
            echo stripslashes($cat_data->category_name);
        }
        ?>
" style="min-width:300px" /></td>
                    </tr>
                </tbody>
            </table>
            <p class="submit">
	        	<input type="submit" name="bt_save_cat" id="bt_save_cat" class="button button-primary" value="<?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-edit') {
            _e('Save', 'woo_cp');
        } else {
            _e('Create', 'woo_cp');
        }
        ?>
"  /> <?php 
        if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-edit') {
            ?>
<input type="button" class="button" onclick="window.location='admin.php?page=woo-compare-features'" value="<?php 
            _e('Cancel', 'woo_cp');
            ?>
" /><?php 
        }
        ?>
	    	</p>
        </form>
	<?php 
    }
    public static function woocp_products_manager()
    {
        $compare_product_message = '';
        $paged = isset($_POST['paged']) ? $_POST['paged'] : 1;
        $rp = isset($_POST['rp']) ? $_POST['rp'] : 10;
        $cp_show_variations = isset($_POST['cp_show_variations']) ? $_POST['cp_show_variations'] : 0;
        $sortname = isset($_POST['sortname']) ? $_POST['sortname'] : 'title';
        $sortorder = isset($_POST['sortorder']) ? $_POST['sortorder'] : 'asc';
        $query = isset($_POST['query']) ? $_POST['query'] : '';
        $qtype = isset($_POST['qtype']) ? $_POST['qtype'] : '';
        if (isset($_REQUEST['bt_update_product_features'])) {
            if (isset($_REQUEST['productid']) && $_REQUEST['productid'] > 0) {
                $post_id = $_REQUEST['productid'];
                $post_status = get_post_status($post_id);
                $post_type = get_post_type($post_id);
                if (($post_type == 'product' || $post_type == 'product_variation') && $post_status != false) {
                    if (isset($_REQUEST['_woo_deactivate_compare_feature']) && $_REQUEST['_woo_deactivate_compare_feature'] == 'no') {
                        update_post_meta($post_id, '_woo_deactivate_compare_feature', 'no');
                    } else {
                        update_post_meta($post_id, '_woo_deactivate_compare_feature', 'yes');
                    }
                    $compare_category = $_REQUEST['_woo_compare_category'];
                    update_post_meta($post_id, '_woo_compare_category', $compare_category);
                    if ($compare_category > 0) {
                        $category_data = WC_Compare_Categories_Data::get_row($compare_category);
                        if ($category_data != NULL) {
                            update_post_meta($post_id, '_woo_compare_category_name', stripslashes($category_data->category_name));
                        }
                        $compare_fields = WC_Compare_Categories_Fields_Data::get_results("cat_id='" . $compare_category . "'", 'cf.field_order ASC');
                        if (is_array($compare_fields) && count($compare_fields) > 0) {
                            foreach ($compare_fields as $field_data) {
                                if (isset($_REQUEST['_woo_compare_' . $field_data->field_key])) {
                                    update_post_meta($post_id, '_woo_compare_' . $field_data->field_key, $_REQUEST['_woo_compare_' . $field_data->field_key]);
                                }
                            }
                        }
                    } else {
                        update_post_meta($post_id, '_woo_compare_category_name', '');
                    }
                }
                $compare_product_message = '<div class="updated" id="result_msg"><p>' . __('Compare Product Feature Fields Successfully updated.', 'woo_cp') . '.</p></div>';
            }
        }
        ?>
<style>
	.update_message{padding:10px; background-color:#FFFFCC;border:1px solid #DDDDDD;margin-bottom:15px;}
	body .flexigrid div.sDiv{display:block;}
	.flexigrid div.sDiv .sDiv2 select{display:none;}
	.flexigrid div.sDiv .cp_search, .flexigrid div.sDiv .cp_reset{cursor:pointer;}
	.edit_product_compare{cursor:pointer; text-decoration:underline; color:#06F;}
	.icon32-compare-product {
		background:url(<?php 
        echo WOOCP_IMAGES_URL;
        ?>
/a3-plugins.png) no-repeat left top !important;
	}
	.pro_feature_fields {
		padding:0 10px 10px 10px;	
	}
</style>
<div id="htmlForm">
<div style="clear:both"></div>
<div class="wrap a3rev_panel_container a3rev_manager_panel_container">
	<div id="a3_plugin_panel_container"><div id="a3_plugin_panel_fields">
	<div class="icon32 icon32-compare-product" id="icon32-compare-product"><br></div>
	<h2><?php 
        _e('WooCommerce Compare Products Manager', 'woo_cp');
        ?>
</h2>
    <?php 
        echo $compare_product_message;
        ?>
    <div style="clear:both; margin-bottom:20px;"></div>
    <div class="pro_feature_fields">
    <?php 
        global $wc_compare_admin_init;
        $wc_compare_admin_init->upgrade_top_message(true);
        ?>
    <table id="woocp_products_manager" style="display:none"></table>
    </div>
    <?php 
        $woocp_products_manager = wp_create_nonce("woocp-products-manager");
        ?>
    <script type="text/javascript">
		function alert_upgrade(text) {
			var answer = confirm(text)
			if (answer){
				window.open("<?php 
        echo WOOCP_AUTHOR_URI;
        ?>
", '_blank')
			}else{
				return false;
			}
		}
	(function($){
		$(function(){
			$("#woocp_products_manager").flexigrid({
				url: '<?php 
        echo admin_url('admin-ajax.php', 'relative') . '?action=woocp_get_products&security=' . $woocp_products_manager;
        ?>
',
				dataType: 'json',
				width: 'auto',
				resizable: false,
				colModel : [
					{display: '<?php 
        _e("No", 'woo_cp');
        ?>
', name : 'number', width : 20, sortable : false, align: 'right'},
					{display: '<?php 
        _e("Product Name", 'woo_cp');
        ?>
', name : 'title', width : 200, sortable : true, align: 'left'},
					{display: '<?php 
        _e("Product Category", 'woo_cp');
        ?>
', name : 'cat', width : 110, sortable : false, align: 'left'},
					{display: '<?php 
        _e("Compare Category", 'woo_cp');
        ?>
', name : '_woo_compare_category_name', width : 110, sortable : true, align: 'left'},
					{display: '<?php 
        _e("Activated / Deactivated", 'woo_cp');
        ?>
', name : '_woo_deactivate_compare_feature', width : 110, sortable : false, align: 'center'},
					{display: '<?php 
        _e("Edit", 'woo_cp');
        ?>
', name : 'edit', width : 30, sortable : false, align: 'center'}
					],
				searchitems : [
					{display: '<?php 
        _e("Product Name", 'woo_cp');
        ?>
', name : 'title', isdefault: true}
					],
				sortname: "title",
				sortorder: "asc",
				usepager: true,
				title: '<?php 
        _e("Products", 'woo_cp');
        ?>
',
				findtext: '<?php 
        _e("Find Product Name", 'woo_cp');
        ?>
',
				useRp: true,
				rp: <?php 
        echo $rp;
        ?>
, //results per page
				newp: <?php 
        echo $paged;
        ?>
,
				page: <?php 
        echo $paged;
        ?>
,
				query: '<?php 
        echo $query;
        ?>
',
				qtype: '<?php 
        echo $qtype;
        ?>
',
				sortname: '<?php 
        echo $sortname;
        ?>
',
				sortorder: '<?php 
        echo $sortorder;
        ?>
',
				rpOptions: [10, 15, 20, 30, 50, 100], //allowed per-page values
				showToggleBtn: false, //show or hide column toggle popup
				showTableToggleBtn: false,
				height: 'auto',
				variations: '<?php 
        echo $cp_show_variations;
        ?>
'
			});
			$(document).on("click", ".edit_product_compare", function(ev){
				return alert_upgrade('<?php 
        _e('Please upgrade to the Pro Version to activate Products express Compare feature manager', 'woo_cp');
        ?>
');
			});
		});
	})(jQuery);
	</script>
</div><div id="a3_plugin_panel_upgrade_area"><div id="a3_plugin_panel_extensions"><?php 
        echo WC_Compare_Functions::plugin_pro_notice();
        ?>
</div></div></div>
</div>
</div>
<?php 
    }