+ public static function schemaDef()
+ {
+ return array(
+ 'fields' => array(
+ 'file_id' => array('type' => 'int', 'not null' => true, 'description' => 'thumbnail for what URL/file'),
+ 'url' => array('type' => 'varchar', 'length' => 255, 'description' => 'URL of thumbnail'),
+ 'filename' => array('type' => 'varchar', 'length' => 255, 'description' => 'if stored locally, filename is put here'),
+ 'width' => array('type' => 'int', 'description' => 'width of thumbnail'),
+ 'height' => array('type' => 'int', 'description' => 'height of thumbnail'),
+ 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
+ ),
+ 'primary key' => array('file_id', 'width', 'height'),
+ 'indexes' => array(
+ 'file_thumbnail_file_id_idx' => array('file_id'),
+ ),
+ 'foreign keys' => array(
+ 'file_thumbnail_file_id_fkey' => array('file', array('file_id' => 'id')),
+ )
+ );
+ }
+
+ /**
+ * Save oEmbed-provided thumbnail data
+ *
+ * @param object $data
+ * @param int $file_id
+ */
+ public static function saveNew($data, $file_id) {
+ if (!empty($data->thumbnail_url)) {
+ // Non-photo types such as video will usually
+ // show us a thumbnail, though it's not required.
+ self::saveThumbnail($file_id,
+ $data->thumbnail_url,
+ $data->thumbnail_width,
+ $data->thumbnail_height);
+ } else if ($data->type == 'photo') {
+ // The inline photo URL given should also fit within
+ // our requested thumbnail size, per oEmbed spec.
+ self::saveThumbnail($file_id,
+ $data->url,
+ $data->width,
+ $data->height);
+ }
+ }