MPL_URL = untrailingslashit( MPL_URL ).'/assets/frontend/';
if (defined('MPL_DEVELOPMENT') && MPL_DEVELOPMENT === true)
$this->min = '';
add_action('wp_enqueue_scripts', array( &$this, 'before_header' ), 9999 );
add_action('wp_head', array( &$this, 'front_head' ), 999 );
add_action('wp_footer',array( $this,'front_footer' ), 999 );
add_filter('body_class', array( &$this, 'body_classes' ) );
add_filter('mpl-el-class', array( &$this, 'el_class'));
add_filter('mpl-owl-carousel', array( &$this, 'owl_carousel'));
add_filter('mpl-video-background', array( &$this, 'render_video_background'));
$icl_array = array(
'helper.functions.php' => MPL_PATH.'/includes/frontend/helpers/',
'shortcodes.filters.php' => MPL_PATH.'/includes/frontend/helpers/'
);
foreach ($icl_array as $file => $dir) {
if (file_exists(untrailingslashit($dir) .MDS .$file))
include untrailingslashit($dir) .MDS .$file;
}
if (isset($_GET['mpl_action']) && !empty($_GET['mpl_action']))
$this->action = sanitize_title($_GET['mpl_action']);
else if (isset($_POST['mpl_action']) && !empty($_POST['mpl_action']))
$this->action = sanitize_title($_POST['mpl_action']);
if ($this->action == 'live-editor')
show_admin_bar(false);
}
public static function globe() {
global $mpl_front;
if (isset($mpl_front))
return $mpl_front;
else
wp_die('MPL Error: Global varible could not be loaded.');
}
public function before_header() {
global $mpl_meta;
// Get access of curent page
// Return to $this->allows
$this->register_assets();
$this->load_scripts();
if ($this->allowed_access() && mpl_is_using()) {
global $post;
if (isset($post) && !empty( $post->post_content_filtered)) {
$post->post_content = html_entity_decode( stripslashes_deep( $post->post_content_filtered ) );
}
if ($this->front_builder_load() === false)
return false;
if (isset($post)) {
$post_data = get_post_meta( $post->ID , 'mpl_data', true );
if (!empty($post_data) && $post_data['mode'] == 'mpl') {
remove_filter('the_content', 'wpautop');
remove_filter('the_content', 'shortcode_unautop');
}
}
$this->css_str = '';
$this->css_obj = array();
$this->prevent_infinite_loop = array();
$post->post_content = apply_filters(
'mpl-content-after',
$this->do_filter_shortcode(apply_filters('mpl-content-before', $post->post_content ), true)
);
$this->css_str_master = $this->css_str;
$this->css_obj_master = $this->css_obj;
}
wp_localize_script('mpl-front-scripts', 'mpl_params', array(
'ajaxurl' => admin_url('admin-ajax.php'),
'plugin_url' => MPL_URL,
));
}
public function add_filters() {
global $mpl;
if (is_array($mpl->add_filters)) {
foreach ($mpl->add_filters as $name => $filters) {
if (is_array($filters)) {
foreach ($filters as $callback) {
if (is_callable($callback)) {
add_filter('shortcode_' .$name, $callback);
}
}
}
}
}
}
public function front_builder_load() {
global $mpl, $mpl_pro, $post;
$content = trim($post->post_content);
if ($this->action == 'live-editor') {
if ($mpl->user_can_edit() === false)
wp_die('You do not have permission to edit this page. Please login or edit the pages that you have the permission.
');
foreach ($this->scripts as $script)
wp_enqueue_script($script);
//masonry enqueue
wp_enqueue_script( 'masonry' );
foreach ($this->styles as $style)
wp_enqueue_style($style);
if (isset( $mpl_pro ) && is_callable(array(&$mpl_pro, 'bottom_builder')))
add_filter('mpl-content-after', array(&$mpl_pro, 'bottom_builder'));
} else if (empty($content)) {
return false;
}
return true;
}
public function do_filter_shortcode($content, $is_master = true) {
global $shortcode_tags;
$this->tags_filter = array();
$this->content_master = $is_master;
$content = preg_replace_callback( '@\[([^<>&/\[\]\x00-\x20]++)@', array( &$this, 'do_shortcode_alter' ), $content );
$tagnames = array_intersect( array_keys( $shortcode_tags ), $this->tags_filter );
if ( empty( $tagnames ) )
return $content;
$pattern_filter = get_shortcode_regex( $tagnames );
return preg_replace_callback( "/$pattern_filter/", array( &$this, 'do_shortcode_tag' ), $content );
}
public function do_shortcode_alter($m) {
$al = preg_replace( "/[^\#]/", '', $m[1] );
if( !empty( $al ) )
$m[0].= ' __="'.$al.'"';
else
array_push( $this->tags_filter, $m[1] );
return $m[0];
}
public function do_shortcode_tag($m) {
if ( $m[1] == '[' && $m[6] == ']' )
return substr($m[0], 1, -1);
global $mpl;
$tag = $m[2];
$maps = $mpl->get_maps($tag);
$params = $mpl->params_obj($tag);
$css_code = '';
$atts = (array)$this->shortcode_parse_atts($m[3]);
$closed = substr($m[0], strlen($m[0]) - strlen($tag) - 3);
// If this shortcode has been disabled
if (isset($atts['disabled']) && $atts['disabled'] == 'on')
return '';
/*
* Row is link to section
*/
if ($tag == 'mpl_row' && isset( $atts['__section_link']))
{
if (!isset( $this->prevent_infinite_loop[ $atts['__section_link'] ]))
{
$this->prevent_infinite_loop[ $atts['__section_link'] ] = true;
$is_master = $this->content_master;
$section = mpl_raw_content($atts['__section_link']);
$section_meta = get_post_meta($atts['__section_link'] , 'mpl_data', true);
if (!empty($section_meta) && !empty($section_meta['css']))
$this->css .= $section_meta['css'];
if (!empty($section))
$section = $this->do_filter_shortcode( $section, false );
else
$section = ''.__('Section content is empty, please edit section to add content', 'mageewp-page-layout').'
';
/*
* Set back primary
*/
$this->content_master = $is_master;
/*
* unset to work for next seciton link
*/
unset( $this->prevent_infinite_loop[ $atts['__section_link'] ] );
}
else
{
$section = ''.__('MPL fatal error occurred: Infinite loop when trying to include section', 'mageewp-page-layout').'
';
}
if ($this->action == 'live-editor')
{
$atts['content'] = '';
$model = count( $this->storage );
$storage = array(
'args' => $atts,
'name' => $tag,
'content' => '',
'end' => '[/'.$tag.']',
'full' => $m[0]
);
$this->storage[ $model ] = $storage;
//2017/05/10 10:47
//$section = ''.trim($section).'';
/*
* Add to
*/
}
return $section;
}
/*
* Render id for each element
*/
if( !isset( $atts['_id'] ) || empty( $atts['_id'] ) || in_array( $atts['_id'], $this->prevent_duplicate_ids) ) {
$atts['_id'] = rand(23035, 4362247);
}
/*
* Make sure the id of elements is unique
*/
array_push( $this->prevent_duplicate_ids, $atts['_id'] );
$atts['_css'] = array();
// Move all custom css to header css
if( isset( $atts['css'] ) ){
$strs = explode( '|', $atts['css'] );
if( isset( $strs[1] ) && !empty( $strs[1] ) )
$strs = explode( ';', $strs[1] );
else if( !empty( $strs[0] ) )
$strs = explode( ';', $strs[0] );
foreach( $strs as $str ){
$str = explode( ':', $str );
if( !empty($str[0]) )
$atts['_css'][] = '`'.$str[0].'`:`'.$str[1].'`';
}
unset( $atts['css'] );
}
// Process width for columns
if( isset( $atts['width'] ) && strpos($atts['width'], '%') !== false )
$atts['_css'][] = '`width`:`'.esc_attr($atts['width']).'`';
if( count( $atts['_css'] ) > 0 ){
$css_code .= $this->render_element_css( '{`mpl-css`:{`1000-5000`:{`group`:{'.esc_attr(implode( ',', $atts['_css'] )).'}}}}', $atts['_id'] );
unset( $atts['_css'] );
}
if (is_array( $atts ))
{
foreach($atts as $k => $v)
{
/*
* @since ver 2.5
* Process fields have the type is css
*/
if ((isset($params[$k]) && is_array($params[$k]) && $params[$k]['type'] == 'css') || strpos($k, '_css_inspector') === 0) {
$css_code .= $this->render_element_css( $v, $atts['_id'] );
} else if (is_string($v)) {
if( $k == '__empty__' )
$atts[$k] = '';
else $atts[$k] = $mpl->unesc( $v );
}
}
if( $css_code !== '' )
$this->css_str .= '/*s'.$atts['_id'].'*/'.$css_code.'/*e'.$atts['_id'].'*/';
unset( $atts['_css'] );
}
$atts['__name'] = $tag;
// add # for name of container
if( isset( $atts['__'] ) ){
$atts['__name'] .= $atts['__'];
unset( $atts['__'] );
}
if( $closed == '[/'.esc_attr( $tag ).']' ){
if ( isset( $m[5] ) && !empty( $m[5] ) )
$atts['__content'] = $this->do_filter_shortcode( str_replace( $tag.'#', $tag, $m[5] ), $this->content_master );
else
$atts['__content'] = '';
}
$new_atts = '';
$new_atts = apply_filters( 'shortcode_'.$tag, $atts );
if( !is_array( $new_atts ) )
$new_atts = $atts;
if ($maps !== false && isset($maps['assets']) && is_array($maps['assets'])) {
if (isset($maps['assets']['styles']) && is_array($maps['assets']['styles'])) {
foreach($maps['assets']['styles'] as $key => $url)
wp_enqueue_style($key);
}
if (isset($maps['assets']['scripts']) && is_array($maps['assets']['scripts'])) {
foreach($maps['assets']['scripts'] as $key => $url){
wp_enqueue_script($key);
}
}
}
return $m[1] . $this->filter_return( $new_atts ) .$m[6];
}
public function shortcode_parse_atts($text) {
$atts = array();
$pattern = '/([a-zA-Z0-9\-\_\.]+)="([^"]+)+"/';
$text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);
if ( preg_match_all($pattern, $text, $match, PREG_SET_ORDER) ) {
foreach ($match as $m) {
if (!empty($m[1]))
$atts[strtolower($m[1])] = stripcslashes($m[2]);
elseif (!empty($m[3]))
$atts[strtolower($m[3])] = stripcslashes($m[4]);
elseif (!empty($m[5]))
$atts[strtolower($m[5])] = stripcslashes($m[6]);
elseif (isset($m[7]) && strlen($m[7]))
$atts[] = stripcslashes($m[7]);
elseif (isset($m[8]))
$atts[] = stripcslashes($m[8]);
}
// Reject any unclosed HTML elements
foreach( $atts as &$value ) {
if ( false !== strpos( $value, '<' ) ) {
if ( 1 !== preg_match( '/^[^<]*+(?:<[^>]*+>[^<]*+)*+$/', $value ) ) {
$value = '';
}
}
}
} else {
$atts = ltrim($text);
}
return $atts;
}
public function filter_return( $atts ){
global $mpl;
$full = '['.$atts['__name'];
$maps = $mpl->get_maps();
$pure_name = str_replace( '#', '', $atts['__name'] );
foreach( $atts as $k => $v ){
if( $k != '__name' && $k != '__content' )
$full .= ' '.$k.'="'.esc_attr($v).'"';
}
$full .= ']';
if (in_array($pure_name, array('mpl_column', 'mpl_column_inner')) ||
in_array($pure_name, $mpl->maps_view) ||
(isset($maps[$pure_name]['nested']) && $maps[$pure_name]['nested'] === true)
) $is_nested = true;
else $is_nested = false;
if (isset($atts['__content']) || $is_nested){
$full .= isset($atts['__content']) ? $atts['__content'] : '';
//2017/05/10 10:53
//if( $this->action == 'live-editor' && $this->content_master === true && $is_nested){
// $full .= '';
//}
$full .= '[/'.$atts['__name'].']';
}
if( $this->action == 'live-editor' && $this->content_master === true ){
if( isset( $atts['__name'] ) )
$atts['__name'] = explode( '#', $atts['__name'] );
if( isset( $atts['__content'] ) ){
$atts['content'] = preg_replace( '//Uis', '', $atts['__content'] );
unset( $atts['__content'] );
}
$model = count( $this->storage );
$storage = array( 'args' => $atts, 'name' => $atts['__name'][0], 'full' => preg_replace( '//Uis', '', $full ) );
if( isset( $atts['content'] ) )
$storage['end'] = '[/'.$storage['name'].']';
$this->storage[ $model ] = $storage;
//2017/05/10 10:53
//$full = ''.trim($full).'';
}
return $full;
}
public function render_element_css( $code, $id ) {
global $mpl;
$css_code = '';
$css_any_code = '';
$css_desktop_code = '';
$pro_maps = array(
'margin' => array('margin-top','margin-right','margin-bottom','margin-left'),
'padding' => array('padding-top','padding-right','padding-bottom','padding-left'),
'border-radius' => array('border-top-left-radius','border-top-right-radius','border-bottom-right-radius','border-bottom-left-radius')
);
try {
/*
* Decode JSON object
*/
$screens = json_decode( str_replace( '`', '"', $code ), true );
/*
* Sort screens
*/
if (is_array( $screens['mpl-css']))
{
krsort ($screens['mpl-css']);
foreach ($screens['mpl-css'] as $screen => $groups)
{
$css_array = array();
$css_code_itm = '';
foreach ($groups as $group => $properties)
{
foreach ($properties as $sel => $css)
{
$sel = explode( '|', $sel );
if ($sel[0] == 'gap')
$prefix = '';
else $prefix = 'body.mpl-css-system ';
if (!empty( $sel[1]))
{
$_sel = explode(',', $sel[1]);
$selector = array();
foreach ($_sel as $__sel)
{
/*
* add spacing for selector which is not :hover
*/
$__sel = $mpl->unesc($__sel);
if (strpos( trim($__sel), '+') === 0)
$__sel = substr(trim($__sel), 1);
else if (strpos( trim($__sel), ':') !== 0)
$__sel = ' '.trim($__sel);
$selector[] = $prefix.'.mpl-css-'.$id.$__sel;
}
$selector = implode (',', $selector);
}
else if ($sel[0] == 'gap')
{
// set low piorit for gap padding
$selector = '#page .mpl-css-'.$id;
}
else
{
$selector = $prefix.'.mpl-css-'.$id;
}
$gap_selector = $prefix.'.mpl-css-'.$id.'>.mpl-wrap-columns';
// group properties with same selector into one
if (!isset($css_array[ $selector ]))
$css_array[ $selector ] = array();
if (!isset($css_array[$gap_selector]))
$css_array[ $gap_selector ] = array();
if (isset($pro_maps[$sel[0]]) && strpos($css, 'inherit') !== false)
{
$css = explode(' ', $css);
for ($i=0; $i<4; $i++)
{
if (!empty($css[$i]) && trim($css[$i]) != 'inherit')
{
if (isset($css[4]))
$css[$i] .= ' '.$css[4];
array_push( $css_array[ $selector ], $pro_maps[$sel[0]][$i].': '.$css[$i] );
}
}
}
else
{
if ($sel[0] == 'gap')
{
if( intval($css) < 0 )
$css = '0px';
array_push( $css_array[ $selector ], 'padding-left: '.$css.';padding-right: '.$css );
array_push( $css_array[ $gap_selector ], 'margin-left: -'.$css.';margin-right: -'.$css.';width: calc(100% + '.(intval($css)*2).'px)' );
}
else if($sel[0] == 'border')
{
if (strpos( $css, '|') !== false)
{
$css_line = '';
$css = explode('|', $css);
$bmap = array('top', 'right', 'bottom', 'left');
for( $cj=0; $cj<4; $cj++ ){
if( isset( $css[ $cj ] ) && !empty( $css[ $cj ] ) )
$css_line .= 'border-'.$bmap[$cj].': '.$css[$cj].';';
}
array_push( $css_array[ $selector ], $css_line );
}else array_push( $css_array[ $selector ], $sel[0].': '.$css );
}
else if( $sel[0] == 'custom' ) {
$css = trim( str_replace( array('"', "'", '[', ']'), array('', '', '', ''), $css ) ).'{{{end}}}';
$css = str_replace( array(';{{{end}}}', '{{{end}}}'), array('', ''), $css );
array_push( $css_array[ $selector ], $css );
}
else if( $sel[0] == 'video-background' ) {
$json = base64_decode( $css );
}
else if( $sel[0] == 'background' ) {
$css_obj = array(
'color' => 'transparent',
'linearGradient' => array('',''),
'image' => 'none',
'position' => '0% 0%',
'size' => 'auto',
'repeat' => 'repeat',
'attachment' => 'scroll',
'advanced' => 0 ,
'parallax_scrolling' => 'no'
); $val = '';
$json = base64_decode( $css );
$json = json_decode( $json, true );
if (is_array( $json ))
{
$css_obj = array_merge( $css_obj, $json );
if ($css_obj['linearGradient'][0] !== '')
{
if (strpos($css_obj['linearGradient'][0], 'deg') !== false)
{
if (isset($css_obj['linearGradient'][1]) && !empty($css_obj['linearGradient'][1]))
{
if (!isset($css_obj['linearGradient'][2]) || empty($css_obj['linearGradient'][2]))
{
$css_obj['linearGradient'][2] = $css_obj['linearGradient'][1];
}
}
}
else if (!isset($css_obj['linearGradient'][1]) || empty($css_obj['linearGradient'][1]))
$css_obj['linearGradient'][1] = $css_obj['linearGradient'][0];
$css_obj['linearGradient'] = implode(', ', $css_obj['linearGradient']);
$css_obj['linearGradient'] = str_replace(', ,', ', ', $css_obj['linearGradient']);
$val .= 'linear-gradient('.$css_obj['linearGradient'].')';
}
if ($css_obj['color'] != 'transparent' && $css_obj['color'] !== '')
{
if( $val == '' )
$val .= $css_obj['color'];
else $val .= ', '.$css_obj['color'];
}
if ($css_obj['image'] != 'none' && $css_obj['image'] != '')
{
if( $val == '' )
$val .= $css_obj['color'];
else if( $css_obj['color'] == 'transparent' || $css_obj['color'] === '' )
$val .= ', transparent';
$val .= ' url('.$css_obj['image'].') '.$css_obj['position'].'/'.$css_obj['size'].' '.$css_obj['repeat'].' '.$css_obj['attachment'];
}
if (!empty($val))
array_push( $css_array[ $selector ], $sel[0].': '.$val );
}
else if(!empty($css))
{
array_push( $css_array[ $selector ], $sel[0].': '.$css );
}
}
else array_push( $css_array[ $selector ], $sel[0].': '.$css );
}
}
}
foreach( $css_array as $sel => $pros ) {
if( !empty( $pros ) ){
$css_code_itm .= $sel.'{'.str_replace( array('{','}'), array('',''), implode( ';', $pros )).';}';
}
}
if ($screen != 'any')
{
if( strpos( $screen, '-' ) === false ){
$css_code .= '@media only screen and (max-width: '.trim($screen).'px){'.$css_code_itm.'}';
}else{
$screenx = explode('-', $screen);
$css_code .= '@media only screen and (min-width: '.trim($screenx[0]).'px) and (max-width: '.trim($screenx[1]).'px){'.$css_code_itm.'}';
}
}else{
$css_any_code .= $css_code_itm;
}
if( !isset( $this->css_obj[ $screen ] ) || !is_array( $this->css_obj[ $screen ] ) )
$this->css_obj[ $screen ] = array();
// Group all properties in the same screen
$this->css_obj[ $screen ][] = $css_code_itm;
}
}
}
catch( Exception $e ) {
echo "\n\n/*Caught exception: ", $e->getMessage(), "*/\n\n";
};
return mpl_images_filter($css_any_code.$css_code);
}
public function front_head() {
if ($this->allows) {
echo '';
$this->render_dynamic_css();
}
// inline editor params
$mpl_current_url = home_url(add_query_arg(array()));
if(current_user_can ('publish_pages') && stristr($mpl_current_url, 'mpl_action=live-editor')) {
$this->mpl_editor_admin_header();
}
}
public function front_footer() {
//$mpl_current_url = home_url(add_query_arg(array()));
//if(current_user_can ('publish_pages') && stristr($mpl_current_url,'mpl_action=live-editor')) {
// $this->mpl_fronteditor_post_meta();
//}
}
public function register_assets() {
$this->register_style('bootstrap', $this->vendor_script_url('bootstrap/css','bootstrap.css'));
$this->register_style('font-awesome', $this->vendor_script_url('font-awesome/css','font-awesome.css'));
$this->register_style('prettyphoto', $this->vendor_script_url('prettyPhoto/css','prettyPhoto.css'));
$this->register_style('owl-carousel', $this->vendor_script_url('owl-carousel/assets','owl.carousel.css'));
//$this->register_style('owl-theme-default', $this->vendor_script_url('owl-carousel/assets','owl.theme.default.css'));
$this->register_style('jquery-mb-ytplayer', $this->vendor_script_url('YTPlayer/css','jquery.mb.YTPlayer.min.css'));
$this->register_style('jquery-mb-vimeo_player', $this->vendor_script_url('vimeo_player/css','jquery.mb.vimeo_player.min.css'));
$styles = apply_filters( 'mpl_register_styles', array() );
if( is_array( $styles ) && count( $styles ) ){
foreach( $styles as $sid => $url ){
if (!empty($url)) $this->register_style( $sid, $url );
}
}
#Register scripts
$this->register_script('bootstrap', $this->vendor_script_url('bootstrap/js','bootstrap.js'));
$this->register_script('owl-carousel', $this->vendor_script_url('owl-carousel','owl.carousel'.$this->min.'.js'));
$this->register_script('jquery-counterup', $this->vendor_script_url('jquery-counterup','jquery.counterup.js'));
//lightbox script have to add latest
$this->register_script('prettyphoto', $this->vendor_script_url('prettyPhoto/js','jquery.prettyPhoto.js') );
$this->register_script('jquery-easypiechart', $this->vendor_script_url('jquery-easy-pie-chart','jquery.easypiechart.min.js'));
//video background
$this->register_script('jquery-mb-ytplayer', $this->vendor_script_url('YTPlayer','jquery.mb.YTPlayer.js'));
$this->register_script('jquery-mb-vimeo_player', $this->vendor_script_url('vimeo_player','jquery.mb.vimeo_player.js'));
//facebook isotope
$this->register_script('isotope-pkgd', $this->vendor_script_url('isotope','isotope.pkgd.min.js'));
//waypoint
$this->register_script('waypoints', $this->vendor_script_url('waypoints','waypoints.min.js'));
//jquery parallax
$this->register_script('jquery-parallax', $this->vendor_script_url('jquery-parallax','jquery.parallax-1.1.3.js'));
$scripts = apply_filters( 'mpl_register_scripts', array() );
if( is_array( $scripts ) && count( $scripts ) ){
foreach( $scripts as $sid => $url ){
if (!empty($url)) $this->register_script( $sid, $url );
}
}
}
public function load_scripts(){
global $mpl;
$settings = $mpl->settings();
/*
* enqueue fonts from general settings
*/
$mpl->enqueue_fonts();
$styles = array(
'mpl-sections' => array(
'src' => $this->MPL_URL.'css/sections.css',
'deps' => '',
'version' => MPL_VERSION,
'media' => 'all'
),
'mpl-portfolio-post' => array(
'src' => $this->MPL_URL.'css/custom-posts.css',
'deps' => '',
'version' => MPL_VERSION,
'media' => 'all'
),
);
if (!isset($settings['animate']) || $settings['animate'] != 'disabled')
{
$styles['mpl-animate'] = array(
'src' => untrailingslashit(MPL_URL).'/assets/css/animate.css',
'deps' => '',
'version' => MPL_VERSION,
'media' => 'all'
);
}
if ($this->action == 'live-editor') {
$styles['mpl-backend-builder'] = array(
'src' => str_replace( array( 'http:', 'https:' ), '', untrailingslashit( MPL_URL ) ) .
'/assets/css/mpl.builder.css',
'deps' => '',
'version' => MPL_VERSION,
'media' => 'all'
);
}
$icon_sources = $mpl->get_icon_sources();
if( is_array( $icon_sources ) && count( $icon_sources ) > 0 ){
$i = 1;
foreach( $icon_sources as $icon_source ){
$styles['mpl-icon-'.$i++] = array(
'src' => $icon_source,
'deps' => '',
'version' => MPL_VERSION,
'media' => 'all'
);
}
}
wp_enqueue_style( 'bootstrap' );
wp_enqueue_style( 'font-awesome' );
wp_enqueue_style( 'owl-carousel' );
wp_enqueue_style( 'owl-theme-default' );
wp_enqueue_style( 'prettyphoto' );
wp_enqueue_style( 'jquery-mb-yptlayer');
wp_enqueue_style( 'jquery-mb-vimeo_player');
foreach ( apply_filters( 'mpl_enqueue_styles', $styles ) as $handle => $args ) {
wp_enqueue_style( $handle, $args['src'], $args['deps'], $args['version'], $args['media'] );
}
wp_enqueue_script( 'bootstrap' );
wp_enqueue_script( 'owl-carousel' );
wp_enqueue_script( 'prettyphoto' );
wp_enqueue_script( 'jquery-easypiechart' );
wp_enqueue_script( 'jquery-mb-ytplayer' );
wp_enqueue_script( 'jquery-mb-vimeo_player' );
wp_enqueue_script( 'isotope-pkgd' );
wp_enqueue_script( 'waypoints' );
wp_enqueue_script( 'jquery-parallax');
$js_path = $this->MPL_URL . 'js/main.js';
$scripts = array(
'mpl-front-scripts' => $js_path
);
foreach ( apply_filters( 'mpl_enqueue_scripts', $scripts ) as $uid => $url ) {
$this->enqueue_script( $uid, $url );
}
}
public function el_class( $atts ){
global $mpl,$post;
$settings = $mpl->settings();
$el_class = array();
$postid = isset($post->ID)? $post->ID : "";
$post_fullpage = get_post_meta($postid, 'peony_fullpage', true);
$post_animation = get_post_meta($postid, 'peony_animation', true);
if (!empty($atts['shortcode']))
$el_class[] = $atts['shortcode'];
$el_class[] = 'mpl-elm';
if (!empty($atts['_id'])) {
$el_class[] = 'mpl-css-' .$atts['_id'];
}
if (!empty($atts['css']))
$el_class[] = $atts['css'];
if (isset($atts['width']))
$el_class[] = mpl_column_width_class($atts['width']);
if (isset($atts['section_class']))
$el_class[] = $atts['section_class'];
if (!isset($settings['animate']) || $settings['animate'] != 'disabled')
{
if (isset($atts['animate']) && !empty($atts['animate']))
{
$ani = explode('|', $atts['animate']);
if (isset($ani[0]) && !empty($ani[0]))
$el_class[] = 'mpl-animated mpl-animate-eff-'.esc_attr($ani[0]);
if (isset($ani[1]) && !empty($ani[1]))
$el_class[] = 'mpl-animate-delay-'.esc_attr($ani[1]);
if (isset($ani[2]) && !empty($ani[2]))
$el_class[] = 'mpl-animate-speed-'.esc_attr($ani[2]);
}
}
if ( isset($atts['css_custom']) && $atts['css_custom'] != '' ){
$css_custom = @json_decode( str_replace( '`', '"', $atts['css_custom']), true );
if ( isset($css_custom['mpl-css']['any']['background']['background|']) ){
$background = @base64_decode($css_custom['mpl-css']['any']['background']['background|']);
$background = @json_decode($background ,true);
if ( isset($background['parallax_scrolling']) && $background['parallax_scrolling'] == 'yes' ){
$el_class[] = 'mpl-parallax-scrolling';
}
}
}
return $el_class;
}
public function owl_carousel( $atts ) {
$owl = array();
$owl['carousel'] = '';
$owl['options'] = '';
$owl['nav_style'] = '';
if (isset($atts['carousel']) && $atts['carousel'] == "yes") {
$owl_options = array(
'items' => isset($atts['columns']) ? $atts['columns'] : 1,
'speed' => intval(isset($atts['owl_speed']) ? $atts['owl_speed'] : '500' ),
'navigation' => isset($atts['owl_navigation']) ? $atts['owl_navigation'] : '',
'pagination' => isset($atts['owl_pagination']) ? $atts['owl_pagination'] : '',
'autoheight' => isset($atts['owl_auto_height']) ? $atts['owl_auto_height'] : '',
'autoplay' => isset($atts['owl_auto_play']) ? $atts['owl_auto_play'] : ''
);
$owl['carousel'] = 'yes';
$owl['options'] = "data-owl-options='" .strtolower(json_encode($owl_options)) ."'";
$owl['nav_style'] = '';
if (isset($atts['owl_navigation']) && $atts['owl_navigation'] === 'yes') {
$owl['nav_style'] = 'owl-nav-' . $atts['owl_nav_style'];
}
}
return $owl;
}
public function do_shortcode( $content ){
//$this->css_str = '';
$this->css_obj = array();
$this->prevent_infinite_loop = array();
$html = $this->do_filter_shortcode( $content, false );
return ''.do_shortcode( $html );
}
public function render_css( $obj ){
$any = ''; $css = ''; $item = '';
if( is_array( $obj ) ){
//krsort($this->css_obj);
foreach( $obj as $screen => $properties ){
$item = '';
if( $screen == 'any' ){
$any .= implode('', $properties);
}else{
if( strpos( $screen, '-' ) === false ){
$item .= '@media only screen and (max-width: '.trim($screen).'px){'.implode('', $properties).'}';
}else{
$screen = explode('-', $screen);
$item .= '@media only screen and (min-width: '.trim($screen[0]).'px) and (max-width: '.trim($screen[1]).'px){'.implode('', $properties).'}';
}
if (is_array($screen))
$screen = implode('-', $screen);
if ($screen == '1000-5000')
$any = $item.$any;
else $css .= $item;
}
}
}
return mpl_images_filter($any.$css);
}
public function body_classes( $classes ) {
global $post;
if( !empty( $post->ID ) )
{
$post_data = get_post_meta( $post->ID , 'mpl_data', true );
if( !empty( $post_data['classes'] ) )
$classes[] = $post_data['classes'];
}
return $classes;
}
public function vendor_script_url($vendor_dir, $srcipt_file){
return untrailingslashit(MPL_URL).'/includes/frontend/vendors/'.$vendor_dir.'/'.$srcipt_file;
}
public function register_script( $handle, $path, $deps = array( 'jquery' ), $version = MPL_VERSION, $in_footer = true ) {
$this->scripts[] = $handle;
wp_register_script( $handle, $path, $deps, $version, $in_footer );
}
public function register_style( $handle, $path, $deps = array(), $version = MPL_VERSION, $media = 'all' ) {
$this->styles[] = $handle;
wp_register_style( $handle, $path, $deps, $version, $media );
}
public function enqueue_script( $handle, $path = '', $deps = array( 'jquery' ), $version = MPL_VERSION, $in_footer = true ) {
if ( ! in_array( $handle, $this->scripts ) && $path ) {
$this->register_script( $handle, $path, $deps, $version, $in_footer );
}
wp_enqueue_script( $handle );
}
private function allowed_access(){
global $mpl;
$settings = $mpl->settings();
if( !isset( $settings['content_types'] ) )
$settings['content_types'] = array();
$content_types = array_merge( (array)$settings['content_types'], (array)$mpl->get_required_content_types() );
$this->allows = is_singular( $content_types );
return $this->allows;
}
private function render_dynamic_js(){
if( !empty( $this->js ) )
printf( $this->js );
}
public function add_header_js( $js = '' ){
if( !empty( $js ) )
$this->js .= $js;
}
public function add_header_css( $css = '' ){
if( !empty( $css ) )
$this->css .= $css;
}
public function add_header_css_responsive( $screen = '', $css = '' ){
if( !empty( $screen ) && !empty( $css ) ){
if( !isset( $this->css_responsive[ $screen ] ) )
$this->css_responsive[ $screen ] = array();
array_push( $this->css_responsive[ $screen ], $css );
}
}
private function render_dynamic_css(){
global $post, $mpl;
$post_data = get_post_meta ($post->ID , 'mpl_data', true);
$settings = $mpl->settings();
if (!empty($post_data) && !empty($post_data['css']))
$this->css .= $post_data['css'];
if (!empty( $settings['css_code']))
$this->css .= $settings['css_code'];
if (!empty($post_data) && isset($post_data['max_width']) && !empty($post_data['max_width']))
$this->css .= '.mpl-container{max-width: '.esc_attr($post_data['max_width']).';}';
else if (!empty($settings['max_width']) && isset($settings['max_width']) && !empty($settings['max_width']))
$this->css .= '.mpl-container{max-width: '.esc_attr($settings['max_width']).';}';
$this->css = esc_html ($this->css);
$this->css = str_replace(
array( "\n"," ", ": ", " {", " ", '>', '<', '"', ''', "", "';
/*
* Start render CSS of all elements
*/
if ($this->action == 'live-editor')
$this->css = $this->css_str;
else
$this->css = $this->render_css ($this->css_obj_master);
$this->css = str_replace(
array( "\n"," ", ": ", " {", " ", '>', '<', '"', ''', "", "';
}
public function preg_match_css( $matches ){
if( !empty( $matches[1] ) ){
if( strpos( $matches[1], '|' ) !== false ){
$class = substr( $matches[1], 0, strpos( $matches[1], '|' ) );
if( strpos( $this->css, '.'.$class.'{' ) === false )
{
$this->css .= '.'.$class.'{'.substr( $matches[1], strpos( $matches[1], '|' ) + 1 ).'}';
}
return ' css="'.$class.'"';
}
else
{
$this->css .= $matches[1];
return '';
}
}
else return $matches[0];
}
public function get_tags_filter(){
return $this->tags_filter;
}
public function get_global_css(){
return $this->css = mpl_images_filter($this->css);
}
public function mpl_editor_admin_header()
{
if (is_admin() && !mpl_admin_enable())
return;
global $mpl,$post;
$meta = $mpl->get_post_meta();
/*
* The builder is active, force the wp editor to tinyMCE
* To load faster tinyMCE in the builder
*/
if ($meta['mode'] == 'mpl') {
add_filter ('wp_default_editor', 'mpl_force_default_editor');
}
?>
';
$data = array(
"mode" => "",
"classes" => "",
"css" => "",
);
if (isset($post ) && isset( $post->ID ) && !empty( $post->ID)) {
$get_data = (array)get_post_meta ($post->ID , 'mpl_data', true);
if (!empty($get_data) && is_array($get_data)) {
foreach ($get_data as $name => $value) {
if (isset($data[$name]))
$data[$name] = $value;
}
}
}
if ($mpl->action == 'live-editor' || (defined('MPL_FORCE_DEFAULT') && MPL_FORCE_DEFAULT === true)) {
$data['mode'] = 'mpl';
}
foreach ($data as $key => $val) {
echo ' ';
}
$global_optimized = array_merge(array('enable' => '', 'global' => '', 'advanced' => ''), (array)get_option('mpl_optimized'));
if ($data['mode'] == 'mpl') {
echo ''.
'';
}
echo '';
echo '';
}
public function render_video_background($atts)
{
$output = array();
$video_type = '';
$video_url = '';
$mp4_url = '';
$ogv_url = '';
$webm_url = '';
$start_time = '';
$stop_time = '';
$video_mute = '';
$enable_video_bg = '';
$containment = '';
$output = '';
if (!isset($atts['css_custom']) || !isset($atts['_id']))
return $output;
$css_custom = $atts['css_custom'];
$id = $atts['_id'];
$screens = json_decode( str_replace( '`', '"', $css_custom ), true );
if (!is_array( $screens['mpl-css']))
return $output;
krsort ($screens['mpl-css']);
foreach ($screens['mpl-css'] as $screen => $groups)
{
foreach ($groups as $group => $properties)
{
foreach ($properties as $sel => $css)
{
$sel = explode( '|', $sel );
if ($sel[0] != 'video-background')
continue;
$json = base64_decode( $css );
$bgatts = json_decode( $json, true );
extract($bgatts);
if ($enable_video_bg != 'yes' && $enable_video_bg != '1')
return $output;
$output = 'data-property="{';
$video_type = isset($video_type) ? $video_type : 'youtube';
$containment = '.mpl-css-'.$id;
//$containment = 'self';
if ($video_type == 'youtube') {
$output .= "videoURL:'" .$video_url ."',";
$video_type = 'mpl-youtube-video';
}
else if ($video_type == 'vimeo') {
$output .= "videoURL:'" .$video_url ."',";
$video_type = 'mpl-vimeo-video';
}
else if ($video_type == 'html5') {
$output .= "mp4URL:'" .$mp4_url ."',";
$output .= "ogvURL:'" .$ogv_url ."',";
$output .= "webmURL:'" .$webm_url ."',";
$video_type = 'mpl-html5-video';
}
else
$output .= '';
$output .= 'containment:\'' .$containment. '\',showControls:false';
$output .= ',autoPlay:true';
if ($video_loop == '1' || $video_loop == 'yes')
$output .= ',loop:true';
if ($video_mute !== '1' && $video_mute !== 'yes')
$output .= ',mute:false';
if (!empty($start_time))
$output .= ',startAt:' .$start_time;
if (!empty($stop_time))
$output .= ',stopAt:' .$stop_time;
$output .= ',opacity:1,addRaster:false,quality:\'default\'}"';
$output = '
';
}
}
}
return $output;
}
}
/*
*-------------------------------
*/
global $mpl_front;
$mpl_front = new mpl_front();