MDL-68954 repository_flickr_public: Handle when photo cannot be found

This commit is contained in:
Mihail Geshoski
2020-06-09 12:34:25 +08:00
parent bbb7dfc62e
commit e58db3a8fd
+30 -15
View File
@@ -340,6 +340,8 @@ class repository_flickr_public extends repository {
* @return array
*/
private function build_list($photos, $page = 1, &$ret) {
global $OUTPUT;
if (!empty($this->nsid)) {
$photos_url = $this->flickr->urls_getUserPhotos($this->nsid);
$ret['manage'] = $photos_url;
@@ -371,16 +373,23 @@ class repository_flickr_public extends repository {
// append file extension
$p['title'] .= $format;
}
// Get the thumbnail source URL.
$thumbnailsource = $this->flickr->buildPhotoURL($p, 'Square');
if (!@getimagesize($thumbnailsource)) {
// Use the file extension icon as a thumbnail if the original thumbnail does not exist to avoid
// displaying broken thumbnails in the repository.
$thumbnailsource = $OUTPUT->image_url(file_extension_icon($p['title'], 90))->out(false);
}
$ret['list'][] = array(
'title'=>$p['title'],
'source'=>$p['id'],
'id'=>$p['id'],
'thumbnail'=>$this->flickr->buildPhotoURL($p, 'Square'),
'date'=>'',
'size'=>'unknown',
'url'=>'http://www.flickr.com/photos/'.$p['owner'].'/'.$p['id'],
'haslicense'=>true,
'hasauthor'=>true
'title' => $p['title'],
'source' => $p['id'],
'id' => $p['id'],
'thumbnail' => $thumbnailsource,
'date' => '',
'size' => 'unknown',
'url' => 'http://www.flickr.com/photos/' . $p['owner'] . '/' . $p['id'],
'haslicense' => true,
'hasauthor' => true
);
}
}
@@ -452,13 +461,8 @@ class repository_flickr_public extends repository {
*/
public function get_file($photoid, $file = '') {
global $CFG;
$info = $this->flickr->photos_getInfo($photoid);
if ($info['owner']['realname']) {
$author = $info['owner']['realname'];
} else {
$author = $info['owner']['username'];
}
$copyright = get_string('author', 'repository') . ': ' . $author;
// If we can read the original secret, it means that we have access to the original picture.
if (isset($info['originalsecret'])) {
@@ -466,6 +470,17 @@ class repository_flickr_public extends repository {
} else {
$source = $this->build_photo_url($photoid);
}
// Make sure the source image exists.
if (!@getimagesize($source)) {
throw new moodle_exception('cannotdownload', 'repository');
}
if ($info['owner']['realname']) {
$author = $info['owner']['realname'];
} else {
$author = $info['owner']['username'];
}
$copyright = get_string('author', 'repository') . ': ' . $author;
$result = parent::get_file($source, $file);
$path = $result['path'];