Skip to content

Commit

Permalink
MDL-68954 repository_flickr_public: Handle when photo cannot be found
Browse files Browse the repository at this point in the history
  • Loading branch information
Mihail Geshoski committed Jun 9, 2020
1 parent bbb7dfc commit e58db3a
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions repository/flickr_public/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@ public function get_listing($path = '', $page = 1) {
* @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;
Expand Down Expand Up @@ -371,16 +373,23 @@ private function build_list($photos, $page = 1, &$ret) {
// 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
);
}
}
Expand Down Expand Up @@ -452,20 +461,26 @@ public function get_link($photoid) {
*/
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'])) {
$source = $this->flickr->buildPhotoURL($info, 'original');
} 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'];
Expand Down

0 comments on commit e58db3a

Please sign in to comment.