]> git.mxchange.org Git - friendica-addons.git/commitdiff
Design improvements for importing posts from twitter, facebook and G+
authorMichael Vogel <icarus@dabo.de>
Sun, 8 Dec 2013 14:00:49 +0000 (15:00 +0100)
committerMichael Vogel <icarus@dabo.de>
Sun, 8 Dec 2013 14:00:49 +0000 (15:00 +0100)
fbpost/fbpost.php
fbsync/fbsync.php
fromgplus/fromgplus.php
twitter/twitter.php

index 0b6370a3a85ad918487c42dcff00433355ba0cc1..092d5f70407b1ea1ddd9c58e19cc367e32682b00 100644 (file)
  * Detailed instructions how to use this plugin can be found at
  * https://github.com/friendica/friendica/wiki/How-to:-Friendica%E2%80%99s-Facebook-connector
  *
- * Vidoes and embeds will not be posted if there is no other content. Links 
- * and images will be converted to a format suitable for the Facebook API and 
- * long posts truncated - with a link to view the full post. 
+ * Vidoes and embeds will not be posted if there is no other content. Links
+ * and images will be converted to a format suitable for the Facebook API and
+ * long posts truncated - with a link to view the full post.
  *
  * Facebook contacts will not be able to view private photos, as they are not able to
- * authenticate to your site to establish identity. We will address this 
+ * authenticate to your site to establish identity. We will address this
  * in a future release.
  */
 
