diff --git a/facebook.tgz b/facebook.tgz index bad399164..1d1919d2f 100644 Binary files a/facebook.tgz and b/facebook.tgz differ diff --git a/facebook/facebook.php b/facebook/facebook.php index 20690eddc..9f873284e 100755 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -54,6 +54,7 @@ */ define('FACEBOOK_MAXPOSTLEN', 420); +define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days function facebook_install() { @@ -463,9 +464,21 @@ function facebook_content(&$a) { 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) { @@ -597,7 +610,7 @@ function facebook_cron($a,$b) { 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' @@ -628,17 +641,39 @@ function facebook_plugin_settings(&$a,&$b) { function facebook_plugin_admin(&$a, &$o){ + $o = ''; - $activated = facebook_check_realtime_active(); - if ($activated) { - $o = t('Real-Time Updates are activated.') . '

'; - $o .= ''; - } else { - $o = t('Real-Time Updates not activated.') . '
'; + $o .= '

' . t('Facebook API Key') . '

'; + + $appid = get_config('facebook', 'appid' ); + $appsecret = get_config('facebook', 'appsecret' ); + + $o .= '
'; + $o .= '
'; + $o .= ''; + + if ($appid && $appsecret) { + $o .= '

' . t('Real-Time Updates') . '

'; + + $activated = facebook_check_realtime_active(); + if ($activated) { + $o .= t('Real-Time Updates are activated.') . '

'; + $o .= ''; + } else { + $o .= t('Real-Time Updates not activated.') . '
'; + } } } 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(); } @@ -931,6 +966,7 @@ function facebook_post_hook(&$a,&$b) { 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) { @@ -938,7 +974,6 @@ function facebook_post_hook(&$a,&$b) { dbesc('fb::' . $retj->id), intval($b['id']) ); - del_pconfig($b['uid'], 'facebook', 'session_expired_mailsent'); } else { if(! $likes) { @@ -950,7 +985,9 @@ function facebook_post_hook(&$a,&$b) { 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']) ); @@ -961,14 +998,15 @@ function facebook_post_hook(&$a,&$b) { '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); } } } @@ -980,6 +1018,7 @@ function facebook_enotify(&$app, &$data) { $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]"); } } @@ -1443,8 +1482,8 @@ function fb_get_app_access_token() { 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); @@ -1475,8 +1514,7 @@ function facebook_subscription_del_users() { 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(); @@ -1497,9 +1535,18 @@ function facebook_subscription_add_users() { 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); + } }; } diff --git a/frown.tgz b/frown.tgz deleted file mode 100644 index 6a2343f00..000000000 Binary files a/frown.tgz and /dev/null differ diff --git a/frown/frown.css b/frown/frown.css deleted file mode 100755 index 3690b62ab..000000000 --- a/frown/frown.css +++ /dev/null @@ -1,14 +0,0 @@ - - - -#frown-enable-label { - float: left; - width: 200px; - margin-bottom: 25px; -} - -#frown-checkbox { - float: left; -} - - diff --git a/frown/frown.php b/frown/frown.php deleted file mode 100755 index 003039dfa..000000000 --- a/frown/frown.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * - */ - - -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'] .= '' . "\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 .= '
'; - $s .= '

' . t('Frown Settings') . '

'; - $s .= '
'; - $s .= ''; - $s .= ''; - $s .= '
'; - - /* provide a submit button */ - - $s .= '
'; - -} diff --git a/irc.tgz b/irc.tgz index e10b0769e..c6ba1bffe 100644 Binary files a/irc.tgz and b/irc.tgz differ diff --git a/irc/irc.php b/irc/irc.php index 1e0519509..f2c65b177 100644 --- a/irc/irc.php +++ b/irc/irc.php @@ -36,6 +36,7 @@ function irc_content(&$a) { $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. @@ -44,7 +45,7 @@ $o = ''; $o .= <<< EOT

IRC chat

a beginner's guide to using IRC.

- + EOT; return $o; diff --git a/statusnet.tgz b/statusnet.tgz index 1984cdbaf..4e5bf8cec 100755 Binary files a/statusnet.tgz and b/statusnet.tgz differ diff --git a/statusnet/README b/statusnet/README index ce1e1179b..32c11c7e9 100755 --- a/statusnet/README +++ b/statusnet/README @@ -43,7 +43,7 @@ ___ Configuration ___ __ Global Configuration __ If you enabled an administrator account, please use the admin panel to cofigure -the StatusNet reley. +the StatusNet relay. To activate this addon add statusnet to the list of active addons in your .htconfig.php file diff --git a/twitter.tgz b/twitter.tgz index 18416d1f6..68a412aa2 100755 Binary files a/twitter.tgz and b/twitter.tgz differ diff --git a/twitter/README b/twitter/README index 9d52a4746..a5511fec1 100755 --- a/twitter/README +++ b/twitter/README @@ -48,7 +48,7 @@ ___ Configuration ___ __ Global Configuration __ If you enabled an administrator account, please use the admin panel to cofigure -the Twitter reley. +the Twitter relay. To activate this addon add @twitter@ to the list of active addons in your .htconfig.php file