/** * Save embedding information for a File, if applicable. * * Normally this event is called through File::saveNew() * * @param File $file The newly inserted File object. * * @return boolean success */ public function onEndFileSaveNew(File $file) { $fo = File_oembed::getKV('file_id', $file->id); if ($fo instanceof File_oembed) { common_log(LOG_WARNING, "Strangely, a File_oembed object exists for new file {$file->id}", __FILE__); return true; } if (isset($file->mimetype) && ('text/html' === substr($file->mimetype, 0, 9) || 'application/xhtml+xml' === substr($file->mimetype, 0, 21))) { try { $oembed_data = File_oembed::_getOembed($file->url); if ($oembed_data === false) { throw new Exception('Did not get oEmbed data from URL'); } } catch (Exception $e) { return true; } File_oembed::saveNew($oembed_data, $file->id); } return true; }
/** * Save embedding information for this file, if applicable. * * Normally this won't need to be called manually, as File::saveNew() * takes care of it. * * @param array $redir_data lookup data eg from File_redirection::where() * @param string $given_url * @return boolean success */ public function saveOembed($redir_data, $given_url) { if (isset($redir_data['type']) && ('text/html' === substr($redir_data['type'], 0, 9) || 'application/xhtml+xml' === substr($redir_data['type'], 0, 21)) && ($oembed_data = File_oembed::_getOembed($given_url))) { $fo = File_oembed::staticGet('file_id', $this->id); if (empty($fo)) { File_oembed::saveNew($oembed_data, $this->id); return true; } else { common_log(LOG_WARNING, "Strangely, a File_oembed object exists for new file {$file_id}", __FILE__); } } return false; }
function saveNew($redir_data, $given_url) { $x = new File(); $x->url = $given_url; if (!empty($redir_data['protected'])) { $x->protected = $redir_data['protected']; } if (!empty($redir_data['title'])) { $x->title = $redir_data['title']; } if (!empty($redir_data['type'])) { $x->mimetype = $redir_data['type']; } if (!empty($redir_data['size'])) { $x->size = intval($redir_data['size']); } if (isset($redir_data['time']) && $redir_data['time'] > 0) { $x->date = intval($redir_data['time']); } $file_id = $x->insert(); if (isset($redir_data['type']) && 'text/html' === substr($redir_data['type'], 0, 9) && ($oembed_data = File_oembed::_getOembed($given_url)) && isset($oembed_data['json'])) { File_oembed::saveNew($oembed_data['json'], $file_id); } return $x; }