Merge commit 'upstream/master'

Conflicts:

	facebook/facebook.php
This commit is contained in:
Michael Vogel 2012-04-01 14:08:36 +02:00
commit ced503973a
25 changed files with 179 additions and 192 deletions

Binary file not shown.

View file

@ -57,7 +57,7 @@
// see http://www.facebook.com/schrep/posts/203969696349811 // see http://www.facebook.com/schrep/posts/203969696349811
// define('FACEBOOK_MAXPOSTLEN', 420); // define('FACEBOOK_MAXPOSTLEN', 420);
define('FACEBOOK_MAXPOSTLEN', 63206); define('FACEBOOK_MAXPOSTLEN', 63206);
define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days
function facebook_install() { function facebook_install() {
register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local'); register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local');
@ -466,8 +466,20 @@ function facebook_content(&$a) {
info( t('Updating contacts') . EOL); info( t('Updating contacts') . EOL);
} }
$o = '';
$fb_installed = get_pconfig(local_user(),'facebook','post'); $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'); $appid = get_config('facebook','appid');
@ -600,7 +612,7 @@ function facebook_cron($a,$b) {
if(strlen($a->config['admin_email']) && !get_config('facebook', 'realtime_err_mailsent')) { 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'), $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" 'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n" . 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' . 'Content-transfer-encoding: 8bit'
@ -631,17 +643,39 @@ function facebook_plugin_settings(&$a,&$b) {
function facebook_plugin_admin(&$a, &$o){ 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(); $o .= '<h4>' . t('Facebook API Key') . '</h4>';
if ($activated) {
$o = t('Real-Time Updates are activated.') . '<br><br>'; $appid = get_config('facebook', 'appid' );
$o .= '<input type="submit" name="real_time_deactivate" value="' . t('Deactivate Real-Time Updates') . '">'; $appsecret = get_config('facebook', 'appsecret' );
} else {
$o = t('Real-Time Updates not activated.') . '<br><input type="submit" name="real_time_activate" value="' . t('Activate Real-Time Updates') . '">'; $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){ 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')) { if (x($_REQUEST,'real_time_activate')) {
facebook_subscription_add_users(); facebook_subscription_add_users();
} }
@ -980,6 +1014,7 @@ function facebook_post_hook(&$a,&$b) {
if(! get_config('facebook','test_mode')) { if(! get_config('facebook','test_mode')) {
$x = post_url($url, $postvars); $x = post_url($url, $postvars);
logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
$retj = json_decode($x); $retj = json_decode($x);
if($retj->id) { if($retj->id) {
@ -987,7 +1022,6 @@ function facebook_post_hook(&$a,&$b) {
dbesc('fb::' . $retj->id), dbesc('fb::' . $retj->id),
intval($b['id']) intval($b['id'])
); );
del_pconfig($b['uid'], 'facebook', 'session_expired_mailsent');
} }
else { else {
if(! $likes) { if(! $likes) {
@ -999,7 +1033,9 @@ function facebook_post_hook(&$a,&$b) {
if (isset($retj->error) && $retj->error->type == "OAuthException" && $retj->error->code == 190) { if (isset($retj->error) && $retj->error->type == "OAuthException" && $retj->error->code == 190) {
logger('Facebook session has expired due to changed password.', LOGGER_DEBUG); 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'); require_once('include/enotify.php');
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($b['uid']) ); $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($b['uid']) );
@ -1010,14 +1046,15 @@ function facebook_post_hook(&$a,&$b) {
'language' => $r[0]['language'], 'language' => $r[0]['language'],
'to_name' => $r[0]['username'], 'to_name' => $r[0]['username'],
'to_email' => $r[0]['email'], '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);
} }
} }
} }
@ -1029,6 +1066,7 @@ function facebook_enotify(&$app, &$data) {
$data['itemlink'] = '/facebook'; $data['itemlink'] = '/facebook';
$data['epreamble'] = $data['preamble'] = t('Your Facebook connection became invalid. Please Re-authenticate.'); $data['epreamble'] = $data['preamble'] = t('Your Facebook connection became invalid. Please Re-authenticate.');
$data['subject'] = t('Facebook connection became invalid'); $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]");
} }
} }
@ -1492,8 +1530,8 @@ function fb_get_app_access_token() {
logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG); logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG);
return false; return false;
} }
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"); $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) { if(strpos($x,'access_token=') !== false) {
logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA); logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA);
@ -1524,8 +1562,7 @@ function facebook_subscription_del_users() {
del_config('facebook', 'realtime_active'); del_config('facebook', 'realtime_active');
} }
function facebook_subscription_add_users() { function facebook_subscription_add_users($second_try = false) {
$a = get_app(); $a = get_app();
$access_token = fb_get_app_access_token(); $access_token = fb_get_app_access_token();
@ -1546,9 +1583,18 @@ function facebook_subscription_add_users() {
del_config('facebook', 'cb_verify_token'); del_config('facebook', 'cb_verify_token');
if ($j) { if ($j) {
$x = json_decode($j);
logger("Facebook reponse: " . $j, LOGGER_DATA); logger("Facebook reponse: " . $j, LOGGER_DATA);
if (isset($x->error)) {
if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1); 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);
}
}; };
} }

