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-05-08 00:43:27 -04:00
use Friendica\App ;
2019-01-20 04:04:25 -05:00
use Friendica\Core\Config ;
2019-05-08 00:43:27 -04:00
use Friendica\Core\Hook ;
2019-01-20 04:04:25 -05:00
use Friendica\Core\L10n ;
2019-01-23 04:47:08 -05:00
use Friendica\Core\Renderer ;
2019-12-15 19:08:47 -05:00
use Friendica\DI ;
2019-01-20 04:04:25 -05:00
2019-01-20 14:35:58 -05:00
/**
* cookienotice_install
* registers hooks
2019-05-08 00:43:27 -04:00
*
2019-01-20 14:35:58 -05:00
* @ return void
*/
2019-01-20 04:04:25 -05:00
function cookienotice_install ()
{
2019-01-23 10:01:28 -05:00
Hook :: register ( 'page_content_top' , __FILE__ , 'cookienotice_page_content_top' );
Hook :: register ( 'page_end' , __FILE__ , 'cookienotice_page_end' );
2019-01-20 04:04:25 -05:00
}
2019-01-20 14:35:58 -05:00
/**
2019-05-08 00:43:27 -04:00
* cookienotice_addon_admin
2019-01-20 14:35:58 -05:00
* creates the admins config panel
2019-05-08 00:43:27 -04:00
*
* @ param App $a
2019-01-20 14:35:58 -05:00
* @ param string $s The existing config panel html so far
2019-05-08 00:43:27 -04:00
*
2019-01-20 14:35:58 -05:00
* @ return void
*/
2019-05-08 00:43:27 -04:00
function cookienotice_addon_admin ( 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-23 05:00:52 -05:00
$text = Config :: get ( 'cookienotice' , 'text' , L10n :: t ( 'This website uses cookies. If you continue browsing this website, you agree to the usage of cookies.' ));
$oktext = Config :: get ( 'cookienotice' , 'oktext' , L10n :: t ( 'OK' ));
2019-01-20 04:04:25 -05:00
2019-05-08 00:43:27 -04:00
$t = Renderer :: getMarkupTemplate ( 'admin.tpl' , __DIR__ );
2019-01-23 04:47:08 -05:00
$s .= Renderer :: replaceMacros ( $t , [
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-05-08 00:43:27 -04:00
'$text' => [ 'cookienotice-text' , L10n :: t ( 'Cookie Usage Notice' ), $text ],
'$oktext' => [ 'cookienotice-oktext' , L10n :: t ( 'OK Button Text' ), $oktext ],
2019-01-20 14:35:58 -05:00
'$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
/**
2019-05-08 00:43:27 -04:00
* cookienotice_addon_admin_post
2019-01-20 14:35:58 -05:00
* handles the post request from the admin panel
2019-05-08 00:43:27 -04:00
*
* @ param App $a
*
2019-01-20 14:35:58 -05:00
* @ return void
*/
2019-05-15 08:04:54 -04:00
function cookienotice_addon_admin_post ( App $a )
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' ])));
2019-05-15 08:04:54 -04:00
info ( L10n :: t ( 'cookienotice Settings saved.' ));
2019-01-20 08:20:20 -05:00
}
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
2019-05-08 00:43:27 -04:00
*
* @ param App $a
* @ param string $b unused - the header html incl . nav
*
2019-01-20 14:35:58 -05:00
* @ return void
2019-01-20 04:04:25 -05:00
*/
2019-05-08 00:43:27 -04:00
function cookienotice_page_content_top ( App $a , & $b )
2019-01-20 04:04:25 -05:00
{
2019-05-08 00:43:27 -04:00
$stylesheetPath = __DIR__ . '/cookienotice.css' ;
$footerscriptPath = __DIR__ . '/cookienotice.js' ;
2019-01-23 04:47:08 -05:00
2019-12-15 19:08:47 -05:00
DI :: page () -> registerStylesheet ( $stylesheetPath );
DI :: page () -> 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
2019-05-08 00:43:27 -04:00
*
* @ param App $a
2019-01-20 14:35:58 -05:00
* @ param string $b the page html
2019-05-08 00:43:27 -04:00
*
2019-01-20 14:35:58 -05:00
* @ return void
2019-01-20 04:04:25 -05:00
*/
2019-05-08 00:43:27 -04:00
function cookienotice_page_end ( App $a , & $b )
2019-01-20 04:04:25 -05:00
{
2019-05-08 00:43:27 -04: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-05-08 00:43:27 -04:00
$page_end_tpl = Renderer :: getMarkupTemplate ( 'cookienotice.tpl' , __DIR__ );
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
}