forked from friendica/friendica-addons
[geonames] Remove unused admin settings functions
- Reformat code - Remove uninstall function that doesn't include specific code besides hooks
This commit is contained in:
parent
31e89b43fe
commit
f93a1a45cc
|
@ -7,10 +7,10 @@ Use Geonames service to resolve nearest populated location for given latitude, l
|
||||||
|
|
||||||
## Installation
|
## 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' => [
|
'geonames' => [
|
||||||
'username' => 'your_username'
|
'username' => 'your_username'
|
||||||
],
|
],
|
||||||
|
|
||||||
Also visit http://geonames.org/manageaccount and enable access to the free web services.
|
Also visit https://geonames.org/manageaccount and enable access to the free web services.
|
|
@ -4,202 +4,148 @@
|
||||||
* Description: Use Geonames service to resolve nearest populated location for given latitude, longitude
|
* Description: Use Geonames service to resolve nearest populated location for given latitude, longitude
|
||||||
* Version: 1.0
|
* Version: 1.0
|
||||||
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
|
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
|
||||||
*
|
|
||||||
*
|
|
||||||
* 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\Config;
|
||||||
use Friendica\Core\Hook;
|
use Friendica\Core\Hook;
|
||||||
use Friendica\Core\L10n;
|
use Friendica\Core\L10n;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\PConfig;
|
use Friendica\Core\PConfig;
|
||||||
|
use Friendica\Core\Renderer;
|
||||||
use Friendica\Util\Config\ConfigFileLoader;
|
use Friendica\Util\Config\ConfigFileLoader;
|
||||||
use Friendica\Util\Network;
|
use Friendica\Util\Network;
|
||||||
use Friendica\Util\XML;
|
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.
|
* 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
|
* settings post hook so that we can create and update
|
||||||
* user preferences.
|
* user preferences.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Hook::register('addon_settings', 'addon/geonames/geonames.php', 'geonames_addon_admin');
|
Hook::register('addon_settings', __FILE__, 'geonames_addon_settings');
|
||||||
Hook::register('addon_settings_post', 'addon/geonames/geonames.php', 'geonames_addon_admin_post');
|
Hook::register('addon_settings_post', __FILE__, 'geonames_addon_settings_post');
|
||||||
|
|
||||||
Logger::log("installed geonames");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function geonames_load_config(App $a, ConfigFileLoader $loader)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
$a->getConfigCache()->load($loader->loadAddonConfig('geonames'));
|
$a->getConfigCache()->load($loader->loadAddonConfig('geonames'));
|
||||||
}
|
}
|
||||||
|
|
||||||
function geonames_post_hook($a, &$item) {
|
function geonames_post_hook(App $a, array &$item)
|
||||||
|
{
|
||||||
/**
|
/* An item was posted on the local system.
|
||||||
*
|
|
||||||
* An item was posted on the local system.
|
|
||||||
* We are going to look for specific items:
|
* We are going to look for specific items:
|
||||||
* - A status post by a profile owner
|
* - A status post by a profile owner
|
||||||
* - The profile owner must have allowed our addon
|
* - The profile owner must have allowed our addon
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Logger::log('geonames invoked');
|
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;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(local_user() != $item['uid']) /* Does this person own the post? */
|
if (local_user() != $item['uid']) { /* Does this person own the post? */
|
||||||
return;
|
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;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Retrieve our personal config setting */
|
/* Retrieve our personal config setting */
|
||||||
|
|
||||||
$geo_account = Config::get('geonames', 'username');
|
$geo_account = Config::get('geonames', 'username');
|
||||||
$active = PConfig::get(local_user(), 'geonames', 'enable');
|
$active = PConfig::get(local_user(), 'geonames', 'enable');
|
||||||
|
|
||||||
if((! $geo_account) || (! $active))
|
if (!$geo_account || !$active) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if((! $item['coord']) || ($item['location']))
|
if (!$item['coord'] || $item['location']) {
|
||||||
return;
|
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);
|
$s = Network::fetchUrl('http://api.geonames.org/findNearbyPlaceName?lat=' . $coords[0] . '&lng=' . $coords[1] . '&username=' . $geo_account);
|
||||||
|
|
||||||
if(! $s)
|
if (!$s) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$xml = XML::parseString($s);
|
$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;
|
$item['location'] = $xml->geoname->name . ', ' . $xml->geoname->countryName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Logger::log('geonames : ' . print_r($xml,true), Logger::DATA);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* Callback from the settings post function.
|
* Callback from the settings post function.
|
||||||
* $post contains the $_POST array.
|
|
||||||
* We will make sure we've got a valid user account
|
* We will make sure we've got a valid user account
|
||||||
* and if so set our configuration setting for this person.
|
* and if so set our configuration setting for this person.
|
||||||
*
|
*
|
||||||
|
* @param App $a
|
||||||
|
* @param array $post The $_POST array
|
||||||
*/
|
*/
|
||||||
|
function geonames_addon_settings_post(App $a, array $post)
|
||||||
function geonames_addon_admin_post($a,$post) {
|
{
|
||||||
if(! local_user() || empty($_POST['geonames-submit']))
|
if (!local_user() || empty($_POST['geonames-submit'])) {
|
||||||
return;
|
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.
|
* Called from the Addon Setting form.
|
||||||
* Add our own settings info to the page.
|
* Add our own settings info to the page.
|
||||||
*
|
*
|
||||||
|
* @param App $a
|
||||||
|
* @param string $s
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
|
function geonames_addon_settings(App $a, &$s)
|
||||||
|
{
|
||||||
|
if (!local_user()) {
|
||||||
function geonames_addon_admin(&$a,&$s) {
|
|
||||||
|
|
||||||
if(! local_user())
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$geo_account = Config::get('geonames', 'username');
|
$geo_account = Config::get('geonames', 'username');
|
||||||
|
|
||||||
if(! $geo_account)
|
if (!$geo_account) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Add our stylesheet to the page so we can make our settings look nice */
|
/* Add our stylesheet to the page so we can make our settings look nice */
|
||||||
|
$stylesheetPath = __DIR__ . '/geonames.css';
|
||||||
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->getBaseURL() . '/addon/geonames/geonames.css' . '" media="all" />' . "\r\n";
|
$a->registerStylesheet($stylesheetPath);
|
||||||
|
|
||||||
/* Get the current state of our config variable */
|
/* Get the current state of our config variable */
|
||||||
|
$enabled = intval(PConfig::get(local_user(), 'geonames', 'enable'));
|
||||||
|
|
||||||
$enabled = PConfig::get(local_user(),'geonames','enable');
|
$t = Renderer::getMarkupTemplate('settings.tpl', __DIR__);
|
||||||
|
$s .= Renderer::replaceMacros($t, [
|
||||||
$checked = (($enabled) ? ' checked="checked" ' : '');
|
'$title' => L10n::t('Geonames Settings'),
|
||||||
|
'$description' => L10n::t('Replace numerical coordinates by the nearest populated location name in your posts.'),
|
||||||
/* Add some HTML to the existing form */
|
'$enable' => ['geonames-enable', L10n::t('Enable Geonames Addon'), $enabled],
|
||||||
|
'$submit' => L10n::t('Save Settings')
|
||||||
$s .= '<div class="settings-block">';
|
]);
|
||||||
$s .= '<h3>' . L10n::t('Geonames Settings') . '</h3>';
|
|
||||||
$s .= '<div id="geonames-enable-wrapper">';
|
|
||||||
$s .= '<label id="geonames-enable-label" for="geonames-checkbox">' . L10n::t('Enable Geonames Addon') . '</label>';
|
|
||||||
$s .= '<input id="geonames-checkbox" type="checkbox" name="geonames" value="1" ' . $checked . '/>';
|
|
||||||
$s .= '</div><div class="clear"></div>';
|
|
||||||
|
|
||||||
/* provide a submit button */
|
|
||||||
|
|
||||||
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="geonames-submit" class="settings-submit" value="' . L10n::t('Save Settings') . '" /></div></div>';
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
14
geonames/templates/settings.tpl
Normal file
14
geonames/templates/settings.tpl
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<span id="settings_geonames_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose('settings_geonames_expanded'); openClose('settings_geonames_inflated');">
|
||||||
|
<h3>{{$title}}</h3>
|
||||||
|
</span>
|
||||||
|
<div id="settings_geonames_expanded" class="settings-block" style="display: none;">
|
||||||
|
<span class="fakelink" onclick="openClose('settings_geonames_expanded'); openClose('settings_geonames_inflated');">
|
||||||
|
<h3>{{$title}}</h3>
|
||||||
|
</span>
|
||||||
|
<p>{{$description nofilter}}</p>
|
||||||
|
{{include file="field_checkbox.tpl" field=$enable}}
|
||||||
|
<div class="settings-submit-wrapper" >
|
||||||
|
<input type="submit" id="geonames-submit" name="geonames-submit" class="settings-submit" value="{{$submit}}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
Loading…
Reference in a new issue