diff --git a/ljpost.tar.gz b/ljpost.tar.gz new file mode 100644 index 00000000..b3f354fc Binary files /dev/null and b/ljpost.tar.gz differ diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php new file mode 100644 index 00000000..de7567ad --- /dev/null +++ b/ljpost/ljpost.php @@ -0,0 +1,221 @@ + +* Author: Tony Baldwin +*/ + +function ljpost_install() { + register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + register_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +} +function ljpost_uninstall() { + unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +// obsolete - remove + unregister_hook('post_local_end', 'addon/ljpost/ljpost.php', 'ljpost_send'); + unregister_hook('plugin_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + unregister_hook('plugin_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); + +} + + + + +function ljpost_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $lj_post = get_pconfig(local_user(),'ljpost','post'); + if(intval($lj_post) == 1) { + $wp_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); + $selected = ((intval($wp_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to Livejournal') . '
'; + } +} + + +function ljpost_settings(&$a,&$s) { + + if(! local_user()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variables */ + + $enabled = get_pconfig(local_user(),'ljpost','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'ljpost','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + +$lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); +$lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); +$lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('LiveJournal Post Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function ljpost_settings_post(&$a,&$b) { + +if(x($_POST,'ljpost-submit')) { + +set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost'])); +set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); +set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); +set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); +set_pconfig(local_user(),'ljpost','lj_blog',trim($_POST['lj_blog'])); + +} + +} + +function ljpost_post_local(&$a,&$b) { + +// This can probably be changed to allow editing by pointing to a different API endpoint + +if($b['edit']) +return; + +if((! local_user()) || (local_user() != $b['uid'])) +return; + +if($b['private'] || $b['parent']) +return; + + $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); + +$lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); + +if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default'))) +$lj_enable = 1; + + if(! $lj_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'ljpost'; +} + + + + +function ljpost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'ljpost')) + return; + + if($b['parent'] != $b['id']) + return; + + +$lj_username = get_pconfig($b['uid'],'ljpost','lj_username'); +$lj_password = get_pconfig($b['uid'],'ljpost','lj_password'); +$lj_blog = get_pconfig($b['uid'],'ljpost','lj_blog'); + +if($lj_username && $lj_password && $lj_blog) { + +require_once('include/bbcode.php'); + +$title = '' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . ''; +$post = $title . bbcode($b['body']); +$post = xmlify($post); + +$year = date('Y') +$month = date('F') +$day = date('l') +$hour = date('H') +$min = date('i') + +$xml = <<< EOT + + +LJ.XMLRPC.postevent + + +year$year +mon$month +day$day +hour$hour +min$min +usejournal$lj_blog +event$post +username$lj_username +password$lj_password +subjectfriendica post +lineendingsunix +ver1 +props + +useragentFriendica +taglistfriendica,crosspost + + + + + +EOT; + +logger('ljpost: data: ' . $xml, LOGGER_DATA); + +if($lj_blog !== 'test') +$x = post_url($lj_blog,$xml); +logger('posted to livejournal: ' . ($x) ? $x : ''); + + } +}