874 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			874 lines
		
	
	
		
			36 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * [thinkai_WSH description]
 | |
|  *
 | |
|  * @return [type] [description]
 | |
|  */
 | |
| function thinkai_WSH() {
 | |
| 	return \THINKAI\Includes\Classes\Base::instance();
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_dot description]
 | |
|  *
 | |
|  * @param  array $data [description]
 | |
|  *
 | |
|  * @return [type]       [description]
 | |
|  */
 | |
| function thinkai_dot( $data = array() ) {
 | |
| 	$dn = new \THINKAI\Includes\Classes\DotNotation( $data );
 | |
| 
 | |
| 	return $dn;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_meta description].
 | |
|  *
 | |
|  * @param array $data [description]
 | |
|  *
 | |
|  * @return [type] [description]
 | |
|  */
 | |
| function thinkai_meta( $key, $id = '' ) {
 | |
| 	if ( empty( $id ) ) {
 | |
| 		$id = get_the_ID();
 | |
| 	}
 | |
| 
 | |
| 	return ( get_post_meta( $id, $key, true ) ) ? get_post_meta( $id, $key, true ) : '';
 | |
| }
 | |
| 
 | |
| function thinkaic_app( $class = 'base', $instance = true ) {
 | |
| 	$all   = array(
 | |
| 		'base' => '\THINKAI\Includes\Classes\Base',
 | |
| 		'vc'   => '\THINKAI\Includes\Classes\Visual_Composer',
 | |
| 		'ajax' => '\THINKAI\Includes\Classes\Ajax',
 | |
| 	);
 | |
| 	$dn    = thinkai_dot( $all );
 | |
| 	$class = ( $dn->get( $class ) ) ? $dn->get( $class ) : 'base';
 | |
| 	if ( $dn->get( $class ) ) {
 | |
| 		if ( $instance ) {
 | |
| 			return new $dn->get( $class );
 | |
| 		} else {
 | |
| 			return $dn->get( $classs );
 | |
| 		}
 | |
| 	} else {
 | |
| 		exit( esc_html__( 'No class found', 'thinkai' ) );
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Use front-page.php when Front page displays is set to a static page.
 | |
|  *
 | |
|  * @since THINKAI 1.0
 | |
|  *
 | |
|  * @param string $template front-page.php.
 | |
|  *
 | |
|  * @return string The template to be used: blank if is_home() is true (defaults to index.php), else $template.
 | |
|  */
 | |
| function thinkai_front_page_template( $template ) {
 | |
| 	return is_home() ? '' : $template;
 | |
| }
 | |
| 
 | |
| add_filter( 'frontpage_template', 'thinkai_front_page_template' );
 | |
| if ( ! function_exists( 'printr' ) ) {
 | |
| 	function printr( $arr ) {
 | |
| 		echo '<pre>';
 | |
| 		print_r( $arr );
 | |
| 		echo '</pre>';
 | |
| 		exit;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_template_load description]
 | |
|  *
 | |
|  * @param  string $template [description]
 | |
|  * @param  array  $args     [description]
 | |
|  *
 | |
|  * @return [type]           [description]
 | |
|  */
 | |
| function thinkai_template_load( $templ = '', $args = array() ) {
 | |
| 	$template = get_theme_file_path( $templ );
 | |
| 	if ( file_exists( $template ) ) {
 | |
| 		extract( $args );
 | |
| 		unset( $args );
 | |
| 		include $template;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_get_sidebars description]
 | |
|  *
 | |
|  * @param  boolean $multi [description].
 | |
|  *
 | |
|  * @return [type]         [description]
 | |
|  */
 | |
| function thinkai_get_sidebars( $multi = false ) {
 | |
| 	global $wp_registered_sidebars;
 | |
| 	$sidebars = ! ( $wp_registered_sidebars ) ? get_option( 'wp_registered_sidebars' ) : $wp_registered_sidebars;
 | |
| 	if ( $multi ) {
 | |
| 		$data[] = array( 'value' => '', 'label' => '' );
 | |
| 	}
 | |
| 	foreach ( (array) $sidebars as $sidebar ) {
 | |
| 		if ( $multi ) {
 | |
| 			$data[] = array( 'value' => thinkai_set( $sidebar, 'id' ), 'label' => thinkai_set( $sidebar, 'name' ) );
 | |
| 		} else {
 | |
| 			$data[ thinkai_set( $sidebar, 'id' ) ] = thinkai_set( $sidebar, 'name' );
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return $data;
 | |
| }
 | |
| 
 | |
| add_action( 'tgmpa_register', 'thinkai_register_required_plugins' );
 | |
| /**
 | |
|  * [my_theme_register_required_plugins description]
 | |
|  *
 | |
|  * @return void [description]
 | |
|  */
 | |
| function thinkai_register_required_plugins() {
 | |
| 	$plugins = array(
 | |
| 		array(
 | |
| 			'name'               => esc_html__( 'Thinkai Plugin', 'thinkai' ),
 | |
| 			'slug'               => 'thinkai-plugin',
 | |
| 			'source'             => get_template_directory() . '/includes/thirdparty/plugins/thinkai-plugin.zip',
 | |
| 			'required'           => true,
 | |
| 			'force_deactivation' => false,
 | |
| 			'file_path'          => ABSPATH . 'wp-content/plugins/thinkai-plugin/thinkai-plugin.php',
 | |
| 		),
 | |
| 		array(
 | |
| 			'name'			=> esc_html__('Contact Form 7', 'thinkai'),
 | |
| 			'slug'			=> 'contact-form-7',
 | |
| 			'required'		=> true,
 | |
| 		),
 | |
| 		array(
 | |
| 			'name'     => esc_html__( 'Elementor', 'thinkai' ),
 | |
| 			'slug'     => 'elementor',
 | |
| 			'required' => true,
 | |
| 		),
 | |
| 		array(
 | |
| 			'name'     				=> esc_html__('Woocommerce', 'thinkai'),
 | |
| 			'slug'     				=> 'woocommerce',
 | |
| 			'required' 				=> true,
 | |
| 		),
 | |
| 		array(
 | |
|             'name'      => esc_html__('Mailchimp for WordPress', 'thinkai'),
 | |
|             'slug'      => 'mailchimp-for-wp',
 | |
|             'required'  => true,
 | |
| 		),
 | |
| 	);
 | |
| 	/*Change this to your theme text domain, used for internationalising strings.*/
 | |
| 	$theme_text_domain = 'thinkai';
 | |
| 	$config            = array(
 | |
| 		'id'           => 'tgmpa',
 | |
| 		'default_path' => '',
 | |
| 		'menu'         => 'tgmpa-install-plugins',
 | |
| 		'parent_slug'  => 'themes.php',
 | |
| 		'capability'   => 'edit_theme_options',
 | |
| 		'has_notices'  => true,
 | |
| 		'dismissable'  => true,
 | |
| 		'dismiss_msg'  => '',
 | |
| 		'is_automatic' => false,
 | |
| 		'message'      => '',
 | |
| 	);
 | |
| 	THINKAI\Includes\Library\tgmpa( $plugins, $config );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_logo description]
 | |
|  *
 | |
|  * @return [type] [description]
 | |
|  */
 | |
| function thinkai_logo( $logo_type, $image_logo, $logo_dimension, $logo_text, $logo_typography ) {
 | |
| 	if ( $logo_type === 'text' ) {
 | |
| 		$logo       = $logo_text ? $logo_text : '<span>' . esc_html__( 'THINKAI', 'thinkai' ) . '</span>';
 | |
| 		$logo_style = $logo_typography;
 | |
| 		$logo_the_style  = ( thinkai_set( $logo_style, 'font-size' ) ) ? 'font-size:' . thinkai_set( $logo_style, 'font-size' ) . ';' : '';
 | |
| 		$logo_the_style  .= ( thinkai_set( $logo_style, 'font-family' ) ) ? "font-family:'" . thinkai_set( $logo_style, 'font-family' ) . "';" : '';
 | |
| 		$logo_the_style  .= ( thinkai_set( $logo_style, 'font-weight' ) ) ? 'font-weight:' . thinkai_set( $logo_style, 'font-weight' ) . ';' : '';
 | |
| 		$logo_the_style  .= ( thinkai_set( $logo_style, 'line-height' ) ) ? 'line-height:' . thinkai_set( $logo_style, 'line-height' ) . ';' : '';
 | |
| 		$logo_the_style  .= ( thinkai_set( $logo_style, 'color' ) ) ? 'color:' . thinkai_set( $logo_style, 'color' ) . ';' : '';
 | |
| 		$logo_the_style  .= ( thinkai_set( $logo_style, 'letter-spacing' ) ) ? 'letter-spacing:' . thinkai_set( $logo_style, 'letter-spacing' ) . ';' : '';
 | |
| 		$logo_output       = '<a style="' . $logo_the_style . '" href="' . home_url( '/' ) . '" title="' . get_bloginfo( 'name' ) . '">' . wp_kses( $logo, true ) . '</a>';
 | |
| 	} else {
 | |
| 		$logo_the_style      = '';
 | |
| 		$logo_image_style = '';
 | |
| 		$logo_image_style .= thinkai_set( $logo_dimension, 'width' ) ? ' width:' . thinkai_set( $logo_dimension, 'width' ) . ';' : '';
 | |
| 		$logo_image_style .= thinkai_set( $logo_dimension, 'height' ) ? ' height:' . ( thinkai_set( $logo_dimension, 'height' ) ) . ';' : '';
 | |
| 		if ( thinkai_set( $image_logo, 'url' ) ) {
 | |
| 			$logo_output = '<a href="' . home_url( '/' ) . '" title="' . get_bloginfo( 'name' ) . '"><img src="' . esc_url( thinkai_set( $image_logo, 'url' ) ) . '" alt="'.esc_attr__('logo', 'thinkai').'" style="' . $logo_image_style . '" /></a>';
 | |
| 		} else {
 | |
| 			$logo_output = '<a href="' . esc_url(home_url('/')) . '" title="' . get_bloginfo( 'name' ) . '"><img src="' . get_template_directory_uri() . '/assets/images/logo.png' . '" alt="'.esc_attr__('logo', 'thinkai').'" style="' . $logo_image_style . '" /></a>';
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return $logo_output;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_twitter description]
 | |
|  *
 | |
|  * @param  string  $post_type [description].
 | |
|  * @param  boolean $flip      [description].
 | |
|  *
 | |
|  * @return [type]             [description]
 | |
|  */
 | |
| function thinkai_twitter( $args = array() ) {
 | |
| 	$selector = thinkai_set( $args, 'selector' );
 | |
| 	$data     = thinkai_set( $args, 'data' );
 | |
| 	$count    = thinkai_set( $args, 'count', 3 );
 | |
| 	$screen   = thinkai_set( $args, 'screen_name', 'WordPress' );
 | |
| 	$settings = array( 'count' => $count, 'screen_name' => $screen );
 | |
| 	ob_start(); ?>
 | |
| 	jQuery(document).ready(function ($) {
 | |
| 	$('<?php echo esc_js( $selector ); ?>').tweets(<?php echo json_encode( $settings ); ?>);
 | |
| 	});
 | |
| 	<?php $jsOutput = ob_get_contents();
 | |
| 	ob_end_clean();
 | |
| 	wp_add_inline_script( 'twitter-tweets', $jsOutput );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_the_pagination description]
 | |
|  *
 | |
|  * @param  array   $args [description].
 | |
|  * @param  integer $echo [description].
 | |
|  *
 | |
|  * @return [type]        [description]
 | |
|  */
 | |
| 
 | |
| 
 | |
| function thinkai_the_pagination() {
 | |
|  
 | |
|     if( is_singular() )
 | |
|         return;
 | |
|  
 | |
|     global $wp_query;
 | |
|  
 | |
|     /** Stop execution if there's only 1 page */
 | |
|     if( $wp_query->max_num_pages <= 1 )
 | |
|         return;
 | |
|  
 | |
|     $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
 | |
|     $max   = intval( $wp_query->max_num_pages );
 | |
|  
 | |
|     /** Add current page to the array */
 | |
|     if ( $paged >= 1 )
 | |
|         $links[] = $paged;
 | |
|  
 | |
|     /** Add the pages around the current page to the array */
 | |
|     if ( $paged >= 3 ) {
 | |
|         $links[] = $paged - 1;
 | |
|         $links[] = $paged - 2;
 | |
|     }
 | |
|  
 | |
|     if ( ( $paged + 2 ) <= $max ) {
 | |
|         $links[] = $paged + 2;
 | |
|         $links[] = $paged + 1;
 | |
|     }
 | |
|  
 | |
|     echo '<ul class="pagination clearfix">' . "\n";
 | |
|  
 | |
|     /** Previous Post Link */
 | |
|     if ( get_previous_posts_link() )
 | |
|         printf( '<li class="prev">%s</li>' . "\n", get_previous_posts_link(__( '<i class="icon-left-arrow1 left"></i> Prev Page', 'thinkai' )) );
 | |
|  
 | |
|     /** Link to first page, plus ellipses if necessary */
 | |
|     if ( ! in_array( 1, $links ) ) {
 | |
|         $class = 1 == $paged ? ' class="active"' : '';
 | |
|  
 | |
|         printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
 | |
|  
 | |
|         if ( ! in_array( 2, $links ) )
 | |
|             echo '<li>…</li>';
 | |
|     }
 | |
|  
 | |
|     /** Link to current page, plus 2 pages in either direction if necessary */
 | |
|     sort( $links );
 | |
|     foreach ( (array) $links as $link ) {
 | |
|         $class = $paged == $link ? ' class="active"' : '';
 | |
|         printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
 | |
|     }
 | |
|  
 | |
|     /** Link to last page, plus ellipses if necessary */
 | |
|     if ( ! in_array( $max, $links ) ) {
 | |
|         if ( ! in_array( $max - 1, $links ) )
 | |
|             echo '<li>…</li>' . "\n";
 | |
|  
 | |
|         $class = $paged == $max ? ' class="active"' : '';
 | |
|         printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
 | |
|     }
 | |
|  
 | |
|     /** Next Post Link */
 | |
|     if ( get_next_posts_link() )
 | |
|         printf( '<li class="next">%s</li>' . "\n", get_next_posts_link(__( 'Next Page <i class="icon-right-arrow1 right"></i>', 'thinkai' )) );
 | |
|  
 | |
|     echo '</ul>' . "\n";
 | |
|  
 | |
| }
 | |
| 
 | |
| function thinkai_the_breadcrumb() {
 | |
| 	global $wp_query;
 | |
| 	$queried_object = get_queried_object();
 | |
| 	$breadcrumb     = '';
 | |
| 	$delimiter      = ' / ';
 | |
| 	$before         = '<li class="breadcrumb-item">';
 | |
| 	$after          = '</li>';
 | |
| 	if ( ! is_front_page() ) {
 | |
| 		$breadcrumb .= $before . '<a href="' . home_url( '/' ) . '">' . esc_html__( 'Home', 'thinkai' ) . '  </a>' . $after;
 | |
| 		/** If category or single post */
 | |
| 		if ( is_category() ) {
 | |
| 			$cat_obj       = $wp_query->get_queried_object();
 | |
| 			$this_category = get_category( $cat_obj->term_id );
 | |
| 			if ( $this_category->parent != 0 ) {
 | |
| 				$parent_category = get_category( $this_category->parent );
 | |
| 				$breadcrumb      .= get_category_parents( $parent_category, true, $delimiter );
 | |
| 			}
 | |
| 			$breadcrumb .= $before . '<a href="' . get_category_link( get_query_var( 'cat' ) ) . '">' . single_cat_title( '', false ) . '</a>' . $after;
 | |
| 		} elseif ( $wp_query->is_posts_page ) {
 | |
| 			$breadcrumb .= $before . $queried_object->post_title . $after;
 | |
| 		} elseif ( is_tax() ) {
 | |
| 			$breadcrumb .= $before . '<a href="' . get_term_link( $queried_object ) . '">' . $queried_object->name . '</a>' . $after;
 | |
| 		} elseif ( is_page() ) /** If WP pages */ {
 | |
| 			global $post;
 | |
| 			if ( $post->post_parent ) {
 | |
| 				$anc = get_post_ancestors( $post->ID );
 | |
| 				foreach ( $anc as $ancestor ) {
 | |
| 					$breadcrumb .= $before . '<a href="' . get_permalink( $ancestor ) . '">' . get_the_title( $ancestor ) . '  </a>' . $after;
 | |
| 				}
 | |
| 				$breadcrumb .= $before . '' . get_the_title( $post->ID ) . '' . $after;
 | |
| 			} else {
 | |
| 				$breadcrumb .= $before . '' . get_the_title() . '' . $after;
 | |
| 			}
 | |
| 		} elseif ( is_singular() ) {
 | |
| 			if ( $category = wp_get_object_terms( get_the_ID(), array( 'category', 'location', 'tax_feature' ) ) ) {
 | |
| 				if ( ! is_wp_error( $category ) ) {
 | |
| 					$breadcrumb .= $before . '<a href="' . get_term_link( thinkai_set( $category, '0' ) ) . '">' . thinkai_set( thinkai_set( $category, '0' ), 'name' ) . ' </a>' . $after;
 | |
| 					$breadcrumb .= $before . '' . get_the_title() . '' . $after;
 | |
| 				} else {
 | |
| 					$breadcrumb .= $before . '' . get_the_title() . '' . $after;
 | |
| 				}
 | |
| 			} else {
 | |
| 				$breadcrumb .= $before . '' . get_the_title() . '' . $after;
 | |
| 			}
 | |
| 		} elseif ( is_tag() ) {
 | |
| 			$breadcrumb .= $before . '<a href="' . get_term_link( $queried_object ) . '">' . single_tag_title( '', false ) . '</a>' . $after;
 | |
| 		} /**If tag template*/
 | |
| 		elseif ( is_day() ) {
 | |
| 			$breadcrumb .= $before . '<a href="#">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F jS, Y' ) . '</a>' . $after;
 | |
| 		} /** If daily Archives */
 | |
| 		elseif ( is_month() ) {
 | |
| 			$breadcrumb .= $before . '<a href="' . get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ) . '">'. get_the_time( 'F' ) . '</a>  ' . $after;
 | |
| 			$breadcrumb .= $before . '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">'. get_the_time( 'Y' ) . '</a>' . $after;
 | |
| 		} /* If montly Archives /
 | |
| 		elseif ( is_year() ) {
 | |
| 			$breadcrumb .= $before . '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'Y' ) . '</a>' . $after;
 | |
| 		} /** If year Archives */
 | |
| 		elseif ( is_author() ) {
 | |
| 			$breadcrumb .= $before . '<a href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '">' . esc_html__( 'Archive for ', 'thinkai' ) . get_the_author() . '</a>' . $after;
 | |
| 		} /** If author Archives */
 | |
| 		elseif ( is_search() ) {
 | |
| 			$breadcrumb .= $before . '' . esc_html__( 'Search Results for ', 'thinkai' ) . get_search_query() . '' . $after;
 | |
| 		} /** if search template */
 | |
| 		elseif ( is_404() ) {
 | |
| 			$breadcrumb .= $before . '' . esc_html__( '404 - Not Found', 'thinkai' ) . '' . $after;
 | |
| 			/** if search template */
 | |
| 		} elseif ( is_post_type_archive( 'product' ) ) {
 | |
| 			$shop_page_id = wc_get_page_id( 'shop' );
 | |
| 			if ( get_option( 'page_on_front' ) !== $shop_page_id ) {
 | |
| 				$shop_page = get_post( $shop_page_id );
 | |
| 				$_name     = wc_get_page_id( 'shop' ) ? get_the_title( wc_get_page_id( 'shop' ) ) : '';
 | |
| 				if ( ! $_name ) {
 | |
| 					$product_post_type = get_post_type_object( 'product' );
 | |
| 					$_name             = $product_post_type->labels->singular_name;
 | |
| 				}
 | |
| 				if ( is_search() ) {
 | |
| 					$breadcrumb .= $before . '<a href="' . get_post_type_archive_link( 'product' ) . '">' . $_name . '</a>' . $delimiter . esc_html__( 'Search results for “', 'thinkai' ) . get_search_query() . '”' . $after;
 | |
| 				} elseif ( is_paged() ) {
 | |
| 					$breadcrumb .= $before . '<a href="' . get_post_type_archive_link( 'product' ) . '">' . $_name . '</a>' . $after;
 | |
| 				} else {
 | |
| 					$breadcrumb .= $before . $_name . $after;
 | |
| 				}
 | |
| 			}
 | |
| 		} else {
 | |
| 			$breadcrumb .= $before . '<a href="' . get_permalink() . '">' . get_the_title() . '</a>' . $after;
 | |
| 		}
 | |
| 		/** Default value */
 | |
| 	}
 | |
| 
 | |
| 	return $breadcrumb;
 | |
| }
 | |
| 
 | |
| function thinkai_the_title( $template ) {
 | |
| 	global $wp_query;
 | |
| 	$queried_object = get_queried_object();
 | |
| 	$title          = '';
 | |
| 	/** If category or single post */
 | |
| 	if ( $template == 'category' || $template == 'tag' || $template == 'galleryCat' ) {
 | |
| 		$current_obj   = $wp_query->get_queried_object();
 | |
| 		$this_category = get_category( $current_obj->term_id );
 | |
| 		$title         .= $current_obj->name;
 | |
| 	} elseif ( is_home() ) {
 | |
| 		$title .= esc_html__( 'Home Page ', 'thinkai' );
 | |
| 	} elseif ( $template == 'page' || $template == 'post' || $template == 'VC' || $template == 'blog' || $template == 'courseDetail' || $template == 'team' || $template == 'services' || $template == 'events' || $template == 'gallery' || $template == 'shop' || $template == 'product' ) {
 | |
| 		$title .= get_the_title();
 | |
| 	} elseif ( $template == 'archive' and is_day() ) {
 | |
| 		$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F jS, Y' );
 | |
| 	} elseif ( $template == 'archive' and is_month() ) {
 | |
| 		$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'F, Y' );
 | |
| 	} elseif ( $template == 'archive' and is_year() ) {
 | |
| 		$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_time( 'Y' );
 | |
| 	} elseif ( $template == 'author' ) {
 | |
| 		$title .= esc_html__( 'Archive for ', 'thinkai' ) . get_the_author();
 | |
| 	} elseif ( $template == 'search' ) {
 | |
| 		$title .= esc_html__( 'Search Results for ', 'thinkai' ) . '"' . get_search_query() . '"';
 | |
| 	} elseif ( $template == '404' ) {
 | |
| 		$title .= esc_html__( '404 Page Not Found', 'thinkai' );
 | |
| 	}
 | |
| 
 | |
| 	return $title;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * [thinkai_list_comments description]
 | |
|  *
 | |
|  * @param  [type] $comment [description].
 | |
|  * @param  [type] $args    [description].
 | |
|  * @param  [type] $depth   [description].
 | |
|  *
 | |
|  * @return void          [description]
 | |
|  */
 | |
| function thinkai_list_comments( $comment, $args, $depth ) {
 | |
| 	$allowed_html = wp_kses_allowed_html( 'post' );
 | |
| 
 | |
| 	wp_enqueue_script( 'comment-reply' );
 | |
| 	$GLOBALS['comment'] = $comment;
 | |
| 	$like               = (int) get_comment_meta( $comment->comment_ID, 'like_it', true ); ?>
 | |
| 	
 | |
|     <div class="thinkai-comment-item">        
 | |
|         <div class="single-comment">
 | |
|             <div <?php comment_class('comment');?> id="comment-<?php comment_ID(); ?>">
 | |
|                 <div class="inner">
 | |
|                     <div class="single-comment-box">
 | |
|                         <div class="img-holder">
 | |
|                             <?php echo wp_kses( get_avatar( $comment, 70 ), true ); ?>
 | |
|                         </div>
 | |
|                         <div class="text-holder">
 | |
|                             <div class="top">
 | |
|                                 <h3><?php echo wp_kses( get_comment_author(), true ); ?>,</h3>
 | |
|                                 <p> <?php comment_date('F d, Y'); ?></p>
 | |
|                             </div>
 | |
|                             <div class="text">
 | |
|                                 <?php comment_text(); ?>
 | |
|                             </div>
 | |
|                             <div class="btn-box">
 | |
|                                 <?php 
 | |
| 									comment_reply_link( array_merge($args, array(
 | |
| 									'reply_text' => '<span class="icon-arrow-1"></span>' . esc_html( 'Reply', 'thinkai' ).'',
 | |
| 									'depth'      => $depth,
 | |
| 									'max_depth'  => $args['max_depth'],
 | |
| 									)
 | |
| 								)); ?>
 | |
|                             </div>
 | |
|                         </div>
 | |
|                     </div>
 | |
|                 </div>             
 | |
|             </div>
 | |
|         </div>
 | |
| 	<?php
 | |
| }
 | |
| 
 | |
| function thinkai_comment_reply_link_class( $class ) {
 | |
| 	$class = str_replace( "class='comment-reply-link", "class='comment-reply-link reply-btn", $class );
 | |
| 	return $class;
 | |
| }
 | |
| 
 | |
| add_filter( 'comment_reply_link', 'thinkai_comment_reply_link_class' );
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * [comment_form description]
 | |
|  *
 | |
|  * @param  array $args [description].
 | |
|  * @param  [type] $post_id [description].
 | |
|  *
 | |
|  * @return void          [description]
 | |
|  */
 | |
| function thinkai_comment_form( $args = array(), $post_id = null ) {
 | |
| 	if ( null === $post_id ) {
 | |
| 		$post_id = get_the_ID();
 | |
| 	}
 | |
| 	$allowed_html = wp_kses_allowed_html( 'post' );
 | |
| 	$commenter     = wp_get_current_commenter();
 | |
| 	$user          = wp_get_current_user();
 | |
| 	$user_identity = $user->exists() ? $user->display_name : '';
 | |
| 	$args          = wp_parse_args( $args );
 | |
| 	if ( ! isset( $args['format'] ) ) {
 | |
| 		$args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml';
 | |
| 	}
 | |
| 	$req                 = get_option( 'require_name_email' );
 | |
| 	$aria_req            = ( $req ? " aria-required='true'" : '' );
 | |
| 	$html_req            = ( $req ? " required='required'" : '' );
 | |
| 	$html5               = 'html5' === $args['format'];
 | |
| 	$comment_field_class = is_user_logged_in() ? 'col-sm-12' : 'col-sm-6';
 | |
| 	$fields              = array(
 | |
| 		'author' => '<div class="col-lg-6 col-md-6 col-sm-12"><div class="input-box"><input id="author" class="input_style__primary" name="author"  placeholder="' . esc_attr__( 'Name', 'thinkai' ) . '" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" maxlength="245"' . $aria_req . $html_req . ' /></div></div>',
 | |
| 		'email'  => '<div class="col-lg-6 col-md-6 col-sm-12"><div class="input-box"><input id="email" class="input_style__primary" placeholder="' . esc_attr__( 'Email', 'thinkai' ) . '" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" maxlength="100"/></div></div>',
 | |
| 	);
 | |
| 	$required_text       = sprintf( ' ' . esc_html__( '%s', 'thinkai' ), '' );
 | |
| 	/**
 | |
| 	 * Filters the default comment form fields.
 | |
| 	 *
 | |
| 	 * @since 3.0.0
 | |
| 	 *
 | |
| 	 * @param array $fields The default comment fields.
 | |
| 	 */
 | |
| 	$fields   = apply_filters( 'comment_form_default_fields', $fields );
 | |
| 	$defaults = array(
 | |
| 		'fields'               => $fields,
 | |
| 		'comment_field'        => '<div class="col-lg-12 col-md-12 col-sm-12"><div class="input-box input-box--sytle1"><textarea  placeholder="' . esc_attr__( 'Type Comment here', 'thinkai' ) . '"  id="comment" class="input_style__primary" name="comment" rows="7"  required="required"></textarea></div></div>',
 | |
| 		/** This filter is documented in wp-includes/link-template.php */
 | |
| 		'must_log_in'          => '<div class="log-in-text"><p class="must-log-in">' . sprintf(
 | |
| 			/* translators: %s: login URL */
 | |
| 				esc_html__( 'You must be <a href="%s">logged in</a> to post a comment.', 'thinkai' ),
 | |
| 				wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )
 | |
| 			) . '</p></div>',
 | |
| 		/** This filter is documented in wp-includes/link-template.php */
 | |
| 		'logged_in_as'         => '<div class="col-lg-12 col-md-12 col-sm-12"><p class="logged-in-as">' . sprintf(
 | |
| 			/* translators: 1: edit user link, 2: accessibility text, 3: user name, 4: logout URL */
 | |
| 				'<a href="%1$s" aria-label="%2$s">' . esc_html__( 'Logged in as', 'thinkai' ) . ' %3$s</a>. <a href="%4$s">' . esc_html__( 'Log out?', 'thinkai' ) . '</a>',
 | |
| 				get_edit_user_link(),
 | |
| 				/* translators: %s: user name */
 | |
| 				esc_attr( sprintf( esc_html__( 'Logged in as %s. Edit your profile.', 'thinkai' ), $user_identity ) ),
 | |
| 				$user_identity,
 | |
| 				wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) )
 | |
| 			) . '</p></div>',
 | |
| 		'comment_notes_before' => '',
 | |
| 		'comment_notes_after'  => '',
 | |
| 		'action'               => site_url( '/wp-comments-post.php' ),
 | |
| 		'id_form'              => 'add-comment-form',
 | |
| 		'id_submit'            => 'submit',
 | |
| 		'class_form'           => 'te-custom__form',
 | |
| 		'class_submit'         => 'submit',
 | |
| 		'name_submit'          => 'submit',
 | |
| 		'title_reply'          => esc_html__( 'Leave A Comment', 'thinkai' ),
 | |
| 		'title_reply_to'       => esc_html__( 'Leave a Reply to %s', 'thinkai' ),
 | |
| 		'title_reply_before'   => '<div class="inner-title"><h2>',
 | |
| 		'title_reply_after'    => '</h2></div>',
 | |
| 		'cancel_reply_before'  => ' <small>',
 | |
| 		'cancel_reply_after'   => '</small>',
 | |
| 		'cancel_reply_link'    => esc_html__( 'Cancel reply', 'thinkai' ),
 | |
| 		'label_submit'         => esc_html__( 'Post a Comment', 'thinkai' ),
 | |
| 		'submit_button'        => '<button name="%1$s" type="submit" id="%2$s" class="%3$s btn-one" value="%4$s"><span class="txt">Post Comment<i class="icon-next1"></i></span></button>',
 | |
| 		'submit_field'         => '<div class="button-box message-btn">%1$s %2$s</div>',
 | |
| 		'format'               => 'xhtml',
 | |
| 	);
 | |
| 	/**
 | |
| 	 * Filters the comment form default arguments.
 | |
| 	 * Use {@see 'comment_form_default_fields'} to filter the comment fields.
 | |
| 	 *
 | |
| 	 * @since 3.0.0
 | |
| 	 *
 | |
| 	 * @param array $defaults The default comment form arguments.
 | |
| 	 */
 | |
| 	$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
 | |
| 	$args = array_merge( $defaults, $args );
 | |
| 	if ( comments_open( $post_id ) ) : ?>
 | |
| 		<?php
 | |
| 		/**
 | |
| 		 * Fires before the comment form.
 | |
| 		 *
 | |
| 		 * @since 3.0.0
 | |
| 		 */
 | |
| 		do_action( 'comment_form_before' );
 | |
| 		?>
 | |
|         <div id="respond" class="comment-form-area add-comment-box">
 | |
|         
 | |
|             <?php
 | |
|             echo wp_kses( $args['title_reply_before'], $allowed_html );
 | |
|             comment_form_title( $args['title_reply'], $args['title_reply_to'] );
 | |
|             echo wp_kses( $args['cancel_reply_before'], $allowed_html );
 | |
|             cancel_comment_reply_link( $args['cancel_reply_link'] );
 | |
|             echo wp_kses( $args['cancel_reply_after'], $allowed_html );
 | |
|             echo wp_kses( $args['title_reply_after'], $allowed_html );
 | |
|             if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) :
 | |
|                 echo wp_kses( $args['must_log_in'], $allowed_html );
 | |
|                 /**
 | |
|                  * Fires after the HTML-formatted 'must log in after' message in the comment form.
 | |
|                  *
 | |
|                  * @since 3.0.0
 | |
|                  */
 | |
|                 do_action( 'comment_form_must_log_in_after' );
 | |
|             else : ?>
 | |
|            	<div class="form-inner">
 | |
|                 <form action="<?php echo esc_url( $args['action'] ); ?>" method="post" id="<?php echo esc_attr( $args['id_form'] ); ?>" class="<?php echo esc_attr( $args['class_form'] ); ?>" <?php echo wp_kses( $html5, $allowed_html ) ? ' novalidate' : ''; ?>>
 | |
|                     <div class="row clearfix">
 | |
|                         <?php
 | |
|                         /**
 | |
|                          * Fires at the top of the comment form, inside the form tag.
 | |
|                          *
 | |
|                          * @since 3.0.0
 | |
|                          */
 | |
|                         do_action( 'comment_form_top' );
 | |
|                         if ( is_user_logged_in() ) :
 | |
|                             /**
 | |
|                              * Filters the 'logged in' message for the comment form for display.
 | |
|                              *
 | |
|                              * @since 3.0.0
 | |
|                              *
 | |
|                              * @param string $args_logged_in The logged-in-as HTML-formatted message.
 | |
|                              * @param array  $commenter      An array containing the comment author's
 | |
|                              *                               username, email, and URL.
 | |
|                              * @param string $user_identity  If the commenter is a registered user,
 | |
|                              *                               the display name, blank otherwise.
 | |
|                              */
 | |
|                             echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity );
 | |
|                             /**
 | |
|                              * Fires after the is_user_logged_in() check in the comment form.
 | |
|                              *
 | |
|                              * @since 3.0.0
 | |
|                              *
 | |
|                              * @param array  $commenter     An array containing the comment author's
 | |
|                              *                              username, email, and URL.
 | |
|                              * @param string $user_identity If the commenter is a registered user,
 | |
|                              *                              the display name, blank otherwise.
 | |
|                              */
 | |
|                             do_action( 'comment_form_logged_in_after', $commenter, $user_identity );
 | |
|                         else :
 | |
|                             echo wp_kses( $args['comment_notes_before'], $allowed_html );
 | |
|                         endif;
 | |
|                         $comment_fields = (array) $args['fields'] + array( 'comment' => $args['comment_field'] );
 | |
|                         /**
 | |
|                          * Filters the comment form fields, including the textarea.
 | |
|                          *
 | |
|                          * @since 4.4.0
 | |
|                          *
 | |
|                          * @param array $comment_fields The comment fields.
 | |
|                          */
 | |
|                         $comment_fields     = apply_filters( 'comment_form_fields', $comment_fields );
 | |
|                         $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) );
 | |