@@ -209,7 +209,7 @@ function fbpost_content(&$a) {
 
        $o .= '<h3>' . t('Facebook Post') . '</h3>';
 
-       if(! $fb_installed) { 
+       if(! $fb_installed) {
                $o .= '<div id="fbpost-enable-wrapper">';
 
                //read_stream,publish_stream,manage_pages,photo_upload,user_groups,offline_access
@@ -982,6 +982,8 @@ function fbpost_cron($a,$b) {
 }
 
 function fbpost_fetchwall($a, $uid) {
+       require_once("include/oembed.php");
+
        $access_token = get_pconfig($uid,'facebook','access_token');
        $post_to_page = get_pconfig($uid,'facebook','post_to_page');
        $lastcreated = get_pconfig($uid,'facebook','last_created');
@@ -1036,24 +1038,15 @@ function fbpost_fetchwall($a, $uid) {
 
                $_REQUEST["body"] = (isset($item->message) ? escape_tags($item->message) : '');
 
-               if(isset($item->name) and isset($item->link))
-                       $_REQUEST["body"] .= "\n\n[bookmark=".$item->link."]".$item->name."[/bookmark]";
-               elseif (isset($item->name))
-                       $_REQUEST["body"] .= "\n\n[b]" . $item->name."[/b]";
+               $content = "";
+               $type = "";
 
-               /*if(isset($item->caption)) {
-                       if(!isset($item->name) and isset($item->link))
-                               $_REQUEST["body"] .= "\n\n[bookmark=".$item->link."]".$item->caption."[/bookmark]";
-                       //else
-                       //      $_REQUEST["body"] .= "[i]" . $item->caption."[/i]\n";
-                       }
-
-                       if(!isset($item->caption) and !isset($item->name)) {
-                               if (isset($item->link))
-                                       $_REQUEST["body"] .= "\n[url]".$item->link."[/url]\n";
-                               else
-                                       $_REQUEST["body"] .= "\n";
-               }*/
+               if(isset($item->name) and isset($item->link)) {
+                       $oembed_data = oembed_fetch_url($item->link);
+                       $type = $oembed_data->type;
+                       $content = "[bookmark=".$item->link."]".$item->name."[/bookmark]";
+               } elseif (isset($item->name))
+                       $content .= "[b]".$item->name."[/b]";
 
                $quote = "";
                if(isset($item->description) and ($item->type != "photo"))
@@ -1062,39 +1055,45 @@ function fbpost_fetchwall($a, $uid) {
                if(isset($item->caption) and ($item->type == "photo"))
                        $quote = $item->caption;
 
-               //if (isset($item->properties))
-               //      foreach ($item->properties as $property)
-               //              $quote .= "\n".$property->name.": [url=".$property->href."]".$property->text."[/url]";
-
-               if ($quote)
-                       $_REQUEST["body"] .= "\n[quote]".$quote."[/quote]";
-
                // Only import the picture when the message is no video
                // oembed display a picture of the video as well
-               if ($item->type != "video") {
+               //if ($item->type != "video") {
                //if (($item->type != "video") and ($item->type != "photo")) {
+               if (($type == "") OR ($type == "link")) {
+
+                       $type = $item->type;
+
                        if(isset($item->picture) && isset($item->link))
-                               $_REQUEST["body"] .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]';
+                               $content .= "\n".'[url='.$item->link.'][img]'.fpost_cleanpicture($item->picture).'[/img][/url]';
                        else {
                                if (isset($item->picture))
-                                       $_REQUEST["body"] .= "\n".'[img]'.fpost_cleanpicture($item->picture).'[/img]';
+                                       $content .= "\n".'[img]'.fpost_cleanpicture($item->picture).'[/img]';
                                // if just a link, it may be a wall photo - check
                                if(isset($item->link))
-                                       $_REQUEST["body"] .= fbpost_get_photo($uid,$item->link);
+                                       $content .= fbpost_get_photo($uid,$item->link);
                        }
                }
 
-               /*if (($datarray['app'] == "Events") and isset($item->actions))
-                       foreach ($item->actions as $action)
-                               if ($action->name == "View")
-                                       $_REQUEST["body"] .= " [url=".$action->link."]".$item->story."[/url]";
-               */
-
-               if(trim($_REQUEST["body"]) == '') {
+               if(trim($_REQUEST["body"].$content.$quote) == '') {
                        logger('facebook: empty body '.$item->id.' '.print_r($item, true));
                        continue;
                }
 
+               if ($content)
+                       $_REQUEST["body"] .= "\n\n";
+
+               if ($type)
+                       $_REQUEST["body"] .= "[class=type-".$type."]";
+
+               if ($content)
+                       $_REQUEST["body"] .= $content;
+
+               if ($quote)
+                       $_REQUEST["body"] .= "\n[quote]".$quote."[/quote]";
+
+               if ($type)
+                       $_REQUEST["body"] .= "[/class]";
+
                $_REQUEST["body"] = trim($_REQUEST["body"]);
 
                if (isset($item->place)) {
index 528144449824118f1b0376959a3f7560a494958d..32f62a4a487903baceab9d45b9cf0ded7c84f269 100644 (file)
@@ -184,6 +184,8 @@ function fbsync_cron($a,$b) {
 
 function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $create_user) {
 
+       require_once("include/oembed.php");
+
        // check if it was already imported
        $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
                intval($uid),
@@ -267,10 +269,15 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr
        $postarray["body"] = $msgdata["body"];
        $postarray["tag"] = $msgdata["tags"];
 
-       if(isset($post->attachment->name) and isset($post->attachment->href))
-               $postarray["body"] .= "\n\n[bookmark=".$post->attachment->href."]".$post->attachment->name."[/bookmark]";
-       elseif (isset($post->attachment->name) AND ($post->attachment->name != ""))
-               $postarray["body"] .= "\n\n[b]" . $post->attachment->name."[/b]";
+       $content = "";
+       $type = "";
+
+       if (isset($post->attachment->name) and isset($post->attachment->href)) {
+               $oembed_data = oembed_fetch_url($post->attachment->href);
+               $type = $oembed_data->type;
+               $content = "[bookmark=".$post->attachment->href."]".$post->attachment->name."[/bookmark]";
+       } elseif (isset($post->attachment->name) AND ($post->attachment->name != ""))
+               $content = "[b]" . $post->attachment->name."[/b]";
 
        $quote = "";
        if(isset($post->attachment->description) and ($post->attachment->fb_object_type != "photo"))
@@ -279,12 +286,13 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr
        if(isset($post->attachment->caption) and ($post->attachment->fb_object_type == "photo"))
                $quote = $post->attachment->caption;
 
-       if ($quote.$post->attachment->href.$postarray["body"] == "")
+       if ($quote.$post->attachment->href.$content.$postarray["body"] == "")
                return;
 
-       if (isset($post->attachment->media) AND !strstr($post->attachment->href, "://www.youtube.com/")
-               AND !strstr($post->attachment->href, "://youtu.be/")
-               AND !strstr($post->attachment->href, ".vimeo.com/")) {
+       if (isset($post->attachment->media) // AND !strstr($post->attachment->href, "://www.youtube.com/")
+               //AND !strstr($post->attachment->href, "://youtu.be/")
+               //AND !strstr($post->attachment->href, ".vimeo.com/"))
+               AND (($type == "") OR ($type == "link"))) {
                foreach ($post->attachment->media AS $media) {
                        //$media->photo->owner = number_format($media->photo->owner, 0, '', '');
                        //if ($media->photo->owner != '') {
@@ -293,21 +301,36 @@ function fbsync_createpost($a, $uid, $self, $contacts, $applications, $post, $cr
                        //      $postarray['author-avatar'] = $contacts[$media->photo->owner]->pic_square;
                        //}
 
+                       if (isset($media->type))
+                               $type = $media->type;
+
                        if(isset($media->src) && isset($media->href) AND ($media->src != "") AND ($media->href != ""))
-                               $postarray["body"] .= "\n".'[url='.$media->href.'][img]'.fpost_cleanpicture($media->src).'[/img][/url]';
+                               $content .= "\n".'[url='.$media->href.'][img]'.fpost_cleanpicture($media->src).'[/img][/url]';
                        else {
                                if (isset($media->src) AND ($media->src != ""))
-                                       $postarray["body"] .= "\n".'[img]'.fpost_cleanpicture($media->src).'[/img]';
+                                       $content .= "\n".'[img]'.fpost_cleanpicture($media->src).'[/img]';
 
                                // if just a link, it may be a wall photo - check
                                if(isset($post->link))
-                                       $postarray["body"] .= fbpost_get_photo($media->href);
+                                       $content .= fbpost_get_photo($media->href);
                        }
                }
        }
 
+       if ($content)
+               $postarray["body"] .= "\n\n";
+
+       if ($type)
+               $postarray["body"] .= "[class=type-".$type."]";
+
+       if ($content)
+               $postarray["body"] .= $content;
+
        if ($quote)
-               $postarray["body"] .= "\n[quote]".$quote."[/quote]";
+               $postarray["body"] .= "\n[quote]".trim($quote)."[/quote]";
+
+       if ($type)
+               $postarray["body"] .= "[/class]";
 
        $postarray["body"] = trim($postarray["body"]);
 
index f143127045bcec8939565c40061907c573911a4d..1c047663fb661557a9e54eba4fa6210b8ab1fc55 100644 (file)
@@ -247,6 +247,7 @@ function fromgplus_cleantext($text) {
 function fromgplus_handleattachments($item, $displaytext) {
        $post = "";
        $quote = "";
+       $type = "";
 
        foreach ($item->object->attachments as $attachment) {
                switch($attachment->objectType) {
@@ -262,7 +263,7 @@ function fromgplus_handleattachments($item, $displaytext) {
                                break;
 
                        case "article":
-                               $post .= "\n\n[bookmark=".$attachment->url."]".fromgplus_html2bbcode($attachment->displayName)."[/bookmark]\n";
+                               $post .= "\n\n[class=type-link][bookmark=".$attachment->url."]".fromgplus_html2bbcode($attachment->displayName)."[/bookmark]\n";
 
                                $images = fromgplus_cleanupgoogleproxy($attachment->fullImage, $attachment->image);
                                //if ($images["preview"] != "")
@@ -276,6 +277,8 @@ function fromgplus_handleattachments($item, $displaytext) {
                                $quote = trim(fromgplus_html2bbcode($attachment->content));
                                if ($quote != "")
                                        $quote = "\n[quote]".$quote."[/quote]";
+
+                               $quote .= "[/class]";
                                break;
 
                        case "photo":
index 6468bba47a397d2e97f58ab00cd1851044d41304..7364547af160bad92e276242007682d4038c4493 100755 (executable)
@@ -1772,25 +1772,35 @@ function twitter_siteinfo($url, $dontincludemedia) {
 
 function twitter_convertmsg($a, $body, $no_tags = false, $dontincludemedia) {
 
+       require_once("include/oembed.php");
+
        $links = preg_match_all("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", $body,$matches,PREG_SET_ORDER);
 
        $footer = "";
        $footerurl = "";
+       $type = "";
 
        if ($links) {
                foreach ($matches AS $match) {
                        $expanded_url = twitter_original_url($match[2]);
 
+                       $oembed_data = oembed_fetch_url($expanded_url);
+
+                       if ($type == "")
+                               $type = $oembed_data->type;
+
                        // To-Do:
                        // Twitlonger
 
-                       if (strstr($expanded_url, "//www.youtube.com/"))
-                               $body = str_replace($match[2], "\n[youtube]".$expanded_url."[/youtube]\n", $body);
-                       elseif (strstr($expanded_url, "//player.vimeo.com/"))
-                               $body = str_replace($match[2], "\n[vimeo]".$expanded_url."[/vimeo]\n", $body);
-                       elseif (strstr($expanded_url, "//twitpic.com/")) // Test
-                               $body = str_replace($match[2], "\n[url]".$expanded_url."[/url]\n", $body);
-                       elseif (strstr($expanded_url, "//instagram.com/"))
+//                     if (strstr($expanded_url, "//www.youtube.com/"))
+//                             $body = str_replace($match[2], "\n[youtube]".$expanded_url."[/youtube]\n", $body);
+//                     elseif (strstr($expanded_url, "//player.vimeo.com/"))
+//                             $body = str_replace($match[2], "\n[vimeo]".$expanded_url."[/vimeo]\n", $body);
+//                     elseif (strstr($expanded_url, "//twitpic.com/")) // Test
+//                             $body = str_replace($match[2], "\n[url]".$expanded_url."[/url]\n", $body);
+//                     elseif (strstr($expanded_url, "//instagram.com/"))
+//                             $body = str_replace($match[2], "\n[url]".$expanded_url."[/url]\n", $body);
+                       if ($oembed_data->type != "link")
                                $body = str_replace($match[2], "\n[url]".$expanded_url."[/url]\n", $body);
                        else {
                                $img_str = fetch_url($expanded_url, true, $redirects, 4);
@@ -1801,9 +1811,11 @@ function twitter_convertmsg($a, $body, $no_tags = false, $dontincludemedia) {
                                unlink($tempfile);
 
                                if (substr($mime, 0, 6) == "image/") {
+                                       $type = "photo";
                                        $body = str_replace($match[2], "[img]".$expanded_url."[/img]", $body);
                                        $dontincludemedia = true;
                                } else {
+                                       $type = $oembed_data->type;
                                        $footerurl = $expanded_url;
                                        $footerlink = "[url=".$expanded_url."]".$expanded_url."[/url]";
 
@@ -1813,7 +1825,7 @@ function twitter_convertmsg($a, $body, $no_tags = false, $dontincludemedia) {
                }
 
                if ($footerurl != "")
-                       $footer = "\n\n".twitter_siteinfo($footerurl, $dontincludemedia);
+                       $footer = twitter_siteinfo($footerurl, $dontincludemedia);
 
                if (($footerlink != "") AND (trim($footer) != "")) {
                        $removedlink = trim(str_replace($footerlink, "", $body));
@@ -1821,7 +1833,7 @@ function twitter_convertmsg($a, $body, $no_tags = false, $dontincludemedia) {
                        if (strstr($body, $removedlink))
                                $body = $removedlink;
 
-                       $body .= $footer;
+                       $body .= "\n\n[class=type-".$type."]".$footer."[/class]";
                }
        }