PluginProbe
Page Builder: Pagelayer – Drag and Drop website builder / 1.0.0
Page Builder: Pagelayer – Drag and Drop website builder v1.0.0
2.2.1 2.2.0 2.1.9 2.1.8 2.1.7 2.1.6 2.1.5 2.1.4 2.1.3 trunk 0.9.0 0.9.1 0.9.2 0.9.3 0.9.4 0.9.5 0.9.6 0.9.7 0.9.8 0.9.9 1.0.0 1.0.2 1.0.3 1.0.4 1.0.5 All 129 releases
pagelayer / init.php

init.php in Page Builder: Pagelayer – Drag and Drop website builder 1.0.0, at init.php

445 lines 13.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // We need the ABSPATH
4 if (!defined('ABSPATH')) exit;
5
6 define('PAGELAYER_BASE', plugin_basename(__FILE__));
7 define('PAGELAYER_FILE', __FILE__);
8 define('PAGELAYER_VERSION', '1.0.0');
9 define('PAGELAYER_DIR', WP_PLUGIN_DIR.'/'.basename(dirname(PAGELAYER_FILE)));
10 define('PAGELAYER_SLUG', 'pagelayer');
11 define('PAGELAYER_URL', plugins_url('', PAGELAYER_FILE));
12 define('PAGELAYER_CSS', PAGELAYER_URL.'/css');
13 define('PAGELAYER_JS', PAGELAYER_URL.'/js');
14 define('PAGELAYER_PRO_URL', 'https://pagelayer.com/features#compare');
15 define('PAGELAYER_DOCS', 'https://pagelayer.com/docs/');
16 define('PAGELAYER_API', 'https://api.pagelayer.com/');
17 define('PAGELAYER_SC_PREFIX', 'pl');
18 define('PAGELAYER_YOUTUBE_BG', 'https://www.youtube.com/watch?v=Csa6rvCWmLU');
19
20 include_once(PAGELAYER_DIR.'/main/functions.php');
21 include_once(PAGELAYER_DIR.'/main/class.php');
22
23 // Ok so we are now ready to go
24 register_activation_hook(PAGELAYER_FILE, 'pagelayer_activation');
25
26 // Is called when the ADMIN enables the plugin
27 function pagelayer_activation(){
28
29 global $wpdb;
30
31 $sql = array();
32
33 /*$sql[] = "DROP TABLE IF EXISTS `".$wpdb->prefix."pagelayer_logs`";
34
35 foreach($sql as $sk => $sv){
36 $wpdb->query($sv);
37 }*/
38
39 add_option('pagelayer_version', PAGELAYER_VERSION);
40 add_option('pagelayer_options', array());
41
42 }
43
44 // Checks if we are to update ?
45 function pagelayer_update_check(){
46
47 global $wpdb;
48
49 $sql = array();
50 $current_version = get_option('pagelayer_version');
51 $version = (int) str_replace('.', '', $current_version);
52
53 // No update required
54 if($current_version == PAGELAYER_VERSION){
55 return true;
56 }
57
58 // Is it first run ?
59 if(empty($current_version)){
60
61 // Reinstall
62 pagelayer_activation();
63
64 // Trick the following if conditions to not run
65 $version = (int) str_replace('.', '', PAGELAYER_VERSION);
66
67 }
68
69 // Save the new Version
70 update_option('pagelayer_version', PAGELAYER_VERSION);
71
72 }
73
74 // Add the action to load the plugin
75 add_action('plugins_loaded', 'pagelayer_load_plugin');
76
77 // The function that will be called when the plugin is loaded
78 function pagelayer_load_plugin(){
79
80 global $pagelayer;
81
82 // Check if the installed version is outdated
83 pagelayer_update_check();
84
85 // Set the array
86 $pagelayer = new PageLayer();
87
88 // Is there any ACTION set ?
89 $pagelayer->action = pagelayer_optreq('pagelayer-action');
90
91 // Load settings
92 $options = get_option('pagelayer_options');
93 $pagelayer->settings['post_types'] = empty($options['post_types']) ? array('post', 'page') : $options['post_types'];
94 $pagelayer->settings['css_code'] = empty($options['css_code']) ? '' : $options['css_code'];
95 $pagelayer->settings['animate'] = empty($options['animate']) ? '' : $options['animate'];
96 $pagelayer->settings['max_width'] = empty($options['max_width']) ? 1170 : $options['max_width'];
97
98 // Load the language
99 load_plugin_textdomain('pagelayer', false, PAGELAYER_SLUG.'/languages/');
100
101 // Show the promo
102 pagelayer_maybe_promo([
103 'after' => 1,// In days
104 'interval' => 30,// In days
105 //'pro_url' => 'https://pagelayer.com/themes/wordpress/corporate/Bizworx_Pro',
106 'rating' => 'https://wordpress.org/plugins/pagelayer/#reviews',
107 'twitter' => 'https://twitter.com/pagelayer?status='.rawurlencode('I love #Pagelayer Site Builder by @pagelayer team for my #WordPress site - '.home_url()),
108 'facebook' => 'https://www.facebook.com/pagelayer',
109 'website' => '//pagelayer.com',
110 'image' => PAGELAYER_URL.'/images/pagelayer-logo-256.png'
111 ]);
112
113 // Its premium
114 if(defined('PAGELAYER_PREMIUM')){
115 include_once(PAGELAYER_DIR.'/main/template-builder.php');
116 }
117
118 }
119
120 // This adds the left menu in WordPress Admin page
121 add_action('admin_menu', 'pagelayer_admin_menu', 5);
122
123 // Shows the admin menu of Pagelayer
124 function pagelayer_admin_menu() {
125
126 global $wp_version, $pagelayer;
127
128 $capability = 'activate_plugins';// TODO : Capability for accessing this page
129
130 // Add the menu page
131 add_menu_page(__('Pagelayer Editor'), __('Pagelayer'), $capability, 'pagelayer', 'pagelayer_page_handler', PAGELAYER_URL.'/images/pagelayer-logo-19.png');
132
133 // Settings Page
134 add_submenu_page('pagelayer', __('Pagelayer Editor'), __('Settings'), $capability, 'pagelayer', 'pagelayer_page_handler');
135
136 // Its premium
137 if(defined('PAGELAYER_PREMIUM')){
138
139 // Fonts link
140 add_submenu_page('pagelayer', __('Font Settings'), __('Font Settings'), $capability, 'pagelayer_fonts', 'pagelayer_page_fonts');
141
142 // Add new template
143 add_submenu_page('pagelayer', __('Theme Builder'), __('Theme Builder'), $capability, 'edit.php?post_type=pagelayer-template');
144
145 // Add new template Link
146 //add_submenu_page('pagelayer', __('Add New Template'), __('Add New Template'), $capability, 'edit.php?post_type=pagelayer-template#new');
147
148 // Add new template
149 add_submenu_page('pagelayer', __('Add New Template'), __('Add New Template'), $capability, 'pagelayer_template_wizard', 'pagelayer_builder_template_wizard');
150
151 // Export Template Wizard
152 add_submenu_page('pagelayer', __('Export Templates into a Theme'), __('Export Templates'), $capability, 'pagelayer_template_export', 'pagelayer_builder_export');
153
154 // Its free
155 }else{
156
157 // Go Pro link
158 add_submenu_page('pagelayer', __('Pagelayer Go Pro'), __('Go Pro'), $capability, PAGELAYER_PRO_URL);
159
160 }
161
162 }
163
164 // This function will handle the Settings Pages in PageLayer
165 function pagelayer_page_handler(){
166
167 global $wp_version, $pagelayer;
168
169 wp_enqueue_script( 'pagelayer-admin', PAGELAYER_JS.'/pagelayer-admin.js', array('jquery'), PAGELAYER_VERSION);
170 wp_enqueue_style( 'pagelayer-admin', PAGELAYER_CSS.'/pagelayer-admin.css', array(), PAGELAYER_VERSION);
171
172 include_once(PAGELAYER_DIR.'/main/settings.php');
173
174 // Handle fonts
175 if($pagelayer->action == 'fonts-manager'){
176 include_once(PAGELAYER_DIR.'/main/fonts.php');
177 }
178
179 }
180
181 // Load the Live Body
182 add_action('template_redirect', 'pagelayer_load_live_body', 4);
183
184 function pagelayer_load_live_body(){
185
186 global $post;
187
188 // If its not live editing then stop
189 if(!pagelayer_is_live()){
190 return;
191 }
192
193 // If its the iFRAME then return
194 if(pagelayer_is_live_iframe()){
195 return;
196 }
197
198 // Are you allowed to edit ?
199 if(!pagelayer_user_can_edit()){
200 return;
201 }
202
203 // Load the editor live body
204 include_once(PAGELAYER_DIR.'/main/live-body.php');
205
206 pagelayer_live_body();
207
208 }
209
210 // Add the JS and CSS for Posts and Pages when being viewed ONLY if there is our content called
211 add_action('template_redirect', 'pagelayer_enqueue_frontend', 5);
212
213 function pagelayer_enqueue_frontend($force = false){
214
215 global $post, $pagelayer;
216
217 if(!empty($pagelayer->cache['enqueue_frontend'])){
218 return;
219 }
220
221 if(empty($post->ID)){
222 return;
223 }
224
225 $is_pagelayer = false;
226 $is_audio = false;
227
228 // This IF is for Archives mainly as $post->ID is only the first post in the archive
229 // and we need to make sure that other posts are pagelayer or not
230 if(!empty($GLOBALS['wp_query']->posts) && is_array($GLOBALS['wp_query']->posts)){
231 foreach($GLOBALS['wp_query']->posts as $v){
232 if(get_post_meta($v->ID , 'pagelayer-data')){
233 $is_pagelayer = true;
234 }
235
236 if(preg_match('/\[pl_audio/is', $v->post_content)){
237 $is_audio = true;
238 }
239 }
240 }
241
242 // Enqueue the FRONTEND CSS
243 if(get_post_meta($post->ID , 'pagelayer-data') || $is_pagelayer || $force){
244
245 // We dont need the auto <p> and <br> as they interfere with us
246 remove_filter('the_content', 'wpautop');
247
248 // No need to add curly codes to the content
249 remove_filter('the_content', 'wptexturize');
250
251 pagelayer_load_shortcodes();
252 $pagelayer->cache['enqueue_frontend'] = true;
253
254 // Load the global styles
255 add_action('wp_head', 'pagelayer_global_js', 2);
256
257 $premium_js = '';
258 $premium_css = '';
259 if(defined('PAGELAYER_PREMIUM')){
260 $premium_js = ',chart.min.js,slick.min.js,premium-frontend.js';
261 $premium_css = ',slick.css,slick-theme.css,premium-frontend.css';
262
263 // Load this For audio widget
264 if($is_audio || pagelayer_is_live_iframe()){
265 wp_enqueue_script('wp-mediaelement');
266 wp_enqueue_style( 'wp-mediaelement' );
267 }
268 }
269
270 // Enqueue our Editor's Frontend JS
271 wp_register_script('pagelayer-frontend', PAGELAYER_JS.'/givejs.php?give=pagelayer-frontend.js,nivo-lightbox.min.js,wow.min.js,jquery-numerator.js,simpleParallax.min.js,owl.carousel.min.js'.$premium_js, array('jquery'), PAGELAYER_VERSION);
272 wp_enqueue_script('pagelayer-frontend');
273
274 wp_register_style('pagelayer-frontend', PAGELAYER_CSS.'/givecss.php?give=pagelayer-frontend.css,nivo-lightbox.css,animate.min.css,owl.carousel.min.css,owl.theme.default.min.css'.$premium_css, array(), PAGELAYER_VERSION);
275 wp_enqueue_style('pagelayer-frontend');
276
277 wp_register_style('font-awesome', PAGELAYER_CSS.'/font-awesome.min.css', array(), PAGELAYER_VERSION);
278 wp_enqueue_style('font-awesome');
279
280 // Load the global styles
281 add_action('wp_head', 'pagelayer_global_styles', 5);
282
283 // Load custom widgets
284 do_action('pagelayer_custom_frontend_enqueue');
285
286 }
287
288 }
289
290 // Load the google fonts
291 add_action('wp_footer', 'pagelayer_enqueue_fonts', 5);
292
293 function pagelayer_enqueue_fonts(){
294 global $pagelayer;
295
296 if(empty($pagelayer->cache['enqueue_frontend'])){
297 return;
298 }
299
300 $url = 'Open Sans:300italic,400italic,600italic,300,400,600&subset=latin,latin-ext';
301 //pagelayer_print($pagelayer->runtime_fonts);die('alpesh');
302
303 foreach($pagelayer->runtime_fonts as $font){
304 $url .= '|'.$font.':100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i';
305 }
306
307 //echo '<link href="https://fonts.googleapis.com/css?family='.$url.'" rel="stylesheet">';
308
309 wp_register_style('pagelayer-google-font', 'https://fonts.googleapis.com/css?family='.rawurlencode($url), array(), PAGELAYER_VERSION);
310 wp_enqueue_style('pagelayer-google-font');
311
312 }
313
314 // Load any header we have
315 function pagelayer_global_js(){
316
317 echo '<script>
318 var pagelayer_ajaxurl = "'.admin_url( 'admin-ajax.php' ).'?";
319 var pagelayer_ajax_nonce = "'.wp_create_nonce('pagelayer_ajax').'";
320 var pagelayer_server_time = '.time().';
321 var pagelayer_facebook_id = "'.get_option('pagelayer-fbapp-id').'";
322 </script>';
323
324 }
325
326 // We need to handle global styles
327 function pagelayer_global_styles(){
328
329 $styles = '<style id="pagelayer-global-styles" type="text/css">';
330
331 $width = get_option('pagelayer_content_width', '1170');
332
333 $styles .= '.pagelayer-row-stretch-auto .pagelayer-row-holder, .pagelayer-row-stretch-full .pagelayer-row-holder.pagelayer-width-auto{ max-width: '.$width.'px; margin-left: auto; margin-right: auto;}';
334
335 $styles .= '</style>';
336
337 echo $styles;
338 }
339
340 // Load the live editor if needed
341 add_action('wp_enqueue_scripts', 'pagelayer_load_live', 9999);
342
343 function pagelayer_load_live(){
344
345 global $post;
346
347 // If its not live editing then stop
348 if(!pagelayer_is_live_iframe()){
349 return;
350 }
351
352 // Are you allowed to edit ?
353 if(!pagelayer_user_can_edit()){
354 return;
355 }
356
357 // Load the editor class
358 include_once(PAGELAYER_DIR.'/main/live.php');
359
360 // Call the constructor
361 $pl_editor = new PageLayer_LiveEditor();
362
363 }
364
365 // If we are doing ajax and its a pagelayer ajax
366 if(wp_doing_ajax()){
367 include_once(PAGELAYER_DIR.'/main/ajax.php');
368 }
369
370 // Show the backend editor options
371 add_action('edit_form_after_title', 'pagelayer_after_title', 10);
372 function pagelayer_after_title(){
373
374 global $post;
375
376 // Get the current screen
377 $current_screen = get_current_screen();
378
379 // For gutenberg
380 if(method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor()){
381
382 // Add the code in the footer
383 add_action('admin_footer', 'pagelayer_gutenberg_after_title');
384
385 return;
386 }
387
388 $link = pagelayer_shortlink($post->ID).'&pagelayer-live=1';
389
390 echo '
391 <div id="pagelayer-editor-button-row" style="margin-top:15px; display:inline-block;">
392 <a id="pagelayer-editor-button" href="'.$link.'" class="button button-primary button-large" style="height:auto; padding:6px; font-size:18px;">
393 <img src="'.PAGELAYER_URL.'/images/pagelayer-logo-40.png" align="top" width="24" /> <span>'.__('Edit with Pagelayer').'</span>
394 </a>
395 </div>';
396
397 }
398
399 function pagelayer_gutenberg_after_title(){
400
401 global $post;
402
403 $link = pagelayer_shortlink($post->ID).'&pagelayer-live=1';
404
405 echo '
406 <div id="pagelayer-editor-button-row" style="margin-left:15px; display:none">
407 <a id="pagelayer-editor-button" href="'.$link.'" class="button button-primary button-large" style="height:auto; padding:6px; font-size:18px;">
408 <img src="'.PAGELAYER_URL.'/images/pagelayer-logo-40.png" align="top" width="24" /> <span>'.__('Edit with Pagelayer').'</span>
409 </a>
410 </div>
411
412 <script type="text/javascript">
413 jQuery(document).ready(function(){
414
415 var pagelayer_timer;
416 var pagelayer_button = function(){
417 var button = jQuery("#pagelayer-editor-button-row");
418 var g = jQuery(".edit-post-header-toolbar");
419 if(g.length < 1){
420 return;
421 }
422 button.detach();
423 //console.log(button);
424 g.append(button);
425 button.show();
426 clearInterval(pagelayer_timer);
427 }
428 pagelayer_timer = setInterval(pagelayer_button, 100);
429 });
430 </script>';
431
432 }
433
434 add_filter( 'post_row_actions', 'pagelayer_quick_link', 10, 2 );
435 add_filter( 'page_row_actions', 'pagelayer_quick_link', 10, 2 );
436 function pagelayer_quick_link($actions, $post){
437 $link = pagelayer_shortlink($post->ID).'&pagelayer-live=1';
438
439 $actions['pagelayer'] = '<a href="'.esc_url( $link ).'">'.__( 'Edit using Pagelayer', 'pagelayer') .'</a>';
440
441 return $actions;
442 }
443
444 // Pagelayer Template Loading Mechanism
445 include_once(PAGELAYER_DIR.'/main/template.php');