MetaModels\DcGeneral\Events\Table\MetaModels\Subscriber::ensureTableNamePrefix PHP Method

ensureTableNamePrefix() public method

Prefixes the table name with mm_ if not provided by the user as such. Checks if the table name is legal to the DB.
public ensureTableNamePrefix ( ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\EncodePropertyValueFromWidgetEvent $event ) : void
$event ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\EncodePropertyValueFromWidgetEvent The event.
return void
    public function ensureTableNamePrefix(EncodePropertyValueFromWidgetEvent $event)
    {
        if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel' || $event->getProperty() !== 'tableName') {
            return;
        }
        // See #49.
        $tableName = strtolower($event->getValue());
        if (!strlen($tableName)) {
            throw new \RuntimeException('Table name not given');
        }
        // Force mm_ prefix.
        if (substr($tableName, 0, 3) !== 'mm_') {
            $tableName = 'mm_' . $tableName;
        }
        $dataProvider = $event->getEnvironment()->getDataProvider('tl_metamodel');
        // New model, ensure the table does not exist.
        if (!$event->getModel()->getId()) {
            TableManipulation::checkTableDoesNotExist($tableName);
        } else {
            // Edited model, ensure the value is unique and then that the table does not exist.
            $oldVersion = $dataProvider->fetch($dataProvider->getEmptyConfig()->setId($event->getModel()->getId()));
            if ($oldVersion->getProperty('tableName') !== $event->getModel()->getProperty('tableName')) {
                TableManipulation::checkTableDoesNotExist($tableName);
            }
        }
        $event->setValue($tableName);
    }