2011-09-25 08:56:03 +00:00
< ? php
/**
* Name : Impressum
2018-01-20 13:57:41 +00:00
* Description : Addon to add contact information to the about page ( / friendica )
2013-06-24 10:42:41 +00:00
* Version : 1.3
2013-06-14 17:40:10 +00:00
* Author : Tobias Diekershoff < https :// f . diekershoff . de / profile / tobias >
2011-09-25 08:56:03 +00:00
* License : 3 - clause BSD license
*/
2018-02-15 02:43:40 +00:00
use Friendica\Content\Text\BBCode ;
2018-12-26 07:28:16 +00:00
use Friendica\Core\Hook ;
2018-10-29 23:40:18 +00:00
use Friendica\Core\Logger ;
2018-10-31 14:55:15 +00:00
use Friendica\Core\Renderer ;
2019-12-15 23:28:30 +00:00
use Friendica\DI ;
2023-01-01 19:21:56 +00:00
use Friendica\Core\Config\Util\ConfigFileManager ;
2023-07-16 10:37:33 +00:00
use Friendica\Model\User ;
2017-11-06 23:55:24 +00:00
2022-06-23 05:16:22 +00:00
function impressum_install ()
{
2018-12-26 07:28:16 +00:00
Hook :: register ( 'load_config' , 'addon/impressum/impressum.php' , 'impressum_load_config' );
2022-06-23 05:16:22 +00:00
Hook :: register ( 'about_hook' , 'addon/impressum/impressum.php' , 'impressum_show' );
Hook :: register ( 'page_end' , 'addon/impressum/impressum.php' , 'impressum_footer' );
Logger :: notice ( " installed impressum Addon " );
2011-09-25 08:56:03 +00:00
}
2022-06-24 21:27:58 +00:00
/**
* This is a statement rather than an actual function definition . The simple
* existence of this method is checked to figure out if the addon offers a
* module .
*/
function impressum_module () {}
2022-06-23 05:16:22 +00:00
function impressum_content ()
{
DI :: baseUrl () -> redirect ( 'friendica/' );
2013-06-24 10:41:08 +00:00
}
2022-06-23 05:16:22 +00:00
function obfuscate_email ( string $s ) : string
{
$s = str_replace ( '@' , '(at)' , $s );
$s = str_replace ( '.' , '(dot)' , $s );
return $s ;
2011-09-25 08:56:03 +00:00
}
2022-06-23 05:16:22 +00:00
2023-01-14 02:16:09 +00:00
function impressum_footer ( string & $body )
2022-06-23 05:16:22 +00:00
{
2023-07-16 10:37:33 +00:00
$text = BBCode :: convertForUriId ( User :: getSystemUriId (), DI :: config () -> get ( 'impressum' , 'footer_text' ));
2022-06-23 05:16:22 +00:00
2022-06-24 21:34:04 +00:00
if ( $text != '' ) {
2023-02-18 19:57:09 +00:00
DI :: page ()[ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . DI :: baseUrl () . '/addon/impressum/impressum.css" media="all" />' ;
2022-06-23 05:42:22 +00:00
$body .= '<div class="clear"></div>' ;
2022-06-24 21:34:04 +00:00
$body .= '<div id="impressum_footer">' . $text . '</div>' ;
2022-06-23 05:16:22 +00:00
}
2012-04-06 12:34:47 +00:00
}
2018-06-28 03:13:20 +00:00
2023-01-14 02:16:09 +00:00
function impressum_load_config ( ConfigFileManager $loader )
2018-06-28 03:13:20 +00:00
{
2024-12-11 21:47:10 +00:00
DI :: appHelper () -> getConfigCache () -> load ( $loader -> loadAddonConfig ( 'impressum' ), \Friendica\Core\Config\ValueObject\Cache :: SOURCE_STATIC );
2018-06-28 03:13:20 +00:00
}
2023-01-14 02:16:09 +00:00
function impressum_show ( string & $body )
2022-06-23 05:16:22 +00:00
{
2023-01-11 14:09:59 +00:00
$body .= '<h3>' . DI :: l10n () -> t ( 'Impressum' ) . '</h3>' ;
$owner = DI :: config () -> get ( 'impressum' , 'owner' );
2022-06-23 05:16:22 +00:00
$owner_profile = DI :: config () -> get ( 'impressum' , 'ownerprofile' );
2023-07-16 10:37:33 +00:00
$postal = BBCode :: convertForUriId ( User :: getSystemUriId (), DI :: config () -> get ( 'impressum' , 'postal' ));
$notes = BBCode :: convertForUriId ( User :: getSystemUriId (), DI :: config () -> get ( 'impressum' , 'notes' ));
2022-06-23 05:16:22 +00:00
2023-01-11 14:09:59 +00:00
if ( $owner ) {
if ( $owner_profile ) {
2022-06-23 05:16:22 +00:00
$tmp = '<a href="' . $owner_profile . '">' . $owner . '</a>' ;
} else {
$tmp = $owner ;
}
2023-01-11 14:09:59 +00:00
if ( $email = DI :: config () -> get ( 'impressum' , 'email' )) {
$body .= '<p><strong>' . DI :: l10n () -> t ( 'Site Owner' ) . '</strong>: ' . $tmp . '<br /><strong>' . DI :: l10n () -> t ( 'Email Address' ) . '</strong>: ' . obfuscate_email ( $email ) . '</p>' ;
2022-06-23 05:16:22 +00:00
} else {
2022-06-23 05:42:22 +00:00
$body .= '<p><strong>' . DI :: l10n () -> t ( 'Site Owner' ) . '</strong>: ' . $tmp . '</p>' ;
2022-06-23 05:16:22 +00:00
}
2023-01-11 14:09:59 +00:00
if ( $postal ) {
2022-06-23 05:42:22 +00:00
$body .= '<p><strong>' . DI :: l10n () -> t ( 'Postal Address' ) . '</strong><br />' . $postal . '</p>' ;
2022-06-23 05:16:22 +00:00
}
2023-01-11 14:09:59 +00:00
if ( $notes ) {
2022-06-23 05:42:22 +00:00
$body .= '<p>' . $notes . '</p>' ;
2022-06-23 05:16:22 +00:00
}
} else {
2022-06-23 05:42:22 +00:00
$body .= '<p>' . DI :: l10n () -> t ( 'The impressum addon needs to be configured!<br />Please add at least the <tt>owner</tt> variable to your config file. For other variables please refer to the README file of the addon.' ) . '</p>' ;
2022-06-23 05:16:22 +00:00
}
2011-09-25 08:56:03 +00:00
}
2023-01-14 02:16:09 +00:00
function impressum_addon_admin_post ()
2022-06-23 05:16:22 +00:00
{
2022-06-30 11:32:13 +00:00
DI :: config () -> set ( 'impressum' , 'owner' , strip_tags ( trim ( $_POST [ 'owner' ] ? ? '' )));
DI :: config () -> set ( 'impressum' , 'ownerprofile' , strip_tags ( trim ( $_POST [ 'ownerprofile' ] ? ? '' )));
DI :: config () -> set ( 'impressum' , 'postal' , strip_tags ( trim ( $_POST [ 'postal' ] ? ? '' )));
2022-10-15 15:49:28 +00:00
DI :: config () -> set ( 'impressum' , 'email' , strip_tags ( trim ( $_POST [ 'email' ] ? ? '' )));
DI :: config () -> set ( 'impressum' , 'notes' , strip_tags ( trim ( $_POST [ 'notes' ] ? ? '' )));
2022-06-30 11:32:13 +00:00
DI :: config () -> set ( 'impressum' , 'footer_text' , strip_tags ( trim ( $_POST [ 'footer_text' ] ? ? '' )));
2011-09-25 08:56:03 +00:00
}
2022-06-23 05:16:22 +00:00
2023-01-14 02:16:09 +00:00
function impressum_addon_admin ( string & $o )
2022-06-23 05:16:22 +00:00
{
$t = Renderer :: getMarkupTemplate ( 'admin.tpl' , 'addon/impressum/' );
$o = Renderer :: replaceMacros ( $t , [
'$submit' => DI :: l10n () -> t ( 'Save Settings' ),
'$owner' => [ 'owner' , DI :: l10n () -> t ( 'Site Owner' ), DI :: config () -> get ( 'impressum' , 'owner' ), DI :: l10n () -> t ( 'The page operators name.' )],
'$ownerprofile' => [ 'ownerprofile' , DI :: l10n () -> t ( 'Site Owners Profile' ), DI :: config () -> get ( 'impressum' , 'ownerprofile' ), DI :: l10n () -> t ( 'Profile address of the operator.' )],
'$postal' => [ 'postal' , DI :: l10n () -> t ( 'Postal Address' ), DI :: config () -> get ( 'impressum' , 'postal' ), DI :: l10n () -> t ( 'How to contact the operator via snail mail. You can use BBCode here.' )],
'$notes' => [ 'notes' , DI :: l10n () -> t ( 'Notes' ), DI :: config () -> get ( 'impressum' , 'notes' ), DI :: l10n () -> t ( 'Additional notes that are displayed beneath the contact information. You can use BBCode here.' )],
'$email' => [ 'email' , DI :: l10n () -> t ( 'Email Address' ), DI :: config () -> get ( 'impressum' , 'email' ), DI :: l10n () -> t ( 'How to contact the operator via email. (will be displayed obfuscated)' )],
'$footer_text' => [ 'footer_text' , DI :: l10n () -> t ( 'Footer note' ), DI :: config () -> get ( 'impressum' , 'footer_text' ), DI :: l10n () -> t ( 'Text for the footer. You can use BBCode here.' )],
]);
2011-09-25 08:56:03 +00:00
}