• last updated 10 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Prefer ad_mktmpdir to ad_tmpnam

merge with missing files

  1. … 1459 more files in changeset.
merge from oacs-5-10

    • -151
    • +0
    ./file-storage-procs-postgresql.xql
    • -33
    • +1
    ./file-storage-rss-procs-oracle.xql
    • -34
    • +2
    ./file-storage-rss-procs-postgresql.xql
    • -1
    • +1
    ./file-storage-search-procs-postgresql.xql
    • -102
    • +757
    ./test/file-storage-procs.tcl
  1. … 8085 more files in changeset.
improved spelling

  1. … 15 more files in changeset.
silence expected errors during regression test

made regression test more robust

The test was failing, when the preferred language in the browser

was not "en". The test is now slightly better, but one should

use CSS classes (or data attributes) to pick the bulk actions

Remove additional trapping of exception, which prevents the web agent to access the file-storage, if we had to mount it on the fly

improved test coverage

  1. … 1 more file in changeset.
Document more explicitly that we do not perform filesystem operations when deleting files via the fs:: api, but we rely on the content repository and its trigger+scheduled proc mechanism

download-archive reform

File-Storage used to generate downloaded archives in tgz format, to then switch to zip, more user-friendly, in particular outside the Linux world (See https://openacs.org/forums/message-view?message_id=557561). To ease the transition, a couple of parameters and relative API were introduced that would allow to choose the preferred command one should use. During this reform however, default parameter values in the tcl code became inconsistent with those in the info file. Furthermore, the chosen defaults were set as absolute paths to the executable, which is not friendly to non-linux environments, or other scenarios where the "typical" Linux filesystem structure cannot be assumed (e.g. containers, MacOS...).

The only usage of this parameters/api was in fact in the download-archive vuh. In upstream codebase, no package references this file, not even the file-storage itself. Upon review, one could see that the file would also allow to specify a custom download filename via the path, which could be considered questionable. It would also execute the command in a way that once again assumes some form of Linux environment (e.g. invoking bash).

Save for the ability to customize the archive format and the anti-feature of being able to manipulate the archive filename via the path, the script largely relplicates www/download-zip, in a better shape after a few reforms hinted by e.g. penetration tools.

Given the aformentioned considerations, I have decided to make download-archive a simple redirect to download-zip. Specifying the object_id via the path will keep working, while URLs out there expecting the name to change will not fail, but the name will not be modified. The archive format will from now on be assumed to be zip.

  1. … 2 more files in changeset.
Cleanup of external binaries: always use "util::which" to resolve binaries

  1. … 5 more files in changeset.
Test external command dependency for the package

Fix english

Deprecate fs::get_folder_contents

Avoid using get_folder_contents, doing a lot more stuff, and get the info from the db directly

Retrieve only the necessary information

Replace ad_tmpnam

Complete api coverage for the package

Cover remaining export api

    • -15
    • +129
    ./test/file-storage-procs.tcl
Make fs::get_folder_contents private: this api is only used internally to the file-storage over the codebase and its documentation suggests that it should be used with caution

Deprecate trivial fs::get_archive_extension and inline its only upstream occurrence

  1. … 1 more file in changeset.
Prevent usage of fs::get_archive_command outside a file-storage connection context, as in this case the parameter value will be uspecified

Deprecate fs::item_editable_info and fs::item_editable_p, probably unfinished work towards some kind of inline editing feature

Increase proc coverage

Declare api as tested

Make the api creating the Service Contract implementations for RSS in the file-storage package private, as they are meant to be invoked only once at install/uninstall time

Deprecate fs::torrent::get_hashsum, which can be replaced by a oneliner idiom on modern NaviServer

Increase proc coverage

Deprecate fs::add_created_version

This api was nowhere used in upstream code, however, allowed to create a new file object revision by text content, different from fs::add_version, which would only allow to create a revision from a file.

As the two apis were otherwise identical, I have ported the behavior of fs::add_created_version info fs::add_version.

The new fs::add_version will also take many defaults for unspecified parameters from the existing content item.

Make service contract implementation private