2015-07-07 00:43:11 +02:00
< ? php
/**
2015-07-07 03:25:04 +02:00
* Name : Dragonlance Krynn locales
2015-07-07 04:14:08 +02:00
* Description : Set a random locale from the Dragonlance Realm of Krynn when posting . Based on the planets frindica addon by Mike Macgirvin and Tony Baldwin
2015-07-07 00:43:11 +02: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 08:15:07 +02:00
* Author : Dylan Thiedeke < https :// theronin . net / profile / swathe >
2015-07-07 00:43:11 +02:00
*
2015-07-07 03:03:34 +02:00
* " My body was my sacrifice... for my magic. This damage is permanent. " - Raistlin Majere
2015-07-07 00:43:11 +02:00
*/
2018-12-26 08:28:16 +01:00
use Friendica\Core\Hook ;
2018-01-22 20:03:11 +01:00
use Friendica\Core\L10n ;
2018-10-30 00:40:18 +01:00
use Friendica\Core\Logger ;
2017-11-07 00:55:24 +01:00
use Friendica\Core\PConfig ;
2019-12-30 03:55:10 +01:00
use Friendica\DI ;
2015-07-07 00:43:11 +02:00
function krynn_install () {
/**
2018-01-15 14:15:33 +01:00
*
2018-01-20 14:57:41 +01:00
* Our demo addon will attach in three places .
2015-07-07 00:43:11 +02:00
* The first is just prior to storing a local post .
*
*/
2018-12-26 08:28:16 +01:00
Hook :: register ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
2015-07-07 00:43:11 +02:00
/**
*
2018-01-20 14:57:41 +01:00
* Then we ' ll attach into the addon settings page , and also the
2015-07-07 00:43:11 +02:00
* settings post hook so that we can create and update
* user preferences .
*
*/
2018-12-26 08:28:16 +01: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-07 00:43:11 +02:00
2018-10-30 00:40:18 +01:00
Logger :: log ( " installed krynn " );
2015-07-07 00:43:11 +02:00
}
function krynn_uninstall () {
/**
*
* uninstall unregisters any hooks created with register_hook
* during install . It may also delete configuration settings
* and any other cleanup .
*
*/
2018-12-26 08:28:16 +01:00
Hook :: unregister ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
Hook :: unregister ( 'addon_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
Hook :: unregister ( 'addon_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
2015-07-07 00:43:11 +02:00
2018-10-30 00:40:18 +01:00
Logger :: log ( " removed krynn " );
2015-07-07 00:43:11 +02:00
}
function krynn_post_hook ( $a , & $item ) {
/**
*
* 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 14:57:41 +01:00
* - The profile owner must have allowed our addon
2015-07-07 00:43:11 +02:00
*
*/
2018-10-30 00:40:18 +01:00
Logger :: log ( 'krynn invoked' );
2015-07-07 00:43:11 +02:00
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? */
return ;
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 */
2020-01-18 16:50:56 +01:00
$active = DI :: pConfig () -> get ( local_user (), 'krynn' , 'enable' );
2015-07-07 00:43:11 +02:00
if ( ! $active )
return ;
/**
*
* 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 14:15:33 +01: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-07 00:43:11 +02: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 .
*
*/
function krynn_settings_post ( $a , $post ) {
if ( ! local_user ())
return ;
if ( $_POST [ 'krynn-submit' ])
2017-11-07 00:55:24 +01:00
PConfig :: set ( local_user (), 'krynn' , 'enable' , intval ( $_POST [ 'krynn' ]));
2015-07-07 00:43:11 +02:00
}
/**
*
2018-01-20 14:57:41 +01:00
* Called from the addon Setting form .
2015-07-07 00:43:11 +02:00
* Add our own settings info to the page .
*
*/
function krynn_settings ( & $a , & $s ) {
if ( ! local_user ())
return ;
/* Add our stylesheet to the page so we can make our settings look nice */
2019-12-30 21:53:43 +01:00
DI :: page ()[ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . DI :: baseUrl () -> get () . '/addon/krynn/krynn.css' . '" media="all" />' . " \r \n " ;
2015-07-07 00:43:11 +02:00
/* Get the current state of our config variable */
2020-01-18 16:50:56 +01:00
$enabled = DI :: pConfig () -> get ( local_user (), 'krynn' , 'enable' );
2015-07-07 00:43:11 +02:00
$checked = (( $enabled ) ? ' checked="checked" ' : '' );
/* Add some HTML to the existing form */
2015-07-07 08:06:41 +02:00
$s .= '<span id="settings_krynn_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_krynn_expanded\'); openClose(\'settings_krynn_inflated\');">' ;
2018-01-22 20:03:11 +01:00
$s .= '<h3>' . L10n :: t ( 'Krynn' ) . '</h3>' ;
2015-07-07 08:06:41 +02:00
$s .= '</span>' ;
$s .= '<div id="settings_krynn_expanded" class="settings-block" style="display: none;">' ;
$s .= '<span class="fakelink" onclick="openClose(\'settings_krynn_expanded\'); openClose(\'settings_krynn_inflated\');">' ;
2018-01-22 20:03:11 +01:00
$s .= '<h3>' . L10n :: t ( 'Krynn' ) . '</h3>' ;
2015-07-07 08:06:41 +02:00
$s .= '</span>' ;
$s .= '<div class="settings-block">' ;
2018-01-22 20:03:11 +01:00
$s .= '<h3>' . L10n :: t ( 'Krynn Settings' ) . '</h3>' ;
2015-07-07 00:43:11 +02:00
$s .= '<div id="krynn-enable-wrapper">' ;
2018-01-22 20:03:11 +01:00
$s .= '<label id="krynn-enable-label" for="krynn-checkbox">' . L10n :: t ( 'Enable Krynn Addon' ) . '</label>' ;
2015-07-07 00:43:11 +02:00
$s .= '<input id="krynn-checkbox" type="checkbox" name="krynn" value="1" ' . $checked . '/>' ;
2015-07-07 10:45:28 +02:00
$s .= '</div><div class="clear"></div></div>' ;
2015-07-07 00:43:11 +02:00
/* provide a submit button */
2018-01-22 20:03:11 +01:00
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="krynn-submit" class="settings-submit" value="' . L10n :: t ( 'Save Settings' ) . '" /></div></div>' ;
2015-07-07 00:43:11 +02:00
}