summaryrefslogtreecommitdiff
path: root/inc/compatibility/class-astra-visual-composer.php
blob: 8d863cb4062cbcc4a7099f33dd2d1c73a6e4f0a5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
/**
 * Visual Composer Compatibility File.
 *
 * @package Astra
 */

// If plugin - 'Visual Composer' not exist then return.
if ( ! class_exists( 'Vc_Manager' ) ) {
	return;
}

/**
 * Astra Visual Composer Compatibility
 */
if ( ! class_exists( 'Astra_Visual_Composer' ) ) :

	/**
	 * Astra Visual Composer Compatibility
	 *
	 * @since 1.0.0
	 */
	class Astra_Visual_Composer {

		/**
		 * Member Variable
		 *
		 * @var object instance
		 */
		private static $instance;

		/**
		 * Initiator
		 */
		public static function get_instance() {
			if ( ! isset( self::$instance ) ) {
				self::$instance = new self();
			}
			return self::$instance;
		}

		/**
		 * Constructor
		 */
		public function __construct() {
			add_action( 'wp', array( $this, 'vc_default_setting' ), 20 );
			add_action( 'do_meta_boxes', array( $this, 'vc_default_setting' ), 20 );
			add_action( 'vc_frontend_editor_render', array( $this, 'vc_frontend_default_setting' ) );
			add_filter( 'astra_theme_assets', array( $this, 'add_styles' ) );
		}

		/**
		 * VC Updated meta settings
		 *
		 * @since 1.0.13
		 * @param int $id Post id.
		 * @return void
		 */
		public function vc_update_meta_setting( $id ) {

			if ( false === astra_enable_page_builder_compatibility() || 'post' == get_post_type() ) {
				return;
			}

			update_post_meta( $id, '_astra_content_layout_flag', 'disabled' );
			update_post_meta( $id, 'site-post-title', 'disabled' );
			update_post_meta( $id, 'ast-title-bar-display', 'disabled' );
			update_post_meta( $id, 'ast-featured-img', 'disabled' );

			$content_layout = get_post_meta( $id, 'site-content-layout', true );
			if ( empty( $content_layout ) || 'default' == $content_layout ) {
				update_post_meta( $id, 'site-content-layout', 'plain-container' );
			}

			$sidebar_layout = get_post_meta( $id, 'site-sidebar-layout', true );
			if ( empty( $sidebar_layout ) || 'default' == $sidebar_layout ) {
				update_post_meta( $id, 'site-sidebar-layout', 'no-sidebar' );
			}
		}

		/**
		 * Set frontend default setting.
		 *
		 * @since 1.0.13
		 * @return void
		 */
		public function vc_frontend_default_setting() {

			global $post;
			$id                = astra_get_post_id();
			$page_builder_flag = get_post_meta( $id, '_astra_content_layout_flag', true );

			if ( empty( $page_builder_flag ) ) {
				if ( $id > 0 && empty( $post->post_content ) ) {
					$this->vc_update_meta_setting( $id );
				}
			}
		}

		/**
		 * Set default setting.
		 *
		 * @since 1.0.13
		 * @return void
		 */
		public function vc_default_setting() {

			global $post;
			$id = astra_get_post_id();

			$page_builder_flag = get_post_meta( $id, '_astra_content_layout_flag', true );

			if ( isset( $post ) && empty( $page_builder_flag ) && ( is_admin() || is_singular() ) ) {
				$vc_active = get_post_meta( $id, '_wpb_vc_js_status', true );
				if ( 'true' == $vc_active || has_shortcode( $post->post_content, 'vc_row' ) ) {
					$this->vc_update_meta_setting( $id );
				}
			}
		}

		/**
		 * Add assets in theme
		 *
		 * @param array $assets list of theme assets (JS & CSS).
		 * @return array List of updated assets.
		 * @since 3.5.0
		 */
		public function add_styles( $assets ) {
			if ( ! empty( $assets['css'] ) ) {
				$assets['css'] = array( 'astra-vc-builder' => 'compatibility/page-builder/vc-plugin' ) + $assets['css'];          
			}
			return $assets;
		}
	}

endif;

/**
 * Kicking this off by calling 'get_instance()' method
 */
Astra_Visual_Composer::get_instance();