Files
shortlink/config/Migrations/20170902161830_version450.php
T
2024-03-17 11:39:27 +07:00

304 lines
9.5 KiB
PHP

<?php
use Migrations\AbstractMigration;
class Version450 extends AbstractMigration
{
public $autoId = false;
public function up()
{
$this->execute("SET SESSION sql_mode = ''");
$table_prefix = $this->getAdapter()->getOption('table_prefix');
$this->table('statistics')
->removeIndexByName('idx_referralearn_referralid')
->update();
$minimum_withdrawal_amount = $this->get_option('minimum_withdrawal_amount');
$rows = [
[
'name' => 'counter_start',
'value' => 'DOMContentLoaded',
],
[
'name' => 'links_banned_words',
'value' => '',
],
[
'name' => 'site_meta_title',
'value' => $this->get_option('site_name'),
],
[
'name' => 'wallet_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'paypal_withdrawal_enable',
'value' => ($this->get_option('paypal_enable') === 'yes') ? 1 : 0,
],
[
'name' => 'paypal_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'payza_withdrawal_enable',
'value' => ($this->get_option('payza_enable') === 'yes') ? 1 : 0,
],
[
'name' => 'payza_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'skrill_withdrawal_enable',
'value' => ((bool)$this->get_option('skrill_enable')) ? 1 : 0,
],
[
'name' => 'skrill_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'bitcoin_withdrawal_enable',
'value' => (
$this->get_option('coinbase_enable') === 'yes' ||
(bool)$this->get_option('coinpayments_enable')
) ? 1 : 0,
],
[
'name' => 'bitcoin_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'webmoney_withdrawal_enable',
'value' => ($this->get_option('webmoney_enable') === 'yes') ? 1 : 0,
],
[
'name' => 'webmoney_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'perfectmoney_withdrawal_enable',
'value' => ((bool)$this->get_option('perfectmoney_enable')) ? 1 : 0,
],
[
'name' => 'perfectmoney_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'payeer_withdrawal_enable',
'value' => ((bool)$this->get_option('payeer_enable')) ? 1 : 0,
],
[
'name' => 'payeer_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'banktransfer_withdrawal_enable',
'value' => ($this->get_option('banktransfer_enable') === 'yes') ? 1 : 0,
],
[
'name' => 'banktransfer_withdrawal_amount',
'value' => $minimum_withdrawal_amount,
],
[
'name' => 'custom_withdrawal_methods',
'value' => '',
],
[
'name' => 'member_theme',
'value' => 'AdminlteMemberTheme',
],
[
'name' => 'member_adminlte_theme_skin',
'value' => 'skin-blue',
],
[
'name' => 'admin_theme',
'value' => 'AdminlteAdminTheme',
],
[
'name' => 'admin_adminlte_theme_skin',
'value' => 'skin-blue',
],
];
$this->table('options')
->insert($rows)
->saveData();
/**
* links table
*/
$this->execute("ALTER TABLE `{$table_prefix}links` CHANGE `hits` " .
"`hits` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0';");
$this->table('announcements')
->removeColumn('slug')
->update();
$this->execute("UPDATE `{$table_prefix}users` SET `withdrawal_method`='bitcoin' " .
"WHERE `withdrawal_method` = 'coinbase';");
$this->execute("UPDATE `{$table_prefix}withdraws` SET `method`='bitcoin' " .
"WHERE `method` = 'coinbase';");
$this->table('campaign_items')
->changeColumn('weight', 'float', [
'default' => 0,
'null' => false,
'precision' => 18,
'scale' => 15,
])
->update();
$this->table('campaigns')
->changeColumn('website_url', 'text', [
'default' => null,
'limit' => null,
'null' => true,
])
->update();
$this->table('pages')
->addColumn('meta_title', 'string', [
'default' => '',
'limit' => 255,
'null' => false,
'after' => 'content',
])
->addColumn('meta_description', 'text', [
'default' => null,
'limit' => null,
'null' => true,
'after' => 'meta_title',
])
->update();
$this->table('posts')
->addColumn('meta_title', 'string', [
'default' => '',
'limit' => 255,
'null' => false,
'after' => 'description',
])
->addColumn('meta_description', 'text', [
'default' => null,
'limit' => null,
'null' => true,
'after' => 'meta_title',
])
->update();
$this->table('plans')
->addColumn('hidden', 'boolean', [
'default' => 0,
'limit' => null,
'null' => false,
'signed' => false,
'after' => 'enable',
])
->addIndex(['enable', 'hidden'], ['name' => 'idx_enable_hidden'])
->update();
}
public function get_option($name)
{
$table_prefix = $this->getAdapter()->getOption('table_prefix');
$row = $this->fetchRow("SELECT * FROM `{$table_prefix}options` WHERE `name` = '{$name}'");
if (empty($row)) {
return '';
}
return $row['value'];
}
public function down()
{
$this->execute("SET SESSION sql_mode = ''");
$table_prefix = $this->getAdapter()->getOption('table_prefix');
$this->table('statistics')
->addIndex(['referral_earn', 'referral_id'], ['name' => 'idx_referralearn_referralid'])
->update();
$items = implode(",", [
"'counter_start'",
"'links_banned_words'",
"'site_meta_title'",
"'wallet_withdrawal_amount'",
"'paypal_withdrawal_enable'",
"'paypal_withdrawal_amount'",
"'payza_withdrawal_enable'",
"'payza_withdrawal_amount'",
"'skrill_withdrawal_enable'",
"'skrill_withdrawal_amount'",
"'bitcoin_withdrawal_enable'",
"'bitcoin_withdrawal_amount'",
"'webmoney_withdrawal_enable'",
"'webmoney_withdrawal_amount'",
"'perfectmoney_withdrawal_enable'",
"'perfectmoney_withdrawal_amount'",
"'payeer_withdrawal_enable'",
"'payeer_withdrawal_amount'",
"'banktransfer_withdrawal_enable'",
"'banktransfer_withdrawal_amount'",
"'custom_withdrawal_methods'",
"'member_theme'",
"'member_adminlte_theme_skin'",
"'admin_theme'",
"'admin_adminlte_theme_skin'",
]);
$this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` IN ({$items});");
/**
* links table
*/
$this->execute("ALTER TABLE `{$table_prefix}links` CHANGE `hits` " .
"`hits` INT(10) UNSIGNED NOT NULL DEFAULT '0';");
$this->table('announcements')
->addColumn('slug', 'string', [
'default' => '',
'limit' => 255,
'null' => false,
])
->update();
$this->table('campaign_items')
->changeColumn('weight', 'float', [
'default' => 0,
'null' => false,
'precision' => 5,
'scale' => 2,
])
->update();
$this->table('campaigns')
->changeColumn('website_url', 'string', [
'default' => '',
'limit' => 500,
'null' => false,
])
->update();
$this->table('pages')
->removeColumn('meta_title')
->removeColumn('meta_description')
->update();
$this->table('posts')
->removeColumn('meta_title')
->removeColumn('meta_description')
->update();
$this->table('plans')
->removeIndexByName('idx_enable_hidden')
->removeColumn('hidden')
->update();
}
}