]> git.mxchange.org Git - friendica-addons.git/commitdiff
Merge pull request #5 from fabrixxm/master
authorfabrixxm <fabrix.xm@gmail.com>
Wed, 19 Oct 2011 09:53:00 +0000 (02:53 -0700)
committerfabrixxm <fabrix.xm@gmail.com>
Wed, 19 Oct 2011 09:53:00 +0000 (02:53 -0700)
use iframe in widget plugin

20 files changed:
calc/calc.php
convert/convert.php
facebook.tgz
facebook/facebook.php
js_upload.tgz
js_upload/js_upload.php
membersince.tgz [new file with mode: 0644]
membersince/membersince.php [new file with mode: 0644]
nsfw.tgz [new file with mode: 0644]
nsfw/README [new file with mode: 0644]
nsfw/nsfw.css [new file with mode: 0644]
nsfw/nsfw.php [new file with mode: 0644]
sniper/sniper.php
statusnet.tgz
statusnet/statusnet.php
tictac/tictac.php
twitter.tgz
twitter/twitter.php
wppost.tgz
wppost/wppost.php

index 8c079dc7a561d9a572d47cdeab78877161be2f23..a299d45e94b518a5f9005d75f8e2ca2f9e0b270e 100644 (file)
@@ -17,7 +17,7 @@ function calc_uninstall() {
 }\r
 \r
 function calc_app_menu($a,&$b) {\r
-       $b['app_menu'] .= '<div class="app-title"><a href="calc">Calculator</a></div>'; \r
+       $b['app_menu'][] = '<div class="app-title"><a href="calc">Calculator</a></div>'; \r
 }\r
 \r
 \r
index 7a4c90a530fe097ae55536db6cd9403eceba791f..751316503366b944c8498c4dbc532863fa8c400c 100644 (file)
@@ -15,7 +15,7 @@ function convert_uninstall() {
 }\r
 \r
 function convert_app_menu($a,&$b) {\r
-       $b['app_menu'] .= '<div class="app-title"><a href="convert">Units Conversion</a></div>'; \r
+       $b['app_menu'][] = '<div class="app-title"><a href="convert">Units Conversion</a></div>'; \r
 }\r
 \r
 \r
index 05c7c735fb916966b35732f13b059f6ea80ec9c3..6acb8c5c110bb51cfb6d86af7545c4c3dcd3589f 100644 (file)
Binary files a/facebook.tgz and b/facebook.tgz differ
index 7ffdaffac52a3f8d41d1b344828e4c587d4b9e7d..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');
 }
 
 
