2018-11-05 08:26:24 +00:00
< ? php
namespace Zotlabs\Theme ;
2025-04-06 09:14:08 +00:00
use ScssPhp\ScssPhp\Compiler ;
use ScssPhp\ScssPhp\OutputStyle ;
2018-11-05 08:26:24 +00:00
class UssrbasicpubConfig {
function get_schemas () {
$files = glob ( 'view/theme/ussrbasicpub/schema/*.php' );
$scheme_choices = [];
if ( $files ) {
if ( in_array ( 'view/theme/ussrbasicpub/schema/default.php' , $files )) {
$scheme_choices [ '---' ] = t ( 'Default' );
$scheme_choices [ 'focus' ] = t ( 'Focus (Hubzilla default)' );
}
else {
$scheme_choices [ '---' ] = t ( 'Focus (Hubzilla default)' );
}
foreach ( $files as $file ) {
$f = basename ( $file , " .php " );
if ( $f != 'default' ) {
$scheme_name = $f ;
$scheme_choices [ $f ] = $scheme_name ;
}
}
}
return $scheme_choices ;
}
function get () {
2021-12-14 18:48:12 +00:00
if ( ! local_channel ()) {
2018-11-05 08:26:24 +00:00
return ;
}
2025-04-06 09:14:08 +00:00
$arr [ 'primary_color' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'primary_color' );
$arr [ 'success_color' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'success_color' );
$arr [ 'info_color' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'info_color' );
$arr [ 'warning_color' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'warning_color' );
$arr [ 'danger_color' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'danger_color' );
2024-02-17 16:00:05 +00:00
$arr [ 'dark_mode' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'dark_mode' );
$arr [ 'navbar_dark_mode' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'navbar_dark_mode' );
2018-11-05 08:26:24 +00:00
$arr [ 'narrow_navbar' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'narrow_navbar' );
$arr [ 'nav_bg' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'nav_bg' );
2024-02-17 16:00:05 +00:00
$arr [ 'nav_bg_dark' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'nav_bg_dark' );
$arr [ 'bgcolor' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'background_color' );
$arr [ 'bgcolor_dark' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'background_color_dark' );
2018-11-05 08:26:24 +00:00
$arr [ 'background_image' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'background_image' );
2024-02-17 16:00:05 +00:00
$arr [ 'background_image_dark' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'background_image_dark' );
2018-11-05 08:26:24 +00:00
$arr [ 'font_size' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'font_size' );
$arr [ 'radius' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'radius' );
$arr [ 'converse_width' ] = get_pconfig ( local_channel (), " ussrbasicpub " , " converse_width " );
$arr [ 'top_photo' ] = get_pconfig ( local_channel (), " ussrbasicpub " , " top_photo " );
$arr [ 'reply_photo' ] = get_pconfig ( local_channel (), " ussrbasicpub " , " reply_photo " );
$arr [ 'advanced_theming' ] = get_pconfig ( local_channel (), 'ussrbasicpub' , 'advanced_theming' );
return $this -> form ( $arr );
}
function post () {
2021-12-14 18:48:12 +00:00
if ( ! local_channel ()) {
2018-11-05 08:26:24 +00:00
return ;
}
if ( isset ( $_POST [ 'ussrbasicpub-settings-submit' ])) {
2025-04-06 09:14:08 +00:00
if ( isset ( $_POST [ 'ussrbasicpub_primary_color' ]) || isset ( $_POST [ 'ussrbasicpub_radius' ])) {
$primary_color = '' ;
$success_color = '' ;
$info_color = '' ;
$warning_color = '' ;
$danger_color = '' ;
$radius = floatval ( $_POST [ 'ussrbasicpub_radius' ]);
if ( preg_match ( '/^#([A-Fa-f0-9]{3}){1,2}$/' , $_POST [ 'ussrbasicpub_primary_color' ])) {
$primary_color = $_POST [ 'ussrbasicpub_primary_color' ];
}
if ( preg_match ( '/^#([A-Fa-f0-9]{3}){1,2}$/' , $_POST [ 'ussrbasicpub_success_color' ])) {
$success_color = $_POST [ 'ussrbasicpub_success_color' ];
}
if ( preg_match ( '/^#([A-Fa-f0-9]{3}){1,2}$/' , $_POST [ 'ussrbasicpub_info_color' ])) {
$info_color = $_POST [ 'ussrbasicpub_info_color' ];
}
if ( preg_match ( '/^#([A-Fa-f0-9]{3}){1,2}$/' , $_POST [ 'ussrbasicpub_warning_color' ])) {
$warning_color = $_POST [ 'ussrbasicpub_warning_color' ];
}
if ( preg_match ( '/^#([A-Fa-f0-9]{3}){1,2}$/' , $_POST [ 'ussrbasicpub_danger_color' ])) {
$danger_color = $_POST [ 'ussrbasicpub_danger_color' ];
}
if ( $primary_color || $success_color || $info_color || $warning_color || $danger_color || $radius ) {
try {
$cache_dir = 'store/[data]/[scss]/' ;
if ( ! is_dir ( $cache_dir )) {
os_mkdir ( $cache_dir , STORAGE_DEFAULT_PERMISSIONS , true );
}
$options = [
'cacheDir' => $cache_dir ,
'prefix' => 'ussrbasicpub_' ,
'forceRefresh' => false
];
$compiler = new Compiler ( $options );
$compiler -> setImportPaths ( 'vendor/twbs/bootstrap/scss' );
$compiler -> setOutputStyle ( OutputStyle :: COMPRESSED );
// Set Variables
if ( $primary_color ) {
$variables [ '$primary' ] = $primary_color ;
}
if ( $success_color ) {
$variables [ '$success' ] = $success_color ;
}
if ( $info_color ) {
$variables [ '$info' ] = $info_color ;
}
if ( $warning_color ) {
$variables [ '$warning' ] = $warning_color ;
}
if ( $danger_color ) {
$variables [ '$danger' ] = $danger_color ;
}
if ( $radius ) {
$variables [ '$border-radius' ] = $radius . 'rem' ;
$variables [ '$border-radius-sm' ] = $radius / 1.5 . 'rem' ;
$variables [ '$border-radius-lg' ] = $radius * 1.333 . 'rem' ;
$variables [ '$border-radius-xl' ] = $radius * 2.666 . 'rem' ;
$variables [ '$border-radius-xxl' ] = $radius * 5.333 . 'rem' ;
}
// Replace Bootstrap Variables with Customizer Variables
$compiler -> replaceVariables ( $variables );
$bs = $compiler -> compileString ( '@import "bootstrap.scss";' );
set_pconfig ( local_channel (), 'ussrbasicpub' , 'bootstrap' , $bs -> getCss ());
} catch ( \Exception $e ) {
logger ( 'scssphp: Unable to compile content' );
}
}
else {
set_pconfig ( local_channel (), 'ussrbasicpub' , 'bootstrap' , '' );
}
}
set_pconfig ( local_channel (), 'ussrbasicpub' , 'primary_color' , $_POST [ 'ussrbasicpub_primary_color' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'success_color' , $_POST [ 'ussrbasicpub_success_color' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'info_color' , $_POST [ 'ussrbasicpub_info_color' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'warning_color' , $_POST [ 'ussrbasicpub_warning_color' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'danger_color' , $_POST [ 'ussrbasicpub_danger_color' ]);
2018-11-05 08:26:24 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'narrow_navbar' , $_POST [ 'ussrbasicpub_narrow_navbar' ]);
2024-02-17 16:00:05 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'navbar_dark_mode' , $_POST [ 'ussrbasicpub_navbar_dark_mode' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'dark_mode' , $_POST [ 'ussrbasicpub_dark_mode' ]);
2018-11-05 08:26:24 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'nav_bg' , $_POST [ 'ussrbasicpub_nav_bg' ]);
2024-02-17 16:00:05 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'nav_bg_dark' , $_POST [ 'ussrbasicpub_nav_bg_dark' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'background_color' , $_POST [ 'ussrbasicpub_background_color' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'background_color_dark' , $_POST [ 'ussrbasicpub_background_color_dark' ]);
2018-11-05 08:26:24 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'background_image' , $_POST [ 'ussrbasicpub_background_image' ]);
2024-02-17 16:00:05 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'background_image_dark' , $_POST [ 'ussrbasicpub_background_image_dark' ]);
2018-11-05 08:26:24 +00:00
set_pconfig ( local_channel (), 'ussrbasicpub' , 'font_size' , $_POST [ 'ussrbasicpub_font_size' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'radius' , $_POST [ 'ussrbasicpub_radius' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'converse_width' , $_POST [ 'ussrbasicpub_converse_width' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'top_photo' , $_POST [ 'ussrbasicpub_top_photo' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'reply_photo' , $_POST [ 'ussrbasicpub_reply_photo' ]);
set_pconfig ( local_channel (), 'ussrbasicpub' , 'advanced_theming' , $_POST [ 'ussrbasicpub_advanced_theming' ]);
2025-04-06 09:14:08 +00:00
// This is used to refresh the cache
set_pconfig ( local_channel (), 'system' , 'style_update' , time ());
2018-11-05 08:26:24 +00:00
}
}
function form ( $arr ) {
2024-02-17 16:00:05 +00:00
$expert = false ;
if ( get_pconfig ( local_channel (), 'ussrbasicpub' , 'advanced_theming' )) {
$expert = true ;
}
2021-12-14 18:48:12 +00:00
2024-02-17 16:00:05 +00:00
$o = replace_macros ( get_markup_template ( 'theme_settings.tpl' ), array (
2018-11-05 08:26:24 +00:00
'$submit' => t ( 'Submit' ),
'$baseurl' => z_root (),
'$theme' => \App :: $channel [ 'channel_theme' ],
'$expert' => $expert ,
'$title' => t ( " Theme settings " ),
2024-02-17 16:00:05 +00:00
'$dark' => t ( 'Dark style' ),
'$light' => t ( 'Light style' ),
'$common' => t ( 'Common settings' ),
2025-04-06 09:14:08 +00:00
'$primary_color' => array ( 'ussrbasicpub_primary_color' , t ( 'Primary theme color' ), $arr [ 'primary_color' ], '<i class="bi bi-circle-fill text-primary"></i> ' . t ( 'Current color, leave empty for default' )),
'$success_color' => array ( 'ussrbasicpub_success_color' , t ( 'Success theme color' ), $arr [ 'success_color' ], '<i class="bi bi-circle-fill text-success"></i> ' . t ( 'Current color, leave empty for default' )),
'$info_color' => array ( 'ussrbasicpub_info_color' , t ( 'Info theme color' ), $arr [ 'info_color' ], '<i class="bi bi-circle-fill text-info"></i> ' . t ( 'Current color, leave empty for default' )),
'$warning_color' => array ( 'ussrbasicpub_warning_color' , t ( 'Warning theme color' ), $arr [ 'warning_color' ], '<i class="bi bi-circle-fill text-warning"></i> ' . t ( 'Current color, leave empty for default' )),
'$danger_color' => array ( 'ussrbasicpub_danger_color' , t ( 'Danger theme color' ), $arr [ 'danger_color' ], '<i class="bi bi-circle-fill text-danger"></i> ' . t ( 'Current color, leave empty for default' )),
2024-02-17 16:00:05 +00:00
'$dark_mode' => array ( 'ussrbasicpub_dark_mode' , t ( 'Default to dark mode' ), $arr [ 'dark_mode' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
'$navbar_dark_mode' => array ( 'ussrbasicpub_navbar_dark_mode' , t ( 'Always use light icons for navbar' ), $arr [ 'navbar_dark_mode' ], t ( 'Enable this option if you use a dark navbar color in light mode' ), array ( t ( 'No' ), t ( 'Yes' ))),
2018-11-05 08:26:24 +00:00
'$narrow_navbar' => array ( 'ussrbasicpub_narrow_navbar' , t ( 'Narrow navbar' ), $arr [ 'narrow_navbar' ], '' , array ( t ( 'No' ), t ( 'Yes' ))),
'$nav_bg' => array ( 'ussrbasicpub_nav_bg' , t ( 'Navigation bar background color' ), $arr [ 'nav_bg' ]),
2024-02-17 16:00:05 +00:00
'$nav_bg_dark' => array ( 'ussrbasicpub_nav_bg_dark' , t ( 'Dark navigation bar background color' ), $arr [ 'nav_bg_dark' ]),
'$bgcolor' => array ( 'ussrbasicpub_background_color' , t ( 'Set the background color' ), $arr [ 'bgcolor' ]),
'$bgcolor_dark' => array ( 'ussrbasicpub_background_color_dark' , t ( 'Set the dark background color' ), $arr [ 'bgcolor_dark' ]),
2021-12-14 18:48:12 +00:00
'$background_image' => array ( 'ussrbasicpub_background_image' , t ( 'Set the background image' ), $arr [ 'background_image' ]),
2024-02-17 16:00:05 +00:00
'$background_image_dark' => array ( 'ussrbasicpub_background_image_dark' , t ( 'Set the dark background image' ), $arr [ 'background_image_dark' ]),
2018-11-05 08:26:24 +00:00
'$font_size' => array ( 'ussrbasicpub_font_size' , t ( 'Set font-size for the entire application' ), $arr [ 'font_size' ], t ( 'Examples: 1rem, 100%, 16px' )),
2025-04-06 09:14:08 +00:00
'$radius' => array ( 'ussrbasicpub_radius' , t ( 'Set radius of corners in rem' ), $arr [ 'radius' ], t ( 'Leave empty for default radius' )),
2021-12-14 18:48:12 +00:00
'$converse_width' => array ( 'ussrbasicpub_converse_width' , t ( 'Set maximum width of content region in rem' ), $arr [ 'converse_width' ], t ( 'Leave empty for default width' )),
2025-04-06 09:14:08 +00:00
'$top_photo' => array ( 'ussrbasicpub_top_photo' , t ( 'Set size of conversation author photo' ), $arr [ 'top_photo' ], t ( 'Leave empty for default size' )),
'$reply_photo' => array ( 'ussrbasicpub_reply_photo' , t ( 'Set size of followup author photos' ), $arr [ 'reply_photo' ], t ( 'Leave empty for default size' )),
2018-11-05 08:26:24 +00:00
'$advanced_theming' => [ 'ussrbasicpub_advanced_theming' , t ( 'Show advanced settings' ), $arr [ 'advanced_theming' ], '' , [ t ( 'No' ), t ( 'Yes' )]]
));
return $o ;
}
}
2024-02-17 16:00:05 +00:00
function ussrbasicpub_theme_admin_enable () {
// This function is called once when the theme is being enabled by the admin
// It can be used to register hooks etc.
}
2018-11-05 08:26:24 +00:00
2024-02-17 16:00:05 +00:00
function ussrbasicpub_theme_admin_disable () {
// This function is called once when the theme is being disabled by the admin
// It can be used to unregister hooks etc.
}
2018-11-05 08:26:24 +00:00