From fab2b78542db654056e89a8bfc8c5df7c7ccdd05 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 2 Mar 2013 14:48:42 +0100 Subject: [PATCH] gpluspost: Posting to Google+ using an RSS feed that is read via hootsuite --- communityhome/communityhome.php | 29 ++++--- gpluspost/gpluspost.php | 144 ++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+), 11 deletions(-) create mode 100644 gpluspost/gpluspost.php diff --git a/communityhome/communityhome.php b/communityhome/communityhome.php index ba2af6de..cbcf86a0 100755 --- a/communityhome/communityhome.php +++ b/communityhome/communityhome.php @@ -23,17 +23,24 @@ function communityhome_uninstall() { function communityhome_home(&$a, &$o){ // custom css $a->page['htmlhead'] .= ''; - - $aside = array( - '$tab_1' => t('Login'), - '$tab_2' => t('OpenID'), - '$noOid' => get_config('system','no_openid'), - ); - - // login form - $aside['$login_title'] = t('Login'); - $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); - + + if (!get_config('communityhome','hidelogin')){ + $aside = array( + '$tab_1' => t('Login'), + '$tab_2' => t('OpenID'), + '$noOid' => get_config('system','no_openid'), + ); + + // login form + $aside['$login_title'] = t('Login'); + $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); + } else + $aside = array( + //'$tab_1' => t('Login'), + //'$tab_2' => t('OpenID'), + //'$noOid' => get_config('system','no_openid'), + ); + // last 12 users if (get_config('communityhome','showlastusers')===true){ $aside['$lastusers_title'] = t('Latest users'); diff --git a/gpluspost/gpluspost.php b/gpluspost/gpluspost.php new file mode 100644 index 00000000..4546f8b9 --- /dev/null +++ b/gpluspost/gpluspost.php @@ -0,0 +1,144 @@ + + */ + +function gpluspost_install() { +} + + +function gpluspost_uninstall() { +} + +function gpluspost_module() {} + +function gpluspost_init() { + global $a, $_SERVER; + + $uid = 1; + + if (isset($a->argv[1])) { + $uid = (int)$a->argv[1]; + } + $pid = 317976; + + $contacts = q("SELECT `name` from contact where ID=%d LIMIT 1", intval($uid)); + + header("content-type: application/atom+xml"); + echo ''."\n"; + echo ''."\n"; + echo "\t".'<![CDATA['.$a->config['sitename'].']]>'."\n"; + echo "\t".'\n"; + 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"; + + $pidlist = "262568,262567,269154,271508,270121,273721,314735,312616,311570,308771,308247,306100,295372,291096,290390,290389,283242,283060,280465,273725"; + $pids = explode(",", $pidlist); + + $items = q("SELECT `id` FROM `item` FORCE INDEX (`received`) 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 50"); + //foreach ($items AS $item) + // gpluspost_feeditem($item["id"]); + foreach ($pids AS $pid) + gpluspost_feeditem($pid); + + echo "\n"; + killme(); +} + +function gpluspost_feeditem($pid) { + global $a; + + require_once('include/bbcode.php'); + require_once("include/html2plain.php"); + + $max_char = 140; + + $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) { + // To-Do: + // extract the link from the body if there is exactly one link + + // 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")); + + $html = bbcode($item["body"], false, false); + $msg = trim(html2plain($html, 0, true)); + + // 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); + } + + $msglink = ""; + if ($multiplelinks) + $msglink = $item["plink"]; + else if ($link != "") + $msglink = $link; + else if ($multipleimages) + $msglink = $item["plink"]; + else if ($image != "") + $msglink = $image; + + //if (($msglink == "") and strlen($msg) > $max_char) + if ($msglink == "") + $msglink = $item["plink"]; + + $html = trim(str_replace($msglink, "", $html)); + + // Fetching the title - or the first line + if ($item["title"] != "") + $title = $item["title"]; + else { + $lines = explode("\n", $msg); + $title = $lines[0]; + } + $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".date("c")."\n"; + echo "\t\t".date("c")."\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"; + } +}