Bug 358330 - "Make Flickr API interaction less painful" [p=ryan@ryanflint.com]

This commit is contained in:
reed%reedloden.com 2006-10-27 14:26:53 +00:00
Родитель dea869cf01
Коммит da09919c1e
2 изменённых файлов: 43 добавлений и 23 удалений

Просмотреть файл

@ -76,12 +76,12 @@ class FeedsController extends AppController {
$party = $this->Feed->findById($id);
$this->set('party', $party);
if (FLICKR_API_KEY != null && !$party['Party']['canceled']) {
if (FLICKR_API_KEY != null && !$party['Feeds']['canceled']) {
if ($party['Feeds']['useflickr'] == 1) {
$data = array('type' => 'flickr', 'userid' => $party['Feeds']['flickrid'], 'randomize' => false);
$flickr = new webServices($data);
$photoset = $flickr->fetchPhotos(FLICKR_TAG_PREFIX.$id, 10, (($party['Feeds']['flickrperms']) ? false : true));
$this->set('flickr', $photoset, 0, 9);
$this->set('flickr', $photoset);
}
}
}

46
webtools/partytool/vendors/webServices.php поставляемый
Просмотреть файл

@ -82,24 +82,37 @@ class webServices {
}
function fetchPhotos($tags, $num_results, $single_user) {
$head = "GET /services/rest/?method=flickr.photos.search&api_key=".FLICKR_API_KEY.(($single_user) ? "&user_id=" : '').$this->userid."&tags=".$tags."&per_page=".$num_results." HTTP/1.1\r\n";
$head .= "Host: ".$this->host."\r\n";
$params = array('api_key' => FLICKR_API_KEY,
'method' => 'flickr.photos.search',
'format' => 'php_serial',
'tags' => $tags,
'per_page' => $num_results);
if ($single_user)
$params['user_id'] = $this->userid;
$encoded_params = array();
foreach ($params as $k => $v)
$encoded_params[] = urlencode($k).'='.urlencode($v);
$head = 'GET /services/rest/?'.implode('&', $encoded_params)." HTTP/1.1 \r\n";
$head .= 'Host: '.$this->host."\r\n";
$head .= "Connection: Close\r\n\r\n";
if ($results = $this->fetchResults($head)) {
preg_match_all('/id="(.*)" own/', $results, $ids, PREG_SET_ORDER);
preg_match_all('/owner="(.*)" sec/', $results, $owners, PREG_SET_ORDER);
preg_match_all('/secret="(.*)" ser/', $results, $secrets, PREG_SET_ORDER);
preg_match_all('/server="(.*)" tit/', $results, $servers, PREG_SET_ORDER);
preg_match_all('/title="(.*)" isp/', $results, $titles, PREG_SET_ORDER);
$resp = split("\r\n\r\n", $results);
$data = unserialize($resp[1]);
if ($data['stat'] == 'ok') {
$arr = array();
for ($i = 0; $i < count($ids); $i++) {
$arr[$i] = array('id' => $ids[$i][1],
'owner' => $owners[$i][1],
'secret' => $secrets[$i][1],
'server' => $servers[$i][1],
'title' => $titles[$i][1]);
for ($i = 0; $i < $data['photos']['total']; $i++) {
$p = $data['photos']['photo'][$i];
$arr[$i] = array('id' => $p['id'],
'owner' => $p['owner'],
'secret' => $p['secret'],
'server' => $p['server'],
'farm' => $p['farm'],
'title' => $p['title']);
}
if ($this->randomize) {
@ -109,6 +122,12 @@ class webServices {
return $arr;
}
else
return 0;
}
else
return 0;
}
@ -165,6 +184,7 @@ class webServices {
else {
fwrite($fs, $headers);
stream_set_timeout($fs, 2);
$buffer = null;
while (!feof($fs))