diff --git a/blockem.tgz b/blockem.tgz index 129a0065..ec7119f8 100755 Binary files a/blockem.tgz and b/blockem.tgz differ diff --git a/blockem/blockem.php b/blockem/blockem.php index 43f34554..9134bd0b 100755 --- a/blockem/blockem.php +++ b/blockem/blockem.php @@ -101,15 +101,15 @@ function blockem_prepare_body(&$a,&$b) { } } if($found) { - $rnd = random_string(8); + $rnd = random_string(8); $b['html'] = ''; } } function blockem_display_item(&$a,&$b) { - if(strstr($b['output'],'id="blockem-wrap-')) - $b['output'] = preg_replace('/\/','get_baseurl() . "/images/default-profile-sm.jpg" . '" class="wall-item-photo$3>',$b['output']); + if(strstr($b['output']['body'],'id="blockem-wrap-')) + $b['output']['thumb'] = $a->get_baseurl() . "/images/default-profile-sm.jpg"; } @@ -193,4 +193,4 @@ function blockem_init(&$a) { set_pconfig(local_user(),'blockem','words',$words); info( t('blockem settings updated') . EOL ); killme(); -} \ No newline at end of file +} diff --git a/buildtgz b/buildtgz index 37c734f8..61dd5d71 100755 --- a/buildtgz +++ b/buildtgz @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Make doesn't handle subdirs very well # without providing a Makefile in each one. # So we will just manually find any source diff --git a/calc.tgz b/calc.tgz index a849ef0e..f5d6870d 100755 Binary files a/calc.tgz and b/calc.tgz differ diff --git a/communityhome.tgz b/communityhome.tgz index 33c6abc1..b08abd2e 100755 Binary files a/communityhome.tgz and b/communityhome.tgz differ diff --git a/communityhome/twillingham/README b/communityhome/twillingham/README deleted file mode 100644 index bb574278..00000000 --- a/communityhome/twillingham/README +++ /dev/null @@ -1,7 +0,0 @@ -Thomas Willingham - -This isn't even close to being worth a pull request, but some people might find it useful. - -Enable community home in your admin panel, then replace communityhome.php with this one to get a front page like mine (a normal front page, but with latest users shown in the sidebar, which looks bleak when there's nothing in it). - -There are more graceful ways of doing this, I used communityhome as I plan to make use of a limited stream and likes in future. diff --git a/communityhome/twillingham/communityhome.php b/communityhome/twillingham/communityhome.php deleted file mode 100644 index 102732ac..00000000 --- a/communityhome/twillingham/communityhome.php +++ /dev/null @@ -1,107 +0,0 @@ - - */ - - -require_once('mod/community.php'); - - -function communityhome_install() { - register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); - logger("installed communityhome"); -} - -function communityhome_uninstall() { - unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); - logger("removed communityhome"); -} - -function communityhome_home(&$a, &$o){ - // custom css - $a->page['htmlhead'] .= ''; - - $aside = array( - '$tab_1' => t('Login'), - '$tab_2' => t('OpenID'), - '$noOid' => get_config('system','no_openid'), - ); - - // login form - $aside['$login_title'] = t('Login'); - $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); - - // last 12 users - $aside['$lastusers_title'] = t('Latest users'); - $aside['$lastusers_items'] = array(); - $sql_extra = ""; - $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); - $order = " ORDER BY `register_date` DESC "; - - $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` - FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` - WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", - 0, - 12 - ); - $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); - if(count($r)) { - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $rr[$photo], - '$alt-text' => $rr['name'], - )); - $aside['$lastusers_items'][] = $entry; - } - } - - // 12 most active users (by posts and contacts) - // this query don't work on some mysql versions - $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM - (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, - (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, - ( - SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - UNION ALL - SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` - ) AS `uni`, `user`, `profile` - WHERE `uni`.`uid`=`user`.`uid` - AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 - GROUP BY `uid` - ORDER BY `items` DESC,`contacts` DESC - LIMIT 0,10"); - if($r && count($r)) { - $aside['$activeusers_title'] = t('Most active users'); - $aside['$activeusers_items'] = array(); - - $photo = 'thumb'; - foreach($r as $rr) { - $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); - $entry = replace_macros($tpl,array( - '$id' => $rr['id'], - '$profile-link' => $profile_link, - '$photo' => $rr[$photo], - '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) - )); - $aside['$activeusers_items'][] = $entry; - } - } - - - - - $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); - $a->page['aside'] = replace_macros($tpl, $aside); - $o = ''; - if(file_exists('home.html')) - - $o .= file_get_contents('home.html'); - -} diff --git a/facebook.tgz b/facebook.tgz old mode 100644 new mode 100755 index 2cb406a1..e049d2b8 Binary files a/facebook.tgz and b/facebook.tgz differ diff --git a/facebook/README b/facebook/README index 9e381e7d..ee7e489b 100755 --- a/facebook/README +++ b/facebook/README @@ -17,8 +17,6 @@ Installing the Friendica/Facebook connector Replace with the settings Facebook gives you. d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your yourdomain.com. - e. Chose "Website" (the url should be your site URL with a trailing slash) in the - "Select how your app integrates with Facebook" section. 2. Enable the facebook plugin by including it in .htconfig.php - e.g. $a->config['system']['addon'] = 'plugin1,plugin2,facebook'; 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page. diff --git a/facebook/facebook.php b/facebook/facebook.php index 6b6c7f84..f155d397 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -24,8 +24,7 @@ * d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set * Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your * yourdomain.com. - * 2. (This step is now obsolete. Enable the plugin via the Admin panel.) - * Enable the facebook plugin by including it in .htconfig.php - e.g. + * 2. Enable the facebook plugin by including it in .htconfig.php - e.g. * $a->config['system']['addon'] = 'plugin1,plugin2,facebook'; * 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page. * and click 'Install Facebook Connector'. @@ -732,7 +731,7 @@ function facebook_post_hook(&$a,&$b) { logger('facebook: postvars: ' . print_r($postvars,true)); // "test_mode" prevents anything from actually being posted. - // Otherwise, let's do it. + // Otherwise, let's do it. if(! get_config('facebook','test_mode')) { $x = post_url($url, $postvars); @@ -954,10 +953,10 @@ function fb_consume_stream($uid,$j,$wall = false) { if(! x($datarray,'contact-id')) { logger('no contact: post ignored'); - continue; + continue; } - $datarray['verb'] = ACTIVITY_POST; + $datarray['verb'] = ACTIVITY_POST; if($wall) { $datarray['owner-name'] = $self[0]['name']; $datarray['owner-link'] = $self[0]['url']; diff --git a/gnot.tgz b/gnot.tgz deleted file mode 100644 index fbf7f267..00000000 Binary files a/gnot.tgz and /dev/null differ diff --git a/gnot/gnot.css b/gnot/gnot.css deleted file mode 100755 index ccafdafb..00000000 --- a/gnot/gnot.css +++ /dev/null @@ -1,16 +0,0 @@ - -#gnot-desc { - margin-bottom: 10px; -} - -#gnot-label { - float: left; - width: 200px; - margin-bottom: 25px; -} - -#gnot { - float: left; -} - - diff --git a/gnot/gnot.php b/gnot/gnot.php deleted file mode 100755 index fd8fdfd9..00000000 --- a/gnot/gnot.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * - */ - - -function gnot_install() { - - register_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings'); - register_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post'); - register_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail'); - - logger("installed gnot"); -} - - -function gnot_uninstall() { - - unregister_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings'); - unregister_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post'); - unregister_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail'); - - - logger("removed gnot"); -} - - - -/** - * - * Callback from the settings post function. - * $post contains the $_POST array. - * We will make sure we've got a valid user account - * and if so set our configuration setting for this person. - * - */ - -function gnot_settings_post($a,$post) { - if(! local_user() || (! x($_POST,'gnot-submit'))) - return; - - set_pconfig(local_user(),'gnot','enable',intval($_POST['gnot'])); - info( t('Gnot settings updated.') . EOL); -} - - -/** - * - * Called from the Plugin Setting form. - * Add our own settings info to the page. - * - */ - - - -function gnot_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 variable */ - - $gnot = intval(get_pconfig(local_user(),'gnot','enable')); - - $gnot_checked = (($gnot) ? ' checked="checked" ' : '' ); - - /* Add some HTML to the existing form */ - - $s .= '
'; - $s .= '

