From f1d01a4e508f534d4f62645d7f4103fe6571dd71 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 27 Feb 2012 16:30:53 +0100 Subject: [PATCH 01/16] Facebook: Don't import empty messages --- facebook/facebook.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index 6b6c7f84..c5f3a0b7 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1016,12 +1016,17 @@ function fb_consume_stream($uid,$j,$wall = false) { $datarray['private'] = 1; $datarray['allow_cid'] = '<' . $uid . '>'; } - + + if(trim($datarray['body']) == '') { + logger('facebook: empty body'); + continue; + } + $top_item = item_store($datarray); $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($top_item), intval($uid) - ); + ); if(count($r)) { $orig_post = $r[0]; logger('fb: new top level item posted'); From c35b9f94ba65c2156e477e4723eee5fa5b710210 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 3 Mar 2012 09:12:33 -0500 Subject: [PATCH 02/16] added a link in the IRC page to the tldp.org Beginner's Guide to IRC. --- irc/irc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/irc/irc.php b/irc/irc.php index 397844e0..a66fc826 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -35,6 +35,7 @@ $o = ''; // add the chatroom frame and some html $o .= <<< EOT

IRC chat

+

a beginner's guid to using IRC.

EOT; From 0f3f8deee3b1cc9a1ec18a4184903aa95fe819f2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:24:05 +0100 Subject: [PATCH 03/16] Pages: New plugin that displays a list of community pages on the sidebar. --- pages/README | 3 ++ pages/pages.php | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ pages/test.php | 28 ++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100755 pages/README create mode 100755 pages/pages.php create mode 100644 pages/test.php diff --git a/pages/README b/pages/README new file mode 100755 index 00000000..6ec314b7 --- /dev/null +++ b/pages/README @@ -0,0 +1,3 @@ +Pages + +Shows lists of community pages diff --git a/pages/pages.php b/pages/pages.php new file mode 100755 index 00000000..9e90cc24 --- /dev/null +++ b/pages/pages.php @@ -0,0 +1,86 @@ + + * + */ + +function pages_install() { + register_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_uninstall() { + unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_iscommunity($url, &$pagelist) { + // check every week for the status - should be enough + if ($pagelist[$url]["checked"]') != 0); + + $pagelist[$url] = array("community" => $iscommunity, "checked" => time()); + } else // Fetch from cache + $iscommunity = $pagelist[$url]["community"]; + return($iscommunity); +} + +function pages_getpages($uid) { + + // Fetch cached pagelist from configuration + $pagelist = get_pconfig($uid,'pages','pagelist'); + + if (sizeof($pagelist) == 0) + $pagelist = array(); + + $contacts = q("SELECT `id`, `url`, `Name` FROM `contact` + WHERE `network`= 'dfrn' AND `uid` = %d", + intval($uid)); + + $pages = array(); + + // Look if the profile is a community page + foreach($contacts as $contact) { + if (pages_iscommunity($contact["url"], $pagelist)) + $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"], "id"=>$contact["id"]); + } + + // Write back cached pagelist + set_pconfig($uid,'pages','pagelist', $pagelist); + return($pages); +} + +function pages_page_end($a,&$b) { + // Only move on if if it's the "network" module and there is a logged on user + if (($a->module != "network") OR ($a->user['uid'] == 0)) + return; + + $pages = '
+
+

'.t("Community").'

+
"; + if (sizeof($contacts) > 0) + $a->page['aside'] = $pages.$a->page['aside']; +} +?> diff --git a/pages/test.php b/pages/test.php new file mode 100644 index 00000000..4490c4a1 --- /dev/null +++ b/pages/test.php @@ -0,0 +1,28 @@ +"Blubb"); +$test[] = array("test"=>"Blubb"); + +print_r($test); +$serial = serialize($test); + +print_r(unserialize($serial)); +die(); + +$url = "https://pirati.ca/profile/test1"; + +$ch = curl_init(); + +curl_setopt($ch, CURLOPT_URL, $url); +curl_setopt($ch, CURLOPT_HEADER, 0); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +curl_setopt($ch, CURLOPT_TIMEOUT, 2); + +$page = curl_exec($ch); + +curl_close($ch); + +if (strpos($page, '')) + echo "Ping"; + +?> From a0f3c982ef5d1e6aced8e78c91560d7642652f7c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:28:39 +0100 Subject: [PATCH 04/16] Pages: Added pages.tgz --- pages.tgz | Bin 0 -> 1446 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pages.tgz diff --git a/pages.tgz b/pages.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7be170afa3a968cc049ec11260e8ae8a386629ab GIT binary patch literal 1446 zcmV;X1zGwZiwFS9?p#j*1MOICQ`<%m<}3ac+Z#8M8DrVtmkzO=(!`l`CP2m^$p?nP zXX|X;SeDe&2|_#h@7+DgMi>IL9VhKn3u8&Q&+YrI){gj0#Lm`6sgBfXwdlHsH`%pg z)-&2_G&*~o#(sUjxxZC!)c4xWEog1ltdx>ia|N&^=i))!WBmUpMJE5|vle;LMsz%q z|7NSx$nxKAw%U~cJ^b5(`bMl-qyKsSyDu>7C1+=+1Uqod7vcckQ8CctD-lnWjI<1c z19 z+;zjiSu18@q+(Xk%Jb5fJ4(=xyqYA~lp-0g!e*BfV62mUUUYPhUj0K1wOlDqbTTa1V2|6Rm=V#0a5-vOMYPk@0W%s9c zvtHln7)7M%lP3buVF)2gLnT3|QCSkWFco^@<&{oVxG>L=3a8Q+D4>jp9!yXdCP``= z9mZAj919&r+D1ebUVa$9J$ZL}ftM5=PCVm);Y?1J}%;7dW)+!3)H0GH5?m}n| z0iK>7n<|OnvZ&5xlCKgq4B5UcE_qh2oSMc9ttS!u9%h_A!dfErwYj zj&yIWa+5A*;P*h{~8wI zr2s@?tmt1`u?aoPlFAU^CYS?`Ef5(h%Z4A$W@tBVOk$zZ+C%ZX{S1x=c_pF(Cqpny z!k$^^m35xhB?UaS|5iy@T~}U$bbHLK?8ed+W3I4g_&kn#>`Je&1R@C+kQ2wr8f2pHQ8d zw>5Itmn#>H@m&s{64M^DY9yUHz?jDZ3(rOe93@<-9OT`qu$r|Bkk7}$XMj^2ZtXGg z8DHE1_tB|f&M+k8_x5_-)>zl!7#LsnnJLzsiO9l8q(MtR36k$POGhiv&l(OIPW#U+ zPLZXQr-d8W?y#t8U-V1gd+^IBon*9#^~T13Gv~LP&9BY>je5Pc{QlQ&cWC}^bm;qE zG5>F#()qtsrV7Zv2k065I{U>>#$$%({BcAnQuyY(P_}{67Hkxf`?w{&!PB$it-wi; zW2U$C(sZRT?@5|WPyq9^j^YEyG2a|yZNi=GjcIDP!3cWKMEaz8^hwj`Uz$aqI*ERL z4!t{tng;aG=T2-_V&a9s-pOD_Vf**=qJq9XrTu@1g?=>Hl#WM#|7*6>{*Q~zdV~6Z zqgC|(Z$jyhJ*7u}-TB^D7F19{1r=0KK?N05P(cM1R8T<$74&!MPtA!j-T){709H5E AHUIzs literal 0 HcmV?d00001 From bdbefde50a5645071d90b6e69d73afec8962c485 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:43:37 +0100 Subject: [PATCH 05/16] Removed the test file --- pages/test.php | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 pages/test.php diff --git a/pages/test.php b/pages/test.php deleted file mode 100644 index 4490c4a1..00000000 --- a/pages/test.php +++ /dev/null @@ -1,28 +0,0 @@ -"Blubb"); -$test[] = array("test"=>"Blubb"); - -print_r($test); -$serial = serialize($test); - -print_r(unserialize($serial)); -die(); - -$url = "https://pirati.ca/profile/test1"; - -$ch = curl_init(); - -curl_setopt($ch, CURLOPT_URL, $url); -curl_setopt($ch, CURLOPT_HEADER, 0); -curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); -curl_setopt($ch, CURLOPT_TIMEOUT, 2); - -$page = curl_exec($ch); - -curl_close($ch); - -if (strpos($page, '')) - echo "Ping"; - -?> From 61edc9ff5ec7ae160223562ee82088a84c4b9753 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 15 Mar 2012 21:15:40 +0100 Subject: [PATCH 06/16] Pages: Some minor improvements (I guess) :) --- pages/pages.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/pages.php b/pages/pages.php index 9e90cc24..bc56d2e4 100755 --- a/pages/pages.php +++ b/pages/pages.php @@ -21,6 +21,8 @@ function pages_iscommunity($url, &$pagelist) { // When too old or not found fetch the status from the profile $ch = curl_init(); + $url = str_replace("/profile/","/hcard/", $url); + curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); From 3503adb8cc699a27993cd612d63b7f6434a9f64c Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 01:21:38 -0700 Subject: [PATCH 07/16] facebook comment notifications --- adult_smile.tgz | Bin 2297 -> 3555 bytes facebook.tgz | Bin 14028 -> 14380 bytes facebook/facebook.php | 43 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/adult_smile.tgz b/adult_smile.tgz index 59d7437cff70b489c78be6cfa9650e47cf2d99ea..67e2a31ef81ce94d43c433106ac65c3960da4a43 100644 GIT binary patch literal 3555 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 T!37sw_+Q{(RrN8n04M+ewzzve diff --git a/facebook.tgz b/facebook.tgz index 3039b11d01af983d5daaf6d07a0009885626ff91..783425cedb897604f662a7b1261b797dc0e28e49 100644 GIT binary patch delta 14321 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 delta 13947 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 Vte^F>e*W)2{{yNBfu;cP001I-&from->id . '/picture'; $cmntdata['body'] = $cmnt->message; $item = item_store($cmntdata); + + $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ", + dbesc($orig_post['uri']), + intval($uid) + ); + + if(count($myconv)) { + $importer_url = $a->get_baseurl() . '/profile/' . $user[0]['nickname']; + + foreach($myconv as $conv) { + + // now if we find a match, it means we're in this conversation + + if(! link_compare($conv['author-link'],$importer_url)) + continue; + + require_once('include/enotify.php'); + + $conv_parent = $conv['parent']; + + notification(array( + 'type' => NOTIFY_COMMENT, + 'notify_flags' => $user[0]['notify-flags'], + 'language' => $user[0]['language'], + 'to_name' => $user[0]['username'], + 'to_email' => $user[0]['email'], + 'uid' => $user[0]['uid'], + 'item' => $cmntdata, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $item, + 'source_name' => $cmntdata['author-name'], + 'source_link' => $cmntdata['author-link'], + 'source_photo' => $cmntdata['author-avatar'], + 'verb' => ACTIVITY_POST, + 'otype' => 'item', + 'parent' => $conv_parent, + )); + + // only send one notification + break; + } + } } } } From 7949cf3f5332352065ff3730b9d0d3b47e223d11 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 16:40:17 -0400 Subject: [PATCH 08/16] cleaned up where "lj" was included in dwpost.css changed my profile url to the current, free-haven profile, in all plugins to which I have contributed added insanejournal.com plugin, ijpost other minor cleanup of details, where a plugin was copied and modified but incorrect details were left. --- dwpost/dwpost.css | 8 +- dwpost/dwpost.php | 2 +- ijpost.tar.gz | Bin 0 -> 20480 bytes ijpost/ijpost.css | 15 ++++ ijpost/ijpost.php | 218 ++++++++++++++++++++++++++++++++++++++++++++++ irc/irc.php | 2 +- ljpost/ljpost.php | 2 +- 7 files changed, 240 insertions(+), 7 deletions(-) create mode 100644 ijpost.tar.gz create mode 100644 ijpost/ijpost.css create mode 100644 ijpost/ijpost.php diff --git a/dwpost/dwpost.css b/dwpost/dwpost.css index 8edab3d9..3b0ee32a 100644 --- a/dwpost/dwpost.css +++ b/dwpost/dwpost.css @@ -1,15 +1,15 @@ -#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label { +#dwpost-enable-label, #dwpost-username-label, #dwpost-password-label, #dwpost-bydefault-label { float: left; width: 200px; margin-top: 10px; } -#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault { +#dwpost-checkbox, #dwpost-username, #dwpost-password, #dwpost-bydefault { float: left; margin-top: 10px; } -#ljpost-submit { +#dwpost-submit { margin-top: 15px; -} \ No newline at end of file +} diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index c7bfd939..bb455726 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -4,7 +4,7 @@ * Name: Dreamwidth Post Connector * Description: Post to dreamwidth * Version: 1.0 - * Author: Tony Baldwin + * Author: Tony Baldwin * Author: Michael Johnston */ diff --git a/ijpost.tar.gz b/ijpost.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c274902c05308c6dd20bfbad08813f95aad69375 GIT binary patch literal 20480 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 + */ + +function ijpost_install() { + register_hook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); + register_hook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); + register_hook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); + register_hook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); + register_hook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); + +} +function ijpost_uninstall() { + unregister_hook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local'); + unregister_hook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send'); + unregister_hook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets'); + unregister_hook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings'); + unregister_hook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post'); + +} + + +function ijpost_jot_nets(&$a,&$b) { + if(! local_user()) + return; + + $dw_post = get_pconfig(local_user(),'ijpost','post'); + if(intval($dw_post) == 1) { + $dw_defpost = get_pconfig(local_user(),'ijpost','post_by_default'); + $selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : ''); + $b .= '
' + . t('Post to InsaneJournal') . '
'; + } +} + + +function ijpost_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(),'ijpost','post'); + + $checked = (($enabled) ? ' checked="checked" ' : ''); + + $def_enabled = get_pconfig(local_user(),'ijpost','post_by_default'); + + $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); + + $dw_username = get_pconfig(local_user(), 'ijpost', 'dw_username'); + $dw_password = get_pconfig(local_user(), 'ijpost', 'dw_password'); + + + /* Add some HTML to the existing form */ + + $s .= '
'; + $s .= '

' . t('InsaneJournal Post Settings') . '

'; + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + $s .= '
'; + $s .= ''; + $s .= ''; + $s .= '
'; + + /* provide a submit button */ + + $s .= '
'; + +} + + +function ijpost_settings_post(&$a,&$b) { + + if(x($_POST,'ijpost-submit')) { + + set_pconfig(local_user(),'ijpost','post',intval($_POST['ijpost'])); + set_pconfig(local_user(),'ijpost','post_by_default',intval($_POST['dw_bydefault'])); + set_pconfig(local_user(),'ijpost','dw_username',trim($_POST['dw_username'])); + set_pconfig(local_user(),'ijpost','dw_password',trim($_POST['dw_password'])); + + } + +} + +function ijpost_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; + + $dw_post = intval(get_pconfig(local_user(),'ijpost','post')); + + $dw_enable = (($dw_post && x($_REQUEST,'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0); + + if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ijpost','post_by_default'))) + $dw_enable = 1; + + if(! $dw_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'ijpost'; +} + + + + +function ijpost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'ijpost')) + return; + + if($b['parent'] != $b['id']) + return; + + // InsaneJournal post in the IJ 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']; + + $dw_username = get_pconfig($b['uid'],'ijpost','dw_username'); + $dw_password = get_pconfig($b['uid'],'ijpost','dw_password'); + $dw_blog = 'http://www.insanejournal.com/interface/xmlrpc'; + + if($dw_username && $dw_password && $dw_blog) { + + require_once('include/bbcode.php'); + require_once('include/datetime.php'); + + $title = $b['title']; + $post = bbcode($b['body']); + $post = xmlify($post); + + $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); + $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 + + +year$year +mon$mon +day$day +hour$hour +min$min +event$post +username$dw_username +password$dw_password +subject$title +lineendingsunix +ver1 +props + +useragentFriendica +taglistfriendica + + + + + +EOT; + + logger('ijpost: data: ' . $xml, LOGGER_DATA); + + if($dw_blog !== 'test') + $x = post_url($dw_blog,$xml); + logger('posted to insanejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); + + } +} + diff --git a/irc/irc.php b/irc/irc.php index a66fc826..cf86a446 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -3,7 +3,7 @@ * Name: IRC Chat Plugin * Description: add an Internet Relay Chat chatroom * Version: 1.0 -* Author: tony baldwin +* Author: tony baldwin */ diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 8431b134..14bac69e 100644 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -4,7 +4,7 @@ * Name: LiveJournal Post Connector * Description: Post to LiveJournal * Version: 1.0 - * Author: Tony Baldwin + * Author: Tony Baldwin * Author: Michael Johnston */ From 6696cc4cd1dc42bdd5d0ec38b8b18af6c3d64193 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 16:49:40 -0400 Subject: [PATCH 09/16] minor adjustment to ijpost.php --- ijpost/ijpost.php | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index df7fc781..20d4f81d 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -29,10 +29,10 @@ function ijpost_jot_nets(&$a,&$b) { if(! local_user()) return; - $dw_post = get_pconfig(local_user(),'ijpost','post'); - if(intval($dw_post) == 1) { - $dw_defpost = get_pconfig(local_user(),'ijpost','post_by_default'); - $selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : ''); + $ij_post = get_pconfig(local_user(),'ijpost','post'); + if(intval($ij_post) == 1) { + $ij_defpost = get_pconfig(local_user(),'ijpost','post_by_default'); + $selected = ((intval($ij_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' . t('Post to InsaneJournal') . '
'; } @@ -58,8 +58,8 @@ function ijpost_settings(&$a,&$s) { $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); - $dw_username = get_pconfig(local_user(), 'ijpost', 'dw_username'); - $dw_password = get_pconfig(local_user(), 'ijpost', 'dw_password'); + $ij_username = get_pconfig(local_user(), 'ijpost', 'ij_username'); + $ij_password = get_pconfig(local_user(), 'ijpost', 'ij_password'); /* Add some HTML to the existing form */ @@ -73,17 +73,17 @@ function ijpost_settings(&$a,&$s) { $s .= '
'; $s .= ''; - $s .= ''; + $s .= ''; $s .= '
'; $s .= '
'; $s .= ''; - $s .= ''; + $s .= ''; $s .= '
'; $s .= '
'; $s .= ''; - $s .= ''; + $s .= ''; $s .= '
'; /* provide a submit button */ @@ -98,9 +98,9 @@ function ijpost_settings_post(&$a,&$b) { if(x($_POST,'ijpost-submit')) { set_pconfig(local_user(),'ijpost','post',intval($_POST['ijpost'])); - set_pconfig(local_user(),'ijpost','post_by_default',intval($_POST['dw_bydefault'])); - set_pconfig(local_user(),'ijpost','dw_username',trim($_POST['dw_username'])); - set_pconfig(local_user(),'ijpost','dw_password',trim($_POST['dw_password'])); + set_pconfig(local_user(),'ijpost','post_by_default',intval($_POST['ij_bydefault'])); + set_pconfig(local_user(),'ijpost','ij_username',trim($_POST['ij_username'])); + set_pconfig(local_user(),'ijpost','ij_password',trim($_POST['ij_password'])); } @@ -119,14 +119,14 @@ function ijpost_post_local(&$a,&$b) { if($b['private'] || $b['parent']) return; - $dw_post = intval(get_pconfig(local_user(),'ijpost','post')); + $ij_post = intval(get_pconfig(local_user(),'ijpost','post')); - $dw_enable = (($dw_post && x($_REQUEST,'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0); + $ij_enable = (($ij_post && x($_REQUEST,'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0); if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ijpost','post_by_default'))) - $dw_enable = 1; + $ij_enable = 1; - if(! $dw_enable) + if(! $ij_enable) return; if(strlen($b['postopts'])) @@ -160,11 +160,11 @@ function ijpost_send(&$a,&$b) { if($x && strlen($x[0]['timezone'])) $tz = $x[0]['timezone']; - $dw_username = get_pconfig($b['uid'],'ijpost','dw_username'); - $dw_password = get_pconfig($b['uid'],'ijpost','dw_password'); - $dw_blog = 'http://www.insanejournal.com/interface/xmlrpc'; + $ij_username = get_pconfig($b['uid'],'ijpost','ij_username'); + $ij_password = get_pconfig($b['uid'],'ijpost','ij_password'); + $ij_blog = 'http://www.insanejournal.com/interface/xmlrpc'; - if($dw_username && $dw_password && $dw_blog) { + if($ij_username && $ij_password && $ij_blog) { require_once('include/bbcode.php'); require_once('include/datetime.php'); @@ -191,8 +191,8 @@ function ijpost_send(&$a,&$b) { hour$hour min$min event$post -username$dw_username -password$dw_password +username$ij_username +password$ij_password subject$title lineendingsunix ver1 @@ -209,8 +209,8 @@ EOT; logger('ijpost: data: ' . $xml, LOGGER_DATA); - if($dw_blog !== 'test') - $x = post_url($dw_blog,$xml); + if($ij_blog !== 'test') + $x = post_url($ij_blog,$xml); logger('posted to insanejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); } From 06e04aca2ff0665a90028e70d3f8ba6a8f173eb2 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 17:30:21 -0400 Subject: [PATCH 10/16] added Cat's tag stuff to ijpost --- dwpost/dwpost.php | 2 +- ijpost.tar.gz | Bin 20480 -> 20480 bytes ijpost/ijpost.php | 11 ++++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index 85e808c0..4e4d45e2 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -150,7 +150,7 @@ function dwpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; - // dreamwidth post in the LJ user's timezone. + // dreamwidth post in the DW user's timezone. // Hopefully the person's Friendica account // will be set to the same thing. diff --git a/ijpost.tar.gz b/ijpost.tar.gz index c274902c05308c6dd20bfbad08813f95aad69375..58da8759efc0c5d00e77d6f3c448782496256e3f 100644 GIT binary patch delta 774 zcmZvZF>ljA7>096Q0o+v7D`)^id-C1JJd>iDW(#r0mOiWR6xLl6U;R^5=V}0*$xPG zXc0>nB*cv@5g-Hu1M-CU3kW8D2Y-M8UqT{FVfyag@A3P6ukUaO4u{~?%f*_i)-*Mt zB7|xv0X2$1I|SebICDYUP9U_sg{H_Bx~L|gI!03O0IFx;d3bFQbRF*!+%;QWOe}cQ z>Dqqa*zw+V9KahMent<{#rYNvY~uU%@O`?Jo-=!f>-Yivy-=Zl=Cet&M|p0I6^S#V z5*~4nQtVpIt67^rJv=J7;MmAFl0L9NpNb+YKZ_3z9uMqRU^@2fKsLXe+0SsUM><9y2d%Dw zElU=vji#(WZ0M!tX1SqP1w~}2B90K^kDh;$qVHNxo5+#^r757JCSyDj47@oTjyF3i J{dy}Ze*u}-^-TZ( delta 566 zcmZozz}T>WaYC zWJ)RDyqk9?lQfdNl0sQxPHC#GlDdMP0#M!NegOqWpu));1;s(?PYLRQxSM|o@iT#h zxkXJuE`?dAu2WK!nX91^AK)Jx60HtY5F=^=_DW)Lae01G3WkEsYedz-7F-o`5Coc( znwOZAld52=prHYBrkeO>Rb){^Yc6m=WTt5-g4_pHugNv}zJ&N@QHdh3t2(80uzLCg zM7#jz7+7GiOWP|U`9eWW4Qw_{9h5&gLwdz#GZ}Bx0KPA;IeDwRJSb4E$uDALOq;Bw cs4{t`VizcQRFzafl($mUW+nCOjEhus03^(?UH||9 diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index 20d4f81d..4eb1d890 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -5,6 +5,8 @@ * Description: Post to insanejournal * Version: 1.0 * Author: Tony Baldwin + * Author: Michael Johnston + * Author: Cat Gray */ function ijpost_install() { @@ -172,6 +174,7 @@ function ijpost_send(&$a,&$b) { $title = $b['title']; $post = bbcode($b['body']); $post = xmlify($post); + $tags = ijpost_get_tags($b['tag']); $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s'); $year = intval(substr($date,0,4)); @@ -199,7 +202,7 @@ function ijpost_send(&$a,&$b) { props useragentFriendica -taglistfriendica +taglist$tags @@ -216,3 +219,9 @@ EOT; } } +function ijpost_get_tags($post) +{ + preg_match_all("/\]([^\[#]+)\[/",$post,$matches); + $tags = implode(', ',$matches[1]); + return $tags; +} From f26c87aaeaf4f6e11034729f6e642104a107cfb9 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 17:53:53 -0400 Subject: [PATCH 11/16] minor alterations, mostly to ijpost --- dwpost/dwpost.php | 59 +++++++++++++++++++++------------ ijpost.tar.gz | Bin 20480 -> 20480 bytes ijpost/ijpost.php | 81 ++++++++++++++++++++++++++++------------------ ljpost/ljpost.php | 2 -- 4 files changed, 87 insertions(+), 55 deletions(-) diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index 4e4d45e2..1717be11 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -166,6 +166,10 @@ function dwpost_send(&$a,&$b) { $dw_password = get_pconfig($b['uid'],'dwpost','dw_password'); $dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc'; + $dw_blog = xmlify(get_pconfig($b['uid'],'dwpost','dw_blog')); + if(! strlen($dw_blog)) + $dw_blog = xmlify('http://www.dreamwidth.org/interface/xmlrpc'); + if($dw_username && $dw_password && $dw_blog) { require_once('include/bbcode.php'); @@ -185,27 +189,40 @@ function dwpost_send(&$a,&$b) { $xml = <<< EOT -LJ.XMLRPC.postevent - - -year$year -mon$mon -day$day -hour$hour -min$min -event$post -username$dw_username -password$dw_password -subject$title -lineendingsunix -ver1 -props - -useragentFriendica -taglist$tags - - - + + LJ.XMLRPC.postevent + + + + username$dw_username + password$dw_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; diff --git a/ijpost.tar.gz b/ijpost.tar.gz index 58da8759efc0c5d00e77d6f3c448782496256e3f..635eee21ef39aaa02a71735113ed0521807619c6 100644 GIT binary patch delta 878 zcmZvZKX21O7{+rXYH?6gi6WuKYI0EmiIFPXaiR`A+=!u4q=*G1281eyT*F2FC)?rg zK(n<=i*#az3I-MiB!2@I2E@!K;7c&!v(K?x;pv{|{k_k7=lAFw9G!!AXBDm2QwoZz zs@;A8_NfXcApi>?b`?$O7F2adQ=?-7X=+a^KqY~Sn*hwHSlSIAl}0OcSXv9em5+<7 z#P$sv&*)y|V|ot%RK6Bt;=}dtD8$3`gOc%_>-ZX_@5kRfoQ> zZqvouMou@IuHpMH9B!J)Ks*9%^d|+$*xE+wd#O)_i_*?u8ie(7t>#gk_2$5@ehUM## zlL{R@H_SOstk{kQ&z}aFK_Av1TxAvZ(Jy&%tv<{uf9s=6?8Ez+__1{_6GCl}iD6!x z)N*|lH+x=O@_Z3+7&tg)~D8;e`?+DZ2$lO delta 504 zcmZXPJxjw-6oz|M{D@jbYSl)X+gdCYB)P4zpfQwg6|sZjBBH6i)JmI#+_Zv|;;!Nm z#6?9B5!~_%#KpfMIJ!Bx8Eh()4u|vcK8JJOqdRnThtALZQc{+D5+Ni>d{_p8iVi}@ zh$rbeIqf4PogzuegHmK(@?og~bxt6(41Cuj>T@=_R=Rs~I@5Hz>^yU)oy`VR|828& zKK(EMf^#+U-pzX}M$OW-3N{U9F~47+)3+|(F5Fsx!c zvB>qs%KO`eic!K#7~XghzWLMsSYb16m+cCTZ#kEf4+s{*vsf`TORF-qkyTEqYn2*R z6=qwtU0dZKkF#)%Gw|U?B9a9b$-ughgPZUg{J8NbtiX@3I;>P_wLmRZ(X}d7>lAiy z01q;UpTmh;qG61YV;72nxgS6&-cwvLbpv dE28H?^j_lHBzN-XTXlA(QXTixGY^?W$1g(wqrm_G diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index 4eb1d890..a166e319 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -1,8 +1,8 @@ * Author: Michael Johnston @@ -36,7 +36,7 @@ function ijpost_jot_nets(&$a,&$b) { $ij_defpost = get_pconfig(local_user(),'ijpost','post_by_default'); $selected = ((intval($ij_defpost) == 1) ? ' checked="checked" ' : ''); $b .= '
' - . t('Post to InsaneJournal') . '
'; + . t('Post to insanejournal') . ''; } } @@ -67,9 +67,9 @@ function ijpost_settings(&$a,&$s) { /* Add some HTML to the existing form */ $s .= '
'; - $s .= '

' . t('InsaneJournal Post Settings') . '

'; + $s .= '

' . t('insanejournal Post Settings') . '

'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; @@ -84,7 +84,7 @@ function ijpost_settings(&$a,&$s) { $s .= '
'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; @@ -150,7 +150,7 @@ function ijpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; - // InsaneJournal post in the IJ user's timezone. + // insanejournal post in the LJ user's timezone. // Hopefully the person's Friendica account // will be set to the same thing. @@ -162,16 +162,20 @@ function ijpost_send(&$a,&$b) { if($x && strlen($x[0]['timezone'])) $tz = $x[0]['timezone']; - $ij_username = get_pconfig($b['uid'],'ijpost','ij_username'); - $ij_password = get_pconfig($b['uid'],'ijpost','ij_password'); - $ij_blog = 'http://www.insanejournal.com/interface/xmlrpc'; + $ij_username = xmlify(get_pconfig($b['uid'],'ijpost','ij_username')); + $ij_password = xmlify(get_pconfig($b['uid'],'ijpost','ij_password')); + $ij_journal = xmlify(get_pconfig($b['uid'],'ijpost','ij_journal')); + + $ij_blog = xmlify(get_pconfig($b['uid'],'ijpost','ij_blog')); + if(! strlen($ij_blog)) + $ij_blog = xmlify('http://www.insanejournal.com/interface/xmlrpc'); if($ij_username && $ij_password && $ij_blog) { require_once('include/bbcode.php'); require_once('include/datetime.php'); - $title = $b['title']; + $title = xmlify($b['title']); $post = bbcode($b['body']); $post = xmlify($post); $tags = ijpost_get_tags($b['tag']); @@ -185,27 +189,40 @@ function ijpost_send(&$a,&$b) { $xml = <<< EOT -LJ.XMLRPC.postevent - - -year$year -mon$mon -day$day -hour$hour -min$min -event$post -username$ij_username -password$ij_password -subject$title -lineendingsunix -ver1 -props - -useragentFriendica -taglist$tags - - - + + LJ.XMLRPC.postevent + + + + username$ij_username + password$ij_password + event$post + subject$title + lineendingsunix + year$year + mon$mon + day$day + hour$hour + min$min + usejournal$ij_username + + props + + + + useragent + Friendica + + + taglist + $tags + + + + + + + EOT; diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index ddcd2890..717b77c1 100755 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -165,8 +165,6 @@ function ljpost_send(&$a,&$b) { $lj_username = xmlify(get_pconfig($b['uid'],'ljpost','lj_username')); $lj_password = xmlify(get_pconfig($b['uid'],'ljpost','lj_password')); $lj_journal = xmlify(get_pconfig($b['uid'],'ljpost','lj_journal')); -// if(! $lj_journal) -// $lj_journal = $lj_username; $lj_blog = xmlify(get_pconfig($b['uid'],'ljpost','lj_blog')); if(! strlen($lj_blog)) From 3d38180d8f61c9922f4bbdbda0ac5010463a0b0e Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 18:34:25 -0400 Subject: [PATCH 12/16] corrections, minor alterations --- dwpost/dwpost.php | 61 ++++++++++++++------------------------ ijpost.tar.gz | Bin 20480 -> 20480 bytes ijpost/ijpost.php | 73 ++++++++++++++++++---------------------------- ljpost/ljpost.php | 2 ++ 4 files changed, 52 insertions(+), 84 deletions(-) diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index 1717be11..85e808c0 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -150,7 +150,7 @@ function dwpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; - // dreamwidth post in the DW user's timezone. + // dreamwidth post in the LJ user's timezone. // Hopefully the person's Friendica account // will be set to the same thing. @@ -166,10 +166,6 @@ function dwpost_send(&$a,&$b) { $dw_password = get_pconfig($b['uid'],'dwpost','dw_password'); $dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc'; - $dw_blog = xmlify(get_pconfig($b['uid'],'dwpost','dw_blog')); - if(! strlen($dw_blog)) - $dw_blog = xmlify('http://www.dreamwidth.org/interface/xmlrpc'); - if($dw_username && $dw_password && $dw_blog) { require_once('include/bbcode.php'); @@ -189,40 +185,27 @@ function dwpost_send(&$a,&$b) { $xml = <<< EOT - - LJ.XMLRPC.postevent - - - - username$dw_username - password$dw_password - event$post - subject$title - lineendingsunix - year$year - mon$mon - day$day - hour$hour - min$min - usejournal$lj_username - - props - - - - useragent - Friendica - - - taglist - $tags - - - - - - - +LJ.XMLRPC.postevent + + +year$year +mon$mon +day$day +hour$hour +min$min +event$post +username$dw_username +password$dw_password +subject$title +lineendingsunix +ver1 +props + +useragentFriendica +taglist$tags + + + EOT; diff --git a/ijpost.tar.gz b/ijpost.tar.gz index 635eee21ef39aaa02a71735113ed0521807619c6..2903c31752eccdf59dbe0ab5d12f2744733dc457 100644 GIT binary patch delta 429 zcmZozz}T>WaY7%zp@Ff934?*5p`no(gM#T~L&lWNjEs$p(uU?Hre+L=hUUhGMleOj zhGr%V3I-5G%pQ!4o}0Z`-f{vd3qD6~AXOzP#W>lYmuK>FDaFZ+ymCNVT%sVcxVSvO zC`DbL$wT&(CYIYi!b@;tfV z$v=U3sl3nRpYnbJHo2*}NvTD4HhGD;sdiSh~#s2}v9 aPU6Cl0*ZkBZMQi=*@S74n$}_mO(p>8f{6kE delta 828 zcmZvZ!Aj#m7{@!SpsAn-7ZzJ=Cs=K>ph=n*1;zbj}bGp86=+P&K4839GpvIwzeE_WRaPmotUK_JJGvFw^S}1_2AC7IE zU)Jc)!fHX;%u5yP;ky(o_ORodk&_A&eZ%&Ea4WW>#)Gp!81$rkGR-RNp?|U>Up^3(=kk#dyYN_u$Hh-V zOqW_h>}SPoDTDnjwF;7i9OATzXCfCn#2ok}`I8jOALy{WaxIYP_edP;d%eDo)c8p3 zCO3=#38lAVVieCPCetn+?h-f1M6e=HVF8xgHTOJ=xE;DCzu)Gkk($h!$T5{f2e@ln w{;Od6RbD=QD+8&SVUaqzh3Le060LGXGABim8n2seGW;hu-q9AYe^oxd02O51TmS$7 diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index a166e319..00bc375e 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -2,7 +2,7 @@ /** * Name: Insanejournal Post Connector - * Description: Post to insanejournal + * Description: Post to Insanejournal * Version: 1.0 * Author: Tony Baldwin * Author: Michael Johnston @@ -67,7 +67,7 @@ function ijpost_settings(&$a,&$s) { /* Add some HTML to the existing form */ $s .= '
'; - $s .= '

' . t('insanejournal Post Settings') . '

'; + $s .= '

' . t('Insanejournal Post Settings') . '

'; $s .= '
'; $s .= ''; $s .= ''; @@ -150,7 +150,7 @@ function ijpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; - // insanejournal post in the LJ user's timezone. + // insanejournal post in the IJ user's timezone. // Hopefully the person's Friendica account // will be set to the same thing. @@ -162,20 +162,16 @@ function ijpost_send(&$a,&$b) { if($x && strlen($x[0]['timezone'])) $tz = $x[0]['timezone']; - $ij_username = xmlify(get_pconfig($b['uid'],'ijpost','ij_username')); - $ij_password = xmlify(get_pconfig($b['uid'],'ijpost','ij_password')); - $ij_journal = xmlify(get_pconfig($b['uid'],'ijpost','ij_journal')); - - $ij_blog = xmlify(get_pconfig($b['uid'],'ijpost','ij_blog')); - if(! strlen($ij_blog)) - $ij_blog = xmlify('http://www.insanejournal.com/interface/xmlrpc'); + $ij_username = get_pconfig($b['uid'],'ijpost','ij_username'); + $ij_password = get_pconfig($b['uid'],'ijpost','ij_password'); + $ij_blog = 'http://www.insanejournal.com/interface/xmlrpc'; if($ij_username && $ij_password && $ij_blog) { require_once('include/bbcode.php'); require_once('include/datetime.php'); - $title = xmlify($b['title']); + $title = $b['title']; $post = bbcode($b['body']); $post = xmlify($post); $tags = ijpost_get_tags($b['tag']); @@ -189,40 +185,27 @@ function ijpost_send(&$a,&$b) { $xml = <<< EOT - - LJ.XMLRPC.postevent - - - - username$ij_username - password$ij_password - event$post - subject$title - lineendingsunix - year$year - mon$mon - day$day - hour$hour - min$min - usejournal$ij_username - - props - - - - useragent - Friendica - - - taglist - $tags - - - - - - - +LJ.XMLRPC.postevent + + +year$year +mon$mon +day$day +hour$hour +min$min +event$post +username$ij_username +password$ij_password +subject$title +lineendingsunix +ver1 +props + +useragentFriendica +taglist$tags + + + EOT; diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index 717b77c1..ddcd2890 100755 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -165,6 +165,8 @@ function ljpost_send(&$a,&$b) { $lj_username = xmlify(get_pconfig($b['uid'],'ljpost','lj_username')); $lj_password = xmlify(get_pconfig($b['uid'],'ljpost','lj_password')); $lj_journal = xmlify(get_pconfig($b['uid'],'ljpost','lj_journal')); +// if(! $lj_journal) +// $lj_journal = $lj_username; $lj_blog = xmlify(get_pconfig($b['uid'],'ljpost','lj_blog')); if(! strlen($lj_blog)) From b1fb01437fd54dd0946a043b14f85c75fa416bdb Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sat, 17 Mar 2012 19:17:07 -0400 Subject: [PATCH 13/16] another attempt having difficulties perhaps resolved? --- ijpost.tar.gz | Bin 20480 -> 20480 bytes ijpost/ijpost.php | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ijpost.tar.gz b/ijpost.tar.gz index 2903c31752eccdf59dbe0ab5d12f2744733dc457..4c67d491fe871bcc1408017595db64a468050e1e 100644 GIT binary patch delta 156 zcmZozz}T>WaY8?zsga>MgMp!;p|KHzg6U*K#+1#BjD3tSabrVs0|o^Hh&b~?_Q{?s zyqni^^)WMgO}68k&+eI5oS2vDwfPC3J|mnXC18Ny1PaWaY8?zfw74RgMp!;p^+Jbg6U*K#+1#BjD3tSabrU>69xqXh&b~?cE-%j zi@9boGiFV; ' - . t('Post to insanejournal') . '
'; + . t('Post to Insanejournal') . '
'; } } @@ -67,24 +67,24 @@ function ijpost_settings(&$a,&$s) { /* Add some HTML to the existing form */ $s .= '
'; - $s .= '

' . t('Insanejournal Post Settings') . '

'; + $s .= '

' . t('InsaneJournal Post Settings') . '

'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; $s .= '
'; - $s .= ''; + $s .= ''; $s .= ''; $s .= '
'; @@ -150,7 +150,7 @@ function ijpost_send(&$a,&$b) { if($b['parent'] != $b['id']) return; - // insanejournal post in the IJ user's timezone. + // insanejournal post in the LJ user's timezone. // Hopefully the person's Friendica account // will be set to the same thing. From cf6f514fe977c54a6f1fc5dd5fb1d577bb1520d1 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sun, 18 Mar 2012 09:37:46 -0400 Subject: [PATCH 14/16] minor alteration --- ijpost/ijpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ijpost/ijpost.php b/ijpost/ijpost.php index e535ec2c..d6861f46 100644 --- a/ijpost/ijpost.php +++ b/ijpost/ijpost.php @@ -213,7 +213,7 @@ EOT; logger('ijpost: data: ' . $xml, LOGGER_DATA); if($ij_blog !== 'test') - $x = post_url($ij_blog,$xml); + $x = post_url($ij_blog,$xml,array("Content-Type: text/xml")); logger('posted to insanejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); } From 28a7fb268071406dc3a463fa7869f94b7f7f9dc7 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sun, 18 Mar 2012 09:47:39 -0400 Subject: [PATCH 15/16] replaces missing semi-colon... --- dwpost/dwpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dwpost/dwpost.php b/dwpost/dwpost.php index 85e808c0..2391b571 100644 --- a/dwpost/dwpost.php +++ b/dwpost/dwpost.php @@ -213,7 +213,7 @@ EOT; logger('dwpost: data: ' . $xml, LOGGER_DATA); if($dw_blog !== 'test') - $x = post_url($dw_blog,$xml); + $x = post_url($dw_blog,$xml,array("Content-Type: text/xml")); logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG); } From 1f50a421353f413d1a9cd364f87ec640b7198cc5 Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Sun, 18 Mar 2012 09:50:50 -0400 Subject: [PATCH 16/16] minor --- ljpost/ljpost.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php index ddcd2890..dc17e83f 100755 --- a/ljpost/ljpost.php +++ b/ljpost/ljpost.php @@ -232,7 +232,7 @@ EOT; logger('ljpost: data: ' . $xml, LOGGER_DATA); if($lj_blog !== 'test') - $x = post_url($lj_blog,$xml); + $x = post_url($lj_blog,$xml,array("Content-Type: text/xml")); logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); }