Index: flickr_sets.info =================================================================== RCS file: flickr_sets.info diff -N flickr_sets.info --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ flickr_sets.info 24 Jan 2007 19:06:58 -0000 @@ -0,0 +1,6 @@ +; $Id$ +name = Flickr sets +description = Add sets capability to Flickr module +version = "$Name: $" +dependencies = flickr +package = Flickr Index: flickr_sets.module =================================================================== RCS file: flickr_sets.module diff -N flickr_sets.module --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ flickr_sets.module 24 Jan 2007 19:06:59 -0000 @@ -0,0 +1,172 @@ + 0) { + $account = user_load(array('uid' => arg(1))); + if ($account !== FALSE && isset($account->flickr['nsid'])) { + $nsid = $account->flickr['nsid']; + $admin_access = user_access('administer flickr'); + // let a user view their own account or all if they have permission + $view_access |= (user_access('view own flickr photos') && ($user->uid == arg(1))) || + user_access('view all flickr photos'); + // Only admins can view blocked accounts + $view_access &= $account->status || $admin_access; + + //flickr user set page + $items[] = array( + 'path' => 'flickr/'. arg(1) .'/sets', + 'title' => t("sets"), + 'type' => MENU_LOCAL_TASK, + 'callback' => 'flickr_sets_photosets', + 'callback arguments' => array(arg(1), $nsid), + 'access' => $view_access, + ); + $items[] = array( + 'path' => 'flickr/'. arg(1) .'/sets/list', + 'title' => t("list"), + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'access' => $view_access, + ); + if (arg(3)!=NULL && arg(2)=='sets') { + $set_info = flickr_photoset_get_info(arg(3)); + if (!flickr_error($set_info)) { + $items[] = array( + 'path' => 'flickr/'. arg(1) .'/sets/' . arg(3), + 'title' => t("set: @setname", array('@setname'=> $set_info['photoset']['title']['_content'])), + 'type' => MENU_LOCAL_TASK, + 'callback' => 'flickr_sets_photoset', + 'callback arguments' => array(arg(1), $nsid, arg(3), $set_info), + 'access' => $view_access, + ); + } + } + } + elseif ($account !== FALSE && !isset($account->flickr['nsid'])) { + drupal_set_message(t('%user does not have a Flickr account', array('%user'=>$account->name)), 'error'); + return ''; + } + } + } + + return $items; +} + + + +function flickr_sets_photosets($uid, $nsid) { + drupal_add_css(drupal_get_path('module', 'flickr') .'/flickr.css'); + + global $pager_page_array, $pager_total,$pager_total_items, $user; + //set this to something else if you want multiple pagers + $element = 0; + $pager_page_array[$element] = $_GET['page'] ? $_GET['page'] : ''; + + $set_response = flickr_photoset_get_list($nsid); + + if (flickr_error($set_response)) { + flickr_set_error($set_response); + return ''; + } + if (!isset($set_response['photosets']) || empty($set_response['photosets'])) { + drupal_set_message(t('%user has no photosets.', array('%user', $user->name))); + return ''; + } + + //set pager information we just acquired + $pager_total[$element] = ceil(count($set_response['photosets'])/variable_get('flickr_photosets_per_page', 20)); + $pager_total_items[$element] = count($set_response['photosets']); + + return theme('flickr_sets_photosets', $uid, $nsid, $set_response); +} + +function flickr_sets_photoset($uid, $nsid, $set_id, $set_info) { + drupal_add_css(drupal_get_path('module', 'flickr') .'/flickr.css'); + + //make sure that $nsid is the real owner of $set_id + if ($nsid != $set_info['photoset']['owner']) { + drupal_goto('flickr/'. $uid . '/sets'); + } + + //display photos + global $pager_page_array, $pager_total,$pager_total_items, $user; + //set this to something else if you want multiple pagers + $element = 0; + $pager_page_array[$element] = $_GET['page'] ? $_GET['page'] : ''; + + $per_page = variable_get('flickr_photos_per_page', 20); + + //request set photos + $set_response = flickr_request('flickr.photosets.getPhotos', + array( + 'photoset_id'=>$set_id, + 'page' => $pager_page_array[$element]+1, + 'per_page' => variable_get('flickr_photos_per_page', 20), + )); + + if (flickr_error($set_response)) { + flickr_set_error($set_response); + return ''; + } + elseif (!isset($set_response['photoset']['photo']) || empty($set_response['photoset']['photo'])) { + var_dump($set_response); + drupal_set_message('This photoset is empty'); + return ''; + } + + //set pager information we just acquired + $pager_total_items[$element] = $set_response['photoset']['total']; + $pager_total[$element] = $set_response['photoset']['pages']; + + return theme('flickr_sets_photoset', $uid, $per_page, $set_response, $set_info); +} + + +function theme_flickr_sets_photosets($uid, $nsid, $photosets){ + $output = + theme('pager', NULL, variable_get('flickr_photosets_per_page', 20)); + $output .= "