X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=fromgplus%2Ffromgplus.php;h=1c047663fb661557a9e54eba4fa6210b8ab1fc55;hb=6c9b4c598cf057e0c02533c5e375dd583efd58a8;hp=05cc8ec2344c56402872057774fac43b3bbcfa60;hpb=950154d6554695c89a0477f25ec8f9654bf87c38;p=friendica-addons.git diff --git a/fromgplus/fromgplus.php b/fromgplus/fromgplus.php index 05cc8ec2..1c047663 100644 --- a/fromgplus/fromgplus.php +++ b/fromgplus/fromgplus.php @@ -10,15 +10,19 @@ define('FROMGPLUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes function fromgplus_install() { - register_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); - register_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); + register_hook('connector_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); + register_hook('connector_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); register_hook('cron', 'addon/fromgplus/fromgplus.php', 'fromgplus_cron'); } function fromgplus_uninstall() { + unregister_hook('connector_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); + unregister_hook('connector_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); + unregister_hook('cron', 'addon/fromgplus/fromgplus.php', 'fromgplus_cron'); + + // Old hooks unregister_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings'); unregister_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post'); - unregister_hook('cron', 'addon/fromgplus/fromgplus.php', 'fromgplus_cron'); } function fromgplus_addon_settings(&$a,&$s) { @@ -29,8 +33,14 @@ function fromgplus_addon_settings(&$a,&$s) { $enable_checked = (intval(get_pconfig(local_user(),'fromgplus','enable')) ? ' checked="checked"' : ''); $account = get_pconfig(local_user(),'fromgplus','account'); - $s .= '
'; + $s .= ''; $s .= '

' . t('Google+ Import Settings').'