|                         $first_field        = reset( $comment_field_keys );
 | |
|                         $last_field         = end( $comment_field_keys ); ?>
 | |
|                         <?php foreach ( $comment_fields as $name => $field ) {
 | |
|                             if ( 'comment' === $name ) {
 | |
|                                 /**
 | |
|                                  * Filters the content of the comment textarea field for display.
 | |
|                                  *
 | |
|                                  * @since 3.0.0
 | |
|                                  *
 | |
|                                  * @param string $args_comment_field The content of the comment textarea field.
 | |
|                                  */
 | |
|                                 echo apply_filters( 'comment_form_field_comment', $field );
 | |
|                                 echo wp_kses( $args['comment_notes_after'], $allowed_html );
 | |
|                             } elseif ( ! is_user_logged_in() ) {
 | |
|                                 if ( $first_field === $name ) {
 | |
|                                     /**
 | |
|                                      * Fires before the comment fields in the comment form, excluding the textarea.
 | |
|                                      *
 | |
|                                      * @since 3.0.0
 | |
|                                      */
 | |
|                                     do_action( 'comment_form_before_fields' );
 | |
|                                 }
 | |
|                                 /**
 | |
|                                  * Filters a comment form field for display.
 | |
|                                  * The dynamic portion of the filter hook, `$name`, refers to the name
 | |
|                                  * of the comment form field. Such as 'author', 'email', or 'url'.
 | |
|                                  *
 | |
|                                  * @since 3.0.0
 | |
|                                  *
 | |
|                                  * @param string $field The HTML-formatted output of the comment form field.
 | |
|                                  */
 | |
|                                 echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
 | |
|                                 if ( $last_field === $name ) {
 | |
|                                     /**
 | |
|                                      * Fires after the comment fields in the comment form, excluding the textarea.
 | |
|                                      *
 | |
|                                      * @since 3.0.0
 | |
|                                      */
 | |
|                                     do_action( 'comment_form_after_fields' );
 | |
|                                 }
 | |
|                             }
 | |
|                         } ?>
 | |
