X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=ljpost%2Fljpost.php;h=ec99f9ba9361585971ed4b12810d44230fd67828;hb=88ca2f5a1e83c2cd93c6b08863fdd361a3a9bd69;hp=de7567adb88680b9144c9f159eb88db58a86cc89;hpb=201810df40717532c94ed9f0e03ab490f576833c;p=friendica-addons.git diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index de7567ad..ec99f9ba 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -1,48 +1,48 @@ -* Author: Tony Baldwin -*/ + * Name: LiveJournal Post Connector + * Description: Post to LiveJournal + * Version: 1.0 + * Author: Tony Baldwin + * Author: Michael Johnston + * Author: Cat Gray + */ + +use Friendica\Content\Text\BBCode; +use Friendica\Core\Addon; +use Friendica\Core\L10n; +use Friendica\Core\PConfig; +use Friendica\Util\DateTimeFormat; +use Friendica\Util\Network; 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'); + Addon::registerHook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + Addon::registerHook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + Addon::registerHook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + Addon::registerHook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + Addon::registerHook('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'); + Addon::unregisterHook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); + Addon::unregisterHook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); + Addon::unregisterHook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); + Addon::unregisterHook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); + Addon::unregisterHook('connector_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'); + $lj_post = PConfig::get(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" ' : ''); + $lj_defpost = PConfig::get(local_user(),'ljpost','post_by_default'); + $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to Livejournal') . '
'; + . L10n::t('Post to LiveJournal') . ''; } } @@ -54,92 +54,85 @@ function ljpost_settings(&$a,&$s) { /* Add our stylesheet to the page so we can make our settings look nice */ - $a->page['htmlhead'] .= '' . "\r\n"; + $a->page['htmlhead'] .= '' . "\r\n"; /* Get the current state of our config variables */ - $enabled = get_pconfig(local_user(),'ljpost','post'); + $enabled = PConfig::get(local_user(),'ljpost','post'); $checked = (($enabled) ? ' checked="checked" ' : ''); - $def_enabled = get_pconfig(local_user(),'ljpost','post_by_default'); + $def_enabled = PConfig::get(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'); + $lj_username = PConfig::get(local_user(), 'ljpost', 'lj_username'); + $lj_password = PConfig::get(local_user(), 'ljpost', 'lj_password'); /* Add some HTML to the existing form */ $s .= '
'; - $s .= '

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

'; + $s .= '

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

'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; $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 .= '
'; + $s .= '
'; } function ljpost_settings_post(&$a,&$b) { -if(x($_POST,'ljpost-submit')) { + 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'])); + PConfig::set(local_user(),'ljpost','post',intval($_POST['ljpost'])); + PConfig::set(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault'])); + PConfig::set(local_user(),'ljpost','lj_username',trim($_POST['lj_username'])); + PConfig::set(local_user(),'ljpost','lj_password',trim($_POST['lj_password'])); -} + } } function ljpost_post_local(&$a,&$b) { -// This can probably be changed to allow editing by pointing to a different API endpoint + // This can probably be changed to allow editing by pointing to a different API endpoint -if($b['edit']) -return; + if($b['edit']) + return; -if((! local_user()) || (local_user() != $b['uid'])) -return; + if((! local_user()) || (local_user() != $b['uid'])) + return; -if($b['private'] || $b['parent']) -return; + if($b['private'] || $b['parent']) + return; - $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); + $lj_post = intval(PConfig::get(local_user(),'ljpost','post')); -$lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0); + $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($_REQUEST['api_source'] && intval(PConfig::get(local_user(),'ljpost','post_by_default'))) + $lj_enable = 1; if(! $lj_enable) return; @@ -163,59 +156,93 @@ function ljpost_send(&$a,&$b) { 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 - - - + // LiveJournal post in the LJ user's timezone. + // Hopefully the person's Friendica account + // will be set to the same thing. + + $tz = 'UTC'; + + $x = q("select timezone from user where uid = %d limit 1", + intval($b['uid']) + ); + if($x && strlen($x[0]['timezone'])) + $tz = $x[0]['timezone']; + + $lj_username = xmlify(PConfig::get($b['uid'],'ljpost','lj_username')); + $lj_password = xmlify(PConfig::get($b['uid'],'ljpost','lj_password')); + $lj_journal = xmlify(PConfig::get($b['uid'],'ljpost','lj_journal')); +// if(! $lj_journal) +// $lj_journal = $lj_username; + + $lj_blog = xmlify(PConfig::get($b['uid'],'ljpost','lj_blog')); + if(! strlen($lj_blog)) + $lj_blog = xmlify('http://www.livejournal.com/interface/xmlrpc'); + + if($lj_username && $lj_password && $lj_blog) { + $title = xmlify($b['title']); + $post = BBCode::convert($b['body']); + $post = xmlify($post); + $tags = ljpost_get_tags($b['tag']); + + $date = DateTimeFormat::convert($b['created'], $tz); + $year = intval(substr($date,0,4)); + $mon = intval(substr($date,5,2)); + $day = intval(substr($date,8,2)); + $hour = intval(substr($date,11,2)); + $min = intval(substr($date,14,2)); + + $xml = <<< EOT + + + LJ.XMLRPC.postevent + + + + username$lj_username + password$lj_password + event$post + subject$title + lineendingsunix + year$year + mon$mon + day$day + hour$hour + min$min + usejournal$lj_username + + props + + + + useragent + Friendica + + + taglist + $tags + + + + + + + EOT; -logger('ljpost: data: ' . $xml, LOGGER_DATA); - -if($lj_blog !== 'test') -$x = post_url($lj_blog,$xml); -logger('posted to livejournal: ' . ($x) ? $x : ''); + logger('ljpost: data: ' . $xml, LOGGER_DATA); + if ($lj_blog !== 'test') { + $x = Network::post($lj_blog, $xml, ["Content-Type: text/xml"]); + } + logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); } } + +function ljpost_get_tags($post) +{ + preg_match_all("/\]([^\[#]+)\[/",$post,$matches); + $tags = implode(', ',$matches[1]); + return $tags; +}