]> git.mxchange.org Git - friendica-addons.git/commitdiff
the xml POST data was missing the "usejournal" parameter,
authorTony Baldwin <tony@baldwinsoftware.com>
Thu, 1 Mar 2012 05:25:34 +0000 (00:25 -0500)
committerTony Baldwin <tony@baldwinsoftware.com>
Thu, 1 Mar 2012 05:25:34 +0000 (00:25 -0500)
required for LJ to know to which blog to post (since users
have posting permission to their own AND to community blogs).
It is now hardwired to their own, personal blog.
Eventually this should be more configurable.
Also, the plugin shouldn't be hardwired for livejournal,
but also allow dreamwidth, insanejournal, deadjournal, etc.
I'll work on that.

ljpost/ljpost.css [new file with mode: 0644]
ljpost/ljpost.php

diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css
new file mode 100644 (file)
index 0000000..8edab3d
--- /dev/null
@@ -0,0 +1,15 @@
+
+#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label {
+float: left;
+width: 200px;
+margin-top: 10px;
+}
+
+#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault {
+float: left;
+margin-top: 10px;
+}
+
+#ljpost-submit {
+margin-top: 15px;
+}
\ No newline at end of file
index de7567adb88680b9144c9f159eb88db58a86cc89..8910adb6b37676b262a4ecb1e2a8f0e49399a764 100644 (file)
@@ -1,48 +1,41 @@
 <?php
 
 /**
-* Name: LiveJournal Post Connector
-* Description: Post to LiveJournal (or anything else which uses blogger XMLRPC API)
-* Version: 1.0
-* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
-* Author: Tony Baldwin <http://theshi.re/profile/tony>
-*/
+ * Name: LiveJournal Post Connector
+ * Description: Post to LiveJournal
+ * Version: 1.0
+ * Author: Tony Baldwin <http://theshi.re/profile/tony>
+ * Author: Michael Johnston
+ */
 
 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('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('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" ' : '');
+        $lj_defpost = get_pconfig(local_user(),'ljpost','post_by_default');
+        $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : '');
         $b .= '<div class="profile-jot-net"><input type="checkbox" name="ljpost_enable" ' . $selected . ' value="1" /> '
-            . t('Post to Livejournal') . '</div>';
+            . t('Post to LiveJournal') . '</div>';
     }
 }
 