|                         <?php $submit_button = sprintf(
 | |
|                             $args['submit_button'],
 | |
|                             esc_attr( $args['name_submit'] ),
 | |
|                             esc_attr( $args['id_submit'] ),
 | |
|                             esc_attr( $args['class_submit'] ),
 | |
|                             esc_attr( $args['label_submit'] )
 | |
|                         );
 | |
|                         /**
 | |
|                          * Filters the submit button for the comment form to display.
 | |
|                          *
 | |
|                          * @since 4.2.0
 | |
|                          *
 | |
|                          * @param string $submit_button HTML markup for the submit button.
 | |
|                          * @param array  $args          Arguments passed to `comment_form()`.
 | |
|                          */
 | |
|                         $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args );
 | |
|                         $submit_field  = sprintf(
 | |
|                             $args['submit_field'],
 | |
|                             $submit_button,
 | |
|                             get_comment_id_fields( $post_id )
 | |
|                         );
 | |
|                         /**
 | |
|                          * Filters the submit field for the comment form to display.
 | |
|                          * The submit field includes the submit button, hidden fields for the
 | |
|                          * comment form, and any wrapper markup.
 | |
|                          *
 | |
|                          * @since 4.2.0
 | |
|                          *
 | |
|                          * @param string $submit_field HTML markup for the submit field.
 | |
|                          * @param array  $args         Arguments passed to comment_form().
 | |
|                          */
 | |
