return array($content, $options);
}
+function linkback_avatar($profile, $url) {
+ // Ripped from OStatus plugin for now
+ $temp_filename = tempnam(sys_get_temp_dir(), 'linback_avatar');
+ try {
+ $imgData = HTTPClient::quickGet($url);
+ // Make sure it's at least an image file. ImageFile can do the rest.
+ if (false === getimagesizefromstring($imgData)) {
+ return false;
+ }
+ file_put_contents($temp_filename, $imgData);
+ unset($imgData); // No need to carry this in memory.
+
+ $imagefile = new ImageFile(null, $temp_filename);
+ $filename = Avatar::filename($profile->id,
+ image_type_to_extension($imagefile->type),
+ null,
+ common_timestamp());
+ rename($temp_filename, Avatar::path($filename));
+ } catch (Exception $e) {
+ unlink($temp_filename);
+ throw $e;
+ }
+ // @todo FIXME: Hardcoded chmod is lame, but seems to be necessary to
+ // keep from accidentally saving images from command-line (queues)
+ // that can't be read from web server, which causes hard-to-notice
+ // problems later on:
+ //
+ // http://status.net/open-source/issues/2663
+ chmod(Avatar::path($filename), 0644);
+
+ $profile->setOriginal($filename);
+}
+
function linkback_profile($entry, $mf2, $response, $target) {
- if(isset($entry['properties']['author']) && isset($entry['properties']['author'][0]['properties'])) {
- $author = $entry['properties']['author'][0]['properties'];
+ if(isset($entry['author']) && isset($entry['author'][0]['properties'])) {
+ $author = $entry['author'][0]['properties'];
} else {
$author = linkback_hcard($mf2, $response->getEffectiveUrl());
}
$profile->nickname = isset($author['nickname']) ? $author['nickname'][0] : str_replace(' ', '', $author['name'][0]);
$profile->created = common_sql_now();
$profile->insert();
+
+ if($author['photo'] && $author['photo'][0]) {
+ linkback_avatar($profile, $author['photo'][0]);
+ }
}
return array($profile, $author);
try { $dupe->saveKnownTags($options['tags']); } catch (ServerException $ex) {}
try { $dupe->saveKnownUrls($options['urls']); } catch (ServerException $ex) {}
- if($options['reply_to']) { $dupe->reply_to = $options['reply_to']; }
- if($options['repeat_of']) { $dupe->repeat_of = $options['repeat_of']; }
- if($dupe->reply_to != $orig->reply_to || $dupe->repeat_of != $orig->repeat_of) {
- $parent = Notice::getKV('id', $dupe->repost_of ? $dupe->repost_of : $dupe->reply_to);
+ if (isset($options['reply_to'])) {
+ $dupe->reply_to = $options['reply_to'];
+ }
+ if (isset($options['repeat_of'])) {
+ $dupe->repeat_of = $options['repeat_of'];
+ }
+ if ($dupe->reply_to != $orig->reply_to || $dupe->repeat_of != $orig->repeat_of) {
+ $parent = Notice::getKV('id', $dupe->repeat_of ?: $dupe->reply_to);
if($parent instanceof Notice) {
// If we changed the reply_to or repeat_of we might live in a new conversation now
$dupe->conversation = $parent->conversation;