'; + $s .= '
'; + $s .= ''; $s .= '
'; return; @@ -97,6 +107,10 @@ function fromgplus_post($a, $uid, $source, $body, $location) { //$uid = 2; + // Don't know what it is. Maybe some trash from the mobile client + $trash = html_entity_decode("", ENT_QUOTES, 'UTF-8'); + $body = str_replace($trash, "", $body); + $body = trim($body); if (substr($body, 0, 3) == "[b]") { @@ -109,6 +123,7 @@ function fromgplus_post($a, $uid, $source, $body, $location) { $_SESSION['authenticated'] = true; $_SESSION['uid'] = $uid; + unset($_REQUEST); $_REQUEST['type'] = 'wall'; $_REQUEST['api_source'] = true; @@ -123,11 +138,16 @@ function fromgplus_post($a, $uid, $source, $body, $location) { $_REQUEST['body'] = $body; $_REQUEST['location'] = $location; - logger('fromgplus: posting for user '.$uid); + if (($_REQUEST['title'] == "") AND ($_REQUEST['body'] == "")) { + logger('fromgplus: empty post for user '.$uid." ".print_r($_REQUEST, true)); + return; + } require_once('mod/item.php'); //print_r($_REQUEST); + logger('fromgplus: posting for user '.$uid." ".print_r($_REQUEST, true)); item_post($a); + logger('fromgplus: done for user '.$uid); } function fromgplus_html2bbcode($html) { @@ -212,9 +232,22 @@ function fromgplus_cleanupgoogleproxy($fullImage, $image) { return($cleaned); } -function fromgplus_handleattachments($item) { +function fromgplus_cleantext($text) { + + // Don't know what it is. But it is added to the text. + $trash = html_entity_decode("", ENT_QUOTES, 'UTF-8'); + + $text = strip_tags($text); + $text = html_entity_decode($text); + $text = trim($text); + $text = str_replace(array("\n", "\r", " ", $trash), array("", "", "", ""), $text); + return($text); +} + +function fromgplus_handleattachments($item, $displaytext) { $post = ""; $quote = ""; + $type = ""; foreach ($item->object->attachments as $attachment) { switch($attachment->objectType) { @@ -230,18 +263,22 @@ function fromgplus_handleattachments($item) { 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"] != "") - $post .= "\n[url=".$images["full"]."][img]".$images["preview"]."[/img][/url]\n"; - elseif ($images["full"] != "") + //if ($images["preview"] != "") + // $post .= "\n[url=".$images["full"]."][img]".$images["preview"]."[/img][/url]\n"; + //elseif ($images["full"] != "") + // $post .= "\n[img]".$images["full"]."[/img]\n"; + if ($images["full"] != "") $post .= "\n[img]".$images["full"]."[/img]\n"; //$post .= "[quote]".trim(fromgplus_html2bbcode($attachment->content))."[/quote]"; $quote = trim(fromgplus_html2bbcode($attachment->content)); if ($quote != "") $quote = "\n[quote]".$quote."[/quote]"; + + $quote .= "[/class]"; break; case "photo": @@ -251,7 +288,7 @@ function fromgplus_handleattachments($item) { elseif ($images["full"] != "") $post .= "\n[img]".$images["full"]."[/img]\n"; - if ($attachment->displayName != "") + if (($attachment->displayName != "") AND (fromgplus_cleantext($attachment->displayName) != fromgplus_cleantext($displaytext))) $post .= fromgplus_html2bbcode($attachment->displayName)."\n"; break; @@ -288,6 +325,9 @@ function fromgplus_handleattachments($item) { function fromgplus_fetch($a, $uid) { $maxfetch = 20; + // Special blank to identify postings from the googleplus connector + $blank = html_entity_decode(" ", ENT_QUOTES, 'UTF-8'); + $account = get_pconfig($uid,'fromgplus','account'); $key = get_config('fromgplus','key'); @@ -299,6 +339,8 @@ function fromgplus_fetch($a, $uid) { $initiallastdate = get_pconfig($uid,'fromgplus','lastdate'); + $first_time = ($initiallastdate == ""); + $lastdate = 0; if (!is_array($activities->items)) @@ -313,13 +355,25 @@ function fromgplus_fetch($a, $uid) { if ($lastdate < strtotime($item->published)) $lastdate = strtotime($item->published); + if ($first_time) + continue; + if ($item->access->description == "Public") + + // Loop prevention - ignore postings from HootSuite + if ($item->provider->title == "HootSuite") + continue; + + // Loop prevention through the special blank from the googleplus connector + if (strstr($item->object->content, $blank)) + continue; + switch($item->object->objectType) { case "note": $post = fromgplus_html2bbcode($item->object->content); if (is_array($item->object->attachments)) - $post .= fromgplus_handleattachments($item); + $post .= fromgplus_handleattachments($item, $item->object->content); // geocode, placeName if (isset($item->address)) @@ -327,9 +381,7 @@ function fromgplus_fetch($a, $uid) { else $location = ""; - // Loop prevention - should be made better - if ($item->provider->title != "HootSuite") - fromgplus_post($a, $uid, "Google+", $post, $location); + fromgplus_post($a, $uid, "Google+", $post, $location); //fromgplus_post($a, $uid, $item->provider->title, $post, $location); break; @@ -337,7 +389,7 @@ function fromgplus_fetch($a, $uid) { case "activity": $post = fromgplus_html2bbcode($item->annotation)."\n"; - if (intval(get_config('system','new_share'))) { + if (!intval(get_config('system','old_share'))) { $post .= "[share author='".str_replace("'", "'",$item->object->actor->displayName). "' profile='".$item->object->actor->url. "' avatar='".$item->object->actor->image->url. @@ -346,7 +398,7 @@ function fromgplus_fetch($a, $uid) { $post .= fromgplus_html2bbcode($item->object->content); if (is_array($item->object->attachments)) - $post .= "\n".trim(fromgplus_handleattachments($item)); + $post .= "\n".trim(fromgplus_handleattachments($item, $item->object->content)); $post .= "[/share]"; } else { @@ -355,7 +407,7 @@ function fromgplus_fetch($a, $uid) { $post .= fromgplus_html2bbcode($item->object->content); if (is_array($item->object->attachments)) - $post .= "\n".trim(fromgplus_handleattachments($item)); + $post .= "\n".trim(fromgplus_handleattachments($item, $item->object->content)); } if (isset($item->address)) @@ -363,9 +415,7 @@ function fromgplus_fetch($a, $uid) { else $location = ""; - // Loop prevention - should be made better - if ($item->provider->title != "HootSuite") - fromgplus_post($a, $uid, "Google+", $post, $location); + fromgplus_post($a, $uid, "Google+", $post, $location); //fromgplus_post($a, $uid, $item->provider->title, $post, $location); break; }