Skip to content
Permalink
Browse files

Merge branch 'MDL-34633-master' of git://github.com/FMCorz/moodle

  • Loading branch information...
stronk7 committed Sep 3, 2012
2 parents 259208e + b2245b7 commit 12e0ecde48f67e10d693a3755447887fa22a4694
Showing with 77 additions and 34 deletions.
  1. +33 −9 repository/flickr/lib.php
  2. +44 −25 repository/flickr_public/lib.php
@@ -37,6 +37,11 @@ class repository_flickr extends repository {
private $flickr;
public $photos;
/**
* Stores sizes of images to prevent multiple API call
*/
static private $sizes = array();
/**
*
* @param int $repositoryid
@@ -228,16 +233,35 @@ public function get_listing($path = '', $page = '') {
* @return string
*/
private function build_photo_url($photoid) {
$result = $this->flickr->photos_getSizes($photoid);
$url = '';
if(!empty($result[4])) {
$url = $result[4]['source'];
} elseif(!empty($result[3])) {
$url = $result[3]['source'];
} elseif(!empty($result[2])) {
$url = $result[2]['source'];
$bestsize = $this->get_best_size($photoid);
if (!isset($bestsize['source'])) {
throw new repository_exception('cannotdownload', 'repository');
}
return $bestsize['source'];
}
/**
* Returns the best size for a photo
*
* @param string $photoid the photo identifier
* @return array of information provided by the API
*/
protected function get_best_size($photoid) {
if (!isset(self::$sizes[$photoid])) {
// Sizes are returned from smallest to greatest.
self::$sizes[$photoid] = $this->flickr->photos_getSizes($photoid);
}
$sizes = self::$sizes[$photoid];
$bestsize = array();
if (is_array($sizes)) {
while ($bestsize = array_pop($sizes)) {
// Make sure the source is set. Exit the loop if found.
if (isset($bestsize['source'])) {
break;
}
}
}
return $url;
return $bestsize;
}
public function get_link($photoid) {
@@ -41,6 +41,11 @@ class repository_flickr_public extends repository {
private $flickr;
public $photos;
/**
* Stores sizes of images to prevent multiple API call
*/
static private $sizes = array();
/**
* constructor method
*
@@ -213,13 +218,14 @@ public function logout() {
public function license4moodle ($license_id) {
$license = array(
'0' => 'allrightsreserved',
'1' => 'cc-nc-sa',
'2' => 'cc-nc',
'3' => 'cc-nc-nd',
'4' => 'cc',
'5' => 'cc-sa',
'6' => 'cc-nd',
'7' => 'allrightsreserved'
'7' => 'other'
);
return $license[$license_id];
}
@@ -402,16 +408,35 @@ public function print_search() {
* @return string
*/
private function build_photo_url($photoid) {
$result = $this->flickr->photos_getSizes($photoid);
$url = '';
if(!empty($result[4])) {
$url = $result[4]['source'];
} elseif(!empty($result[3])) {
$url = $result[3]['source'];
} elseif(!empty($result[2])) {
$url = $result[2]['source'];
$bestsize = $this->get_best_size($photoid);
if (!isset($bestsize['source'])) {
throw new repository_exception('cannotdownload', 'repository');
}
return $bestsize['source'];
}
/**
* Returns the best size for a photo
*
* @param string $photoid the photo identifier
* @return array of information provided by the API
*/
protected function get_best_size($photoid) {
if (!isset(self::$sizes[$photoid])) {
// Sizes are returned from smallest to greatest.
self::$sizes[$photoid] = $this->flickr->photos_getSizes($photoid);
}
$sizes = self::$sizes[$photoid];
$bestsize = array();
if (is_array($sizes)) {
while ($bestsize = array_pop($sizes)) {
// Make sure the source is set. Exit the loop if found.
if (isset($bestsize['source'])) {
break;
}
}
}
return $url;
return $bestsize;
}
public function get_link($photoid) {
@@ -434,29 +459,23 @@ public function get_file($photoid, $file = '') {
$author = $info['owner']['username'];
}
$copyright = get_string('author', 'repository') . ': ' . $author;
$result = $this->flickr->photos_getSizes($photoid);
// download link
$source = '';
// flickr photo page
$url = '';
if (!empty($result[4])) {
$source = $result[4]['source'];
$url = $result[4]['url'];
} elseif(!empty($result[3])) {
$source = $result[3]['source'];
$url = $result[3]['url'];
} elseif(!empty($result[2])) {
$source = $result[2]['source'];
$url = $result[2]['url'];
// 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);
}
$result = parent::get_file($source, $file);
$path = $result['path'];
if (!empty($this->usewatermarks)) {
$img = new moodle_image($path);
$img->watermark($copyright, array(10,10), array('ttf'=>true, 'fontsize'=>12))->saveas($path);
}
return array('path'=>$path, 'url'=>$url, 'author'=>$info['owner']['realname'], 'license'=>$this->license4moodle($info['license']));
return array('path'=>$path, 'author'=>$info['owner']['realname'], 'license'=>$this->license4moodle($info['license']));
}
/**

0 comments on commit 12e0ecd

Please sign in to comment.
You can’t perform that action at this time.