2019-01-20 04:04:25 -05:00
< ? php
/**
* Name : Cookie Notice
* Description : Configure , show and handle a simple cookie notice
* Version : 1.0
* Author : Peter Liebetrau < https :// socivitas / profile / peerteer >
*
*/
2019-01-22 10:50:13 -05:00
use Friendica\Core\Addon ;
2019-01-20 14:35:58 -05:00
use Friendica\Core\Hook ;
2019-01-20 04:04:25 -05:00
use Friendica\Core\Config ;
use Friendica\Core\L10n ;
2019-01-23 04:47:08 -05:00
use Friendica\Core\Renderer ;
2019-01-20 04:04:25 -05:00
2019-01-20 14:35:58 -05:00
/**
* cookienotice_install
* registers hooks
*
* @ return void
*/
2019-01-20 04:04:25 -05:00
function cookienotice_install ()
{
2019-01-20 08:20:20 -05:00
$file = 'addon/cookienotice/cookienotice.php' ;
2019-01-20 14:35:58 -05:00
Hook :: register ( 'page_content_top' , $file , 'cookienotice_page_content_top' );
Hook :: register ( 'page_end' , $file , 'cookienotice_page_end' );
Hook :: register ( 'addon_settings' , $file , 'cookienotice_addon_settings' );
Hook :: register ( 'addon_settings_post' , $file , 'cookienotice_addon_settings_post' );
2019-01-20 04:04:25 -05:00
}
2019-01-20 14:35:58 -05:00
/**
* cookienotice_uninstall
* unregisters hooks
*
* @ return void
*/
2019-01-20 04:04:25 -05:00
function cookienotice_uninstall ()
{
2019-01-20 08:20:20 -05:00
$file = 'addon/cookienotice/cookienotice.php' ;
2019-01-20 14:35:58 -05:00
Hook :: unregister ( 'page_content_top' , $file , 'cookienotice_page_content_top' );
Hook :: unregister ( 'page_end' , $file , 'cookienotice_page_end' );
Hook :: unregister ( 'addon_settings' , $file , 'cookienotice_addon_settings' );
Hook :: unregister ( 'addon_settings_post' , $file , 'cookienotice_addon_settings_post' );
2019-01-20 04:04:25 -05:00
}
2019-01-20 14:35:58 -05:00
/**
* cookienotice_addon_settings
* addon_settings hook
* creates the admins config panel
*
* @ param \Friendica\App $a
* @ param string $s The existing config panel html so far
*
* @ return void
*/
function cookienotice_addon_settings ( \Friendica\App $a , & $s )
2019-01-20 04:04:25 -05:00
{
2019-01-20 14:35:58 -05:00
if ( ! is_site_admin ()) {
2019-01-20 08:20:20 -05:00
return ;
2019-01-20 14:35:58 -05:00
}
2019-01-20 04:04:25 -05:00
2019-01-20 08:20:20 -05:00
/* Add our stylesheet to the page so we can make our settings look nice */
2019-01-23 04:47:08 -05:00
$stylesheetPath = 'addon/cookienotice/cookienotice.css' ;
$a -> registerStylesheet ( $stylesheetPath );
2019-01-20 04:04:25 -05:00
2019-01-20 08:20:20 -05:00
$text = Config :: get ( 'cookienotice' , 'text' );
if ( ! $text ) {
$text = '' ;
}
$oktext = Config :: get ( 'cookienotice' , 'oktext' );
if ( ! $oktext ) {
$oktext = '' ;
}
2019-01-20 04:04:25 -05:00
2019-01-23 04:47:08 -05:00
$t = Renderer :: getMarkupTemplate ( " settings.tpl " , " addon/cookienotice/ " );
$s .= Renderer :: replaceMacros ( $t , [
2019-01-20 14:35:58 -05:00
'$title' => L10n :: t ( '"cookienotice" Settings' ),
2019-01-20 08:20:20 -05:00
'$description' => L10n :: t ( '<b>Configure your cookie usage notice.</b> It should just be a notice, saying that the website uses cookies. It is shown as long as a user didnt confirm clicking the OK button.' ),
2019-01-20 14:35:58 -05:00
'$text' => [ 'cookienotice-text' , L10n :: t ( 'Cookie Usage Notice' ), $text , L10n :: t ( 'The cookie usage notice' )],
'$oktext' => [ 'cookienotice-oktext' , L10n :: t ( 'OK Button Text' ), $oktext , L10n :: t ( 'The OK Button text' )],
'$submit' => L10n :: t ( 'Save Settings' )
2019-01-20 08:20:20 -05:00
]);
2019-01-20 04:04:25 -05:00
2019-01-20 08:20:20 -05:00
return ;
2019-01-20 04:04:25 -05:00
}
2019-01-20 14:35:58 -05:00
/**
* cookienotice_addon_settings_post
* addon_settings_post hook
* handles the post request from the admin panel
*
* @ param \Friendica\App $a
* @ param string $b
*
* @ return void
*/
function cookienotice_addon_settings_post ( \Friendica\App $a , & $b )
2019-01-20 04:04:25 -05:00
{
2019-01-20 14:35:58 -05:00
if ( ! is_site_admin ()) {
2019-01-20 08:20:20 -05:00
return ;
2019-01-20 14:35:58 -05:00
}
2019-01-20 08:20:20 -05:00
if ( $_POST [ 'cookienotice-submit' ]) {
Config :: set ( 'cookienotice' , 'text' , trim ( strip_tags ( $_POST [ 'cookienotice-text' ])));
Config :: set ( 'cookienotice' , 'oktext' , trim ( strip_tags ( $_POST [ 'cookienotice-oktext' ])));
info ( L10n :: t ( 'cookienotice Settings saved.' ) . EOL );
}
2019-01-20 04:04:25 -05:00
}
/**
2019-01-20 14:35:58 -05:00
* cookienotice_page_content_top
* page_content_top hook
* adds css and scripts to the < head > section of the html
*
* @ param \Friendica\App $a
* @ param string $b unnused - the header html incl . nav
2019-01-20 04:04:25 -05:00
*
2019-01-20 14:35:58 -05:00
* @ return void
2019-01-20 04:04:25 -05:00
*/
2019-01-20 14:35:58 -05:00
function cookienotice_page_content_top ( \Friendica\App $a , & $b )
2019-01-20 04:04:25 -05:00
{
2019-01-23 04:47:08 -05:00
$stylesheetPath = 'addon/cookienotice/cookienotice.css' ;
$footerscriptPath = 'addon/cookienotice/cookienotice.js' ;
$a -> registerStylesheet ( $stylesheetPath );
$a -> registerFooterScript ( $footerscriptPath );
2019-01-20 04:04:25 -05:00
}
/**
2019-01-20 14:35:58 -05:00
* cookienotice_page_end
* page_end hook
* ads our cookienotice box to the end of the html
*
* @ param \Friendica\App $a
* @ param string $b the page html
2019-01-20 04:04:25 -05:00
*
2019-01-20 14:35:58 -05:00
* @ return void
2019-01-20 04:04:25 -05:00
*/
2019-01-20 14:35:58 -05:00
function cookienotice_page_end ( \Friendica\App $a , & $b )
2019-01-20 04:04:25 -05:00
{
2019-01-20 14:35:58 -05:00
$text = ( string ) Config :: get ( 'cookienotice' , 'text' , L10n :: t ( 'This website uses cookies to recognize revisiting and logged in users. You accept the usage of these cookies by continue browsing this website.' ));
$oktext = ( string ) Config :: get ( 'cookienotice' , 'oktext' , L10n :: t ( 'OK' ));
2019-01-20 04:04:25 -05:00
2019-01-23 04:47:08 -05:00
$page_end_tpl = Renderer :: getMarkupTemplate ( " cookienotice.tpl " , " addon/cookienotice/ " );
2019-01-20 04:04:25 -05:00
2019-01-23 04:47:08 -05:00
$page_end = Renderer :: replaceMacros ( $page_end_tpl , [
2019-01-20 14:35:58 -05:00
'$text' => $text ,
2019-01-20 08:20:20 -05:00
'$oktext' => $oktext ,
]);
2019-01-20 04:04:25 -05:00
2019-01-20 08:20:20 -05:00
$b .= $page_end ;
2019-01-20 04:04:25 -05:00
}