forked from friendica/friendica-addons
Massive reformatting of StatusNet
- Fixed unreachable code line 1550 - Renamed the relevant use statements
This commit is contained in:
parent
34396fedfe
commit
7857d1e4a0
1 changed files with 722 additions and 632 deletions
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Name: GNU Social Connector
|
||||
* Description: Bidirectional (posting, relaying and reading) connector for GNU Social.
|
||||
|
|
@ -32,9 +33,7 @@
|
|||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/***
|
||||
/*
|
||||
* We have to alter the TwitterOAuth class a little bit to work with any GNU Social
|
||||
* installation abroad. Basically it's only make the API path variable and be happy.
|
||||
*
|
||||
|
|
@ -46,24 +45,46 @@ define('STATUSNET_DEFAULT_POLL_INTERVAL', 5); // given in minutes
|
|||
require_once 'library/twitteroauth.php';
|
||||
require_once 'include/enotify.php';
|
||||
|
||||
use Friendica\App;
|
||||
use Friendica\Core\Config;
|
||||
use Friendica\Core\PConfig;
|
||||
use Friendica\Model\GlobalContact;
|
||||
use Friendica\Object\Photo;
|
||||
use Friendica\Model\GContact;
|
||||
use Friendica\Model\Photo;
|
||||
|
||||
class StatusNetOAuth extends TwitterOAuth {
|
||||
function get_maxlength() {
|
||||
class StatusNetOAuth extends TwitterOAuth
|
||||
{
|
||||
function get_maxlength()
|
||||
{
|
||||
$config = $this->get($this->host . 'statusnet/config.json');
|
||||
return $config->site->textlimit;
|
||||
}
|
||||
function accessTokenURL() { return $this->host.'oauth/access_token'; }
|
||||
function authenticateURL() { return $this->host.'oauth/authenticate'; }
|
||||
function authorizeURL() { return $this->host.'oauth/authorize'; }
|
||||
function requestTokenURL() { return $this->host.'oauth/request_token'; }
|
||||
function __construct($apipath, $consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
|
||||
|
||||
function accessTokenURL()
|
||||
{
|
||||
return $this->host . 'oauth/access_token';
|
||||
}
|
||||
|
||||
function authenticateURL()
|
||||
{
|
||||
return $this->host . 'oauth/authenticate';
|
||||
}
|
||||
|
||||
function authorizeURL()
|
||||
{
|
||||
return $this->host . 'oauth/authorize';
|
||||
}
|
||||
|
||||
function requestTokenURL()
|
||||
{
|
||||
return $this->host . 'oauth/request_token';
|
||||
}
|
||||
|
||||
function __construct($apipath, $consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL)
|
||||
{
|
||||
parent::__construct($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
|
||||
$this->host = $apipath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make an HTTP request
|
||||
*
|
||||
|
|
@ -71,7 +92,8 @@ class StatusNetOAuth extends TwitterOAuth {
|
|||
*
|
||||
* Copied here from the twitteroauth library and complemented by applying the proxy settings of friendica
|
||||
*/
|
||||
function http($url, $method, $postfields = NULL) {
|
||||
function http($url, $method, $postfields = NULL)
|
||||
{
|
||||
$this->http_info = array();
|
||||
$ci = curl_init();
|
||||
/* Curl settings */
|
||||
|
|
@ -80,9 +102,10 @@ class StatusNetOAuth extends TwitterOAuth {
|
|||
curl_setopt($ci, CURLOPT_HTTPPROXYTUNNEL, 1);
|
||||
curl_setopt($ci, CURLOPT_PROXY, $prx);
|
||||
$prxusr = Config::get('system', 'proxyuser');
|
||||
if(strlen($prxusr))
|
||||
if (strlen($prxusr)) {
|
||||
curl_setopt($ci, CURLOPT_PROXYUSERPWD, $prxusr);
|
||||
}
|
||||
}
|
||||
curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
|
||||
curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
|
||||
curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
|
||||
|
|
@ -116,7 +139,8 @@ class StatusNetOAuth extends TwitterOAuth {
|
|||
}
|
||||
}
|
||||
|
||||
function statusnet_install() {
|
||||
function statusnet_install()
|
||||
{
|
||||
// we need some hooks, for the configuration and for sending tweets
|
||||
register_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings');
|
||||
register_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
|
||||
|
|
@ -129,8 +153,8 @@ function statusnet_install() {
|
|||
logger("installed GNU Social");
|
||||
}
|
||||
|
||||
|
||||
function statusnet_uninstall() {
|
||||
function statusnet_uninstall()
|
||||
{
|
||||
unregister_hook('connector_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings');
|
||||
unregister_hook('connector_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
|
||||
unregister_hook('notifier_normal', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
|
||||
|
|
@ -144,16 +168,18 @@ function statusnet_uninstall() {
|
|||
unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
|
||||
unregister_hook('plugin_settings', 'addon/statusnet/statusnet.php', 'statusnet_settings');
|
||||
unregister_hook('plugin_settings_post', 'addon/statusnet/statusnet.php', 'statusnet_settings_post');
|
||||
|
||||
}
|
||||
|
||||
function statusnet_check_item_notification($a, &$notification_data) {
|
||||
function statusnet_check_item_notification(App $a, &$notification_data)
|
||||
{
|
||||
$notification_data["profiles"][] = PConfig::get($notification_data["uid"], 'statusnet', 'own_url');
|
||||
}
|
||||
|
||||
function statusnet_jot_nets(&$a,&$b) {
|
||||
if(! local_user())
|
||||
function statusnet_jot_nets(App $a, &$b)
|
||||
{
|
||||
if (!local_user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$statusnet_post = PConfig::get(local_user(), 'statusnet', 'post');
|
||||
if (intval($statusnet_post) == 1) {
|
||||
|
|
@ -164,12 +190,15 @@ function statusnet_jot_nets(&$a,&$b) {
|
|||
}
|
||||
}
|
||||
|
||||
function statusnet_settings_post ($a,$post) {
|
||||
if(! local_user())
|
||||
function statusnet_settings_post(App $a, $post)
|
||||
{
|
||||
if (!local_user()) {
|
||||
return;
|
||||
}
|
||||
// don't check GNU Social settings if GNU Social submit button is not clicked
|
||||
if (!x($_POST,'statusnet-submit'))
|
||||
if (!x($_POST, 'statusnet-submit')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isset($_POST['statusnet-disconnect'])) {
|
||||
/* * *
|
||||
|
|
@ -269,11 +298,17 @@ function statusnet_settings_post ($a,$post) {
|
|||
PConfig::delete(local_user(), 'statusnet', 'lastid');
|
||||
|
||||
info(t('GNU Social settings updated.') . EOL);
|
||||
}}}}
|
||||
}
|
||||
function statusnet_settings(&$a,&$s) {
|
||||
if(! local_user())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function statusnet_settings(App $a, &$s)
|
||||
{
|
||||
if (!local_user()) {
|
||||
return;
|
||||
}
|
||||
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/statusnet/statusnet.css' . '" media="all" />' . "\r\n";
|
||||
/* * *
|
||||
* 1) Check that we have a base api url and a consumer key & secret
|
||||
|
|
@ -431,8 +466,8 @@ function statusnet_settings(&$a,&$s) {
|
|||
$s .= '</div><div class="clear"></div>';
|
||||
}
|
||||
|
||||
|
||||
function statusnet_post_local(&$a, &$b) {
|
||||
function statusnet_post_local(App $a, &$b)
|
||||
{
|
||||
if ($b['edit']) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -460,7 +495,8 @@ function statusnet_post_local(&$a, &$b) {
|
|||
$b['postopts'] .= 'statusnet';
|
||||
}
|
||||
|
||||
function statusnet_action($a, $uid, $pid, $action) {
|
||||
function statusnet_action(App $a, $uid, $pid, $action)
|
||||
{
|
||||
$api = PConfig::get($uid, 'statusnet', 'baseapi');
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
|
|
@ -485,12 +521,11 @@ function statusnet_action($a, $uid, $pid, $action) {
|
|||
logger("statusnet_action '" . $action . "' send, result: " . print_r($result, true), LOGGER_DEBUG);
|
||||
}
|
||||
|
||||
function statusnet_post_hook(&$a,&$b) {
|
||||
|
||||
function statusnet_post_hook(App $a, &$b)
|
||||
{
|
||||
/**
|
||||
* Post to GNU Social
|
||||
*/
|
||||
|
||||
if (!PConfig::get($b["uid"], 'statusnet', 'import')) {
|
||||
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
|
||||
return;
|
||||
|
|
@ -504,17 +539,14 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
|
||||
// Looking if its a reply to a GNU Social post
|
||||
$hostlength = strlen($hostname) + 2;
|
||||
if ((substr($b["parent-uri"], 0, $hostlength) != $hostname."::") && (substr($b["extid"], 0, $hostlength) != $hostname."::")
|
||||
&& (substr($b["thr-parent"], 0, $hostlength) != $hostname."::")) {
|
||||
if ((substr($b["parent-uri"], 0, $hostlength) != $hostname . "::") && (substr($b["extid"], 0, $hostlength) != $hostname . "::") && (substr($b["thr-parent"], 0, $hostlength) != $hostname . "::")) {
|
||||
logger("statusnet_post_hook: no GNU Social post " . $b["parent"]);
|
||||
return;
|
||||
}
|
||||
|
||||
$r = q("SELECT `item`.`author-link`, `item`.`uri`, `contact`.`nick` AS contact_nick
|
||||
FROM `item` INNER JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
|
||||
WHERE `item`.`uri` = '%s' AND `item`.`uid` = %d LIMIT 1",
|
||||
dbesc($b["thr-parent"]),
|
||||
intval($b["uid"]));
|
||||
WHERE `item`.`uri` = '%s' AND `item`.`uid` = %d LIMIT 1", dbesc($b["thr-parent"]), intval($b["uid"]));
|
||||
|
||||
if (!count($r)) {
|
||||
logger("statusnet_post_hook: no parent found " . $b["thr-parent"]);
|
||||
|
|
@ -551,8 +583,9 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
}
|
||||
}
|
||||
|
||||
if (($b['verb'] == ACTIVITY_POST) && $b['deleted'])
|
||||
if (($b['verb'] == ACTIVITY_POST) && $b['deleted']) {
|
||||
statusnet_action($a, $b["uid"], substr($orig_post["uri"], $hostlength), "delete");
|
||||
}
|
||||
|
||||
if ($b['verb'] == ACTIVITY_LIKE) {
|
||||
logger("statusnet_post_hook: parameter 2 " . substr($b["thr-parent"], $hostlength), LOGGER_DEBUG);
|
||||
|
|
@ -563,15 +596,18 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
return;
|
||||
}
|
||||
|
||||
if($b['deleted'] || ($b['created'] !== $b['edited']))
|
||||
if ($b['deleted'] || ($b['created'] !== $b['edited'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
// if posts comes from GNU Social don't send it back
|
||||
if($b['extid'] == NETWORK_STATUSNET)
|
||||
if ($b['extid'] == NETWORK_STATUSNET) {
|
||||
return;
|
||||
}
|
||||
|
||||
if($b['app'] == "StatusNet")
|
||||
if ($b['app'] == "StatusNet") {
|
||||
return;
|
||||
}
|
||||
|
||||
logger('GNU Socialpost invoked');
|
||||
|
||||
|
|
@ -584,20 +620,20 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
$osecret = PConfig::get($b['uid'], 'statusnet', 'oauthsecret');
|
||||
|
||||
if ($ckey && $csecret && $otoken && $osecret) {
|
||||
|
||||
// If it's a repeated message from GNU Social then do a native retweet and exit
|
||||
if (statusnet_is_retweet($a, $b['uid'], $b['body']))
|
||||
if (statusnet_is_retweet($a, $b['uid'], $b['body'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
require_once('include/bbcode.php');
|
||||
require_once 'include/bbcode.php';
|
||||
$dent = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
|
||||
$max_char = $dent->get_maxlength(); // max. length for a dent
|
||||
|
||||
PConfig::set($b['uid'], 'statusnet', 'max_char', $max_char);
|
||||
|
||||
$tempfile = "";
|
||||
require_once("include/plaintext.php");
|
||||
require_once("include/network.php");
|
||||
require_once "include/plaintext.php";
|
||||
require_once "include/network.php";
|
||||
$msgarr = plaintext($a, $b, $max_char, true, 7);
|
||||
$msg = $msgarr["text"];
|
||||
|
||||
|
|
@ -608,31 +644,33 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
|
||||
if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
|
||||
if ((strlen($msgarr["url"]) > 20) &&
|
||||
((strlen($msg." \n".$msgarr["url"]) > $max_char)))
|
||||
((strlen($msg . " \n" . $msgarr["url"]) > $max_char))) {
|
||||
$msg .= " \n" . short_link($msgarr["url"]);
|
||||
else
|
||||
} else {
|
||||
$msg .= " \n" . $msgarr["url"];
|
||||
} elseif (isset($msgarr["image"]) && ($msgarr["type"] != "video"))
|
||||
}
|
||||
} elseif (isset($msgarr["image"]) && ($msgarr["type"] != "video")) {
|
||||
$image = $msgarr["image"];
|
||||
}
|
||||
|
||||
if ($image != "") {
|
||||
$img_str = fetch_url($image);
|
||||
$tempfile = tempnam(get_temppath(), "cache");
|
||||
file_put_contents($tempfile, $img_str);
|
||||
$postdata = array("status" => $msg, "media[]" => $tempfile);
|
||||
} else
|
||||
} else {
|
||||
$postdata = array("status" => $msg);
|
||||
}
|
||||
|
||||
// and now dent it :-)
|
||||
if (strlen($msg)) {
|
||||
|
||||
if ($iscomment) {
|
||||
$postdata["in_reply_to_status_id"] = substr($orig_post["uri"], $hostlength);
|
||||
logger('statusnet_post send reply ' . print_r($postdata, true), LOGGER_DEBUG);
|
||||
}
|
||||
|
||||
// New code that is able to post pictures
|
||||
require_once("addon/statusnet/codebird.php");
|
||||
require_once "addon/statusnet/codebird.php";
|
||||
$cb = \CodebirdSN\CodebirdSN::getInstance();
|
||||
$cb->setAPIEndpoint($api);
|
||||
$cb->setConsumerKey($ckey, $csecret);
|
||||
|
|
@ -642,8 +680,9 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
logger('statusnet_post send, result: ' . print_r($result, true) .
|
||||
"\nmessage: " . $msg, LOGGER_DEBUG . "\nOriginal post: " . print_r($b, true) . "\nPost Data: " . print_r($postdata, true));
|
||||
|
||||
if ($result->source)
|
||||
if ($result->source) {
|
||||
PConfig::set($b["uid"], "statusnet", "application_name", strip_tags($result->source));
|
||||
}
|
||||
|
||||
if ($result->error) {
|
||||
logger('Send to GNU Social failed: "' . $result->error . '"');
|
||||
|
|
@ -656,20 +695,22 @@ function statusnet_post_hook(&$a,&$b) {
|
|||
);
|
||||
}
|
||||
}
|
||||
if ($tempfile != "")
|
||||
if ($tempfile != "") {
|
||||
unlink($tempfile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function statusnet_plugin_admin_post(&$a){
|
||||
|
||||
function statusnet_plugin_admin_post(App $a)
|
||||
{
|
||||
$sites = array();
|
||||
|
||||
foreach ($_POST['sitename'] as $id => $sitename) {
|
||||
$sitename = trim($sitename);
|
||||
$apiurl = trim($_POST['apiurl'][$id]);
|
||||
if (! (substr($apiurl, -1)=='/'))
|
||||
if (!(substr($apiurl, -1) == '/')) {
|
||||
$apiurl = $apiurl . '/';
|
||||
}
|
||||
$secret = trim($_POST['secret'][$id]);
|
||||
$key = trim($_POST['key'][$id]);
|
||||
//$applicationname = ((x($_POST, 'applicationname')) ? notags(trim($_POST['applicationname'][$id])):'');
|
||||
|
|
@ -690,11 +731,10 @@ function statusnet_plugin_admin_post(&$a){
|
|||
}
|
||||
|
||||
$sites = Config::set('statusnet', 'sites', $sites);
|
||||
|
||||
}
|
||||
|
||||
function statusnet_plugin_admin(&$a, &$o){
|
||||
|
||||
function statusnet_plugin_admin(App $a, &$o)
|
||||
{
|
||||
$sites = Config::get('statusnet', 'sites');
|
||||
$sitesform = array();
|
||||
if (is_array($sites)) {
|
||||
|
|
@ -726,16 +766,19 @@ function statusnet_plugin_admin(&$a, &$o){
|
|||
));
|
||||
}
|
||||
|
||||
function statusnet_prepare_body(&$a,&$b) {
|
||||
if ($b["item"]["network"] != NETWORK_STATUSNET)
|
||||
function statusnet_prepare_body(App $a, &$b)
|
||||
{
|
||||
if ($b["item"]["network"] != NETWORK_STATUSNET) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($b["preview"]) {
|
||||
$max_char = PConfig::get(local_user(), 'statusnet', 'max_char');
|
||||
if (intval($max_char) == 0)
|
||||
if (intval($max_char) == 0) {
|
||||
$max_char = 140;
|
||||
}
|
||||
|
||||
require_once("include/plaintext.php");
|
||||
require_once "include/plaintext.php";
|
||||
$item = $b["item"];
|
||||
$item["plink"] = $a->get_baseurl() . "/display/" . $a->user["nickname"] . "/" . $item["parent"];
|
||||
|
||||
|
|
@ -755,30 +798,34 @@ function statusnet_prepare_body(&$a,&$b) {
|
|||
$nickname = "@[url=" . $orig_post["author-link"] . "]" . $nick . "[/url]";
|
||||
$nicknameplain = "@" . $nick;
|
||||
|
||||
if ((strpos($item["body"], $nickname) === false) && (strpos($item["body"], $nicknameplain) === false))
|
||||
if ((strpos($item["body"], $nickname) === false) && (strpos($item["body"], $nicknameplain) === false)) {
|
||||
$item["body"] = $nickname . " " . $item["body"];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$msgarr = plaintext($a, $item, $max_char, true, 7);
|
||||
$msg = $msgarr["text"];
|
||||
|
||||
if (isset($msgarr["url"]) && ($msgarr["type"] != "photo"))
|
||||
if (isset($msgarr["url"]) && ($msgarr["type"] != "photo")) {
|
||||
$msg .= " " . $msgarr["url"];
|
||||
}
|
||||
|
||||
if (isset($msgarr["image"]))
|
||||
if (isset($msgarr["image"])) {
|
||||
$msg .= " " . $msgarr["image"];
|
||||
}
|
||||
|
||||
$b['html'] = nl2br(htmlspecialchars($msg));
|
||||
}
|
||||
}
|
||||
|
||||
function statusnet_cron($a,$b) {
|
||||
function statusnet_cron(App $a, $b)
|
||||
{
|
||||
$last = Config::get('statusnet', 'last_poll');
|
||||
|
||||
$poll_interval = intval(Config::get('statusnet', 'poll_interval'));
|
||||
if(! $poll_interval)
|
||||
if (!$poll_interval) {
|
||||
$poll_interval = STATUSNET_DEFAULT_POLL_INTERVAL;
|
||||
}
|
||||
|
||||
if ($last) {
|
||||
$next = $last + ($poll_interval * 60);
|
||||
|
|
@ -798,8 +845,9 @@ function statusnet_cron($a,$b) {
|
|||
}
|
||||
|
||||
$abandon_days = intval(Config::get('system', 'account_abandon_days'));
|
||||
if ($abandon_days < 1)
|
||||
if ($abandon_days < 1) {
|
||||
$abandon_days = 0;
|
||||
}
|
||||
|
||||
$abandon_limit = date("Y-m-d H:i:s", time() - $abandon_days * 86400);
|
||||
|
||||
|
|
@ -824,7 +872,8 @@ function statusnet_cron($a,$b) {
|
|||
Config::set('statusnet', 'last_poll', time());
|
||||
}
|
||||
|
||||
function statusnet_fetchtimeline($a, $uid) {
|
||||
function statusnet_fetchtimeline(App $a, $uid)
|
||||
{
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
$api = PConfig::get($uid, 'statusnet', 'baseapi');
|
||||
|
|
@ -832,17 +881,19 @@ function statusnet_fetchtimeline($a, $uid) {
|
|||
$osecret = PConfig::get($uid, 'statusnet', 'oauthsecret');
|
||||
$lastid = PConfig::get($uid, 'statusnet', 'lastid');
|
||||
|
||||
require_once('mod/item.php');
|
||||
require_once('include/items.php');
|
||||
require_once 'mod/item.php';
|
||||
require_once 'include/items.php';
|
||||
|
||||
// get the application name for the SN app
|
||||
// 1st try personal config, then system config and fallback to the
|
||||
// hostname of the node if neither one is set.
|
||||
$application_name = PConfig::get($uid, 'statusnet', 'application_name');
|
||||
if ($application_name == "")
|
||||
if ($application_name == "") {
|
||||
$application_name = Config::get('statusnet', 'application_name');
|
||||
if ($application_name == "")
|
||||
}
|
||||
if ($application_name == "") {
|
||||
$application_name = $a->get_hostname();
|
||||
}
|
||||
|
||||
$connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
|
||||
|
||||
|
|
@ -850,13 +901,15 @@ function statusnet_fetchtimeline($a, $uid) {
|
|||
|
||||
$first_time = ($lastid == "");
|
||||
|
||||
if ($lastid <> "")
|
||||
if ($lastid <> "") {
|
||||
$parameters["since_id"] = $lastid;
|
||||
}
|
||||
|
||||
$items = $connection->get('statuses/user_timeline', $parameters);
|
||||
|
||||
if (!is_array($items))
|
||||
if (!is_array($items)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$posts = array_reverse($items);
|
||||
|
||||
|
|
@ -865,17 +918,21 @@ function statusnet_fetchtimeline($a, $uid) {
|
|||
if ($post->id > $lastid)
|
||||
$lastid = $post->id;
|
||||
|
||||
if ($first_time)
|
||||
if ($first_time) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($post->source == "activity")
|
||||
if ($post->source == "activity") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_object($post->retweeted_status))
|
||||
if (is_object($post->retweeted_status)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($post->in_reply_to_status_id != "")
|
||||
if ($post->in_reply_to_status_id != "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!stristr($post->source, $application_name)) {
|
||||
$_SESSION["authenticated"] = true;
|
||||
|
|
@ -898,17 +955,21 @@ function statusnet_fetchtimeline($a, $uid) {
|
|||
$_REQUEST["title"] = "";
|
||||
|
||||
$_REQUEST["body"] = add_page_info_to_body($post->text, true);
|
||||
if (is_string($post->place->name))
|
||||
if (is_string($post->place->name)) {
|
||||
$_REQUEST["location"] = $post->place->name;
|
||||
}
|
||||
|
||||
if (is_string($post->place->full_name))
|
||||
if (is_string($post->place->full_name)) {
|
||||
$_REQUEST["location"] = $post->place->full_name;
|
||||
}
|
||||
|
||||
if (is_array($post->geo->coordinates))
|
||||
if (is_array($post->geo->coordinates)) {
|
||||
$_REQUEST["coord"] = $post->geo->coordinates[0] . " " . $post->geo->coordinates[1];
|
||||
}
|
||||
|
||||
if (is_array($post->coordinates->coordinates))
|
||||
if (is_array($post->coordinates->coordinates)) {
|
||||
$_REQUEST["coord"] = $post->coordinates->coordinates[1] . " " . $post->coordinates->coordinates[0];
|
||||
}
|
||||
|
||||
//print_r($_REQUEST);
|
||||
if ($_REQUEST["body"] != "") {
|
||||
|
|
@ -922,7 +983,8 @@ function statusnet_fetchtimeline($a, $uid) {
|
|||
PConfig::set($uid, 'statusnet', 'lastid', $lastid);
|
||||
}
|
||||
|
||||
function statusnet_address($contact) {
|
||||
function statusnet_address($contact)
|
||||
{
|
||||
$hostname = normalise_link($contact->statusnet_profile_url);
|
||||
$nickname = $contact->screen_name;
|
||||
|
||||
|
|
@ -930,28 +992,30 @@ function statusnet_address($contact) {
|
|||
|
||||
$address = $contact->screen_name . "@" . $hostname;
|
||||
|
||||
return($address);
|
||||
return $address;
|
||||
}
|
||||
|
||||
function statusnet_fetch_contact($uid, $contact, $create_user) {
|
||||
if ($contact->statusnet_profile_url == "")
|
||||
return(-1);
|
||||
function statusnet_fetch_contact($uid, $contact, $create_user)
|
||||
{
|
||||
if ($contact->statusnet_profile_url == "") {
|
||||
return -1;
|
||||
}
|
||||
|
||||
GlobalContact::update(array("url" => $contact->statusnet_profile_url,
|
||||
GContact::update(array("url" => $contact->statusnet_profile_url,
|
||||
"network" => NETWORK_STATUSNET, "photo" => $contact->profile_image_url,
|
||||
"name" => $contact->name, "nick" => $contact->screen_name,
|
||||
"location" => $contact->location, "about" => $contact->description,
|
||||
"addr" => statusnet_address($contact), "generation" => 3));
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' AND `network` = '%s'LIMIT 1",
|
||||
intval($uid), dbesc(normalise_link($contact->statusnet_profile_url)), dbesc(NETWORK_STATUSNET));
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' AND `network` = '%s'LIMIT 1", intval($uid), dbesc(normalise_link($contact->statusnet_profile_url)), dbesc(NETWORK_STATUSNET));
|
||||
|
||||
if(!count($r) && !$create_user)
|
||||
return(0);
|
||||
if (!count($r) && !$create_user) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (count($r) && ($r[0]["readonly"] || $r[0]["blocked"])) {
|
||||
logger("statusnet_fetch_contact: Contact '" . $r[0]["nick"] . "' is blocked or readonly.", LOGGER_DEBUG);
|
||||
return(-1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!count($r)) {
|
||||
|
|
@ -984,8 +1048,9 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
|
|||
intval($uid),
|
||||
dbesc(NETWORK_STATUSNET));
|
||||
|
||||
if(! count($r))
|
||||
return(false);
|
||||
if (!count($r)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$contact_id = $r[0]['id'];
|
||||
|
||||
|
|
@ -994,7 +1059,7 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
|
|||
);
|
||||
|
||||
if ($g && intval($g[0]['def_gid'])) {
|
||||
require_once('include/group.php');
|
||||
require_once 'include/group.php';
|
||||
group_add_member($uid, '', $contact_id, $g[0]['def_gid']);
|
||||
}
|
||||
|
||||
|
|
@ -1013,14 +1078,11 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
|
|||
);
|
||||
} else {
|
||||
// update profile photos once every two weeks as we have no notification of when they change.
|
||||
|
||||
//$update_photo = (($r[0]['avatar-date'] < datetime_convert('','','now -2 days')) ? true : false);
|
||||
$update_photo = ($r[0]['avatar-date'] < datetime_convert('', '', 'now -12 hours'));
|
||||
|
||||
// check that we have all the photos, this has been known to fail on occasion
|
||||
|
||||
if ((!$r[0]['photo']) || (!$r[0]['thumb']) || (!$r[0]['micro']) || ($update_photo)) {
|
||||
|
||||
logger("statusnet_fetch_contact: Updating contact " . $contact->screen_name, LOGGER_DEBUG);
|
||||
|
||||
$photos = Photo::importProfilePhoto($contact->profile_image_url, $uid, $r[0]['id']);
|
||||
|
|
@ -1057,17 +1119,18 @@ function statusnet_fetch_contact($uid, $contact, $create_user) {
|
|||
}
|
||||
}
|
||||
|
||||
return($r[0]["id"]);
|
||||
return $r[0]["id"];
|
||||
}
|
||||
|
||||
function statusnet_fetchuser($a, $uid, $screen_name = "", $user_id = "") {
|
||||
function statusnet_fetchuser(App $a, $uid, $screen_name = "", $user_id = "")
|
||||
{
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
$api = PConfig::get($uid, 'statusnet', 'baseapi');
|
||||
$otoken = PConfig::get($uid, 'statusnet', 'oauthtoken');
|
||||
$osecret = PConfig::get($uid, 'statusnet', 'oauthsecret');
|
||||
|
||||
require_once("addon/statusnet/codebird.php");
|
||||
require_once "addon/statusnet/codebird.php";
|
||||
|
||||
$cb = \Codebird\Codebird::getInstance();
|
||||
$cb->setConsumerKey($ckey, $csecret);
|
||||
|
|
@ -1078,31 +1141,35 @@ function statusnet_fetchuser($a, $uid, $screen_name = "", $user_id = "") {
|
|||
|
||||
if (count($r)) {
|
||||
$self = $r[0];
|
||||
} else
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
$parameters = array();
|
||||
|
||||
if ($screen_name != "")
|
||||
if ($screen_name != "") {
|
||||
$parameters["screen_name"] = $screen_name;
|
||||
}
|
||||
|
||||
if ($user_id != "")
|
||||
if ($user_id != "") {
|
||||
$parameters["user_id"] = $user_id;
|
||||
}
|
||||
|
||||
// Fetching user data
|
||||
$user = $cb->users_show($parameters);
|
||||
|
||||
if (!is_object($user))
|
||||
if (!is_object($user)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$contact_id = statusnet_fetch_contact($uid, $user, true);
|
||||
|
||||
return $contact_id;
|
||||
}
|
||||
|
||||
function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existing_contact) {
|
||||
|
||||
require_once("include/html2bbcode.php");
|
||||
function statusnet_createpost(App $a, $uid, $post, $self, $create_user, $only_existing_contact)
|
||||
{
|
||||
require_once "include/html2bbcode.php";
|
||||
|
||||
logger("statusnet_createpost: start", LOGGER_DEBUG);
|
||||
|
||||
|
|
@ -1118,8 +1185,9 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
|||
if (is_object($post->retweeted_status)) {
|
||||
$content = $post->retweeted_status;
|
||||
statusnet_fetch_contact($uid, $content->user, false);
|
||||
} else
|
||||
} else {
|
||||
$content = $post;
|
||||
}
|
||||
|
||||
$postarray['uri'] = $hostname . "::" . $content->id;
|
||||
|
||||
|
|
@ -1128,8 +1196,9 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
|||
intval($uid)
|
||||
);
|
||||
|
||||
if (count($r))
|
||||
return(array());
|
||||
if (count($r)) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$contactid = 0;
|
||||
|
||||
|
|
@ -1176,8 +1245,9 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
|||
$postarray['owner-name'] = $r[0]["name"];
|
||||
$postarray['owner-link'] = $r[0]["url"];
|
||||
$postarray['owner-avatar'] = $r[0]["photo"];
|
||||
} else
|
||||
return(array());
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
// Don't create accounts of people who just comment something
|
||||
$create_user = false;
|
||||
|
|
@ -1192,10 +1262,11 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
|||
$postarray['owner-link'] = $post->user->statusnet_profile_url;
|
||||
$postarray['owner-avatar'] = $post->user->profile_image_url;
|
||||
}
|
||||
if(($contactid == 0) && !$only_existing_contact)
|
||||
if (($contactid == 0) && !$only_existing_contact) {
|
||||
$contactid = $self['id'];
|
||||
elseif ($contactid <= 0)
|
||||
return(array());
|
||||
} elseif ($contactid <= 0) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$postarray['contact-id'] = $contactid;
|
||||
|
||||
|
|
@ -1225,62 +1296,56 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
|||
$postarray['created'] = datetime_convert('UTC', 'UTC', $content->created_at);
|
||||
$postarray['edited'] = datetime_convert('UTC', 'UTC', $content->created_at);
|
||||
|
||||
if (is_string($content->place->name))
|
||||
if (is_string($content->place->name)) {
|
||||
$postarray["location"] = $content->place->name;
|
||||
|
||||
if (is_string($content->place->full_name))
|
||||
$postarray["location"] = $content->place->full_name;
|
||||
|
||||
if (is_array($content->geo->coordinates))
|
||||
$postarray["coord"] = $content->geo->coordinates[0]." ".$content->geo->coordinates[1];
|
||||
|
||||
if (is_array($content->coordinates->coordinates))
|
||||
$postarray["coord"] = $content->coordinates->coordinates[1]." ".$content->coordinates->coordinates[0];
|
||||
|
||||
/*if (is_object($post->retweeted_status)) {
|
||||
$postarray['body'] = html2bbcode($post->retweeted_status->statusnet_html);
|
||||
|
||||
$converted = statusnet_convertmsg($a, $postarray['body'], false);
|
||||
$postarray['body'] = $converted["body"];
|
||||
$postarray['tag'] = $converted["tags"];
|
||||
|
||||
statusnet_fetch_contact($uid, $post->retweeted_status->user, false);
|
||||
|
||||
// Let retweets look like wall-to-wall posts
|
||||
$postarray['author-name'] = $post->retweeted_status->user->name;
|
||||
$postarray['author-link'] = $post->retweeted_status->user->statusnet_profile_url;
|
||||
$postarray['author-avatar'] = $post->retweeted_status->user->profile_image_url;
|
||||
}*/
|
||||
logger("statusnet_createpost: end", LOGGER_DEBUG);
|
||||
return($postarray);
|
||||
}
|
||||
|
||||
function statusnet_checknotification($a, $uid, $own_url, $top_item, $postarray) {
|
||||
if (is_string($content->place->full_name)) {
|
||||
$postarray["location"] = $content->place->full_name;
|
||||
}
|
||||
|
||||
if (is_array($content->geo->coordinates)) {
|
||||
$postarray["coord"] = $content->geo->coordinates[0] . " " . $content->geo->coordinates[1];
|
||||
}
|
||||
|
||||
if (is_array($content->coordinates->coordinates)) {
|
||||
$postarray["coord"] = $content->coordinates->coordinates[1] . " " . $content->coordinates->coordinates[0];
|
||||
}
|
||||
|
||||
logger("statusnet_createpost: end", LOGGER_DEBUG);
|
||||
|
||||
return $postarray;
|
||||
}
|
||||
|
||||
function statusnet_checknotification(App $a, $uid, $own_url, $top_item, $postarray)
|
||||
{
|
||||
// This function necer worked and need cleanup
|
||||
|
||||
$user = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1",
|
||||
intval($uid)
|
||||
);
|
||||
|
||||
if(!count($user))
|
||||
if (!count($user)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Is it me?
|
||||
if (link_compare($user[0]["url"], $postarray['author-link']))
|
||||
if (link_compare($user[0]["url"], $postarray['author-link'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$own_user = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
|
||||
intval($uid),
|
||||
dbesc($own_url)
|
||||
);
|
||||
|
||||
if(!count($own_user))
|
||||
if (!count($own_user)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Is it me from GNU Social?
|
||||
if (link_compare($own_user[0]["url"], $postarray['author-link']))
|
||||
if (link_compare($own_user[0]["url"], $postarray['author-link'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 AND `deleted` = 0",
|
||||
dbesc($postarray['parent-uri']),
|
||||
|
|
@ -1288,14 +1353,13 @@ function statusnet_checknotification($a, $uid, $own_url, $top_item, $postarray)
|
|||
);
|
||||
|
||||
if (count($myconv)) {
|
||||
|
||||
foreach ($myconv as $conv) {
|
||||
// now if we find a match, it means we're in this conversation
|
||||
|
||||
if(!link_compare($conv['author-link'],$user[0]["url"]) && !link_compare($conv['author-link'],$own_user[0]["url"]))
|
||||
if (!link_compare($conv['author-link'], $user[0]["url"]) && !link_compare($conv['author-link'], $own_user[0]["url"])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
require_once('include/enotify.php');
|
||||
require_once 'include/enotify.php';
|
||||
|
||||
$conv_parent = $conv['parent'];
|
||||
|
||||
|
|
@ -1322,7 +1386,8 @@ function statusnet_checknotification($a, $uid, $own_url, $top_item, $postarray)
|
|||
}
|
||||
}
|
||||
|
||||
function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
||||
function statusnet_fetchhometimeline(App $a, $uid, $mode = 1)
|
||||
{
|
||||
$conversations = array();
|
||||
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
|
|
@ -1337,8 +1402,8 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
|
||||
logger("statusnet_fetchhometimeline: Fetching for user " . $uid, LOGGER_DEBUG);
|
||||
|
||||
require_once('library/twitteroauth.php');
|
||||
require_once('include/items.php');
|
||||
require_once 'library/twitteroauth.php';
|
||||
require_once 'include/items.php';
|
||||
|
||||
$connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
|
||||
|
||||
|
|
@ -1382,20 +1447,22 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
|
||||
$first_time = ($lastid == "");
|
||||
|
||||
if ($lastid <> "")
|
||||
if ($lastid != "") {
|
||||
$parameters["since_id"] = $lastid;
|
||||
}
|
||||
|
||||
$items = $connection->get('statuses/home_timeline', $parameters);
|
||||
|
||||
if (!is_array($items)) {
|
||||
if (is_object($items) && isset($items->error))
|
||||
if (is_object($items) && isset($items->error)) {
|
||||
$errormsg = $items->error;
|
||||
elseif (is_object($items))
|
||||
} elseif (is_object($items)) {
|
||||
$errormsg = print_r($items, true);
|
||||
elseif (is_string($items) || is_float($items) || is_int($items))
|
||||
} elseif (is_string($items) || is_float($items) || is_int($items)) {
|
||||
$errormsg = $items;
|
||||
else
|
||||
} else {
|
||||
$errormsg = "Unknown error";
|
||||
}
|
||||
|
||||
logger("statusnet_fetchhometimeline: Error fetching home timeline: " . $errormsg, LOGGER_DEBUG);
|
||||
return;
|
||||
|
|
@ -1408,11 +1475,13 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
if (count($posts)) {
|
||||
foreach ($posts as $post) {
|
||||
|
||||
if ($post->id > $lastid)
|
||||
if ($post->id > $lastid) {
|
||||
$lastid = $post->id;
|
||||
}
|
||||
|
||||
if ($first_time)
|
||||
if ($first_time) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (isset($post->statusnet_conversation_id)) {
|
||||
if (!isset($conversations[$post->statusnet_conversation_id])) {
|
||||
|
|
@ -1422,18 +1491,19 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
} else {
|
||||
$postarray = statusnet_createpost($a, $uid, $post, $self, $create_user, true);
|
||||
|
||||
if (trim($postarray['body']) == "")
|
||||
if (trim($postarray['body']) == "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
$item = item_store($postarray);
|
||||
$postarray["id"] = $item;
|
||||
|
||||
logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted home timeline item ' . $item);
|
||||
|
||||
if ($item && !function_exists("check_item_notification"))
|
||||
if ($item && !function_exists("check_item_notification")) {
|
||||
statusnet_checknotification($a, $uid, $nick, $item, $postarray);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
PConfig::set($uid, 'statusnet', 'lasthometimelineid', $lastid);
|
||||
|
|
@ -1443,8 +1513,9 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
$lastid = PConfig::get($uid, 'statusnet', 'lastmentionid');
|
||||
$first_time = ($lastid == "");
|
||||
|
||||
if ($lastid <> "")
|
||||
if ($lastid != "") {
|
||||
$parameters["since_id"] = $lastid;
|
||||
}
|
||||
|
||||
$items = $connection->get('statuses/mentions_timeline', $parameters);
|
||||
|
||||
|
|
@ -1459,11 +1530,13 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
|
||||
if (count($posts)) {
|
||||
foreach ($posts as $post) {
|
||||
if ($post->id > $lastid)
|
||||
if ($post->id > $lastid) {
|
||||
$lastid = $post->id;
|
||||
}
|
||||
|
||||
if ($first_time)
|
||||
if ($first_time) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$postarray = statusnet_createpost($a, $uid, $post, $self, false, false);
|
||||
|
||||
|
|
@ -1473,15 +1546,16 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
$conversations[$post->statusnet_conversation_id] = $post->statusnet_conversation_id;
|
||||
}
|
||||
} else {
|
||||
if (trim($postarray['body']) != "") {
|
||||
if (trim($postarray['body']) == "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
$item = item_store($postarray);
|
||||
$postarray["id"] = $item;
|
||||
|
||||
logger('statusnet_fetchhometimeline: User ' . $self["nick"] . ' posted mention timeline item ' . $item);
|
||||
|
||||
if ($item && function_exists("check_item_notification"))
|
||||
if ($item && function_exists("check_item_notification")) {
|
||||
check_item_notification($item, $uid, NOTIFY_TAGSELF);
|
||||
}
|
||||
}
|
||||
|
|
@ -1496,7 +1570,7 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
}
|
||||
|
||||
if (($item != 0) && !function_exists("check_item_notification")) {
|
||||
require_once('include/enotify.php');
|
||||
require_once 'include/enotify.php';
|
||||
notification(array(
|
||||
'type' => NOTIFY_TAGSELF,
|
||||
'notify_flags' => $u[0]['notify-flags'],
|
||||
|
|
@ -1520,7 +1594,8 @@ function statusnet_fetchhometimeline($a, $uid, $mode = 1) {
|
|||
PConfig::set($uid, 'statusnet', 'lastmentionid', $lastid);
|
||||
}
|
||||
|
||||
function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $conversation) {
|
||||
function statusnet_complete_conversation(App $a, $uid, $self, $create_user, $nick, $conversation)
|
||||
{
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
$api = PConfig::get($uid, 'statusnet', 'baseapi');
|
||||
|
|
@ -1528,7 +1603,7 @@ function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $
|
|||
$osecret = PConfig::get($uid, 'statusnet', 'oauthsecret');
|
||||
$own_url = PConfig::get($uid, 'statusnet', 'own_url');
|
||||
|
||||
require_once('library/twitteroauth.php');
|
||||
require_once 'library/twitteroauth.php';
|
||||
|
||||
$connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
|
||||
|
||||
|
|
@ -1541,26 +1616,27 @@ function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $
|
|||
foreach ($posts AS $post) {
|
||||
$postarray = statusnet_createpost($a, $uid, $post, $self, false, false);
|
||||
|
||||
if (trim($postarray['body']) == "")
|
||||
if (trim($postarray['body']) == "") {
|
||||
continue;
|
||||
}
|
||||
|
||||
//print_r($postarray);
|
||||
$item = item_store($postarray);
|
||||
$postarray["id"] = $item;
|
||||
|
||||
logger('statusnet_complete_conversation: User ' . $self["nick"] . ' posted home timeline item ' . $item);
|
||||
|
||||
if ($item && !function_exists("check_item_notification"))
|
||||
if ($item && !function_exists("check_item_notification")) {
|
||||
statusnet_checknotification($a, $uid, $nick, $item, $postarray);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function statusnet_convertmsg($a, $body, $no_tags = false) {
|
||||
|
||||
require_once("include/oembed.php");
|
||||
require_once("include/items.php");
|
||||
require_once("include/network.php");
|
||||
function statusnet_convertmsg(App $a, $body, $no_tags = false)
|
||||
{
|
||||
require_once "include/oembed.php";
|
||||
require_once "include/items.php";
|
||||
require_once "include/network.php";
|
||||
|
||||
$body = preg_replace("=\[url\=https?://([0-9]*).([0-9]*).([0-9]*).([0-9]*)/([0-9]*)\](.*?)\[\/url\]=ism", "$1.$2.$3.$4/$5", $body);
|
||||
|
||||
|
|
@ -1586,8 +1662,10 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
|||
|
||||
logger("statusnet_convertmsg: fetching data: done", LOGGER_DEBUG);
|
||||
|
||||
if ($type == "")
|
||||
if ($type == "") {
|
||||
$type = $oembed_data->type;
|
||||
}
|
||||
|
||||
if ($oembed_data->type == "video") {
|
||||
//$body = str_replace($search, "[video]".$expanded_url."[/video]", $body);
|
||||
$type = $oembed_data->type;
|
||||
|
|
@ -1595,11 +1673,11 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
|||
$footerlink = "[url=" . $expanded_url . "]" . $expanded_url . "[/url]";
|
||||
|
||||
$body = str_replace($search, $footerlink, $body);
|
||||
} elseif (($oembed_data->type == "photo") && isset($oembed_data->url) && !$dontincludemedia)
|
||||
} elseif (($oembed_data->type == "photo") && isset($oembed_data->url) && !$dontincludemedia) {
|
||||
$body = str_replace($search, "[url=" . $expanded_url . "][img]" . $oembed_data->url . "[/img][/url]", $body);
|
||||
elseif ($oembed_data->type != "link")
|
||||
} elseif ($oembed_data->type != "link") {
|
||||
$body = str_replace($search, "[url=" . $expanded_url . "]" . $expanded_url . "[/url]", $body);
|
||||
else {
|
||||
} else {
|
||||
$img_str = fetch_url($expanded_url, true, $redirects, 4);
|
||||
|
||||
$tempfile = tempnam(get_temppath(), "cache");
|
||||
|
|
@ -1620,29 +1698,33 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
|||
}
|
||||
}
|
||||
|
||||
if ($footerurl != "")
|
||||
if ($footerurl != "") {
|
||||
$footer = add_page_info($footerurl);
|
||||
}
|
||||
|
||||
if (($footerlink != "") && (trim($footer) != "")) {
|
||||
$removedlink = trim(str_replace($footerlink, "", $body));
|
||||
|
||||
if (($removedlink == "") || strstr($body, $removedlink))
|
||||
if (($removedlink == "") || strstr($body, $removedlink)) {
|
||||
$body = $removedlink;
|
||||
}
|
||||
|
||||
$body .= $footer;
|
||||
}
|
||||
}
|
||||
|
||||
if ($no_tags)
|
||||
return(array("body" => $body, "tags" => ""));
|
||||
if ($no_tags) {
|
||||
return array("body" => $body, "tags" => "");
|
||||
}
|
||||
|
||||
$str_tags = '';
|
||||
|
||||
$cnt = preg_match_all("/([!#@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", $body, $matches, PREG_SET_ORDER);
|
||||
if ($cnt) {
|
||||
foreach ($matches as $mtch) {
|
||||
if(strlen($str_tags))
|
||||
if (strlen($str_tags)) {
|
||||
$str_tags .= ',';
|
||||
}
|
||||
|
||||
if ($mtch[1] == "#") {
|
||||
// Replacing the hash tags that are directed to the GNU Social server with internal links
|
||||
|
|
@ -1651,19 +1733,20 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
|||
$body = str_replace($snhash, $frdchash, $body);
|
||||
|
||||
$str_tags .= $frdchash;
|
||||
} else
|
||||
} else {
|
||||
$str_tags .= "@[url=" . $mtch[2] . "]" . $mtch[3] . "[/url]";
|
||||
}
|
||||
// To-Do:
|
||||
// There is a problem with links with to GNU Social groups, so these links are stored with "@" like friendica groups
|
||||
//$str_tags .= $mtch[1]."[url=".$mtch[2]."]".$mtch[3]."[/url]";
|
||||
}
|
||||
}
|
||||
|
||||
return(array("body"=>$body, "tags"=>$str_tags));
|
||||
|
||||
return array("body" => $body, "tags" => $str_tags);
|
||||
}
|
||||
|
||||
function statusnet_fetch_own_contact($a, $uid) {
|
||||
function statusnet_fetch_own_contact(App $a, $uid)
|
||||
{
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
$api = PConfig::get($uid, 'statusnet', 'baseapi');
|
||||
|
|
@ -1674,7 +1757,7 @@ function statusnet_fetch_own_contact($a, $uid) {
|
|||
$contact_id = 0;
|
||||
|
||||
if ($own_url == "") {
|
||||
require_once('library/twitteroauth.php');
|
||||
require_once 'library/twitteroauth.php';
|
||||
|
||||
$connection = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
|
||||
|
||||
|
|
@ -1684,44 +1767,49 @@ function statusnet_fetch_own_contact($a, $uid) {
|
|||
PConfig::set($uid, 'statusnet', 'own_url', normalise_link($user->statusnet_profile_url));
|
||||
|
||||
$contact_id = statusnet_fetch_contact($uid, $user, true);
|
||||
|
||||
} else {
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `alias` = '%s' LIMIT 1",
|
||||
intval($uid), dbesc($own_url));
|
||||
if(count($r))
|
||||
if (count($r)) {
|
||||
$contact_id = $r[0]["id"];
|
||||
else
|
||||
} else {
|
||||
PConfig::delete($uid, 'statusnet', 'own_url');
|
||||
|
||||
}
|
||||
return($contact_id);
|
||||
}
|
||||
return $contact_id;
|
||||
}
|
||||
|
||||
function statusnet_is_retweet($a, $uid, $body) {
|
||||
function statusnet_is_retweet(App $a, $uid, $body)
|
||||
{
|
||||
$body = trim($body);
|
||||
|
||||
// Skip if it isn't a pure repeated messages
|
||||
// Does it start with a share?
|
||||
if (strpos($body, "[share") > 0)
|
||||
return(false);
|
||||
if (strpos($body, "[share") > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Does it end with a share?
|
||||
if (strlen($body) > (strrpos($body, "[/share]") + 8))
|
||||
return(false);
|
||||
if (strlen($body) > (strrpos($body, "[/share]") + 8)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism", "$1", $body);
|
||||
// Skip if there is no shared message in there
|
||||
if ($body == $attributes)
|
||||
return(false);
|
||||
if ($body == $attributes) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$link = "";
|
||||
preg_match("/link='(.*?)'/ism", $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
if ($matches[1] != "") {
|
||||
$link = $matches[1];
|
||||
}
|
||||
|
||||
preg_match('/link="(.*?)"/ism', $attributes, $matches);
|
||||
if ($matches[1] != "")
|
||||
if ($matches[1] != "") {
|
||||
$link = $matches[1];
|
||||
}
|
||||
|
||||
$ckey = PConfig::get($uid, 'statusnet', 'consumerkey');
|
||||
$csecret = PConfig::get($uid, 'statusnet', 'consumersecret');
|
||||
|
|
@ -1732,8 +1820,9 @@ function statusnet_is_retweet($a, $uid, $body) {
|
|||
|
||||
$id = preg_replace("=https?://" . $hostname . "/notice/(.*)=ism", "$1", $link);
|
||||
|
||||
if ($id == $link)
|
||||
return(false);
|
||||
if ($id == $link) {
|
||||
return false;
|
||||
}
|
||||
|
||||
logger('statusnet_is_retweet: Retweeting id ' . $id . ' for user ' . $uid, LOGGER_DEBUG);
|
||||
|
||||
|
|
@ -1742,5 +1831,6 @@ function statusnet_is_retweet($a, $uid, $body) {
|
|||
$result = $connection->post('statuses/retweet/' . $id);
|
||||
|
||||
logger('statusnet_is_retweet: result ' . print_r($result, true), LOGGER_DEBUG);
|
||||
return(isset($result->id));
|
||||
|
||||
return isset($result->id);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue