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'));
 }
Exemplo n.º 4
0
 /**
  * @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());
     }
 }
Exemplo n.º 5
0
 /**
  * @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'));
 }
Exemplo n.º 8
0
 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());
     }
 }
Exemplo n.º 9
0
 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());
     }
 }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 12
0
 public function postGenerateSchema(GenerateSchemaEventArgs $args)
 {
     MessagesSchema::create($args->getSchema());
 }
 public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs)
 {
     $schema = $eventArgs->getSchema();
     $this->addRoutingTranslationsTable($schema);
 }
Exemplo n.º 14
0
 /**
  * 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'));
 }
Exemplo n.º 15
0
 /**
  * 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);
 }
Exemplo n.º 16
0
 /**
  * Adds the Contao DCA information to the Doctrine schema.
  *
  * @param GenerateSchemaEventArgs $event
  */
 public function postGenerateSchema(GenerateSchemaEventArgs $event)
 {
     $this->provider->appendToSchema($event->getSchema());
 }