richtext::ckeditor5::ckfinder::file_attach (public)

 richtext::ckeditor5::ckfinder::file_attach \
    [ -import_file import_file ] [ -mime_type mime_type ] \
    [ -object_id object_id ] [ -privilege privilege ] \
    [ -user_id user_id ] [ -peeraddr peeraddr ] \
    [ -package_id package_id ] [ -image ]

Defined in packages/richtext-ckeditor5/tcl/ckfinder-procs.tcl

Insert the provided image file to the content repository as a new item and attach the image to the specified object_id via the attachment API. This makes sure that the image will be deleted from the content repository, when the provided object_id is deleted. The user must have at least "read" privileges on the object, but other stronger privileges can be supplied via parameter.

Switches:
-import_file (optional)
-mime_type (optional)
-object_id (optional)
-privilege (optional, defaults to "read")
-user_id (optional)
-peeraddr (optional)
-package_id (optional)
-image (optional, boolean)

Partial Call Graph (max 5 caller/called nodes):
%3 packages/richtext-ckeditor5/tcl/ckfinder-init.tcl packages/richtext-ckeditor5/ tcl/ckfinder-init.tcl richtext::ckeditor5::ckfinder::file_attach richtext::ckeditor5::ckfinder::file_attach packages/richtext-ckeditor5/tcl/ckfinder-init.tcl->richtext::ckeditor5::ckfinder::file_attach attachments::attach attachments::attach (public) richtext::ckeditor5::ckfinder::file_attach->attachments::attach content::revision::new content::revision::new (public) richtext::ckeditor5::ckfinder::file_attach->content::revision::new permission::require_permission permission::require_permission (public) richtext::ckeditor5::ckfinder::file_attach->permission::require_permission richtext::ckeditor5::ckfinder::require_root_folder richtext::ckeditor5::ckfinder::require_root_folder (private) richtext::ckeditor5::ckfinder::file_attach->richtext::ckeditor5::ckfinder::require_root_folder

Testcases:
No testcase defined.
Source code:
        permission::require_permission  -party_id $user_id  -object_id $object_id  -privilege $privilege

        if {$image_p} {
            #
            # Check if we can handle the mime type. Currently, only the
            # following four mime types are supported, since these are
            # supported by "ns_imgsize", which is used to determine the
            # dimensions of the image.
            #
            switch -- $mime_type {
                image/jpg -
                image/jpeg -
                image/gif -
                image/png {
                    set ext .[lindex [split $mime_type /] 1]
                    lassign [ns_imgsize $import_file] width height
                    set success 1
                }
                default {
                    ns_log warning "image_attach: can't handle image type '$mime_type'"
                    return [list  success 0  errMsg "can't handle image type '$mime_type'"]
                }
            }
        } else {
            set width 0
            set height 0
            set success 1
        }
        #
        # Create a new item without child_rels
        #
        set name $object_id-[clock clicks -microseconds]
        set item_id [::xo::db::sql::content_item new  -name            $name  -parent_id       [require_root_folder]  -context_id      $object_id  -creation_user   $user_id  -creation_ip     $peeraddr  -item_subtype    "content_item"  -storage_type    "file"  -package_id      $package_id  -with_child_rels f]

        #
        # Create a revision for the fresh content_item
        #
        set revision_id [xo::dc nextval acs_object_id_seq]
        content::revision::new  -revision_id     $revision_id  -item_id         $item_id  -title           $name  -is_live         t  -creation_user   $user_id  -creation_ip     $peeraddr  -content_type    "content_revision"  -package_id      $package_id  -tmp_filename    $import_file  -mime_type       $mime_type

        #
        # Attach the image to the object via the attachments API
        #
        attachments::attach  -object_id $object_id  -attachment_id $revision_id

        return [list  success $success  name $name  file_id $revision_id  width $width  height $height  ]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: