# packages/acs-subsite/www/image.vuh
#
# Subsite handler for images
#
# @author Dave Bauer (dave@thedesignexperience.org)
# @creation-date 2006-08-01
# @cvs-id $Id: file.vuh,v 1.9 2010/10/22 14:31:14 raulm Exp $

if {![regexp {^/([0-9]+)(/(private)/([0-9]+))?(/(.*))?$} [ad_conn path_info] match object_id private_slash private private_parent_id anchor]} {
    ad_return_warning "Invalid object id" [subst {
        The identifier given for this object is invalid.  Please check your url 
        or contact the webmaster if you think it should work.
    }]
    return
}

# check permissions!
if { $private eq "private" } {
    # find if the item has a parent link to the object
    # that is, if the image is used in a content item and you can read the
    # content item, you can read the image regardless of the permissions
    
    set object_to_check $object_id

    if { [application_data_link::link_exists \
              -from_object_id $private_parent_id \
              -to_object_id $object_id] } {
        # if the link does not exist it might be
        # because its a new object
        # that means you uploaded the image so you can see it in the editor while you are working on it
        set object_to_check $private_parent_id
    }

    if { ![permission::permission_p \
               -object_id $object_to_check \
               -privilege "read" \
               -party_id [ad_conn user_id]] } {
        # if you don't have permission to see it, it doesn't exist
        ns_returnnotfound
        ad_script_abort
    }

} else {

    permission::require_permission \
        -privilege "read" \
        -object_id $object_id \
        -party_id [ad_conn user_id]

}

# find a cr_item and serve it

cr_write_content -item_id $object_id