@@ -54,7 +47,7 @@ function ljpost_settings(&$a,&$s) {
 
     /* 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/ljpost/ljpost.css' . '" media="all" />' . "\r\n";
+    $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/ljpost/ljpost.css' . '" media="all" />' . "\r\n";
 
     /* Get the current state of our config variables */
 
@@ -66,9 +59,8 @@ function ljpost_settings(&$a,&$s) {
 
     $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 = get_pconfig(local_user(), 'ljpost', 'lj_username');
+       $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password');
 
 
     /* Add some HTML to the existing form */
@@ -90,14 +82,14 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog');
     $s .= '<input id="ljpost-password" type="password" name="lj_password" value="' . $lj_password . '" />';
     $s .= '</div><div class="clear"></div>';
 
-    $s .= '<div id="ljpost-blog-wrapper">';
-    $s .= '<label id="ljpost-blog-label" for="ljpost-blog">' . t('LiveJournal API URL') . '</label>';
-    $s .= '<input id="ljpost-blog" type="text" name="lj_blog" value="' . $lj_blog . '" />';
+    $s .= '<div id="ljpost-url-wrapper">';
+    $s .= '<label id="ljpost-url-label" for="ljpost-url">' . t('LiveJournal URL') . '</label>';
+    $s .= '<input id="ljpost-url" type="url" name="lj_url" value="' . $lj_url . '" />';
     $s .= '</div><div class="clear"></div>';
 
     $s .= '<div id="ljpost-bydefault-wrapper">';
     $s .= '<label id="ljpost-bydefault-label" for="ljpost-bydefault">' . t('Post to LiveJournal by default') . '</label>';
-    $s .= '<input id="ljpost-bydefault" type="checkbox" name="wp_bydefault" value="1" ' . $def_checked . '/>';
+    $s .= '<input id="ljpost-bydefault" type="checkbox" name="lj_bydefault" value="1" ' . $def_checked . '/>';
     $s .= '</div><div class="clear"></div>';
 
     /* provide a submit button */
@@ -109,37 +101,36 @@ $lj_blog = get_pconfig(local_user(), 'ljpost', 'lj_blog');
 
 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']));
+               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']));
 
-}
+       }
 
 }
 
 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(get_pconfig(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(get_pconfig(local_user(),'ljpost','post_by_default')))
+               $lj_enable = 1;
 
     if(! $lj_enable)
        return;
@@ -163,59 +154,69 @@ 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 = '<title>' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . '</title>';
-$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
-
-<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
-<methodCall><methodName>LJ.XMLRPC.postevent</methodName>
-<params><param>
-<value><struct>
-<member><name>year</name><value><int>$year</int></value></member>
-<member><name>mon</name><value><int>$month</int></value></member>
-<member><name>day</name><value><int>$day</int></value></member>
-<member><name>hour</name><value><int>$hour</int></value></member>
-<member><name>min</name><value><int>$min</int></value></member>
-<member><name>usejournal</name><value><string>$lj_blog</string></value></member>
-<member><name>event</name><value><string>$post</string></value></member>
-<member><name>username</name><value><string>$lj_username</string></value></member>
-<member><name>password</name><value><string>$lj_password</string></value></member>
-<member><name>subject</name><value><string>friendica post</string></value></member>
-<member><name>lineendings</name><value><string>unix</string></value></member>
-<member><name>ver</name><value><int>1</int></value></member>
-<member><name>props</name>
-<value><struct>
-<member><name>useragent</name><value><string>Friendica</string></value></member>
-<member><name>taglist</name><value><string>friendica,crosspost</string></value></member>
-</struct></value></member>
-</struct></value>
-</param></params>
+       // 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 = get_pconfig($b['uid'],'ljpost','lj_username');
+       $lj_password = get_pconfig($b['uid'],'ljpost','lj_password');
+       $lj_blog = '$lj_url/interface/xmlrpc';
+
+       if($lj_username && $lj_password && $lj_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
+<?xml version="1.0" encoding="utf-8"?>
+<methodCall>
+  <methodName>LJ.XMLRPC.postevent</methodName>
+  <params>
+    <param><value>
+        <struct>
+        <member><name>username</name><value><string>$lj_username</string></value></member>
+        <member><name>password</name><value><string>$lj_password</string></value></member>
+       <member><name>usejournal</name><value><string>$lj_username</string></value></member>
+        <member><name>event</name><value><string>$post</string></value></member>
+        <member><name>subject</name><value><string>$title</string></value></member>
+        <member><name>lineendings</name><value><string>unix</string></value></member>
+        <member><name>year</name><value><int>$year</int></value></member>
+        <member><name>mon</name><value><int>$mon</int></value></member>
+        <member><name>day</name><value><int>$day</int></value></member>
+        <member><name>hour</name><value><int>$hour</int></value></member>
+        <member><name>min</name><value><int>$min</int></value></member>
+        </struct>
+    </value></param>
+  </params>
 </methodCall>
 
 EOT;
 
-logger('ljpost: data: ' . $xml, LOGGER_DATA);
+               logger('ljpost: data: ' . $xml, LOGGER_DATA);
 
-if($lj_blog !== 'test')
-$x = post_url($lj_blog,$xml);
-logger('posted to livejournal: ' . ($x) ? $x : '');
+               if($lj_blog !== 'test')
+                       $x = post_url($lj_blog,$xml);
+               logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG);
 
        }
 }
+