2015-07-06 18:43:11 -04:00
< ? php
/**
2015-07-06 21:25:04 -04:00
* Name : Dragonlance Krynn locales
2015-07-06 22:14:08 -04: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-06 18:43:11 -04: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 02:15:07 -04:00
* Author : Dylan Thiedeke < https :// theronin . net / profile / swathe >
2015-07-06 18:43:11 -04:00
*
2015-07-06 21:03:34 -04:00
* " My body was my sacrifice... for my magic. This damage is permanent. " - Raistlin Majere
2015-07-06 18:43:11 -04:00
*/
2018-01-16 19:51:12 -05:00
use Friendica\Core\Addon ;
2017-11-06 18:55:24 -05:00
use Friendica\Core\PConfig ;
2015-07-06 18:43:11 -04:00
function krynn_install () {
/**
2018-01-15 08:15:33 -05:00
*
2015-07-06 18:43:11 -04:00
* Our demo plugin will attach in three places .
* The first is just prior to storing a local post .
*
*/
2018-01-16 19:51:12 -05:00
Addon :: registerHook ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
2015-07-06 18:43:11 -04:00
/**
*
2018-01-15 08:15:33 -05:00
* Then we ' ll attach into the plugin settings page , and also the
2015-07-06 18:43:11 -04:00
* settings post hook so that we can create and update
* user preferences .
*
*/
2018-01-16 19:51:12 -05:00
Addon :: registerHook ( 'plugin_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
Addon :: registerHook ( 'plugin_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
2015-07-06 18:43:11 -04:00
logger ( " installed krynn " );
}
function krynn_uninstall () {
/**
*
* uninstall unregisters any hooks created with register_hook
* during install . It may also delete configuration settings
* and any other cleanup .
*
*/
2018-01-16 19:51:12 -05:00
Addon :: unregisterHook ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
Addon :: unregisterHook ( 'plugin_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
Addon :: unregisterHook ( 'plugin_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
2015-07-06 18:43:11 -04:00
logger ( " removed krynn " );
}
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
* - The profile owner must have allowed our plugin
*
*/
logger ( 'krynn invoked' );
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 */
2017-11-06 18:55:24 -05:00
$active = PConfig :: get ( local_user (), 'krynn' , 'enable' );
2015-07-06 18:43:11 -04: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 08:15:33 -05: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 18:43:11 -04: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-06 18:55:24 -05:00
PConfig :: set ( local_user (), 'krynn' , 'enable' , intval ( $_POST [ 'krynn' ]));
2015-07-06 18:43:11 -04:00
}
/**
*
2018-01-15 08:15:33 -05:00
* Called from the Plugin Setting form .
2015-07-06 18:43:11 -04: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 */
$a -> page [ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . $a -> get_baseurl () . '/addon/krynn/krynn.css' . '" media="all" />' . " \r \n " ;
/* Get the current state of our config variable */
2017-11-06 18:55:24 -05:00
$enabled = PConfig :: get ( local_user (), 'krynn' , 'enable' );
2015-07-06 18:43:11 -04:00
$checked = (( $enabled ) ? ' checked="checked" ' : '' );
/* Add some HTML to the existing form */
2015-07-07 02:06:41 -04:00
$s .= '<span id="settings_krynn_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_krynn_expanded\'); openClose(\'settings_krynn_inflated\');">' ;
$s .= '<h3>' . t ( 'Krynn' ) . '</h3>' ;
$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\');">' ;
$s .= '<h3>' . t ( 'Krynn' ) . '</h3>' ;
$s .= '</span>' ;
$s .= '<div class="settings-block">' ;
2015-07-06 18:43:11 -04:00
$s .= '<h3>' . t ( 'Krynn Settings' ) . '</h3>' ;
$s .= '<div id="krynn-enable-wrapper">' ;
$s .= '<label id="krynn-enable-label" for="krynn-checkbox">' . t ( 'Enable Krynn Plugin' ) . '</label>' ;
$s .= '<input id="krynn-checkbox" type="checkbox" name="krynn" value="1" ' . $checked . '/>' ;
2015-07-07 04:45:28 -04:00
$s .= '</div><div class="clear"></div></div>' ;
2015-07-06 18:43:11 -04:00
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="krynn-submit" class="settings-submit" value="' . t ( 'Save Settings' ) . '" /></div></div>' ;
}