/** * Install Database, settings option and auto add widget to sidebar */ function woocp_install() { update_option('a3rev_woocp_pro_version', '2.4.1'); update_option('a3rev_woocp_lite_version', '2.2.0'); $product_compare_id = WC_Compare_Functions::create_page(esc_sql('product-comparison'), '', __('Product Comparison', 'woo_cp'), '[product_comparison_page]'); update_option('product_compare_id', $product_compare_id); // Set Settings Default from Admin Init global $wc_compare_admin_init; $wc_compare_admin_init->set_default_settings(); WC_Compare_Data::install_database(); WC_Compare_Categories_Data::install_database(); WC_Compare_Categories_Fields_Data::install_database(); // Build sass global $wc_compare_less; $wc_compare_less->plugin_build_sass(); update_option('a3rev_woocp_just_installed', true); }
public static function init_categories_actions() { global $wpdb; $cat_msg = ''; if (isset($_REQUEST['bt_save_cat'])) { $category_name = trim(strip_tags(addslashes($_REQUEST['category_name']))); if (isset($_REQUEST['category_id']) && $_REQUEST['category_id'] > 0) { $old_data = WC_Compare_Categories_Data::get_row($_REQUEST['category_id']); $count_category_name = WC_Compare_Categories_Data::get_count("category_name = '" . $category_name . "' AND id != '" . $_REQUEST['category_id'] . "'"); if ($category_name != '' && $count_category_name == 0) { $result = WC_Compare_Categories_Data::update_row($_REQUEST); $wpdb->query('UPDATE ' . $wpdb->prefix . 'postmeta SET meta_value="' . $category_name . '" WHERE meta_value="' . $old_data->category_name . '" AND meta_key="_wpsc_compare_category_name" '); $cat_msg = '<div class="updated below-h2" id="result_msg"><p>' . __('Compare Category Successfully edited', 'woo_cp') . '.</p></div>'; } else { $cat_msg = '<div class="error below-h2" id="result_msg"><p>' . __('Nothing edited! You already have a Compare Category with that name. Use unique names to edit each Compare Category.', 'woo_cp') . '</p></div>'; } } else { $count_category_name = WC_Compare_Categories_Data::get_count("category_name = '" . $category_name . "'"); if ($category_name != '' && $count_category_name == 0) { $category_id = WC_Compare_Categories_Data::insert_row($_REQUEST); if ($category_id > 0) { $cat_msg = '<div class="updated below-h2" id="result_msg"><p>' . __('Compare Category Successfully created', 'woo_cp') . '.</p></div>'; } else { $cat_msg = '<div class="error below-h2" id="result_msg"><p>' . __('Compare Category Error created', 'woo_cp') . '.</p></div>'; } } else { $cat_msg = '<div class="error below-h2" id="result_msg"><p>' . __('Nothing created! You already have a Compare Category with that name. Use unique names to create each Compare Category.', 'woo_cp') . '</p></div>'; } } } if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'cat-delete') { $category_id = trim($_REQUEST['category_id']); WC_Compare_Categories_Data::delete_row($category_id); WC_Compare_Categories_Fields_Data::delete_row("cat_id='" . $category_id . "'"); $cat_msg = '<div class="updated below-h2" id="result_msg"><p>' . __('Compare Category deleted', 'woo_cp') . '.</p></div>'; } return $cat_msg; }
public static function woocp_product_featured_tab_woo_2_0($tabs = array()) { global $product, $post; global $woo_compare_product_page_tab; $compare_featured_tab = trim($woo_compare_product_page_tab['compare_featured_tab']); if ($compare_featured_tab == '') { $compare_featured_tab = __('Technical Details', 'woo_cp'); } $show_compare_featured_tab = false; $product_id = $post->ID; $variations_list = WC_Compare_Functions::get_variations($product_id); if (is_array($variations_list) && count($variations_list) > 0) { foreach ($variations_list as $variation_id) { if (WC_Compare_Functions::check_product_activate_compare($variation_id) && WC_Compare_Functions::check_product_have_cat($variation_id)) { $compare_category = get_post_meta($variation_id, '_woo_compare_category', true); $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) { $show_compare_featured_tab = true; break; } } } } elseif (WC_Compare_Functions::check_product_activate_compare($product_id) && WC_Compare_Functions::check_product_have_cat($product_id)) { $compare_category = get_post_meta($product_id, '_woo_compare_category', true); $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) { $show_compare_featured_tab = true; } } if ($show_compare_featured_tab) { $tabs['compare-featured'] = array('title' => esc_attr(stripslashes($compare_featured_tab)), 'priority' => $woo_compare_product_page_tab['auto_compare_featured_tab'], 'callback' => array('WC_Compare_Hook_Filter', 'woocp_product_featured_panel_woo_2_0')); } return $tabs; }
public static function insert_row($cat_id, $field_id) { global $wpdb; $table_name = $wpdb->prefix . "woo_compare_cat_fields"; $field_order = WC_Compare_Categories_Fields_Data::get_maximum_order("cat_id='" . $cat_id . "'"); $field_order++; $query = $wpdb->query("INSERT INTO {$table_name}(cat_id, field_id, field_order) VALUES('{$cat_id}', '{$field_id}', '{$field_order}')"); if ($query) { return true; } else { return false; } }
public static function woocp_update_orders() { check_ajax_referer('woocp-update-order', 'security'); $updateRecordsArray = $_REQUEST['recordsArray']; $cat_id = $_REQUEST['cat_id']; $listingCounter = 1; foreach ($updateRecordsArray as $recordIDValue) { WC_Compare_Categories_Fields_Data::update_order($cat_id, $recordIDValue, $listingCounter); $listingCounter++; } _e('You just save the order for Compare Features.', 'woo_cp'); die; }
/** * Get compare list on popup */ public static function get_compare_list_html_popup() { global $woo_compare_comparison_page_global_settings, $woo_compare_page_style, $woo_compare_table_style, $woo_compare_table_content_style, $woo_compare_addtocart_style, $woo_compare_viewcart_style; global $woo_compare_product_prices_style; $current_db_version = get_option('woocommerce_db_version', null); $compare_list = WC_Compare_Functions::get_compare_list(); $woo_compare_basket_icon = get_option('woo_compare_basket_icon'); if (trim($woo_compare_basket_icon) == '') { $woo_compare_basket_icon = WOOCP_IMAGES_URL . '/compare_remove.png'; } $html = ''; $product_cats = array(); $products_fields = array(); $products_prices = array(); $custom_class = ''; $add_to_cart_text = $woo_compare_addtocart_style['addtocart_link_text']; $add_to_cart_button_class = 'add_to_cart_link_type'; if (is_array($compare_list) && count($compare_list) > 0) { $html .= '<div id="compare-wrapper"><div class="compare-products">'; $html .= '<table id="product_comparison" class="compare_popup_table" border="1" bordercolor="' . $woo_compare_table_style['table_border_colour'] . '" cellpadding="5" cellspacing="0" width="">'; $html .= '<tbody><tr class="row_1 row_product_detail"><th class="column_first first_row"><div class="column_first_wide"> '; $html .= '</div></th>'; $i = 0; foreach ($compare_list as $product_id) { $product_cat = get_post_meta($product_id, '_woo_compare_category', true); $products_fields[$product_id] = WC_Compare_Categories_Fields_Data::get_fieldid_results($product_cat); if ($product_cat > 0) { $product_cats[] = $product_cat; } $i++; if (version_compare($current_db_version, '2.0', '<') && null !== $current_db_version) { $current_product = new WC_Product($product_id); } elseif (version_compare(WC()->version, '2.2.0', '<')) { $current_product = get_product($product_id); } else { $current_product = wc_get_product($product_id); } $product_name = WC_Compare_Functions::get_variation_name($product_id); $product_price = $current_product->get_price_html(); /** * Add code check show or hide price and add to cart button support for Woo Catalog Visibility Options plugin */ $show_add_to_cart = true; if (class_exists('WC_CVO_Visibility_Options')) { global $wc_cvo; /** * Check show or hide price */ if ($wc_cvo->setting('wc_cvo_prices') == 'secured' && !catalog_visibility_user_has_access() || $wc_cvo->setting('wc_cvo_prices') == 'disabled') { $product_price = ''; } /** * Check show or hide add to cart button */ if ($wc_cvo->setting('wc_cvo_atc') == 'secured' && !catalog_visibility_user_has_access() || $wc_cvo->setting('wc_cvo_atc') == 'disabled') { $show_add_to_cart = false; } } $products_prices[$product_id] = $product_price; $image_src = WC_Compare_Functions::get_post_thumbnail($product_id, 220, 180); if (trim($image_src) == '') { $image_src = '<img alt="' . $product_name . '" src="' . (version_compare($current_db_version, '2.1.0', '<') && null !== $current_db_version ? woocommerce_placeholder_img_src() : wc_placeholder_img_src()) . '" />'; } $html .= '<td class="first_row column_' . $i . '"><div class="td-spacer"><div class="woo_compare_popup_remove_product_container"><a class="woo_compare_popup_remove_product" rel="' . $product_id . '" style="cursor:pointer;">Remove <img src="' . $woo_compare_basket_icon . '" border=0 /></a></div>'; $html .= '<div class="compare_image_container">' . $image_src . '</div>'; $html .= '<div class="compare_product_name">' . $product_name . '</div>'; $html .= '<div class="compare_price">' . $products_prices[$product_id] . '</div>'; if ($show_add_to_cart && $current_product->is_in_stock() && trim($products_prices[$product_id]) != '') { if ($current_product->product_type != 'external') { $cart_url = add_query_arg('add-to-cart', $product_id, get_option('siteurl') . '/?post_type=product'); } else { if ($current_product->product_type == 'external') { if (version_compare($current_db_version, '2.0', '<') && null !== $current_db_version) { $cart_url = get_post_meta($product_id, '_product_url', true); $add_to_cart_text_external = get_post_meta($product_id, '_button_text', true); $add_to_cart_text_external ? $add_to_cart_text_external : __('Buy product', 'woo_cp'); } else { $cart_url = $current_product->product_url; $add_to_cart_text_external = $current_product->get_button_text(); } } } switch (get_post_type($product_id)) { case "product_variation": $class = 'is_variation'; $cart_url = WC_Compare_Functions::get_product_url($product_id); break; default: $class = 'simple'; break; } $html .= '<div class="compare_add_cart">'; if ($current_product->product_type == 'external') { $html .= sprintf('<a href="%s" rel="nofollow" class="button add_to_cart_button %s product_type_%s %s" target="_blank">%s</a>', $cart_url, $add_to_cart_button_class, $class, $custom_class, $add_to_cart_text_external); } else { $html .= sprintf('<a href="%s" data-product_id="%s" class="button add_to_cart_button %s product_type_%s %s" target="_blank">%s</a>', $cart_url, $product_id, $add_to_cart_button_class, $class, $custom_class, $add_to_cart_text); } $html .= '<a class="virtual_added_to_cart" href="#"> </a>'; $html .= '</div>'; } $html .= '</div></td>'; } $html .= '</tr>'; $product_cats = implode(",", $product_cats); $compare_fields = WC_Compare_Categories_Fields_Data::get_results('cat_id IN(' . $product_cats . ')', 'cf.cat_id ASC, cf.field_order ASC'); if (is_array($compare_fields) && count($compare_fields) > 0) { $j = 1; foreach ($compare_fields as $field_data) { $j++; $html .= '<tr class="row_' . $j . '">'; if (trim($field_data->field_unit) != '') { $html .= '<th class="column_first"><div class="compare_value">' . stripslashes($field_data->field_name) . ' (' . trim(stripslashes($field_data->field_unit)) . ')</div></th>'; } else { $html .= '<th class="column_first"><div class="compare_value">' . stripslashes($field_data->field_name) . '</div></th>'; } $i = 0; foreach ($compare_list as $product_id) { $i++; $empty_cell_class = ''; $empty_text_class = ''; if (in_array($field_data->id, $products_fields[$product_id])) { $field_value = get_post_meta($product_id, '_woo_compare_' . $field_data->field_key, true); if (is_serialized($field_value)) { $field_value = maybe_unserialize($field_value); } if (is_array($field_value) && count($field_value) > 0) { $field_value = implode(', ', $field_value); } elseif (is_array($field_value) && count($field_value) < 0) { $field_value = $woo_compare_table_content_style['empty_text']; } if (trim($field_value) == '') { $field_value = $woo_compare_table_content_style['empty_text']; } } else { $field_value = $woo_compare_table_content_style['empty_text']; } if ($field_value == $woo_compare_table_content_style['empty_text']) { $empty_cell_class = 'empty_cell'; $empty_text_class = 'empty_text'; } $html .= '<td class="column_' . $i . ' ' . $empty_cell_class . '"><div class="td-spacer ' . $empty_text_class . ' compare_' . $field_data->field_key . '">' . $field_value . '</div></td>'; } $html .= '</tr>'; if ($j == 2) { $j = 0; } } $j++; if ($j > 2) { $j = 1; } $html .= '<tr class="row_' . $j . ' row_end"><th class="column_first"> </th>'; $i = 0; foreach ($compare_list as $product_id) { $i++; $html .= '<td class="column_' . $i . '">'; $html .= '<div class="td-spacer compare_price">' . $products_prices[$product_id] . '</div>'; $html .= '</td>'; } } $html .= '</tbody></table>'; $html .= '</div></div>'; } else { $html .= '<div class="no_compare_list">' . $woo_compare_page_style['no_product_message_text'] . '</div>'; } return $html; }
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_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 }