function api_utils_flickr_ensure_token_perms(&$user, $str_perms) { $perms_map = flickr_api_authtoken_perms_map(); $flickr_user = flickr_users_get_by_user_id($user['id']); if ($perms_map[$flickr_user['token_perms']] != $str_perms) { api_output_error(999, "Insufficient Flickr API permissions"); } return $flickr_user; }
function flickr_geobookmarks_import_for_nsid($nsid, $more = array()) { $flickr_user = flickr_users_get_by_nsid($nsid); $user = users_get_by_id($flickr_user['user_id']); if (!$user) { return not_okay("Not a valid user"); } $flickr_user = flickr_users_get_by_user_id($user['id']); $method = 'flickr.people.geoBookmarks.getList'; $args = array('auth_token' => $flickr_user['auth_token']); $rsp = flickr_api_call($method, $args); if (!$rsp['ok']) { return $rsp; } if (!$rsp['rsp']['bookmarks']['count']) { return okay(); } $bookmarks = array(); # mark everything as private for now since none of that stuff # got turned on before I left, sad face... (20120217/straup) $geo_perms = flickr_geo_permissions_map("string keys"); $geo_private = $geo_perms['private']; foreach ($rsp['rsp']['bookmarks']['bookmark'] as $bm) { $bm['user_id'] = $user['id']; $bm['name'] = $bm['label']; $bm['geocontext'] = $bm['context']; $bm['geoperms'] = $geo_private; $bm['woeid'] = 0; unset($bm['label']); unset($bm['pretty_name']); unset($bm['context']); $geo_method = 'flickr.places.findByLatLon'; $geo_args = array('lat' => $bm['latitude'], 'lon' => $bm['longitude'], 'accuracy' => $bm['accuracy']); $geo_rsp = flickr_api_call($geo_method, $geo_args); if ($geo_rsp['ok']) { # I still miss xpath... $bm['woeid'] = $geo_rsp['rsp']['places']['place'][0]['woeid']; } $bookmarks[] = $bm; } $rsp = flickr_geobookmarks_purge_for_user($user); if (!$rsp['ok']) { return $rsp; } $count = 0; foreach ($bookmarks as $bm) { $rsp = flickr_geobookmarks_add($bm); $count += $rsp['ok']; } return okay(array('count_imported' => $count)); }
function flickr_push_unsubscribe($subscription) { $flickr_user = flickr_users_get_by_user_id($subscription['user_id']); $callback = "{$GLOBALS['cfg']['abs_root_url']}push/{$subscription['secret_url']}/"; $method = 'flickr.push.unsubscribe'; $map = flickr_push_topic_map(); $topic = $map[$subscription['topic_id']]; $args = array('auth_token' => $flickr_user['auth_token'], 'topic' => $topic, 'verify' => 'sync', 'verify_token' => $subscription['verify_token'], 'callback' => $callback); if ($topic_args = $subscription['topic_args']) { if (!is_array($topic_args)) { $topic_args = json_decode($topic_args, "as hash"); } $args = array_merge($args, $topic_args); } $rsp = flickr_api_call($method, $args); return $rsp; }
function flickr_photos_metadata_fetch(&$photo, $inflate = 0) { loadlib("flickr_api"); loadlib("flickr_users"); $flickr_user = flickr_users_get_by_user_id($photo['user_id']); $method = 'flickr.photos.getInfo'; $args = array('photo_id' => $photo['id'], 'auth_token' => $flickr_user['auth_token']); $more = array(); if (!$inflate) { $more['raw'] = 1; } $rsp = flickr_api_call($method, $args, $more); if ($rsp['ok']) { $data = $inflate ? $rsp['rsp'] : $rsp['body']; $rsp = okay(array('data' => $data)); } return $rsp; }
function flickr_urls_path_alias_for_user(&$user) { $flickr_user = flickr_users_get_by_user_id($user['id']); $alias = null; if ($GLOBALS['cfg']['enable_feature_path_alias_redirects']) { loadlib("flickr_users_path_aliases"); $alias = flickr_users_path_aliases_current_for_user($user); } if (!$alias) { # see notes in flickr_users_create_user if (!$flickr_user['path_alias'] || $flickr_user['path_alias_taken_by']) { $alias = $flickr_user['nsid']; } else { $alias = $flickr_user['path_alias']; } } return $alias; }
if (!$rsp['ok']) { error_404(); } } else { error_404(); } } echo get_str("challenge"); exit; } # TO DO: check $subscription['topic_id'] here against # the 'flickr_push_enable_*' flags (20111203/straup) $xml = file_get_contents('php://input'); $atom = syndication_atom_parse_str($xml); $user = users_get_by_id($subscription['user_id']); $flickr_user = flickr_users_get_by_user_id($user['id']); $do_push_backups = features_is_enabled("flickr_push_backups"); $is_push_backup = flickr_push_subscriptions_is_push_backup($subscription); $is_backup_user = flickr_backups_is_registered_user($user, "ensure enabled"); $to_backup = array(); $new = 0; foreach ($atom->items as $e) { # for debugging... # $fh = fopen("/tmp/wtf.json", "w"); # fwrite($fh, json_encode($e)); # fclose($fh); # TO DO: check $subscription['topic_id'] here because # at some point if we start to use the push stuff to # track things we're backing we'll need to store the # data in another table (20111203/straup) if (!preg_match("!.*/(\\d+)\$!", $e['id'], $m)) {
function _flickr_photos_import_flickr_meta_urls($photo, $more = array()) { $req = array(); # basic photo info if ($more['auth_token']) { $auth_token = $more['auth_token']; } else { $flickr_user = flickr_users_get_by_user_id($photo['user_id']); $auth_token = $flickr_user['auth_token']; } $method = 'flickr.photos.getInfo'; $args = array('auth_token' => $auth_token, 'photo_id' => $photo['id']); list($url, $args) = flickr_api_call_build($method, $args); $api_call = $url . "?" . http_build_query($args); $req['info'] = $api_call; # fetch comments, which is to say check to see if there # are any new photos worth storing $fetch_comments = 1; if ($more['min_date']) { $method = 'flickr.photos.comments.getList'; $args = array('photo_id' => $photo['id'], 'min_comment_date' => $more['min_date']); $rsp = flickr_api_call($method, $args); if ($rsp['ok'] && !isset($rsp['rsp']['comments']['comment'])) { $fetch_comments = 0; } } if ($fetch_comments) { $method = 'flickr.photos.comments.getList'; $args = array('photo_id' => $photo['id']); list($url, $args) = flickr_api_call_build($method, $args); $api_call = $url . "?" . http_build_query($args); $req['comments'] = $api_call; } return $req; }
$more = array('viewer_id' => $GLOBALS['cfg']['user']['id']); $bookends = flickr_photos_get_bookends($photo, $more); } } $GLOBALS['smarty']->assign_by_ref("before", $bookends['before']); $GLOBALS['smarty']->assign_by_ref("after", $bookends['after']); # meta, geo, etc. # $meta = flickr_photos_metadata_load($photo); # $GLOBALS['smarty']->assign_by_ref("metadata", $meta['data']); $photo['can_view_geo'] = $photo['hasgeo'] && flickr_geo_permissions_can_view_photo($photo, $GLOBALS['cfg']['user']['id']) ? 1 : 0; if ($photo['can_view_geo']) { $geo_perms_map = flickr_geo_permissions_map(); $photo['str_geoperms'] = $geo_perms_map[$photo['geoperms']]; # NOTE: this has the potential to slow things down if the # Flickr API is being wonky. On the other hand if you're # just running this for yourself (or maybe a handful of # friends) it shouldn't be a big deal. Also, caching. if ($place = flickr_places_get_by_woeid($photo['woeid'])) { $GLOBALS['smarty']->assign_by_ref("place", $place); } } if ($GLOBALS['cfg']['user']['id']) { $perms_map = flickr_api_authtoken_perms_map(); # the currently logged in viewer $_flickr_user = flickr_users_get_by_user_id($GLOBALS['cfg']['user']['id']); $perms = $_flickr_user['token_perms']; $has_write_token = $perms_map[$perms] == 'write' ? 1 : 0; $GLOBALS['smarty']->assign('has_write_token', $has_write_token); } $GLOBALS['smarty']->display("page_flickr_photo.txt"); exit;
function flickr_backups_get_contacts(&$user) { $backups = flickr_backups_for_user($user); if (!isset($backups['contacts'])) { return array('ok' => 0, 'error' => 'backups not registered'); } $backup = $backups['contacts']; $update = array(); $start_time = time(); $rsp = flickr_contacts_purge_contacts($user); if ($rsp['ok']) { $flickr_user = flickr_users_get_by_user_id($user['id']); $rsp = flickr_contacts_import_for_nsid($flickr_user['nsid']); } if ($rsp['ok']) { $update['date_lastupdate'] = $start_time; $update['details'] = "count: {$rsp['count_imported']}"; if (!$backup['date_firstupdate']) { $update['date_firstupdate'] = $update['date_lastupdate']; } } else { $update['details'] = "update failed ({$start_time}) : {$rsp['error']}"; } flickr_backups_update($backup, $update); return $rsp; }
function flickr_backups_get_geobookmarks(&$user) { $backups = flickr_backups_for_user($user); if (!isset($backups['geobookmarks'])) { # return not_okay("backups not registered"); } $backup = $backups['geobookmarks']; $update = array(); $start_time = time(); $flickr_user = flickr_users_get_by_user_id($user['id']); $rsp = flickr_geobookmarks_import_for_nsid($flickr_user['nsid'], $more); if ($rsp['ok']) { $update['date_lastupdate'] = $start_time; $update['details'] = "count: {$rsp['count_imported']}"; if (!$backup['date_firstupdate']) { $update['date_firstupdate'] = $update['date_lastupdate']; } } else { $update['details'] = "update failed ({$start_time}) : {$rsp['error']}"; } flickr_backups_update($backup, $update); return $rsp; }
function flickr_users_get_by_path_alias($alias) { if (!$GLOBALS['cfg']['enable_feature_path_alias_redirects']) { return _flickr_users_get_by_path_alias($alias); } loadlib("flickr_users_path_aliases"); if ($row = flickr_users_path_aliases_get_by_alias($alias)) { return flickr_users_get_by_user_id($row['user_id']); } return null; }