Easy Admin

By Daniel Berthereau Manage tasks from the admin interface: install modules and themes, check database and files, block concurrent edition, run cron tasks.
Download 3.4.17

Easy Admin (module for Omeka S)

New versions of this module and support for Omeka S version 3.0 and above are available on GitLab, which seems to respect users and privacy better than the previous repository.

Easy Admin is a module for Omeka S that allows to manage Omeka from the admin interface:

  • buttons to public view and previous/next resources in admin resource show page;
  • content lock to avoid concurrent edition;
  • install modules;
  • update modules (in a future version);
  • maintenance state for public and admin even when no migration;
  • checks database and files;
  • backup install;
  • clear php caches;
  • launch simple tasks, that can be any job of any module.

Checks and fixes that are doable:

  • list files in the file system (original and thumbnails), but not in the database
  • remove useless files in the files directory (moved to files/check)
  • list files in the database, but not in the file system (for original and thumbnails)
  • copy original files from a directory, for example after a disk crash or an inadvertent deletion; files are copied via the hash, and they can be anywhere in the directory or in subdirectories of the source path.
  • rebuild derivative files
  • remove empty directories in file system (original and thumbnails, mainly for module Archive Repertory)
  • check and update file size of media (required to fix Omeka installed before Omeka 1.2 (omeka/omeka-s#1257), or after a hard update of files)
  • check and fix sha256 hashes of files
  • check and fix positions of media (start from 1, without missing number)
  • check and set precise media types (for example application/alto+xml instead of text/xml)
  • check and prepare dimensions of medias for module Iiif Server
  • check and fix the encoding (iso-8859 to utf-8) of resource values and page contents (fix Windows issues)
  • check and update titles
  • check and update the primary media for each item
  • check and stop dead jobs (living in database, but non-existent in system)
  • check the size of the database table of sessions and remove them
  • check the size of the database table of logs and remove them
  • backup install
  • clear php caches

And many more.


See general end user documentation for installing a module.

This module requires the module Common, that should be installed first.

  • From the zip

Download the last release EasyAdmin.zip from the list of releases, and uncompress it in the modules directory.

  • From the source and for development

If the module was installed from the source, rename the name of the folder of the module to EasyAdmin.

Then install it like any other Omeka module and follow the config instructions.

In some cases, in particular when the server is behind a proxy, a firewall or a specific infrastructure, your may need to add credentials in your config (omeka file "config/local.config.php"), depending on your linux distribution:

    'http_client' => [
        // 'adapter' => \Laminas\Http\Client\Adapter\Curl::class,
        'sslcapath' => '/usr/local/etc/ssl/certs/',
        'sslcafile' => 'ca.crt',
        // 'sslcapath' => '/etc/pki/tls/certs/',
        // 'sslcafile' => 'ca-bundle.crt',

In some cases, the path should be absolute:

    'http_client' => [
        // 'adapter' => \Laminas\Http\Client\Adapter\Curl::class,
        'sslcapath' => '/usr/local/etc/ssl/certs',
        'sslcafile' => '/usr/local/etc/ssl/certs/ca.crt',
        // 'sslcapath' => '/etc/pki/tls/certs',
        // 'sslcafile' => '/etc/pki/tls/certs/ca-bundle.crt',

You can find more information on the params in Laminas help.


Buttons in resource page

The option can be enabled in main settings.

Button "Public view"

Display a button "Public view" in resource show pages. The link is the resource page of the default user site or the default site.

Buttons to previous next resources

Allow to get the previous or the next resources, that simplifies browsing like in Omeka Classic.

Checks and fixes

Go to the menu "Bulk Check", select your process, set your options if needed, and click the submit buttons. The results are available in logs currently.

Install and update modules and themes

Simply select either the desired module or the desired theme and click "upload".

See more details on modules and themes.

Content lock

This feature is inspired by Drupal Content Lock mechanism and allows to block concurrent editing: when a user is editing a resource, other users cannot edit it until submission.

Tasks and cron tasks

A script allows to run any job of any module from the command line, even if they are not initialized in the admin interface. It’s useful to run one time tasks or cron tasks, for example to harvest and update resources regularly with module [Bulk Import], or to clean up sessions (see included jobs), or to reindex resources in the search engine with module [Search SolR].

Here is the command line to use:

php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --help

In main cron tab or in the one of the user "www-data", you can add a task like that:

/bin/su - www-data -c "php /path/to/omeka/modules/EasyAdmin/data/scripts/task.php --task 'EasyAdmin\Job\LoopItems' --user-id 1 --server-url 'https://example.org' --base-path '/'"

To use the command with the user "www-data" (or equivalent) may be required when the task creates files inside Omeka "/files/" directory. If the task only uses the database, it is usually not needed, but you need to take care of modules that can create derivative or temp files. And you may need to take care of escaping json arguments.

A sudo command may be used:

sudo -u www-data php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --task 'BulkImport\Job\Import' --user-id 1 --server-url 'https://example.org' --base-path '/omeka-s' --args '{"bulk_import_id": 1}'

Required arguments are: - -t --task [Name] May be the full class of a job ("EasyAdmin\Job\LoopItems") or its basename ("LoopItems"). You should take care of case sensitivity and escaping "\" or quoting name on cli. - -u --user-id [#id] The Omeka user id is required, else the job won’t have any rights.

Recommended arguments: - -s --server-url [url] (default: "http://localhost") - -b --base-path [path] (default: "/") The url path to complete the server url.

Optional arguments: - -a --args [json] Arguments to pass to the task. Arguments are specific to each job. To find them, check the code, or run a job manually then check the job page in admin interface. - -k --as-task Process a a simple task and do not create a job. May be used for tasks that do not need to be checked as a job. This is the inverse of the deprecated argument --job.

As an example, you can try the included job/task, for example "LoopItems" that loops all items to save them. This task allows to update all items, so all the modules that uses api events are triggered. This job can be use as a one-time task that help to process existing items when a new feature is added in a module:

php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --task 'LoopItems' --user-id 1 --server-url 'https://example.org' --base-path '/' --args '{}'

Another example: run a bulk import job whose config is stored. Indeed, because the config of a bulk import may be complex, it is simpler to store it in the admin interface with its option "Store job as a task".

php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --task 'BulkImport\Job\Import' --user-id 1 --server-url 'https://example.org' --base-path '/' --args '{"bulk_import_id": 1}'

Another example: run a bulk export job whose config is stored with option "Store job as a task".

php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --task 'BulkExport\Job\Export' --user-id 1 --server-url 'https://example.org' --base-path '/' --args '{"bulk_export_id": 1}'

Another example: reindex statistics after import of hits:

sudo -u www-data php '/path/to/omeka/modules/EasyAdmin/data/scripts/task.php' --task 'Statistics\Job\AggregateHits' --user-id 1 --server-url 'https://example.org' --base-path '/'

Note that for jobs created manually in the admin interface, you can run them with the standard Omeka "perform-job.php". Of course, these job can be run one time only:

php '/path/to/omeka/application/data/scripts/perform-job.php' --job-id 1 --server-url 'https://example.org' --base-path '/'


  • [ ] Output results as tsv (/files/check/tsv_date_time.tsv) as BulkExport or in a table (done for missing file; to do for all processors).
  • [ ] Check files with the wrong extension.
  • [ ] Add width/height/duration as data for image/audio/video to avoid to get them each time (ready in modules Iiif Server and Image Server).
  • [ ] Remove old logs.
  • [ ] A main cleaning task.


Use it at your own risk.

It’s always recommended to backup your files and your databases and to check your archives regularly so you can roll back if needed.


See online issues on the module issues page on GitLab.


This module is published under the CeCILL v2.1 license, compatible with GNU/GPL and approved by FSF and OSI.

This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".

As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software’s author, the holder of the economic rights, and the successive licensors have only limited liability.

In this respect, the user’s attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software’s suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security.

The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.


  • Copyright Daniel Berthereau, 2017-2024 (see Daniel-KM on GitLab)

This module is a merge and improvement of previous modules Easy Install, Next, Maintenance, Bulk Check and Generic. The idea of Easy Install comes from the plugin Escher for Omeka Classic.

Version Released Minimum Omeka version
3.4.17March 25, 2024 [info]^4.0.0
3.4.16February 12, 2024 [info]^4.0.0
3.4.15October 30, 2023 [info]^3.1.0 || ^4.0.0
3.4.14September 04, 2023 [info]^3.1.0 || ^4.0.0
3.4.13August 28, 2023 [info]^3.1.0 || ^4.0.0
3.4.12July 03, 2023 [info]^3.1.0 || ^4.0.0
3.4.11June 19, 2023 [info]^3.1.0 || ^4.0.0
3.4.10May 01, 2023 [info]^3.1.0 || ^4.0.0 30, 2023 [info]^3.1.0 || ^4.0.0 23, 2023 [info]^3.1.0 || ^4.0.0
3.4.9January 16, 2023 [info]^3.1.0 || ^4.0.0
3.4.8January 09, 2023 [info]^3.1.0 || ^4.0.0
3.3.8November 28, 2022 [info]^3.1.0
3.3.7November 21, 2022 [info]^3.1.0 14, 2022 [info]^3.1.0
3.3.6November 07, 2022 [info]^3.1.0
3.3.5October 31, 2022 [info]^3.1.0
3.3.4September 27, 2022 [info]^3.1.0
3.3.2February 14, 2022 [info]^3.1.0
3.1.1February 07, 2022 [info]^3.1.0