PHPackages                             hmmh/gridelements-doctor - 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. [Database &amp; ORM](/categories/database)
4. /
5. hmmh/gridelements-doctor

ActiveLibrary[Database &amp; ORM](/categories/database)

hmmh/gridelements-doctor
========================

Validate and repair gridelements infrastructure

0.9.0(6y ago)12GPL-2.0-or-laterPHPPHP ^7.1

Since Aug 21Pushed 6y ago4 watchersCompare

[ Source](https://github.com/hmmh/gridelements-doctor)[ Packagist](https://packagist.org/packages/hmmh/gridelements-doctor)[ RSS](/packages/hmmh-gridelements-doctor/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Gridelements doctor
===================

[](#gridelements-doctor)

[![gridelements](ansilogo.png "Gridelements Doctor")](ansilogo.png)

This is a repair tool to check and fix all Gridelements items in a TYPO3 installation.

Scenario
--------

[](#scenario)

A TYPO3 upgrade from version 6.2 to 7.6 LTS or 8.7 LTS will also require a Gridelements upgrade from version 3.4.0 (max. version for TYPO3 6.2) to 7.0.0 (min. version for TYPO3 7.6 LTS) or 8.0.0 (min. version for TYPO3 8.7 LTS). After a successful migration, the Gridelements infrastructure in the frontend will have no effect until you change or save the content elements in the backend.

Problem
-------

[](#problem)

The new update hook of Gridelements should be fix invalid maintenance in the backend. But that makes sense only for new TYPO3 installations and a fresh or blank content archive. During an upgrade with a large content archive over several years, a comprehensive migration should have take place before! If you do not do that, you have messed up very quickly, often inconspicuous, many content elements that are difficult or impossible to restore.

However, such a migration (or misbehavior-fix-tool) will not be provided by Gridelements.

So we want to introduce that missing feature with this doctor tool.

[Special thanks (goes) to Jo Hasenau](https://gitlab.com/cybercraft.jh)

Solution
--------

[](#solution)

The doctor checks the principles of the new localization of TYPO3 (see `l18n_parent`) for Gridelements behavior:

- an unconnected container can only have unconnected children (free mode)
- a connected container (localized) can only have connected children (connected mode)

Following scenarios will be also fixed with this doctor:

**All children of a connected container are not connected**

[Scenario 1](Documentation/Scenario1.png)

The solution: The container will be stored unconnected.

**All children of an unconnected container are connected**

[Scenario 2](Documentation/Scenario1.png)

The solution: The container will be stored connected (with the help of his children).

**The children of a container are mixed (connected or free mode)**

[Scenario 3](Documentation/Scenario1.png)

The solution: The container will be stored unconnected and all children will be also stored unconnected.

Following rules are checked and fixed:

- [Scenario 4](Documentation/Scenario1.png) Available container of default language should not have a localized parent (`l18n_parent`).
- [Scenario 5](Documentation/Scenario2.png) Available children of default language should not have a localized parent (`l18n_parent`).
- [Scenario 6](Documentation/Scenario3.png) Available connected children must have the right column (`tx_gridelements_columns`).
- [Scenario 7](Documentation/Scenario4.png) Available connected children should not connected to the right containers (`tx_gridelements_container`).
- [Scenario 8](Documentation/Scenario5.png) Available connected children should not connected to multiple containers (`tx_gridelements_container`).
- [Scenario 9](Documentation/Scenario6.png) Available connected children should not have less origin children (`tx_gridelements_container`).
- [Scenario 10](Documentation/Scenario7.png) The amount of available connected children must be matched in the belonging container (`tx_gridelements_children`).

Following rules are also checked, but are not fixable:

- [Scenario 11](Documentation/Scenario8.png) Available children of a container should not have a different language (`sys_language_uid`).

The reference index (`sys_refindex`) will be rebuild - because it is a faster updater than the official update task.

**Important notice**

Beware of the different behavior of the new localization modes of TYPO3 from Version 7.6 LTS and the restriction rules of Gridelements from Version 7. This may require a new editorial training that should follow this principle more and describes how content needs to be localized. Some tricks (or misbehavior) that you could still apply as editor before will no longer work.

Installation
------------

[](#installation)

Development:

```
    $ git clone https://github.com/hmmh/gridelements-doctor/ griddoc
    $ composer install

```

Production:

```
    $ composer global require hmmh/gridelements-doctor

```

Preparation
-----------

[](#preparation)

Copy the `.env.template` file to `.env` and adjust the credentials for your database connection.

Application
-----------

[](#application)

Development:

```
    $ composer doctor

```

Production (depends on PATH environment):

```
    $ griddoc --help

```

Wishlist
========

[](#wishlist)

1 - TYPO3 console support
-------------------------

[](#1---typo3-console-support)

Implement "gridelements doctor" to an TYPO3 console task and provide it as a TYPO3 extension:

**Application**

```
    $ typo3cms gridelements:doctor
    $ typo3cms gridelements:doctor --heal

```

2 - TYPO3 backend support
-------------------------

[](#2---typo3-backend-support)

Implement "gridelements Doctor" to TYPO3 backend with scheduler task and examination room.

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Unknown

Total

1

Last Release

2456d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0fbcb5c834ad511bbf12b303f38026f1c00466d4e2fe1e96f5bcfbae83779ac9?d=identicon)[nimayneb](/maintainers/nimayneb)

---

Top Contributors

[![woemar](https://avatars.githubusercontent.com/u/42969992?v=4)](https://github.com/woemar "woemar (3 commits)")

---

Tags

migrationvalidatetypo3migratedoctorGridelementsoptimizerepair

### Embed Badge

![Health badge](/badges/hmmh-gridelements-doctor/health.svg)

```
[![Health](https://phpackages.com/badges/hmmh-gridelements-doctor/health.svg)](https://phpackages.com/packages/hmmh-gridelements-doctor)
```

###  Alternatives

[bizley/migration

Migration generator for Yii 2.

297374.3k11](/packages/bizley-migration)[in2code/migration

Framework for any kind of TYPO3 migrations and imports. Also exports and imports content from and to json files.

6277.0k3](/packages/in2code-migration)[a9f/typo3-fractor

TYPO3 extension for the File Read-Analyse-Change Tool. Allows modifying XML files

17213.8k36](/packages/a9f-typo3-fractor)[sayeed/custom-migrate

Custom migrate in laravel. You can individual file migrate here

2126.0k](/packages/sayeed-custom-migrate)[phpixie/migrate

PHPixie migrations component

1116.8k2](/packages/phpixie-migrate)

PHPackages © 2026

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