The function to fetch data about a site (via the "parse url" function) is moved from diaspora to another place, since it is multi purpose

This commit is contained in:
Michael Vogel 2014-04-04 10:52:53 +02:00
parent 8bb81ff83d
commit 5d4719f009
2 changed files with 60 additions and 66 deletions

View file

@ -7,47 +7,6 @@ require_once('include/contact_selectors.php');
require_once('include/queue_fn.php'); require_once('include/queue_fn.php');
require_once('include/lock.php'); require_once('include/lock.php');
function diaspora_add_page_info($url) {
require_once("mod/parse_url.php");
$data = parseurl_getsiteinfo($url, true);
logger('diaspora_add_page_info: fetch page info for '.$url.' '.print_r($data, true), LOGGER_DATA);
if (($data["type"] != "link") OR ($data["title"] == $url))
return("");
if (is_string($data["title"]))
$text .= "[bookmark=".$url."]".trim($data["title"])."[/bookmark]";
if (sizeof($data["images"]) > 0) {
$imagedata = $data["images"][0];
$text .= '[img]'.$imagedata["src"].'[/img]';
}
if (is_string($data["text"]))
$text .= "[quote]".$data["text"]."[/quote]";
return("\n[class=type-".$data["type"]."]".$text."[/class]");
}
function diaspora_add_page_info_to_body($body) {
logger('diaspora_add_page_info_to_body: fetch page info for body '.$body, LOGGER_DATA);
$URLSearchString = "^\[\]";
// Adding these spaces is a quick hack due to my problems with regular expressions :)
preg_match("/[^@#]\[url\]([$URLSearchString]*)\[\/url\]/ism", " ".$body, $matches);
if (!$matches)
preg_match("/[^@#]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", " ".$body, $matches);
if ($matches)
$body .= diaspora_add_page_info($matches[1]);
return $body;
}
function diaspora_dispatch_public($msg) { function diaspora_dispatch_public($msg) {
$enabled = intval(get_config('system','diaspora_enabled')); $enabled = intval(get_config('system','diaspora_enabled'));
@ -526,7 +485,7 @@ function diaspora_decode($importer,$xml) {
$base = $dom->env; $base = $dom->env;
elseif($dom->data) elseif($dom->data)
$base = $dom; $base = $dom;
if(! $base) { if(! $base) {
logger('mod-diaspora: unable to locate salmon data in xml '); logger('mod-diaspora: unable to locate salmon data in xml ');
http_status_exit(400); http_status_exit(400);
@ -654,7 +613,7 @@ function diaspora_request($importer,$xml) {
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb']; $arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$arr['verb'] = ACTIVITY_FRIEND; $arr['verb'] = ACTIVITY_FRIEND;
$arr['object-type'] = ACTIVITY_OBJ_PERSON; $arr['object-type'] = ACTIVITY_OBJ_PERSON;
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]'; $A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
$B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'; $B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
$BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]'; $BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
@ -713,7 +672,7 @@ function diaspora_request($importer,$xml) {
1, 1,
2 2
); );
// find the contact record we just created // find the contact record we just created
$contact_record = diaspora_get_contact_by_handle($importer['uid'],$sender_handle); $contact_record = diaspora_get_contact_by_handle($importer['uid'],$sender_handle);
@ -734,7 +693,7 @@ function diaspora_request($importer,$xml) {
if($importer['page-flags'] == PAGE_NORMAL) { if($importer['page-flags'] == PAGE_NORMAL) {
$hash = random_string() . (string) time(); // Generate a confirm_key $hash = random_string() . (string) time(); // Generate a confirm_key
$ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime` ) $ret = q("INSERT INTO `intro` ( `uid`, `contact-id`, `blocked`, `knowyou`, `note`, `hash`, `datetime` )
VALUES ( %d, %d, %d, %d, '%s', '%s', '%s' )", VALUES ( %d, %d, %d, %d, '%s', '%s', '%s' )",
intval($importer['uid']), intval($importer['uid']),
@ -753,7 +712,7 @@ function diaspora_request($importer,$xml) {
require_once('include/Photo.php'); require_once('include/Photo.php');
$photos = import_profile_photo($contact_record['photo'],$importer['uid'],$contact_record['id']); $photos = import_profile_photo($contact_record['photo'],$importer['uid'],$contact_record['id']);
// technically they are sharing with us (CONTACT_IS_SHARING), // technically they are sharing with us (CONTACT_IS_SHARING),
// but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX // but if our page-type is PAGE_COMMUNITY or PAGE_SOAPBOX
// we are going to change the relationship and make them a follower. // we are going to change the relationship and make them a follower.
@ -868,7 +827,7 @@ function diaspora_post($importer,$xml,$msg) {
$body = diaspora2bb($xml->raw_message); $body = diaspora2bb($xml->raw_message);
// Add OEmbed and other information to the body // Add OEmbed and other information to the body
$body = diaspora_add_page_info_to_body($body); $body = add_page_info_to_body($body, false, true);
$datarray = array(); $datarray = array();
@ -1025,7 +984,7 @@ function diaspora_reshare($importer,$xml,$msg) {
$body = scale_external_images($body); $body = scale_external_images($body);
// Add OEmbed and other information to the body // Add OEmbed and other information to the body
$body = diaspora_add_page_info_to_body($body); $body = add_page_info_to_body($body, false, true);
} }
else { else {
// Maybe it is a reshare of a photo that will be delivered at a later time (testing) // Maybe it is a reshare of a photo that will be delivered at a later time (testing)
@ -1445,12 +1404,12 @@ function diaspora_comment($importer,$xml,$msg) {
foreach($myconv as $conv) { foreach($myconv as $conv) {
// now if we find a match, it means we're in this conversation // now if we find a match, it means we're in this conversation
if(! link_compare($conv['author-link'],$importer_url)) if(! link_compare($conv['author-link'],$importer_url))
continue; continue;
require_once('include/enotify.php'); require_once('include/enotify.php');
$conv_parent = $conv['parent']; $conv_parent = $conv['parent'];
notification(array( notification(array(

View file

@ -856,9 +856,10 @@ function get_atom_elements($feed, $item, $contact = array()) {
} }
if (isset($contact["network"]) AND ($contact["network"] == NETWORK_FEED) AND $contact['fetch_further_information']) { if (isset($contact["network"]) AND ($contact["network"] == NETWORK_FEED) AND $contact['fetch_further_information']) {
$res["body"] = $res["title"]."\n\n[class=type-link]".fetch_siteinfo($res['plink'])."[/class]"; $res["body"] = $res["title"].add_page_info($res['plink']);
$res["title"] = ""; $res["title"] = "";
} } elseif (isset($contact["network"]) AND ($contact["network"] == NETWORK_OSTATUS))
$res["body"] = add_page_info_to_body($res["body"]);
$arr = array('feed' => $feed, 'item' => $item, 'result' => $res); $arr = array('feed' => $feed, 'item' => $item, 'result' => $res);
@ -874,29 +875,63 @@ function get_atom_elements($feed, $item, $contact = array()) {
return $res; return $res;
} }
function fetch_siteinfo($url) { function add_page_info($url, $no_photos = false) {
require_once("mod/parse_url.php"); require_once("mod/parse_url.php");
$data = parseurl_getsiteinfo($url, true);
// Fetch site infos - but only from the meta data logger('add_page_info: fetch page info for '.$url.' '.print_r($data, true), LOGGER_DEBUG);
$data = parseurl_getsiteinfo($url, true);
$text = ""; // It maybe is a rich content, but if it does have everything that a link has,
// then treat it that way
if (($data["type"] == "rich") AND is_string($data["title"]) AND
is_string($data["text"]) AND (sizeof($data["images"]) > 0))
$data["type"] = "link";
if (!is_string($data["text"]) AND (sizeof($data["images"]) == 0) AND ($data["title"] == $url)) if ((($data["type"] != "link") AND ($data["type"] != "video") AND ($data["type"] != "photo")) OR ($data["title"] == $url))
return("");
if ($no_photos AND ($data["type"] == "photo"))
return(""); return("");
if (is_string($data["title"])) if (($data["type"] != "photo") AND is_string($data["title"]))
$text .= "[bookmark=".$url."]".trim($data["title"])."[/bookmark]\n"; $text .= "[bookmark=".$url."]".trim($data["title"])."[/bookmark]";
if (sizeof($data["images"]) > 0) { if (($data["type"] != "video") AND (sizeof($data["images"]) > 0)) {
$imagedata = $data["images"][0]; $imagedata = $data["images"][0];
$text .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]' . "\n"; $text .= '[img]'.$imagedata["src"].'[/img]';
}
if (($data["type"] != "photo") AND is_string($data["text"]))
$text .= "[quote]".$data["text"]."[/quote]";
return("\n[class=type-".$data["type"]."]".$text."[/class]");
}
function add_page_info_to_body($body, $texturl = false, $no_photos = false) {
logger('add_page_info_to_body: fetch page info for body '.$body, LOGGER_DEBUG);
$URLSearchString = "^\[\]";
// Adding these spaces is a quick hack due to my problems with regular expressions :)
preg_match("/[^@#]\[url\]([$URLSearchString]*)\[\/url\]/ism", " ".$body, $matches);
if (!$matches)
preg_match("/[^@#]\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", " ".$body, $matches);
// Convert urls without bbcode elements
if (!$matches AND $texturl) {
preg_match("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", " ".$body, $matches);
// Yeah, a hack. I really hate regular expressions :)
if ($matches)
$matches[1] = $matches[2];
} }
if (is_string($data["text"])) if ($matches)
$text .= "[quote]".$data["text"]."[/quote]"; $body .= add_page_info($matches[1], $no_photos);
return($text); return $body;
} }
function encode_rel_links($links) { function encode_rel_links($links) {