File handling changes for better logic
Also prepares for StoreRemoteMediaPlugin, coming up...
This commit is contained in:
parent
5b7deee0cc
commit
80bc7f0e25
|
@ -85,29 +85,34 @@ class File extends Managed_DataObject
|
||||||
public static function saveNew(array $redir_data, $given_url)
|
public static function saveNew(array $redir_data, $given_url)
|
||||||
{
|
{
|
||||||
$file = null;
|
$file = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// I don't know why we have to keep doing this but we run a last check to avoid
|
// I don't know why we have to keep doing this but we run a last check to avoid
|
||||||
// uniqueness bugs.
|
// uniqueness bugs.
|
||||||
$file = File::getByUrl($given_url);
|
$file = File::getByUrl($given_url);
|
||||||
|
return $file;
|
||||||
} catch (NoResultException $e) {
|
} catch (NoResultException $e) {
|
||||||
$file = new File;
|
// We don't have the file's URL since before, so let's continue.
|
||||||
$file->urlhash = self::hashurl($given_url);
|
}
|
||||||
$file->url = $given_url;
|
|
||||||
if (!empty($redir_data['protected'])) $file->protected = $redir_data['protected'];
|
|
||||||
if (!empty($redir_data['title'])) $file->title = $redir_data['title'];
|
|
||||||
if (!empty($redir_data['type'])) $file->mimetype = $redir_data['type'];
|
|
||||||
if (!empty($redir_data['size'])) $file->size = intval($redir_data['size']);
|
|
||||||
if (isset($redir_data['time']) && $redir_data['time'] > 0) $file->date = intval($redir_data['time']);
|
|
||||||
$file_id = $file->insert();
|
|
||||||
|
|
||||||
if ($file_id === false) {
|
if (!Event::handle('StartFileSaveNew', array(&$redir_data, $given_url))) {
|
||||||
throw new ServerException('File/URL metadata could not be saved to the database.');
|
throw new ServerException('File not saved due to an aborted StartFileSaveNew event.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$file = new File;
|
||||||
|
$file->urlhash = self::hashurl($given_url);
|
||||||
|
$file->url = $given_url;
|
||||||
|
if (!empty($redir_data['protected'])) $file->protected = $redir_data['protected'];
|
||||||
|
if (!empty($redir_data['title'])) $file->title = $redir_data['title'];
|
||||||
|
if (!empty($redir_data['type'])) $file->mimetype = $redir_data['type'];
|
||||||
|
if (!empty($redir_data['size'])) $file->size = intval($redir_data['size']);
|
||||||
|
if (isset($redir_data['time']) && $redir_data['time'] > 0) $file->date = intval($redir_data['time']);
|
||||||
|
$file_id = $file->insert();
|
||||||
|
|
||||||
|
if ($file_id === false) {
|
||||||
|
throw new ServerException('File/URL metadata could not be saved to the database.');
|
||||||
}
|
}
|
||||||
|
|
||||||
Event::handle('EndFileSaveNew', array($file, $redir_data, $given_url));
|
Event::handle('EndFileSaveNew', array($file, $redir_data, $given_url));
|
||||||
assert ($file instanceof File);
|
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -476,7 +481,7 @@ class File extends Managed_DataObject
|
||||||
/**
|
/**
|
||||||
* @param string $hashstr String of (preferrably lower case) hexadecimal characters, same as result of 'hash_file(...)'
|
* @param string $hashstr String of (preferrably lower case) hexadecimal characters, same as result of 'hash_file(...)'
|
||||||
*/
|
*/
|
||||||
static public function getByHash($hashstr, $alg=File::FILEHASH_ALG)
|
static public function getByHash($hashstr)
|
||||||
{
|
{
|
||||||
$file = new File();
|
$file = new File();
|
||||||
$file->filehash = strtolower($hashstr);
|
$file->filehash = strtolower($hashstr);
|
||||||
|
|
|
@ -58,7 +58,7 @@ class AttachmentList extends Widget
|
||||||
*
|
*
|
||||||
* @param Notice $notice stream of notices from DB_DataObject
|
* @param Notice $notice stream of notices from DB_DataObject
|
||||||
*/
|
*/
|
||||||
function __construct($notice, $out=null)
|
function __construct(Notice $notice, $out=null)
|
||||||
{
|
{
|
||||||
parent::__construct($out);
|
parent::__construct($out);
|
||||||
$this->notice = $notice;
|
$this->notice = $notice;
|
||||||
|
@ -75,7 +75,6 @@ class AttachmentList extends Widget
|
||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
$attachments = $this->notice->attachments();
|
$attachments = $this->notice->attachments();
|
||||||
$representable = false;
|
|
||||||
foreach ($attachments as $key=>$att) {
|
foreach ($attachments as $key=>$att) {
|
||||||
// Only show attachments representable with a title
|
// Only show attachments representable with a title
|
||||||
if ($att->getTitle() === null) {
|
if ($att->getTitle() === null) {
|
||||||
|
|
|
@ -125,7 +125,7 @@ class ImageFile
|
||||||
$imgPath = null;
|
$imgPath = null;
|
||||||
$media = common_get_mime_media($file->mimetype);
|
$media = common_get_mime_media($file->mimetype);
|
||||||
if (Event::handle('CreateFileImageThumbnailSource', array($file, &$imgPath, $media))) {
|
if (Event::handle('CreateFileImageThumbnailSource', array($file, &$imgPath, $media))) {
|
||||||
if (empty($file->filename)) {
|
if (empty($file->filename) && !file_exists($imgPath)) {
|
||||||
throw new UnsupportedMediaException(_('File without filename could not get a thumbnail source.'));
|
throw new UnsupportedMediaException(_('File without filename could not get a thumbnail source.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1868,6 +1868,7 @@ function common_get_mime_media($type)
|
||||||
return strtolower($tmp[0]);
|
return strtolower($tmp[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get only the mimetype and not additional info (separated from bare mime with semi-colon)
|
||||||
function common_bare_mime($mimetype)
|
function common_bare_mime($mimetype)
|
||||||
{
|
{
|
||||||
$mimetype = mb_strtolower($mimetype);
|
$mimetype = mb_strtolower($mimetype);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user