module_dir = plugin_dir_path( __FILE__ ).'modules/';
add_action('admin_enqueue_scripts',array($this,'admin_scripts'));
add_action('wp_enqueue_scripts',array($this,'front_scripts'),1);
add_action('admin_init',array($this,'generate_shortcode_params'));
} /* end constructor */
function generate_shortcode_params(){
/* Generate param type "woocomposer" */
if(defined('WPB_VC_VERSION') && version_compare(WPB_VC_VERSION, 4.8) >= 0) {
if(function_exists('vc_add_shortcode_param'))
{
vc_add_shortcode_param('woocomposer', array($this,'woo_query_builder'), plugins_url("admin/js/mapping.js",__FILE__));
vc_add_shortcode_param('product_search', array($this,'woo_product_search'));
vc_add_shortcode_param('product_categories', array($this,'woo_product_categories'));
}
}
else {
if(function_exists('add_shortcode_param')) {
add_shortcode_param('woocomposer', array($this,'woo_query_builder'), plugins_url("admin/js/mapping.js",__FILE__));
add_shortcode_param('product_search', array($this,'woo_product_search'));
add_shortcode_param('product_categories', array($this,'woo_product_categories'));
}
}
}
function woo_query_builder($settings, $value)
{
$output = $asc = $desc = $post_count = $shortcode_str = $cat_id = '';
$labels = isset($settings['labels']) ? $settings['labels'] : '';
$pattern = get_shortcode_regex();
if($value !== ""){
$shortcode = rawurldecode( base64_decode( strip_tags( $value ) ) );
preg_match_all("/".$pattern."/",$shortcode,$matches);
$shortcode_str = str_replace('"','',str_replace(" ","&",trim($matches[3][0])));
}
$short_atts = parse_str($shortcode_str);//explode("&",$shortcode_str);
if(isset($matches[2][0])): $display_type = $matches[2][0]; else: $display_type = ''; endif;
if(!isset($columns)): $columns = '4'; endif;
if(!isset($per_page)): $post_count = '12'; else: $post_count = $per_page; endif;
if(!isset($number)): $per_page = '12'; else: $post_count = $number; endif;
if(!isset($order)): $order = 'asc'; endif;
if(!isset($orderby)): $orderby = 'date'; endif;
if(!isset($category)): $category = ''; endif;
$catObj = get_term_by('name',$category,'product_cat');
if(is_object($catObj)){
$cat_id = $catObj->term_id;
}
$param_name = isset($settings['param_name']) ? $settings['param_name'] : '';
$type = isset($settings['type']) ? $settings['type'] : '';
$class = isset($settings['class']) ? $settings['class'] : '';
$module = isset($settings['module']) ? $settings['module'] : '';
$displays = array(
__("Recent products","ultimate_vc") => "recent_products",
__("Featured Products","ultimate_vc") => "featured_products",
__("Top Rated Products","ultimate_vc") => "top_rated_products",
__("Product Category","ultimate_vc") => "product_category",
__("Product Categories","ultimate_vc") => "product_categories",
__("Products on Sale","ultimate_vc") => "sale_products",
__("Best Selling Products","ultimate_vc") => "best_selling_products",
);
$orderby_arr = array(
__("Date","ultimate_vc") => "date",
__("Title","ultimate_vc") => "title",
__("Product ID","ultimate_vc") => "ID",
__("Name","ultimate_vc") => "name",
__("Price","ultimate_vc") => "price",
__("Sales","ultimate_vc") => "sales",
__("Random","ultimate_vc") => "rand",
);
$output .= '
'.__($labels['products_from'],'ultimate_vc').' ';
$output .='';
foreach($displays as $title => $display){
if($display == $display_type)
$output .= ''.__($title,'ultimate_vc').' ';
else
$output .= ''.__($title,'ultimate_vc').' ';
}
$output .= '
';
$output .= ''.__($labels['per_page'],'ultimate_vc').' ';
$output .= '
';
if($module == "grid"){
$output .= ''.__($labels['columns'],'ultimate_vc').' ';
$output .= '
';
}
$output .= ''.__($labels['order_by'],'ultimate_vc').' ';
$output .= '';
foreach($orderby_arr as $key => $val){
if($orderby == $val)
$output .= ''.__($key,'ultimate_vc').' ';
else
$output .= ''.__($key,'ultimate_vc').' ';
}
$output .= '
';
$output .= ''.__($labels['order'],'ultimate_vc').' ';
$output .= '';
if($order == "asc")
$asc = 'selected="selected"';
else
$desc = 'selected="selected"';
$output .= ''.__('Ascending','ultimate_vc').' ';
$output .= ''.__('Descending','ultimate_vc').' ';
$output .= '
';
$output .= ''.__($labels['category'],'ultimate_vc').' ';
$output .= wp_dropdown_categories( array('taxonomy'=>'product_cat','selected'=>$cat_id,'echo' => false,)).'
';
$output .= '';
$output .= " ";
return $output;
} /* end woo_query_builder */
function woo_product_search($settings, $value){
$param_name = isset($settings['param_name']) ? $settings['param_name'] : '';
$type = isset($settings['type']) ? $settings['type'] : '';
$class = isset($settings['class']) ? $settings['class'] : '';
$products_array = new WP_Query(array(
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish'
));
$output = '';
$output .= '';
while ($products_array->have_posts()) : $products_array->the_post();
if($value == get_the_ID()){
$selected = "selected='selected'";
} else {
$selected = '';
}
$output .= ''.__(get_the_title(),'ultimate_vc').' ';
endwhile;
$output .= ' ';
$output .= '';
return $output;
} /* end woo_product_search */
function woo_product_categories($settings, $value){
$param_name = isset($settings['param_name']) ? $settings['param_name'] : '';
$type = isset($settings['type']) ? $settings['type'] : '';
$class = isset($settings['class']) ? $settings['class'] : '';
$product_categories = get_terms( 'product_cat', '' );
$output = $selected = $ids = '';
if ( $value !== '' ) {
$ids = explode( ',', $value );
$ids = array_map( 'trim', $ids );
} else {
$ids = array();
}
$output .= '';
foreach($product_categories as $cat){
if(in_array($cat->term_id, $ids)){
$selected = 'selected="selected"';
} else {
$selected = '';
}
$output .= ''. __($cat->name,'ultimate_vc') .' ';
}
$output .= ' ';
$output .= " ";
$output .= '';
return $output;
} /* end woo_product_categories*/
function admin_scripts($hook)
{
if($hook == "post.php" || $hook == "post-new.php"){
if(defined('WOOCOMMERCE_VERSION') && version_compare( '2.1.0', WOOCOMMERCE_VERSION, '<' )) {
$bsf_dev_mode = bsf_get_option('dev_mode');
if($bsf_dev_mode === 'enable') {
wp_register_style("woocomposer-admin",plugins_url("admin/css/admin.css",__FILE__));
wp_register_style("woocomposer-select2-bootstrap",plugins_url("admin/css/select2-bootstrap.css",__FILE__));
wp_register_style("woocomposer-select2",plugins_url("admin/css/select2.css",__FILE__));
wp_enqueue_style("woocomposer-admin");
wp_enqueue_style("woocomposer-select2-bootstrap");
wp_enqueue_style("woocomposer-select2");
//wp_register_script("woocomposer-unveil",plugins_url("assets/js/unveil.js",__FILE__),array('jquery'),'',true);
wp_register_script("woocomposer-select2-js",plugins_url("admin/js/select2.js",__FILE__),array('jquery'),'',true);
//wp_enqueue_script("woocomposer-slick",plugins_url("assets/js/slick.js",__FILE__),array('jquery'),'',true);
//wp_enqueue_script("woocomposer-js",plugins_url("assets/js/custom.js",__FILE__),array('jquery'),'',true);
//wp_enqueue_script("woocomposer-unveil");
wp_enqueue_script("woocomposer-select2-js");
//wp_enqueue_script("woocomposer-slick");
//wp_enqueue_script("woocomposer-js");
}
else {
wp_register_style("woocomposer-admin-style",plugins_url("admin/css/ultimate-woocomposer-backend.min.css",__FILE__));
wp_enqueue_style("woocomposer-admin-style");
wp_enqueue_script("woocomposer-admin-script",plugins_url("admin/js/ultimate-woocomposer-backend.min.js",__FILE__),array('jquery'),'',true);
wp_enqueue_style("woocomposer-admin-script");
}
}
}
} /* end admin scripts */
function front_scripts($post)
{
if(!is_404() && !is_search() && !is_archive()){
global $post;
$count = 0;
if ( NULL !== $post ) {
$content = $post->post_content;
$shortcodes = array('woocomposer_product','woocomposer_list','woocomposer_grid','woocomposer_grid_cat','woocomposer_carousel_cat','woocomposer_carousel');
foreach($shortcodes as $shortcode){
if(has_shortcode($content, $shortcode)) {
$count++;
}
}
wp_register_script('woocomposer-unveil',plugins_url('assets/js/unveil.js',__FILE__),array('jquery'),WOOCOMPOSER_VERSION,true);
wp_register_script('woocomposer-slick',plugins_url('assets/js/slick.js',__FILE__),array('jquery'),WOOCOMPOSER_VERSION,true);
wp_register_script('woocomposer-js',plugins_url('assets/js/custom.js',__FILE__),array('jquery','woocomposer-slick'),WOOCOMPOSER_VERSION,true);
wp_register_style('woocomposer-front',plugins_url('assets/css/style.css',__FILE__),array(),WOOCOMPOSER_VERSION);
wp_register_style('woocomposer-front-wooicon',plugins_url('assets/css/wooicon.css',__FILE__),array(),WOOCOMPOSER_VERSION);
wp_register_style('woocomposer-front-slick',plugins_url('assets/css/slick.css',__FILE__),array(),WOOCOMPOSER_VERSION);
wp_register_style('woocomposer-animate',plugins_url('assets/css/animate.min.css',__FILE__),array(),WOOCOMPOSER_VERSION);
wp_register_script('woocomposer-script',plugins_url('assets/js/woocomposer.min.js',__FILE__),array('jquery'),WOOCOMPOSER_VERSION,true);
wp_register_style('woocomposer-style',plugins_url('assets/css/woocomposer.min.css',__FILE__),array(),WOOCOMPOSER_VERSION);
if(defined('WOOCOMMERCE_VERSION') && version_compare( '2.1.0', WOOCOMMERCE_VERSION, '<' ) && $count !== 0) {
$ultimate_css = get_option('ultimate_css');
$bsf_dev_mode = bsf_get_option('dev_mode');
if($ultimate_css == "enable" && $bsf_dev_mode !== 'enable'){
wp_enqueue_style("woocomposer-style");
}
else {
wp_enqueue_style("woocomposer-front");
wp_enqueue_style("woocomposer-front-wooicon");
wp_enqueue_style("woocomposer-front-slick");
wp_enqueue_style("woocomposer-animate");
}
$ultimate_js = get_option('ultimate_js');
wp_enqueue_script('jquery');
if($ultimate_js == 'enable') {
wp_enqueue_script("woocomposer-script");
}
else {
wp_enqueue_script("woocomposer-unveil");
wp_enqueue_script("woocomposer-slick");
wp_enqueue_script("woocomposer-js");
}
}
}
}
}/* end front_scripts */
}
new WooComposer;
add_action('admin_init','init_woocomposer');
function init_woocomposer()
{
$required_vc = '3.7.2';
if(defined('WPB_VC_VERSION')){
if( version_compare( $required_vc, WPB_VC_VERSION, '>' )){
add_action( 'admin_notices', 'woocomposer_admin_notice_for_version');
add_action( 'network_admin_notices', 'woocomposer_admin_notice_for_version');
}
} else {
add_action( 'admin_notices', 'woocomposer_admin_notice_for_vc_activation');
add_action( 'network_admin_notices', 'woocomposer_admin_notice_for_vc_activation');
}
}/* end init_addons */
function woocomposer_admin_notice_for_version()
{
$is_multisite = is_multisite();
$is_network_admin = is_network_admin();
if(($is_multisite && $is_network_admin) || !$is_multisite)
echo ''.__('The','ultimate_vc').' WooComposer '.__('plugin requires','ultimate_vc').' Visual Composer '.__('version 3.7.2 or greater.','ultimate_vc').'
';
}
function woocomposer_admin_notice_for_vc_activation()
{
$is_multisite = is_multisite();
$is_network_admin = is_network_admin();
if(($is_multisite && $is_network_admin) || !$is_multisite)
echo ''.__('The','ultimate_vc').' WooComposer '.__('plugin requires','ultimate_vc').' Visual Composer '.__('Plugin installed and activated.').'
';
}
}
// check the current post for the existence of a short code
if(!function_exists("has_shortcode")){
function has_shortcode($shortcode = '') {
$post_to_check = get_post(get_the_ID());
// false because we have to search through the post content first
$found = false;
// if no short code was provided, return false
if (!$shortcode) {
return $found;
}
// check the post content for the short code
if ( stripos($post_to_check->post_content, '[' . $shortcode) !== false ) {
// we have found the short code
$found = true;
}
// return our final results
return $found;
}
}