]> git.mxchange.org Git - friendica-addons.git/commitdiff
background deliver plugins
authorFriendika <info@friendika.com>
Wed, 12 Oct 2011 01:46:33 +0000 (18:46 -0700)
committerFriendika <info@friendika.com>
Wed, 12 Oct 2011 01:46:33 +0000 (18:46 -0700)
facebook.tgz
facebook/facebook.php
statusnet.tgz
statusnet/statusnet.php
twitter.tgz
twitter/twitter.php
wppost.tgz
wppost/wppost.php

index a1617de59b08a04cf40f8a3607271b80ba8c9cef..6acb8c5c110bb51cfb6d86af7545c4c3dcd3589f 100644 (file)
Binary files a/facebook.tgz and b/facebook.tgz differ
index 0205204afd65ca88936be4309c49605b492fe0b6..22cefc0302d7aa39c3fd7f00580c6c4720cf22d0 100644 (file)
@@ -48,20 +48,26 @@ define('FACEBOOK_MAXPOSTLEN', 420);
 
 
 function facebook_install() {
-       register_hook('post_local_end',   'addon/facebook/facebook.php', 'facebook_post_hook');
+       register_hook('post_local',       'addon/facebook/facebook.php', 'facebook_post_local');
+       register_hook('notifier_normal',  'addon/facebook/facebook.php', 'facebook_post_hook');
        register_hook('jot_networks',     'addon/facebook/facebook.php', 'facebook_jot_nets');
-       register_hook('plugin_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
+       register_hook('connector_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
        register_hook('cron',             'addon/facebook/facebook.php', 'facebook_cron');
        register_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
 }
 
 
 function facebook_uninstall() {
-       unregister_hook('post_local_end',   'addon/facebook/facebook.php', 'facebook_post_hook');
+       unregister_hook('post_local',       'addon/facebook/facebook.php', 'facebook_post_local');
+       unregister_hook('notifier_normal',  'addon/facebook/facebook.php', 'facebook_post_hook');
        unregister_hook('jot_networks',     'addon/facebook/facebook.php', 'facebook_jot_nets');
-       unregister_hook('plugin_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
+       unregister_hook('connector_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
        unregister_hook('cron',             'addon/facebook/facebook.php', 'facebook_cron');
        unregister_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
+
+       // hook moved
+       unregister_hook('post_local_end',  'addon/facebook/facebook.php', 'facebook_post_hook');
+       unregister_hook('plugin_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
 }
 
 
@@ -481,6 +487,10 @@ function facebook_jot_nets(&$a,&$b) {
 
 function facebook_post_hook(&$a,&$b) {
 
+
+       if($b['deleted'] || ($b['created'] !== $b['edited']))
+               return;
+
        /**
         * Post to Facebook stream
         */
@@ -492,18 +502,16 @@ function facebook_post_hook(&$a,&$b) {
        $reply = false;
        $likes = false;
 
-       if((local_user()) && (local_user() == $b['uid'])) {
+       $toplevel = (($b['id'] == $b['parent']) ? true : false);
 
-               // Facebook is not considered a private network
-               if($b['prvnets'] && $b['private'])
-                       return;
+       if(strstr($b['postopts'],'facebook')) {
 
-               $linking = ((get_pconfig(local_user(),'facebook','no_linking')) ? 0 : 1);
+               $linking = ((get_pconfig($b['uid'],'facebook','no_linking')) ? 0 : 1);
 
-               if(($b['parent']) && ($linking)) {
+               if((! $toplevel) && ($linking)) {
                        $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                intval($b['parent']),
-                               intval(local_user())
+                               intval($b['uid'])
                        );
                        if(count($r) && substr($r[0]['uri'],0,4) === 'fb::')
                                $reply = substr($r[0]['uri'],4);
@@ -571,24 +579,14 @@ function facebook_post_hook(&$a,&$b) {
 
                        logger('facebook: have appid+secret');
 
-                       $fb_post   = intval(get_pconfig(local_user(),'facebook','post'));
-                       $fb_enable = (($fb_post && x($_POST,'facebook_enable')) ? intval($_POST['facebook_enable']) : 0);
-                       $fb_token  = get_pconfig(local_user(),'facebook','access_token');
-
-                       // if API is used, default to the chosen settings
-                       if($_POST['api_source'] && intval(get_pconfig(local_user(),'facebook','post_by_default')))
-                               $fb_enable = 1;
-
+                       $fb_token  = get_pconfig($b['uid'],'facebook','access_token');
 
 
-
-                       logger('facebook: $fb_post: ' . $fb_post . ' $fb_enable: ' . $fb_enable . ' $fb_token: ' . $fb_token,LOGGER_DEBUG); 
-
                        // post to facebook if it's a public post and we've ticked the 'post to Facebook' box, 
                        // or it's a private message with facebook participants
                        // or it's a reply or likes action to an existing facebook post                 
 
-                       if($fb_post && $fb_token && ($fb_enable || $b['private'] || $reply)) {
+                       if($fb_token && ($toplevel || $b['private'] || $reply)) {
                                logger('facebook: able to post');
                                require_once('library/facebook.php');
                                require_once('include/bbcode.php');     
@@ -741,6 +739,32 @@ function facebook_post_hook(&$a,&$b) {
 }
 
 
+function facebook_post_local(&$a,&$b) {
+
+       // Figure out if Facebook posting is enabled for this post and file it in 'postopts'
+       // where we will discover it during background delivery.
+
+       // This can only be triggered by a local user posting to their own wall.
+
+       if((local_user()) && (local_user() == $b['uid'])) {
+
+               $fb_post   = intval(get_pconfig(local_user(),'facebook','post'));
+               $fb_enable = (($fb_post && x($_POST,'facebook_enable')) ? intval($_POST['facebook_enable']) : 0);
+
+               // if API is used, default to the chosen settings
+               if($_POST['api_source'] && intval(get_pconfig(local_user(),'facebook','post_by_default')))
+                       $fb_enable = 1;
+
+               if(! $fb_enable)
+                       return;
+
+               if(strlen($b['postopts']))
+                       $b['postopts'] .= ',';
+               $b['postopts'] .= 'facebook';
+       }
+}
+
+
 function fb_queue_hook(&$a,&$b) {
 
        $qi = q("SELECT * FROM `queue` WHERE `network` = '%s'",
index d6bd821fa690f6282cdb755a113334ee03b17218..21c3fec5d761fda572f3ea75cf54919f57303f32 100644 (file)
Binary files a/statusnet.tgz and b/statusnet.tgz differ
index 25b5210842e349d8b603388d5aeae5aa82369938..51caba10d74e041e2ec20403ddc036d33701322d 100644 (file)
@@ -106,19 +106,27 @@ class StatusNetOAuth extends TwitterOAuth {
 
 function statusnet_install() {
        //  we need some hooks, for the configuration and for sending tweets
-       register_hook('plugin_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); 
-       register_hook('plugin_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
-       register_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
+       register_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); 
+       register_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
+       register_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
+       register_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
        register_hook('jot_networks',    'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
        logger("installed statusnet");
 }
 
 
 function statusnet_uninstall() {
+       unregister_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); 
+       unregister_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
+       unregister_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
+       unregister_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
+       unregister_hook('jot_networks',    'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
+
+       // old setting - remove only
+       unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
        unregister_hook('plugin_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings'); 
        unregister_hook('plugin_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
-       unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
-       unregister_hook('jot_networks',    'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
+
 }
 
 function statusnet_jot_nets(&$a,&$b) {
@@ -347,72 +355,77 @@ function statusnet_settings(&$a,&$s) {
 }
 
 
+function statusnet_post_local(&$a,&$b) {
+       if($b['edit'])
+               return;
+
+       if((local_user()) && (local_user() == $b['uid']) && (! $b['private'])) {
+
+               $statusnet_post = get_pconfig(local_user(),'statusnet','post');
+               $statusnet_enable = (($statusnet_post && x($_POST,'statusnet_enable')) ? intval($_POST['statusnet_enable']) : 0);
+
+               // if API is used, default to the chosen settings
+               if($_POST['api_source'] && intval(get_pconfig(local_user(),'statusnet','post_by_default')))
+                       $statusnet_enable = 1;
+
+       if(! $statusnet_enable)
+            return;
+
+       if(strlen($b['postopts']))
+           $b['postopts'] .= ',';
+       $b['postopts'] .= 'statusnet';
+    }
+}
+
 function statusnet_post_hook(&$a,&$b) {
 
        /**
         * Post to statusnet
         */
 
-        logger('StatusNet post invoked');
+       if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+               return;
 
-       if((local_user()) && (local_user() == $b['uid']) && (! $b['private'])) {
+       if(! strstr($b['postopts'],'statusnet'))
+               return;
 
-               // mike 2-9-11 there was a restriction to only allow this for top level posts
-               // now relaxed so should allow one's own comments to be forwarded through the connector as well. 
+       logger('StatusNet post invoked');
 
-               // Status.Net is not considered a private network
-               if($b['prvnets'])
-                       return;
 
-               load_pconfig(local_user(), 'statusnet');
+       load_pconfig($b['uid'], 'statusnet');
             
-               $api     = get_pconfig(local_user(), 'statusnet', 'baseapi');
-               $ckey    = get_pconfig(local_user(), 'statusnet', 'consumerkey'  );
-               $csecret = get_pconfig(local_user(), 'statusnet', 'consumersecret' );
-               $otoken  = get_pconfig(local_user(), 'statusnet', 'oauthtoken'  );
-               $osecret = get_pconfig(local_user(), 'statusnet', 'oauthsecret' );
-
-               if($ckey && $csecret && $otoken && $osecret) {
-
-                       $statusnet_post = get_pconfig(local_user(),'statusnet','post');
-                       $statusnet_enable = (($statusnet_post && x($_POST,'statusnet_enable')) ? intval($_POST['statusnet_enable']) : 0);
-                       // if API is used, default to the chosen settings
-                       if($_POST['api_source'] && intval(get_pconfig(local_user(),'statusnet','post_by_default')))
-                               $statusnet_enable = 1;
-
-                       if($statusnet_enable && $statusnet_post) {
-                               require_once('include/bbcode.php');     
-                               $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret);
-                               $max_char = $dent->get_maxlength(); // max. length for a dent
-                               $msg = strip_tags(bbcode($b['body']));
-                               // quotes not working - let's try this
-                               $msg = html_entity_decode($msg);
-                                if ( strlen($msg) > $max_char) {
-                                        $shortlink = "";
-                                        require_once('library/slinky.php');
-                                        // post url = base url + /display/ + owner + post id
-                                        // we construct this from the Owner link and replace
-                                        // profile by display - this will cause an error when
-                                        // /profile/ is in the owner url twice but I don't
-                                        // think this will be very common...
-                                       $posturl = str_replace('/profile/','/display/',$b['owner-link']).'/'.$b['id'];
-                                       $slinky = new Slinky( $posturl );
-                                       // setup a cascade of shortening services
-                                       // try to get a short link from these services
-                                       // in the order ur1.ca, trim, id.gd, tinyurl
-                                       $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
-                                        $shortlink = $slinky->short();
-                                        // the new message will be shortened such that "... $shortlink"
-                                        // will fit into the character limit
-                                        $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
-                                        $msg .= '... ' . $shortlink;
-                                }
-                                // and now tweet it :-)
-                               if(strlen($msg))
-                                       $dent->post('statuses/update', array('status' => $msg));
-                       }
+       $api     = get_pconfig($b['uid'], 'statusnet', 'baseapi');
+       $ckey    = get_pconfig($b['uid'], 'statusnet', 'consumerkey'  );
+       $csecret = get_pconfig($b['uid'], 'statusnet', 'consumersecret' );
+       $otoken  = get_pconfig($b['uid'], 'statusnet', 'oauthtoken'  );
+       $osecret = get_pconfig($b['uid'], 'statusnet', 'oauthsecret' );
+
+       if($ckey && $csecret && $otoken && $osecret) {
+
+               require_once('include/bbcode.php');     
+               $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret);
+               $max_char = $dent->get_maxlength(); // max. length for a dent
+               $msg = strip_tags(bbcode($b['body']));
+               // quotes not working - let's try this
+               $msg = html_entity_decode($msg);
+               if ( strlen($msg) > $max_char) {
+                       $shortlink = "";
+                       require_once('library/slinky.php');
+                       $slinky = new Slinky( $b['plink'] );
+                       // setup a cascade of shortening services
+                       // try to get a short link from these services
+                       // in the order ur1.ca, trim, id.gd, tinyurl
+                       $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
+                       $shortlink = $slinky->short();
+                       // the new message will be shortened such that "... $shortlink"
+                       // will fit into the character limit
+                       $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
+            $msg .= '... ' . $shortlink;
                }
-    }
+        // and now tweet it :-)
+               if(strlen($msg))
+                       $dent->post('statuses/update', array('status' => $msg));
+       }
 }
 
 function statusnet_plugin_admin_post(&$a){
index 5f33a2c9e4d8536df9eab28caf0cc1c22c2dbf1b..26527383898f13dc0da9c45989b7987dbcb4ed3d 100644 (file)
Binary files a/twitter.tgz and b/twitter.tgz differ
index dd229dc57a409e959aac8f35e4ff8b2ce0caccf0..74d88168f512af8655661e2af3b3b4336e2e8993 100644 (file)
 
 function twitter_install() {
        //  we need some hooks, for the configuration and for sending tweets
-       register_hook('plugin_settings', 'addon/twitter/twitter.php', 'twitter_settings'); 
-       register_hook('plugin_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
-       register_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
+       register_hook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings'); 
+       register_hook('connector_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
+       register_hook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local');
+       register_hook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook');
        register_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets');
        logger("installed twitter");
 }
 
 
 function twitter_uninstall() {
+       unregister_hook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings'); 
+       unregister_hook('connector_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
+       unregister_hook('post_local', 'addon/twitter/twitter.php', 'twitter_post_local');
+       unregister_hook('notifier_normal', 'addon/twitter/twitter.php', 'twitter_post_hook');
+       unregister_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets');
+
+       // old setting - remove only
+       unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
        unregister_hook('plugin_settings', 'addon/twitter/twitter.php', 'twitter_settings'); 
        unregister_hook('plugin_settings_post', 'addon/twitter/twitter.php', 'twitter_settings_post');
-       unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
-       unregister_hook('jot_networks', 'addon/twitter/twitter.php', 'twitter_jot_nets');
+
 }
 
 function twitter_jot_nets(&$a,&$b) {
@@ -198,73 +206,82 @@ function twitter_settings(&$a,&$s) {
 }
 
 
+function twitter_post_local(&$a,&$b) {
+
+       if($b['edit'])
+               return;
+
+       if((local_user()) && (local_user() == $b['uid']) && (! $b['private']) && (! $b['parent']) ) {
+
+               $twitter_post = intval(get_pconfig(local_user(),'twitter','post'));
+               $twitter_enable = (($twitter_post && x($_POST,'twitter_enable')) ? intval($_POST['twitter_enable']) : 0);
+
+               // if API is used, default to the chosen settings
+               if($_POST['api_source'] && intval(get_pconfig(local_user(),'twitter','post_by_default')))
+                       $twitter_enable = 1;
+
+        if(! $twitter_enable)
+            return;
+
+        if(strlen($b['postopts']))
+            $b['postopts'] .= ',';
+        $b['postopts'] .= 'twitter';
+       }
+}
+
+
 function twitter_post_hook(&$a,&$b) {
 
        /**
         * Post to Twitter
         */
 
-        logger('twitter post invoked');
+       if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+        return;
 
-       if((local_user()) && (local_user() == $b['uid']) && (! $b['private']) && (! $b['parent']) ) {
+       if(! strstr($b['postopts'],'twitter'))
+               return;
 
-               // Twitter is not considered a private network
-               if($b['prvnets'])
-                       return;
+       if($b['parent'] != $b['id'])
+               return;
 
+       logger('twitter post invoked');
 
-               load_pconfig(local_user(), 'twitter');
 
-               $ckey    = get_config('twitter', 'consumerkey'  );
-               $csecret = get_config('twitter', 'consumersecret' );
-               $otoken  = get_pconfig(local_user(), 'twitter', 'oauthtoken'  );
-               $osecret = get_pconfig(local_user(), 'twitter', 'oauthsecret' );
-
-               if($ckey && $csecret && $otoken && $osecret) {
-                        logger('twitter: we have customer key and oauth stuff, going to send.', LOGGER_DEBUG);
-
-                       $twitter_post = intval(get_pconfig(local_user(),'twitter','post'));
-                       $twitter_enable = (($twitter_post && x($_POST,'twitter_enable')) ? intval($_POST['twitter_enable']) : 0);
-
-                       // if API is used, default to the chosen settings
-                       if($_POST['api_source'] && intval(get_pconfig(local_user(),'twitter','post_by_default')))
-                               $twitter_enable = 1;
-
-                       if($twitter_post && $twitter_enable) {
-                               logger('Posting to Twitter', LOGGER_DEBUG);
-                               require_once('library/twitteroauth.php');
-                               require_once('include/bbcode.php');     
-                               $tweet = new TwitterOAuth($ckey,$csecret,$otoken,$osecret);
-                               $max_char = 140; // max. length for a tweet
-                               $msg = strip_tags(bbcode($b['body']));
-                                if ( strlen($msg) > $max_char) {
-                                        logger('Twitter: have to shorten the message to fit 140 chars', LOGGER_DEBUG);
-                                       $shortlink = "";
-                                       require_once('library/slinky.php');
-                                       // post url = base url + /display/ + owner + post id
-                                       // we construct this from the Owner link and replace
-                                       // profile by display - this will cause an error when
-                                       // /profile/ is in the owner url twice but I don't
-                                       // think this will be very common...
-                                       $posturl = str_replace('/profile/','/display/',$b['owner-link']).'/'.$b['id'];
-                                       $slinky = new Slinky( $posturl );
-                                       // setup a cascade of shortening services
-                                       // try to get a short link from these services
-                                       // in the order ur1.ca, trim, id.gd, tinyurl
-                                       $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
-                                       $shortlink = $slinky->short();
-                                       // the new message will be shortened such that "... $shortlink"
-                                       // will fit into the character limit
-                                       $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
-                                       $msg .= '... ' . $shortlink;
-                               }
-                // and now tweet it :-)
-                               if(strlen($msg)) {
-                                       $result = $tweet->post('statuses/update', array('status' => $msg));
-                                       logger('twitter_post send', LOGGER_DEBUG);
-                               }
-
-                       }
+       load_pconfig($b['uid'], 'twitter');
+
+       $ckey    = get_config('twitter', 'consumerkey'  );
+       $csecret = get_config('twitter', 'consumersecret' );
+       $otoken  = get_pconfig($b['uid'], 'twitter', 'oauthtoken'  );
+       $osecret = get_pconfig($b['uid'], 'twitter', 'oauthsecret' );
+
+       if($ckey && $csecret && $otoken && $osecret) {
+               logger('twitter: we have customer key and oauth stuff, going to send.', LOGGER_DEBUG);
+
+               require_once('library/twitteroauth.php');
+               require_once('include/bbcode.php');     
+               $tweet = new TwitterOAuth($ckey,$csecret,$otoken,$osecret);
+               $max_char = 140; // max. length for a tweet
+               $msg = strip_tags(bbcode($b['body']));
+               if ( strlen($msg) > $max_char) {
+                       logger('Twitter: have to shorten the message to fit 140 chars', LOGGER_DEBUG);
+                       $shortlink = "";
+                       require_once('library/slinky.php');
+                       $slinky = new Slinky( $b['plink'] );
+                       // setup a cascade of shortening services
+                       // try to get a short link from these services
+                       // in the order ur1.ca, trim, id.gd, tinyurl
+                       $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
+                       $shortlink = $slinky->short();
+                       // the new message will be shortened such that "... $shortlink"
+                       // will fit into the character limit
+                       $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
+                       $msg .= '... ' . $shortlink;
+               }
+               // and now tweet it :-)
+               if(strlen($msg)) {
+                       $result = $tweet->post('statuses/update', array('status' => $msg));
+                       logger('twitter_post send', LOGGER_DEBUG);
                }
        }
 }
index 091f1a59a39a982815ffe0eec0e5a3d8abca033e..fd0d262b3ba00a32aca2709691f23043816ca5cc 100644 (file)
Binary files a/wppost.tgz and b/wppost.tgz differ
index 9aac6c3801987e3c2fb517ef841d78ef1bda122c..b987778a258b5c7f3dac34d0c94ebf2255680b57 100644 (file)
@@ -7,17 +7,25 @@
  */
 
 function wppost_install() {
-    register_hook('post_local_end',   'addon/wppost/wppost.php', 'wppost_send');
-    register_hook('jot_networks',     'addon/wppost/wppost.php', 'wppost_jot_nets');
-    register_hook('plugin_settings',  'addon/wppost/wppost.php', 'wppost_settings');
-    register_hook('plugin_settings_post',  'addon/wppost/wppost.php', 'wppost_settings_post');
+    register_hook('post_local',           'addon/wppost/wppost.php', 'wppost_post_local');
+    register_hook('notifier_normal',      'addon/wppost/wppost.php', 'wppost_send');
+    register_hook('jot_networks',         'addon/wppost/wppost.php', 'wppost_jot_nets');
+    register_hook('connector_settings',      'addon/wppost/wppost.php', 'wppost_settings');
+    register_hook('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post');
 
 }
 function wppost_uninstall() {
-    unregister_hook('post_local_end',   'addon/wppost/wppost.php', 'wppost_send');
+    unregister_hook('post_local',       'addon/wppost/wppost.php', 'wppost_post_local');
+    unregister_hook('notifier_normal',  'addon/wppost/wppost.php', 'wppost_send');
     unregister_hook('jot_networks',     'addon/wppost/wppost.php', 'wppost_jot_nets');
+    unregister_hook('connector_settings',      'addon/wppost/wppost.php', 'wppost_settings');
+    unregister_hook('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post');
+
+       // obsolete - remove
+    unregister_hook('post_local_end',   'addon/wppost/wppost.php', 'wppost_send');
     unregister_hook('plugin_settings',  'addon/wppost/wppost.php', 'wppost_settings');
     unregister_hook('plugin_settings_post',  'addon/wppost/wppost.php', 'wppost_settings_post');
+
 }
 
 
@@ -109,23 +117,19 @@ function wppost_settings_post(&$a,&$b) {
 
 }
 
+function wppost_post_local(&$a,&$b) {
 
+       // This can probably be changed to allow editing by pointing to a different API endpoint
 
-
-function wppost_send(&$a,&$b) {
-
-       if((! local_user()) || (local_user() != $b['uid']))
+       if($b['edit'])
                return;
 
-       if($b['prvnets'] && $b['private'])
+       if((! local_user()) || (local_user() != $b['uid']))
                return;
 
-       if($b['parent'])
+       if($b['private'] || $b['parent'])
                return;
 
-       $wp_username = get_pconfig(local_user(),'wppost','wp_username');
-       $wp_password = get_pconfig(local_user(),'wppost','wp_password');
-       $wp_blog = get_pconfig(local_user(),'wppost','wp_blog');
     $wp_post   = intval(get_pconfig(local_user(),'wppost','post'));
 
        $wp_enable = (($wp_post && x($_POST,'wppost_enable')) ? intval($_POST['wppost_enable']) : 0);
@@ -133,7 +137,34 @@ function wppost_send(&$a,&$b) {
        if($_POST['api_source'] && intval(get_pconfig(local_user(),'wppost','post_by_default')))
                $wp_enable = 1;
 
-       if($wp_username && $wp_password && $wp_blog && $wp_post && $wp_enable) {
+    if(! $wp_enable)
+       return;
+
+    if(strlen($b['postopts']))
+       $b['postopts'] .= ',';
+     $b['postopts'] .= 'wppost';
+}
+
+
+
+
+function wppost_send(&$a,&$b) {
+
+    if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+        return;
+
+    if(! strstr($b['postopts'],'wppost'))
+        return;
+
+    if($b['parent'] != $b['id'])
+        return;
+
+
+       $wp_username = get_pconfig($b['uid'],'wppost','wp_username');
+       $wp_password = get_pconfig($b['uid'],'wppost','wp_password');
+       $wp_blog = get_pconfig($b['uid'],'wppost','wp_blog');
+
+       if($wp_username && $wp_password && $wp_blog) {
 
                require_once('include/bbcode.php');