@@ -428,6 +434,16 @@ function facebook_cron($a,$b) {
                foreach($r as $rr) {
                        if(get_pconfig($rr['uid'],'facebook','no_linking'))
                                continue;
+                       $ab = intval(get_config('system','account_abandon_days'));
+                       if($ab > 0) {
+                               $z = q("SELECT `uid` FROM `user` WHERE `uid` = %d AND `login_date` > UTC_TIMESTAMP() - INTERVAL %d DAY LIMIT 1",
+                                       intval($rr['uid']),
+                                       intval($ab)
+                               );
+                               if(! count($z))
+                                       continue;
+                       }
+
                        // check for new friends once a day
                        $last_friend_check = get_pconfig($rr['uid'],'facebook','friend_check');
                        if($last_friend_check) 
@@ -471,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
         */
@@ -482,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);
@@ -561,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');     
@@ -731,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 bfbbab6ea59abd9c0478cf9fd4de1dc9b182b877..96afb12e2a15908dfec9978a1b82855c0181a0dc 100644 (file)
Binary files a/js_upload.tgz and b/js_upload.tgz differ
index 1996b85040aa6c1cb616a5e5432721b8908494b2..c529be36602de6f0821a8e443ac369288dc63f4e 100644 (file)
@@ -96,6 +96,7 @@ function createUploader() {
                                uploader.setParams( {
                                        newalbum                :       document.getElementById('photos-upload-newalbum').value,
                                        album                   :       document.getElementById('photos-upload-album-select').value,
+                                       not_visible     :   document.getElementById('photos-upload-noshare').checked,
                                        group_allow             :       acl.allow_gid.join(','),
                                        contact_allow   :       acl.allow_cid.join(','),
                                        group_deny              :       acl.deny_gid.join(','),
@@ -105,6 +106,7 @@ function createUploader() {
                                uploader.setParams( {
                                        newalbum                :       document.getElementById('photos-upload-newalbum').value,
                                        album                   :       document.getElementById('photos-upload-album-select').value,
+                                       not_visible     :   document.getElementById('photos-upload-noshare').checked,
                                        group_allow             :       getSelected(document.getElementById('group_allow')).join(','),
                                        contact_allow   :       getSelected(document.getElementById('contact_allow')).join(','),
                                        group_deny              :       getSelected(document.getElementById('group_deny')).join(','),
diff --git a/membersince.tgz b/membersince.tgz
new file mode 100644 (file)
index 0000000..fb44b00
Binary files /dev/null and b/membersince.tgz differ
diff --git a/membersince/membersince.php b/membersince/membersince.php
new file mode 100644 (file)
index 0000000..25d1207
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Name: MemberSince
+ * Description: Display membership date in profile
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ * 
+ */
+
+require_once('include/datetime.php');
+
+function membersince_install(){ register_hook('profile_advanced','addon/membersince/membersince.php','membersince_display'); }
+
+function membersince_uninstall(){ unregister_hook('profile_advanced','addon/membersince/membersince.php','membersince_display'); }
+
+function membersince_display(&$a,&$b) { $b = str_replace('</div>' . "\n" . '<div id="advanced-profile-name-end"></div>',sprintf( t(' - Member since: %s') . EOL, datetime_convert('UTC',date_default_timezone_get(),$a->profile['register_date'])) . '</div>' . "\n" . '<div id="advanced-profile-name-end"></div>',$b); }
\ No newline at end of file
diff --git a/nsfw.tgz b/nsfw.tgz
new file mode 100644 (file)
index 0000000..e7c959e
Binary files /dev/null and b/nsfw.tgz differ
diff --git a/nsfw/README b/nsfw/README
new file mode 100644 (file)
index 0000000..cf2dc26
--- /dev/null
@@ -0,0 +1,8 @@
+NSFW
+
+"Not safe for work"
+
+Scans the message content for the string 'nsfw' 
+(case insensitive) and if found replaces the content
+with a "click to open/close" link, default is closed.
+
diff --git a/nsfw/nsfw.css b/nsfw/nsfw.css
new file mode 100644 (file)
index 0000000..548b63a
--- /dev/null
@@ -0,0 +1,16 @@
+
+#nsfw-label {
+       float: left;
+       width: 300px;
+       margin-top: 10px;
+}
+
+#nsfw-words {
+       float: left;
+       margin-top: 10px;
+}
+
+#nsfw-submit {
+       margin-top: 15px;
+}
+
diff --git a/nsfw/nsfw.php b/nsfw/nsfw.php
new file mode 100644 (file)
index 0000000..dba9f1e
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+
+
+/**
+ * Name: NSFW
+ * Description: Collapse posts with inappropriate content
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ * 
+ */
+
+function nsfw_install() {
+       register_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body');
+       register_hook('plugin_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
+       register_hook('plugin_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
+
+}
+
+
+function nsfw_uninstall() {
+       unregister_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body');
+       unregister_hook('plugin_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
+       unregister_hook('plugin_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
+
+}
+
+
+
+
+
+function nsfw_addon_settings(&$a,&$s) {
+
+
+       if(! local_user())
+               return;
+
+    /* 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/nsfw/nsfw.css' . '" media="all" />' . "\r\n";
+
+
+       $words = get_pconfig(local_user(),'nsfw','words');
+       if(! $words)
+               $words = 'nsfw,';
+
+    $s .= '<div class="settings-block">';
+    $s .= '<h3>' . t('"Not Safe For Work" Settings') . '</h3>';
+    $s .= '<div id="nsfw-wrapper">';
+    $s .= '<label id="nsfw-label" for="nsfw-words">' . t('Comma separated words to treat as NSFW') . ' </label>';
+    $s .= '<input id="nsfw-words" type="text" name="nsfw-words" value="' . $words .'" />';
+    $s .= '</div><div class="clear"></div>';
+
+    $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="nsfw-submit" name="nsfw-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+       return;
+
+}
+
+function nsfw_addon_settings_post(&$a,&$b) {
+
+       if(! local_user())
+               return;
+
+       if($_POST['nsfw-submit']) {
+               set_pconfig(local_user(),'nsfw','words',trim($_POST['nsfw-words']));
+               info( t('NSFW Settings saved.') . EOL);
+       }
+}
+
+function nsfw_prepare_body(&$a,&$b) {
+
+       $words = null;
+       if(local_user()) {
+               $words = get_pconfig(local_user(),'nsfw','words');
+       }
+       if($words) {
+               $arr = explode(',',$words);
+       }
+       else {
+               $arr = array('nsfw');
+       }
+
+       $found = false;
+       if(count($arr)) {
+               foreach($arr as $word) {
+                       if(! strlen(trim($word))) {
+                               continue;
+                       }
+
+                       if(stristr($b,$word)) {
+                               $found = true;
+                               break;
+                       }
+               }
+       }
+       if($found) {
+               $rnd = random_string(8);
+               $b = '<div id="nsfw-wrap-' . $rnd . '" class="fakelink" onclick=openClose(\'nsfw-' . $rnd . '\'); >' . t('NSFW - Click to open/close') . '</div><div id="nsfw-' . $rnd . '" style="display: none; " >' . $b . '</div>';  
+       }
+}
index 8d31e9cd1fe7ca9fbe3b5f53a876655cbdb9c584..cdb5c5021883a1c85413c3cc40b0a01538792527 100644 (file)
@@ -16,7 +16,7 @@ function sniper_uninstall() {
 }
 
 function sniper_app_menu($a,&$b) {
-    $b['app_menu'] .= '<div class="app-title"><a href="sniper">Hot Shot Sniper</a></div>';
+    $b['app_menu'][] = '<div class="app-title"><a href="sniper">Hot Shot Sniper</a></div>';
 }
 
 
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 d6cec08a0635359f39a686122e862db132110023..1dd1ccb0e90099a937ed0837eb6cad9d256ea3be 100644 (file)
@@ -17,7 +17,7 @@ function tictac_uninstall() {
 }
 
 function tictac_app_menu($a,&$b) {
-       $b['app_menu'] .= '<div class="app-title"><a href="tictac">' . t('Three Dimensional Tic-Tac-Toe') . '</a></div>'; 
+       $b['app_menu'][] = '<div class="app-title"><a href="tictac">' . t('Three Dimensional Tic-Tac-Toe') . '</a></div>'; 
 }
 
 
index b01692ad64aceeabb75ceb3f8864b207f0e0047b..5c1fb3617374a274149180d77d72b6a5d56140f5 100644 (file)
Binary files a/twitter.tgz and b/twitter.tgz differ
index 51b55fd0a29527f409e7bf058d29fb450dace7fd..cf2c7ea11609aca67ee24bea81db66fe7ef16f3c 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,71 +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) {
-
-                       $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) {
-                                       $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 returns: ' . $result);
-                               }
-
-                       }
+       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 = 138; // 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');