summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/File_oembed.php21
-rwxr-xr-xclasses/laconica.ini1
-rw-r--r--db/08to09.sql2
-rw-r--r--db/laconica.sql1
-rw-r--r--db/laconica_pg.sql1
5 files changed, 25 insertions, 1 deletions
diff --git a/classes/File_oembed.php b/classes/File_oembed.php
index bbf112729..94de8e117 100644
--- a/classes/File_oembed.php
+++ b/classes/File_oembed.php
@@ -20,6 +20,7 @@
if (!defined('LACONICA')) { exit(1); }
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
+require_once INSTALLDIR.'/classes/File_redirection.php';
/**
* Table Definition for file_oembed
@@ -34,6 +35,7 @@ class File_oembed extends Memcached_DataObject
public $file_id; // int(4) primary_key not_null
public $version; // varchar(20)
public $type; // varchar(20)
+ public $mimetype; // varchar(50)
public $provider; // varchar(50)
public $provider_url; // varchar(255)
public $width; // int(4)
@@ -93,7 +95,24 @@ class File_oembed extends Memcached_DataObject
if (!empty($data->title)) $file_oembed->title = $data->title;
if (!empty($data->author_name)) $file_oembed->author_name = $data->author_name;
if (!empty($data->author_url)) $file_oembed->author_url = $data->author_url;
- if (!empty($data->url)) $file_oembed->url = $data->url;
+ if (!empty($data->url)){
+ $file_oembed->url = $data->url;
+ $given_url = File_redirection::_canonUrl($file_oembed->url);
+ if (! empty($given_url)){
+ $file = File::staticGet('url', $given_url);
+ if (empty($file)) {
+ $file_redir = File_redirection::staticGet('url', $given_url);
+ if (empty($file_redir)) {
+ $redir_data = File_redirection::where($given_url);
+ $file_oembed->mimetype = $redir_data['type'];
+ } else {
+ $file_id = $file_redir->file_id;
+ }
+ } else {
+ $file_oembed->mimetype=$file->mimetype;
+ }
+ }
+ }
$file_oembed->insert();
if (!empty($data->thumbnail_url)) {
File_thumbnail::saveNew($data, $file_id);
diff --git a/classes/laconica.ini b/classes/laconica.ini
index 7edeeebe4..f58c30f54 100755
--- a/classes/laconica.ini
+++ b/classes/laconica.ini
@@ -98,6 +98,7 @@ id = N
file_id = 129
version = 2
type = 2
+mimetype = 2
provider = 2
provider_url = 2
width = 1
diff --git a/db/08to09.sql b/db/08to09.sql
index 4d1830611..223a99fa3 100644
--- a/db/08to09.sql
+++ b/db/08to09.sql
@@ -10,3 +10,5 @@ alter table profile
alter table user_group
modify column description text comment 'group description';
+alter table file_oembed
+ add column mimetype varchar(50) comment 'mime type of resource';
diff --git a/db/laconica.sql b/db/laconica.sql
index 1662ef7a8..fe93f26ac 100644
--- a/db/laconica.sql
+++ b/db/laconica.sql
@@ -450,6 +450,7 @@ create table file_oembed (
file_id integer primary key comment 'oEmbed for that URL/file' references file (id),
version varchar(20) comment 'oEmbed spec. version',
type varchar(20) comment 'oEmbed type: photo, video, link, rich',
+ mimetype varchar(50) comment 'mime type of resource',
provider varchar(50) comment 'name of this oEmbed provider',
provider_url varchar(255) comment 'URL of this oEmbed provider',
width integer comment 'width of oEmbed resource when available',
diff --git a/db/laconica_pg.sql b/db/laconica_pg.sql
index b5626d3f4..5b4d0485a 100644
--- a/db/laconica_pg.sql
+++ b/db/laconica_pg.sql
@@ -465,6 +465,7 @@ create table file_oembed (
file_id bigint default nextval('file_oembed_seq') primary key /* comment 'unique identifier' */,
version varchar(20),
type varchar(20),
+ mimetype varchar(50),
provider varchar(50),
provider_url varchar(255),
width integer,