Sindbad~EG File Manager
<?php
namespace Blocksy;
class ThemeDynamicCss {
private $allow_styles_for_customize_preview = false;
public function get_css_version() {
return 6;
}
public function __construct() {
add_action('customize_save_after', function () {
do_action('blocksy:dynamic-css:refresh-caches');
});
add_action('blocksy:dynamic-css:refresh-caches', function () {
$this->maybe_set_global_styles_descriptor();
});
add_filter(
'customize_render_partials_response',
function ($response, $obj, $partials) {
$this->allow_styles_for_customize_preview = true;
$css_output = blocksy_get_all_dynamic_styles_for([
'context' => 'inline'
]);
$css = $css_output['css'];
$tablet_css = $css_output['tablet_css'];
$mobile_css = $css_output['mobile_css'];
blocksy_theme_get_dynamic_styles([
'name' => 'global-inline',
'css' => $css,
'mobile_css' => $mobile_css,
'tablet_css' => $tablet_css,
'context' => 'inline',
'chunk' => 'inline',
'forced_call' => true
]);
$desktop_css = $css->build_css_structure();
$tablet_css = $tablet_css->build_css_structure();
$mobile_css = $mobile_css->build_css_structure();
if (is_singular()) {
$single_styles_descriptor = $this->maybe_get_single_post_styles_descriptor();
if ($single_styles_descriptor) {
$desktop_css .= $single_styles_descriptor['styles']['desktop'];
$tablet_css .= $single_styles_descriptor['styles']['tablet'];
$mobile_css .= $single_styles_descriptor['styles']['mobile'];
}
}
$final_css = '';
if (! empty($desktop_css)) {
$final_css .= $desktop_css;
}
if (! empty(trim($tablet_css))) {
$final_css .= '@media (max-width: 999.98px) {' . $tablet_css . '}';
}
if (! empty(trim($mobile_css))) {
$final_css .= '@media (max-width: 689.98px) {' . $mobile_css . '}';
}
$response['ct_dynamic_css'] = $final_css;
$this->allow_styles_for_customize_preview = true;
return $response;
},
10, 3
);
add_action('wp_print_scripts', function () {
if (! is_admin()) {
return;
}
if (
function_exists('get_current_screen')
&&
get_current_screen()
&&
get_current_screen()->is_block_editor()
&&
get_current_screen()->base === 'post'
) {
return;
}
$this->load_backend_dynamic_css();
});
}
public function is_customize_preview() {
return $this->allow_styles_for_customize_preview;
}
public function load_frontend_css($args = []) {
$args = wp_parse_args($args, [
'descriptor' => null
]);
if (! $args['descriptor']) {
return;
}
$descriptor = $args['descriptor'];
$no_script_url = get_template_directory_uri() . '/static/bundle/no-scripts.min.css';
echo "<noscript><link rel='stylesheet' href='" . $no_script_url . "' type='text/css'></noscript>\n";
$final_css = '';
if (! empty($descriptor['styles']['desktop'])) {
$final_css .= $descriptor['styles']['desktop'];
}
if (! empty(trim($descriptor['styles']['tablet']))) {
$final_css .= '@media (max-width: 999.98px) {' . $descriptor['styles']['tablet'] . '}';
}
if (! empty(trim($descriptor['styles']['mobile']))) {
$final_css .= '@media (max-width: 689.98px) {' . $descriptor['styles']['mobile'] . '}';
}
if (! empty($final_css)) {
/**
* Note to code reviewers: This line doesn't need to be escaped.
* The variable used here has the value escaped properly.
*/
echo '<style id="ct-main-styles-inline-css">';
echo $final_css;
echo "</style>\n";
}
}
public function get_dynamic_styles_descriptor() {
$google_fonts = [];
$styles = [
'desktop' => '',
'tablet' => '',
'mobile' => ''
];
// Global Styles
$global_styles_descriptor = $this->maybe_get_global_styles_descriptor();
if ($global_styles_descriptor['styles']) {
$styles['desktop'] .= $global_styles_descriptor['styles']['desktop'];
$styles['tablet'] .= $global_styles_descriptor['styles']['tablet'];
$styles['mobile'] .= $global_styles_descriptor['styles']['mobile'];
}
$google_fonts = $global_styles_descriptor['google_fonts'];
// Inline styles
$css = new \Blocksy_Css_Injector();
$tablet_css = new \Blocksy_Css_Injector();
$mobile_css = new \Blocksy_Css_Injector();
blocksy_theme_get_dynamic_styles([
'name' => 'global-inline',
'css' => $css,
'mobile_css' => $mobile_css,
'tablet_css' => $tablet_css,
'context' => 'inline',
'chunk' => 'inline',
'forced_call' => true
]);
$styles['desktop'] .= $css->build_css_structure();
$styles['tablet'] .= $tablet_css->build_css_structure();
$styles['mobile'] .= $mobile_css->build_css_structure();
// Metabox
if (is_singular()) {
$single_styles_descriptor = $this->maybe_get_single_post_styles_descriptor();
if ($single_styles_descriptor) {
$styles['desktop'] .= $single_styles_descriptor['styles']['desktop'];
$styles['tablet'] .= $single_styles_descriptor['styles']['tablet'];
$styles['mobile'] .= $single_styles_descriptor['styles']['mobile'];
if (isset($single_styles_descriptor['google_fonts'])) {
foreach ($single_styles_descriptor['google_fonts'] as $single_gf => $v) {
foreach ($v as $variation) {
if (! isset($google_fonts[$single_gf])) {
$google_fonts[$single_gf] = [$variation];
} else {
$google_fonts[$single_gf][] = $variation;
}
$google_fonts[$single_gf] = array_unique(
$google_fonts[$single_gf]
);
}
}
}
}
}
return [
'google_fonts' => $google_fonts,
'styles' => $styles
];
}
public function maybe_get_single_post_styles_descriptor() {
$post_atts = blocksy_get_post_options();
$post_id = get_the_ID();
if (! is_array($post_atts)) {
$post_atts = [];
}
$styles_descriptor = blocksy_akg('styles_descriptor', $post_atts, null);
$current_saved_version = $this->get_css_version();
if ($styles_descriptor && isset($styles_descriptor['version'])) {
$current_saved_version = intval($styles_descriptor['version']);
}
if ($current_saved_version !== $this->get_css_version()) {
$styles_descriptor = $this->maybe_set_single_post_styles_descriptor([
'post_id' => $post_id,
'atts' => $post_atts,
'force_persist' => $current_saved_version > 1
]);
if ($styles_descriptor) {
$post_atts['styles_descriptor'] = $styles_descriptor;
}
if (! empty($post_atts)) {
update_post_meta(
$post_id,
'blocksy_post_meta_options',
$post_atts
);
}
}
return $styles_descriptor;
}
public function maybe_set_single_post_styles_descriptor($args = []) {
$args = wp_parse_args($args, [
'post_id' => null,
'atts' => [],
'force_persist' => false
]);
$descriptor = [
'styles' => [
'desktop' => '',
'tablet' => '',
'mobile' => ''
],
'google_fonts' => []
];
$m = new FontsManager();
$css = new \Blocksy_Css_Injector([
'fonts_manager' => $m
]);
$tablet_css = new \Blocksy_Css_Injector([
'fonts_manager' => $m
]);
$mobile_css = new \Blocksy_Css_Injector([
'fonts_manager' => $m
]);
$post_type = get_post_type($args['post_id']);
blocksy_theme_get_dynamic_styles([
'name' => 'singular',
'css' => $css,
'mobile_css' => $mobile_css,
'tablet_css' => $tablet_css,
'context' => 'inline',
'chunk' => 'inline',
'forced_call' => true,
'atts' => $args['atts'],
'post_id' => $args['post_id'],
'post_type' => $post_type,
'prefix' => blocksy_manager()->screen->get_admin_prefix($post_type)
]);
$descriptor['styles']['desktop'] .= trim($css->build_css_structure());
$descriptor['styles']['tablet'] .= trim(
$tablet_css->build_css_structure()
);
$descriptor['styles']['mobile'] .= trim(
$mobile_css->build_css_structure()
);
$descriptor['google_fonts'] = $m->get_matching_google_fonts();
$descriptor['version'] = $this->get_css_version();
return $descriptor;
}
public function maybe_get_global_styles_descriptor() {
$global_styles_descriptor = get_transient(
'blocksy_dynamic_styles_descriptor'
);
$has_files = blocksy_has_css_in_files();
$doing_debug = false;
if (is_customize_preview()) {
$this->allow_styles_for_customize_preview = true;
$doing_debug = true;
}
if ($doing_debug) {
$result = $this->maybe_set_global_styles_descriptor();
$this->allow_styles_for_customize_preview = false;
return $result;
}
if ($global_styles_descriptor !== false) {
if (! is_array($global_styles_descriptor)) {
$global_styles_descriptor = [];
}
if ($has_files) {
$global_styles_descriptor['styles'] = null;
return $global_styles_descriptor;
}
if (
! $has_files
&&
$global_styles_descriptor['styles']
) {
return $global_styles_descriptor;
}
}
return $this->maybe_set_global_styles_descriptor();
}
public function maybe_set_global_styles_descriptor() {
$global_styles_descriptor = [
'google_fonts' => [],
'styles' => null
];
$m = new FontsManager();
$inline_styles = blocksy_get_all_dynamic_styles_for([
'context' => 'global',
'fonts_manager' => $m
]);
if (! blocksy_has_css_in_files()) {
$global_styles_descriptor['styles'] = [
'desktop' => '',
'tablet' => '',
'mobile' => ''
];
$global_styles_descriptor['styles']['desktop'] .= trim(
$inline_styles['css']->build_css_structure()
);
$global_styles_descriptor['styles']['tablet'] .= trim(
$inline_styles['tablet_css']->build_css_structure()
);
$global_styles_descriptor['styles']['mobile'] .= trim(
$inline_styles['mobile_css']->build_css_structure()
);
}
$global_styles_descriptor['google_fonts'] = $m->get_matching_google_fonts();
set_transient(
'blocksy_dynamic_styles_descriptor',
$global_styles_descriptor,
12 * MONTH_IN_SECONDS
);
return $global_styles_descriptor;
}
public function load_backend_dynamic_css($args = []) {
$args = wp_parse_args($args, [
'echo' => true,
'filename' => 'admin-global'
]);
$css = new \Blocksy_Css_Injector();
$tablet_css = new \Blocksy_Css_Injector();
$mobile_css = new \Blocksy_Css_Injector();
blocksy_theme_get_dynamic_styles([
'name' => $args['filename'],
'css' => $css,
'tablet_css' => $tablet_css,
'mobile_css' => $mobile_css,
'context' => 'inline',
'chunk' => 'admin'
]);
$all_global_css = trim($css->build_css_structure());
$all_tablet_css = trim($tablet_css->build_css_structure());
$all_mobile_css = trim($mobile_css->build_css_structure());
if (empty($all_global_css)) {
return;
}
$css = $all_global_css;
if (! empty($all_tablet_css)) {
$css .= "\n@media (max-width: 800px) {\n";
$css .= $all_tablet_css;
$css .= "}\n";
}
if (! empty($all_mobile_css)) {
$css .= "\n@media (max-width: 370px) {\n";
$css .= $all_mobile_css;
$css .= "}\n";
}
if ($args['echo']) {
echo '<style id="ct-main-styles-inline-css">';
echo $css;
echo "</style>\n";
}
return $css;
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists