execute("SET SESSION sql_mode = ''"); $table_prefix = $this->getAdapter()->getOption('table_prefix'); $this->table('i18n') ->changeColumn('model', 'string', [ 'default' => null, 'limit' => 20, 'null' => false, ]) ->changeColumn('field', 'string', [ 'default' => null, 'limit' => 20, 'null' => false, ]) ->update(); $interstitial_prices = unserialize($this->getOption('interstitial_price')); $payout_rates_interstitial = []; foreach ($interstitial_prices as $country => $interstitial_price) { $payout_rates_interstitial[$country][2] = (isset($interstitial_price[2]['publisher'])) ? $interstitial_price[2]['publisher'] : ''; $payout_rates_interstitial[$country][3] = (isset($interstitial_price[3]['publisher'])) ? $interstitial_price[3]['publisher'] : ''; } $banner_prices = unserialize($this->getOption('banner_price')); $payout_rates_banner = []; foreach ($banner_prices as $country => $banner_price) { $payout_rates_banner[$country][2] = (isset($banner_price[2]['publisher'])) ? $banner_price[2]['publisher'] : ''; $payout_rates_banner[$country][3] = (isset($banner_price[3]['publisher'])) ? $banner_price[3]['publisher'] : ''; } $popup_prices = unserialize($this->getOption('popup_price')); $payout_rates_popup = []; foreach ($popup_prices as $country => $popup_price) { $payout_rates_popup[$country][2] = (isset($popup_price[2]['publisher'])) ? $popup_price[2]['publisher'] : ''; $payout_rates_popup[$country][3] = (isset($popup_price[3]['publisher'])) ? $popup_price[3]['publisher'] : ''; } $rows = [ [ 'name' => 'seo_keywords', 'value' => 'earn money, short link, get paid', ], [ 'name' => 'paystack_enable', 'value' => 0, ], [ 'name' => 'paystack_secret_key', 'value' => '', ], [ 'name' => 'earning_mode', 'value' => (is_app_installed()) ? 'campaign' : 'simple', ], [ 'name' => 'payout_rates_interstitial', 'value' => serialize($payout_rates_interstitial), ], [ 'name' => 'payout_rates_banner', 'value' => serialize($payout_rates_banner), ], [ 'name' => 'payout_rates_popup', 'value' => serialize($payout_rates_popup), ], [ 'name' => 'interstitial_ad_url', 'value' => 'https://example.com/', ], [ 'name' => 'popup_ad_url', 'value' => 'https://example.com/', ], [ 'name' => 'ad_captcha_below', 'value' => '', ], [ 'name' => 'sitemap_shortlinks', 'value' => 0, ], [ 'name' => 'paytm_enable', 'value' => 0, ], [ 'name' => 'paytm_merchant_key', 'value' => '', ], [ 'name' => 'paytm_merchant_mid', 'value' => '', ], [ 'name' => 'paytm_merchant_website', 'value' => '', ], [ 'name' => 'paytm_industry_type', 'value' => '', ], [ 'name' => 'enable_withdraw', 'value' => 1, ], [ 'name' => 'withdraw_days', 'value' => 4, ], [ 'name' => 'menu_main', 'value' => '[{"id":"m_5cd6097425fa4","title":"Home","link":"\/","visibility":"all","class":""},{"id":"m_5cd609b7e9016","title":"Publisher Rates","link":"\/payout-rates","visibility":"all","class":""},{"id":"m_5cd609c082283","title":"Blog","link":"\/blog","visibility":"all","class":""},{"id":"m_5cd624080e582","title":"Login","link":"\/auth\/signin","visibility":"guest","class":""},{"id":"m_5cd6241af16f2","title":"Sign Up","link":"\/auth\/signup","visibility":"guest","class":""},{"id":"m_5cd623e85a645","title":"Dashboard","link":"\/member\/dashboard","visibility":"logged","class":""}]', ], [ 'name' => 'menu_short', 'value' => '[{"id":"m_5cd6097425fa4","title":"Home","link":"\/","visibility":"all","class":""},{"id":"m_5cd609b7e9016","title":"Publisher Rates","link":"\/payout-rates","visibility":"all","class":""},{"id":"m_5cd609c082283","title":"Blog","link":"\/blog","visibility":"all","class":""},{"id":"m_5cd624080e582","title":"Login","link":"\/auth\/signin","visibility":"guest","class":""},{"id":"m_5cd6241af16f2","title":"Sign Up","link":"\/auth\/signup","visibility":"guest","class":""},{"id":"m_5cd623e85a645","title":"Dashboard","link":"\/member\/dashboard","visibility":"logged","class":""}]', ], [ 'name' => 'menu_footer', 'value' => '[{"id":"m_5cd6cd1ee9c7a","title":"Privacy Policy","link":"\/pages\/privacy","visibility":"all","class":""},{"id":"m_5cd6cd304c063","title":"Terms of Use","link":"\/pages\/terms","visibility":"all","class":""}]', ], [ 'name' => 'withdraw_methods', 'value' => json_encode($this->getWithdrawMethods()), ], [ 'name' => 'email_from_name', 'value' => '', ], [ 'name' => 'maintenance_mode', 'value' => 0, ], [ 'name' => 'maintenance_message', 'value' => 'The website is currently down for maintenance. We\'ll be back shortly!', ], [ 'name' => 'campaign_minimum_price', 'value' => '', ], ]; $this->table('options') ->insert($rows) ->saveData(); $this->table('remember_tokens') ->addColumn('id', 'biginteger', [ 'autoIncrement' => true, 'default' => null, 'limit' => 20, 'null' => false, 'signed' => false, ]) ->addPrimaryKey(['id']) ->addColumn('selector', 'string', [ 'default' => null, 'limit' => 12, 'null' => true, 'collation' => 'utf8_bin', ]) ->addColumn('token', 'string', [ 'default' => null, 'limit' => 191, 'null' => true, ]) ->addColumn('user_id', 'biginteger', [ 'default' => null, 'limit' => 20, 'null' => true, 'signed' => false, ]) ->addColumn('expires', 'datetime', [ 'default' => null, 'limit' => null, 'null' => true, ]) ->addColumn('modified', 'datetime', [ 'default' => null, 'limit' => null, 'null' => true, ]) ->addColumn('created', 'datetime', [ 'default' => null, 'limit' => null, 'null' => true, ]) ->addIndex('selector', ['name' => 'idx_selector', 'unique' => true]) ->addIndex('user_id', ['name' => 'idx_userid']) ->create(); $this->table('plans') ->addColumn('cpm_fixed', 'decimal', [ 'after' => 'yearly_price', 'default' => 0, 'null' => false, 'precision' => 50, 'scale' => 9, 'signed' => false, ]) ->addColumn('link_expiration', 'boolean', [ 'after' => 'edit_long_url', 'default' => 0, 'limit' => null, 'null' => false, 'signed' => false, ]) ->addColumn('visitors_remove_captcha', 'boolean', [ 'after' => 'disable_captcha', 'default' => 0, 'limit' => null, 'null' => false, 'signed' => false, ]) ->addColumn('url_daily_limit', 'integer', [ 'after' => 'yearly_price', 'default' => 0, 'limit' => 10, 'null' => false, 'signed' => false, ]) ->addColumn('url_monthly_limit', 'integer', [ 'after' => 'url_daily_limit', 'default' => 0, 'limit' => 10, 'null' => false, 'signed' => false, ]) ->update(); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'coinhive_site_key';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'coinhive_secret_key';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'coinhive_hashes';"); $this->execute("UPDATE `{$table_prefix}options` SET `name` = 'ad_captcha_above' WHERE `name` = 'ad_captcha';"); $this->execute("UPDATE `{$table_prefix}options` SET `name` = 'interstitial_banner_ad' WHERE `name` = 'interstitial_ads';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'paypal_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'paypal_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'payza_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'payza_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'skrill_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'skrill_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'bitcoin_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'bitcoin_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'webmoney_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'webmoney_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'perfectmoney_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'perfectmoney_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'payeer_withdrawal_enable';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'payeer_withdrawal_amount';"); $this->execute("DELETE FROM `{$table_prefix}options` WHERE `name` = 'custom_withdrawal_methods';"); $this->table('links') ->addColumn('url_hash', 'string', [ 'after' => 'url', 'default' => null, 'limit' => 40, 'null' => true, ]) ->addColumn('expiration', 'datetime', [ 'after' => 'method', 'default' => null, 'limit' => null, 'null' => true, ]) ->removeIndexByName('idx_alias_status') ->removeIndexByName('idx_userid_status_adtype') ->update(); $this->execute('ALTER TABLE `links` CHANGE `url` ' . '`url` TEXT CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL;'); /* $links = $this->fetchAll("SELECT `id`, `url`, `url_hash` FROM `links` WHERE `url_hash` IS NULL"); foreach ($links as $link) { $link_id = $link['id']; $url_hash = sha1($link['url']); $this->execute("UPDATE `links` SET `url_hash` = '{$url_hash}' WHERE `id` = {$link_id};"); } */ $this->execute("UPDATE `links` SET `url_hash` = SHA1(`url`) WHERE `url_hash` IS NULL;"); $this->table('links') ->addIndex('alias', ['name' => 'idx_alias']) ->addIndex('user_id', ['name' => 'idx_userid']) ->addIndex('url_hash', ['name' => 'idx_urlhash']) ->update(); } public function getOption($name, $default = '') { $table_prefix = $this->getAdapter()->getOption('table_prefix'); $row = $this->fetchRow("SELECT * FROM `{$table_prefix}options` WHERE `name` = '{$name}'"); if (empty($row)) { return $default; } return $row['value']; } protected function getWithdrawMethods() { $withdrawal_methods = []; /* if ((bool)$this->getOption('wallet_enable', false)) { $withdrawal_methods[] = [ 'id' => 'wallet', 'name' => __('My Wallet'), 'amount' => $this->getOption('wallet_withdrawal_amount', 5), ]; } */ $withdrawal_methods[] = [ 'id' => 'paypal', 'name' => __('PayPal'), 'status' => (bool)$this->getOption('paypal_withdrawal_enable', false), 'amount' => $this->getOption('paypal_withdrawal_amount', 5), 'image' => '/assets/methods/paypal.png', 'description' => '- For PayPal, add your email.', ]; $withdrawal_methods[] = [ 'id' => 'payza', 'name' => __('Payza'), 'status' => (bool)$this->getOption('payza_withdrawal_enable', false), 'amount' => $this->getOption('payza_withdrawal_amount', 5), 'image' => '/assets/methods/payza.png', 'description' => '- For Payza, add your email.', ]; $withdrawal_methods[] = [ 'id' => 'skrill', 'name' => __('Skrill'), 'status' => (bool)$this->getOption('skrill_withdrawal_enable', false), 'amount' => $this->getOption('skrill_withdrawal_amount', 5), 'image' => '/assets/methods/skrill.png', 'description' => '- For Skrill, add your email.', ]; $withdrawal_methods[] = [ 'id' => 'bitcoin', 'name' => __('Bitcoin'), 'status' => (bool)$this->getOption('bitcoin_withdrawal_enable', false), 'amount' => $this->getOption('bitcoin_withdrawal_amount', 5), 'image' => '/assets/methods/bitcoin.png', 'description' => '- For Bitcoin add your wallet address.', ]; $withdrawal_methods[] = [ 'id' => 'webmoney', 'name' => __('Web Money'), 'status' => (bool)$this->getOption('webmoney_withdrawal_enable', false), 'amount' => $this->getOption('webmoney_withdrawal_amount', 5), 'image' => '/assets/methods/webmoney.png', 'description' => '- For Web Money, add your purse.', ]; $withdrawal_methods[] = [ 'id' => 'perfectmoney', 'name' => __('Perfect Money'), 'status' => (bool)$this->getOption('perfectmoney_withdrawal_enable', false), 'amount' => $this->getOption('perfectmoney_withdrawal_amount', 5), 'image' => '/assets/methods/perfectmoney.png', 'description' => '- For Perfect Money add your email.', ]; $withdrawal_methods[] = [ 'id' => 'payeer', 'name' => __('Payeer'), 'status' => (bool)$this->getOption('payeer_withdrawal_enable', false), 'amount' => $this->getOption('payeer_withdrawal_amount', 5), 'image' => '/assets/methods/payeer.png', 'description' => '- For Payeer add account, e-mail or phone number.', ]; $withdrawal_methods[] = [ 'id' => 'banktransfer', 'name' => __('Bank Transfer'), 'status' => (bool)$this->getOption('banktransfer_withdrawal_enable', false), 'amount' => $this->getOption('banktransfer_withdrawal_amount', 5), 'image' => '/assets/methods/banktransfer.png', 'description' => '- For bank transfer add your account holder name, Bank Name, City/Town, Country, Account number, SWIFT, IBAN and Account currency', ]; $custom_methods_blocks = explode(',', $this->getOption('custom_withdrawal_methods')); $custom_methods_blocks = array_map('trim', $custom_methods_blocks); $custom_methods_blocks = array_filter($custom_methods_blocks); if (empty($custom_methods_blocks)) { return $withdrawal_methods; } foreach ($custom_methods_blocks as $block) { $method = array_filter(explode('|', $block)); if (count($method) !== 3) { continue; } $withdrawal_methods[] = [ 'id' => $method[0], 'name' => $method[1], 'status' => 1, 'amount' => floatval($method[2]), 'image' => '', 'description' => '', ]; } return $withdrawal_methods; } }