BIN
frown.tgz

Binary file not shown.

View file

@ -1,14 +0,0 @@
#frown-enable-label {
float: left;
width: 200px;
margin-bottom: 25px;
}
#frown-checkbox {
float: left;
}

View file

@ -1,86 +0,0 @@
<?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>';
}

BIN
irc.tgz

Binary file not shown.

View file

@ -36,6 +36,7 @@ function irc_content(&$a) {
$baseurl = $a->get_baseurl() . '/addon/irc'; $baseurl = $a->get_baseurl() . '/addon/irc';
$o = ''; $o = '';
$channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica');
/* add the chatroom frame and some html /* add the chatroom frame and some html
* by altering the "channels=friendica" part of the URL, you can add/remove channels. * by altering the "channels=friendica" part of the URL, you can add/remove channels.
@ -44,7 +45,7 @@ $o = '';
$o .= <<< EOT $o .= <<< EOT
<h2>IRC chat</h2> <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> <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; EOT;
return $o; return $o;

BIN
namethingy.tgz Normal file

Binary file not shown.

37
namethingy/namethingy.php Executable file
View file

@ -0,0 +1,37 @@
<?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;
}

BIN
page.tgz

Binary file not shown.

View file

@ -44,7 +44,7 @@ function page_page_end($a,&$b) {
$page = '<div id="page-sidebar" class="widget"> $page = '<div id="page-sidebar" class="widget">
<div class="title tool"> <div class="title tool">
<h3>'.t("Community Pages").'</h3></div> <h3>'.t("Forums").'</h3></div>
<div id="sidebar-page-list"><ul>'; <div id="sidebar-page-list"><ul>';
$contacts = page_getpage($a->user['uid']); $contacts = page_getpage($a->user['uid']);

BIN
pages.tgz

Binary file not shown.

View file

@ -1,44 +0,0 @@
<?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);
}

Binary file not shown.

Binary file not shown.

View file

@ -42,6 +42,9 @@ ___ Configuration ___
__ Global Configuration __ __ 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 To activate this addon add statusnet to the list of active addons in your
.htconfig.php file .htconfig.php file
$a->config['system']['addon'] = "statusnet, ...". $a->config['system']['addon'] = "statusnet, ...".

View file

@ -18,9 +18,12 @@
#statusnet-default-label { #statusnet-default-label {
float: left; float: left;
width: 250px; width: 250px;
margin-bottom: 25px;
} }
#statusnet-sendtaglinks-label {
float: left;
width: 250px;
margin-bottom: 25px;
}
#statusnet-disconnect { #statusnet-disconnect {
float: left; float: left;
} }

View file

@ -2,7 +2,7 @@
/** /**
* Name: StatusNet Connector * Name: StatusNet Connector
* Description: Relay public postings to a connected StatusNet account * 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> * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
*/ */
@ -155,6 +155,7 @@ function statusnet_settings_post ($a,$post) {
del_pconfig( local_user(), 'statusnet', 'oauthtoken' ); del_pconfig( local_user(), 'statusnet', 'oauthtoken' );
del_pconfig( local_user(), 'statusnet', 'oauthsecret' ); del_pconfig( local_user(), 'statusnet', 'oauthsecret' );
del_pconfig( local_user(), 'statusnet', 'baseapi' ); del_pconfig( local_user(), 'statusnet', 'baseapi' );
del_pconfig( local_user(), 'statusnet', 'post_taglinks');
} else { } else {
if (isset($_POST['statusnet-preconf-apiurl'])) { if (isset($_POST['statusnet-preconf-apiurl'])) {
/*** /***
@ -218,14 +219,16 @@ function statusnet_settings_post ($a,$post) {
// ok, now that we have the Access Token, save them in the user config // 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', 'oauthtoken', $token['oauth_token']);
set_pconfig(local_user(),'statusnet', 'oauthsecret', $token['oauth_token_secret']); 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 // reload the Addon Settings page, if we don't do it see Bug #42
goaway($a->get_baseurl().'/settings/connectors'); goaway($a->get_baseurl().'/settings/connectors');
} else { } else {
// if no PIN is supplied in the POST variables, the user has changed the setting // 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',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); info( t('StatusNet settings updated.') . EOL);
}}}} }}}}
} }
@ -247,7 +250,9 @@ function statusnet_settings(&$a,&$s) {
$enabled = get_pconfig(local_user(), 'statusnet', 'post'); $enabled = get_pconfig(local_user(), 'statusnet', 'post');
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$defenabled = get_pconfig(local_user(),'statusnet','post_by_default'); $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 .= '<div class="settings-block">';
$s .= '<h3>'. t('StatusNet Posting Settings').'</h3>'; $s .= '<h3>'. t('StatusNet Posting Settings').'</h3>';
@ -336,6 +341,9 @@ function statusnet_settings(&$a,&$s) {
$s .= '<div class="clear"></div>'; $s .= '<div class="clear"></div>';
$s .= '<label id="statusnet-default-label" for="statusnet-default">'. t('Send public postings to StatusNet by default') .'</label>'; $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 .= '<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><div class="clear"></div>';
$s .= '<div id="statusnet-disconnect-wrapper">'; $s .= '<div id="statusnet-disconnect-wrapper">';
@ -425,7 +433,12 @@ function statusnet_post_hook(&$a,&$b) {
// we can later send to StatusNet. This way we can "gain" some // we can later send to StatusNet. This way we can "gain" some
// information during shortening of potential links but do not // information during shortening of potential links but do not
// shorten all the links in a 200000 character long essay. // 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 // 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); $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp);
// preserve links to images, videos and audios // preserve links to images, videos and audios
@ -435,11 +448,13 @@ function statusnet_post_hook(&$a,&$b) {
$tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?audio(\\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 // if a #tag is linked, don't send the [url] over to SN
// this is commented out by default as it means backlinks // that is, don't send if the option is not set in the
// to friendica, if you don't like this feel free to // connector settings
// uncomment the following line if ($linksenabled=='0') {
// $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
}
// preserve links to webpages // preserve links to webpages
$tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $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); $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp);

Binary file not shown.

View file

@ -47,6 +47,9 @@ ___ Configuration ___
__ Global Configuration __ __ 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 To activate this addon add @twitter@ to the list of active addons in your
.htconfig.php file .htconfig.php file
$a->config['system']['addon'] = "twitter, ..." $a->config['system']['addon'] = "twitter, ..."

View file

@ -12,7 +12,7 @@
} }
#twitter-disconnect-label { #twitter-disconnect-label {
float: left; float: left;
width: 200px; width: 250px;
margin-bottom: 25px; margin-bottom: 25px;
} }
@ -21,16 +21,25 @@
} }
#twitter-enable-label { #twitter-enable-label {
float: left; float: left;
width: 200px; width: 250px;
margin-bottom: 5px; margin-bottom: 5px;
} }
#twitter-default-label {
float: left;
width: 250px;
}
#twitter-sendtaglinks-label {
float: left;
width: 250px;
margin-bottom: 25px;
}
#twitter-checkbox { #twitter-checkbox {
float: left; float: left;
} }
#twitter-pin-label { #twitter-pin-label {
float: left; float: left;
width: 200px; width: 250px;
margin-bottom: 25px; margin-bottom: 25px;
} }

View file

@ -2,7 +2,7 @@
/** /**
* Name: Twitter Connector * Name: Twitter Connector
* Description: Relay public postings to a connected Twitter account * 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> * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
*/ */
@ -93,6 +93,7 @@ function twitter_settings_post ($a,$post) {
del_pconfig( local_user(), 'twitter', 'oauthsecret' ); del_pconfig( local_user(), 'twitter', 'oauthsecret' );
del_pconfig( local_user(), 'twitter', 'post' ); del_pconfig( local_user(), 'twitter', 'post' );
del_pconfig( local_user(), 'twitter', 'post_by_default' ); del_pconfig( local_user(), 'twitter', 'post_by_default' );
del_pconfig( local_user(), 'twitter', 'post_taglinks');
} else { } else {
if (isset($_POST['twitter-pin'])) { if (isset($_POST['twitter-pin'])) {
// if the user supplied us with a PIN from Twitter, let the magic of OAuth happen // if the user supplied us with a PIN from Twitter, let the magic of OAuth happen
@ -109,6 +110,7 @@ function twitter_settings_post ($a,$post) {
set_pconfig(local_user(),'twitter', 'oauthtoken', $token['oauth_token']); set_pconfig(local_user(),'twitter', 'oauthtoken', $token['oauth_token']);
set_pconfig(local_user(),'twitter', 'oauthsecret', $token['oauth_token_secret']); set_pconfig(local_user(),'twitter', 'oauthsecret', $token['oauth_token_secret']);
set_pconfig(local_user(),'twitter', 'post', 1); 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 // reload the Addon Settings page, if we don't do it see Bug #42
goaway($a->get_baseurl().'/settings/connectors'); goaway($a->get_baseurl().'/settings/connectors');
} else { } else {
@ -116,6 +118,7 @@ function twitter_settings_post ($a,$post) {
// to post a tweet for every new __public__ posting to the wall // 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',intval($_POST['twitter-enable']));
set_pconfig(local_user(),'twitter','post_by_default',intval($_POST['twitter-default'])); 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); info( t('Twitter settings updated.') . EOL);
}} }}
} }
@ -136,6 +139,8 @@ function twitter_settings(&$a,&$s) {
$checked = (($enabled) ? ' checked="checked" ' : ''); $checked = (($enabled) ? ' checked="checked" ' : '');
$defenabled = get_pconfig(local_user(),'twitter','post_by_default'); $defenabled = get_pconfig(local_user(),'twitter','post_by_default');
$defchecked = (($defenabled) ? ' checked="checked" ' : ''); $defchecked = (($defenabled) ? ' checked="checked" ' : '');
$linksenabled = get_pconfig(local_user(),'twitter','post_taglinks');
$linkschecked = (($linksenabled) ? ' checked="checked" ' : '');
$s .= '<div class="settings-block">'; $s .= '<div class="settings-block">';
$s .= '<h3>'. t('Twitter Posting Settings') .'</h3>'; $s .= '<h3>'. t('Twitter Posting Settings') .'</h3>';
@ -192,6 +197,9 @@ function twitter_settings(&$a,&$s) {
$s .= '<div class="clear"></div>'; $s .= '<div class="clear"></div>';
$s .= '<label id="twitter-default-label" for="twitter-default">'. t('Send public postings to Twitter by default') .'</label>'; $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 .= '<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><div class="clear"></div>';
$s .= '<div id="twitter-disconnect-wrapper">'; $s .= '<div id="twitter-disconnect-wrapper">';
@ -291,7 +299,12 @@ function twitter_post_hook(&$a,&$b) {
// we can later send to Twitter. This way we can "gain" some // we can later send to Twitter. This way we can "gain" some
// information during shortening of potential links but do not // information during shortening of potential links but do not
// shorten all the links in a 200000 character long essay. // 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 // 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); $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp);
// preserve links to images, videos and audios // preserve links to images, videos and audios
@ -301,12 +314,13 @@ function twitter_post_hook(&$a,&$b) {
$tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
$tmp = preg_replace( '/\[\\/?audio(\\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 // if a #tag is linked, don't send the [url] over to SN
// this is commented out by default as it means backlinks // that is, don't send if the option is not set in the
// to friendica, if you don't like this feel free to // connector settings
// uncomment the following line if ($linksenabled=='0') {
// $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); $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( '/\[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); $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 // find all http or https links in the body of the entry and

Binary file not shown.

View file

@ -32,7 +32,7 @@ EOS;
} }
function viewsrc_item_photo_menu(&$a,&$b) { function viewsrc_item_photo_menu(&$a,&$b) {
if(! local_user()) if((! local_user()) || (local_user() != $b['item']['uid']))
return; return;
$b['menu'] = array_merge( array( t('View Source') => $a->get_baseurl() . '/viewsrc/'. $b['item']['id']), $b['menu']); $b['menu'] = array_merge( array( t('View Source') => $a->get_baseurl() . '/viewsrc/'. $b['item']['id']), $b['menu']);

Binary file not shown.