D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
softaculous
/
sitepad
/
editor
/
site-data
/
plugins
/
sitepad
/
Filename :
sitepad.php
back
Copy
<?php /* Plugin Name: SitePad Plugin URI: http://sitepad.com/ Description: PageLayer is a WordPress page builder plugin. Its very easy to use and very light on the browser. Version: 1.0.0 Author: SitePad Team Author URI: https://sitepad.com/ License: Proprietary License URI: https://sitepad.com/license */ // We need the ABSPATH if (!defined('ABSPATH')) exit; if(!function_exists('add_action')){ echo 'You are not allowed to access this page directly.'; exit; } define('SITEPAD_VERSION', '1.8.8'); define('SITEPAD_DIR', dirname(__FILE__)); define('SITEPAD_FILE', __FILE__); define('SITEPAD_URL', plugins_url('', SITEPAD_FILE)); define('SITEPAD_CSS', SITEPAD_URL.'/css'); define('SITEPAD_JS', SITEPAD_URL.'/js'); define('SITEPAD_DOCS', 'https://sitepad.com/docs/'); define('SITEPAD_API', empty($sitepad['dev']) ? 'https://api.sitepad.com/' : 'http://127.0.0.1/website/api/sitepad/'); define('SITEPAD_SC_PREFIX', 'pl'); $_tmp_plugins = get_option('active_plugins'); add_action( 'send_headers', 'add_header_sitepad' ); function add_header_sitepad() { header('X-Powered-By: SitePad');// Always will be SitePad } // Check the license function sitepad_license_check($force = 0){ // $force applies only to enduser license global $l, $args, $sitepad; $sitepad['buy_link'] = empty($sitepad['dev']) ? 'https://softaculous.com/clients?ca=sitepad_enduser_buy' : 'http://127.0.0.1/website/www/clients?ca=sitepad_enduser_buy'; $sitepad['features']['pages'] = 3; $sitepad['features']['themes'] = 0;// Theme level 0 = free, 1 = pro, 2 = premium if(file_exists($sitepad['editor_path'].'/license.php')){ $license = @file_get_contents($sitepad['editor_path'].'/license.php'); $license = @trim(sm_decode($license)); $license = json_decode($license, true); // Is it an active license if(!empty($license['status'])){ $sitepad['server_license'] = $license; } // Allowed features $sitepad['features']['pages'] = 0; $sitepad['features']['themes'] = 1; } // Any Webuzo license ? $webuzo_license = get_option('webuzo_license'); // Check webuzo license if(!empty($webuzo_license)){ //$webuzo_license = json_decode($webuzo_license, true); if((time() - @$webuzo_license['last_update']) >= 86400 || $force){ $resp = wp_remote_get('https://api.webuzo.com/license2.php?license='.$webuzo_license['license'].'&sitepad='.rawurlencode($sitepad['serving_url'])); // Did we get a response ? if(is_array($resp)){ // Decode $tosave = @json_decode(trim(sm_decode($resp['body'])), true); // Is it the license ? if(!empty($tosave['license'])){ $tosave['last_update'] = time(); update_option('webuzo_license', $tosave); $webuzo_license = $tosave; } } } // Is a premium license ? if(!empty($webuzo_license['license']) && !empty($webuzo_license['status']) && !empty($webuzo_license['sitepad_bundle'])){ $sitepad['server_license'] = $webuzo_license; // Allowed features $sitepad['features']['pages'] = 0; $sitepad['features']['themes'] = 1; } } // Any Enduser license ? $enduser_license = get_option('sitepad_license'); // Update license details as well if(!empty($enduser_license)){ $sitepad['license'] = $enduser_license; //r_print($sitepad['license']); if((time() - @$enduser_license['last_update']) >= 86400 || $force){ $resp = wp_remote_get(SITEPAD_API.'license_enduser.php?eu_license='.$enduser_license['license'].'&siteurl='.rawurlencode($sitepad['serving_url'])); // Did we get a response ? if(is_array($resp)){ $tosave = json_decode($resp['body'], true); // Is it the license ? if(!empty($tosave['license'])){ $tosave['last_update'] = time(); update_option('sitepad_license', $tosave); $sitepad['license'] = $tosave; } } } // Is a premium license ? if(!empty($sitepad['license']) && !empty($sitepad['license']['status'])){ // Allowed features $sitepad['features']['pages'] = 0; $sitepad['features']['themes'] = 1; } } // Do we have a license ? if(is_admin() && is_user_logged_in() && current_user_can('manage_options')){ // If there is a license is it active ? if(!empty($sitepad['license']) && empty($sitepad['license']['status']) && $GLOBALS['pagenow'] != 'plans.php'){ // Redirect and exit wp_redirect(admin_url('/plans.php')); exit; } } } // Checks if we are to update ? function sitepad_update_check(){ global $l, $args, $sitepad; $sql = array(); $current_version = get_option('sitepad_version'); $version = (int) str_replace('.', '', $current_version); // No update required if($current_version == SITEPAD_VERSION){ return true; } // Is it first run ? if($version < 123){ $editor_themes_path = $sitepad['editor_path'].'/site-data/themes'; // Update template root update_option( 'template_root', $editor_themes_path ); } // Flush rewite rule if($version < 181){ add_action( 'init', 'flush_rewrite_rules' ); } // Save the new Version update_option('sitepad_version', SITEPAD_VERSION); } // Disable rest API add_filter( 'rest_authentication_errors', 'sitepad_disable_rest_api' ); function sitepad_disable_rest_api($access) { $rest_api = get_option('sitepad_rest_api'); if(empty($rest_api)){ $error_message = __('The REST API has been disabled on this site.'); return new WP_Error('rest_disabled', $error_message, array('status' => 401)); } return $access; } // Automatic Login add_action('plugins_loaded', 'sitepad_login_admin'); function sitepad_login_admin(){ global $l, $args, $sitepad, $pagelayer; // Lets fool the Client ! if(!headers_sent()){ header('Server: SitePad'); } // Load certain variables $tmp = (array)get_option('sitepad_vars'); register_theme_directory($sitepad['editor_path'].'/site-data/themes'); // Check if the installed version is outdated sitepad_update_check(); // Check which license are you using ? sitepad_license_check(); //print_r($GLOBALS['wp_theme_directories']); foreach($tmp as $k => $v){ $sitepad[$k] = $v; } //print_r($sitepad); // Branding related define('BRAND_SM', (!empty($sitepad['sm_brand']) ? $sitepad['sm_brand'] : 'SitePad')); define('BRAND_SM_URL', (!empty($sitepad['sm_brand_url']) ? $sitepad['sm_brand_url'] : 'https://sitepad.com')); define('BRAND_SM_LOGO', (!empty($sitepad['sm_brand_logo']) ? $sitepad['sm_brand_logo'] : sitepad_assets_url().'/images/logo-40.png')); define('BRAND_SM_APP', (!empty($sitepad['sm_brand_app']) ? $sitepad['sm_brand_app'] : BRAND_SM.' Website Builder')); define('BRAND_SM_EDITOR', (!empty($sitepad['sm_brand_editor']) ? $sitepad['sm_brand_editor'] : BRAND_SM.' Editor')); define('BRAND_SM_DEMOS', (!empty($sitepad['sm_brand_demos']) ? $sitepad['sm_brand_demos'] : 'https://demos.sitepad.com/')); if(strtolower(BRAND_SM) != 'sitepad'){ define('BRAND_SM_CUSTOM', 1); } $pagelayer->BRAND_TEXT = BRAND_SM; $pagelayer->LOGO = BRAND_SM_LOGO; if(!empty($args['export'])){ return true; } if(!empty($_REQUEST['sp-login'])){ // Are we logged in WP ? if(!is_user_logged_in()){ $key = get_option('sp-login'); if( !empty($key['sp-login']) && md5($key['sp-login']) === $_REQUEST['sp-login'] && (time() - $key['time']) < 60 ){ // Create the session as the admin wp_set_auth_cookie(1); }else{ die('YOUR HACKING ATTEMPT HAS BEEN NOTED. WE WILL NOW TAKE NECESSARY ACTION.'); } } // Are we to redirect to editor ? if(!empty($_REQUEST['edit'])){ $home = get_page_by_path('home'); $link = pagelayer_livelink($home->ID); }else{ $link = admin_url(); } // Redirect and exit wp_redirect($link); exit; } } // Has setup completed add_action('setup_theme', 'sitepad_setup_check'); function sitepad_setup_check(){ ////////////////////////////////////////////////// /* If setup is not done go to show=initial */ ////////////////////////////////////////////////// $setup_done = get_option('sp_setup_done'); if(empty($setup_done)){ // Is there an automated call to setup ? 2 calls are needed if(!empty($_REQUEST['sitepad_setup_start']) || !empty($_REQUEST['sitepad_setup_final'])){ $key = get_option('sitepad_setup_key'); // First step if($_REQUEST['sitepad_setup_start'] == $key){ sitepad_setup_start($_REQUEST['theme']); die('DONE'); } // Final step if($_REQUEST['sitepad_setup_final'] == $key){ sitepad_setup_final(); die('DONE'); } } if(is_user_logged_in()){ $allowed_files = array('admin-ajax.php', 'options-general.php', 'options.php', 'setup.php', 'plans.php'); // Ask the user to choose a theme first if(!in_array(SP_SERVING_FILE, $allowed_files)){ $to_theme = ''; $showtheme = optGET('theme'); if(!empty($showtheme)){ $to_theme = 'theme='.$showtheme; } wp_redirect(admin_url('setup.php?'.$to_theme)); exit(); } // Show Coming Soon }elseif(!is_admin() && $GLOBALS['pagenow'] !== 'login.php'){ sitepad_enduser_setup_notice(); } } } // Shows the Coming soon notice function sitepad_enduser_setup_notice(){ echo ' <html> <head> <link href="https://fonts.googleapis.com/css2?family=Khula:wght@300&display=swap" rel="stylesheet"> <style> html,body{ font-family: Khula, Arial; margin: 0px; background: #d3e7f9; } </style> </head> <body> <div style="width:97vw; height:97vh; text-align: center; vertical-align:middle"> <h1>Coming Soon !</h1> This website is almost setup. Just a theme has to be chosen from your <a href="'.admin_url('setup.php').'">'.BRAND_SM.' Admin Panel</a>. You can login with your Email or from your control panel. </div> </body> </html>'; die(); } // First step function sitepad_setup_start($theme_slug){ sitepad_pre_switch_theme($theme_slug); delete_option('_site_transient_timeout_theme_roots'); delete_option('_site_transient_theme_roots'); delete_option('template_root'); delete_option('stylesheet_root'); delete_option('current_theme'); delete_option('theme_switched'); update_option('sp_setup_selected_theme', $theme_slug); } // Final step function sitepad_setup_final(){ $chosen_theme = get_option('sp_setup_selected_theme'); switch_theme($chosen_theme); } // Upload Dir add_filter('upload_dir', 'sitepad_upload_dir', 10, 1); function sitepad_upload_dir($uploads){ global $sitepad; //print_r($uploads); // Handle upload fixes $uploads['basedir'] = $sitepad['upload_path']; $uploads['baseurl'] = rtrim($sitepad['upload_url'], '/'); $uploads['url'] = trailingslashit($uploads['baseurl']).trim($uploads['subdir'], '/'); $uploads['path'] = trailingslashit($uploads['basedir']).trim($uploads['subdir'], '/'); //print_r($uploads);die(); return $uploads; } add_action('admin_head', 'sitepad_admin_head'); add_action('wp_head', 'sitepad_admin_head'); function sitepad_admin_head(){ ?> <script type="text/javascript"> // Make $ is jQuery $ = jQuery; </script> <?php } // Footer Version add_filter('update_footer', 'sitepad_admin_footer_version', 10001, 1); function sitepad_admin_footer_version($text) { $text = 'Thank you for using <a href="'.BRAND_SM_URL.'">'.BRAND_SM.'</a>'; return $text; } // Footer add_filter('admin_footer_text', 'sitepad_admin_footer'); function sitepad_admin_footer($text) { return ''; } // Remove Help Tab add_filter('contextual_help', 'sitepad_remove_help_tabs', 10001, 3); function sitepad_remove_help_tabs($old_help, $screen_id, $screen){ $screen->remove_help_tabs(); return $old_help; } // Disable Emojis add_action( 'admin_print_styles', 'sitepad_admin_print_styles' ); function sitepad_admin_print_styles() { global $menu, $submenu; foreach($menu as $k => $v){ if(in_array($v[2], ['pagelayer'])){ unset($menu[$k]); } } //unset(); } // Disable Emojis add_action( 'init', 'disable_wp_emojicons' ); function disable_wp_emojicons() { // All actions related to emojis remove_action( 'admin_print_styles', 'print_emoji_styles' ); remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); remove_filter( 'the_content_feed', 'wp_staticize_emoji' ); remove_filter( 'comment_text_rss', 'wp_staticize_emoji' ); // Filter to remove TinyMCE emojis //add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' ); } // Months Drop Down in Posts List add_filter('disable_months_dropdown', 'sitepad_disable_dropdown_months'); function sitepad_disable_dropdown_months(){ return true; } // Disable the screen options add_filter('screen_options_show_screen', 'sitepad_disable_screen_options'); function sitepad_disable_screen_options(){ return false; } add_filter('page_row_actions', 'sitepad_edit_link', 1000, 2); add_filter('post_row_actions', 'sitepad_edit_link', 1000, 2); // Remove actions not required in Posts Lists function sitepad_edit_link($actions, $post){ unset($actions['inline hide-if-no-js']); unset($actions['pagelayer']); return $actions; } // Handle edit link of the post type add_filter('get_edit_post_link', 'sitepad_edit_post_link', 10, 3); function sitepad_edit_post_link($link, $postID, $context){ $post = get_post($postID); if(!pagelayer_supported_type($post->post_type)){ return $link; } return pagelayer_livelink($postID); } // Remove dashboard widgets add_action( 'admin_init', 'remove_dashboard_meta' ); function remove_dashboard_meta() { remove_action( 'welcome_panel', 'wp_welcome_panel' ); } // Always show all columns, because we remove the default cols otherwise add_filter('hidden_columns', 'sitepad_hidden_columns', 10001, 3); function sitepad_hidden_columns($hidden, $screen, $use_defaults){ //r_print($use_defaults); return array(); } // Always show all columns advanced options for nav-menus add_filter('manage_nav-menus_columns', 'sitepad_manage_nav_menus_columns', 10001); function sitepad_manage_nav_menus_columns($menus){ //r_print($menus); //return $menus; return array(); } // Disable Avatars add_filter('pre_option_show_avatars', '__return_true', 10001); // Filter the capabilities add_filter('map_meta_cap', 'sitepad_map_meta_cap', 10001, 4); function sitepad_map_meta_cap($caps, $cap, $user_id, $args){ // Actions which are not allowed for SitePad used in current_user_can() wp-includes/capabilities.php $disallowed_actions = array('delete_themes', 'install_themes', 'edit_themes', 'update_themes'); if(in_array($cap, $disallowed_actions)){ return array('do_not_allow'); } return $caps; } add_action('wp_mail', 'sitepad_wp_mail', 10, 1); function sitepad_wp_mail($mail){ $mail['subject'] = str_replace('WordPress', BRAND_SM, $mail['subject']); $mail['subject'] = str_replace('wordpress', strtolower(BRAND_SM), $mail['subject']); $mail['message'] = str_replace('WordPress', BRAND_SM, $mail['message']); $mail['message'] = str_replace('wordpress', strtolower(BRAND_SM), $mail['message']); return $mail; } add_action('wp_mail_from', 'sitepad_wp_mail_from', 10, 1); function sitepad_wp_mail_from($mail_from){ $brand = preg_replace('/\s/is', '_', BRAND_SM); $mail_from = str_replace('WordPress', $brand, $mail_from); $mail_from = str_replace('wordpress', strtolower($brand), $mail_from); return $mail_from; } add_action('wp_mail_from_name', 'sitepad_wp_mail_from_name', 10, 1); function sitepad_wp_mail_from_name($mail_from_name){ $mail_from_name = str_replace('WordPress', BRAND_SM, $mail_from_name); $mail_from_name = str_replace('wordpress', strtolower(BRAND_SM), $mail_from_name); return $mail_from_name; } // Link to clone a post function sitepad_clone_post_link( $id = 0, $context = 'display' ) { if ( ! $post = get_post( $id ) ) return; $nonce = wp_create_nonce('pagelayer-options'); if ( 'revision' === $post->post_type ) $action = ''; elseif ( 'display' == $context ) $action = '&action=pagelayer_clone_post&_wpnonce='.$nonce; else $action = '&action=pagelayer_clone_post&_wpnonce='.$nonce; $post_type_object = get_post_type_object( $post->post_type ); if ( !$post_type_object ) return; if ( !current_user_can( 'edit_post', $post->ID ) ) return; if ( $post_type_object->_edit_link ) { $link = admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) ); } else { $link = ''; } return apply_filters( 'sitepad_clone_post_link', $link, $post->ID, $context ); } //Remove Pagelayer Promo add_action( 'admin_notices', 'remove_pagelayer_show_promo', 0 ); function remove_pagelayer_show_promo(){ remove_action( 'admin_notices', 'pagelayer_show_promo' ); } // The publish button handler add_action('admin_head' , 'sitepad_head_script', 0); function sitepad_head_script(){ global $l, $sitepad; ?> <div class="modal" tabindex="-1" role="dialog" id="sitepad-reset-modal"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="reset_title">Reset</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div id="reset_status_txt" style="display: none;"> <form> <input type="radio" name="reset_todo" value="pages"><?php echo __('Reset all Pages');?> <br /> <input type="radio" name="reset_todo" value="posts"><?php echo __('Reset all Blog Posts');?> <br /> <input type="radio" name="reset_todo" value="all"><?php echo __('Reset full site');?> </form> </div> <div id="reset_status_txt_conf" style="display: none;"> <div id="sitepad_reset_txt"></div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary" id="reset_continue" onclick="sitepad_reset_site_continue()">Continue</button> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <script> <?php echo ' // Reset Site Functions function sitepad_reset_conf(){ jQuery("#sitepad-reset-modal").modal(); jQuery("#reset_status_txt").show(); jQuery("#reset_status_txt_conf").hide(); jQuery("#reset_title").html("'.__('Reset').'"); jQuery("#reset_continue").prop("disabled", false); } function sitepad_reset_site_continue(){ if(jQuery("#sitepad_reset_txt").is(":visible")){ sitepad_reset_site(); return; } var reset_todo = jQuery("#sitepad-reset-modal input[name=reset_todo]:checked").val(); if(reset_todo == "pages"){ var raw_reset_txt = "1. '.__('All the Pages will be deleted').' <br /> 2. '.__('Default Pages that exists in the active theme will be recreated').'"; } if(reset_todo == "posts"){ var raw_reset_txt = "1. '.__('All the Blog Posts will be deleted').' <br /> 2. '.__('The Default blog post will be recreated').'"; } if(reset_todo == "all"){ var raw_reset_txt = "1. '.__('All the Pages and Blog Posts will be deleted').' <br /> 2. '.__('You will need to start again by choosing a theme').'"; } if(!raw_reset_txt){ alert("'.__('Please select the appropriate option !').'"); return true; } var reset_txt = "'.__('The following changes will be performed').' : <br />"; raw_reset_txt = reset_txt+raw_reset_txt; jQuery("#sitepad_reset_txt").html(raw_reset_txt); jQuery("#reset_title").html("'.__('Are you sure you want to reset ?').'"); jQuery("#reset_status_txt").hide(); jQuery("#reset_status_txt_conf").show(); } // Close the publish progress function sitepad_reset_conf_close(){ jQuery("#reset_status_txt").hide(); jQuery("#reset_status_txt_conf").hide(); jQuery("#sitepad-reset-prog").hide(); } var time_left = 6000; var sitepad_reset_siterecall = false; function start_timer(){ sitepad_reset_siterecall = true; time_left = time_left - 1000; jQuery("#sm-redirect-sec").html((time_left/1000).toFixed(0)); if(time_left < 1000){ sitepad_reset_siterecall = false; time_left = 6000; window.location.href = sitepad_setup_url; }else{ setTimeout(function(){ start_timer() }, 1000); } } function sitepad_reset_site(){ if(sitepad_reset_siterecall) return; var reset_todo = jQuery("#sitepad-reset-modal input[name=reset_todo]:checked").val(); var ajaxurl = "'.admin_url('admin-ajax.php?').'&action=sitepad_reset_site&reset_todo="+reset_todo+"&sitepad_nonce="+sitepad_ajax_nonce; var reset_loading_txt = \'<br /><center><img src="'.admin_url('/images/wpspin_light-2x.gif').'" /></center>\'; jQuery("#sitepad_reset_txt").html(reset_loading_txt); jQuery("#reset_continue").prop("disabled", true); jQuery.ajax({ url: ajaxurl, dataType: "json", success: function(data){ if(!("done" in data)){ jQuery("#reset_status_txt_conf").hide(); jQuery("#reset_status_txt").show(); jQuery("#reset_title").html("'.__('Reset').'"); alert(data["error"]); }else{ jQuery("#sitepad_reset_txt").html(\'<div class="spe-prog-status-txt">'.__('Your site has been reset successfully. Redirecting you in ').' <b><span id="sm-redirect-sec">5</span></b> '.__('Seconds').'.</div>\'); start_timer(); } }, }); } sitepad_setup_url = "'.admin_url('setup.php?').'&"; sitepad_ajax_url = "'.admin_url( 'admin-ajax.php?' ).'&"; sitepad_ajax_nonce = "'.wp_create_nonce('sitepad_ajax').'"; '; ?> </script> <?php } // Disable Comments add_action('plugins_loaded', 'sitepad_disable_comments'); function sitepad_disable_comments(){ global $l, $args, $sitepad; $types = get_post_types(); if(get_option('default_comment_status') != 'closed'){ update_option('default_comment_status', 'closed'); update_option('default_ping_status', 'closed'); update_option('default_pingback_flag', 0); } // Disable Comments foreach($types as $k => $v){ remove_post_type_support($k, 'comments'); remove_post_type_support($k, 'trackbacks'); } } // Resets the site as per the given parameter function sitepad_reset_site_fn($reset_todo = 'all'){ global $pagelayer, $sitepad; if(empty($reset_todo) || !in_array($reset_todo, array('pages', 'posts', 'all'))){ return false; } $theme_path = cleanpath(get_stylesheet_directory()); // Delete Pages if(empty($_POST['maintain_ids']) && ($reset_todo == 'pages' || $reset_todo == 'all')){ foreach (glob($sitepad['data_path'].'/uploads/screenshots/*') as $file) { unlink($file); } // Delete Pagelayer templates $args = [ 'post_type' => $pagelayer->builder['name'], 'posts_per_page' => -1 ]; $query = new WP_Query($args); foreach($query->posts as $ck => $cv){ wp_delete_post($cv->ID, true); } $cur_pages = get_pages(array( 'post_status' => 'publish,draft,trash', 'posts_per_page' => -1) ); //r_print($cur_pages); foreach($cur_pages as $ck => $cv){ wp_delete_post($cv->ID, true); } } // Delete Posts if($reset_todo == 'posts' || $reset_todo == 'all'){ $cur_posts = get_posts( array( 'post_status' => 'publish,draft,trash', 'posts_per_page' => -1 ) ); // Delete all the blog posts foreach($cur_posts as $ck => $cv){ wp_delete_post($cv->ID, true); } if($reset_todo == 'posts'){ $post_types = array('post' => 'Posts'); } else { $post_types = pagelayer_get_public_post_types(); } foreach ( $post_types as $post_type => $label ) { $type_taxonomies = get_object_taxonomies( $post_type, 'objects' ); $taxonomies = wp_filter_object_list( $type_taxonomies, [ 'public' => true, 'show_in_nav_menus' => true, ] ); foreach( $taxonomies as $slug => $object ){ $query_params = [ 'taxonomy' => $object->name, 'hide_empty' => false, ]; $terms = get_terms( $query_params ); foreach($terms as $term){ wp_delete_term($term->term_id,$term->taxonomy); } } } } if($reset_todo == 'posts'){ // Insert Default blog post $new_post = array(); $new_post['post_content'] = 'This is a default blog post. Feel free to delete it.'; $new_post['post_title'] = 'Default Blog Post'; $new_post['post_name'] = 'default-post'; $new_post['post_type'] = 'post'; $new_post['post_status'] = 'publish'; // Now insert / update the post $ret = wp_insert_post($new_post); } // Restore the pages if($reset_todo == 'pages'){ $_POST['create_blog_page'] = 1; $theme_slug = basename(get_stylesheet_directory()); sitepad_switch_theme($theme_slug, wp_get_theme()); } if($reset_todo == 'all'){ if(!empty($sitepad['dev'])){ //Delete Media Library $cur_images = get_posts(array( 'post_type' => 'attachment', 'posts_per_page' => -1) ); foreach($cur_images as $ik => $iv){ wp_delete_attachment($iv->ID, true); } //Delete Global Fonts foreach($pagelayer->css_settings as $k => $params){ foreach($pagelayer->screens as $sk => $sv){ $suffix = (!empty($sv) ? '_'.$sv : ''); $setting = empty($params['key']) ? 'pagelayer_'.$k.'_css' : $params['key']; $tmp = $setting.$suffix; if(!empty($tmp)){ delete_option($tmp); } } } } wp_delete_nav_menu('Header Menu'); delete_option('sp_setup_done'); update_option('stylesheet', 'sitepad'); update_option('template', 'sitepad'); update_option('sp_setup_clear_data', '1'); } return true; } // Print SiteMap data add_action( 'wp_loaded', 'sitepad_print_sitemap' ); function sitepad_print_sitemap(){ if(sitepad_cur_page() != 'sitemap.xml'){ return false; } // Get a list of pages $wp_pages = get_pages(); $sitemap_todo = array(); $sitemap_data = get_option('sitepad_sitemap'); $sitemap_data = json_decode($sitemap_data, true); $exclude_post = false; foreach($wp_pages as $pk => $pv){ if(in_array($pv->ID, array(1, 2))){ continue; } // We want the sitemap only if it is enabled and it is not a blog page and not home page. Homepage we will handle it from publish-cli.php if($sitemap_data['enable_sitemap'] == 'on' && ($sitemap_data[$pv->ID]['include'] != 'exclude' || $sitemap_data['sitemap'] != 'manual')){ // If is post blog page then print all posts if(get_option('page_for_posts') == $pv->ID){ $exclude_post = true; } $sitemap_todo[$pv->post_name]['loc'] = get_permalink($pv->ID); $sitemap_todo[$pv->post_name]['lastmod'] = date('Y-m-d', strtotime($pv->post_modified)); if(!empty($sitemap_data[$pv->ID]['frequency']) && $sitemap_data['sitemap'] == 'manual'){ $sitemap_todo[$pv->post_name]['changefreq'] = $sitemap_data[$pv->ID]['frequency']; }else{ if($pv->post_name == 'home'){ $sitemap_todo[$pv->post_name]['changefreq'] = 'daily'; }else{ $sitemap_todo[$pv->post_name]['changefreq'] = 'monthly'; } } if(!empty($sitemap_data[$pv->ID]['priority']) && $sitemap_data['sitemap'] == 'manual'){ $sitemap_todo[$pv->post_name]['priority'] = $sitemap_data[$pv->ID]['priority']; }else{ if($pv->post_name == 'home'){ $sitemap_todo[$pv->post_name]['priority'] = '1.0'; }else{ $sitemap_todo[$pv->post_name]['priority'] = '0.8'; } } } } // Free some memory unset($wp_pages); // Add the blog posts as well $wp_posts = get_posts( array( 'numberposts' => -1 ) ); //r_print($wp_posts); if($exclude_post){ foreach($wp_posts as $pk => $pv){ $permalink = get_permalink($pv->ID); if($sitemap_data['enable_sitemap'] == 'on'){ // We are not using $posts_page because blog post url always have the URL blog/ $sitemap_todo[$pv->post_name]['loc'] = $permalink; $sitemap_todo[$pv->post_name]['lastmod'] = date('Y-m-d', strtotime($pv->post_modified)); $sitemap_todo[$pv->post_name]['changefreq'] = 'weekly'; $sitemap_todo[$pv->post_name]['priority'] = '0.6'; } } } if($sitemap_data['enable_sitemap'] == 'on'){ if($sitemap_data['ssl_secured'] == 'on'){ $sitemap_ssl = $sitemap_data['ssl_secured']; } } $sitemap = '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> '; // Do not remove this new line. It is required $sitemap_url = home_url('/'); //Replace plain http with https if setting is enabled. if(!empty($sitemap_ssl)){ $sitemap_url = str_replace('http://', 'https://', $sitemap_url); } // This is for the main site // sitemap_url_tag function declare in site-inc\sitepad_functions.php // TODO: varify if need to change lostmod change here $sitemap .= sitemap_url_tag($sitemap_url, '', 'always', '1.0'); foreach($sitemap_todo as $sk => $sv){ if(!empty($sitemap_ssl)){ $sv['loc'] = str_replace('http://', 'https://', $sv['loc']); } $sitemap .= sitemap_url_tag($sv['loc'], $sv['lastmod'], $sv['changefreq'], $sv['priority']); } $sitemap .= '</urlset>'; header('Content-type: text/xml'); echo $sitemap; die(); } // Show Google Analytics on Pages add_action('wp_head', 'sitepad_show_google_analytics' , 2); function sitepad_show_google_analytics(){ $trackingID = get_option('g_analytics_tracking_id'); // We do not have google analytics Tracking ID if(empty($trackingID)){ return true; } $echo_meta = "<script async src='https://www.googletagmanager.com/gtag/js?id=".$trackingID."'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '".$trackingID."'); </script> "; echo $echo_meta; } add_action('wp_footer', 'sitepad_mailchimp', 99999); function sitepad_mailchimp(){ global $post; // If we are in the editor mode we do not need to display this if(pagelayer_is_live()){ return true; } $mcPopUp = get_option('mail_chimp'); // MailChimp not configured if(empty($mcPopUp)){ return true; } if(!empty($mcPopUp['mailchimp_popup'])){ if(empty($mcPopUp['option']) || (!empty($mcPopUp['option']) && in_array($post->ID, $mcPopUp['selected_page']))){ echo '<!-- MailChimp Code starts -->'.$mcPopUp['mailchimp_popup'].'<!-- MailChimp Code ends -->'; } } return true; } // SMTP setting us add_action( 'phpmailer_init', 'sitepad_smtp_setting' ); function sitepad_smtp_setting( $phpmailer ) { $options = get_option('sitepad_smtp_options'); if(empty($options) || empty($options['enable_smtp'])){ return false; } $phpmailer->isSMTP(); if ( !empty($options['encryption']) && 'none' !== $options['encryption']) { $phpmailer->SMTPSecure = $options['encryption']; } // Set the other options $phpmailer->Host = $options['smtp_host']; $phpmailer->Port = $options['smtp_port']; // If we're using smtp auth, set the username & password if ( !empty($options['smtp_auth']) ) { $phpmailer->SMTPAuth = true; $phpmailer->Username = $options['smtp_username']; $phpmailer->Password = base64_decode($options['smtp_password']); } //PHPMailer 5.2.10 introduced this option. However, this might cause issues if the server is advertising TLS with an invalid certificate. $phpmailer->SMTPAutoTLS = false; if(isset( $options['disable_ssl_verification'] ) && false !== $options['disable_ssl_verification']) { // Insecure SSL option enabled $phpmailer->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ), ); } //set reasonable timeout $phpmailer->Timeout = 10; } // Add custom text/textarea attachment field add_filter('attachment_fields_to_edit', 'sitepad_add_custom_fields_to_attachment', null, 2); function sitepad_add_custom_fields_to_attachment( $form_fields, $post ){ $img_source = get_post_meta($post->ID, 'sitepad_img_source', true); $download_url = get_post_meta($post->ID, 'sitepad_download_url', true); $img_lic = get_post_meta($post->ID, 'sitepad_img_lic', true); $form_fields['sitepad_img_source'] = array( 'label' => __('Image Source'), 'input' => 'text', 'value' => $img_source, ); $form_fields['sitepad_download_url'] = array( 'label' => __('Download Url'), 'input' => 'text', 'value' => $download_url, ); $form_fields['sitepad_img_lic'] = array( 'label' => __('Image License'), 'input' => 'text', 'value' => $img_lic, ); return $form_fields; } // Save custom text/textarea attachment field add_filter('attachment_fields_to_save', 'sitepad_save_attachment_field', null, 2); function sitepad_save_attachment_field($post, $attachment){ $keys = array('sitepad_img_source', 'sitepad_download_url', 'sitepad_img_lic'); foreach($keys as $key){ if( !empty($attachment[$key]) ){ update_post_meta($post['ID'], $key, sanitize_text_field($attachment[$key])); }else{ delete_post_meta($post['ID'], $key); } } return $post; } // Find the page being accessed function sitepad_cur_page(){ $blog_url = trailingslashit(get_bloginfo('url')); // Build the Current URL $url = (is_ssl() ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if(is_ssl() && preg_match('/^http\:/is', $blog_url)){ $blog_url = substr_replace($blog_url, 's', 4, 0); } // The relative URL to the Blog URL $req = str_replace($blog_url, '', $url); $req = str_replace('index.php/', '', $req); // We dont need the args $parts = explode('?', $req, 2); $relative = basename($parts[0]); // Remove trailing slash $relative = rtrim($relative, '/'); $tmp = explode('/', $relative, 2); $page = end($tmp); //echo 'Page : '.$page.'<br>'; return $page; } // Site is under development mode add_action('wp_head', 'sitepad_dev_mode'); function sitepad_dev_mode(){ $mode = get_option('sitepad_dev_mode'); if(empty($mode) || is_user_logged_in()){ return; } wp_die('<h1>Under Development</h1><br />Website under development. Please check back later.'); } add_action( 'customize_register', 'sitepad_customizer_remove_sections', 999); function sitepad_customizer_remove_sections( $wp_customize ) { $wp_customize->remove_section('header_image'); $wp_customize->remove_panel('kkart'); //Todo: Add when Kkart Complete $wp_customize->remove_panel('widgets'); $wp_customize->remove_section('colors'); $wp_customize->remove_section('custom_css'); } add_action( 'user_new_form', 'sitepad_add_multiple_roles_ui', 0 ); add_action( 'show_user_profile', 'sitepad_add_multiple_roles_ui', 0 ); add_action( 'edit_user_profile', 'sitepad_add_multiple_roles_ui', 0 ); function sitepad_add_multiple_roles_ui( $user ) { $roles = get_editable_roles(); $user_roles = ! empty( $user->roles ) ? array_intersect( array_values( $user->roles ), array_keys( $roles ) ) : array(); ?> <script> jQuery(document).ready(function() { var row = jQuery('select#role').closest('tr'); row.html(jQuery('.sitepad-roles-container tr').html()); jQuery('.sitepad-roles-container').remove(); }); </script> <div class="sitepad-roles-container"> <table class="form-table"> <tr> <th> <label><?php _e('Roles'); ?></label> </th> <td> <?php foreach ( $roles as $role_id => $role_data ) { if ( current_user_can( 'promote_users', get_current_user_id() ) ) { ?> <label for="user_role_<?php echo esc_attr( $role_id ); ?>"> <input type="checkbox" style = "max-width: 1rem;" id="user_role_<?php esc_attr_e( $role_id ); ?>" value="<?php esc_attr_e( $role_id ); ?>" name="sitepad_user_roles[]" <?php echo ( ! empty( $user_roles ) && in_array( $role_id, $user_roles ) ) ? ' checked="checked"' : ''; ?> /> <?php esc_html_e( translate_user_role( $role_data['name'] ) ); ?> </label> <br /> <?php } else { if ( ! empty( $user_roles ) && in_array( $role_id, $user_roles ) ) { echo translate_user_role( $role_data['name'] ) . ', '; } } } ?> <?php wp_nonce_field( 'sitepad_set_roles', '_sitepad_roles_nonce' ); ?> </td> </tr> </table> </div> <?php } add_action('personal_options_update', 'sitepad_save_multiple_user_roles'); add_action('edit_user_profile_update', 'sitepad_save_multiple_user_roles'); add_action('user_register', 'sitepad_save_multiple_user_roles'); function sitepad_save_multiple_user_roles( $user_id ) { // Not allowed to edit user - bail if ( ! current_user_can( 'promote_users', $user_id ) || ! wp_verify_nonce( $_POST['_sitepad_roles_nonce'], 'sitepad_set_roles' ) ) { return; } $user = new WP_User( $user_id ); $roles = get_editable_roles(); if ( ! empty( $_POST['sitepad_user_roles'] ) ) { $new_roles = array_map( 'sanitize_text_field', wp_unslash( $_POST['sitepad_user_roles'] ) ); // Get rid of any bogus roles $new_roles = array_intersect( $new_roles, array_keys( $roles ) ); $roles_to_remove = array(); $user_roles = array_intersect( array_values( $user->roles ), array_keys( $roles ) ); if ( ! $new_roles ) { // If there are no roles, delete all of the user's roles $roles_to_remove = $user_roles; } else { $roles_to_remove = array_diff( $user_roles, $new_roles ); } foreach ( $roles_to_remove as $_role ) { $user->remove_role( $_role ); } if ( $new_roles ) { // Make sure that we don't call $user->add_role() any more than it's necessary $_new_roles = array_diff( $new_roles, array_intersect( array_values( $user->roles ), array_keys( $roles ) ) ); foreach ( $_new_roles as $_role ) { $user->add_role( $_role ); } } } } include_once(SITEPAD_DIR.'/theme.php'); include_once(SITEPAD_DIR.'/pagelayer.php'); include_once(SITEPAD_DIR.'/ajax.php'); include_once(SITEPAD_DIR.'/seo.php');