Provided by: sympa_6.2.24~dfsg-1_amd64
NAME
Sympa::SharedDocument - Shared document repository and its nodes
SYNOPSIS
use Sympa::SharedDocument; $shared = Sympa::SharedDocument->new($list, $path); %access = $shared->get_privileges('read', $email, 'md5', {...}); @children = $shared->get_children; $parent = $shared->{parent};
DESCRIPTION
Sympa::SharedDocument implements shared document repository of lists. Methods new ( $list, [ $path, [ allow_empty => 1 ] ] ) Constructor. Creates new instance. Parameters: $list A Sympa::List instance. $path String to determine path or arrayref of path components. The path is relative to repository root. allow_empty => 1 Don't omit files with zero size. Returns: If $path is empty or not specified, returns new instance of repository root; {status} attribute will be set. If $path is not empty and the path exists, returns new instance of node. Otherwise returns false value. as_hashref ( ) Instance method. Casts the instance to hashref. Parameters: None. Returns: A hashref including attributes of instance (see "Attributes") and following special items: {ancestors} Arrayref of hashrefs including some attributes of all ancestor nodes. {context} Hashref including name and host of the list. {date} Localized form of {date_epoch}. {parent} Hashref including attributes of parent node recursively. {paths_d} Same as {paths} but, if the node is a directory, includes additional empty component at the end. This is useful when the path created by join() should be followed by additional "/" character. count_children ( ) Instance method. Returns number of child nodes. count_moderated_descendants ( ) Instance method. Returns number of nodes waiting for moderation. create_child ( $name, owner => $email, scenario => $scenario, type => $type, [ content => $content ] ) Instance method. Creates child node and returns it. TBD. get_children ( [ moderate => boolean ], [ name => $name ], [ order_by => $order ], [ owner => $email ], [ allow_empty => 1 ] ) Instance method. Gets child nodes. Parameters: moderate => boolean name => $name owner => $email Filters results. order_by => $order Sorts results. $order may be one of 'order_by_doc' (by name of nodes), 'order_by_author' (by owner), 'order_by_size' (by size), 'order_by_date' (by modification time). Default is ordering by names. allow_empty => 1 Don't omit nodes with zero size. Returns: (Possiblly empty) list of child nodes. get_moderated_descendants ( ) Instance method. Returns the list of nodes waiting for moderation. Parameters: None. Returns: In array context, a list of nodes. In scalar context, an arrayref of them. get_privileges ( mode => $mode, sender => $sender, auth_method => $auth_method, scenario_context => $scenario_context ) Instance method. Gets privileges of a user on the node. TBD. get_size ( ) Instance method. Gets total size under current node. install ( ) Instance method. Approves (install) file if it was held for moderation. Returns: True value. If installation failed, returns false value and sets $ERRNO ($!). rename ( $new_name ) Instance method. Renames file or directory. Parameters: $new_name The name to be renamed to. Returns: True value. If renaming failed, returns false value and sets $ERRNO ($!). rmdir ( ) instalce method. Removes directory from repository. Directory must be empty. Returns: True value. If removal failed, returns false value and sets $ERRNO ($!). save_description ( ) Instance method. Creates or updates property description of the node. unlink ( ) instalce method. Removes file from repository. Returns: True value. If removal failed, returns false value and sets $ERRNO ($!). get_id ( ) Instance method. Returns unique identifier of instance. Methods for repository root create ( ) Instance method. Creates document repository on physical filesystem. delete ( ) Instance method. Deletes document repository. restore ( ) Instance method. Restores deleted document repository. Functions valid_name ( $new_name ) Function. Check if the name is allowed for directory and file. Note: This should be used with name of newly created node. Existing files and directories may have the name not allowed by this function. Attributes Instance of Sympa::SharedDocument may have following attributes. {context} Mandatory. Instance of Sympa::List class the shared document repository belongs to. {date_epoch} Mandatory. Modification time of node in Unix time. {file_extension} File extension if any. {fs_name} Mandatory. Name of node on physical filesystem, i.e. the last part of {fs_path}. {fs_path} Mandatory. Full path of node on physical filesystem. {html} Only in HTML file. True value will be set. {icon} URL to icon. {label} Only in bookmark file. Label to be shown in hyperlink. {mime_type} Only in regular file. MIME content type of the file if it is known. {moderate} Set if node is held for moderation. {name} Mandatory. Name of node accessible by users, i.e. the last item of {paths}. {owner} Owner (author) of node, given by property description. {parent} Parent node if any. Sympa::SharedDocument instance. {paths} Mandatory. Arrayref to all path components of node accessible by users. {scenario}{read} {scenario}{edit} Scenario names to define privileges. These may be given by property description. {serial_desc} Modification time of property description in Unix time. Available if property description exists. {size} Size of file. {status} Only in repository root. Status of repository: 'exist', 'deleted' or 'none'. {title} Description of node, given by property description. {type} Mandatory. Type of node. 'root' (the root of repository), 'directory' (directory), 'url' (bookmark file) or 'file' (other file). {url} Only in bookmark file. URL to be linked.
FILES
list home/shared/ Root of repository. ... path/name Directory or file. ... path/.name.moderate Moderated directory or file. ... path/name/.desc ... path/.desc.name ... path/.desc..name.moderate Property description of directories or files, not moderated or moderated. Note: The path components ("name" above) are encoded to the format suitable to physical filesystem. Such conversion will be hidden behind object methods.
SEE ALSO
Sympa::List, "qdecode_filename" in Sympa::Tools::Text, "qencode_filename" in Sympa::Tools::Text.
HISTORY
SharedDocument module appeared on Sympa 5.2b.2. Rewritten Sympa::SharedDocument began to provide OO interface on Sympa 6.2.17.