Completed
Push — master ( 80c0ca...82d23b )
by Dwain
04:32
created

Sensei_Theme_Integration_Loader::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 7
rs 9.4286
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
/**
4
 * Class Sensei_Theme_Integration_Loader
5
 *
6
 * Responsible for loading the corrent supported theme if a
7
 * support theme is installed.
8
 *
9
 * @since 1.9.0
10
 */
11
class Sensei_Theme_Integration_Loader {
12
13
    /**
14
     * @var array
15
     * Holding a reference core supported themes
16
     */
17
    protected $themes;
18
19
    /**
20
     * @var string
21
     * reference to the theme currently active on this site
22
     */
23
    protected $active_theme;
24
25
    public function __construct() {
26
27
        $this->setup_themes();
28
        $this->setup_currently_active_theme();
29
        $this->possibly_load_supported_theme_wrappers();
30
31
    }
32
33
    /**
34
     * Setup the theme slugs supported by Sensei Core
35
     *
36
     * @since 1.9.0
37
     */
38
    private function setup_themes(){
39
40
        $this->themes = array(
41
            'twentyeleven',
42
            'twentytwelve',
43
            'twentythirteen',
44
            'twentyfourteen',
45
            'twentyfifteen',
46
            'twentysixteen',
47
            'storefront',
48
        );
49
50
    }// end setup themes
51
52
    /**
53
     * Setup the currently active theme
54
     *
55
     * @since 1.9.0
56
     */
57
    private function setup_currently_active_theme(){
58
59
        $this->active_theme = get_option('template');
60
61
    }
62
63
    /**
64
     * Remove default Sensei wrappers and load
65
     * supported wrappers if the current theme is
66
     * a theme we have an integration for within core.
67
     *
68
     * @since 1.9.0
69
     */
70
    private function possibly_load_supported_theme_wrappers(){
71
72
        if ( in_array( $this->active_theme, $this->themes ) ){
73
74
            // setup file and class names
75
            $supported_theme_class_file = trailingslashit( Sensei()->plugin_path ) . 'includes/theme-integrations/' . $this->active_theme . '.php';
76
            $supported_theme_class_name  = 'Sensei_'. ucfirst( $this->active_theme  );
77
78
            // load the file or exit if there is no file for this theme
79
            if( ! file_exists( $supported_theme_class_file ) ){
80
                return;
81
            }
82
            include_once( $supported_theme_class_file );
83
            include_once( 'twentytwelve.php' );
84
            //initialize the class or exit if there is no class for this theme
85
            if( ! class_exists( $supported_theme_class_name ) ){
86
                return;
87
            }
88
            $supported_theme = new $supported_theme_class_name;
89
90
            // remove default wrappers
91
            remove_action( 'sensei_before_main_content', array( Sensei()->frontend, 'sensei_output_content_wrapper' ), 10 );
92
            remove_action( 'sensei_after_main_content', array( Sensei()->frontend, 'sensei_output_content_wrapper_end' ), 10 );
93
94
            // load the supported theme wrappers
95
            add_action( 'sensei_before_main_content', array( $supported_theme, 'wrapper_start' ), 10 );
96
            add_action( 'sensei_after_main_content', array( $supported_theme, 'wrapper_end' ), 10 );
97
        }
98
    }
99
100
} /// end class