2015-07-06 22:43:11 +00:00
< ? php
/**
2015-07-07 01:25:04 +00:00
* Name : Dragonlance Krynn locales
2020-07-27 12:30:41 +00:00
* Description : Set a random locale from the Dragonlance Realm of Krynn when posting . Based on the planets friendica addon by Mike Macgirvin and Tony Baldwin
2015-07-06 22:43:11 +00:00
* Version : 1.0
* Planets Author : Mike Macgirvin < http :// macgirvin . com / profile / mike >
* Planets Author : Tony Baldwin < https :// free - haven . org / profile / tony >
2015-07-07 06:15:07 +00:00
* Author : Dylan Thiedeke < https :// theronin . net / profile / swathe >
2015-07-06 22:43:11 +00:00
*
2015-07-07 01:03:34 +00:00
* " My body was my sacrifice... for my magic. This damage is permanent. " - Raistlin Majere
2015-07-06 22:43:11 +00:00
*/
2021-11-20 09:56:55 +00:00
use Friendica\App ;
2018-12-26 07:28:16 +00:00
use Friendica\Core\Hook ;
2018-10-29 23:40:18 +00:00
use Friendica\Core\Logger ;
2021-11-20 09:56:55 +00:00
use Friendica\Core\Renderer ;
2019-12-30 02:55:10 +00:00
use Friendica\DI ;
2015-07-06 22:43:11 +00:00
2022-06-23 05:27:01 +00:00
function krynn_install ()
{
2015-07-06 22:43:11 +00:00
/**
2018-01-20 13:57:41 +00:00
* Our demo addon will attach in t hree places .
2015-07-06 22:43:11 +00:00
* The first is just prior to storing a local post .
*/
2018-12-26 07:28:16 +00:00
Hook :: register ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
2015-07-06 22:43:11 +00:00
/**
2018-01-20 13:57:41 +00:00
* Then we ' ll attach into the addon settings page , and also the
2015-07-06 22:43:11 +00:00
* settings post hook so that we can create and update
* user preferences .
*/
2018-12-26 07:28:16 +00:00
Hook :: register ( 'addon_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
Hook :: register ( 'addon_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
2015-07-06 22:43:11 +00:00
2021-10-21 06:04:27 +00:00
Logger :: notice ( " installed krynn " );
2015-07-06 22:43:11 +00:00
}
2023-01-14 02:16:09 +00:00
function krynn_post_hook ( & $item )
2022-06-23 05:27:01 +00:00
{
2015-07-06 22:43:11 +00:00
/**
* An item was posted on the local system .
* We are going to look for specific items :
* - A status post by a profile owner
2018-01-20 13:57:41 +00:00
* - The profile owner must have allowed our addon
2015-07-06 22:43:11 +00:00
*/
2022-10-20 21:51:49 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2022-06-23 05:27:01 +00:00
/* non-zero if this is a logged in user of this system */
2015-07-06 22:43:11 +00:00
return ;
2022-06-23 05:27:01 +00:00
}
2015-07-06 22:43:11 +00:00
2022-10-20 21:51:49 +00:00
if ( DI :: userSession () -> getLocalUserId () != $item [ 'uid' ]) {
2022-06-23 05:27:01 +00:00
/* Does this person own the post? */
2015-07-06 22:43:11 +00:00
return ;
2022-06-23 05:27:01 +00:00
}
2015-07-06 22:43:11 +00:00
2022-06-23 05:27:01 +00:00
if ( $item [ 'parent' ]) {
/* If the item has a parent, this is a comment or something else, not a status post. */
2015-07-06 22:43:11 +00:00
return ;
2022-06-23 05:27:01 +00:00
}
2015-07-06 22:43:11 +00:00
/* Retrieve our personal config setting */
2022-10-20 21:51:49 +00:00
$active = DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'krynn' , 'enable' );
2015-07-06 22:43:11 +00:00
2022-06-23 05:27:01 +00:00
if ( ! $active ) {
2015-07-06 22:43:11 +00:00
return ;
2022-06-23 05:27:01 +00:00
}
2015-07-06 22:43:11 +00:00
/**
*
* OK , we ' re allowed to do our stuff .
* Here ' s what we are going to do :
* load the list of timezone names , and use that to generate a list of krynn locales .
* Then we ' ll pick one of those at random and put it in the " location " field for the post .
*
*/
2018-01-15 13:15:33 +00:00
$krynn = [ 'Ansalon' , 'Abanasinia' , 'Solace' , 'Haven' , 'Gateway' , 'Qualinost' , 'Ankatavaka' , 'Pax Tharkas' , 'Ergoth' , 'Newsea' , 'Straights of Schallsea' , 'Plains of Dust' , 'Tarsis' , 'Barren Hills' , 'Que Shu' , 'Citadel of Light' , 'Solinari' , 'Hedge Maze' , 'Tower of High Sorcery' , 'Inn of the Last Home' , 'Last Heroes Tomb' , 'Academy of Sorcery' , 'Gods Row' , 'Temple of Majere' , 'Temple of Kiri-Jolith' , 'Temple of Mishakal' , 'Temple of Zeboim' , 'The Trough' , 'Sad Town' , 'Xak Tsaroth' , 'Zhaman' , 'Skullcap' , 'Saifhum' , 'Karthay' , 'Mithas' , 'Kothas' , 'Silver Dragon Mountain' , 'Silvanesti' ];
2015-07-06 22:43:11 +00:00
$planet = array_rand ( $krynn , 1 );
$item [ 'location' ] = $krynn [ $planet ];
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 .
*/
2023-01-14 02:16:09 +00:00
function krynn_settings_post ( $post )
2022-06-23 05:27:01 +00:00
{
2022-10-20 21:51:49 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2015-07-06 22:43:11 +00:00
return ;
2022-06-23 05:27:01 +00:00
}
if ( $_POST [ 'krynn-submit' ]) {
2022-10-20 21:51:49 +00:00
DI :: pConfig () -> set ( DI :: userSession () -> getLocalUserId (), 'krynn' , 'enable' , intval ( $_POST [ 'krynn' ]));
2022-06-23 05:27:01 +00:00
}
2015-07-06 22:43:11 +00:00
}
/**
2018-01-20 13:57:41 +00:00
* Called from the addon Setting form .
2015-07-06 22:43:11 +00:00
* Add our own settings info to the page .
*/
2023-01-14 02:16:09 +00:00
function krynn_settings ( array & $data )
2021-11-20 09:56:55 +00:00
{
2022-10-20 21:51:49 +00:00
if ( ! DI :: userSession () -> getLocalUserId ()) {
2015-07-06 22:43:11 +00:00
return ;
2021-11-20 09:56:55 +00:00
}
2015-07-06 22:43:11 +00:00
2022-10-20 21:51:49 +00:00
$enabled = DI :: pConfig () -> get ( DI :: userSession () -> getLocalUserId (), 'krynn' , 'enable' );
2015-07-06 22:43:11 +00:00
2021-11-20 09:56:55 +00:00
$t = Renderer :: getMarkupTemplate ( 'settings.tpl' , 'addon/krynn/' );
$html = Renderer :: replaceMacros ( $t , [
'$enabled' => [ 'krynn' , DI :: l10n () -> t ( 'Enable Krynn Addon' ), $enabled ],
]);
2015-07-06 22:43:11 +00:00
2021-11-20 09:56:55 +00:00
$data = [
'addon' => 'krynn' ,
'title' => DI :: l10n () -> t ( 'Krynn Settings' ),
'html' => $html ,
];
2015-07-06 22:43:11 +00:00
}