// see http://www.facebook.com/schrep/posts/203969696349811
// define('FACEBOOK_MAXPOSTLEN', 420);
define('FACEBOOK_MAXPOSTLEN', 63206);
-
+define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days
function facebook_install() {
register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local');
info( t('Updating contacts') . EOL);
}
-
- $fb_installed = get_pconfig(local_user(),'facebook','post');
-
+ $o = '';
+
+ $fb_installed = false;
+ if (get_pconfig(local_user(),'facebook','post')) {
+ $access_token = get_pconfig(local_user(),'facebook','access_token');
+ if ($access_token) {
+ $private_wall = intval(get_pconfig($uid,'facebook','private_wall'));
+ $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
+ if($s) {
+ $j = json_decode($s);
+ if (isset($j->data)) $fb_installed = true;
+ }
+ }
+ }
+
$appid = get_config('facebook','appid');
if(! $appid) {
if(strlen($a->config['admin_email']) && !get_config('facebook', 'realtime_err_mailsent')) {
$res = mail($a->config['admin_email'], t('Problems with Facebook Real-Time Updates'),
- "Hi!\n\nThere's a problem with the Facebook Real-Time Updates that cannot be solved automatically. Maybe an permission issue?\n\nThis e-mail will only be sent once.",
+ "Hi!\n\nThere's a problem with the Facebook Real-Time Updates that cannot be solved automatically. Maybe a permission issue?\n\nPlease try to re-activate it on " . $a->config["system"]["url"] . "/admin/plugins/facebook\n\nThis e-mail will only be sent once.",
'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit'
function facebook_plugin_admin(&$a, &$o){
+ $o = '<input type="hidden" name="form_security_token" value="' . get_form_security_token("fbsave") . '">';
- $activated = facebook_check_realtime_active();
- if ($activated) {
- $o = t('Real-Time Updates are activated.') . '<br><br>';
- $o .= '<input type="submit" name="real_time_deactivate" value="' . t('Deactivate Real-Time Updates') . '">';
- } else {
- $o = t('Real-Time Updates not activated.') . '<br><input type="submit" name="real_time_activate" value="' . t('Activate Real-Time Updates') . '">';
+ $o .= '<h4>' . t('Facebook API Key') . '</h4>';
+
+ $appid = get_config('facebook', 'appid' );
+ $appsecret = get_config('facebook', 'appsecret' );
+
+ $o .= '<label for="fb_appid">' . t('App-ID / API-Key') . '</label><input name="appid" type="text" value="' . escape_tags($appid ? $appid : "") . '"><br style="clear: both;">';
+ $o .= '<label for="fb_appsecret">' . t('Application secret') . '</label><input name="appsecret" type="text" value="' . escape_tags($appsecret ? $appsecret : "") . '"><br style="clear: both;">';
+ $o .= '<input type="submit" name="fb_save_keys" value="' . t('Save') . '">';
+
+ if ($appid && $appsecret) {
+ $o .= '<h4>' . t('Real-Time Updates') . '</h4>';
+
+ $activated = facebook_check_realtime_active();
+ if ($activated) {
+ $o .= t('Real-Time Updates are activated.') . '<br><br>';
+ $o .= '<input type="submit" name="real_time_deactivate" value="' . t('Deactivate Real-Time Updates') . '">';
+ } else {
+ $o .= t('Real-Time Updates not activated.') . '<br><input type="submit" name="real_time_activate" value="' . t('Activate Real-Time Updates') . '">';
+ }
}
}
function facebook_plugin_admin_post(&$a, &$o){
+ check_form_security_token_redirectOnErr('/admin/plugins/facebook', 'fbsave');
+
+ if (x($_REQUEST,'fb_save_keys')) {
+ set_config('facebook', 'appid', $_REQUEST['appid']);
+ set_config('facebook', 'appsecret', $_REQUEST['appsecret']);
+ del_config('facebook', 'app_access_token');
+ info(t('The new values have been saved.'));
+ }
if (x($_REQUEST,'real_time_activate')) {
facebook_subscription_add_users();
}
if(! get_config('facebook','test_mode')) {
$x = post_url($url, $postvars);
+ logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
$retj = json_decode($x);
if($retj->id) {
dbesc('fb::' . $retj->id),
intval($b['id'])
);
- del_pconfig($b['uid'], 'facebook', 'session_expired_mailsent');
}
else {
if(! $likes) {
if (isset($retj->error) && $retj->error->type == "OAuthException" && $retj->error->code == 190) {
logger('Facebook session has expired due to changed password.', LOGGER_DEBUG);
- if (!get_pconfig($b['uid'], 'facebook', 'session_expired_mailsent')) {
+
+ $last_notification = get_pconfig($b['uid'], 'facebook', 'session_expired_mailsent');
+ if (!$last_notification || $last_notification < (time() - FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL)) {
require_once('include/enotify.php');
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($b['uid']) );
'language' => $r[0]['language'],
'to_name' => $r[0]['username'],
'to_email' => $r[0]['email'],
+ 'source_name' => t('Administrator'),
+ 'source_link' => $a->config["system"]["url"],
+ 'source_photo' => $a->config["system"]["url"] . '/images/person-80.jpg',
));
- set_pconfig($b['uid'], 'facebook', 'session_expired_mailsent', '1');
- }
+ set_pconfig($b['uid'], 'facebook', 'session_expired_mailsent', time());
+ } else logger('Facebook: No notification, as the last one was sent on ' . $last_notification, LOGGER_DEBUG);
}
}
-
- logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
}
}
}
$data['itemlink'] = '/facebook';
$data['epreamble'] = $data['preamble'] = t('Your Facebook connection became invalid. Please Re-authenticate.');
$data['subject'] = t('Facebook connection became invalid');
+ $data['body'] = sprintf( t("Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."), $data['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]", "[url=" . $app->config["system"]["url"] . "/facebook]", "[/url]");
}
}
logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG);
return false;
}
-
- $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . "&grant_type=client_credentials");
+ logger('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials', LOGGER_DATA);
+ $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials');
if(strpos($x,'access_token=') !== false) {
logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA);
del_config('facebook', 'realtime_active');
}
-function facebook_subscription_add_users() {
-
+function facebook_subscription_add_users($second_try = false) {
$a = get_app();
$access_token = fb_get_app_access_token();
del_config('facebook', 'cb_verify_token');
if ($j) {
+ $x = json_decode($j);
logger("Facebook reponse: " . $j, LOGGER_DATA);
-
- if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1);
+ if (isset($x->error)) {
+ logger('facebook_subscription_add_users: got an error: ' . $j);
+ if ($x->error->type == "OAuthException" && $x->error->code == 190) {
+ del_config('facebook', 'app_access_token');
+ if ($second_try === false) facebook_subscription_add_users(true);
+ }
+ } else {
+ logger('facebook_subscription_add_users: sucessful');
+ if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1);
+ }
};
}
+++ /dev/null
-
-
-
-#frown-enable-label {
- float: left;
- width: 200px;
- margin-bottom: 25px;
-}
-
-#frown-checkbox {
- float: left;
-}
-
-
+++ /dev/null
-<?php
-/**
- * Name: Frown
- * Description: Disable graphical smilies
- * Version: 1.0
- * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
- *
- *
- */
-
-
-function frown_install() {
-
- register_hook('plugin_settings', 'addon/frown/frown.php', 'frown_settings');
- register_hook('plugin_settings_post', 'addon/frown/frown.php', 'frown_settings_post');
-
- logger("installed frown");
-}
-
-
-function frown_uninstall() {
-
- unregister_hook('plugin_settings', 'addon/frown/frown.php', 'frown_settings');
- unregister_hook('plugin_settings_post', 'addon/frown/frown.php', 'frown_settings_post');
-
-
- logger("removed frown");
-}
-
-
-
-/**
- *
- * 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 frown_settings_post($a,$post) {
- if(! local_user() || (! x($_POST,'frown-submit')))
- return;
- set_pconfig(local_user(),'system','no_smilies',intval($_POST['frown']));
-
- info( t('Frown settings updated.') . EOL);
-}
-
-
-/**
- *
- * Called from the Plugin Setting form.
- * Add our own settings info to the page.
- *
- */
-
-
-
-function frown_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/frown/frown.css' . '" media="all" />' . "\r\n";
-
- /* Get the current state of our config variable */
-
- $enabled = get_pconfig(local_user(),'system','no_smilies');
- $checked = (($enabled) ? ' checked="checked" ' : '');
-
- /* Add some HTML to the existing form */
-
- $s .= '<div class="settings-block">';
- $s .= '<h3>' . t('Frown Settings') . '</h3>';
- $s .= '<div id="frown-enable-wrapper">';
- $s .= '<label id="frown-enable-label" for="frown-checkbox">' . t('Disable graphical smilies') . '</label>';
- $s .= '<input id="frown-checkbox" type="checkbox" name="frown" value="1" ' . $checked . '/>';
- $s .= '</div><div class="clear"></div>';
-
- /* provide a submit button */
-
- $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="frown-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
-
-}
$baseurl = $a->get_baseurl() . '/addon/irc';
$o = '';
+$channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica');
/* add the chatroom frame and some html
* by altering the "channels=friendica" part of the URL, you can add/remove channels.
$o .= <<< EOT
<h2>IRC chat</h2>
<p><a href="http://tldp.org/HOWTO/IRC/beginners.html" target="_blank">a beginner's guide to using IRC.</a></p>
-<iframe src="http://webchat.freenode.net?channels=friendica" width="600" height="600"></iframe>
+<iframe src="http://webchat.freenode.net?channels=$channels" width="600" height="600"></iframe>
EOT;
return $o;
--- /dev/null
+<?php
+
+/**
+ *
+ * Name: NameThingy
+ * Description: The Ultimate Random Name Generator
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ */
+
+
+function namethingy_install() {
+ register_hook('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
+}
+
+function namethingy_uninstall() {
+ unregister_hook('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
+
+}
+
+function namethingy_app_menu($a,&$b) {
+ $b['app_menu'][] = '<div class="app-title"><a href="namethingy">NameThingy</a></div>';
+}
+
+
+function namethingy_module() {}
+
+function namethingy_content(&$a) {
+
+$baseurl = $a->get_baseurl() . '/addon/namethingy';
+
+$o .= <<< EOT
+<iframe src="http://namethingy.com" width="900" height="700" />
+EOT;
+
+return $o;
+}
$page = '<div id="page-sidebar" class="widget">
<div class="title tool">
- <h3>'.t("Community Pages").'</h3></div>
+ <h3>'.t("Forums").'</h3></div>
<div id="sidebar-page-list"><ul>';
$contacts = page_getpage($a->user['uid']);
+++ /dev/null
-<?php
-/**
- * Name: Remember OpenID Login
- * Description: Autologin with last openid used
- * Version: 1.0
- * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
- */
-
-
-function rememberoid_install(){
- register_hook('init_1','addon/rememberoid/rememberoid.php','rememberoid_init');
- register_hook('logging_out','addon/rememberoid/rememberoid.php','rememberoid_logout');
- register_hook('login_hook','addon/rememberoid/rememberoid.php','rememberoid_form');
-}
-
-function rememberoid_uninstall(){
- unregister_hook('init_1','addon/rememberoid/rememberoid.php','rememberoid_init');
- unregister_hook('logging_out','addon/rememberoid/rememberoid.php','rememberoid_logout');
- unregister_hook('login_hook','addon/rememberoid/rememberoid.php','rememberoid_form');
-}
-
-function rememberoid_init(&$a) {
- if (x($_COOKIE, "remember_oid") && !x($_SESSION['openid']) && !x($_SESSION,'authenticated') && !x($_POST,'auth-params') && $a->module === 'home' ){
- $_POST['openid_url'] = $_COOKIE["remember_oid"];
- $_POST['auth-params'] = 1;
- }
- if (x($_POST,'auth-params') && $_POST['openid_url'] && $_POST['openid_url']!="" && $_POST['remember_oid']){
- setcookie('remember_oid', $_POST['openid_url'], time()+60*60*24*30, "/");
- }
-}
-
-function rememberoid_logout(&$a) {
- setcookie("rembember_oid", "", time()-3600);
-}
-
-function rememberoid_form(&$a, &$o){
- $tpl = get_markup_template("field_checkbox.tpl");
- $html = replace_macros($tpl, array(
- '$field' => array('remember_oid', t("Autologin with this OpenId"), false,''),
- ));
-
- $o = preg_replace("|<div *id=[\"']login_openid[\"']>|", "<div id='login_openid'>".$html, $o);
-
-}
__ Global Configuration __
+If you enabled an administrator account, please use the admin panel to cofigure
+the StatusNet relay.
+
To activate this addon add statusnet to the list of active addons in your
.htconfig.php file
$a->config['system']['addon'] = "statusnet, ...".
#statusnet-default-label {
float: left;
width: 250px;
- margin-bottom: 25px;
}
-
+#statusnet-sendtaglinks-label {
+ float: left;
+ width: 250px;
+ margin-bottom: 25px;
+}
#statusnet-disconnect {
float: left;
}
/**
* Name: StatusNet Connector
* Description: Relay public postings to a connected StatusNet account
- * Version: 1.0.3
+ * Version: 1.0.4
* Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
*/
del_pconfig( local_user(), 'statusnet', 'oauthtoken' );
del_pconfig( local_user(), 'statusnet', 'oauthsecret' );
del_pconfig( local_user(), 'statusnet', 'baseapi' );
+ del_pconfig( local_user(), 'statusnet', 'post_taglinks');
} else {
if (isset($_POST['statusnet-preconf-apiurl'])) {
/***
// ok, now that we have the Access Token, save them in the user config
set_pconfig(local_user(),'statusnet', 'oauthtoken', $token['oauth_token']);
set_pconfig(local_user(),'statusnet', 'oauthsecret', $token['oauth_token_secret']);
- set_pconfig(local_user(),'statusnet', 'post', 1);
+ set_pconfig(local_user(),'statusnet', 'post', 1);
+ set_pconfig(local_user(),'statusnet', 'post_taglinks', 1);
// reload the Addon Settings page, if we don't do it see Bug #42
goaway($a->get_baseurl().'/settings/connectors');
} else {
// if no PIN is supplied in the POST variables, the user has changed the setting
- // to post a tweet for every new __public__ posting to the wall
+ // to post a dent for every new __public__ posting to the wall
set_pconfig(local_user(),'statusnet','post',intval($_POST['statusnet-enable']));
- set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default']));
+ set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default']));
+ set_pconfig(local_user(),'statusnet','post_taglinks',intval($_POST['statusnet-sendtaglinks']));
info( t('StatusNet settings updated.') . EOL);
}}}}
}
$enabled = get_pconfig(local_user(), 'statusnet', 'post');
$checked = (($enabled) ? ' checked="checked" ' : '');
$defenabled = get_pconfig(local_user(),'statusnet','post_by_default');
- $defchecked = (($defenabled) ? ' checked="checked" ' : '');
+ $defchecked = (($defenabled) ? ' checked="checked" ' : '');
+ $linksenabled = get_pconfig(local_user(),'statusnet','post_taglinks');
+ $linkschecked = (($linksenabled) ? ' checked="checked" ' : '');
$s .= '<div class="settings-block">';
$s .= '<h3>'. t('StatusNet Posting Settings').'</h3>';
$s .= '<div class="clear"></div>';
$s .= '<label id="statusnet-default-label" for="statusnet-default">'. t('Send public postings to StatusNet by default') .'</label>';
$s .= '<input id="statusnet-default" type="checkbox" name="statusnet-default" value="1" ' . $defchecked . '/>';
+ $s .= '<div class="clear"></div>';
+ $s .= '<label id="statusnet-sendtaglinks-label" for="statusnet-sendtaglinks">'.t('Send #tag links to StatusNet').'</label>';
+ $s .= '<input id="statusnet-sendtaglinks" type="checkbox" name="statusnet-sendtaglinks" value="1" '. $linkschecked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="statusnet-disconnect-wrapper">';
// 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 (! $b['title']=='') {
+ $tmp = $b['title'] . ' : '. $b['body'];
+ $tmp = substr($tmp, 0, 2*$max_char);
+ } else {
+ $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( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp);
+ $linksenabled = get_pconfig($b['uid'],'statusnet','post_taglinks');
// 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);
+ // that is, don't send if the option is not set in the
+ // connector settings
+ if ($linksenabled=='0') {
+ $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);
__ Global Configuration __
+If you enabled an administrator account, please use the admin panel to cofigure
+the Twitter relay.
+
To activate this addon add @twitter@ to the list of active addons in your
.htconfig.php file
$a->config['system']['addon'] = "twitter, ..."
}
#twitter-disconnect-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 25px;
}
}
#twitter-enable-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 5px;
}
+#twitter-default-label {
+ float: left;
+ width: 250px;
+}
+#twitter-sendtaglinks-label {
+ float: left;
+ width: 250px;
+ margin-bottom: 25px;
+}
#twitter-checkbox {
float: left;
}
#twitter-pin-label {
float: left;
- width: 200px;
+ width: 250px;
margin-bottom: 25px;
}
/**
* Name: Twitter Connector
* Description: Relay public postings to a connected Twitter account
- * Version: 1.0.2
+ * Version: 1.0.3
* Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
*/
del_pconfig( local_user(), 'twitter', 'oauthsecret' );
del_pconfig( local_user(), 'twitter', 'post' );
del_pconfig( local_user(), 'twitter', 'post_by_default' );
+ del_pconfig( local_user(), 'twitter', 'post_taglinks');
} else {
if (isset($_POST['twitter-pin'])) {
// if the user supplied us with a PIN from Twitter, let the magic of OAuth happen
set_pconfig(local_user(),'twitter', 'oauthtoken', $token['oauth_token']);
set_pconfig(local_user(),'twitter', 'oauthsecret', $token['oauth_token_secret']);
set_pconfig(local_user(),'twitter', 'post', 1);
+ set_pconfig(local_user(),'twitter', 'post_taglinks', 1);
// reload the Addon Settings page, if we don't do it see Bug #42
goaway($a->get_baseurl().'/settings/connectors');
} else {
// to post a tweet for every new __public__ posting to the wall
set_pconfig(local_user(),'twitter','post',intval($_POST['twitter-enable']));
set_pconfig(local_user(),'twitter','post_by_default',intval($_POST['twitter-default']));
+ set_pconfig(local_user(),'twitter','post_taglinks',intval($_POST['twitter-sendtaglinks']));
info( t('Twitter settings updated.') . EOL);
}}
}
$checked = (($enabled) ? ' checked="checked" ' : '');
$defenabled = get_pconfig(local_user(),'twitter','post_by_default');
$defchecked = (($defenabled) ? ' checked="checked" ' : '');
+ $linksenabled = get_pconfig(local_user(),'twitter','post_taglinks');
+ $linkschecked = (($linksenabled) ? ' checked="checked" ' : '');
$s .= '<div class="settings-block">';
$s .= '<h3>'. t('Twitter Posting Settings') .'</h3>';
$s .= '<div class="clear"></div>';
$s .= '<label id="twitter-default-label" for="twitter-default">'. t('Send public postings to Twitter by default') .'</label>';
$s .= '<input id="twitter-default" type="checkbox" name="twitter-default" value="1" ' . $defchecked . '/>';
+ $s .= '<div class="clear"></div>';
+ $s .= '<label id="twitter-sendtaglinks-label" for="twitter-sendtaglinks">'.t('Send #tag links to Twitter').'</label>';
+ $s .= '<input id="twitter-sendtaglinks" type="checkbox" name="twitter-sendtaglinks" value="1" '. $linkschecked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="twitter-disconnect-wrapper">';
// we can later send to Twitter. 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 (! $b['title']=='') {
+ $tmp = $b['title'] . ' : '. $b['body'];
+ $tmp = substr($tmp, 0, 2*$max_char);
+ } else {
+ $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( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp);
+ $linksenabled = get_pconfig($b['uid'],'twitter','post_taglinks');
// 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
+ // that is, don't send if the option is not set in the
+ // connector settings
+ if ($linksenabled=='0') {
+ $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
+ }
$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
}
function viewsrc_item_photo_menu(&$a,&$b) {
- if(! local_user())
+ if((! local_user()) || (local_user() != $b['item']['uid']))
return;
$b['menu'] = array_merge( array( t('View Source') => $a->get_baseurl() . '/viewsrc/'. $b['item']['id']), $b['menu']);