2015-07-07 00:43:11 +02:00
< ? php
/**
2015-07-07 03:25:04 +02:00
* Name : Dragonlance Krynn locales
2015-07-07 02:46:09 +02:00
* Description : Sample Friendica plugin / addon . Set a random locale from the Dragonlance Realm of Krynn when posting . Based on the krynn 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 >
* Krynn modifications : Dylan Thiedeke
*
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
*/
function krynn_install () {
/**
*
* Our demo plugin will attach in three places .
* The first is just prior to storing a local post .
*
*/
register_hook ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
/**
*
* Then we ' ll attach into the plugin settings page , and also the
* settings post hook so that we can create and update
* user preferences .
*
*/
register_hook ( 'plugin_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
register_hook ( 'plugin_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
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 .
*
*/
unregister_hook ( 'post_local' , 'addon/krynn/krynn.php' , 'krynn_post_hook' );
unregister_hook ( 'plugin_settings' , 'addon/krynn/krynn.php' , 'krynn_settings' );
unregister_hook ( 'plugin_settings_post' , 'addon/krynn/krynn.php' , 'krynn_settings_post' );
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 */
$active = get_pconfig ( local_user (), 'krynn' , 'enable' );
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 .
*
*/
$krynn = array ( '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' ,);
$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' ])
set_pconfig ( local_user (), 'krynn' , 'enable' , intval ( $_POST [ 'krynn' ]));
}
/**
*
* Called from the Plugin Setting form .
* 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 */
$enabled = get_pconfig ( local_user (), 'krynn' , 'enable' );
$checked = (( $enabled ) ? ' checked="checked" ' : '' );
/* Add some HTML to the existing form */
$s .= '<div class="settings-block">' ;
$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 . '/>' ;
$s .= '</div><div class="clear"></div>' ;
/* 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>' ;
}