}
return array("width" => $dest_width, "height" => $dest_height);
}
+
+function store_photo($a, $uid, $imagedata = "", $url = "") {
+ $r = q("SELECT `user`.`nickname`, `user`.`page-flags`, `contact`.`id` FROM `user` INNER JOIN `contact` on `user`.`uid` = `contact`.`uid`
+ WHERE `user`.`uid` = %d AND `user`.`blocked` = 0 and `contact`.`self` = 1 LIMIT 1",
+ intval($uid));
+
+ if(!count($r)) {
+ logger("Can't detect user data for uid ".$uid, LOGGER_DEBUG);
+ return(array());
+ }
+
+ $page_owner_nick = $r[0]['nickname'];
+
+// To-Do:
+// $default_cid = $r[0]['id'];
+// $community_page = (($r[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
+
+ if ((strlen($imagedata) == 0) AND ($url == "")) {
+ logger("No image data and no url provided", LOGGER_DEBUG);
+ return(array());
+ } elseif (strlen($imagedata) == 0) {
+ logger("Uploading picture from ".$url, LOGGER_DEBUG);
+ $imagedata = @file_get_contents($url);
+ }
+
+ $maximagesize = get_config('system','maximagesize');
+
+ if(($maximagesize) && (strlen($imagedata) > $maximagesize)) {
+ logger("Image exceeds size limit of ".$maximagesize, LOGGER_DEBUG);
+ return(array());
+ }
+
+/*
+ $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ",
+ intval($uid)
+ );
+
+ $limit = service_class_fetch($uid,'photo_upload_limit');
+
+ if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) {
+ logger("Image exceeds personal limit of uid ".$uid, LOGGER_DEBUG);
+ return(array());
+ }
+*/
+
+ $tempfile = tempnam(get_temppath(), "cache");
+ file_put_contents($tempfile, $imagedata);
+ $data = getimagesize($tempfile);
+
+ if (!isset($data["mime"])) {
+ unlink($tempfile);
+ logger("File is no picture", LOGGER_DEBUG);
+ return(array());
+ }
+
+ $ph = new Photo($imagedata, $data["mime"]);
+
+ if(!$ph->is_valid()) {
+ unlink($tempfile);
+ logger("Picture is no valid picture", LOGGER_DEBUG);
+ return(array());
+ }
+
+ $ph->orient($tempfile);
+ unlink($tempfile);
+
+ $max_length = get_config('system','max_image_length');
+ if(! $max_length)
+ $max_length = MAX_IMAGE_LENGTH;
+ if($max_length > 0)
+ $ph->scaleImage($max_length);
+
+ $width = $ph->getWidth();
+ $height = $ph->getHeight();
+
+ $hash = photo_new_resource();
+
+ $smallest = 0;
+
+ // Pictures are always public by now
+ //$defperm = '<'.$default_cid.'>';
+ $defperm = "";
+ $visitor = 0;
+
+ $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 0, 0, $defperm);
+
+ if(!$r) {
+ logger("Picture couldn't be stored", LOGGER_DEBUG);
+ return(array());
+ }
+
+ $image = array("page" => $a->get_baseurl().'/photos/'.$page_owner_nick.'/image/'.$hash,
+ "full" => $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt());
+
+ if($width > 800 || $height > 800)
+ $image["large"] = $a->get_baseurl()."/photo/{$hash}-0.".$ph->getExt();
+
+ if($width > 640 || $height > 640) {
+ $ph->scaleImage(640);
+ $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 1, 0, $defperm);
+ if($r)
+ $image["medium"] = $a->get_baseurl()."/photo/{$hash}-1.".$ph->getExt();
+ }
+
+ if($width > 320 || $height > 320) {
+ $ph->scaleImage(320);
+ $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 2, 0, $defperm);
+ if($r)
+ $image["small"] = $a->get_baseurl()."/photo/{$hash}-2.".$ph->getExt();
+ }
+
+ if($width > 160 AND $height > 160) {
+ $x = 0;
+ $y = 0;
+
+ $min = $ph->getWidth();
+ if ($min > 160)
+ $x = ($min - 160) / 2;
+
+ if ($ph->getHeight() < $min) {
+ $min = $ph->getHeight();
+ if ($min > 160)
+ $y = ($min - 160) / 2;
+ }
+
+ $min = 160;
+ $ph->cropImage(160, $x, $y, $min, $min);
+
+ $r = $ph->store($uid, $visitor, $hash, $tempfile, t('Wall Photos'), 3, 0, $defperm);
+ if($r)
+ $image["thumb"] = $a->get_baseurl()."/photo/{$hash}-3.".$ph->getExt();
+ }
+
+ if (isset($image["thumb"]))
+ $image["preview"] = $image["thumb"];
+
+ if (isset($image["small"]))
+ $image["preview"] = $image["small"];
+
+ if (isset($image["medium"]))
+ $image["preview"] = $image["medium"];
+
+ return($image);
+}
$text = $preshare.">> @".$userid_compact.": <br />".$share[3];
break;
case 7:
- $text = $preshare.html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8')." @".$userid_compact." ".$share[3];
+ $text = $preshare.html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8')." @".$userid_compact.": ".$share[3];
break;
case 8:
- $text = $preshare."RT @".$userid_compact." ".$share[3];
+ $text = $preshare."RT @".$userid_compact.": ".$share[3];
break;
default:
$headline = trim($share[1]).'<div class="shared_header">';
}
$gplus = preg_replace("=https?://plus.google.com/(.*)=ism", "$1@plus.google.com", $profile);
- if ($gplus != $profile)
- return($username." (".$gplus.")");
+ if ($gplus != $profile) {
+ if ($compact)
+ return($gplususername." (".$username.")");
+ else
+ return($username." (".$gplus.")");
+ }
$friendica = preg_replace("=https?://(.*)/profile/(.*)=ism", "$2@$1", $profile);
if ($friendica != $profile) {
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
$datarray['wall'] = 0;
- $datarray['network'] = NETWORK_DIASPORA;
+ $datarray['network'] = NETWORK_DIASPORA;
+ $datarray['verb'] = ACTIVITY_POST;
$datarray['guid'] = $guid;
$datarray['uri'] = $datarray['parent-uri'] = $message_id;
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
$datarray['type'] = 'remote-comment';
$datarray['wall'] = $parent_item['wall'];
$datarray['network'] = NETWORK_DIASPORA;
+ $datarray['verb'] = ACTIVITY_POST;
$datarray['gravity'] = GRAVITY_COMMENT;
$datarray['guid'] = $guid;
$datarray['uri'] = $message_id;
if($rawgeo)
$res['coord'] = unxmlify($rawgeo[0]['data']);
+ if ($contact["network"] == NETWORK_FEED)
+ $res['verb'] = ACTIVITY_POST;
$rawverb = $item->get_item_tags(NAMESPACE_ACTIVITY, 'verb');
}
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
- //@curl_setopt($ch, CURLOPT_USERAGENT, "Friendica");
@curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
- curl_setopt($ch, CURLOPT_USERAGENT, "Friendica");
+ curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
if(intval($timeout)) {
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+ //curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+ curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
$header = curl_exec($ch);
$curl_info = @curl_getinfo($ch);
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
$datarray = array();
+ $datarray['verb'] = ACTIVITY_POST;
// $meta = email_msg_meta($mbox,$msg_uid);
// $headers = email_msg_headers($mbox,$msg_uid);
if (count($pictures) == 1) {
// Checking, if the link goes to a picture
$data = parseurl_getsiteinfo($pictures[0][1], true);
-
if ($data["type"] == "photo") {
$post["type"] = "photo";
if (isset($data["images"][0]))
$post["preview"] = $pictures[0][2];
$post["text"] = str_replace($pictures[0][0], "", $body);
} else {
- $img_str = fetch_url($pictures[0][1]);
- $imgdata = get_photo_info($img_str);
+ $imgdata = get_photo_info($pictures[0][1]);
if (substr($imgdata["mime"], 0, 6) == "image/") {
$post["type"] = "photo";
$post["image"] = $pictures[0][1];
if ($a->user['nickname'] != "") {
$ret = array(
- 'href' => $a->get_baseurl()."/display/".$a->user['nickname']."/".$item['id'],
+ //'href' => $a->get_baseurl()."/display/".$a->user['nickname']."/".$item['id'],
+ 'href' => $a->get_baseurl()."/display/".$item['guid'],
+ 'orig' => $a->get_baseurl()."/display/".$item['guid'],
'title' => t('link to source'),
);
- $ret["orig"] = $ret["href"];
if (x($item,'plink'))
$ret["href"] = $item['plink'];
}
- $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
- `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
- `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
- `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
- `user`.`nickname`, `user`.`hidewall`
- FROM `thread` FORCE INDEX (`wall_private_received`)
- INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND `user`.`hidewall` = 0
- INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
- AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
- AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
- INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
- AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
- WHERE `thread`.`visible` = 1 AND `thread`.`deleted` = 0 and `thread`.`moderated` = 0
- AND `thread`.`private` = 0 AND `thread`.`wall` = 1
- ORDER BY `thread`.`received` DESC LIMIT %d, %d ",
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
-
- );
+ $r = community_getitems($a->pager['start'], $a->pager['itemspage']);
if(! count($r)) {
info( t('No results.') . EOL);
$maxpostperauthor = get_config('system','max_author_posts_community_page');
if ($maxpostperauthor != 0) {
+ $count = 1;
$previousauthor = "";
$numposts = 0;
$s = array();
- foreach ($r AS $row=>$item) {
- if ($previousauthor == $item["author-link"])
- ++$numposts;
- else
- $numposts = 0;
+ do {
+ foreach ($r AS $row=>$item) {
+ if ($previousauthor == $item["author-link"])
+ ++$numposts;
+ else
+ $numposts = 0;
- $previousauthor = $item["author-link"];
+ $previousauthor = $item["author-link"];
- if ($numposts < $maxpostperauthor)
- $s[] = $item;
- }
+ if (($numposts < $maxpostperauthor) AND (sizeof($s) < $a->pager['itemspage']))
+ $s[] = $item;
+ }
+ if ((sizeof($s) < $a->pager['itemspage']))
+ $r = community_getitems($a->pager['start'] + ($count * $a->pager['itemspage']), $a->pager['itemspage']);
+
+ } while ((sizeof($s) < $a->pager['itemspage']) AND (++$count < 50) AND (sizeof($r) > 0));
} else
$s = $r;
return $o;
}
+function community_getitems($start, $itemspage) {
+ $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`,
+ `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
+ `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`,
+ `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
+ `user`.`nickname`, `user`.`hidewall`
+ FROM `thread` FORCE INDEX (`wall_private_received`)
+ INNER JOIN `user` ON `user`.`uid` = `thread`.`uid` AND `user`.`hidewall` = 0
+ INNER JOIN `item` ON `item`.`id` = `thread`.`iid`
+ AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = ''
+ AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = ''
+ INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+ AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`self`
+ WHERE `thread`.`visible` = 1 AND `thread`.`deleted` = 0 and `thread`.`moderated` = 0
+ AND `thread`.`private` = 0 AND `thread`.`wall` = 1
+ ORDER BY `thread`.`received` DESC LIMIT %d, %d ",
+ intval($start),
+ intval($itemspage)
+ );
+
+ return($r);
+
+}
return($complete);
}
-function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true) {
+function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
$siteinfo = array();
+ if ($count > 10) {
+ logger("parseurl_getsiteinfo: Endless loop detected for ".$url, LOGGER_DEBUG);
+ return($siteinfo);
+ }
+
$url = trim($url, "'");
$url = trim($url, '"');
$siteinfo["url"] = $url;
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+ //curl_setopt($ch,CURLOPT_USERAGENT,' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0');
+ curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)");
$header = curl_exec($ch);
$curl_info = @curl_getinfo($ch);
if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302") OR ($curl_info['http_code'] == "303") OR ($curl_info['http_code'] == "307"))
AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) {
if ($curl_info['redirect_url'] != "")
- $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url']);
+ $siteinfo = parseurl_getsiteinfo($curl_info['redirect_url'], $no_guessing, $do_oembed, ++$count);
else
- $siteinfo = parseurl_getsiteinfo($curl_info['location']);
+ $siteinfo = parseurl_getsiteinfo($curl_info['location'], $no_guessing, $do_oembed, ++$count);
return($siteinfo);
}
$content = substr($value, 4);
}
if ($content != "") {
- $siteinfo = parseurl_getsiteinfo($content);
+ $siteinfo = parseurl_getsiteinfo($content, $no_guessing, $do_oembed, ++$count);
return($siteinfo);
}
}
}
}
- if (isset($oembed_data) AND ($oembed_data->type == "link")) {
+ if (isset($oembed_data) AND ($oembed_data->type == "link") AND ($siteinfo["type"] != "photo")) {
if (isset($oembed_data->title) AND (trim($oembed_data->title) != ""))
$siteinfo["title"] = $oembed_data->title;
if (isset($oembed_data->description) AND (trim($oembed_data->description) != ""))