X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=gpluspost%2Fgpluspost.php;fp=gpluspost%2Fgpluspost.php;h=0000000000000000000000000000000000000000;hb=936afb42c4240a9288252ddc272fa78a9baf4caa;hp=c8918e1cc73eb7632f6345407f938b98195a132a;hpb=18784a484b04b5f74e6d4dca516b2dc20cffe953;p=friendica-addons.git diff --git a/gpluspost/gpluspost.php b/gpluspost/gpluspost.php deleted file mode 100644 index c8918e1c..00000000 --- a/gpluspost/gpluspost.php +++ /dev/null @@ -1,576 +0,0 @@ - - * Status: Unsupported - */ - -function gpluspost_install() { - register_hook('post_local', 'addon/gpluspost/gpluspost.php', 'gpluspost_post_local'); - register_hook('notifier_normal', 'addon/gpluspost/gpluspost.php', 'gpluspost_send'); - register_hook('jot_networks', 'addon/gpluspost/gpluspost.php', 'gpluspost_jot_nets'); - register_hook('connector_settings', 'addon/gpluspost/gpluspost.php', 'gpluspost_settings'); - register_hook('connector_settings_post', 'addon/gpluspost/gpluspost.php', 'gpluspost_settings_post'); - register_hook('queue_predeliver', 'addon/gpluspost/gpluspost.php', 'gpluspost_queue_hook'); -} - - -function gpluspost_uninstall() { - unregister_hook('post_local', 'addon/gpluspost/gpluspost.php', 'gpluspost_post_local'); - unregister_hook('notifier_normal', 'addon/gpluspost/gpluspost.php', 'gpluspost_send'); - unregister_hook('jot_networks', 'addon/gpluspost/gpluspost.php', 'gpluspost_jot_nets'); - unregister_hook('connector_settings', 'addon/gpluspost/gpluspost.php', 'gpluspost_settings'); - unregister_hook('connector_settings_post', 'addon/gpluspost/gpluspost.php', 'gpluspost_settings_post'); - unregister_hook('queue_predeliver', 'addon/gpluspost/gpluspost.php', 'gpluspost_queue_hook'); -} - -function gpluspost_jot_nets(&$a,&$b) { - if(! local_user()) - return; - - $post = get_pconfig(local_user(),'gpluspost','post'); - if(intval($post) == 1) { - $defpost = get_pconfig(local_user(),'gpluspost','post_by_default'); - $selected = ((intval($defpost) == 1) ? ' checked="checked" ' : ''); - $b .= '
' - . t('Post to Google+') . '
'; - } -} - -function gpluspost_nextscripts() { - $a = get_app(); - return file_exists($a->get_basepath()."/addon/gpluspost/postToGooglePlus.php"); -} - -function gpluspost_settings(&$a,&$s) { - - if(! local_user()) - return; - - $result = q("SELECT `installed` FROM `addon` WHERE `name` = 'fromgplus' AND `installed`"); - $fromgplus_enabled = count($result) > 0; - - /* Add our stylesheet to the page so we can make our settings look nice */ - - $a->page['htmlhead'] .= '' . "\r\n"; - - $enabled = get_pconfig(local_user(),'gpluspost','post'); - $checked = (($enabled) ? ' checked="checked" ' : ''); - $css = (($enabled) ? '' : '-disabled'); - - $def_enabled = get_pconfig(local_user(),'gpluspost','post_by_default'); - $def_checked = (($def_enabled) ? ' checked="checked" ' : ''); - - $noloop_enabled = get_pconfig(local_user(),'gpluspost','no_loop_prevention'); - $noloop_checked = (($noloop_enabled) ? ' checked="checked" ' : ''); - - $skip_enabled = get_pconfig(local_user(),'gpluspost','skip_without_link'); - $skip_checked = (($skip_enabled) ? ' checked="checked" ' : ''); - - $mirror_enable_checked = (intval(get_pconfig(local_user(),'fromgplus','enable')) ? ' checked="checked"' : ''); - $mirror_account = get_pconfig(local_user(),'fromgplus','account'); - - $username = get_pconfig(local_user(), 'gpluspost', 'username'); - $password = get_pconfig(local_user(), 'gpluspost', 'password'); - $page = get_pconfig(local_user(), 'gpluspost', 'page'); - - if ($fromgplus_enabled) - $title = "Google+ Export/Mirror"; - else - $title = "Google+ Export"; - - $s .= ''; - $s .= '

'. t($title).'

'; - $s .= '
'; - $s .= ''; -} - -function gpluspost_settings_post(&$a,&$b) { - - if(x($_POST,'gpluspost-submit')) { - set_pconfig(local_user(),'gpluspost','post',intval($_POST['gpluspost'])); - set_pconfig(local_user(),'gpluspost','post_by_default',intval($_POST['gpluspost_bydefault'])); - set_pconfig(local_user(),'gpluspost','no_loop_prevention',intval($_POST['gpluspost_noloopprevention'])); - - if (!gpluspost_nextscripts()) { - set_pconfig(local_user(),'gpluspost','skip_without_link',intval($_POST['gpluspost_skipwithoutlink'])); - } else { - set_pconfig(local_user(),'gpluspost','username',trim($_POST['username'])); - set_pconfig(local_user(),'gpluspost','password',trim($_POST['password'])); - set_pconfig(local_user(),'gpluspost','page',trim($_POST['page'])); - } - - $result = q("SELECT `installed` FROM `addon` WHERE `name` = 'fromgplus' AND `installed`"); - if (count($result) > 0) { - set_pconfig(local_user(),'fromgplus','account',trim($_POST['fromgplus-account'])); - $enable = ((x($_POST,'fromgplus-enable')) ? intval($_POST['fromgplus-enable']) : 0); - set_pconfig(local_user(),'fromgplus','enable', $enable); - - if (!$enable) - del_pconfig(local_user(),'fromgplus','lastdate'); - } - } -} - -function gpluspost_post_local(&$a,&$b) { - - if($b['edit']) - return; - - if((! local_user()) || (local_user() != $b['uid'])) - return; - - if($b['private'] || $b['parent']) - return; - - $post = intval(get_pconfig(local_user(),'gpluspost','post')); - - $enable = (($post && x($_REQUEST,'gpluspost_enable')) ? intval($_REQUEST['gpluspost_enable']) : 0); - - if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'gpluspost','post_by_default'))) - $enable = 1; - - if(!$enable) - return; - - if(strlen($b['postopts'])) - $b['postopts'] .= ','; - - $b['postopts'] .= 'gplus'; -} - -function gpluspost_send(&$a,&$b) { - - logger('gpluspost_send: invoked for post '.$b['id']." ".$b['app']); - - if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) - return; - - if(! strstr($b['postopts'],'gplus')) - return; - - if($b['parent'] != $b['id']) - return; - - // if post comes from Google+ don't send it back - if (!get_pconfig($b["uid"],'gpluspost','no_loop_prevention') && (($b['app'] == "Google+") || ($b["extid"] == NETWORK_GPLUS))) - return; - - if (!gpluspost_nextscripts()) { - // Posting via RSS-Feed and Hootsuite - $itemlist = get_pconfig($b["uid"],'gpluspost','itemlist'); - $items = explode(",", $itemlist); - - $i = 0; - $newitems = array($b['id']); - foreach ($items AS $item) - if ($i++ < 9) - $newitems[] = $item; - - $itemlist = implode(",", $newitems); - - logger('gpluspost_send: new itemlist: '.$itemlist." for uid ".$b["uid"]); - - set_pconfig($b["uid"],'gpluspost','itemlist', $itemlist); - - } else { - // Posting via NextScripts - $username = get_pconfig($b['uid'],'gpluspost','username'); - $password = get_pconfig($b['uid'],'gpluspost','password'); - $page = get_pconfig($b['uid'],'gpluspost','page'); - - $success = false; - - if($username && $password) { - require_once("addon/gpluspost/postToGooglePlus.php"); - require_once("include/plaintext.php"); - - $item = $b; - - // Markup for Google+ - if ($item["title"] != "") - $item["title"] = "*".$item["title"]."*"; - - $item["body"] = preg_replace("(\[b\](.*?)\[\/b\])ism",'*$1*',$item["body"]); - $item["body"] = preg_replace("(\[i\](.*?)\[\/i\])ism",'_$1_',$item["body"]); - $item["body"] = preg_replace("(\[s\](.*?)\[\/s\])ism",'-$1-',$item["body"]); - - $data = plaintext($a, $item, 0, false, 9); - - logger('gpluspost_send: data: '.print_r($data, true), LOGGER_DEBUG); - - $loginError = doConnectToGooglePlus2($username, $password); - if (!$loginError) { - if ($data["url"] != "") - $lnk = doGetGoogleUrlInfo2($data["url"]); - elseif ($data["image"] != "") - $lnk = array('img'=>$data["image"]); - else - $lnk = ""; - - // Send a special blank to identify the post through the "fromgplus" addon - $blank = html_entity_decode(" ", ENT_QUOTES, 'UTF-8'); - - doPostToGooglePlus2($data["text"].$blank, $lnk, $page); - - $success = true; - - logger('gpluspost_send: '.$b['uid'].' success', LOGGER_DEBUG); - } else - logger('gpluspost_send: '.$b['uid'].' failed '.$loginError, LOGGER_DEBUG); - - if (!$success) { - logger('gpluspost_send: requeueing '.$b['uid'], LOGGER_DEBUG); - - $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", $b['uid']); - if (count($r)) - $a->contact = $r[0]["id"]; - - $s = serialize(array('url' => $url, 'item' => $b['id'], 'post' => $data)); - require_once('include/queue_fn.php'); - add_to_queue($a->contact,NETWORK_GPLUS,$s); - notice(t('Google+ post failed. Queued for retry.').EOL); - } - } else - logger('gpluspost_send: '.$b['uid'].' missing username or password', LOGGER_DEBUG); - } - -} - -function gpluspost_queue_hook(&$a,&$b) { - - $qi = q("SELECT * FROM `queue` WHERE `network` = '%s'", - dbesc(NETWORK_GPLUS) - ); - if(! count($qi)) - return; - - require_once('include/queue_fn.php'); - - foreach($qi as $x) { - if($x['network'] !== NETWORK_GPLUS) - continue; - - logger('gpluspost_queue: run'); - - $r = q("SELECT `user`.* FROM `user` LEFT JOIN `contact` on `contact`.`uid` = `user`.`uid` - WHERE `contact`.`self` = 1 AND `contact`.`id` = %d LIMIT 1", - intval($x['cid']) - ); - if(! count($r)) - continue; - - $userdata = $r[0]; - - //logger('gpluspost_queue: fetching userdata '.print_r($userdata, true)); - - $username = get_pconfig($userdata['uid'],'gpluspost','username'); - $password = get_pconfig($userdata['uid'],'gpluspost','password'); - $page = get_pconfig($userdata['uid'],'gpluspost','page'); - - $success = false; - - if($username && $password) { - require_once("addon/gpluspost/postToGooglePlus.php"); - - logger('gpluspost_queue: able to post for user '.$username); - - $z = unserialize($x['content']); - - $data = $z['post']; - // $z['url'] - - logger('gpluspost_send: data: '.print_r($data, true), LOGGER_DATA); - - $loginError = doConnectToGooglePlus2($username, $password); - if (!$loginError) { - if ($data["url"] != "") - $lnk = doGetGoogleUrlInfo2($data["url"]); - elseif ($data["image"] != "") - $lnk = array('img'=>$data["image"]); - else - $lnk = ""; - - // Send a special blank to identify the post through the "fromgplus" addon - $blank = html_entity_decode(" ", ENT_QUOTES, 'UTF-8'); - - doPostToGooglePlus2($data["text"].$blank, $lnk, $page); - - logger('gpluspost_queue: send '.$userdata['uid'].' success', LOGGER_DEBUG); - - $success = true; - - remove_queue_item($x['id']); - } else - logger('gpluspost_queue: send '.$userdata['uid'].' failed '.$loginError, LOGGER_DEBUG); - } else - logger('gpluspost_queue: send '.$userdata['uid'].' missing username or password', LOGGER_DEBUG); - - if (!$success) { - logger('gpluspost_queue: delayed'); - update_queue_time($x['id']); - } - } -} - -function gpluspost_module() {} - -function gpluspost_init() { - global $a, $_SERVER; - - $uid = 0; - - if (isset($a->argv[1])) { - $uid = (int)$a->argv[1]; - if ($uid == 0) { - $contacts = q("SELECT `username`, `uid` FROM `user` WHERE `nickname` = '%s' LIMIT 1", dbesc($a->argv[1])); - if ($contacts) { - $uid = $contacts[0]["uid"]; - $nick = $a->argv[1]; - } - } else { - $contacts = q("SELECT `username` FROM `user` WHERE `uid`=%d LIMIT 1", intval($uid)); - $nick = $uid; - } - } - - header("content-type: application/atom+xml"); - echo ''."\n"; - echo ''."\n"; - echo "\t".'<![CDATA['.$a->config['sitename'].']]>'."\n"; - if ($uid != 0) { - echo "\t".'\n"; - echo "\t".''."\n"; - } else - echo "\t".''."\n"; - echo "\t".$a->get_baseurl()."/\n"; - echo "\t".''."\n"; - echo "\t".date("c")."\n"; // To-Do - // Copyright ... - echo "\t".''.$a->config['sitename'].''."\n"; - - if ($uid != 0) { - $itemlist = get_pconfig($uid,'gpluspost','itemlist'); - $items = explode(",", $itemlist); - - foreach ($items AS $item) - gpluspost_feeditem($item, $uid); - } else { - $items = q("SELECT `id` FROM `item` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `item`.`id` = `item`.`parent` ORDER BY `received` DESC LIMIT 10"); - foreach ($items AS $item) - gpluspost_feeditem($item["id"], $uid); - } - echo "\n"; - killme(); -} - -function gpluspost_feeditem($pid, $uid) { - global $a; - - require_once('include/api.php'); - require_once('include/bbcode.php'); - require_once("include/html2plain.php"); - require_once("include/network.php"); - - $skipwithoutlink = get_pconfig($uid,'gpluspost','skip_without_link'); - - $items = q("SELECT `uri`, `plink`, `author-link`, `author-name`, `created`, `edited`, `id`, `title`, `body` from `item` WHERE id=%d", intval($pid)); - foreach ($items AS $item) { - - $item['body'] = bb_CleanPictureLinks($item['body']); - - $item['body'] = bb_remove_share_information($item['body'], true); - - if ($item["title"] != "") - $item['body'] = "*".$item["title"]."*\n\n".$item['body']; - - // Looking for the first image - $image = ''; - if(preg_match("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/is",$item['body'],$matches)) - $image = $matches[3]; - - if ($image == '') - if(preg_match("/\[img\](.*?)\[\/img\]/is",$item['body'],$matches)) - $image = $matches[1]; - - $multipleimages = (strpos($item['body'], "[img") != strrpos($item['body'], "[img")); - - // When saved into the database the content is sent through htmlspecialchars - // That means that we have to decode all image-urls - $image = htmlspecialchars_decode($image); - - $link = ''; - // look for bookmark-bbcode and handle it with priority - if(preg_match("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/is",$item['body'],$matches)) - $link = $matches[1]; - - $multiplelinks = (strpos($item['body'], "[bookmark") != strrpos($item['body'], "[bookmark")); - - $body = $item['body']; - - $body = preg_replace("(\[b\](.*?)\[\/b\])ism",'*$1*',$body); - $body = preg_replace("(\[i\](.*?)\[\/i\])ism",'_$1_',$body); - $body = preg_replace("(\[s\](.*?)\[\/s\])ism",'-$1-',$body); - - // At first convert the text to html - $html = bbcode(api_clean_plain_items($body), false, false, 2); - - // Then convert it to plain text - $msg = trim(html2plain($html, 0, true)); - $msg = html_entity_decode($msg,ENT_QUOTES,'UTF-8'); - - // If there is no bookmark element then take the first link - if ($link == '') { - $links = collecturls($html); - if (sizeof($links) > 0) { - reset($links); - $link = current($links); - } - $multiplelinks = (sizeof($links) > 1); - - if ($multiplelinks) { - $html2 = bbcode($msg, false, false); - $links2 = collecturls($html2); - if (sizeof($links2) > 0) { - reset($links2); - $link = current($links2); - $multiplelinks = (sizeof($links2) > 1); - } - } - } - - $msglink = ""; - if ($multiplelinks) - $msglink = $item["plink"]; - else if ($link != "") - $msglink = $link; - else if ($multipleimages) - $msglink = $item["plink"]; - else if ($image != "") - $msglink = $image; - - if (($msglink == "") && $skipwithoutlink) - continue; - else if ($msglink == "") - $msglink = $item["plink"]; - - // Fetching the title - or the first line - if ($item["title"] != "") - $title = $item["title"]; - else { - $lines = explode("\n", $msg); - $title = $lines[0]; - } - - //if ($image != $msglink) - // $html = trim(str_replace($msglink, "", $html)); - - $title = trim(str_replace($msglink, "", $title)); - - $msglink = original_url($msglink); - - if ($uid == 0) - $title = $item["author-name"].": ".$title; - - $msglink = htmlspecialchars(html_entity_decode($msglink)); - - if (strpos($msg, $msglink) == 0) - $msg .= "\n".$msglink; - - $msg = nl2br($msg); - - $title = str_replace("&", "&", $title); - //$html = str_replace("&", "&", $html); - - echo "\t".''."\n"; - echo "\t\t".'<![CDATA['.$title."]]>\n"; - echo "\t\t".''."\n"; - // - echo "\t\t".$item["uri"]."\n"; - echo "\t\t".date("c", strtotime($item["edited"]))."\n"; - echo "\t\t".date("c", strtotime($item["created"]))."\n"; - echo "\t\t\n\t\t\t\n"; - echo "\t\t\t".$item["author-link"]."\n\t\t\n"; - //echo ''; - echo "\t\t".'\n"; - echo "\t\n"; - } -}