public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); //get the entity meta $meta = $eventArgs->getEntityManager()->getClassMetadata($this->config->getZfcUserEntityClass()); //get the table name from the entity $revisionsTable = $schema->createTable($this->config->getRevisionTableName()); $revisionsTable->addColumn('id', $this->config->getRevisionIdFieldType(), array('autoincrement' => true)); $revisionsTable->addColumn('timestamp', 'datetime'); $revisionsTable->addColumn('note', 'text', array('notnull' => false)); $revisionsTable->addColumn('ipaddress', 'text', array('notnull' => false)); $localColumnNames = array(); $foreignColumnNames = array(); foreach ($meta->getIdentifier() as $primaryKey) { $columnName = $meta->getColumnName($primaryKey); $foreignColumnNames[] = $columnName; $columnName = preg_replace('/user[^a-zA-Z0-9]*/', '', $columnName); $localColumnName = 'user_' . $columnName; $localColumnNames[] = $localColumnName; $fieldType = $meta->getTypeOfField($primaryKey); $revisionsTable->addColumn($localColumnName, $fieldType, array('notnull' => false)); } //add the tablename and primary key from the entity meta $revisionsTable->addForeignKeyConstraint($meta->getTableName(), $localColumnNames, $foreignColumnNames); $revisionsTable->setPrimaryKey(array('id')); }
public function postGenerateSchema(GenerateSchemaEventArgs $event) { foreach ($event->getSchema()->getTables() as $table) { $table->addOption('engine', $GLOBALS['ZConfig']['DBInfo']['databases']['default']['dbtabletype']); $table->addOption('charset', $GLOBALS['ZConfig']['DBInfo']['databases']['default']['charset']); $table->addOption('collate', $GLOBALS['ZConfig']['DBInfo']['databases']['default']['collate']); } }
public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $revisionsTable = $schema->createTable($this->config->getRevisionTableName()); $revisionsTable->addColumn('id', $this->config->getRevisionIdFieldType(), array('autoincrement' => true)); $revisionsTable->addColumn('timestamp', 'datetime'); $revisionsTable->addColumn('username', 'string'); $revisionsTable->setPrimaryKey(array('id')); }
/** * @param GenerateSchemaEventArgs $args */ public function postGenerateSchema(GenerateSchemaEventArgs $args) { $schema = $args->getSchema(); try { if (!$schema->hasTable(MAUTIC_TABLE_PREFIX . 'lead_fields')) { return; } $objects = ['lead' => 'leads', 'company' => 'companies']; foreach ($objects as $object => $tableName) { $table = $schema->getTable(MAUTIC_TABLE_PREFIX . $tableName); //get a list of fields $fields = $args->getEntityManager()->getConnection()->createQueryBuilder()->select('f.alias, f.is_unique_identifer as is_unique, f.type, f.object')->from(MAUTIC_TABLE_PREFIX . 'lead_fields', 'f')->where("f.object = '{$object}'")->orderBy('f.field_order', 'ASC')->execute()->fetchAll(); // Compile which ones are unique identifiers // Email will always be included first $uniqueFields = 'lead' === $object ? ['email' => 'email'] : ['companyemail' => 'companyemail']; foreach ($fields as $f) { if ($f['is_unique'] && $f['alias'] != 'email') { $uniqueFields[$f['alias']] = $f['alias']; } $columnDef = FieldModel::getSchemaDefinition($f['alias'], $f['type'], !empty($f['is_unique'])); $table->addColumn($columnDef['name'], $columnDef['type'], $columnDef['options']); if ('text' != $columnDef['type']) { $table->addIndex([$columnDef['name']], MAUTIC_TABLE_PREFIX . $f['alias'] . '_search'); } } // Only allow indexes for string types $columns = $table->getColumns(); /** @var \Doctrine\DBAL\Schema\Column $column */ foreach ($columns as $column) { $type = $column->getType(); $name = $column->getName(); if (!$type instanceof StringType) { unset($uniqueFields[$name]); } elseif (isset($uniqueFields[$name])) { $uniqueFields[$name] = $uniqueFields[$name]; } } if (count($uniqueFields) > 1) { // Only use three to prevent max key length errors $uniqueFields = array_slice($uniqueFields, 0, 3); $table->addIndex($uniqueFields, MAUTIC_TABLE_PREFIX . 'unique_identifier_search'); } switch ($object) { case 'lead': $table->addIndex(['attribution', 'attribution_date'], MAUTIC_TABLE_PREFIX . 'contact_attribution'); break; case 'company': $table->addIndex(['companyname', 'companyemail'], MAUTIC_TABLE_PREFIX . 'company_filter'); $table->addIndex(['companyname', 'companycity', 'companycountry', 'companystate'], MAUTIC_TABLE_PREFIX . 'company_match'); break; } } } catch (\Exception $e) { //table doesn't exist or something bad happened so oh well $this->logger->addError('SCHEMA ERROR: ' . $e->getMessage()); } }
/** * @param GenerateSchemaEventArgs $eventArgs */ public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $table = $schema->createTable('revisions'); $table->addColumn('id', 'integer', array('autoincrement' => true)); $table->addColumn('timestamp', 'datetime'); $table->addColumn('username', 'string'); $table->addColumn('draft', 'boolean'); $table->setPrimaryKey(array('id')); }
public function postGenerateSchema(\Doctrine\ORM\Tools\Event\GenerateSchemaEventArgs $event) { $schema = $event->getSchema(); // When using multiple entity managers ignore events that are triggered by other entity managers. if ($event->getEntityManager()->getMetadataFactory()->isTransient('JMS\\JobQueueBundle\\Entity\\Job')) { return; } $table = $schema->createTable('jms_job_related_entities'); $table->addColumn('job_id', 'bigint', array('nullable' => false, 'unsigned' => true)); $table->addColumn('related_class', 'string', array('nullable' => false, 'length' => '150')); $table->addColumn('related_id', 'string', array('nullable' => false, 'length' => '100')); $table->setPrimaryKey(array('job_id', 'related_class', 'related_id')); $table->addForeignKeyConstraint('jms_jobs', array('job_id'), array('id')); }
public function postGenerateSchema(GenerateSchemaEventArgs $event) { $schema = $event->getSchema(); // When using multiple entity managers ignore events that are triggered by other entity managers. if ($event->getEntityManager()->getMetadataFactory()->isTransient('JMS\\JobQueueBundle\\Entity\\Job')) { return; } $table = $schema->createTable('jms_job_statistics'); $table->addColumn('job_id', 'bigint', array('nullable' => false, 'unsigned' => true)); $table->addColumn('characteristic', 'string', array('length' => 30, 'nullable' => false)); $table->addColumn('createdAt', 'datetime', array('nullable' => false)); $table->addColumn('charValue', 'float', array('nullable' => false)); $table->setPrimaryKey(array('job_id', 'characteristic', 'createdAt')); }
public function postGenerateSchema(GenerateSchemaEventArgs $args) { $schema = $args->getSchema(); try { if (!$schema->hasTable(MAUTIC_TABLE_PREFIX . 'lead_fields')) { return; } $table = $schema->getTable(MAUTIC_TABLE_PREFIX . 'leads'); //get a list of fields $fields = $this->factory->getModel('lead.field')->getRepository()->getFieldAliases(); // Compile which ones are unique identifiers // Email will always be included first $uniqueFields = array('email' => 'email'); foreach ($fields as $f) { if ($f['is_unique'] && $f['alias'] != 'email') { $uniqueFields[$f['alias']] = $f['alias']; } if (in_array($f['alias'], array('country', 'email')) || $f['is_unique']) { $table->addColumn($f['alias'], 'string', array('notnull' => false)); $table->addIndex(array($f['alias']), MAUTIC_TABLE_PREFIX . 'lead_field' . $f['alias'] . '_search'); } elseif ($f['is_unique']) { $table->addColumn($f['alias'], 'string', array('notnull' => false)); } else { $table->addColumn($f['alias'], 'text', array('notnull' => false)); } } // Only allow indexes for string types $columns = $table->getColumns(); /** @var \Doctrine\DBAL\Schema\Column $column */ foreach ($columns as $column) { $type = $column->getType(); $name = $column->getName(); if (!$type instanceof StringType) { unset($uniqueFields[$name]); } elseif (isset($uniqueFields[$name])) { $uniqueFields[$name] = $uniqueFields[$name]; } } if (count($uniqueFields) > 1) { // Only use three to prevent max key length errors $uniqueFields = array_slice($uniqueFields, 0, 3); $table->addIndex($uniqueFields, MAUTIC_TABLE_PREFIX . 'unique_identifier_search'); } } catch (\Exception $e) { //table doesn't exist or something bad happened so oh well error_log($e->getMessage()); } }
public function postGenerateSchema(GenerateSchemaEventArgs $args) { $schema = $args->getSchema(); if (!$schema->hasTable(MAUTIC_TABLE_PREFIX . 'lead_fields')) { return; } $table = $schema->getTable(MAUTIC_TABLE_PREFIX . 'leads'); try { //get a list of fields $fields = $this->factory->getModel('lead.field')->getRepository()->getFieldAliases(); foreach ($fields as $f) { $table->addColumn($f['alias'], 'text', array('notnull' => false)); } } catch (\Exception $e) { //table doesn't exist or something bad happened so oh well error_log($e->getMessage()); } }
public function postGenerateSchema(GenerateSchemaEventArgs $args) { $schema = $args->getSchema(); $this->container->get('security.acl.dbal.schema')->addToSchema($schema); }
public function postGenerateSchema(GenerateSchemaEventArgs $args) { $schema = $args->getSchema(); $this->schema->addToSchema($schema); }
public function postGenerateSchema(GenerateSchemaEventArgs $args) { MessagesSchema::create($args->getSchema()); }
public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $this->addRoutingTranslationsTable($schema); }
/** * Create the pi_routing table for the route management. * * @return ObjectRepository * @access protected * @author Etienne de Longeaux <*****@*****.**> * @since 2012-02-27 */ protected function _addRoutingTable(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $table = $schema->createTable('pi_routing'); $table->addColumn('id', 'integer')->setAutoincrement(true); //$table->addColumn('page_id', 'bigint')->setNotnull(false); $table->addColumn('route', 'string')->setNotnull(false); $table->addColumn('locales', 'array'); $table->addColumn('defaults', 'array'); $table->addColumn('requirements', 'array'); $table->setPrimaryKey(array('id'), true); $table->addUniqueIndex(array('route')); //$table->addIndex(array('page_id')); //$table->addNamedForeignKeyConstraint('FK_ID_PAGE', 'pi_page', $localColumnNames = array('page_id'), $foreignColumnNames = array('id')); }
/** * Methos which will be called when the event is thrown. * * * @param \Doctrine\ORM\Event\GenerateSchemaEventArgs $eventArgs * * @author Etienne de Longeaux <*****@*****.**> */ public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $object_event = new TriggerEvent($eventArgs, $this->container, $schema); $this->container->get('event_dispatcher')->dispatch(TriggerEvents::TRIGGER_EVENT_POSTGENERATESCHEM, $object_event); }
/** * Adds the Contao DCA information to the Doctrine schema. * * @param GenerateSchemaEventArgs $event */ public function postGenerateSchema(GenerateSchemaEventArgs $event) { $this->provider->appendToSchema($event->getSchema()); }