From 31e89b43feff000ba9fd5f3ff8571d982680b523 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 8 May 2019 00:43:27 -0400 Subject: [PATCH 1/4] [cookienotice] Move user addon settings to admin page - Reformat code - Remove uninstall function which doesn't include any specific uninstalling code besides hooks --- cookienotice/README | 6 ++- cookienotice/cookienotice.php | 83 +++++++++++------------------ cookienotice/templates/admin.tpl | 6 +++ cookienotice/templates/settings.tpl | 15 ------ 4 files changed, 41 insertions(+), 69 deletions(-) create mode 100644 cookienotice/templates/admin.tpl delete mode 100644 cookienotice/templates/settings.tpl diff --git a/cookienotice/README b/cookienotice/README index 74edd44a..247f53b1 100644 --- a/cookienotice/README +++ b/cookienotice/README @@ -2,6 +2,8 @@ Cookie Notice For server admins only. -Configure, show and handle a simple cookie usage notice. This absolute annoying but eventually necessary notification about the usage of cookies. This kind of things you klick ok on but don't read. +Configure, show and handle a simple cookie usage notice. +This absolute annoying but eventually necessary notification about the usage of cookies. +This kind of things you click ok on but don't read. -Author: Peter liebetrau +Author: Peter Liebetrau diff --git a/cookienotice/cookienotice.php b/cookienotice/cookienotice.php index 376de1ad..cc36bc29 100644 --- a/cookienotice/cookienotice.php +++ b/cookienotice/cookienotice.php @@ -5,70 +5,49 @@ * Description: Configure, show and handle a simple cookie notice * Version: 1.0 * Author: Peter Liebetrau - * */ -use Friendica\Core\Hook; + +use Friendica\App; use Friendica\Core\Config; +use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; /** * cookienotice_install * registers hooks - * + * * @return void */ function cookienotice_install() { 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'); } /** - * cookienotice_uninstall - * unregisters hooks - * - * @return void -*/ -function cookienotice_uninstall() -{ - 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'); -} - -/** - * cookienotice_addon_settings - * addon_settings hook + * cookienotice_addon_admin * creates the admins config panel - * - * @param \Friendica\App $a + * + * @param App $a * @param string $s The existing config panel html so far - * + * * @return void */ -function cookienotice_addon_settings(\Friendica\App $a, &$s) +function cookienotice_addon_admin(App $a, &$s) { if (!is_site_admin()) { return; } - /* Add our stylesheet to the page so we can make our settings look nice */ - $stylesheetPath = 'addon/cookienotice/cookienotice.css'; - $a->registerStylesheet($stylesheetPath); - $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')); - $t = Renderer::getMarkupTemplate("settings.tpl", "addon/cookienotice/"); + $t = Renderer::getMarkupTemplate('admin.tpl', __DIR__); $s .= Renderer::replaceMacros($t, [ - '$title' => L10n::t('"cookienotice" Settings'), '$description' => L10n::t('Configure your cookie usage notice. 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.'), - '$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')], + '$text' => ['cookienotice-text', L10n::t('Cookie Usage Notice'), $text], + '$oktext' => ['cookienotice-oktext', L10n::t('OK Button Text'), $oktext], '$submit' => L10n::t('Save Settings') ]); @@ -76,16 +55,16 @@ function cookienotice_addon_settings(\Friendica\App $a, &$s) } /** - * cookienotice_addon_settings_post + * cookienotice_addon_admin_post * addon_settings_post hook * handles the post request from the admin panel - * - * @param \Friendica\App $a + * + * @param App $a * @param string $b - * + * * @return void */ -function cookienotice_addon_settings_post(\Friendica\App $a, &$b) +function cookienotice_addon_admin_post(App $a, &$b) { if (!is_site_admin()) { return; @@ -102,16 +81,16 @@ function cookienotice_addon_settings_post(\Friendica\App $a, &$b) * cookienotice_page_content_top * page_content_top hook * adds css and scripts to the section of the html - * - * @param \Friendica\App $a - * @param string $b unnused - the header html incl. nav - * + * + * @param App $a + * @param string $b unused - the header html incl. nav + * * @return void */ -function cookienotice_page_content_top(\Friendica\App $a, &$b) +function cookienotice_page_content_top(App $a, &$b) { - $stylesheetPath = 'addon/cookienotice/cookienotice.css'; - $footerscriptPath = 'addon/cookienotice/cookienotice.js'; + $stylesheetPath = __DIR__ . '/cookienotice.css'; + $footerscriptPath = __DIR__ . '/cookienotice.js'; $a->registerStylesheet($stylesheetPath); $a->registerFooterScript($footerscriptPath); @@ -121,18 +100,18 @@ function cookienotice_page_content_top(\Friendica\App $a, &$b) * cookienotice_page_end * page_end hook * ads our cookienotice box to the end of the html - * - * @param \Friendica\App $a + * + * @param App $a * @param string $b the page html - * + * * @return void */ -function cookienotice_page_end(\Friendica\App $a, &$b) +function cookienotice_page_end(App $a, &$b) { - $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')); + $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')); - $page_end_tpl = Renderer::getMarkupTemplate("cookienotice.tpl", "addon/cookienotice/"); + $page_end_tpl = Renderer::getMarkupTemplate('cookienotice.tpl', __DIR__); $page_end = Renderer::replaceMacros($page_end_tpl, [ '$text' => $text, diff --git a/cookienotice/templates/admin.tpl b/cookienotice/templates/admin.tpl new file mode 100644 index 00000000..b64b0377 --- /dev/null +++ b/cookienotice/templates/admin.tpl @@ -0,0 +1,6 @@ +

{{$description nofilter}}

+{{include file="field_textarea.tpl" field=$text}} +{{include file="field_input.tpl" field=$oktext}} +
+ +
diff --git a/cookienotice/templates/settings.tpl b/cookienotice/templates/settings.tpl deleted file mode 100644 index 99489b9c..00000000 --- a/cookienotice/templates/settings.tpl +++ /dev/null @@ -1,15 +0,0 @@ - -

{{$title}}

-
- -
From f93a1a45ccca9f2292d55f2a5c0c372c759e3cb1 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 8 May 2019 00:44:43 -0400 Subject: [PATCH 2/4] [geonames] Remove unused admin settings functions - Reformat code - Remove uninstall function that doesn't include specific code besides hooks --- geonames/README.md | 4 +- geonames/geonames.php | 170 +++++++++++--------------------- geonames/templates/settings.tpl | 14 +++ 3 files changed, 74 insertions(+), 114 deletions(-) create mode 100644 geonames/templates/settings.tpl diff --git a/geonames/README.md b/geonames/README.md index 443ddf3f..7e9ed31a 100644 --- a/geonames/README.md +++ b/geonames/README.md @@ -7,10 +7,10 @@ Use Geonames service to resolve nearest populated location for given latitude, l ## Installation -Pre-requisite: Register a username at geonames.org and set in `config/addon.config.php` +Pre-requisite: Register a username at https://www.geonames.org/login and set it in `config/addon.config.php` 'geonames' => [ 'username' => 'your_username' ], -Also visit http://geonames.org/manageaccount and enable access to the free web services. \ No newline at end of file +Also visit https://geonames.org/manageaccount and enable access to the free web services. \ No newline at end of file diff --git a/geonames/geonames.php b/geonames/geonames.php index 1ce6dbfa..cc0420f4 100644 --- a/geonames/geonames.php +++ b/geonames/geonames.php @@ -4,202 +4,148 @@ * Description: Use Geonames service to resolve nearest populated location for given latitude, longitude * Version: 1.0 * Author: Mike Macgirvin - * - * - * Pre-requisite: Register a username at geonames.org - * and set in config/addon.config.php - * - * [geonames] - * username = your_username - * - * Also visit http://geonames.org/manageaccount and enable access to the free web services - * - * When addon is installed, the system calls the addon - * name_install() function, located in 'addon/name/name.php', - * where 'name' is the name of the addon. - * If the addon is removed from the configuration list, the - * system will call the name_uninstall() function. - * */ +use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\PConfig; +use Friendica\Core\Renderer; use Friendica\Util\Config\ConfigFileLoader; use Friendica\Util\Network; use Friendica\Util\XML; -function geonames_install() { +function geonames_install() +{ + Hook::register('load_config', __FILE__, 'geonames_load_config'); - Hook::register('load_config', 'addon/geonames/geonames.php', 'geonames_load_config'); - - /** - * - * Our addon will attach in three places. + /* Our addon will attach in three places. * The first is just prior to storing a local post. - * */ - Hook::register('post_local', 'addon/geonames/geonames.php', 'geonames_post_hook'); + Hook::register('post_local', __FILE__, 'geonames_post_hook'); - /** - * - * Then we'll attach into the addon settings page, and also the + /* Then we'll attach into the addon settings page, and also the * settings post hook so that we can create and update * user preferences. - * */ - Hook::register('addon_settings', 'addon/geonames/geonames.php', 'geonames_addon_admin'); - Hook::register('addon_settings_post', 'addon/geonames/geonames.php', 'geonames_addon_admin_post'); - - Logger::log("installed geonames"); + Hook::register('addon_settings', __FILE__, 'geonames_addon_settings'); + Hook::register('addon_settings_post', __FILE__, 'geonames_addon_settings_post'); } - -function geonames_uninstall() { - - /** - * - * uninstall unregisters any hooks created with register_hook - * during install. It may also delete configuration settings - * and any other cleanup. - * - */ - - Hook::unregister('load_config', 'addon/geonames/geonames.php', 'geonames_load_config'); - Hook::unregister('post_local', 'addon/geonames/geonames.php', 'geonames_post_hook'); - Hook::unregister('addon_settings', 'addon/geonames/geonames.php', 'geonames_addon_admin'); - Hook::unregister('addon_settings_post', 'addon/geonames/geonames.php', 'geonames_addon_admin_post'); - - - Logger::log("removed geonames"); -} - -function geonames_load_config(\Friendica\App $a, ConfigFileLoader $loader) +function geonames_load_config(App $a, ConfigFileLoader $loader) { $a->getConfigCache()->load($loader->loadAddonConfig('geonames')); } -function geonames_post_hook($a, &$item) { - - /** - * - * An item was posted on the local system. +function geonames_post_hook(App $a, array &$item) +{ + /* An item was posted on the local system. * We are going to look for specific items: * - A status post by a profile owner * - The profile owner must have allowed our addon - * */ Logger::log('geonames invoked'); - if(! local_user()) /* non-zero if this is a logged in user of this system */ + if (!local_user()) { /* non-zero if this is a logged in user of this system */ return; + } - if(local_user() != $item['uid']) /* Does this person own the post? */ + if (local_user() != $item['uid']) { /* Does this person own the post? */ return; + } - if($item['parent']) /* If the item has a parent, this is a comment or something else, not a status post. */ + if ($item['parent']) { /* If the item has a parent, this is a comment or something else, not a status post. */ return; + } /* Retrieve our personal config setting */ $geo_account = Config::get('geonames', 'username'); $active = PConfig::get(local_user(), 'geonames', 'enable'); - if((! $geo_account) || (! $active)) + if (!$geo_account || !$active) { return; + } - if((! $item['coord']) || ($item['location'])) + if (!$item['coord'] || $item['location']) { return; + } - $coords = explode(' ',$item['coord']); + $coords = explode(' ', $item['coord']); - /** - * - * OK, we're allowed to do our stuff. - * - */ + /* OK, we're allowed to do our stuff. */ $s = Network::fetchUrl('http://api.geonames.org/findNearbyPlaceName?lat=' . $coords[0] . '&lng=' . $coords[1] . '&username=' . $geo_account); - if(! $s) + if (!$s) { return; + } $xml = XML::parseString($s); - if($xml->geoname->name && $xml->geoname->countryName) + if ($xml->geoname->name && $xml->geoname->countryName) { $item['location'] = $xml->geoname->name . ', ' . $xml->geoname->countryName; + } - -// Logger::log('geonames : ' . print_r($xml,true), Logger::DATA); return; } - - - /** - * * Callback from the settings post function. - * $post contains the $_POST array. * We will make sure we've got a valid user account * and if so set our configuration setting for this person. * + * @param App $a + * @param array $post The $_POST array */ - -function geonames_addon_admin_post($a,$post) { - if(! local_user() || empty($_POST['geonames-submit'])) +function geonames_addon_settings_post(App $a, array $post) +{ + if (!local_user() || empty($_POST['geonames-submit'])) { return; - PConfig::set(local_user(),'geonames','enable',intval($_POST['geonames'])); + } - info(L10n::t('Geonames settings updated.') . EOL); + PConfig::set(local_user(), 'geonames', 'enable', intval($_POST['geonames-enable'])); + + info(L10n::t('Geonames settings updated.')); } - /** - * * Called from the Addon Setting form. * Add our own settings info to the page. * + * @param App $a + * @param string $s + * @throws Exception */ - - - -function geonames_addon_admin(&$a,&$s) { - - if(! local_user()) +function geonames_addon_settings(App $a, &$s) +{ + if (!local_user()) { return; + } $geo_account = Config::get('geonames', 'username'); - if(! $geo_account) + if (!$geo_account) { return; + } /* Add our stylesheet to the page so we can make our settings look nice */ - - $a->page['htmlhead'] .= '' . "\r\n"; + $stylesheetPath = __DIR__ . '/geonames.css'; + $a->registerStylesheet($stylesheetPath); /* Get the current state of our config variable */ + $enabled = intval(PConfig::get(local_user(), 'geonames', 'enable')); - $enabled = PConfig::get(local_user(),'geonames','enable'); - - $checked = (($enabled) ? ' checked="checked" ' : ''); - - /* Add some HTML to the existing form */ - - $s .= '
'; - $s .= '

' . L10n::t('Geonames Settings') . '

'; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - /* provide a submit button */ - - $s .= '
'; - + $t = Renderer::getMarkupTemplate('settings.tpl', __DIR__); + $s .= Renderer::replaceMacros($t, [ + '$title' => L10n::t('Geonames Settings'), + '$description' => L10n::t('Replace numerical coordinates by the nearest populated location name in your posts.'), + '$enable' => ['geonames-enable', L10n::t('Enable Geonames Addon'), $enabled], + '$submit' => L10n::t('Save Settings') + ]); } diff --git a/geonames/templates/settings.tpl b/geonames/templates/settings.tpl new file mode 100644 index 00000000..05897b6a --- /dev/null +++ b/geonames/templates/settings.tpl @@ -0,0 +1,14 @@ + +

{{$title}}

+
+ +
\ No newline at end of file From f104bb0d780fc95292bcfe75288f7b757a1fb3f6 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 8 May 2019 00:45:34 -0400 Subject: [PATCH 3/4] [pageheader] Move user addon settings to admin page - Reformat code - Remove uninstall function that doesn't have any specific uninstall code besides hooks --- pageheader/pageheader.php | 63 +++++++++++-------------------- pageheader/templates/admin.tpl | 5 +++ pageheader/templates/settings.tpl | 14 ------- 3 files changed, 27 insertions(+), 55 deletions(-) create mode 100644 pageheader/templates/admin.tpl delete mode 100644 pageheader/templates/settings.tpl diff --git a/pageheader/pageheader.php b/pageheader/pageheader.php index 922f557c..9e40d4e7 100644 --- a/pageheader/pageheader.php +++ b/pageheader/pageheader.php @@ -8,63 +8,45 @@ * */ +use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Renderer; function pageheader_install() { - Hook::register('page_content_top', 'addon/pageheader/pageheader.php', 'pageheader_fetch'); - Hook::register('addon_settings', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings'); - Hook::register('addon_settings_post', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings_post'); - + Hook::register('page_content_top', __FILE__, 'pageheader_fetch'); } - -function pageheader_uninstall() { - Hook::unregister('page_content_top', 'addon/pageheader/pageheader.php', 'pageheader_fetch'); - Hook::unregister('addon_settings', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings'); - Hook::unregister('addon_settings_post', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings_post'); - - // hook moved, uninstall the old one if still there. - Hook::unregister('page_header', 'addon/pageheader/pageheader.php', 'pageheader_fetch'); - -} - - - - - -function pageheader_addon_settings(&$a,&$s) { - - - if(! is_site_admin()) +function pageheader_addon_admin(App &$a, &$s) +{ + if(! is_site_admin()) { return; + } /* Add our stylesheet to the page so we can make our settings look nice */ - - $a->page['htmlhead'] .= '' . "\r\n"; - + $stylesheetPath = __DIR__ . '/pageheader.css'; + $a->registerStylesheet($stylesheetPath); $words = Config::get('pageheader','text'); if(! $words) $words = ''; - $t = Renderer::getMarkupTemplate("settings.tpl", "addon/pageheader/"); + $t = Renderer::getMarkupTemplate('admin.tpl', __DIR__); $s .= Renderer::replaceMacros($t, [ - '$title' => L10n::t('"pageheader" Settings'), - '$phwords' => ['pageheader-words', L10n::t('Message'), $words, L10n::t('Message to display on every page on this server (or put a pageheader.html file in your docroot)')], - '$submit' => L10n::t('Save Settings') + '$title' => L10n::t('"pageheader" Settings'), + '$phwords' => ['pageheader-words', L10n::t('Message'), $words, L10n::t('Message to display on every page on this server (or put a pageheader.html file in your docroot)')], + '$submit' => L10n::t('Save Settings') ]); return; - } -function pageheader_addon_settings_post(&$a, &$b) { - - if(!is_site_admin()) +function pageheader_addon_admin_post(App $a, &$b) +{ + if(!is_site_admin()) { return; + } if(!empty($_POST['pageheader-submit'])) { if (isset($_POST['pageheader-words'])) { @@ -74,19 +56,18 @@ function pageheader_addon_settings_post(&$a, &$b) { } } -function pageheader_fetch($a,&$b) { - +function pageheader_fetch(App $a, &$b) +{ if(file_exists('pageheader.html')){ $s = file_get_contents('pageheader.html'); } else { $s = Config::get('pageheader', 'text'); } - $a->page['htmlhead'] .= '' . "\r\n"; + $stylesheetPath = __DIR__ .'/pageheader.css'; + $a->registerStylesheet($stylesheetPath); - if(! $s) - $s = ''; - if ($s != '') + if ($s) { $b .= ''; + } } diff --git a/pageheader/templates/admin.tpl b/pageheader/templates/admin.tpl new file mode 100644 index 00000000..498a9273 --- /dev/null +++ b/pageheader/templates/admin.tpl @@ -0,0 +1,5 @@ +{{include file="field_textarea.tpl" field=$phwords}} + +
+ +
diff --git a/pageheader/templates/settings.tpl b/pageheader/templates/settings.tpl deleted file mode 100644 index db1a4093..00000000 --- a/pageheader/templates/settings.tpl +++ /dev/null @@ -1,14 +0,0 @@ - -

{{$title}}

-
- -
From 2f51b9013b77b9e9bd88b530438215eb835cc77c Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 8 May 2019 08:51:54 -0400 Subject: [PATCH 4/4] [geonames] Add link to base service website in README --- geonames/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geonames/README.md b/geonames/README.md index 7e9ed31a..16b85b37 100644 --- a/geonames/README.md +++ b/geonames/README.md @@ -3,7 +3,7 @@ Geonames Addon Authors Mike Macgirvin. -Use Geonames service to resolve nearest populated location for given latitude, longitude. +Use [Geonames service](https://www.geonames.org) to resolve nearest populated location for given latitude, longitude. ## Installation @@ -13,4 +13,4 @@ Pre-requisite: Register a username at https://www.geonames.org/login and set it 'username' => 'your_username' ], -Also visit https://geonames.org/manageaccount and enable access to the free web services. \ No newline at end of file +Also visit https://geonames.org/manageaccount and enable access to the free web services.