One of the core tenets of Metavus is the importance of getting you up and running as quickly and easily as possible.
Download
The current version of Metavus is 1.2.0.
Metavus is also available via Github.
Installation
Installation of Metavus usually takes less than five minutes.
Requirements
Metavus is designed to run on a web server with a LAMP (Linux/Apache/MySQL/PHP) stack.
The minimum required PHP version is 7.4. The minimum required MySQL version is 5.0. (MariaDB may also be used, in place of MySQL.) (PHP 7.4 was released in 2019, so most servers put online in the last five years or that are older but actively-maintained should work fine.)
Steps
- Download the Metavus distribution package from the link above.
- Create a new database for Metavus on your web server, and a MySQL (or MariaDB) user who has all privileges for accessing and modifying it.
- Unzip the Metavus package and upload the files to the desired location on your web server.
- Access your new Metavus installation using a web browser (go to, for example, “http://example.com” or “http://example.com/collection/”, depending on your domain and which directory you uploaded the files to), and follow the instructions on that page to complete the installation.
Notes
- The database for a new installation of Metavus should be empty when starting the installation.
- If you want Metavus to live in the root of your domain (e.g. “http://example.com”), upload the files to the root directory of your web server.
- If you want Metavus to live in its own subdirectory under your domain (e.g. “http://example.com/collection/”), then create an appropriately-named directory on your server (like “collection”), and upload the files to that directory.
- The URL for your site should match where you uploaded your files. So if you uploaded them to the root directory, you would go to “http://example.com”, while if you uploaded them to a subdirectory called “collection”, you should visit “http://example.com/collection/”.
Upgrading
Like the installation, upgrading Metavus to the latest version is designed to be quick and easy.
To upgrade to a new version of Metavus, just download the Metavus package, unzip the package and upload the files to your site, and then visit your site with your browser. The upgrade will be run automatically.
The files unique to your site are all stored in the “local” directory, except for the “.htaccess” file in the base directory; everything else in the directory tree are Metavus distribution files.
(If you are upgrading from CWIS, please contact us for a few additional tips to help ensure a smooth migration.)
Change Log
Version 1.2.0 – Released April 3, 2025
ADDED
- Add support for observer notification for record addition, deletion, and modification.
- Add support for two way conversion between Timestamp and Date fields.
- Add checks for exceeding post_max_size and upload_max_filesize along with informative error messages describing how to fix the problem.
- Add handling of CF-Connecting-IP HTTP header for sites using Cloudflare’s content distribution network.
- Add the ability to upload a logo and/or hero image in the interface configuration.
- Add ‘Triggers Auto Updates’ Metadata Field property to control if changes to a field will run automatic updates (e.g., to Date Last Modified).
- Extend Search to support exclusions for Option and Controlled Name fields.
- Extend Search Parameter Set fields to support searches involving Reference fields.
- Allow users to upload an Avatar image.
- Import Data: Extend to support a sub-delimiter within fields to denote multiple values for that field. Allows row-per-record format data files as produced by many spreadsheet programs.
- Add “Search Load Threshold” parameter. When the system load is higher than this vaue, users must be logged in to perform searches.
- Add the ability to transfer saved searches to other users.
- mvus utility: new command “user password” for setting user passwords
- mvus utility: new command “list logins”
- mvus utility: new commands “task count” and “task run”
- mvus utility: new command option “cache clear scaled” to clear all scaled versions of images
- MLPHPList plugin: Add support for v3 of the PHPList REST API.
- UrlChecker: add the ability to check if a transparent http to https upgrade works for a given URL.
- NEW PLUGIN: PhotoLibrary — Provides a photo gallery, using files and metadata from within Metavus.
- NEW PLUGIN: ExifTags — Adds the ability to copy metadata from image tags into Metadata Fields when images are uploaded.
- NEW PLUGIN: CalendarFeed — Provide iCal feeds for Calendar Events.
- NEW PLUGIN: EduLink — Provide support for searching and displaying materials from a Metavus repository within LMS systems and embedding them in LMS-hosted courses.
- NEW PLUGIN: ChatPDF — Generate record metadata by sending uploaded PDF files to the ChatPDF for analysis by the ChatGPT LLM AI.
- NEW PLUGIN: WhatCMS — Query the WhatCMS API for information about the technology behind a given URL, and populate metadata fields with the retrieved values.
- NEW PLUGIN: IIIFImageServer — Serve images from a Metavus collection using the International Image Interoperability Framework (IIIF) API.
- NEW PLUGIN: IIIFImageViewer — Provide interactive display of images on a Metavus-based site using the IIIF API.
CHANGED
- Update to Bootstrap v5.3
- Image::url() now logs a warning for corrupt image files rather than throwing an exception.
- Move configuration of main navigation items from the NaveEditor plugin and into the Interface Configuration.
- Move handling of EVENT_RESOURCE_MODIFY into the Record object so that callers need not remember to signal it after changing a record.
- Add logging of database cache pruning.
- Extend the syntax for specifying image sizes to support scaling/cropping images to fit a specified dimension.
- Change the interpolation methods used when scaling images to generate higher quality scaled versions.
- Make the blog used for news entries on the front page configurable.
- Extend ApplicationFramework::downloadFile() to support HTTP range requests to support using movies uploaded to File fields in <video> tags.
- Add caching of search facets.
- For User fields on Advanced Search, list values in use for the field rather than all users in the system.
- Rewrite CleanURL handling for sites served from multiple domains.
- Add configuration option to disable collection monograms.
- In WYSIWYG editor, add a “Remove” button for images that will delete the inset corresponding to an image from the HTML.
- Add per-users caches to AdvancedSearch so that the list of fields and values to display is not re-computed each time the page is loaded.
- Revise upload handling provided by FormUI to use the FilePond upload library, which provides progress meters and breaks large uploads into chunks to support uploading arbitrarily large files.
- Blog plugin: When a post has attached images but none of them were included in the body of the post, display the first image at the beginning of the body.
- Blog plugin: Add ability to send test notifications.
- AutoFetch plugin: More detailed error reporting when files cannot be retrieved.
- Folders plugin: Visually distinguish non-public records in shared folders.
- Folders plugin: Extend to support cover images and per-folder descriptions.
- GoogleMaps plugin: Add option to select which API channel to use.
- GoogleMaps plugin: Extend to support custom map styles.
FIXED
- Fix bug that would always run background search and/or recommender updates even when such updates were disabled in the site configuration.
- Fix issue with markup incorrectly being escaped in field help tooltips in Metadata Field Editor.
- Fix bug in escaping double quotes in image alt text.
- Fix bug in phrase searching for File fields.
- Fix several bugs in loading and overriding per-interface settings.
- Fix bug in saving scaled PNG images with a transparent background.
- More detailed error messages when an Exception is thrown during plugin initialization.
- Improve display and alignment of non-Latin scripts in text fields.
- Edit Option List: Add checks to prevent users from deleting the default value for a field.
- Edit Metadata Field: fix bug that prevented clearing allowed qualifiers.
- Do not save error pages resulting from insufficient viewing permissions in the static page cache.
- Allow User schema fields to appear on Search Results pages when viewing permissions allow it.
- Fix bug that prevented changes to Metadata Field Ordering from saving.
- Fix bug that prevented ‘Set All Users to Default Interface’ checkbox on System Configuration from working.
- Revise search descriptions to user names rather than numeric IDs.
- Fix bug in synchronizing some data between the User schema and the APUsers database table.
- Fix bug that prevented configuring Priviliges for Search Parameter Set type metadata fields.
- OAIPMHServer plugin: fix incorrect default base URL.
- Blog plugin: Do not send email to disabled users.
- Blog plugin: Revise hovertest on “Notify” button for unpublished entries to clarify that entries must be published to sent notifications.
- CalendarEvents plugin: More consistent formatting of event dates.
- UrlChecker plugin: Revise handling of per-domain rate limits so that a large number of checks against the same domain would not slow down checks of other domains.
- UrlChecker plugin: Fix bug in checking links to locally stored files from File fields.
- UrlChecker plugin: Revise procedure for re-checking URLs to prevent repeatedly rechecking all URLs from records that had any failing URLs.
- Mailer plugin: Store the Interface in use when a mail is queued, use this interface when performing keyword replacements so that the correct keywords will be used.
- Rules plugin: Increase width of database column that stores matching records to accommodate rules that have thousands of matches.
Version 1.1.0 – Released June 8, 2023
ADDED
- Added ability to configure settings on a per-interface basis, via new Interface Configuration page.
- Added interface configuration setting to customize the title of the Featured Items section on the Home page.
- Added Clean URLs for Browse Resources and Home pages.
- Added interface configuration setting to control the number of items to show on the collection display page.
- Added list of upcoming events to Home page in default interface. (Requires CalendarEvents plugin.)
- Added option for downloading original image file to full image page.
- Added a clarifying note to Browse Resources page, shown only to administrative users, indicating that the Browse page only lists records that are publicly-visible.
- Added clarifying import instructions and examples of import files to tab-delimited data import.
- mvus utility: New command “export schema” that exports a specified schema definition to an XML file.
- AutoScreenshot plugin: Added a “Take Now” button that can be used to immediately capture a screenshot rather than waiting for a background task to run.
- CalendarEvents plugin: Added EventsPerPage configuration parameter.
- Collage plugin: Added logic to ensure images are larger than the configured title size, to avoid images from being stretched by the browser.
- Developer plugin: Add the ability to profile memory usage.
- Google Analytics plugin: Add support for GA4 properties.
- Google Maps plugin: Make KML cache lifetime configurable.
- UrlChecker plugin: Added a column to results page showing which records are publicly-visible.
- NEW PLUGIN: CalendarFeed — Provides a URL to a feed of events in iCalendar format that match a set of search parameters.
- NEW PLUGIN: CustomCSS — Allows CSS customizations to be added from the site interface, without adding or editing files.
- NEW PLUGIN: FeaturedItems — Generate a list of featured items of a specific type using search parameters, a sorting field, and an optional grouping field.
CHANGED
- Merged Advanced System Configuration into System Configuration.
- Revamped Administration page to break plugin administration menu items out into their own sections
- Revise UI to consistently use <button> tags where appropriate rather than a mixture of <button> and <a> tags.
- Add mv-image-extralarge and mv-image-huge sizes.
- Revised the way plugin configuration options are loaded in numerous plugins to avoid unnecessary work when the page being loaded is not the plugin configuration page.
- Revised GoTo page to return a 404 on invalid record IDs rather than going to a fallback redirect.
- When purging sample data, sample Collection records are now also removed.
- Added validation to many MetadataField methods, primarily aimed at ensuring the parameters being set for a field are valid for that field’s type.
- AutoScreenshot plugin: Increased resolution of screenshots and change them to use a 1:1 aspect ratio.
- AutoScreenshot plugin: Revised the “Firefox” screenshot method to use the –headless –screenshot options that Firefox now provides rather than running Firefox inside an Xvfb instance.
- Blog plugin: Revised blog summaries so that those which include an image will display captions if the post includes a caption but omit them otherwise.
- Pages plugin: Revised handling of tabbed content to allow content after the end of the tabs and also multiple sets of tabs on a page.
- Mailer plugin: Improved error handling and logging.
FIXED
- Fixed misuse of DTSTAMP property in iCalendar, so that it now uses the the event’s most recent time of modification, rather than the date and time of the creation of the iCalendar document.
- Fixed bug in FormUI that resulted in insertion keywords not being escaped when appearing in the contents of text area fields.
- Fixed bug where blog titles were smaller than sub-headers, removed H1 from the list of CKEditor styles.
- Fixed a bug in RecordEditingUI where vocabularies with exactly the number of terms configured as the incremental search threshold for their metadata field could not be edited.
- Improved error message when no Unique Field is set but the data file omits values for Title or Description on a line during data import.
- Added more-informative error message to data import when no data file was uploaded for import.
- Fixed bug on home page that caused one extra item to appear in the Featured Resources area.
- Fixed numerous bugs in search parameter set editor, involving subgroup handling, tree field handling, and user field handling.
- Fixed the “Please Note” message for mapped fields when editing metadata fields, to direct users to Edit Metadata Schema, where the relevant settings now live.
- Fixed generation of ‘remove’ links in search facets for Tree fields so that it respects the field’s search logic setting rather than reverting to the top-level logic setting.
- Fixed bug that caused the search string to be lost when paging past the first page of matching terms, when editing controlled names.
- In Record::applyListOfChanges() (used primarily by the BatchEdit plugin), if the changes applied make the record publicly-viewable, run the “On Record Release” actions.
- Fixed bug that prevented a metadata field’s Label or Instructions from being cleared once they were set
- Fixed bug that rendered image insertion buttons nonfunctional in the rich text editor if the cursor was inside a heading or a list.
- Fixed date validation bug that could cause valid dates to be rejected, when editing records.
- Fixed bug in change set editor (used by the BatchEdit plugin and Rules plugin) that could prevent list of included fields from being editable.
- Fixed bug in metadata field editor that prevented clearing a default qualifier.
- Blog Plugin: fixed bug causing an exception when deleting a comment on a blog entry.
- Blog plugin: Fixed bug that caused image captions to appear in notification emails for new posts.
- Folders plugin: Improved error handling on folder viewing page and fixed issue with clean URL generation that was causing exceptions when invalid folder IDs were supplied.
- OAIPMHServer plugin: Fixed bug that caused exceptions when editing a format that had no “Defaults” setting saved.
- OAIPMHServer plugin: Use CDATA to escape field descriptions so that the generated XML will remain valid even when the descriptions have embedded HTML.
- Mailer plugin: Fixed logic bug in approval queue page that caused the ‘approve’ button to appear only when there were no messages to approve.
- MailingList plugin: Fixed bug that could prevent subscribing or unsubscribing when the mailing list name included capital letters.
- UrlChecker plugin: Fixed logic error that could prevent new resources from being queued for URL checks.
Version 1.0.1 – Released October 24, 2022
ADDED
- Added new “insert with caption” buttons (“Insert-R-C” and “Insert-L-C”), available when editing items with Image fields (e.g. Blog entries).
- Provide an example configuration file for running Metavus with an nginx web server.
- Add the account activation link to the user editing page (for unactivated users), to make it easier to send to users if needed.
- Collage plugin: Added “Order Persistence Period” configuration setting, that determines how frequently the order of images changes.
- NEW PLUGIN: NavEditor — Provides simple editing of the main navigation options in the default interface.
CHANGED
- WYSIWYG editing (e.g. for Paragraph fields) now uses a whitelist for allowed CSS attributes, rather than a blacklist.
- When editing users, select the default user interface for users who do not currently have a user interface set.
- Default interface: Focus is now automatically switched to search box when “Search” is clicked.
- Default interface: Footer revamped to be more responsive.
- Default interface: Improved responsiveness in main navigation and on most forms.
- Default interface: Set <pre> elements to wrap within the content area to prevent poorly-formatted content from breaking the layout.
- Blog plugin: Changed teaser break marker to explicit ‘–‘ instead of double blank line.
- Blog plugin: Whitespace is now explicitly disallowed in clean URLs.
- Blog plugin: Do not display “Notify Subscribers” buttons for blogs that are not configured for sending notifications.
- Collage plugin: Revised image selection to prevent adjacent repeated images.
FIXED
- Fixed issue that caused the port number to be omitted on some internal links when running on a non-standard port.
- Fixed manual rebuilding of recommender database.
- Fixed issue with exception occurring when viewing a folder with bad parameter values in the URL.
- Change file length column in database (Files:FileLength) to BIGINT UNSIGNED to support very large files.
- Revise record editing to not to use lookbehind assertions for compatibility with Safari.
- Fixed escaping of single quotes in alt text for image “Insert” buttons.
- Fix a bug wrapping long lines in HTML messages that produced a mix of “\r\n” and “\r” line endings when “\r\n” was requested.
- Fixed error that occurred due to undefined variable when exporting controlled vocabularies from within the metadata field editor.
- Fixed account request to make sure that default values for the User schema are used in all cases.
- Mailer plugin: Fixed background email sending to use correct object type, instead of always using Record.
- Mailer plugin: Fix bug that caused an exception when when a template that expected a resource is used in a context where no resource is available.
- UrlChecker plugin: Fix bug that prevented data for deleted records from being cleaned out.