mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2024-12-22 16:50:20 +00:00
Merge pull request #45 from annando/master
New addon "convpath" - small changes and bugfixes for "facebook"
This commit is contained in:
commit
3e1ec6f8b0
5 changed files with 405 additions and 9 deletions
7
convpath/README
Executable file
7
convpath/README
Executable file
|
@ -0,0 +1,7 @@
|
|||
convpath
|
||||
|
||||
This addon converts all internal paths according to the current scheme.
|
||||
|
||||
That means that if a page is called via https then all internal links are also converted into https.
|
||||
|
||||
Same happens when you call your page with http.
|
55
convpath/convpath.php
Normal file
55
convpath/convpath.php
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: Convert Paths
|
||||
* Description: Converts all internal paths according to the current scheme (http or https)
|
||||
* Version: 1.0
|
||||
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
|
||||
*
|
||||
*/
|
||||
|
||||
function convpath_install() {
|
||||
register_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end');
|
||||
register_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header');
|
||||
}
|
||||
|
||||
|
||||
function convpath_uninstall() {
|
||||
unregister_hook('page_end', 'addon/convpath/convpath.php', 'convpath_page_end');
|
||||
unregister_hook('page_header', 'addon/convpath/convpath.php', 'convpath_page_header');
|
||||
}
|
||||
|
||||
function convpath_page_header(&$a, &$o){
|
||||
$o = convpath_convert($o);
|
||||
}
|
||||
|
||||
function convpath_page_end(&$a, &$o){
|
||||
$o = convpath_convert($o);
|
||||
$a->page['aside'] = convpath_convert($a->page['aside']);
|
||||
}
|
||||
|
||||
/*
|
||||
Converts a given path according to the current scheme
|
||||
*/
|
||||
function convpath_convert($path) {
|
||||
global $a;
|
||||
|
||||
if ($path == "")
|
||||
return("");
|
||||
|
||||
$ssl = (substr($a->get_baseurl(), 0, 8) == "https://");
|
||||
|
||||
if ($ssl) {
|
||||
$search = "http://".$a->get_hostname();
|
||||
$replace = "https://".$a->get_hostname();
|
||||
} else {
|
||||
$search = "https://".$a->get_hostname();
|
||||
$replace = "http://".$a->get_hostname();
|
||||
}
|
||||
$searcharr = array("src='".$search, 'src="'.$search);
|
||||
$replacearr = array("src='".$replace, 'src="'.$replace);
|
||||
$path = str_replace($searcharr, $replacearr, $path);
|
||||
|
||||
//$path = str_replace($search, $replace, $path);
|
||||
|
||||
return($path);
|
||||
}
|
|
@ -558,6 +558,9 @@ function facebook_content(&$a) {
|
|||
|
||||
|
||||
function facebook_cron($a,$b) {
|
||||
//del_config('facebook', 'realtime_active');
|
||||
//del_config('facebook', 'realtime_err_mailsent');
|
||||
//del_config('facebook', 'cb_verify_token');
|
||||
|
||||
$last = get_config('facebook','last_poll');
|
||||
|
||||
|
@ -896,7 +899,7 @@ function facebook_post_hook(&$a,&$b) {
|
|||
if(preg_match("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/is",$b['body'],$matches))
|
||||
$image = $matches[3];
|
||||
|
||||
if ($image != '')
|
||||
if ($image == '')
|
||||
if(preg_match("/\[img\](.*?)\[\/img\]/is",$b['body'],$matches))
|
||||
$image = $matches[1];
|
||||
|
||||
|
@ -1006,10 +1009,14 @@ function facebook_post_hook(&$a,&$b) {
|
|||
'access_token' => $fb_token,
|
||||
'message' => $msg
|
||||
);
|
||||
if(isset($image))
|
||||
if(isset($image)) {
|
||||
$postvars['picture'] = $image;
|
||||
if(isset($link))
|
||||
//$postvars['type'] = "photo";
|
||||
}
|
||||
if(isset($link)) {
|
||||
$postvars['link'] = $link;
|
||||
//$postvars['type'] = "link";
|
||||
}
|
||||
if(isset($linkname))
|
||||
$postvars['name'] = $linkname;
|
||||
}
|
||||
|
@ -1026,11 +1033,18 @@ function facebook_post_hook(&$a,&$b) {
|
|||
|
||||
if($reply) {
|
||||
$url = 'https://graph.facebook.com/' . $reply . '/' . (($likes) ? 'likes' : 'comments');
|
||||
}
|
||||
else {
|
||||
} else if (($link != "") or ($image != "") or ($b['title'] == '') or (strlen($msg) < 500)) {
|
||||
$url = 'https://graph.facebook.com/me/feed';
|
||||
if($b['plink'])
|
||||
$postvars['actions'] = '{"name": "' . t('View on Friendica') . '", "link": "' . $b['plink'] . '"}';
|
||||
} else {
|
||||
// if its only a message and a subject and the message is larger than 500 characters then post it as note
|
||||
$postvars = array(
|
||||
'access_token' => $fb_token,
|
||||
'message' => bbcode($b['body']),
|
||||
'subject' => $b['title'],
|
||||
);
|
||||
$url = 'https://graph.facebook.com/me/notes';
|
||||
}
|
||||
|
||||
logger('facebook: post to ' . $url);
|
||||
|
@ -1426,10 +1440,19 @@ function fb_consume_stream($uid,$j,$wall = false) {
|
|||
}
|
||||
}
|
||||
|
||||
if (($datarray['app'] == "Events") and $entry->actions)
|
||||
foreach ($entry->actions as $action)
|
||||
if ($action->name == "View")
|
||||
$datarray['body'] .= " [url=".$action->link."]".$entry->story."[/url]";
|
||||
|
||||
// Just as a test - to see if these are the missing entries
|
||||
//if(trim($datarray['body']) == '')
|
||||
// $datarray['body'] = $entry->story;
|
||||
|
||||
// Adding the "story" text to see if there are useful data in it (testing)
|
||||
//if (($datarray['app'] != "Events") and $entry->story)
|
||||
// $datarray['body'] .= "\n".$entry->story;
|
||||
|
||||
if(trim($datarray['body']) == '') {
|
||||
logger('facebook: empty body '.$entry->id.' '.print_r($entry, true));
|
||||
continue;
|
||||
|
@ -1450,11 +1473,13 @@ function fb_consume_stream($uid,$j,$wall = false) {
|
|||
//if(($datarray['body'] != '') and ($uid == 1))
|
||||
// $datarray['body'] .= "[noparse]".print_r($entry, true)."[/noparse]";
|
||||
|
||||
if ($entry->place->name)
|
||||
$datarray['coord'] = $entry->place->name;
|
||||
else if ($entry->place->location->street or $entry->place->location->city or $entry->place->location->Denmark) {
|
||||
if ($entry->place->name or $entry->place->location->street or
|
||||
$entry->place->location->city or $entry->place->location->Denmark) {
|
||||
$datarray['coord'] = '';
|
||||
if ($entry->place->name)
|
||||
$datarray['coord'] .= $entry->place->name;
|
||||
if ($entry->place->location->street)
|
||||
$datarray['coord'] = $entry->place->location->street;
|
||||
$datarray['coord'] .= $entry->place->location->street;
|
||||
if ($entry->place->location->city)
|
||||
$datarray['coord'] .= " ".$entry->place->location->city;
|
||||
if ($entry->place->location->country)
|
||||
|
|
181
fromgplus/fromgplus.php
Executable file
181
fromgplus/fromgplus.php
Executable file
|
@ -0,0 +1,181 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: From GPlus
|
||||
* Description: Imports posts from a Google+ account and repeats them
|
||||
* Version: 1.0
|
||||
* Author: Michael Vogel <ike@piratenpartei.de>
|
||||
*
|
||||
*/
|
||||
|
||||
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');
|
||||
}
|
||||
|
||||
function fromgplus_uninstall() {
|
||||
unregister_hook('plugin_settings', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings');
|
||||
unregister_hook('plugin_settings_post', 'addon/fromgplus/fromgplus.php', 'fromgplus_addon_settings_post');
|
||||
}
|
||||
|
||||
function fromgplus_addon_settings(&$a,&$s) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$enable_checked = (intval(get_pconfig(local_user(),'fromgplus','enable')) ? ' checked="checked"' : '');
|
||||
$account = get_pconfig(local_user(),'fromgplus','account');
|
||||
|
||||
$s .= '<div class="settings-block">';
|
||||
$s .= '<h3>' . t('Google+ Import Settings').'</h3>';
|
||||
$s .= '<div id="fromgplus-wrapper">';
|
||||
|
||||
$s .= '<label id="fromgplus-enable-label" for="fromgplus-enable">'.t('Enable Google+ Import').'</label>';
|
||||
$s .= '<input id="fromgplus-enable" type="checkbox" name="fromgplus-enable" value="1"'.$enable_checked.' />';
|
||||
$s .= '<div class="clear"></div>';
|
||||
$s .= '<label id="fromgplus-label" for="fromgplus-account">'.t('Google Account ID').' </label>';
|
||||
$s .= '<input id="fromgplus-account" type="text" name="fromgplus-account" value="'.$account.'" />';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="fromgplus-submit" name="fromgplus-submit" class="settings-submit" value="' . t('Submit') . '" /></div>';
|
||||
$s .= '</div>';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
function fromgplus_addon_settings_post(&$a,&$b) {
|
||||
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
if($_POST['fromgplus-submit']) {
|
||||
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);
|
||||
info( t('Google+ Import Settings saved.') . EOL);
|
||||
}
|
||||
}
|
||||
/*
|
||||
function html2bbcode($html) {
|
||||
|
||||
$bbcode = html_entity_decode($html, ENT_QUOTES, 'UTF-8');
|
||||
|
||||
$bbcode = str_replace(array("\n"), array(""), $bbcode);
|
||||
$bbcode = str_replace(array("<b>", "</b>"), array("[b]", "[/b]"), $bbcode);
|
||||
$bbcode = str_replace(array("<i>", "</i>"), array("[i]", "[/i]"), $bbcode);
|
||||
$bbcode = str_replace(array("<s>", "</s>"), array("[s]", "[/s]"), $bbcode);
|
||||
$bbcode = str_replace(array("<br />"), array("\n"), $bbcode);
|
||||
|
||||
$bbcode = trim(strip_tags($bbcode));
|
||||
return($bbcode);
|
||||
}
|
||||
|
||||
function friendicapost($post) {
|
||||
global $friendica;
|
||||
|
||||
$api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]);
|
||||
$ret = $api->updateStatus($post);
|
||||
$api->endSession();
|
||||
}
|
||||
|
||||
function handleattachments($item) {
|
||||
$post = "";
|
||||
|
||||
foreach ($item->object->attachments as $attachment) {
|
||||
switch($attachment->objectType) {
|
||||
case "video":
|
||||
//$post .= "\n\n[url=".$attachment->url."]".
|
||||
// "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
$post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n";
|
||||
|
||||
//if (strpos($attachment->embed->url, "youtube.com"))
|
||||
// $post .= "[youtube]".$attachment->url."[/youtube]\n";
|
||||
//else
|
||||
/// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n";
|
||||
|
||||
///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]";
|
||||
break;
|
||||
|
||||
case "article":
|
||||
//$post .= "\n\n[url=".$attachment->url."]".
|
||||
// "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
$post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n";
|
||||
$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]";
|
||||
break;
|
||||
|
||||
case "photo":
|
||||
//$post .= "\n\n[url=".$attachment->fullImage->url."]".
|
||||
// "[img]".$attachment->fullImage->url."[/img][/url]\n";
|
||||
$post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n";
|
||||
if ($attachment->displayName != "")
|
||||
$post .= html2bbcode($attachment->displayName)."\n";
|
||||
break;
|
||||
|
||||
case "photo-album":
|
||||
$post .= "\n\n[url=".$attachment->url."]".
|
||||
"[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
break;
|
||||
|
||||
default:
|
||||
print_r($attachment);
|
||||
die();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return($post);
|
||||
}
|
||||
|
||||
$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]);
|
||||
$activities = json_decode($result);
|
||||
|
||||
$state = array("lastid"=>'');
|
||||
if (file_exists($statefile))
|
||||
$state = unserialize(file_get_contents($statefile));
|
||||
|
||||
$lastid = "";
|
||||
|
||||
foreach($activities->items as $item) {
|
||||
if ($item->id == $state["lastid"])
|
||||
break;
|
||||
|
||||
if ($lastid == "")
|
||||
$lastid = $item->id;
|
||||
|
||||
switch($item->object->objectType) {
|
||||
case "note":
|
||||
$post = html2bbcode($item->object->content);
|
||||
|
||||
if (is_array($item->object->attachments))
|
||||
$post .= handleattachments($item);
|
||||
friendicapost($post);
|
||||
break;
|
||||
|
||||
case "activity":
|
||||
$post = html2bbcode($item->annotation)."\n";
|
||||
//$post .= html2bbcode("♲ ");
|
||||
$post .= html2bbcode("♻ ");
|
||||
$post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]";
|
||||
$post .= " \n";
|
||||
//$post .= "[quote]";
|
||||
|
||||
$post .= html2bbcode($item->object->content);
|
||||
|
||||
if (is_array($item->object->attachments))
|
||||
$post .= "\n".trim(handleattachments($item));
|
||||
|
||||
//$post .= "[/quote]";
|
||||
|
||||
friendicapost($post);
|
||||
break;
|
||||
|
||||
default:
|
||||
print_r($item);
|
||||
die();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($lastid != "") {
|
||||
$state['lastid'] = $lastid;
|
||||
file_put_contents($statefile, serialize($state));
|
||||
}
|
||||
*/
|
128
fromgplus/tofriendica.php
Normal file
128
fromgplus/tofriendica.php
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
require_once("statusnet.lib.php");
|
||||
include("config.php");
|
||||
|
||||
function html2bbcode($html) {
|
||||
|
||||
$bbcode = html_entity_decode($html, ENT_QUOTES, 'UTF-8');
|
||||
|
||||
$bbcode = str_replace(array("\n"), array(""), $bbcode);
|
||||
$bbcode = str_replace(array("<b>", "</b>"), array("[b]", "[/b]"), $bbcode);
|
||||
$bbcode = str_replace(array("<i>", "</i>"), array("[i]", "[/i]"), $bbcode);
|
||||
$bbcode = str_replace(array("<s>", "</s>"), array("[s]", "[/s]"), $bbcode);
|
||||
$bbcode = str_replace(array("<br />"), array("\n"), $bbcode);
|
||||
|
||||
$bbcode = trim(strip_tags($bbcode));
|
||||
return($bbcode);
|
||||
}
|
||||
|
||||
function friendicapost($post) {
|
||||
global $friendica;
|
||||
|
||||
$api = new Statusnet($friendica["user"], $friendica["pw"], "GooglePlus", $friendica["server"]);
|
||||
$ret = $api->updateStatus($post);
|
||||
$api->endSession();
|
||||
}
|
||||
|
||||
function handleattachments($item) {
|
||||
$post = "";
|
||||
|
||||
foreach ($item->object->attachments as $attachment) {
|
||||
switch($attachment->objectType) {
|
||||
case "video":
|
||||
//$post .= "\n\n[url=".$attachment->url."]".
|
||||
// "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
$post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n";
|
||||
|
||||
//if (strpos($attachment->embed->url, "youtube.com"))
|
||||
// $post .= "[youtube]".$attachment->url."[/youtube]\n";
|
||||
//else
|
||||
/// $post .= "[url=".$attachment->url."][img]".$attachment->image->url."[/img][/url]\n";
|
||||
|
||||
///$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]";
|
||||
break;
|
||||
|
||||
case "article":
|
||||
//$post .= "\n\n[url=".$attachment->url."]".
|
||||
// "[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
$post .= "\n\n[bookmark=".$attachment->url."]".html2bbcode($attachment->displayName)."[/bookmark]\n";
|
||||
$post .= "[quote]".trim(html2bbcode($attachment->content))."[/quote]";
|
||||
break;
|
||||
|
||||
case "photo":
|
||||
//$post .= "\n\n[url=".$attachment->fullImage->url."]".
|
||||
// "[img]".$attachment->fullImage->url."[/img][/url]\n";
|
||||
$post .= "\n\n[img]".$attachment->fullImage->url."[/img]\n";
|
||||
if ($attachment->displayName != "")
|
||||
$post .= html2bbcode($attachment->displayName)."\n";
|
||||
break;
|
||||
|
||||
case "photo-album":
|
||||
$post .= "\n\n[url=".$attachment->url."]".
|
||||
"[size=large][b]".html2bbcode($attachment->displayName)."[/b][/size][/url]\n";
|
||||
break;
|
||||
|
||||
default:
|
||||
print_r($attachment);
|
||||
die();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return($post);
|
||||
}
|
||||
|
||||
$result = file_get_contents("https://www.googleapis.com/plus/v1/people/".$google["id"]."/activities/public?alt=json&pp=1&key=".$google["key"]."&maxResults=".$google["maxfetch"]);
|
||||
$activities = json_decode($result);
|
||||
|
||||
$state = array("lastid"=>'');
|
||||
if (file_exists($statefile))
|
||||
$state = unserialize(file_get_contents($statefile));
|
||||
|
||||
$lastid = "";
|
||||
|
||||
foreach($activities->items as $item) {
|
||||
if ($item->id == $state["lastid"])
|
||||
break;
|
||||
|
||||
if ($lastid == "")
|
||||
$lastid = $item->id;
|
||||
|
||||
switch($item->object->objectType) {
|
||||
case "note":
|
||||
$post = html2bbcode($item->object->content);
|
||||
|
||||
if (is_array($item->object->attachments))
|
||||
$post .= handleattachments($item);
|
||||
friendicapost($post);
|
||||
break;
|
||||
|
||||
case "activity":
|
||||
$post = html2bbcode($item->annotation)."\n";
|
||||
//$post .= html2bbcode("♲ ");
|
||||
$post .= html2bbcode("♻ ");
|
||||
$post .= "[url=".$item->object->actor->url."]".$item->object->actor->displayName."[/url]";
|
||||
$post .= " \n";
|
||||
//$post .= "[quote]";
|
||||
|
||||
$post .= html2bbcode($item->object->content);
|
||||
|
||||
if (is_array($item->object->attachments))
|
||||
$post .= "\n".trim(handleattachments($item));
|
||||
|
||||
//$post .= "[/quote]";
|
||||
|
||||
friendicapost($post);
|
||||
break;
|
||||
|
||||
default:
|
||||
print_r($item);
|
||||
die();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($lastid != "") {
|
||||
$state['lastid'] = $lastid;
|
||||
file_put_contents($statefile, serialize($state));
|
||||
}
|
||||
?>
|
Loading…
Reference in a new issue