PHPackages                             oat-sa/tao-core - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. oat-sa/tao-core

ActiveTao-extension[Utility &amp; Helpers](/categories/utility)

oat-sa/tao-core
===============

TAO core extension

v56.6.0(3d ago)66143.7k↓22.2%36[8 issues](https://github.com/oat-sa/tao-core/issues)[13 PRs](https://github.com/oat-sa/tao-core/pulls)20GPL-2.0-onlyPHPCI failing

Since Dec 5Pushed 3d ago42 watchersCompare

[ Source](https://github.com/oat-sa/tao-core)[ Packagist](https://packagist.org/packages/oat-sa/tao-core)[ Docs](http://www.taotesting.com)[ RSS](/packages/oat-sa-tao-core/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (142)Versions (1769)Used By (20)

tao-core
========

[](#tao-core)

[![codecov](https://camo.githubusercontent.com/1899464a92beaf6c22ba1422d92586133ffc94478896e3e98e9ce038c9bae3b0/68747470733a2f2f636f6465636f762e696f2f67682f6f61742d73612f74616f2d636f72652f6272616e63682f6d61737465722f67726170682f62616467652e7376673f746f6b656e3d755056646a304a72456e)](https://codecov.io/gh/oat-sa/tao-core)

- [Task Queue Doc](models/classes/taskQueue/README.md)
- [Middlewares Doc](models/classes/Middleware/README.md)
- [Feature Flag](models/classes/featureFlag/README.md)
- [CSRF Tokens](models/classes/security/xsrf/README.md)
- [Client Config](models/classes/clientConfig/README.md)

Webhooks
========

[](#webhooks)

Description
-----------

[](#description)

Webhooks allow you to send a request to remote server based on triggered event

How to use it
-------------

[](#how-to-use-it)

### Register event webhook.

[](#register-event-webhook)

use command `\oat\tao\scripts\tools\RegisterEventWebhook` to register events that are implementing `\oat\tao\model\webhooks\configEntity\WebhookInterface` interface.

i.e:

```
$ php index.php 'oat\tao\scripts\tools\RegisterEventWebhook'
    \ -u "https://example.com"
    \ -m "POST"
    \ -e ""

```

Check ACL Permissions
=====================

[](#check-acl-permissions)

In order to check ACL permissions, you can use the `PermissionChecker`:

```
$permissionChecker = $this->getServiceLocator()->get(oat\tao\model\accessControl\PermissionChecker::class);

$permissionChecker->hasWriteAccess('resourceId');
$permissionChecker->hasReadAccess('resourceId');
$permissionChecker->hasGrantAccess('resourceId');
```

**Important**: It takes into consideration the current user in the session, if no user is provided.

Roles Access (rules and action permissions)
===========================================

[](#roles-access-rules-and-action-permissions)

Description
-----------

[](#description-1)

Script allow you to apply (add)/revoke (remove) list of rules and/or permissions to a specific roles and actions.

How to use it
-------------

[](#how-to-use-it-1)

Execute the following command to apply (add) new rules/permissions:

```
$ php index.php 'oat\tao\scripts\tools\accessControl\SetRolesAccess' \
--config [config.json|json_string]

```

If you want to revoke (remove) them, add `--revoke` flag:

```
$ php index.php 'oat\tao\scripts\tools\accessControl\SetRolesAccess' \
--revoke \
--config [config.json|json_string]

```

### Config example

[](#config-example)

```
{
  "rules": {
    "role": [
      {
        "ext": "extensionIdentifier",
        "mod": "actionControllerName",
        "act": "actionMethodName"
      }
    ]
  },
  "permissions": {
    "controller": {
      "action": {
        "rule1": "READ",
        "rule2": "WRITE"
      }
    }
  }
}
```

Environment variables
=====================

[](#environment-variables)

Here you can find the environment variables including feature flags

VariableDescriptionDefault valueFEATURE\_FLAG\_LISTS\_DEPENDENCY\_ENABLEDEnable Remote Lists Dependency feature-FEATURE\_FLAG\_ADVANCED\_SEARCH\_DISABLEDDisable advanced search feature, if set to 1-FEATURE\_FLAG\_STATISTIC\_METADATA\_IMPORTEnable statistics metadata import-FEATURE\_FLAG\_CKEDITOR\_SOURCEDIALOGEnable source editing for ckeditorfalseFEATURE\_FLAG\_SOLAR\_DESIGN\_ENABLEDActivate the Solar Design mode-GOOGLE\_APPLICATION\_CREDENTIALSPath to GCP credentials path-DATA\_STORE\_STATISTIC\_PUB\_SUB\_TOPICTopic name for statistic metadata Pub/Sub-REDIRECT\_AFTER\_LOGOUT\_URLAllows to configure the redirect after logout via environment variable. The fallback is the configured redirect on urlroute.conf.php-PORTAL\_URLThe Portal url used on the back button of Portal theme-FEATURE\_FLAG\_TRANSLATION\_ENABLEDEnable access to items/tests translations feature-TAO\_ALLOWED\_TRANSLATION\_LOCALESComma separated List of locales available for translations / authoring in the UI. If none provided, all are allowed-COOKIE\_POLICY\_CONFIGJSON with CookiePolicy config. Example: `{"privacyPolicyUrl":"https://...","cookiePolicyUrl":"https://..."}`-TAO\_ID\_GENERATOR\_MAX\_RETRIESMaximum number of retry attempts for unique ID generation on collision10TAO\_ID\_GENERATOR\_SHOULD\_CHECK\_STATEMENTSEnable statement checks during ID generation (set to 1 to enable)0TAO\_ID\_GENERATOR\_ID\_STARTStarting value for unique ID generation1FEATURE\_FLAG\_TAO\_DUAL\_PREVIEW\_ENABLEDEnables buttons to run secondary registered previewer1Routing
=======

[](#routing)

Check more information about actions/controllers and [routing here](./models/classes/routing/README.md)

Observer implementations
========================

[](#observer-implementations)

Check the current [observer implementations here](./models/classes/Observer/README.md)

Data Policy Orchestrator handlers
=================================

[](#data-policy-orchestrator-handlers)

Check the current [Data Policy Orchestrator handlers doc here](./models/classes/DataPolicyOrchestrator/README.md)

###  Health Score

71

—

ExcellentBetter than 100% of packages

Maintenance97

Actively maintained with recent releases

Popularity48

Moderate usage in the ecosystem

Community51

Growing community involvement

Maturity83

Battle-tested with a long release history

 Bus Factor6

6 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~3 days

Total

1130

Last Release

3d ago

Major Versions

v55.2.6 → v56.1.152026-04-07

v55.2.7 → v56.1.15.12026-04-29

v55.0.1.10 → v56.1.192026-05-08

v55.2.8 → v56.1.15.22026-05-11

v55.0.1.11 → v56.1.202026-05-22

PHP version history (5 changes)v2.7.13PHP &gt;=5.3.10

v2.15.1PHP &gt;=5.4

v5.1.0PHP &gt;=5.5

v31.1.0PHP &gt;=5.6

38.13.3.2-devPHP ^7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/98ddc6f1b615b1fac2d59f1e72d5dc6056cf6650414271da90cb3f0e203516fe?d=identicon)[bugalood](/maintainers/bugalood)

![](https://www.gravatar.com/avatar/c0ec704e0a8abaf0c27b227ad05d7aca23bc8f83d195229d94d4508cddc0fd24?d=identicon)[oat-lionel](/maintainers/oat-lionel)

![](https://www.gravatar.com/avatar/e8c30644c0da147701176483ca1ca40e1c41012e6c5b0da47e984c1eb8a840b1?d=identicon)[jbout](/maintainers/jbout)

![](https://www.gravatar.com/avatar/723a1fd1ece5276155af140d62801e89884eaf8663b643d3a0fb826e49e9ec6b?d=identicon)[jsconan](/maintainers/jsconan)

---

Top Contributors

[![krampstudio](https://avatars.githubusercontent.com/u/468620?v=4)](https://github.com/krampstudio "krampstudio (1916 commits)")[![jsconan](https://avatars.githubusercontent.com/u/1500098?v=4)](https://github.com/jsconan "jsconan (1591 commits)")[![ssipasseuth](https://avatars.githubusercontent.com/u/8425344?v=4)](https://github.com/ssipasseuth "ssipasseuth (1036 commits)")[![jbout](https://avatars.githubusercontent.com/u/5815304?v=4)](https://github.com/jbout "jbout (1020 commits)")[![siwane](https://avatars.githubusercontent.com/u/8009602?v=4)](https://github.com/siwane "siwane (577 commits)")[![shpran](https://avatars.githubusercontent.com/u/59471572?v=4)](https://github.com/shpran "shpran (511 commits)")[![bartlomiejmarszal](https://avatars.githubusercontent.com/u/16231681?v=4)](https://github.com/bartlomiejmarszal "bartlomiejmarszal (488 commits)")[![no-chris](https://avatars.githubusercontent.com/u/11467480?v=4)](https://github.com/no-chris "no-chris (472 commits)")[![bugalot](https://avatars.githubusercontent.com/u/4217431?v=4)](https://github.com/bugalot "bugalot (470 commits)")[![llecaque](https://avatars.githubusercontent.com/u/5645487?v=4)](https://github.com/llecaque "llecaque (414 commits)")[![tikhanovichA](https://avatars.githubusercontent.com/u/1053022?v=4)](https://github.com/tikhanovichA "tikhanovichA (398 commits)")[![boajer](https://avatars.githubusercontent.com/u/4569734?v=4)](https://github.com/boajer "boajer (348 commits)")[![zagovorichev](https://avatars.githubusercontent.com/u/1445911?v=4)](https://github.com/zagovorichev "zagovorichev (346 commits)")[![oatymart](https://avatars.githubusercontent.com/u/43652944?v=4)](https://github.com/oatymart "oatymart (331 commits)")[![wazelin](https://avatars.githubusercontent.com/u/2943256?v=4)](https://github.com/wazelin "wazelin (294 commits)")[![SergiiTao](https://avatars.githubusercontent.com/u/36041347?v=4)](https://github.com/SergiiTao "SergiiTao (251 commits)")[![bziondik](https://avatars.githubusercontent.com/u/25976342?v=4)](https://github.com/bziondik "bziondik (222 commits)")[![gabrielfs7](https://avatars.githubusercontent.com/u/1467589?v=4)](https://github.com/gabrielfs7 "gabrielfs7 (207 commits)")[![antoinerobin](https://avatars.githubusercontent.com/u/5881795?v=4)](https://github.com/antoinerobin "antoinerobin (196 commits)")[![ionutpad](https://avatars.githubusercontent.com/u/31656944?v=4)](https://github.com/ionutpad "ionutpad (156 commits)")

---

Tags

assessmentTAOcomputer-based-assessmentOAT

### Embed Badge

![Health badge](/badges/oat-sa-tao-core/health.svg)

```
[![Health](https://phpackages.com/badges/oat-sa-tao-core/health.svg)](https://phpackages.com/packages/oat-sa-tao-core)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.3k543.5M2.6k](/packages/aws-aws-sdk-php)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M574](/packages/shopware-core)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M738](/packages/sylius-sylius)[oro/platform

Business Application Platform (BAP)

645143.5k115](/packages/oro-platform)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
