123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 |
- <?php
- /**
- * Copyright © 2015 Ihor Vansach (ihor@magefan.com). All rights reserved.
- * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
- *
- * Glory to Ukraine! Glory to the heroes!
- */
- namespace Magefan\Blog\Setup;
- use Magento\Framework\Setup\InstallSchemaInterface;
- use Magento\Framework\Setup\ModuleContextInterface;
- use Magento\Framework\Setup\SchemaSetupInterface;
- use Magento\Framework\DB\Adapter\AdapterInterface;
- /**
- * Blog setup
- */
- class InstallSchema implements InstallSchemaInterface
- {
- /**
- * {@inheritdoc}
- * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
- */
- public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
- {
- $installer = $setup;
- $installer->startSetup();
- /**
- * Create table 'magefan_blog_post'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_post')
- )->addColumn(
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['identity' => true, 'nullable' => false, 'primary' => true],
- 'Post ID'
- )->addColumn(
- 'title',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => true],
- 'Post Title'
- )->addColumn(
- 'meta_keywords',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '64k',
- ['nullable' => true],
- 'Post Meta Keywords'
- )->addColumn(
- 'meta_description',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '64k',
- ['nullable' => true],
- 'Post Meta Description'
- )->addColumn(
- 'identifier',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 100,
- ['nullable' => true, 'default' => null],
- 'Post String Identifier'
- )->addColumn(
- 'content_heading',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => true],
- 'Post Content Heading'
- )->addColumn(
- 'content',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '2M',
- [],
- 'Post Content'
- )->addColumn(
- 'creation_time',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Post Creation Time'
- )->addColumn(
- 'update_time',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Post Modification Time'
- )->addColumn(
- 'publish_time',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Post Publish Time'
- )->addColumn(
- 'is_active',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['nullable' => false, 'default' => '1'],
- 'Is Post Active'
- )->addIndex(
- $installer->getIdxName('magefan_blog_post', ['identifier']),
- ['identifier']
- )->addIndex(
- $setup->getIdxName(
- $installer->getTable('magefan_blog_post'),
- ['title', 'meta_keywords', 'meta_description', 'identifier', 'content'],
- AdapterInterface::INDEX_TYPE_FULLTEXT
- ),
- ['title', 'meta_keywords', 'meta_description', 'identifier', 'content'],
- ['type' => AdapterInterface::INDEX_TYPE_FULLTEXT]
- )->setComment(
- 'Magefan Blog Post Table'
- );
- $installer->getConnection()->createTable($table);
- /**
- * Create table 'magefan_blog_post_store'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_post_store')
- )->addColumn(
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Post ID'
- )->addColumn(
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['unsigned' => true, 'nullable' => false, 'primary' => true],
- 'Store ID'
- )->addIndex(
- $installer->getIdxName('magefan_blog_post_store', ['store_id']),
- ['store_id']
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_store', 'post_id', 'magefan_blog_post', 'post_id'),
- 'post_id',
- $installer->getTable('magefan_blog_post'),
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_store', 'store_id', 'store', 'store_id'),
- 'store_id',
- $installer->getTable('store'),
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->setComment(
- 'Magefan Blog Post To Store Linkage Table'
- );
- $installer->getConnection()->createTable($table);
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_category')
- )->addColumn(
- 'category_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['identity' => true, 'nullable' => false, 'primary' => true],
- 'Category ID'
- )->addColumn(
- 'title',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => true],
- 'Category Title'
- )->addColumn(
- 'meta_keywords',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '64k',
- ['nullable' => true],
- 'Category Meta Keywords'
- )->addColumn(
- 'meta_description',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '64k',
- ['nullable' => true],
- 'Category Meta Description'
- )->addColumn(
- 'identifier',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 100,
- ['nullable' => true, 'default' => null],
- 'Category String Identifier'
- )->addColumn(
- 'content_heading',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => true],
- 'Category Content Heading'
- )->addColumn(
- 'content',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- '2M',
- [],
- 'Category Content'
- )->addColumn(
- 'path',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => true],
- 'Category Path'
- )->addColumn(
- 'position',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['nullable' => false],
- 'Category Position'
- )->addColumn(
- 'is_active',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['nullable' => false, 'default' => '1'],
- 'Is Category Active'
- )->addIndex(
- $installer->getIdxName('magefan_blog_category', ['identifier']),
- ['identifier']
- )->addIndex(
- $setup->getIdxName(
- $installer->getTable('magefan_blog_category'),
- ['title', 'meta_keywords', 'meta_description', 'identifier', 'content'],
- AdapterInterface::INDEX_TYPE_FULLTEXT
- ),
- ['title', 'meta_keywords', 'meta_description', 'identifier', 'content'],
- ['type' => AdapterInterface::INDEX_TYPE_FULLTEXT]
- )->setComment(
- 'Magefan Blog Category Table'
- );
- $installer->getConnection()->createTable($table);
- /**
- * Create table 'magefan_blog_category_store'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_category_store')
- )->addColumn(
- 'category_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Category ID'
- )->addColumn(
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['unsigned' => true, 'nullable' => false, 'primary' => true],
- 'Store ID'
- )->addIndex(
- $installer->getIdxName('magefan_blog_category_store', ['store_id']),
- ['store_id']
- )->addForeignKey(
- $installer->getFkName('magefan_blog_category_store', 'category_id', 'magefan_blog_category', 'category_id'),
- 'category_id',
- $installer->getTable('magefan_blog_category'),
- 'category_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->addForeignKey(
- $installer->getFkName('magefan_blog_category_store', 'store_id', 'store', 'store_id'),
- 'store_id',
- $installer->getTable('store'),
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->setComment(
- 'Magefan Blog Category To Store Linkage Table'
- );
- $installer->getConnection()->createTable($table);
- /**
- * Create table 'magefan_blog_post_category'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_post_category')
- )->addColumn(
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Post ID'
- )->addColumn(
- 'category_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Category ID'
- )->addIndex(
- $installer->getIdxName('magefan_blog_post_category', ['category_id']),
- ['category_id']
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_category', 'post_id', 'magefan_blog_post', 'post_id'),
- 'post_id',
- $installer->getTable('magefan_blog_post'),
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_category', 'category_id', 'magefan_blog_category', 'category_id'),
- 'category_id',
- $installer->getTable('magefan_blog_category'),
- 'category_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->setComment(
- 'Magefan Blog Post To Category Linkage Table'
- );
- $installer->getConnection()->createTable($table);
-
- /**
- * Create table 'magefan_blog_post_relatedproduct'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_post_relatedproduct')
- )->addColumn(
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Post ID'
- )->addColumn(
- 'related_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['unsigned' => true, 'nullable' => false, 'primary' => true],
- 'Related Product ID'
- )->addIndex(
- $installer->getIdxName('magefan_blog_post_relatedproduct', ['related_id']),
- ['related_id']
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_relatedproduct', 'post_id', 'magefan_blog_post', 'post_id'),
- 'post_id',
- $installer->getTable('magefan_blog_post'),
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_relatedproduct', 'related_id', 'catalog_product_entity', 'entity_id'),
- 'related_id',
- $installer->getTable('catalog_product_entity'),
- 'entity_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->setComment(
- 'Magefan Blog Post To Product Linkage Table'
- );
- $installer->getConnection()->createTable($table);
- /**
- * Create table 'magefan_blog_post_relatedproduct'
- */
- $table = $installer->getConnection()->newTable(
- $installer->getTable('magefan_blog_post_relatedpost')
- )->addColumn(
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Post ID'
- )->addColumn(
- 'related_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['nullable' => false, 'primary' => true],
- 'Related Post ID'
- )->addIndex(
- $installer->getIdxName('magefan_blog_post_relatedproduct', ['related_id']),
- ['related_id']
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_relatedproduct1', 'post_id', 'magefan_blog_post', 'post_id'),
- 'post_id',
- $installer->getTable('magefan_blog_post'),
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->addForeignKey(
- $installer->getFkName('magefan_blog_post_relatedproduct2', 'related_id', 'magefan_blog_post', 'post_id'),
- 'post_id',
- $installer->getTable('magefan_blog_post'),
- 'post_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- )->setComment(
- 'Magefan Blog Post To Post Linkage Table'
- );
- $installer->getConnection()->createTable($table);
- $installer->endSetup();
- }
- }
|