|                         echo apply_filters( 'comment_form_submit_field', $submit_field, $args );
 | |
|                         /**
 | |
|                          * Fires at the bottom of the comment form, inside the closing </form> tag.
 | |
|                          *
 | |
|                          * @since 1.5.0
 | |
|                          *
 | |
|                          * @param int $post_id The post ID.
 | |
|                          */
 | |
|                         do_action( 'comment_form', $post_id );
 | |
|                         ?>
 | |
|                     </div>
 | |
|                 </form>
 | |
|             </div>    
 | |
| 			<?php endif; ?>
 | |
|         
 | |
|         </div>
 | |
| 		<?php
 | |
| 		/**
 | |
| 		 * Fires after the comment form.
 | |
| 		 *
 | |
| 		 * @since 3.0.0
 | |
| 		 */
 | |
| 		do_action( 'comment_form_after' );
 | |
| 	else :
 | |
| 		/**
 | |
| 		 * Fires after the comment form if comments are closed.
 | |
| 		 *
 | |
| 		 * @since 3.0.0
 | |
| 		 */
 | |
| 		do_action( 'comment_form_comments_closed' );
 | |
| 	endif;
 | |
| }
 | |
| 
 | |
| if( ! function_exists('thinkai_filesystem') ) {
 | |
| 	/**
 | |
| 	 * [fixkar_filesystem description]
 | |
| 	 * @return [type] [description]
 | |
| 	 */
 | |
| 	function thinkai_filesystem() {
 | |
| 		if( ! function_exists('require_filesystem_credentials')) {
 | |
| 			require_once ABSPATH . 'wp-admin/includes/file.php';
 | |
| 		}
 | |
| 
 | |
| 		/* you can safely run request_filesystem_credentials() without any issues and don't need to worry about passing in a URL */
 | |
| 		$creds = request_filesystem_credentials(esc_url(home_url('/')), '', false, false, array());
 | |
| 
 | |
| 		/* initialize the API */
 | |
| 		if ( ! WP_Filesystem($creds) ) {
 | |
| 			/* any problems and we exit */
 | |
| 			return false;
 | |
| 		}	
 | |
| 
 | |
| 		global $wp_filesystem;
 | |
| 		/* do our file manipulations below */
 | |
| 
 | |
| 		return $wp_filesystem;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| if( ! function_exists('thinkai_get_server') ) {
 | |
| 
 | |
| 	function thinkai_get_server($key = '', $value = '') {
 | |
| 		if( function_exists('thinkai_server') ) {
 | |
| 			return thinkai_server($key, $value);
 | |
| 		}
 | |
| 
 | |
| 		return [];
 | |
| 	}
 | |
| }
 | |
| 
 | |
| function thinkai_body_classes( $classes ) {
 | |
|     $classes[] = 'menu-layer';
 | |
|       
 | |
|     return $classes;
 | |
| }
 | |
| add_filter( 'body_class','thinkai_body_classes' );
 | |
| 
 | |
| function thinkai_custom_fonts_load( $custom_font ) {
 | |
| 
 | |
|     $custom_style = '';
 | |
|     
 | |
|     $pathinfo = pathinfo($custom_font);
 | |
|     
 | |
|     if ( $filename = thinkai_set( $pathinfo, 'filename' ) ) {
 | |
|         $custom_style .= '@font-face{
 | |
|             font-family:"'.$filename.'";';
 | |
|             $extensions = array( 'eot', 'woff', 'woff2', 'ttf', 'svg' );
 | |
|             $count = 0;
 | |
|             foreach( $extensions as $extension ) {
 | |
|                 $file_path = get_template_directory() . '/assets/css/custom-fonts/' . $filename . '.' . $extension;
 | |
|                 $file_url = get_template_directory_uri() . '/assets/css/custom-fonts/' . $filename . '.' . $extension;
 | |
|     
 | |
|                 if ( file_exists( $file_path ) ) {
 | |
|                     $format = $extension;
 | |
|                     if ( $extension === 'eot' ) {
 | |
|                         $format = 'embedded-opentype';
 | |
|                     }
 | |
|                     if ( $extension === 'ttf' ) {
 | |
|                         $format = 'truetype';
 | |
|                     }
 | |
|                     $terminated = ( $count > 0 ) ? ',' : '';
 | |
|                     $custom_style .= $terminated . 'src:url("'.$file_url.'") format("'.$format.'")';
 | |
|     
 | |
|                     $count++;
 | |
|                 }
 | |
|             }
 | |
|     
 | |
|             $custom_style .= ';}';
 | |
|         }
 | |
|     
 | |
|         return $custom_style;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Add Flaticon existing font library
 | |
|  *
 | |
|  * @since 0.0.1
 | |
|  */
 | |
| if( ! function_exists('thinkai_el_flat_icon') ) {
 | |
| 	function thinkai_el_flat_icon($args) {
 | |
| 
 | |
| 		
 | |
| 		$args['icomoon'] =  [
 | |
| 			'name' 			=> 'icomoon',
 | |
| 			'label' 		=> esc_html__( 'Icomoon Icons', 'thinkai' ),
 | |
| 			'url' 			=> get_template_directory_uri() . '/assets/vendors/thm-icons/style.css',
 | |
| 			'enqueue' 		=> [ get_template_directory_uri() . '/assets/vendors/thm-icons/style.css' ],
 | |
| 			'prefix' 		=> 'icon ',
 | |
| 			'labelIcon' 	=> 'icon-packs',
 | |
| 			'ver' 			=> '1.0',
 | |
| 			'fetchJson' 	=> get_template_directory_uri() . '/assets/js/icomoon.js',
 | |
| 			'native' 		=> true,
 | |
| 		];
 | |
| 				
 | |
| 		return $args;
 | |
| 	}
 | |
| }
 | |
| add_filter( 'elementor/icons_manager/native', 'thinkai_el_flat_icon' );
 | |
| 
 | |
| function thinkai_trim( $text, $len, $more = null )
 | |
| 	{
 | |
| 		$text = strip_shortcodes( $text );
 | |
| 		$text = apply_filters( 'the_content', $text );
 | |
| 		$text = str_replace(']]>', ']]>', $text);
 | |
| 		$excerpt_length = apply_filters( 'excerpt_length', $len );
 | |
| 		$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
 | |
| 		$excerpt_more = ( $more ) ? $more : ' ...';
 | |
| 		$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
 | |
| 		return $text;
 | |
| 	}
 |