2016-03-28 14:29:05 +00:00
< ? php
2020-02-09 15:34:23 +00:00
/**
2024-08-24 10:20:23 +00:00
* Copyright ( C ) 2010 - 2024 , the Friendica project
* SPDX - FileCopyrightText : 2010 - 2024 the Friendica project
2020-02-09 15:34:23 +00:00
*
2024-08-24 10:20:23 +00:00
* SPDX - License - Identifier : AGPL - 3.0 - or - later
2020-02-09 15:34:23 +00:00
*
*/
2017-04-30 04:07:00 +00:00
2024-11-10 23:53:03 +00:00
use Friendica\AppHelper ;
2024-11-10 22:54:13 +00:00
use Friendica\Content\ContactSelector ;
2018-10-31 14:35:50 +00:00
use Friendica\Core\Renderer ;
2020-01-18 15:50:57 +00:00
use Friendica\DI ;
2017-04-30 04:07:00 +00:00
2018-01-22 12:29:50 +00:00
require_once 'view/theme/frio/php/Image.php' ;
2024-02-29 14:17:09 +00:00
require_once 'view/theme/frio/php/scheme.php' ;
2016-03-28 14:29:05 +00:00
2024-11-10 23:53:03 +00:00
function theme_post ( AppHelper $appHelper )
2018-04-25 00:05:20 +00:00
{
2022-10-20 21:45:14 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2016-12-20 10:56:34 +00:00
return ;
}
2016-03-28 14:29:05 +00:00
2024-11-10 22:54:13 +00:00
$previous_scheme = DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'scheme' );
2017-10-23 13:16:23 +00:00
if ( isset ( $_POST [ 'frio-settings-submit' ])) {
2020-08-15 23:29:51 +00:00
foreach ([
'scheme' ,
2020-08-20 02:58:00 +00:00
'scheme_accent' ,
2020-08-15 23:29:51 +00:00
'nav_bg' ,
'nav_icon_color' ,
'link_color' ,
'background_color' ,
'contentbg_transp' ,
'background_image' ,
'bg_image_option' ,
'login_bg_image' ,
2022-10-16 15:24:50 +00:00
'login_bg_color' ,
2022-10-16 15:49:27 +00:00
'always_open_compose' ,
2020-08-15 23:29:51 +00:00
] as $field ) {
if ( isset ( $_POST [ 'frio_' . $field ])) {
2022-10-20 21:45:14 +00:00
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'frio' , $field , $_POST [ 'frio_' . $field ]);
2020-08-15 23:29:51 +00:00
}
}
2022-10-20 21:45:14 +00:00
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'frio' , 'css_modified' , time ());
2024-11-10 22:54:13 +00:00
$current_scheme = DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'scheme' );
if ( $previous_scheme != $current_scheme ) {
$icon_style = DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'accessibility' , 'platform_icon_style' );
if ( in_array ( $current_scheme , [ 'dark' , 'black' ]) && in_array ( $icon_style , [ ContactSelector :: SVG_BLACK ])) {
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'accessibility' , 'platform_icon_style' , ContactSelector :: SVG_WHITE );
} elseif ( in_array ( $current_scheme , [ 'dark' , 'black' ]) && in_array ( $icon_style , [ ContactSelector :: SVG_COLOR_BLACK ])) {
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'accessibility' , 'platform_icon_style' , ContactSelector :: SVG_COLOR_WHITE );
} elseif ( in_array ( $current_scheme , [ 'light' ]) && in_array ( $icon_style , [ ContactSelector :: SVG_WHITE ])) {
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'accessibility' , 'platform_icon_style' , ContactSelector :: SVG_BLACK );
} elseif ( in_array ( $current_scheme , [ 'light' ]) && in_array ( $icon_style , [ ContactSelector :: SVG_COLOR_WHITE ])) {
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'accessibility' , 'platform_icon_style' , ContactSelector :: SVG_COLOR_BLACK );
}
}
2017-10-23 13:16:23 +00:00
}
2016-03-28 14:29:05 +00:00
}
2024-05-14 08:37:10 +00:00
function theme_admin_post ()
2018-04-25 00:05:20 +00:00
{
2024-05-14 08:37:10 +00:00
if ( ! DI :: userSession () -> isSiteAdmin ()) {
2017-10-23 18:26:31 +00:00
return ;
}
if ( isset ( $_POST [ 'frio-settings-submit' ])) {
2020-08-15 23:29:51 +00:00
foreach ([
'scheme' ,
2020-08-20 02:58:00 +00:00
'scheme_accent' ,
2020-08-15 23:29:51 +00:00
'nav_bg' ,
'nav_icon_color' ,
'link_color' ,
'background_color' ,
'contentbg_transp' ,
'background_image' ,
'bg_image_option' ,
'login_bg_image' ,
2022-10-16 15:24:50 +00:00
'login_bg_color' ,
2022-10-16 15:49:27 +00:00
'always_open_compose' ,
2020-08-15 23:29:51 +00:00
] as $field ) {
if ( isset ( $_POST [ 'frio_' . $field ])) {
DI :: config () -> set ( 'frio' , $field , $_POST [ 'frio_' . $field ]);
}
}
2020-01-19 20:21:53 +00:00
DI :: config () -> set ( 'frio' , 'css_modified' , time ());
2017-10-23 18:26:31 +00:00
}
}
2024-11-18 22:28:35 +00:00
function theme_content ( AppHelper $appHelper ) : string
2018-04-25 00:05:20 +00:00
{
2022-10-20 21:45:14 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2022-10-16 15:24:50 +00:00
return '' ;
2016-12-20 10:56:34 +00:00
}
2019-07-18 03:08:56 +00:00
2022-10-16 15:24:50 +00:00
$arr = [
2024-02-29 14:17:09 +00:00
'scheme' => frio_scheme_get_current_for_user ( DI :: userSession () -> getLocalUserId ()),
2022-10-16 15:24:50 +00:00
'share_string' => '' ,
2022-10-20 21:45:14 +00:00
'scheme_accent' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'scheme_accent' , DI :: config () -> get ( 'frio' , 'scheme_accent' )),
'nav_bg' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'nav_bg' , DI :: config () -> get ( 'frio' , 'nav_bg' )),
'nav_icon_color' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'nav_icon_color' , DI :: config () -> get ( 'frio' , 'nav_icon_color' )),
'link_color' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'link_color' , DI :: config () -> get ( 'frio' , 'link_color' )),
'background_color' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'background_color' , DI :: config () -> get ( 'frio' , 'background_color' )),
'contentbg_transp' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'contentbg_transp' , DI :: config () -> get ( 'frio' , 'contentbg_transp' )),
'background_image' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'background_image' , DI :: config () -> get ( 'frio' , 'background_image' )),
'bg_image_option' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'bg_image_option' , DI :: config () -> get ( 'frio' , 'bg_image_option' )),
'always_open_compose' => DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'frio' , 'always_open_compose' , DI :: config () -> get ( 'frio' , 'always_open_compose' , false )),
2022-10-16 15:24:50 +00:00
];
2017-10-23 13:16:23 +00:00
return frio_form ( $arr );
2016-03-28 14:29:05 +00:00
}
2024-11-18 22:28:35 +00:00
function theme_admin ( AppHelper $appHelper ) : string
2018-04-25 00:05:20 +00:00
{
2022-10-20 21:45:14 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2022-10-16 15:24:50 +00:00
return '' ;
2017-10-23 18:26:31 +00:00
}
2022-10-16 15:24:50 +00:00
$arr = [
2024-02-29 14:17:09 +00:00
'scheme' => frio_scheme_get_current (),
'scheme_accent' => DI :: config () -> get ( 'frio' , 'scheme_accent' ) ? : FRIO_SCHEME_ACCENT_BLUE ,
2022-10-16 15:24:50 +00:00
'share_string' => '' ,
'nav_bg' => DI :: config () -> get ( 'frio' , 'nav_bg' ),
'nav_icon_color' => DI :: config () -> get ( 'frio' , 'nav_icon_color' ),
'link_color' => DI :: config () -> get ( 'frio' , 'link_color' ),
'background_color' => DI :: config () -> get ( 'frio' , 'background_color' ),
'contentbg_transp' => DI :: config () -> get ( 'frio' , 'contentbg_transp' ),
'background_image' => DI :: config () -> get ( 'frio' , 'background_image' ),
'bg_image_option' => DI :: config () -> get ( 'frio' , 'bg_image_option' ),
'login_bg_image' => DI :: config () -> get ( 'frio' , 'login_bg_image' ),
'login_bg_color' => DI :: config () -> get ( 'frio' , 'login_bg_color' ),
2022-10-16 15:49:27 +00:00
'always_open_compose' => DI :: config () -> get ( 'frio' , 'always_open_compose' , false ),
2022-10-16 15:24:50 +00:00
];
2017-10-23 18:26:31 +00:00
return frio_form ( $arr );
}
2017-10-23 13:16:23 +00:00
2018-04-25 00:05:20 +00:00
function frio_form ( $arr )
{
2018-04-25 00:26:14 +00:00
require_once 'view/theme/frio/php/scheme.php' ;
2020-08-20 02:54:12 +00:00
require_once 'view/theme/frio/theme.php' ;
2017-01-09 12:06:08 +00:00
2018-04-25 00:26:14 +00:00
$scheme_info = get_scheme_info ( $arr [ 'scheme' ]);
2018-04-25 00:12:43 +00:00
$disable = $scheme_info [ 'overwrites' ];
2016-04-28 23:49:09 +00:00
2020-01-18 19:52:34 +00:00
$background_image_help = '<strong>' . DI :: l10n () -> t ( 'Note' ) . ': </strong>' . DI :: l10n () -> t ( 'Check image permissions if all users are allowed to see the image' );
2016-03-28 14:29:05 +00:00
2018-10-31 14:44:06 +00:00
$t = Renderer :: getMarkupTemplate ( 'theme_settings.tpl' );
2018-01-15 13:05:12 +00:00
$ctx = [
2020-01-18 19:52:34 +00:00
'$submit' => DI :: l10n () -> t ( 'Submit' ),
'$title' => DI :: l10n () -> t ( 'Theme settings' ),
2024-02-29 14:17:09 +00:00
'$scheme' => [ 'frio_scheme' , DI :: l10n () -> t ( 'Appearance' ), $arr [ 'scheme' ], frio_scheme_get_list ()],
'$scheme_accent' => ! $scheme_info [ 'accented' ] ? '' : [ 'frio_scheme_accent' , DI :: l10n () -> t ( 'Accent color' ), $arr [ 'scheme_accent' ], [ 'blue' => DI :: l10n () -> t ( 'Blue' ), 'red' => DI :: l10n () -> t ( 'Red' ), 'purple' => DI :: l10n () -> t ( 'Purple' ), 'green' => DI :: l10n () -> t ( 'Green' ), 'pink' => DI :: l10n () -> t ( 'Pink' )]],
'$share_string' => $arr [ 'scheme' ] != FRIO_CUSTOM_SCHEME ? '' : [ 'frio_share_string' , DI :: l10n () -> t ( 'Copy or paste schemestring' ), $arr [ 'share_string' ], DI :: l10n () -> t ( 'You can copy this string to share your theme with others. Pasting here applies the schemestring' ), false , false ],
2020-01-18 19:52:34 +00:00
'$nav_bg' => array_key_exists ( 'nav_bg' , $disable ) ? '' : [ 'frio_nav_bg' , DI :: l10n () -> t ( 'Navigation bar background color' ), $arr [ 'nav_bg' ], '' , false ],
'$nav_icon_color' => array_key_exists ( 'nav_icon_color' , $disable ) ? '' : [ 'frio_nav_icon_color' , DI :: l10n () -> t ( 'Navigation bar icon color ' ), $arr [ 'nav_icon_color' ], '' , false ],
'$link_color' => array_key_exists ( 'link_color' , $disable ) ? '' : [ 'frio_link_color' , DI :: l10n () -> t ( 'Link color' ), $arr [ 'link_color' ], '' , false ],
'$background_color' => array_key_exists ( 'background_color' , $disable ) ? '' : [ 'frio_background_color' , DI :: l10n () -> t ( 'Set the background color' ), $arr [ 'background_color' ], '' , false ],
2020-08-15 23:36:24 +00:00
'$contentbg_transp' => array_key_exists ( 'contentbg_transp' , $disable ) ? '' : [ 'frio_contentbg_transp' , DI :: l10n () -> t ( 'Content background opacity' ), $arr [ 'contentbg_transp' ] ? ? 100 , '' ],
2020-01-18 19:52:34 +00:00
'$background_image' => array_key_exists ( 'background_image' , $disable ) ? '' : [ 'frio_background_image' , DI :: l10n () -> t ( 'Set the background image' ), $arr [ 'background_image' ], $background_image_help , false ],
'$bg_image_options_title' => DI :: l10n () -> t ( 'Background image style' ),
2017-10-23 13:16:23 +00:00
'$bg_image_options' => Image :: get_options ( $arr ),
2022-10-16 15:49:27 +00:00
'$always_open_compose' => [ 'frio_always_open_compose' , DI :: l10n () -> t ( 'Always open Compose page' ), $arr [ 'always_open_compose' ], DI :: l10n () -> t ( 'The New Post button always open the <a href="/compose">Compose page</a> instead of the modal form. When this is disabled, the Compose page can be accessed with a middle click on the link or from the modal.' )],
2018-01-15 13:05:12 +00:00
];
2018-01-14 18:19:24 +00:00
2018-04-25 00:12:43 +00:00
if ( array_key_exists ( 'login_bg_image' , $arr ) && ! array_key_exists ( 'login_bg_image' , $disable )) {
2020-01-18 19:52:34 +00:00
$ctx [ '$login_bg_image' ] = [ 'frio_login_bg_image' , DI :: l10n () -> t ( 'Login page background image' ), $arr [ 'login_bg_image' ], $background_image_help , false ];
2018-01-17 15:33:27 +00:00
}
2018-04-25 00:12:43 +00:00
if ( array_key_exists ( 'login_bg_color' , $arr ) && ! array_key_exists ( 'login_bg_color' , $disable )) {
2020-01-18 19:52:34 +00:00
$ctx [ '$login_bg_color' ] = [ 'frio_login_bg_color' , DI :: l10n () -> t ( 'Login page background color' ), $arr [ 'login_bg_color' ], DI :: l10n () -> t ( 'Leave background image and color empty for theme defaults' ), false ];
2018-04-25 00:05:20 +00:00
}
2018-01-14 18:19:24 +00:00
2022-10-16 15:24:50 +00:00
return Renderer :: replaceMacros ( $t , $ctx );
2016-03-28 14:29:05 +00:00
}