Current File : //proc/self/root/var/softaculous/sitepad/editor/site-data/plugins/sitepad/theme.php |
<?php
// We need the ABSPATH
if (!defined('ABSPATH')) exit;
//==========================
// THEME RELATED
//==========================
// Disable Avatars
add_filter('pre_option_show_avatars', '__return_true', 10001);
// List of installed themes - Mainly not used
add_filter('pre_site_option_allowedthemes', 'sitepad_allowedthemes', 10001);
function sitepad_allowedthemes(){
$themes = json_decode(file_get_contents(ABSPATH.'/site-data/themes/themes.json'), true);
return $themes;
}
// Stylesheet URI fix
add_filter('stylesheet_directory_uri', 'sitepad_stylesheet_directory_uri', 10001, 3);
function sitepad_stylesheet_directory_uri($stylesheet_dir_uri, $stylesheet, $theme_root_uri){
global $sitepad;
//print_r(func_get_args());die();
if(!preg_match('/^http/is', $stylesheet_dir_uri)){
return $sitepad['url'].'/sitepad-data/themes/'.$stylesheet;
}
return $stylesheet_dir_uri;
}
// Themeroot URI fix
add_filter('theme_root_uri', 'sitepad_theme_root_uri', 10001, 3);
function sitepad_theme_root_uri($theme_root_uri, $siteurl, $stylesheet_or_template){
global $sitepad;
//print_r(func_get_args());die();
if(!preg_match('/^http/is', $theme_root_uri)){
return $sitepad['url'].'/sitepad-data/themes';
}
return $theme_root_uri;
}
add_action('wp_prepare_themes_for_js', 'sitepad_themes_for_js', 10, 1);
function sitepad_themes_for_js($themes){
global $sitepad, $SESS;
$sitepad['theme_levels'][0] = __('Free');
$sitepad['theme_levels'][1] = __('Pro');
$sitepad['theme_levels'][2] = __('Premium');
//r_print($themes);
$GLOBALS['sp_category'] = json_decode(file_get_contents(ABSPATH.'/site-data/themes/categories.json'), true);
$GLOBALS['sp_themes'] = json_decode(file_get_contents(ABSPATH.'/site-data/themes/themes.json'), true);
$current_theme = get_stylesheet();
foreach($GLOBALS['sp_themes'] as $tk => $tv){
// If entry is there, we consider that entry proper
if(!empty($themes[$tk])){
continue;
}
$tv['id'] = $tk;
$tv['screenshot'][0] = sitepad_themes_api_url($tk).'/screenshot.jpg';
$tv['description'] = __('There is no description for this theme. I guess this must be a beatiful theme');
$tv['author'] = empty($tv['author']) ? 'SitePad Team' : $tv['author'];
$tv['authorAndUri'] = empty($tv['authorAndUri']) ? '<a href="https://sitepad.com">SitePad Team</a>' : $tv['authorAndUri'];
$tv['active'] = $tk == $current_theme;
$tv['version'] = empty($tv['version']) ? '1.0' : $tv['version'];
$tv['category'] = empty($tv['category']) ? 'others' : $tv['category'];
$tv['tags'] = empty($tv['tags']) ? 'basic' : $tv['tags'];
$tv['actions'] = array(
'activate' => current_user_can( 'switch_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=activate&stylesheet=' . $tk ), 'switch-theme_' . $tk ) : null,
'delete' => current_user_can( 'delete_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=delete&stylesheet=' . $tk ), 'delete-theme_' . $tk ) : null,
);
$themes[$tk] = $tv;
}
// We do not want to show SiteMush
if(isset($themes['sitepad'])){
unset($themes['sitepad']);
}
foreach($themes as $tk => $tv){
// If this theme is not allowed we will unset it and add it at the end of array
if(@$tv['type'] > $sitepad['features']['themes']){
$shift_val = $themes[$tk];
unset($shift_val['parent']);
unset($shift_val['actions']['activate']);
unset($themes[$tk]);
$themes[$tk] = $shift_val;
}
if(!empty($SESS['acl_plan'])){
if(!empty($SESS['acl_themes']) && !in_array($tk, $SESS['acl_themes']) && empty($themes[$tk]['active'])){
unset($themes[$tk]);
}
}
//print_r($tv);die();
// Add themes count to category
if(array_key_exists($tv['category'], $GLOBALS['sp_category'])){
$GLOBALS['sp_category'][$tv['category']]['count'] = (empty($GLOBALS['sp_category'][$tv['category']]['count']) ? 1 : $GLOBALS['sp_category'][$tv['category']]['count']+1);
}
if(isset($tv['parent'])){
unset($themes[$tk]['parent']);
}
}
//print_r($themes);
function cmp_category($a, $b) {
if($a['count'] == $b['count']){
return 0;
}
return ($a['count'] > $b['count']) ? -1 : 1;
}
// Sort the categories by number of themes in respective category
uasort($GLOBALS['sp_category'], 'cmp_category');
return $themes;
}
add_action('load-themes.php', 'sitepad_redirect_to_theme_details');
function sitepad_redirect_to_theme_details(){
$showtheme = optGET('theme');
$as = optGET('as');
$show = optGET('show');
if((!empty($as) || !empty($show)) && !empty($showtheme)) {
wp_redirect('themes.php?theme='.$showtheme.(!empty($show) ? '&show='.$show : ''));
exit();
}
}
// Create the menu if not exists
function sitepad_create_header_menu(){
// Create the menu if not exists
$menu_name = 'Header Menu';
$menu_exists = wp_get_nav_menu_object($menu_name);
// If there is no menu we will need to add it
if(!$menu_exists){
// Insert the Menu
$menu_id = wp_create_nav_menu($menu_name);
// We need to enable auto add new pages
$options = (array) get_option('nav_menu_options');
if (!isset($options['auto_add'])){
$options['auto_add'] = array();
}
$options['auto_add'][] = $menu_id;
update_option('nav_menu_options', $options);
$home_page = get_page_by_path('home');
// The Home link
wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => 'Home',
'menu-item-classes' => 'home',
'menu-item-url' => home_url( '/' ),
'menu-item-status' => 'publish',
'menu-item-type' => 'post_type',
'menu-item-object' => 'page',
'menu-item-object-id' => $home_page->ID));
// Load the new themes pages array
$pages = get_pages();
// The other links
foreach($pages as $pk => $pv){
// Skip Header, Footer and Home pages
if($pv->post_name == 'home') continue;
wp_update_nav_menu_item($menu_id, 0, array(
'menu-item-title' => $pv->post_title,
'menu-item-url' => home_url( '/'.$pv->post_name.'/' ),
'menu-item-status' => 'publish',
'menu-item-type' => 'post_type',
'menu-item-object' => 'page',
'menu-item-object-id' => $pv->ID));
}
}
}
// Download our theme if any
add_filter('pre_switch_theme', 'sitepad_pre_switch_theme', 10001);
function sitepad_pre_switch_theme($stylesheet){
global $sitepad;
// Our themes
$themes = json_decode(file_get_contents(ABSPATH.'/site-data/themes/themes.json'), true);
$theme = wp_get_theme( $stylesheet );
$dir = $theme->get_stylesheet_directory();
$img_download = get_option('pagelayer_import_images_'.$stylesheet);
// Theme already there
if($theme->exists() && file_exists($dir.'/style.css') && $img_download != 'no') {
return;
}
// Is SitePad theme ?
if(empty($themes[$stylesheet])){
return;
}
//die('Starting download');
// Download it
if(!function_exists( 'download_url' ) ) {
require_once ABSPATH . 'site-admin/includes/file.php';
}
$url = get_softaculous_file(sitepad_mirrors().'/givetheme.php?slug='.$stylesheet, 1);
//echo $url;
$tmp_file = download_url($url);
//echo filesize($tmp_file);
//r_print($tmp_file);die();
// Error downloading
if(is_wp_error($tmp_file) || filesize($tmp_file) < 1){
@unlink($tmp_file);
if(!empty($tmp_file->errors)){
r_print($tmp_file->errors);
}
die('Could not download the theme. Please contact your website provider');
}
$destination = $sitepad['data_path'].'/themes/'.$stylesheet;
@mkdir($destination, 0755, true);
//echo $destination;
define('FS_METHOD', 'direct');
WP_Filesystem();
$ret = unzip_file($tmp_file, $destination);
//r_print($ret);
// Error downloading
if(is_wp_error($ret) || !file_exists($destination.'/style.css')){
@unlink($tmp_file);
if(!empty($ret->errors)){
r_print($ret->errors);
}
die('Could not extract the theme.');
}
@unlink($tmp_file);
//echo file_exists($destination.'/style.css');
// Delete cache
delete_site_transient('theme_roots');
wp_cache_delete('theme_roots', 'site-transient');
wp_clean_themes_cache();
$theme->cache_delete();
//r_print($theme);die();
}
// Handle the theme change
add_action('switch_theme', 'sitepad_switch_theme', 10000, 3);
function sitepad_switch_theme($new_name = NULL, $new_theme = NULL, $old_theme = NULL){
global $wpdb, $wp_rewrite, $pagelayer, $sitepad, $pl_error;
$sp_setup_done = get_option('sp_setup_done');
// First time setup ?
if(empty($sp_setup_done)){
// Load templates
pagelayer_builder_load_templates();
// Delete all template types
foreach($pagelayer->templates as $k => $v){
wp_delete_post($v->ID, true);
}
$_POST['delete_old_import'] = 1;
$_POST['overwrite'] = 1;
$_POST['set_home_page'] = 1;
}
include_once(PAGELAYER_DIR.'/main/import.php');
$theme_path = $new_theme->get_stylesheet_directory();
//die($theme_path);
$ret = pagelayer_import_theme($new_name, $theme_path);
if(!empty($pl_error)){
pagelayer_print($pl_error);
die();
}
// First time setup ?
if(empty($sp_setup_done)){
if(empty($pagelayer->imported['post'])){
// Insert Default blog post
$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);
}
// Set the permalink
$wp_rewrite->set_permalink_structure( '/blog/%postname%/' );
update_option('sp_setup_done', time());
}
}
// Replace Social URLs with the one given in setup
function sitepad_handle_social_urls($matches){
//r_print($matches);die();
// Get the icon
preg_match('/icon=(\'|")([^\'"]*)(\'|")/is', $matches[0], $icon);
$icon = $icon[2];
$urls = pagelayer_get_social_urls();
foreach($urls as $k => $v){
if(preg_match('/'.preg_quote($k, '/').'/is', $icon)){
$social_url = $v;
break;
}
}
if(!empty($social_url)){
// Is the social_url param there ?
if(!preg_match('/social_url=/is', $matches[0])){
$matches[0] = substr($matches[0], 0, -1).'social_url="#"]';
}
$matches[0] = preg_replace('/social_url=(\'|")([^\'"]*)(\'|")/is', 'social_url="'.$social_url.'"', $matches[0]);
}
//r_print($matches);die();
return $matches[0];
}
// Replace Social URLs with the one given in setup
function sitepad_handle_social_urls_blocks($matches){
// Get the icon
preg_match('/icon":"([^"]*)"/is', $matches[0], $icon);
$icon = $icon[1];
$urls = pagelayer_get_social_urls();
foreach($urls as $k => $v){
if(preg_match('/'.preg_quote($k, '/').'/is', $icon)){
$social_url = $v;
break;
}
}
if(!empty($social_url)){
// Is the social_url param there ?
if(!preg_match('/"social_url"/is', $matches[0])){
$matches[0] = preg_replace('/("icon"\s*:\s*"([^"]*)")/is', '"icon":"'.$icon.'","social_url":"#"', $matches[0]);
}
$matches[0] = preg_replace('/social_url"\s*:\s*"([^"]*)"/is', 'social_url":"'.$social_url.'"', $matches[0]);
}
return $matches[0];
}
function sitepad_default_templates(&$pgl){
// Do we have the blog template ?
if(!empty($pgl['blog-template'])){
return;
}
$data['blog-template'] = '[pl_row pagelayer-id="ffbgB5e4xPIruUJC" stretch="auto" col_gap="10" width_content="auto" row_height="default" overlay_hover_delay="400" row_shape_top_color="#227bc3" row_shape_top_width="100" row_shape_top_height="100" row_shape_bottom_color="#e44993" row_shape_bottom_width="100" row_shape_bottom_height="100"]
[pl_col pagelayer-id="aF6cze85x0CVnb4I" overlay_hover_delay="400"]
[pl_archive_title pagelayer-id="a6sL2H8c5FJDwHmL" align="left" typo=",,,,,,Solid,,,," ele_margin="0px,0px,18px,0px" font_size="28"]
[/pl_archive_title]
[pl_archive_posts pagelayer-id="CrFuxlpqwrKx1cok" type="default" columns="3" columns_mobile="1" col_gap="20" row_gap="40" data_padding="5,5,5,5" bg_color="#ffffff" show_thumb="true" show_title="true" meta="author,date,comments" meta_sep="|" show_content="excerpt" content_color="#121212" content_align="left" pagination="number_prev_next" thumb_size="medium_large" ratio="0.7" title_color="#0986c0" title_typo=",18,,,,,solid,,,," exc_length="10" pagi_prev_text="Previous" pagi_next_text="Next" pagi_end_size="1" pagi_mid_size="2" pagi_align="center"]
[/pl_archive_posts]
[/pl_col]
[/pl_row]';
$data['single-template'] = '[pl_row pagelayer-id="TeNMIn3gRsvsyDZj" stretch="auto" col_gap="10" width_content="auto" row_height="default" overlay_hover_delay="400" row_shape_top_color="#227bc3" row_shape_top_width="100" row_shape_top_height="100" row_shape_bottom_color="#e44993" row_shape_bottom_width="100" row_shape_bottom_height="100"]
[pl_col pagelayer-id="qyP2XV3ClSd9cEWM" overlay_hover_delay="400"]
[pl_post_title pagelayer-id="nNt87422AXwZoBQg" title_color="" typo=",35,,700,,,solid,,,," align="center"]
[/pl_post_title]
[/pl_col]
[/pl_row]
[pl_row pagelayer-id="6UuOjtSrBDhWOnWG" stretch="auto" col_gap="10" width_content="fixed" row_height="default" overlay_hover_delay="400" row_shape_top_color="#227bc3" row_shape_top_width="100" row_shape_top_height="100" row_shape_bottom_color="#e44993" row_shape_bottom_width="100" row_shape_bottom_height="100" row_width="70%" fixed_width="70%" fixed_width_tablet="85%" fixed_width_mobile="100%"]
[pl_col pagelayer-id="gzGSF2JVwcPcNUk6" overlay_hover_delay="400" col_width="80" col="12"]
[pl_post_info pagelayer-id="gBDuE9nYBu0bIHyv" layout="vertical" space_between="15" align="center" icon_colors="normal" text_colors="normal"]
[pl_post_info_list pagelayer-id="ZMZjpaTiEc9Ien3t" type="author" info_link="true" info_icon_on="true" info_icon="fas fa-user-circle"]
[/pl_post_info_list]
[pl_post_info_list pagelayer-id="xI8gpn9VRfPDkZ0Q" type="date" info_link="true" info_icon_on="true" info_icon="fas fa-calendar-alt" date_format="default"]
[/pl_post_info_list]
[pl_post_info_list pagelayer-id="LaEZYd9SjEnQHsg3" type="time" info_link="true" info_icon_on="true" info_icon="fas fa-clock" time_format="default"]
[/pl_post_info_list]
[pl_post_info_list pagelayer-id="9lTHiEQJQqESt6YG" type="comments" info_link="true" info_icon_on="true" info_icon="fas fa-comment"]
[/pl_post_info_list]
[/pl_post_info]
[pl_post_excerpt pagelayer-id="NklzzZGW3ve1X8BS" ele_margin="15px,0px,15px,0px" align="left"]
[/pl_post_excerpt]
[pl_featured_img pagelayer-id="sZLiICVhGCbBTx1a" size="full" img_filter="0,100,100,0,0,100,100" caption_color="#0986c0" img_hover_delay="400" custom_size="70%,0%" align="center"]
[/pl_featured_img]
[pl_post_content pagelayer-id="7JbkxQEvq0skyUUl" ele_margin="35px,0px,35px,0px" font_size="NaN"]
[/pl_post_content]
[pl_post_info pagelayer-id="tvno5FCIKdwGa8IE" layout="horizontal" space_between="5" align="left" icon_colors="normal" text_colors="normal" input_typo=",,,,,,Solid,,,,"]
[pl_post_info_list pagelayer-id="SwoZ4cxl3XFMLE3l" type="terms" info_link="true" info_icon_on="" info_icon="fas fa-user-circle" taxonomy="category" info_before="Category :"]
[/pl_post_info_list]
[pl_post_info_list pagelayer-id="sgTqNx5LkBHODkrG" type="terms" info_link="true" info_icon_on="" info_icon="fas fa-user-circle" taxonomy="post_tag" info_before="Tags :"]
[/pl_post_info_list]
[/pl_post_info]
[/pl_col]
[/pl_row]
[pl_row pagelayer-id="heO1UxRj8lIQZ52M" stretch="auto" col_gap="10" width_content="auto" row_height="default" overlay_hover_delay="400" row_shape_top_color="#227bc3" row_shape_top_width="100" row_shape_top_height="100" row_shape_bottom_color="#e44993" row_shape_bottom_width="100" row_shape_bottom_height="100"]
[pl_col pagelayer-id="s3sgObVllcHz0CB7" overlay_hover_delay="400"]
[pl_post_nav pagelayer-id="RrRky7duRa9KGmsA" lables="true" post_title="true" arrows="true" sep_color="#bdbdbd" sep_rotate="20" sep_width="5" prev_label="Previous" next_label="Next" label_colors="normal" title_colors="normal" arrows_list="angle" icon_colors="normal"]
[/pl_post_nav]
[/pl_col]
[/pl_row]
[pl_row pagelayer-id="duGtpLrwHkOWbE0m" stretch="auto" col_gap="10" width_content="auto" row_height="default" overlay_hover_delay="400" row_shape_top_color="#227bc3" row_shape_top_width="100" row_shape_top_height="100" row_shape_bottom_color="#e44993" row_shape_bottom_width="100" row_shape_bottom_height="100"]
[pl_col pagelayer-id="ad58IjV6dHjcRBmV" overlay_hover_delay="400"]
[pl_post_comment pagelayer-id="bwueyBxPgdNLC1Ec" comment_skin="theme_comment" post_type="current"]
[/pl_post_comment]
[/pl_col]
[/pl_row]';
$conf = '{
"single-template": {
"type": "single",
"title": "Single Template",
"conditions": [
{
"type": "include",
"template": "singular",
"sub_template": "post",
"id": ""
},
{
"type": "include",
"template": "singular",
"sub_template": "attachment",
"id": ""
}
]
},
"blog-template": {
"type": "archive",
"title": "Blog Template",
"conditions": [
{
"type": "include",
"template": "archives",
"sub_template": "",
"id": ""
}
]
}
}';
$conf = json_decode($conf, true);
foreach($conf as $k => $v){
$v['post_content'] = $data[$k];
$pgl[$k] = $v;
}
}