From 7770317f1ede7a0d429262b1fa288e861bd8c879 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 28 Jul 2013 20:38:48 +0200 Subject: [PATCH] Preparations for a more visible reshare when exporting to twitter, statusnet or facebook. The oauth-parts are some experimental stuff for the statusnet API - but they don't hurt. --- include/bbcode.php | 63 +++++++++++++++++++++++++++++++++++++--- include/html2plain.php | 3 ++ library/OAuth1.php | 7 +++-- library/twitteroauth.php | 2 ++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index eaf412c353..62759d192e 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -262,9 +262,9 @@ function bb_ShareAttributes($match) { preg_match('/posted="(.*?)"/ism', $attributes, $matches); if ($matches[1] != "") $posted = $matches[1]; - $reldate = (($posted) ? " " . relative_date($posted) : ''); + $reldate = (($posted) ? " " . relative_date($posted) : ''); - $headline = '
'; + $headline = '
'; if ($avatar != "") $headline .= ''; @@ -300,10 +300,63 @@ function bb_ShareAttributesSimple($match) { if ($matches[1] != "") $profile = $matches[1]; - $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$author.":
»".$match[2]."«"; + $userid = GetProfileUsername($profile,$author); + + $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$userid.":
»".$match[2]."«"; return($text); } +function bb_ShareAttributesSimple2($match) { + + $attributes = $match[1]; + + $author = ""; + preg_match("/author='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $author = html_entity_decode($matches[1],ENT_QUOTES,'UTF-8'); + + preg_match('/author="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $author = $matches[1]; + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $userid = GetProfileUsername($profile,$author); + + $text = "
".html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$userid.":
".$match[2]; + + return($text); +} + +function GetProfileUsername($profile, $username) { + $friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile); + if ($friendica != $profile) + return($friendica); + + $diaspora = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); + if ($diaspora != $profile) + return($diaspora); + + $StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile); + if ($StatusnetHost != $profile) { + $StatusnetUser = preg_replace("=https?://(.*)/user/(.*)=ism", "$2", $profile); + if ($StatusnetUser != $profile) { + $UserData = fetch_url("http://".$StatusnetHost."/api/users/show.json?user_id=".$StatusnetUser); + $user = json_decode($UserData); + if ($user) + return($user->screen_name."@".$StatusnetHost); + } + } + + return($username); +} // BBcode 2 HTML was written by WAY2WEB.net // extended to work with Mistpark/Friendica - Mike Macgirvin @@ -553,8 +606,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal // Shared content if (!$simplehtml) $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributes",$Text); - else + elseif ($simplehtml == 1) $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple",$Text); + elseif ($simplehtml == 2) + $Text = preg_replace_callback("/\[share(.*?)\](.*?)\[\/share\]/ism","bb_ShareAttributesSimple2",$Text); $Text = preg_replace("/\[crypt\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); $Text = preg_replace("/\[crypt=(.*?)\](.*?)\[\/crypt\]/ism",'
' . t('Encrypted content') . '
', $Text); diff --git a/include/html2plain.php b/include/html2plain.php index 677faa9d58..07de829656 100644 --- a/include/html2plain.php +++ b/include/html2plain.php @@ -220,6 +220,9 @@ function html2plain($html, $wraplength = 75, $compact = false) //$message .= "\n[".($counter++)."] ".$url; } + $message = str_replace("\n«", "«\n", $message); + $message = str_replace("»\n", "\n»", $message); + do { $oldmessage = $message; $message = str_replace("\n\n\n", "\n\n", $message); diff --git a/library/OAuth1.php b/library/OAuth1.php index 53b905e771..994962a858 100644 --- a/library/OAuth1.php +++ b/library/OAuth1.php @@ -423,8 +423,11 @@ class OAuthRequest { /** * builds the data one would send in a POST request */ - public function to_postdata() { - return OAuthUtil::build_http_query($this->parameters); + public function to_postdata($raw = false) { + if ($raw) + return($this->parameters); + else + return OAuthUtil::build_http_query($this->parameters); } /** diff --git a/library/twitteroauth.php b/library/twitteroauth.php index 009ad56bd4..24e831a924 100644 --- a/library/twitteroauth.php +++ b/library/twitteroauth.php @@ -184,6 +184,8 @@ class TwitterOAuth { switch ($method) { case 'GET': return $this->http($request->to_url(), 'GET'); + case 'UPLOAD': + return $this->http($request->get_normalized_http_url(), 'POST', $request->to_postdata(true)); default: return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata()); }