PHPackages                             oat-sa/extension-tao-offline - 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/extension-tao-offline

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

oat-sa/extension-tao-offline
============================

An extension to assist the setup of an offline context. Setup synchronisation and encryption by test center identifier

v4.0.3(2y ago)12.5k[1 PRs](https://github.com/oat-sa/extension-tao-offline/pulls)GPL-2.0PHP

Since May 18Pushed 3mo ago46 watchersCompare

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

READMEChangelog (10)Dependencies (10)Versions (35)Used By (0)

TAO Offline Extension
=====================

[](#tao-offline-extension)

[![TAO Logo](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)](https://github.com/oat-sa/taohub-developer-guide/raw/master/resources/tao-logo.png)

[![GitHub](https://camo.githubusercontent.com/9411b4df966bf23734be4497e8e432fa1b817b8f5980018a0ebd50739fd131b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)](https://camo.githubusercontent.com/9411b4df966bf23734be4497e8e432fa1b817b8f5980018a0ebd50739fd131b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)[![GitHub release](https://camo.githubusercontent.com/d31c746b719b782ed7c724c7aeaeb04e6603910433bfaa2871424929672839e0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)](https://camo.githubusercontent.com/d31c746b719b782ed7c724c7aeaeb04e6603910433bfaa2871424929672839e0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)[![GitHub commit activity](https://camo.githubusercontent.com/16cdb98c432d9910f49193ed3ea678be02d07675ccb0f888e9a8e6d5a2de6ca1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)](https://camo.githubusercontent.com/16cdb98c432d9910f49193ed3ea678be02d07675ccb0f888e9a8e6d5a2de6ca1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f792f6f61742d73612f657874656e73696f6e2d74616f2d6f66666c696e652e737667)

> TAO Offline Capability offers schools the possibility to take assessments in environments with unstable internet connections. It uses Virtual Machines (VM) and a Central Server (CS). The assessment is performed on the VMs that contain a TAO installation as well as the tests. At the end the results of the test will be synchronized with the Central Server.

Installation instructions
-------------------------

[](#installation-instructions)

These instructions assume that you already have a TAO installation on your system. If you don't, go to [package/tao](https://github.com/oat-sa/package-tao) and follow the installation instructions.

Add the extension to your TAO composer and to the autoloader:

```
composer require oat-sa/extension-tao-offline
```

Install the extension on the CLI from the project root:

**Linux:**

```
sudo php tao/scripts/installExtension oat-sa/extension-tao-offline
```

**Windows:**

```
php tao\scripts\installExtension oat-sa/extension-tao-offline
```

As a system administrator you can also install it through the TAO Extension Manager:

- Settings (the gears on the right-hand side of the menu) -&gt; Extension manager
- Select *taoOffline* on the right-hand side, check the box and hit *install*

Synchronization and Encryption
------------------------------

[](#synchronization-and-encryption)

### Synchronization

[](#synchronization)

The synchronization process is based upon two actors, the Client Server, which is installed on a Virtual Machine, and the Central Server.

#### Setting up the Client Server

[](#setting-up-the-client-server)

The following script needs to be run on a TAO instance in order to create a Client Server:

```
sudo -u www-data php index.php '\oat\taoOffline\scripts\tools\setup\SetupClientServer'
```

On systems where [extension-tao-encryption](https://github.com/oat-sa/extension-tao-encryption) is installed, the script will set it up with encryption.

Point the instance to a specific server by executing the following command:

```
sudo -u www-data php index.php '\oat\taoSync\scripts\tool\RegisterHandShakeRootURL' --rootUrl=http://tao-central.dev/
```

#### Setting up the Central Server

[](#setting-up-the-central-server)

Run the following to turn a TAO instance into a Central Server.

```
sudo -u www-data php index.php 'oat\taoOffline\scripts\tools\setup\SetupCentralServer'
```

Again, instances with `taoEncryption` will benefit from encryption.

#### Types of available synchronizations

[](#types-of-available-synchronizations)

- Central Server to VM
    - Test Centers
    - Users
    - Deliveries
    - Eligibilities
    - LTI Consumers
- VM to Central Server
    - Test Sessions
    - Results
    - Result Logs
    - LTI Users

#### Overview of the workflow

[](#overview-of-the-workflow)

[![Overview workflow](docs/overview_sync.png)](docs/overview_sync.png)

##### Sequence Diagram

[](#sequence-diagram)

[![Sequence Diagram](docs/sync_flow.png)](docs/sync_flow.png)

#### Synchronizing users with encryption

[](#synchronizing-users-with-encryption)

Every user has been assigned an application key that is used to decrypt the delivery content. Properties that are excluded from the synchronization process can be found under `excludedProperties` in the configuration file `config/taoSync/syncService.conf.php`. Properties that are encrypted are defined inside `config/taoEncryption/encryptUserSyncFormatter.conf.php`.

[![Synchronizing users](docs/sync_users.png)](docs/sync_users.png)

#### Synchronizing deliveries with encryption

[](#synchronizing-deliveries-with-encryption)

During the synchronization of the deliveries, the test package is sent to the client. The client then imports the test and generates a delivery.

*Note: If you are synchronizing a delivery that already exists on the VM a new import of the test will be created.*

[![Synchronizing Deliveries](docs/sync_delivery.png)](docs/sync_delivery.png)

##### Synchronizing results with encryption

[](#synchronizing-results-with-encryption)

The `chunkSize` of a result is an essential configuration parameter that needs to be set in advance; the default is `10`. It can be set depending on the number of variables included in a result.

If you have, for example, a test with 100 items (which means about 400 variables), the total request will contain about 4000 variables. This scenario is likely to overload the server. In this case, reducing the `chunkSize` to a smaller value is advised.

The statuses of a result that needs to be sent can be configured under `statusExecutionsToSync` in `config/taoSync/resultService.conf.php`. Each request to the server will include the number of results. The process will stop after all results have been sent.

[![Synchronizing Results](docs/sync_results.png)](docs/sync_results.png)

#### Synchronizing results - Logs

[](#synchronizing-results---logs)

Each result log is synchronized with the Central Server to maintain a history of the test. The number of logs sent per request is defined in the configuration inside `config/taoSync/SyncDeliveryLogService.conf.php`.

###  Health Score

45

—

FairBetter than 92% of packages

Maintenance53

Moderate activity, may be stable

Popularity17

Limited adoption so far

Community26

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor2

2 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 ~86 days

Recently: every ~224 days

Total

23

Last Release

1006d ago

Major Versions

v0.3.0 → v1.1.02018-07-27

v1.3.0 → v2.0.02018-11-30

v2.4.2 → v3.0.02019-10-11

v2.4.3 → v4.0.02021-02-24

v3.2.0.1 → v4.0.22021-07-05

### 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/348b2cf6408227372fbb22c6e8b0832e1c8c98c5d6b0c88bb220dbdfbcd21a39?d=identicon)[krampstudio](/maintainers/krampstudio)

---

Top Contributors

[![ionutpad](https://avatars.githubusercontent.com/u/31656944?v=4)](https://github.com/ionutpad "ionutpad (29 commits)")[![siwane](https://avatars.githubusercontent.com/u/8009602?v=4)](https://github.com/siwane "siwane (21 commits)")[![Yury-Razhkou](https://avatars.githubusercontent.com/u/51408369?v=4)](https://github.com/Yury-Razhkou "Yury-Razhkou (6 commits)")[![zagovorichev](https://avatars.githubusercontent.com/u/1445911?v=4)](https://github.com/zagovorichev "zagovorichev (4 commits)")[![tikhanovichA](https://avatars.githubusercontent.com/u/1053022?v=4)](https://github.com/tikhanovichA "tikhanovichA (4 commits)")[![edwin-focaloid](https://avatars.githubusercontent.com/u/126317720?v=4)](https://github.com/edwin-focaloid "edwin-focaloid (4 commits)")[![ks16](https://avatars.githubusercontent.com/u/42937157?v=4)](https://github.com/ks16 "ks16 (3 commits)")[![SergiiTao](https://avatars.githubusercontent.com/u/36041347?v=4)](https://github.com/SergiiTao "SergiiTao (2 commits)")[![wazelin](https://avatars.githubusercontent.com/u/2943256?v=4)](https://github.com/wazelin "wazelin (2 commits)")[![alexeyvy](https://avatars.githubusercontent.com/u/41291313?v=4)](https://github.com/alexeyvy "alexeyvy (1 commits)")[![mike-ionut-mihai-sandu-tao](https://avatars.githubusercontent.com/u/50211080?v=4)](https://github.com/mike-ionut-mihai-sandu-tao "mike-ionut-mihai-sandu-tao (1 commits)")[![oatymart](https://avatars.githubusercontent.com/u/43652944?v=4)](https://github.com/oatymart "oatymart (1 commits)")[![gyszucs](https://avatars.githubusercontent.com/u/4942018?v=4)](https://github.com/gyszucs "gyszucs (1 commits)")[![bugalot](https://avatars.githubusercontent.com/u/4217431?v=4)](https://github.com/bugalot "bugalot (1 commits)")[![augustas](https://avatars.githubusercontent.com/u/2705327?v=4)](https://github.com/augustas "augustas (1 commits)")[![jsconan](https://avatars.githubusercontent.com/u/1500098?v=4)](https://github.com/jsconan "jsconan (1 commits)")[![atsymuk](https://avatars.githubusercontent.com/u/11298742?v=4)](https://github.com/atsymuk "atsymuk (1 commits)")[![julien-sebire](https://avatars.githubusercontent.com/u/47318116?v=4)](https://github.com/julien-sebire "julien-sebire (1 commits)")

---

Tags

TAOcomputer-based-assessment

### Embed Badge

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

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

###  Alternatives

[oat-sa/extension-tao-itemqti-pci

1085.9k6](/packages/oat-sa-extension-tao-itemqti-pci)

PHPackages © 2026

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