Files

167 lines
4.8 KiB
PHP
Executable File

<?php
/**
* Olegnax
*
* NOTICE OF LICENSE
*
* This source file is subject to the Olegnax.com license that is
* available through the world-wide-web at this URL:
* https://www.olegnax.com/license
*
*
* @category Olegnax
* @package Olegnax_Athlete2
* @copyright Copyright (c) 2023 Olegnax (http://www.olegnax.com/)
*/
namespace Olegnax\Athlete2\Setup;
use Magento\Framework\DB\Ddl\Table;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\DB\Adapter\AdapterInterface;
class InstallSchema implements InstallSchemaInterface {
/**
* {@inheritdoc}
*/
public function install( SchemaSetupInterface $setup, ModuleContextInterface $context ) {
$setup->startSetup();
$this->_install( $setup );
$setup->endSetup();
}
public function installMagefanBlog( SchemaSetupInterface $setup ) {
$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);
}
private function _install( SchemaSetupInterface $setup ) {
$tables = [
'magefan_blog_post' => [
'ox_post_list_style' => [
'type' => Table::TYPE_TEXT,
'size' => 255,
'nullable' => true,
],
],
];
$connection = $setup->getConnection();
if ( !$setup->tableExists( 'magefan_blog_post' ) ) {
$this->installMagefanBlog( $setup );
}
foreach ( $tables as $table_name => $table ) {
if ( !$setup->tableExists( $table_name ) ) {
continue;
}
$_table = $setup->getTable( $table_name );
foreach ( $table as $field_name => $field ) {
foreach ( [
'type' => Table::TYPE_INTEGER,
'size' => null,
'comment' => 'Added by plugin',
] as $attr_name => $attr ) {
if ( !array_key_exists( $attr_name, $field ) ) {
$field[ $attr_name ] = $attr;
}
}
$connection->addColumn( $_table, $field_name, $field );
}
}
}
}