' . t('Gnot Settings') . '

'; - $s .= '
'; - $s .= '
' . t("Allows threading of email comment notifications on Gmail and anonymising the subject line.") . '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - /* provide a submit button */ - - $s .= '
'; - -} - - -function gnot_enotify_mail(&$a,&$b) { - if((! $b['uid']) || (! intval(get_pconfig($b['uid'], 'gnot','enable')))) - return; - if($b['type'] == NOTIFY_COMMENT) - $b['subject'] = sprintf( t('[Friendica:Notify] Comment to conversation #%d'), $b['parent']); -} - diff --git a/js_upload.tgz b/js_upload.tgz index fe51b8ae..11401175 100755 Binary files a/js_upload.tgz and b/js_upload.tgz differ diff --git a/js_upload/js_upload.php b/js_upload/js_upload.php index 3ba5f9c4..c529be36 100755 --- a/js_upload/js_upload.php +++ b/js_upload/js_upload.php @@ -45,8 +45,6 @@ function js_upload_form(&$a,&$b) { $cancel = t('Cancel'); $failed = t('Failed'); - $maximagesize = intval(get_config('system','maximagesize')); - $b['addon_text'] .= <<< EOT
@@ -93,7 +91,6 @@ function createUploader() { '', debug: true, - sizeLimit: $maximagesize, onSubmit: function(id,filename) { if (typeof acl!="undefined"){ uploader.setParams( { diff --git a/ljpost.tgz b/ljpost.tgz deleted file mode 100644 index f14b33d4..00000000 Binary files a/ljpost.tgz and /dev/null differ diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css deleted file mode 100755 index e0494c5c..00000000 --- a/ljpost/ljpost.css +++ /dev/null @@ -1,16 +0,0 @@ - -#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; -} - diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php deleted file mode 100755 index c1b9b975..00000000 --- a/ljpost/ljpost.php +++ /dev/null @@ -1,222 +0,0 @@ - - * 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('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); - -} -function ljpost_uninstall() { - unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local'); - unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send'); - unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets'); - unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings'); - unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post'); - -} - - -function ljpost_jot_nets(&$a,&$b) { - if(! local_user()) - return; - - $lj_post = get_pconfig(local_user(),'ljpost','post'); - if(intval($lj_post) == 1) { - $lj_defpost = get_pconfig(local_user(),'ljpost','post_by_default'); - $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . t('Post to LiveJournal') . '
'; - } -} - - -function ljpost_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(),'ljpost','post'); - - $checked = (($enabled) ? ' checked="checked" ' : ''); - - $def_enabled = get_pconfig(local_user(),'ljpost','post_by_default'); - - $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); - - $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username'); - $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password'); - - - /* Add some HTML to the existing form */ - - $s .= '
'; - $s .= '

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

'; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - /* provide a submit button */ - - $s .= '
'; - -} - - -function ljpost_settings_post(&$a,&$b) { - - 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'])); - - } - -} - -function ljpost_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; - - $lj_post = intval(get_pconfig(local_user(),'ljpost','post')); - - $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(! $lj_enable) - return; - - if(strlen($b['postopts'])) - $b['postopts'] .= ','; - $b['postopts'] .= 'ljpost'; -} - - - - -function ljpost_send(&$a,&$b) { - - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) - return; - - if(! strstr($b['postopts'],'ljpost')) - return; - - if($b['parent'] != $b['id']) - return; - - // LiveJournal post in the LJ user's timezone. - // Hopefully the person's Friendica account - // will be set to the same thing. - - $tz = 'UTC'; - - $x = q("select timezone from user where uid = %d limit 1", - intval($b['uid']) - ); - if($x && strlen($x[0]['timezone'])) - $tz = $x[0]['timezone']; - - $lj_username = xmlify(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)) - $lj_blog = xmlify('http://www.livejournal.com/interface/xmlrpc'); - - if($lj_username && $lj_password && $lj_blog) { - - require_once('include/bbcode.php'); - require_once('include/datetime.php'); - - $title = xmlify($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 - - - - username$lj_username - password$lj_password - event$post - subject$title - lineendingsunix - year$year - mon$mon - day$day - hour$hour - min$min - - - - - -EOT; - - logger('ljpost: data: ' . $xml, LOGGER_DATA); - - if($lj_blog !== 'test') - $x = post_url($lj_blog,$xml); - logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG); - - } -} - diff --git a/openstreetmap.tgz b/openstreetmap.tgz index e54b0c78..93dc874b 100644 Binary files a/openstreetmap.tgz and b/openstreetmap.tgz differ diff --git a/openstreetmap/README b/openstreetmap/README deleted file mode 100644 index 41fc842c..00000000 --- a/openstreetmap/README +++ /dev/null @@ -1,30 +0,0 @@ - ____ OpenStreetMap Plugin ____ -by Mike Macgirvin - Klaus Weidenbach - -This addon allows you to use OpenStreetMap for displaying locations. - -___ Requirements ___ - -To use this plugin you need a tile Server that provides the maps. -OpenStreetMap data is free for everyone to use. Their tile servers are not. -Please take a look at their "Tile Usage Policy": -http://wiki.openstreetmap.org/wiki/Tile_usage_policy -You can run your own tile server or choose one from their list of public -tile servers: http://wiki.openstreetmap.org/wiki/TMS -Support the OpenStreetMap community and share the load. - -___ Configuration ___ - -Open the .htconfig.php file and add "openstreetmap" to the list of activated -addons. - $a->config['system']['addon'] = "openstreetmap, ..." - -You have to add two configuration variables for the addon: - $a->config['openstreetmap']['tmsserver'] = 'http://www.openstreetmap.org/'; - $a->config['openstreetmap']['zoom'] = '18'; - -The *tmsserver* points to the tile server you want to use. Use the full URL, -with protocol (http/s) and trailing slash. You can configure the default zoom -level on the map with *zoom*. 1 will show the whole world and 18 is the highest -zoom level available. diff --git a/openstreetmap/admin.tpl b/openstreetmap/admin.tpl deleted file mode 100644 index 75db9cd7..00000000 --- a/openstreetmap/admin.tpl +++ /dev/null @@ -1,3 +0,0 @@ -{{ inc field_input.tpl with $field=$tmsserver }}{{ endinc }} -{{ inc field_input.tpl with $field=$zoom }}{{ endinc }} -
diff --git a/openstreetmap/openstreetmap.php b/openstreetmap/openstreetmap.php index 415e448d..ef5d6bef 100755 --- a/openstreetmap/openstreetmap.php +++ b/openstreetmap/openstreetmap.php @@ -1,49 +1,45 @@ - * Author: Klaus Weidenbach + * * */ + function openstreetmap_install() { + register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); logger("installed openstreetmap"); } + function openstreetmap_uninstall() { + unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); logger("removed openstreetmap"); } + function openstreetmap_location($a, &$item) { + if(! (strlen($item['location']) || strlen($item['coord']))) return; - /* - * Get the configuration variables from the .htconfig file. - */ - $tmsserver = get_config('openstreetmap','tmsserver'); - if(! $tmsserver) - $tmsserver = 'http://openstreetmap.org'; - $zoom = get_config('openstreetmap','zoom'); - if(! $zoom) - $zoom = 17; - $location = ''; $coord = ''; - $location = (($item['location']) ? '' . $item['location'] . '' : ''); + $location = (($item['location']) ? '' . $item['location'] . '' : ''); if($item['coord']) { $coords = explode(' ', $item['coord']); if(count($coords) > 1) { - $coord = '' . $item['coord'] . '' ; + $coord = '' . $item['coord'] . '' ; } } if(strlen($coord)) { @@ -56,26 +52,3 @@ function openstreetmap_location($a, &$item) { return; } - -function openstreetmap_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); - $tmsserver = get_config('openstreetmap','tmsserver'); - if(! $tmsserver) - $tmsserver = 'http://openstreetmap.org'; - $zoom = get_config('openstreetmap','zoom'); - if(! $zoom) - $zoom = 17; - - $o = replace_macros( $t, array( - '$submit' => t('Submit'), - '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of public tile servers')), - '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')), - )); -} -function openstreetmap_plugin_admin_post (&$a) { - $url = ((x($_POST, 'tmsserver')) ? notags(trim($_POST['tmsserver'])) : ''); - $zoom = ((x($_POST, 'zoom')) ? intval(trim($_POST['zoom'])) : '17'); - set_config('openstreetmap', 'tmsserver', $url); - set_config('openstreetmap', 'zoom', $zoom); - info( t('Settings updated.'). EOL); -} diff --git a/piwik.tgz b/piwik.tgz index 65c92244..54752c6e 100755 Binary files a/piwik.tgz and b/piwik.tgz differ diff --git a/piwik/README b/piwik/README index e276ccd4..d5060d0b 100755 --- a/piwik/README +++ b/piwik/README @@ -1,40 +1,36 @@ -## Piwik Plugin ## - -by Tobias Diekershoff +____ Piwik Plugin ____ +by Tobias Diekershoff tobias.diekershoff(at)gmx.net This addon allows you to embed the code necessary for the FLOSS webanalytics -tool Piwik into the Friendica pages. +tool piwik into the Friendica pages. -[Online version of this Document](http://ur1.ca/35m2x) +Online version of this Document: http://ur1.ca/35m2x -### Requirements ### +___ Requirements ___ -To use this plugin you need a [piwik](http://piwik.org/) installation. +To use this plugin you need a "piwik":http://piwik.org installation. -### Where to find ### +___ Where to find ___ -In the Friendica git repository `/addon/piwik/piwik.php` and a CSS file for +In the Friendica git repository @/addon/piwik/piwik.php@ and a CSS file for styling the opt-out notice. -### Configuration ### - -Open the .htconfig.php file and add "piwik" to the list of activated addons. +___ Configuration ___ +Open the .htconfig.php file and add "piwik" to the list of activated addons. $a->config['system']['addon'] = "piwik, ..." +You have to add 3 more configuration variables for the addon: -You have to add 4 more configuration variables for the addon: +$a->config['piwik']['baseurl'] = 'example.com/piwik/'; +$a->config['piwik']['sideid'] = '1'; +$a->config['piwik']['optout'] = true; - $a->config['piwik']['baseurl'] = 'example.com/piwik/'; - $a->config['piwik']['sideid'] = '1'; - $a->config['piwik']['optout'] = true; - $a->config['piwik']['async'] = false; - -The *baseurl* points to your Piwik installation. Use the absolute path, +The *baseurl* points to your piwik installation. Use the absolute path, remember trailing slashes but ignore the protocol (http/s) part of the URL. Change the *sideid* parameter to whatever ID you want to use for tracking your Friendica installation. The *optout* parameter (true|false) defines whether or -not a short notice about the utilization of Piwik will be displayed on every +not a short notice about the utilization of piwik will be displayed on every page of your Friendica site (at the bottom of the page with some spacing to the other content). Part of the note is a link that allows the visitor to set an _opt-out_ cookie which will prevent visits from that user be tracked by piwik. @@ -45,5 +41,3 @@ Currently the optional notice states the following: that your visits are logged this way you can set a cookie to prevent Piwik from tracking further visits of the site (opt-out). -The *async* parameter (true|false) defines whether or not to use asynchronous -tracking so pages load (or appear to load) faster. diff --git a/piwik/admin.tpl b/piwik/admin.tpl index e57758a9..0edd0621 100755 --- a/piwik/admin.tpl +++ b/piwik/admin.tpl @@ -1,5 +1,4 @@ {{ inc field_input.tpl with $field=$baseurl }}{{ endinc }} {{ inc field_input.tpl with $field=$siteid }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$optout }}{{ endinc }} -{{ inc field_checkbox.tpl with $field=$async }}{{ endinc }}
diff --git a/piwik/piwik.php b/piwik/piwik.php index dbb1f45a..5a46cdb3 100755 --- a/piwik/piwik.php +++ b/piwik/piwik.php @@ -2,25 +2,24 @@ /** * Name: Piwik Analytics * Description: Piwik Analytics Plugin for Friendica - * Version: 1.1 + * Version: 1.0 * Author: Tobias Diekershoff - * Author: Klaus Weidenbach */ + /* Piwik Analytics Plugin for Friendica * * Author: Tobias Diekershoff * tobias.diekershoff@gmx.net * - * License: 3-clause BSD license +* License: 3-clause BSD license * * Configuration: - * Add the following lines to your .htconfig.php file: + * Add the following two lines to your .htconfig.php file: * * $a->config['piwik']['baseurl'] = 'www.example.com/piwik/'; * $a->config['piwik']['siteid'] = '1'; * $a->config['piwik']['optout'] = true; // set to false to disable - * $a->config['piwik']['async'] = false; // set to true to enable * * Change the siteid to the ID that the Piwik tracker for your Friendica * installation has. Alter the baseurl to fit your needs, don't care @@ -33,13 +32,13 @@ function piwik_install() { register_hook('page_end', 'addon/piwik/piwik.php', 'piwik_analytics'); - logger("installed piwik plugin"); + logger("installed piwik plugin"); } function piwik_uninstall() { unregister_hook('page_end', 'addon/piwik/piwik.php', 'piwik_analytics'); - logger("uninstalled piwik plugin"); + logger("uninstalled piwik plugin"); } function piwik_analytics($a,&$b) { @@ -57,50 +56,40 @@ function piwik_analytics($a,&$b) { $baseurl = get_config('piwik','baseurl'); $siteid = get_config('piwik','siteid'); $optout = get_config('piwik','optout'); - $async = get_config('piwik','async'); /* - * Add the Piwik tracking code for the site. - * If async is set to true use asynchronous tracking + * Add the Piwik code for the site. */ - if ($async) { - $a->page['htmlhead'] .= " \r\n\r\n"; - $b .= "
\r\n\r\n
"; - } else { - $b .= "
\r\n \r\n\r\n\r\n
"; - } - + $b .= "
\r\n \r\n\r\n\r\n
"; /* * If the optout variable is set to true then display the notice * otherwise just include the above code into the page. */ if ($optout) { - $b .= ""; + $b .= ""; } + } function piwik_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); - $o = replace_macros( $t, array( - '$submit' => t('Submit'), - '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), t('Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)')), - '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), - '$optout' => array('optout', t('Show opt-out cookie link?'), get_config('piwik','optout' ), ''), - '$async' => array('async', t('Asynchronous tracking'), get_config('piwik','async' ), ''), - )); + $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $o = replace_macros( $t, array( + '$submit' => t('Submit'), + '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), ''), + '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), + '$optout' => array('optout', t('Show opt-out cookie link?'), get_config('piwik','optout' ), ''), + )); } function piwik_plugin_admin_post (&$a) { - $url = ((x($_POST, 'baseurl')) ? notags(trim($_POST['baseurl'])) : ''); - $id = ((x($_POST, 'siteid')) ? trim($_POST['siteid']) : ''); - $optout = ((x($_POST, 'optout')) ? trim($_POST['optout']) : ''); - $async = ((x($_POST, 'async')) ? trim($_POST['async']) : ''); - set_config('piwik', 'baseurl', $url); - set_config('piwik', 'siteid', $id); - set_config('piwik', 'optout', $optout); - set_config('piwik', 'async', $async); - info( t('Settings updated.'). EOL); + $url = ((x($_POST, 'baseurl')) ? notags(trim($_POST['baseurl'])) : ''); + $id = ((x($_POST, 'siteid')) ? trim($_POST['siteid']) : ''); + $optout = ((x($_POST, 'optout')) ? trim($_POST['optout']) : ''); + set_config('piwik', 'baseurl', $url); + set_config('piwik', 'siteid', $id); + set_config('piwik', 'optout', $optout); + info( t('Settings updated.'). EOL); } diff --git a/qcomment.tgz b/qcomment.tgz deleted file mode 100644 index 1ab55a43..00000000 Binary files a/qcomment.tgz and /dev/null differ diff --git a/qcomment/qcomment.css b/qcomment/qcomment.css deleted file mode 100755 index 3e5513bb..00000000 --- a/qcomment/qcomment.css +++ /dev/null @@ -1,19 +0,0 @@ - -#qcomment-label { - float: left; - width: 300px; - margin-top: 10px; -} - -#qcomment-words { - float: left; - margin-top: 10px; - width: 100px; - height: 150px; - -} - -#qcomment-submit { - margin-top: 15px; -} - diff --git a/qcomment/qcomment.php b/qcomment/qcomment.php deleted file mode 100755 index 6b372579..00000000 --- a/qcomment/qcomment.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * Provides a set of text "snippets" which can be inserted into a comment window by clicking on them. - * First enable the addon in the system admin panel. - * Then each person can tailor their choice of words in Settings->Plugin Settings in the Qcomment - * pane. Initially no qcomments are provided, but on viewing the settings page, a default set of - * of words is suggested. These can be accepted (click Submit) or edited first. Each text line represents - * a different qcomment. - * Many themes will hide the qcomments above or immediately adjacent to the comment input box until - * you wish to use them. On some themes they may be visible. - * Wave the mouse around near the comment input box and the qcomments will show up. Click on any of - * them to open the comment window fully and insert the qcomment. Then "Submit" will submit it. - * - */ - -function qcomment_install() { - register_hook('plugin_settings', 'addon/qcomment/qcomment.php', 'qcomment_addon_settings'); - register_hook('plugin_settings_post', 'addon/qcomment/qcomment.php', 'qcomment_addon_settings_post'); - -} - - -function qcomment_uninstall() { - unregister_hook('plugin_settings', 'addon/qcomment/qcomment.php', 'qcomment_addon_settings'); - unregister_hook('plugin_settings_post', 'addon/qcomment/qcomment.php', 'qcomment_addon_settings_post'); - -} - - - - - -function qcomment_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'] .= '' . "\r\n"; - - $words = get_pconfig(local_user(),'qcomment','words'); - if($words === false) - $words = t(':-)') . "\n" . t(':-(') . "\n" . t('lol'); - - $s .= '
'; - $s .= '

' . t('Quick Comment Settings') . '

'; - $s .= '
'; - $s .= '
' . t("Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies.") . '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; - $s .= '
'; - - return; - -} - -function qcomment_addon_settings_post(&$a,&$b) { - - if(! local_user()) - return; - - if($_POST['qcomment-submit']) { - set_pconfig(local_user(),'qcomment','words',xmlify($_POST['qcomment-words'])); - info( t('Quick Comment settings saved.') . EOL); - } -} - diff --git a/showmore.tgz b/showmore.tgz deleted file mode 100644 index ef095853..00000000 Binary files a/showmore.tgz and /dev/null differ diff --git a/showmore/README b/showmore/README deleted file mode 100755 index 8ee882e3..00000000 --- a/showmore/README +++ /dev/null @@ -1,3 +0,0 @@ -Show more - -Shortens messages and offers a link to show more. diff --git a/showmore/showmore.css b/showmore/showmore.css deleted file mode 100755 index 710c1f3f..00000000 --- a/showmore/showmore.css +++ /dev/null @@ -1,19 +0,0 @@ - -#showmore-label, #showmore-enable-label { - float: left; - width: 300px; - margin-top: 10px; -} - -#showmore-words, #showmore-enable { - float: left; - margin-top: 10px; -} - -#showmore-submit { - margin-top: 15px; -} - -.showmore-desc { - margin-top: 10px; -} diff --git a/showmore/showmore.php b/showmore/showmore.php deleted file mode 100755 index 7842a58e..00000000 --- a/showmore/showmore.php +++ /dev/null @@ -1,121 +0,0 @@ - - * based upon NSFW from Mike Macgirvin - * - */ - -function showmore_install() { - register_hook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - register_hook('plugin_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - register_hook('plugin_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); -} - -function showmore_uninstall() { - unregister_hook('prepare_body', 'addon/showmore/showmore.php', 'showmore_prepare_body'); - unregister_hook('plugin_settings', 'addon/showmore/showmore.php', 'showmore_addon_settings'); - unregister_hook('plugin_settings_post', 'addon/showmore/showmore.php', 'showmore_addon_settings_post'); -} - -function showmore_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'] .= ''."\r\n"; - - $enable_checked = (intval(get_pconfig(local_user(),'showmore','disable')) ? '' : ' checked="checked"'); - $chars = get_pconfig(local_user(),'showmore','chars'); - if(!$chars) - $chars = '1100'; - - $s .= '
'; - $s .= '

' . t('"Show more" Settings').'

'; - $s .= '
'; - - $s .= ''; - $s .= ''; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - $s .= '
'; -// $s .= '
' . t('Use /expression/ to provide regular expressions') . '
'; - - return; -} - -function showmore_addon_settings_post(&$a,&$b) { - - if(! local_user()) - return; - - if($_POST['showmore-submit']) { - set_pconfig(local_user(),'showmore','chars',trim($_POST['showmore-chars'])); - $enable = ((x($_POST,'showmore-enable')) ? intval($_POST['showmore-enable']) : 0); - $disable = 1-$enable; - set_pconfig(local_user(),'showmore','disable', $disable); - info( t('Show More Settings saved.') . EOL); - } -} - -function showmore_prepare_body(&$a,&$b) { - - $words = null; - if(get_pconfig(local_user(),'showmore','disable')) - return; - - $chars = (int)get_pconfig(local_user(),'showmore','chars'); - if(!$chars) - $chars = 1100; - - if (strlen(strip_tags(trim($b['html']))) > $chars) { - $found = true; - $shortened = trim(showmore_cutitem($b['html'], $chars))."..."; - } - - if($found) { - $rnd = random_string(8); - $b['html'] = ''.$shortened." ". - ''.sprintf(t('Show More')).''. - ''; - } -} - -function showmore_cutitem($text, $limit) { - $text = trim($text); - - $text = mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8"); - - $text = substr($text, 0, $limit); - - $pos1 = strrpos($text, "<"); - $pos2 = strrpos($text, ">"); - $pos3 = strrpos($text, "&"); - $pos4 = strrpos($text, ";"); - - if ($pos1 > $pos3) { - if ($pos1 > $pos2) - $text = substr($text, 0, $pos1); - } else { - if ($pos3 > $pos4) - $text = substr($text, 0, $pos3); - } - - $doc = new DOMDocument(); - $doc->preserveWhiteSpace = false; - - $doctype = ''; - @$doc->loadHTML($doctype."".$text.""); - - $text = $doc->saveHTML(); - $text = str_replace(array("", "", $doctype), array("", "", ""), $text); - - return($text); -} diff --git a/statusnet.tgz b/statusnet.tgz index 05d56d88..3d7c9f58 100755 Binary files a/statusnet.tgz and b/statusnet.tgz differ diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 8f2fbf81..f558cbec 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -1,8 +1,7 @@ */ @@ -23,6 +22,13 @@ * Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/StatusNet_Plugin */ +/* __TODO__ + * + * - what about multimedia content? + * so far we just strip HTML tags from the message + */ + + /*** * We have to alter the TwitterOAuth class a little bit to work with any StatusNet * installation abroad. Basically it's only make the API path variable and be happy. @@ -147,6 +153,7 @@ function statusnet_settings_post ($a,$post) { if (isset($_POST['statusnet-disconnect'])) { /*** * if the statusnet-disconnect checkbox is set, clear the statusnet configuration + * TODO can we revoke the access tokens at Twitter and do we need to do so? */ del_pconfig( local_user(), 'statusnet', 'consumerkey' ); del_pconfig( local_user(), 'statusnet', 'consumersecret' ); @@ -327,9 +334,6 @@ function statusnet_settings(&$a,&$s) { $details = $connection->get('account/verify_credentials'); $s .= '

'. t('Currently connected to: ') .''.$details->screen_name.'
'.$details->description.'

'; $s .= '

'. t('If enabled all your public postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.') .'

'; - if ($a->user['hidewall']) { - $s .= '

'. t('Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.') .'

'; - } $s .= '
'; $s .= ''; $s .= ''; @@ -371,31 +375,6 @@ function statusnet_post_local(&$a,&$b) { } } -if (! function_exists( 'short_link' )) { -function short_link($url) { - require_once('library/slinky.php'); - $slinky = new Slinky( $url ); - $yourls_url = get_config('yourls','url1'); - if ($yourls_url) { - $yourls_username = get_config('yourls','username1'); - $yourls_password = get_config('yourls', 'password1'); - $yourls_ssl = get_config('yourls', 'ssl1'); - $yourls = new Slinky_YourLS(); - $yourls->set( 'username', $yourls_username ); - $yourls->set( 'password', $yourls_password ); - $yourls->set( 'ssl', $yourls_ssl ); - $yourls->set( 'yourls-url', $yourls_url ); - $slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); - } - else { - // 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() ) ); - } - return $slinky->short(); -} }; - function statusnet_post_hook(&$a,&$b) { /** @@ -420,49 +399,33 @@ function statusnet_post_hook(&$a,&$b) { require_once('include/bbcode.php'); $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret); - $max_char = $dent->get_maxlength(); // max. length for a dent - // we will only work with up to two times the length of the dent - // we can later send to StatusNet. This way we can "gain" some - // information during shortening of potential links but do not - // shorten all the links in a 200000 character long essay. - $tmp = substr($b['body'], 0, 2*$max_char); - // if [url=bla][img]blub.png[/img][/url] get blub.png - $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp); - // preserve links to images, videos and audios - $tmp = preg_replace( '/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism', '$3', $tmp); - $tmp = preg_replace( '/\[\\/?img(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?video(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp); - // if a #tag is linked, don't send the [url] over to SN - // this is commented out by default as it means backlinks - // to friendica, if you don't like this feel free to - // uncomment the following line -// $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); - // preserve links to webpages - $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $tmp); - $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp); - // find all http or https links in the body of the entry and - // apply the shortener if the link is longer then 20 characters - if (( strlen($tmp)>$max_char ) && ( $max_char > 0 )) { - preg_match_all ( '/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/i', $tmp, $allurls ); - foreach ($allurls as $url) { - foreach ($url as $u) { - if (strlen($u)>20) { - $sl = short_link($u); - $tmp = str_replace( $u, $sl, $tmp ); - } - } - } - } - // ok, all the links we want to send out are save, now strip - // away the remaining bbcode - $msg = strip_tags(bbcode($tmp)); + $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) && $max_char > 0) { - $shortlink = short_link( $b['plink'] ); + $shortlink = ""; + require_once('library/slinky.php'); + $slinky = new Slinky( $b['plink'] ); + $yourls_url = get_config('yourls','url1'); + if ($yourls_url) { + $yourls_username = get_config('yourls','username1'); + $yourls_password = get_config('yourls', 'password1'); + $yourls_ssl = get_config('yourls', 'ssl1'); + $yourls = new Slinky_YourLS(); + $yourls->set( 'username', $yourls_username ); + $yourls->set( 'password', $yourls_password ); + $yourls->set( 'ssl', $yourls_ssl ); + $yourls->set( 'yourls-url', $yourls_url ); + $slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); + } + else { + // 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); diff --git a/twitter.tgz b/twitter.tgz index e3fbdec5..25b54d85 100755 Binary files a/twitter.tgz and b/twitter.tgz differ diff --git a/twitter/twitter.php b/twitter/twitter.php index fd032463..ef590839 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -1,8 +1,7 @@ */ @@ -36,6 +35,12 @@ * Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin */ +/* __TODO__ + * + * - what about multimedia content? + * so far we just strip HTML tags from the message + */ + function twitter_install() { // we need some hooks, for the configuration and for sending tweets register_hook('connector_settings', 'addon/twitter/twitter.php', 'twitter_settings'); @@ -183,9 +188,6 @@ function twitter_settings(&$a,&$s) { $details = $connection->get('account/verify_credentials'); $s .= '

'. t('Currently connected to: ') .''.$details->screen_name.'
'.$details->description.'

'; $s .= '

'. t('If enabled all your public postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry.') .'

'; - if ($a->user['hidewall']) { - $s .= '

'. t('Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted.') .'

'; - } $s .= '
'; $s .= ''; $s .= ''; @@ -228,30 +230,6 @@ function twitter_post_local(&$a,&$b) { } } -if (! function_exists('short_link')) { -function short_link ($url) { - require_once('library/slinky.php'); - $slinky = new Slinky( $url ); - $yourls_url = get_config('yourls','url1'); - if ($yourls_url) { - $yourls_username = get_config('yourls','username1'); - $yourls_password = get_config('yourls', 'password1'); - $yourls_ssl = get_config('yourls', 'ssl1'); - $yourls = new Slinky_YourLS(); - $yourls->set( 'username', $yourls_username ); - $yourls->set( 'password', $yourls_password ); - $yourls->set( 'ssl', $yourls_ssl ); - $yourls->set( 'yourls-url', $yourls_url ); - $slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); - } - else { - // 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() ) ); - } - return $slinky->short(); -} }; function twitter_post_hook(&$a,&$b) { @@ -284,51 +262,33 @@ function twitter_post_hook(&$a,&$b) { require_once('library/twitteroauth.php'); require_once('include/bbcode.php'); $tweet = new TwitterOAuth($ckey,$csecret,$otoken,$osecret); - // in theory max char is 140 but T. uses t.co to make links - // longer so we give them 10 characters extra - $max_char = 130; // max. length for a tweet - // we will only work with up to two times the length of the dent - // we can later send to StatusNet. This way we can "gain" some - // information during shortening of potential links but do not - // shorten all the links in a 200000 character long essay. - $tmp = substr($b['body'], 0, 2*$max_char); - // if [url=bla][img]blub.png[/img][/url] get blub.png - $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp); - // preserve links to images, videos and audios - $tmp = preg_replace( '/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism', '$3', $tmp); - $tmp = preg_replace( '/\[\\/?img(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?video(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp); - $tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp); - // if a #tag is linked, don't send the [url] over to SN - // this is commented out by default as it means backlinks - // to friendica, if you don't like this feel free to - // uncomment the following line -// $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); - // preserve links to webpages - $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $tmp); - $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp); - // find all http or https links in the body of the entry and - // apply the shortener if the link is longer then 20 characters - if (( strlen($tmp)>$max_char ) && ( $max_char > 0 )) { - preg_match_all ( '/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/i', $tmp, $allurls ); - foreach ($allurls as $url) { - foreach ($url as $u) { - if (strlen($u)>20) { - $sl = short_link($u); - $tmp = str_replace( $u, $sl, $tmp ); - } - } - } - } - // ok, all the links we want to send out are save, now strip - // away the remaining bbcode - $msg = strip_tags(bbcode($tmp)); - // quotes not working - let's try this - $msg = html_entity_decode($msg); - if (( strlen($msg) > $max_char) && $max_char > 0) { - $shortlink = short_link( $b['plink'] ); + $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'] ); + $yourls_url = get_config('yourls','url1'); + if ($yourls_url) { + $max_char = 135; + $yourls_username = get_config('yourls','username1'); + $yourls_password = get_config('yourls', 'password1'); + $yourls_ssl = get_config('yourls', 'ssl1'); + $yourls = new Slinky_YourLS(); + $yourls->set( 'username', $yourls_username ); + $yourls->set( 'password', $yourls_password ); + $yourls->set( 'ssl', $yourls_ssl ); + $yourls->set( 'yourls-url', $yourls_url ); + $slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); + } + else { + // 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); diff --git a/wppost.tgz b/wppost.tgz index 12f96d3b..34858866 100755 Binary files a/wppost.tgz and b/wppost.tgz differ diff --git a/wppost/wppost.php b/wppost/wppost.php index 264a342c..6db0d944 100755 --- a/wppost/wppost.php +++ b/wppost/wppost.php @@ -38,7 +38,7 @@ function wppost_jot_nets(&$a,&$b) { if(intval($wp_post) == 1) { $wp_defpost = get_pconfig(local_user(),'wppost','post_by_default'); $selected = ((intval($wp_defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' + $b .= '
' . t('Post to Wordpress') . '
'; } } @@ -161,8 +161,8 @@ function wppost_send(&$a,&$b) { return; - $wp_username = xmlify(get_pconfig($b['uid'],'wppost','wp_username')); - $wp_password = xmlify(get_pconfig($b['uid'],'wppost','wp_password')); + $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) { @@ -174,7 +174,8 @@ function wppost_send(&$a,&$b) { $post = xmlify($post); $xml = <<< EOT - + + blogger.newPost @@ -193,7 +194,7 @@ EOT; if($wp_blog !== 'test') $x = post_url($wp_blog,$xml); - logger('posted to wordpress: ' . (($x) ? $x : ''), LOGGER_DEBUG); + logger('posted to wordpress: ' . ($x) ? $x : ''); } } diff --git a/yourls.tgz b/yourls.tgz index 2385fd20..bf723440 100755 Binary files a/yourls.tgz and b/yourls.tgz differ diff --git a/yourls/yourls.php b/yourls/yourls.php index c0d5e6ce..babfc2c5 100755 --- a/yourls/yourls.php +++ b/yourls/yourls.php @@ -70,7 +70,7 @@ $yourls_ssl = get_config('yourls', 'ssl1'); $s .= '
'; $s .= ''; - $s .= ''; + $s .= ''; $s .= '
'; $s .= '
';