function acfe_flexible_render_layout_enqueue()

in web/wp-content/plugins/acf-extended/includes/acfe-template-functions.php [226:420]


function acfe_flexible_render_layout_enqueue($layout, $field){
    
    // Global
    global $is_preview;
    
    // Vars
    $name = $field['_name'];
    $key = $field['key'];
    $l_name = $layout['name'];
    $handle = acf_slugify($name) . '-layout-' . acf_slugify($l_name);
    
    // Files
    $style = acf_maybe_get($layout, 'acfe_flexible_render_style');
    $script = acf_maybe_get($layout, 'acfe_flexible_render_script');
    
    /**
     * Actions
     */
    do_action("acfe/flexible/enqueue/layout={$l_name}",                                 $field, $layout, $is_preview);
    do_action("acfe/flexible/enqueue/name={$name}&layout={$l_name}",                    $field, $layout, $is_preview);
    do_action("acfe/flexible/enqueue/key={$key}&layout={$l_name}",                      $field, $layout, $is_preview);
    
    // Deprecated
    do_action_deprecated("acfe/flexible/layout/enqueue/layout={$l_name}",               array($field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/enqueue/layout={$l_name}");
    do_action_deprecated("acfe/flexible/layout/enqueue/name={$name}&layout={$l_name}",  array($field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/enqueue/name={$name}&layout={$l_name}");
    do_action_deprecated("acfe/flexible/layout/enqueue/key={$key}&layout={$l_name}",    array($field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/enqueue/key={$key}&layout={$l_name}");
    
    /**
     * Style
     */
    $style = apply_filters("acfe/flexible/render/style",                                        $style, $field, $layout, $is_preview);
    $style = apply_filters("acfe/flexible/render/style/name={$name}",                           $style, $field, $layout, $is_preview);
    $style = apply_filters("acfe/flexible/render/style/key={$key}",                             $style, $field, $layout, $is_preview);
    $style = apply_filters("acfe/flexible/render/style/layout={$l_name}",                       $style, $field, $layout, $is_preview);
    $style = apply_filters("acfe/flexible/render/style/name={$name}&layout={$l_name}",          $style, $field, $layout, $is_preview);
    $style = apply_filters("acfe/flexible/render/style/key={$key}&layout={$l_name}",            $style, $field, $layout, $is_preview);
    
    // Deprecated
    $style = apply_filters_deprecated("acfe/flexible/layout/render/style/layout={$l_name}",                array($style, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/style/layout={$l_name}");
    $style = apply_filters_deprecated("acfe/flexible/layout/render/style/name={$name}&layout={$l_name}",   array($style, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/style/name={$name}&layout={$l_name}");
    $style = apply_filters_deprecated("acfe/flexible/layout/render/style/key={$key}&layout={$l_name}",     array($style, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/style/key={$key}&layout={$l_name}");
    
    // Check
    if(!empty($style)){
        
        // convert to array
        if(is_string($style)){
            $style = array(
                'src' => $style,
            );
        }
        
        // defaults args
        $style = wp_parse_args($style, array(
            'handle' => $handle,
            'src'    => '',
            'deps'   => array(),
            'ver'    => false,
            'media'  => 'all',
        ));
        
        // src url starts with current domain
        // remove it and let acfe_locate_file_url() handle it
        if(stripos($style['src'], home_url()) === 0){
            $style['src'] = str_replace(home_url(), '', $style['src']);
        }
        
        // clone for front-end
        $style_front = $style;
        
        // locate src
        $style_front['src'] = acfe_locate_file_url($style_front['src']);
        
        // enqueue front-end + preview
        if(!empty($style_front['src'])){
            wp_enqueue_style($style_front['handle'], $style_front['src'], $style_front['deps'], $style_front['ver'], $style_front['media']);
        }
        
        // preview mode
        // make sure the src is not a distant url
        if($is_preview && stripos($style['src'], 'http://') !== 0 && stripos($style['src'], 'https://') !== 0 && stripos($style['src'], '//') !== 0){
            
            // clone for preview
            $style_preview = $style;
            
            // retrieve extension
            $path = pathinfo($style_preview['src']);
            $extension = $path['extension'];
            
            // append "-preview" to src
            $style_preview['src']  = substr($style_preview['src'], 0, -strlen($extension)-1);
            $style_preview['src'] .= '-preview.' . $extension;
            
            // locate src
            $style_preview['src'] = acfe_locate_file_url($style_preview['src']);
            
            // append "-preview" to handle
            $style_preview['handle'] = "{$style_preview['handle']}-preview";
            
            // enqueue preview
            if(!empty($style_preview['src'])){
                wp_enqueue_style($style_preview['handle'], $style_preview['src'], $style_preview['deps'], $style_preview['ver'], $style_preview['media']);
            }
            
        }
        
    }
    
    /**
     * Script
     */
    $script = apply_filters("acfe/flexible/render/script",                                      $script, $field, $layout, $is_preview);
    $script = apply_filters("acfe/flexible/render/script/name={$name}",                         $script, $field, $layout, $is_preview);
    $script = apply_filters("acfe/flexible/render/script/key={$key}",                           $script, $field, $layout, $is_preview);
    $script = apply_filters("acfe/flexible/render/script/layout={$l_name}",                     $script, $field, $layout, $is_preview);
    $script = apply_filters("acfe/flexible/render/script/name={$name}&layout={$l_name}",        $script, $field, $layout, $is_preview);
    $script = apply_filters("acfe/flexible/render/script/key={$key}&layout={$l_name}",          $script, $field, $layout, $is_preview);
    
    // Deprecated
    $script = apply_filters_deprecated("acfe/flexible/layout/render/script/layout={$l_name}",              array($script, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/script/layout={$l_name}");
    $script = apply_filters_deprecated("acfe/flexible/layout/render/script/name={$name}&layout={$l_name}", array($script, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/script/name={$name}&layout={$l_name}");
    $script = apply_filters_deprecated("acfe/flexible/layout/render/script/key={$key}&layout={$l_name}",   array($script, $field, $layout, $is_preview), '0.8.6.7', "acfe/flexible/render/script/key={$key}&layout={$l_name}");
    
    // Check
    if(!empty($script)){
        
        // convert to array
        if(is_string($script)){
            $script = array(
                'src' => $script,
            );
        }
        
        // defaults args
        $script = wp_parse_args($script, array(
            'handle' => $handle,
            'src'    => '',
            'deps'   => array(),
            'ver'    => false,
            'args'   => true,
        ));
        
        // src url starts with current domain
        // remove it and let acfe_locate_file_url() handle it
        if(stripos($script['src'], home_url()) === 0){
            $script['src'] = str_replace(home_url(), '', $script['src']);
        }
        
        // clone for front-end
        $script_front = $script;
        
        // locate
        $script_front['src'] = acfe_locate_file_url($script_front['src']);
        
        // front-end with distant script
        if(!$is_preview || (stripos($script['src'], 'http://') === 0 || stripos($script['src'], 'https://') === 0 || stripos($script['src'], '//') === 0)){
            
            if(!empty($script_front['src'])){
                wp_enqueue_script($script_front['handle'], $script_front['src'], $script_front['deps'], $script_front['ver'], $script_front['args']);
            }
            
        // front-end/preview with local script
        }else{
            
            // clone for preview
            $script_preview = $script;
            
            // retrieve extension
            $path = pathinfo($script_preview['src']);
            $extension = $path['extension'];
            
            // append "-preview" to src
            $script_preview['src']  = substr($script_preview['src'], 0, -strlen($extension)-1);
            $script_preview['src'] .= '-preview.' . $extension;
            
            // locate src
            $script_preview['src'] = acfe_locate_file_url($script_preview['src']);
            
            // append "-preview" to handle
            $script_preview['handle'] = "{$script_preview['handle']}-preview";
            
            // enqueue preview
            if(!empty($script_preview['src'])){
                wp_enqueue_script($script_preview['handle'], $script_preview['src'], $script_preview['deps'], $script_preview['ver'], $script_preview['args']);
                
            // enqueue front-end
            }elseif(!empty($script_front['src'])){
                wp_enqueue_script($script_front['handle'], $script_front['src'], $script_front['deps'], $script_front['ver'], $script_front['args']);
            }
            
        }
        
    }
    
}