Index: openacs-4/packages/photo-album/www/latest-photo-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/latest-photo-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/latest-photo-postgresql.xql 19 Jan 2006 03:52:55 -0000 1.1.2.1 @@ -0,0 +1,81 @@ + + + + postgresql + 7.2 + + + + + select ci.item_id as photo_id, + (select pp.caption + from pa_photos pp + where pp.pa_photo_id = ci.live_revision) as caption, + i.image_id as thumb_path, + i.height as thumb_height, + i.width as thumb_width, + latest() as seed + from cr_items ci, cr_items ci2, cr_child_rels ccr2, images i + where $size_clause + and ci.item_id = ccr2.parent_id + and ccr2.child_id = ci2.item_id + and ci2.live_revision = i.image_id + and ci.live_revision is not null + $photo_clause + order by seed limit 1 + + + + + + select site_node__url(sn.node_id) + from site_nodes sn + inner join pa_package_root_folder_map pm on (sn.object_id = pm.package_id) + inner join cr_items parent on (pm.folder_id = parent.item_id) + inner join cr_items child on (parent.tree_sortkey <= child.tree_sortkey) + where child.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey) + and tree_level(parent.tree_sortkey) = 2 + and child.item_id = :photo_id + + + + + + select ci.item_id as photo_id, + (select pp.caption + from pa_photos pp + where pp.pa_photo_id = ci.live_revision) as caption, + i.image_id as thumb_path, + i.height as thumb_height, + i.width as thumb_width + from cr_items ci, cr_items ci2, cr_items root, cr_child_rels ccr2, images i + where $size_clause + and ci.item_id = ccr2.parent_id + and ccr2.child_id = ci2.item_id + and ci2.live_revision = i.image_id + and ci.live_revision is not null + and ci.tree_sortkey between root.tree_sortkey and tree_right(root.tree_sortkey) + and root.item_id = :root_folder_id + order by ci.item_id desc limit 1 + + + + + + and ci.item_id = :photo_id + + + + + + ccr2.relation_tag = 'viewer' + + + + + + ccr2.relation_tag = 'thumb' + + + + Index: openacs-4/packages/photo-album/www/latest-photo.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/latest-photo.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/latest-photo.adp 19 Jan 2006 03:52:55 -0000 1.1.2.1 @@ -0,0 +1,4 @@ + + + + \ No newline at end of file Index: openacs-4/packages/photo-album/www/latest-photo.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/photo-album/www/latest-photo.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/photo-album/www/latest-photo.tcl 19 Jan 2006 03:52:55 -0000 1.1.2.1 @@ -0,0 +1,115 @@ +# Includable template pair that can be used to show the latest photo +# from a photo-album instance or from all instances on the server. + +# written by Jarkko Laine (jarkko.m.laine@tut.fi) +# @author: Bart Teeuwisse (bart.teeuwisse@thecodemill.biz) +# @author: Jade Rubick (jade@rubick.com) + +# Usage: +# +# or +# where 1473 +# is the package_id of your photo-album instance. +# or +# where 9912 +# is the photo_id of a photo in one of your albums. +# or +# where 2983 +# is the album_id of an album in one of your packages. +# It is not possible to give package_id and album_id at the same time (as it would not make sense anyway). + +# If neither package_id, album_id nor url is defined, the latest photo is taken from all photos +# in the system. + +# Expects: +# photo_id:optional +# package_id:optional +# url:optional +# size:optional (thumb, viewer) (thumb is default) + +# Use the position specified by the caller, default is left. + +if {![info exists latest:position]} { + set latest:position left +} + +# If the caller specified a URL, then we gather the package_id from that URL + +if {[info exists url]} { + + # Let's add the leading/tailing slashes so the url's will always work + + set url [string trim $url] + if {![string equal [string index $url 0] "/"]} { + set url "/$url" + } + if {![string equal [string index $url end] "/"]} { + set url "$url/" + } + + array set pa_site_node [site_node::get \ + -url $url] + set package_id $pa_site_node(object_id) +} + +# Determain the display size of the photo. + +if {![info exists size]} { + set size "thumb" +} +switch -exact $size { + viewer { + + # Get the normal size photo + + set size_clause [db_map size_clause_normal] + } + default { + + # Grab the thumbnail + + set size_clause [db_map size_clause_thumb] + } +} + +# If they supplied neither url nor package_id, the latest photo +# is shuffled across all the photos in the system. + +if {[info exists album_id]} { + set photo_clause "and ci.parent_id = :album_id" +} else { + set photo_clause "" +} + +if {![info exists package_id]} { + if {[info exists photo_id]} { + # A photo ID was provided. Limit the query to that photo. + + set photo_clause [db_map photo_clause] + } + + if {[catch {db_1row get_latest_photo_all {}} err_msg]} { + ns_log error "No latest photo found: $err_msg" + set found_p 0 + } else { + set found_p 1 + } +} else { + set root_folder_id [pa_get_root_folder $package_id] + if {[catch {db_1row get_latest_photo_folder {}} err_msg]} { + ns_log error "No latest photo found in folder $root_folder_id: $err_msg" + set found_p 0 + } else { + set found_p 1 + } +} + +# if no url or package_id were given, we have to find out +# which package the photo belongs to + +if {![info exists package_id] + && ![info exists url] && $found_p == 1} { + set url [db_string get_url ""] +} + +ad_return_template