File::processNew can return -1 which was not true for empty()

Also, File->getEnclosure() now throws exception if not enough metadata.
This commit is contained in:
Mikael Nordfeldth 2014-06-02 01:26:23 +02:00
parent d596513e39
commit d6f52f5939
5 changed files with 26 additions and 21 deletions

View File

@ -364,14 +364,11 @@ class File extends Managed_DataObject
Event::handle('FileEnclosureMetadata', array($this, &$enclosure));
}
}
return $enclosure;
if (empty($enclosure->mimetype)) {
// This means we don't know what it is, so it can't be an enclosure!
throw new ServerException('Unknown enclosure mimetype, not enough metadata');
}
// quick back-compat hack, since there's still code using this
function isEnclosure()
{
$enclosure = $this->getEnclosure();
return !empty($enclosure);
return $enclosure;
}
/**

View File

@ -384,13 +384,15 @@ class ApiAction extends Action
$twitter_status['attachments'] = array();
foreach ($attachments as $attachment) {
try {
$enclosure_o = $attachment->getEnclosure();
if ($enclosure_o) {
$enclosure = array();
$enclosure['url'] = $enclosure_o->url;
$enclosure['mimetype'] = $enclosure_o->mimetype;
$enclosure['size'] = $enclosure_o->size;
$twitter_status['attachments'][] = $enclosure;
} catch (ServerException $e) {
// There was not enough metadata available
}
}
}
@ -510,13 +512,15 @@ class ApiAction extends Action
$enclosures = array();
foreach ($attachments as $attachment) {
try {
$enclosure_o = $attachment->getEnclosure();
if ($enclosure_o) {
$enclosure = array();
$enclosure['url'] = $enclosure_o->url;
$enclosure['mimetype'] = $enclosure_o->mimetype;
$enclosure['size'] = $enclosure_o->size;
$enclosures[] = $enclosure;
} catch (ServerException $e) {
// There was not enough metadata available
}
}

View File

@ -278,8 +278,8 @@ class Rss10Action extends Action
$attachments = $notice->attachments();
if($attachments){
foreach($attachments as $attachment){
try {
$enclosure = $attachment->getEnclosure();
if ($enclosure) {
$attribs = array('rdf:resource' => $enclosure->url);
if ($enclosure->title) {
$attribs['dc:title'] = $enclosure->title;
@ -294,6 +294,8 @@ class Rss10Action extends Action
$attribs['enc:type'] = $enclosure->mimetype;
}
$this->element('enc:enclosure', $attribs);
} catch (ServerException $e) {
// There was not enough metadata available
}
$this->element('sioc:links_to', array('rdf:resource'=>$attachment->url));
}

View File

@ -989,22 +989,23 @@ function common_linkify($url) {
$f = File::getKV('url', $longurl);
if (empty($f)) {
if (!$f instanceof File) {
if (common_config('attachments', 'process_links')) {
// XXX: this writes to the database. :<
$f = File::processNew($longurl);
}
}
if (!empty($f)) {
if ($f->getEnclosure()) {
if ($f instanceof File) {
try {
$enclosure = $f->getEnclosure();
$is_attachment = true;
$attachment_id = $f->id;
$thumb = File_thumbnail::getKV('file_id', $f->id);
if (!empty($thumb)) {
$has_thumb = true;
}
$has_thumb = ($thumb instanceof File_thumbnail);
} catch (ServerException $e) {
// There was not enough metadata available
}
}

View File

@ -651,9 +651,10 @@ class Facebookclient
foreach($attachments as $attachment)
{
if($enclosure = $attachment->getEnclosure()){
try {
$enclosure = $attachment->getEnclosure();
$fbmedia = $this->getFacebookMedia($enclosure);
}else{
} catch (ServerException $e) {
$fbmedia = $this->getFacebookMedia($attachment);
}
if($fbmedia){