Merge pull request #203 from annando/master
app.net, facebook, twitter and statusnet: Preview now shows the post like it will appear on other networks/Better contact handling
This commit is contained in:
commit
fb14c7094c
5 changed files with 212 additions and 17 deletions
|
@ -23,6 +23,7 @@ function appnet_install() {
|
||||||
register_hook('cron', 'addon/appnet/appnet.php', 'appnet_cron');
|
register_hook('cron', 'addon/appnet/appnet.php', 'appnet_cron');
|
||||||
register_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
|
register_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
|
||||||
register_hook('connector_settings_post','addon/appnet/appnet.php', 'appnet_settings_post');
|
register_hook('connector_settings_post','addon/appnet/appnet.php', 'appnet_settings_post');
|
||||||
|
register_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@ function appnet_uninstall() {
|
||||||
unregister_hook('cron', 'addon/appnet/appnet.php', 'appnet_cron');
|
unregister_hook('cron', 'addon/appnet/appnet.php', 'appnet_cron');
|
||||||
unregister_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
|
unregister_hook('connector_settings', 'addon/appnet/appnet.php', 'appnet_settings');
|
||||||
unregister_hook('connector_settings_post', 'addon/appnet/appnet.php', 'appnet_settings_post');
|
unregister_hook('connector_settings_post', 'addon/appnet/appnet.php', 'appnet_settings_post');
|
||||||
|
unregister_hook('prepare_body', 'addon/appnet/appnet.php', 'appnet_prepare_body');
|
||||||
}
|
}
|
||||||
|
|
||||||
function appnet_module() {}
|
function appnet_module() {}
|
||||||
|
@ -825,13 +827,15 @@ function appnet_createpost($a, $uid, $post, $me, $user, $ownid, $createuser, $th
|
||||||
if (isset($post["reply_to"]) AND ($post["reply_to"] != "")) {
|
if (isset($post["reply_to"]) AND ($post["reply_to"] != "")) {
|
||||||
$postarray['thr-parent'] = "adn::".$post["reply_to"];
|
$postarray['thr-parent'] = "adn::".$post["reply_to"];
|
||||||
|
|
||||||
// Complete the thread if the parent doesn't exists
|
// Complete the thread (if the parent doesn't exists)
|
||||||
if ($threadcompletion) {
|
if ($threadcompletion) {
|
||||||
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
//$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||||
dbesc($postarray['thr-parent']),
|
// dbesc($postarray['thr-parent']),
|
||||||
intval($uid)
|
// intval($uid)
|
||||||
);
|
// );
|
||||||
if (!count($r)) {
|
//if (!count($r)) {
|
||||||
|
logger("appnet_createpost: completing thread ".$post["thread_id"]." for user ".$uid, LOGGER_DEBUG);
|
||||||
|
|
||||||
require_once("addon/appnet/AppDotNet.php");
|
require_once("addon/appnet/AppDotNet.php");
|
||||||
|
|
||||||
$token = get_pconfig($uid,'appnet','token');
|
$token = get_pconfig($uid,'appnet','token');
|
||||||
|
@ -850,12 +854,18 @@ function appnet_createpost($a, $uid, $post, $me, $user, $ownid, $createuser, $th
|
||||||
logger("appnet_createpost: Error fetching thread for user ".$uid." ".appnet_error($e->getMessage()));
|
logger("appnet_createpost: Error fetching thread for user ".$uid." ".appnet_error($e->getMessage()));
|
||||||
}
|
}
|
||||||
$thread = array_reverse($thread);
|
$thread = array_reverse($thread);
|
||||||
|
|
||||||
|
logger("appnet_createpost: fetched ".count($thread)." items for thread ".$post["thread_id"]." for user ".$uid, LOGGER_DEBUG);
|
||||||
|
|
||||||
foreach ($thread AS $tpost) {
|
foreach ($thread AS $tpost) {
|
||||||
$threadpost = appnet_createpost($a, $uid, $tpost, $me, $user, $ownid, $createuser, false);
|
$threadpost = appnet_createpost($a, $uid, $tpost, $me, $user, $ownid, false, false);
|
||||||
$item = item_store($threadpost);
|
$item = item_store($threadpost);
|
||||||
|
logger("appnet_createpost: stored post ".$post["id"]." thread ".$post["thread_id"]." in item ".$item, LOGGER_DEBUG);
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
}
|
// Don't create accounts of people who just comment something
|
||||||
|
$createuser = false;
|
||||||
} else
|
} else
|
||||||
$postarray['thr-parent'] = $postarray['uri'];
|
$postarray['thr-parent'] = $postarray['uri'];
|
||||||
|
|
||||||
|
@ -1040,8 +1050,10 @@ function appnet_fetchcontact($a, $uid, $contact, $me, $create_user) {
|
||||||
intval($uid), dbesc("adn::".$contact["id"]));
|
intval($uid), dbesc("adn::".$contact["id"]));
|
||||||
|
|
||||||
if(!count($r) AND !$create_user)
|
if(!count($r) AND !$create_user)
|
||||||
return($me);
|
return($me["id"]);
|
||||||
|
|
||||||
|
if ($contact["canonical_url"] == "")
|
||||||
|
return($me["id"]);
|
||||||
|
|
||||||
if (count($r) AND ($r[0]["readonly"] OR $r[0]["blocked"])) {
|
if (count($r) AND ($r[0]["readonly"] OR $r[0]["blocked"])) {
|
||||||
logger("appnet_fetchcontact: Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
|
logger("appnet_fetchcontact: Contact '".$r[0]["nick"]."' is blocked or readonly.", LOGGER_DEBUG);
|
||||||
|
@ -1049,6 +1061,13 @@ function appnet_fetchcontact($a, $uid, $contact, $me, $create_user) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!count($r)) {
|
if(!count($r)) {
|
||||||
|
|
||||||
|
if ($contact["name"] == "")
|
||||||
|
$contact["name"] = $contact["username"];
|
||||||
|
|
||||||
|
if ($contact["username"] == "")
|
||||||
|
$contact["username"] = $contact["name"];
|
||||||
|
|
||||||
// create contact record
|
// create contact record
|
||||||
q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
|
q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `addr`, `alias`, `notify`, `poll`,
|
||||||
`name`, `nick`, `photo`, `network`, `rel`, `priority`,
|
`name`, `nick`, `photo`, `network`, `rel`, `priority`,
|
||||||
|
@ -1157,6 +1176,43 @@ function appnet_fetchcontact($a, $uid, $contact, $me, $create_user) {
|
||||||
return($r[0]["id"]);
|
return($r[0]["id"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function appnet_prepare_body(&$a,&$b) {
|
||||||
|
if ($b["item"]["network"] != NETWORK_APPNET)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ($b["preview"]) {
|
||||||
|
$max_char = 256;
|
||||||
|
require_once("include/plaintext.php");
|
||||||
|
$item = $b["item"];
|
||||||
|
$item["plink"] = $a->get_baseurl()."/display/".$a->user["nickname"]."/".$item["parent"];
|
||||||
|
|
||||||
|
$r = q("SELECT `author-link` FROM item WHERE item.uri = '%s' AND item.uid = %d LIMIT 1",
|
||||||
|
dbesc($item["thr-parent"]),
|
||||||
|
intval(local_user()));
|
||||||
|
|
||||||
|
if(count($r)) {
|
||||||
|
$orig_post = $r[0];
|
||||||
|
|
||||||
|
$nicknameplain = preg_replace("=https?://alpha.app.net/(.*)=ism", "$1", $orig_post["author-link"]);
|
||||||
|
$nickname = "@[url=".$orig_post["author-link"]."]".$nicknameplain."[/url]";
|
||||||
|
$nicknameplain = "@".$nicknameplain;
|
||||||
|
|
||||||
|
if ((strpos($item["body"], $nickname) === false) AND (strpos($item["body"], $nicknameplain) === false))
|
||||||
|
$item["body"] = $nickname." ".$item["body"];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$msgarr = plaintext($a, $item, $max_char, true);
|
||||||
|
$msg = appnet_create_entities($a, $item, $msgarr);
|
||||||
|
|
||||||
|
require_once("library/markdown.php");
|
||||||
|
$msg = Markdown($msg);
|
||||||
|
|
||||||
|
$b['html'] = $msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function appnet_cron($a,$b) {
|
function appnet_cron($a,$b) {
|
||||||
$last = get_config('appnet','last_poll');
|
$last = get_config('appnet','last_poll');
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ function fbpost_install() {
|
||||||
register_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify');
|
register_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify');
|
||||||
register_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook');
|
register_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook');
|
||||||
register_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron');
|
register_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron');
|
||||||
|
register_hook('prepare_body', 'addon/fbpost/fbpost.php', 'fbpost_prepare_body');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +46,7 @@ function fbpost_uninstall() {
|
||||||
unregister_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify');
|
unregister_hook('enotify', 'addon/fbpost/fbpost.php', 'fbpost_enotify');
|
||||||
unregister_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook');
|
unregister_hook('queue_predeliver', 'addon/fbpost/fbpost.php', 'fbpost_queue_hook');
|
||||||
unregister_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron');
|
unregister_hook('cron', 'addon/fbpost/fbpost.php', 'fbpost_cron');
|
||||||
|
unregister_hook('prepare_body', 'addon/fbpost/fbpost.php', 'fbpost_prepare_body');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -565,9 +567,11 @@ function fbpost_post_hook(&$a,&$b) {
|
||||||
$msgarr = plaintext($a, $b, 0, false);
|
$msgarr = plaintext($a, $b, 0, false);
|
||||||
$msg = $msgarr["text"];
|
$msg = $msgarr["text"];
|
||||||
$link = $msgarr["url"];
|
$link = $msgarr["url"];
|
||||||
$image = $msgarr["image"];
|
|
||||||
$linkname = $msgarr["title"];
|
$linkname = $msgarr["title"];
|
||||||
|
|
||||||
|
if ($msgarr["type"] != "video")
|
||||||
|
$image = $msgarr["image"];
|
||||||
|
|
||||||
// Fallback - if message is empty
|
// Fallback - if message is empty
|
||||||
if(!strlen($msg))
|
if(!strlen($msg))
|
||||||
$msg = $linkname;
|
$msg = $linkname;
|
||||||
|
@ -917,6 +921,23 @@ function fbpost_get_app_access_token() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fbpost_prepare_body(&$a,&$b) {
|
||||||
|
if ($b["item"]["network"] != NETWORK_FACEBOOK)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ($b["preview"]) {
|
||||||
|
$msg = $b["item"]["body"];
|
||||||
|
|
||||||
|
require_once("include/bbcode.php");
|
||||||
|
require_once("include/html2plain.php");
|
||||||
|
$msg = bb_CleanPictureLinks($msg);
|
||||||
|
$msg = bbcode($msg, false, false, 2, true);
|
||||||
|
$msg = trim(html2plain($msg, 0));
|
||||||
|
|
||||||
|
$b['html'] = nl2br(htmlspecialchars($msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function fbpost_cron($a,$b) {
|
function fbpost_cron($a,$b) {
|
||||||
$last = get_config('facebook','last_poll');
|
$last = get_config('facebook','last_poll');
|
||||||
|
|
||||||
|
|
|
@ -278,7 +278,19 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($contact_id <= 0) {
|
if ($contact_id <= 0) {
|
||||||
|
if ($post->actor_id != $post->source_id) {
|
||||||
|
// Testing if we know the source or the actor
|
||||||
|
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->source_id], false);
|
||||||
|
|
||||||
|
if (($contact_id == 0) and array_key_exists($post->actor_id, $contacts))
|
||||||
|
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->actor_id], false);
|
||||||
|
|
||||||
|
// If we don't know anyone, we guess we should know the source. Could be the wrong decision
|
||||||
|
if ($contact_id == 0)
|
||||||
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->source_id], $create_user);
|
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->source_id], $create_user);
|
||||||
|
} else
|
||||||
|
$contact_id = fbsync_fetch_contact($uid, $contacts[$post->source_id], $create_user);
|
||||||
|
|
||||||
|
|
||||||
if ($contact_id == -1) {
|
if ($contact_id == -1) {
|
||||||
logger('fbsync_createpost: Contact is blocked. Post not imported '.print_r($post, true), LOGGER_DEBUG);
|
logger('fbsync_createpost: Contact is blocked. Post not imported '.print_r($post, true), LOGGER_DEBUG);
|
||||||
|
@ -680,6 +692,9 @@ function fbsync_createlike($a, $uid, $self_id, $self, $contacts, $like) {
|
||||||
|
|
||||||
function fbsync_fetch_contact($uid, $contact, $create_user) {
|
function fbsync_fetch_contact($uid, $contact, $create_user) {
|
||||||
|
|
||||||
|
if($contact->url == "")
|
||||||
|
return(0);
|
||||||
|
|
||||||
// Check if the unique contact is existing
|
// Check if the unique contact is existing
|
||||||
// To-Do: only update once a while
|
// To-Do: only update once a while
|
||||||
$r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
|
$r = q("SELECT id FROM unique_contacts WHERE url='%s' LIMIT 1",
|
||||||
|
|
|
@ -118,6 +118,7 @@ function statusnet_install() {
|
||||||
register_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
|
register_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
|
||||||
register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
|
register_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
|
||||||
register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
|
register_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
|
||||||
|
register_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body');
|
||||||
logger("installed statusnet");
|
logger("installed statusnet");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,6 +130,7 @@ function statusnet_uninstall() {
|
||||||
unregister_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
|
unregister_hook('post_local', 'addon/statusnet/statusnet.php', 'statusnet_post_local');
|
||||||
unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
|
unregister_hook('jot_networks', 'addon/statusnet/statusnet.php', 'statusnet_jot_nets');
|
||||||
unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
|
unregister_hook('cron', 'addon/statusnet/statusnet.php', 'statusnet_cron');
|
||||||
|
unregister_hook('prepare_body', 'addon/statusnet/statusnet.php', 'statusnet_prepare_body');
|
||||||
|
|
||||||
// old setting - remove only
|
// old setting - remove only
|
||||||
unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
|
unregister_hook('post_local_end', 'addon/statusnet/statusnet.php', 'statusnet_post_hook');
|
||||||
|
@ -548,10 +550,12 @@ function statusnet_post_hook(&$a,&$b) {
|
||||||
$dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret);
|
$dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret);
|
||||||
$max_char = $dent->get_maxlength(); // max. length for a dent
|
$max_char = $dent->get_maxlength(); // max. length for a dent
|
||||||
|
|
||||||
|
set_pconfig($b['uid'], 'statusnet', 'max_char', $max_char);
|
||||||
|
|
||||||
$tempfile = "";
|
$tempfile = "";
|
||||||
require_once("include/plaintext.php");
|
require_once("include/plaintext.php");
|
||||||
require_once("include/network.php");
|
require_once("include/network.php");
|
||||||
$msgarr = plaintext($a, $b, $max_char, true);
|
$msgarr = plaintext($a, $b, $max_char, true, 7);
|
||||||
$msg = $msgarr["text"];
|
$msg = $msgarr["text"];
|
||||||
|
|
||||||
if (($msg == "") AND isset($msgarr["title"]))
|
if (($msg == "") AND isset($msgarr["title"]))
|
||||||
|
@ -565,7 +569,7 @@ function statusnet_post_hook(&$a,&$b) {
|
||||||
$msg .= " \n".short_link($msgarr["url"]);
|
$msg .= " \n".short_link($msgarr["url"]);
|
||||||
else
|
else
|
||||||
$msg .= " \n".$msgarr["url"];
|
$msg .= " \n".$msgarr["url"];
|
||||||
} elseif (isset($msgarr["image"]))
|
} elseif (isset($msgarr["image"]) AND ($msgarr["type"] != "video"))
|
||||||
$image = $msgarr["image"];
|
$image = $msgarr["image"];
|
||||||
|
|
||||||
if ($image != "") {
|
if ($image != "") {
|
||||||
|
@ -675,6 +679,49 @@ function statusnet_plugin_admin(&$a, &$o){
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function statusnet_prepare_body(&$a,&$b) {
|
||||||
|
if ($b["item"]["network"] != NETWORK_STATUSNET)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ($b["preview"]) {
|
||||||
|
$max_char = get_pconfig(local_user(),'statusnet','max_char');
|
||||||
|
if (intval($max_char) == 0)
|
||||||
|
$max_char = 140;
|
||||||
|
|
||||||
|
require_once("include/plaintext.php");
|
||||||
|
$item = $b["item"];
|
||||||
|
$item["plink"] = $a->get_baseurl()."/display/".$a->user["nickname"]."/".$item["parent"];
|
||||||
|
|
||||||
|
$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($item["thr-parent"]),
|
||||||
|
intval(local_user()));
|
||||||
|
|
||||||
|
if(count($r)) {
|
||||||
|
$orig_post = $r[0];
|
||||||
|
|
||||||
|
$nickname = "@[url=".$orig_post["author-link"]."]".$orig_post["contact_nick"]."[/url]";
|
||||||
|
$nicknameplain = "@".$orig_post["contact_nick"];
|
||||||
|
|
||||||
|
if ((strpos($item["body"], $nickname) === false) AND (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"]))
|
||||||
|
$msg .= " ".$msgarr["url"];
|
||||||
|
|
||||||
|
if (isset($msgarr["image"]))
|
||||||
|
$msg .= " ".$msgarr["image"];
|
||||||
|
|
||||||
|
$b['html'] = nl2br(htmlspecialchars($msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function statusnet_cron($a,$b) {
|
function statusnet_cron($a,$b) {
|
||||||
$last = get_config('statusnet','last_poll');
|
$last = get_config('statusnet','last_poll');
|
||||||
|
|
||||||
|
@ -998,6 +1045,8 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
||||||
|
|
||||||
require_once("include/html2bbcode.php");
|
require_once("include/html2bbcode.php");
|
||||||
|
|
||||||
|
logger("statusnet_createpost: start", LOGGER_DEBUG);
|
||||||
|
|
||||||
$api = get_pconfig($uid, 'statusnet', 'baseapi');
|
$api = get_pconfig($uid, 'statusnet', 'baseapi');
|
||||||
$hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api);
|
$hostname = preg_replace("=https?://([\w\.]*)/.*=ism", "$1", $api);
|
||||||
|
|
||||||
|
@ -1059,6 +1108,8 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
||||||
} else
|
} else
|
||||||
return(array());
|
return(array());
|
||||||
}
|
}
|
||||||
|
// Don't create accounts of people who just comment something
|
||||||
|
$create_user = false;
|
||||||
} else
|
} else
|
||||||
$postarray['parent-uri'] = $postarray['uri'];
|
$postarray['parent-uri'] = $postarray['uri'];
|
||||||
|
|
||||||
|
@ -1126,6 +1177,7 @@ function statusnet_createpost($a, $uid, $post, $self, $create_user, $only_existi
|
||||||
$postarray['author-link'] = $post->retweeted_status->user->statusnet_profile_url;
|
$postarray['author-link'] = $post->retweeted_status->user->statusnet_profile_url;
|
||||||
$postarray['author-avatar'] = $post->retweeted_status->user->profile_image_url;
|
$postarray['author-avatar'] = $post->retweeted_status->user->profile_image_url;
|
||||||
}
|
}
|
||||||
|
logger("statusnet_createpost: end", LOGGER_DEBUG);
|
||||||
return($postarray);
|
return($postarray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1392,7 +1444,7 @@ function statusnet_complete_conversation($a, $uid, $self, $create_user, $nick, $
|
||||||
$posts = array_reverse($items);
|
$posts = array_reverse($items);
|
||||||
|
|
||||||
foreach($posts AS $post) {
|
foreach($posts AS $post) {
|
||||||
$postarray = statusnet_createpost($a, $uid, $post, $self, $create_user, true);
|
$postarray = statusnet_createpost($a, $uid, $post, $self, false, false);
|
||||||
|
|
||||||
if (trim($postarray['body']) == "")
|
if (trim($postarray['body']) == "")
|
||||||
continue;
|
continue;
|
||||||
|
@ -1414,6 +1466,8 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
||||||
require_once("include/items.php");
|
require_once("include/items.php");
|
||||||
require_once("include/network.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);
|
||||||
|
|
||||||
$URLSearchString = "^\[\]";
|
$URLSearchString = "^\[\]";
|
||||||
$links = preg_match_all("/[^!#@]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", $body,$matches,PREG_SET_ORDER);
|
$links = preg_match_all("/[^!#@]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", $body,$matches,PREG_SET_ORDER);
|
||||||
|
|
||||||
|
@ -1426,10 +1480,16 @@ function statusnet_convertmsg($a, $body, $no_tags = false) {
|
||||||
foreach ($matches AS $match) {
|
foreach ($matches AS $match) {
|
||||||
$search = "[url=".$match[1]."]".$match[2]."[/url]";
|
$search = "[url=".$match[1]."]".$match[2]."[/url]";
|
||||||
|
|
||||||
|
logger("statusnet_convertmsg: expanding url ".$match[1], LOGGER_DEBUG);
|
||||||
|
|
||||||
$expanded_url = original_url($match[1]);
|
$expanded_url = original_url($match[1]);
|
||||||
|
|
||||||
|
logger("statusnet_convertmsg: fetching data for ".$expanded_url, LOGGER_DEBUG);
|
||||||
|
|
||||||
$oembed_data = oembed_fetch_url($expanded_url, true);
|
$oembed_data = oembed_fetch_url($expanded_url, true);
|
||||||
|
|
||||||
|
logger("statusnet_convertmsg: fetching data: done", LOGGER_DEBUG);
|
||||||
|
|
||||||
if ($type == "")
|
if ($type == "")
|
||||||
$type = $oembed_data->type;
|
$type = $oembed_data->type;
|
||||||
if ($oembed_data->type == "video") {
|
if ($oembed_data->type == "video") {
|
||||||
|
|
|
@ -73,6 +73,7 @@ function twitter_install() {
|
||||||
register_hook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
|
register_hook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
|
||||||
register_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
|
register_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
|
||||||
register_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
|
register_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
|
||||||
|
register_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
|
||||||
logger("installed twitter");
|
logger("installed twitter");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +88,7 @@ function twitter_uninstall() {
|
||||||
unregister_hook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
|
unregister_hook('queue_predeliver', 'addon/twitter/twitter.php', 'twitter_queue_hook');
|
||||||
unregister_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
|
unregister_hook('follow', 'addon/twitter/twitter.php', 'twitter_follow');
|
||||||
unregister_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
|
unregister_hook('expire', 'addon/twitter/twitter.php', 'twitter_expire');
|
||||||
|
unregister_hook('prepare_body', 'addon/twitter/twitter.php', 'twitter_prepare_body');
|
||||||
|
|
||||||
// old setting - remove only
|
// old setting - remove only
|
||||||
unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
|
unregister_hook('post_local_end', 'addon/twitter/twitter.php', 'twitter_post_hook');
|
||||||
|
@ -462,7 +464,7 @@ function twitter_post_hook(&$a,&$b) {
|
||||||
|
|
||||||
$max_char = 140;
|
$max_char = 140;
|
||||||
require_once("include/plaintext.php");
|
require_once("include/plaintext.php");
|
||||||
$msgarr = plaintext($a, $b, $max_char, true);
|
$msgarr = plaintext($a, $b, $max_char, true, 8);
|
||||||
$msg = $msgarr["text"];
|
$msg = $msgarr["text"];
|
||||||
|
|
||||||
if (($msg == "") AND isset($msgarr["title"]))
|
if (($msg == "") AND isset($msgarr["title"]))
|
||||||
|
@ -472,7 +474,7 @@ function twitter_post_hook(&$a,&$b) {
|
||||||
|
|
||||||
if (isset($msgarr["url"]))
|
if (isset($msgarr["url"]))
|
||||||
$msg .= "\n".$msgarr["url"];
|
$msg .= "\n".$msgarr["url"];
|
||||||
elseif (isset($msgarr["image"]))
|
elseif (isset($msgarr["image"]) AND ($msgarr["type"] != "video"))
|
||||||
$image = $msgarr["image"];
|
$image = $msgarr["image"];
|
||||||
|
|
||||||
// and now tweet it :-)
|
// and now tweet it :-)
|
||||||
|
@ -652,6 +654,45 @@ function twitter_expire($a,$b) {
|
||||||
logger('twitter_expire: expire_end');
|
logger('twitter_expire: expire_end');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function twitter_prepare_body(&$a,&$b) {
|
||||||
|
if ($b["item"]["network"] != NETWORK_TWITTER)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ($b["preview"]) {
|
||||||
|
$max_char = 140;
|
||||||
|
require_once("include/plaintext.php");
|
||||||
|
$item = $b["item"];
|
||||||
|
$item["plink"] = $a->get_baseurl()."/display/".$a->user["nickname"]."/".$item["parent"];
|
||||||
|
|
||||||
|
$r = q("SELECT `author-link` FROM item WHERE item.uri = '%s' AND item.uid = %d LIMIT 1",
|
||||||
|
dbesc($item["thr-parent"]),
|
||||||
|
intval(local_user()));
|
||||||
|
|
||||||
|
if(count($r)) {
|
||||||
|
$orig_post = $r[0];
|
||||||
|
|
||||||
|
$nicknameplain = preg_replace("=https?://twitter.com/(.*)=ism", "$1", $orig_post["author-link"]);
|
||||||
|
$nickname = "@[url=".$orig_post["author-link"]."]".$nicknameplain."[/url]";
|
||||||
|
$nicknameplain = "@".$nicknameplain;
|
||||||
|
|
||||||
|
if ((strpos($item["body"], $nickname) === false) AND (strpos($item["body"], $nicknameplain) === false))
|
||||||
|
$item["body"] = $nickname." ".$item["body"];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$msgarr = plaintext($a, $item, $max_char, true, 8);
|
||||||
|
$msg = $msgarr["text"];
|
||||||
|
|
||||||
|
if (isset($msgarr["url"]))
|
||||||
|
$msg .= " ".$msgarr["url"];
|
||||||
|
|
||||||
|
if (isset($msgarr["image"]))
|
||||||
|
$msg .= " ".$msgarr["image"];
|
||||||
|
|
||||||
|
$b['html'] = nl2br(htmlspecialchars($msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function twitter_fetchtimeline($a, $uid) {
|
function twitter_fetchtimeline($a, $uid) {
|
||||||
$ckey = get_config('twitter', 'consumerkey');
|
$ckey = get_config('twitter', 'consumerkey');
|
||||||
$csecret = get_config('twitter', 'consumersecret');
|
$csecret = get_config('twitter', 'consumersecret');
|
||||||
|
@ -1232,6 +1273,8 @@ function twitter_createpost($a, $uid, $post, $self, $create_user, $only_existing
|
||||||
} else
|
} else
|
||||||
return(array());
|
return(array());
|
||||||
}
|
}
|
||||||
|
// Don't create accounts of people who just comment something
|
||||||
|
$create_user = false;
|
||||||
} else
|
} else
|
||||||
$postarray['parent-uri'] = $postarray['uri'];
|
$postarray['parent-uri'] = $postarray['uri'];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue