function generateMigrations() { $result = array(); foreach ($this->getAccounts() as $account) { $instance = Accounts::getInstance($account); $result[] = new GeneratedAccountInstanceMigration($instance); } return $result; }
<?php /** * Discovered account currencies. */ if (!$exchange) { throw new JobException("No exchange defined"); } $factory = new \Core\DiscoveredCurrencyFactory(); $instance = \DiscoveredComponents\Accounts::getInstance($exchange); $currencies = $instance->fetchSupportedCurrencies($factory, $logger); $logger->info("Found " . count($currencies) . " currencies: " . implode(", ", $currencies)); $persistent = new \Core\PersistentAccountType($instance, db()); $persistent->storeSupportedCurrencies($currencies, $logger);
function get_accounts_wizard_config_basic($exchange) { switch ($exchange) { // --- securities --- case "btct": return array('inputs' => array('api_key' => array('title' => 'Read-Only API key', 'callback' => 'is_valid_btct_apikey')), 'table' => 'accounts_btct'); case "litecoinglobal": return array('inputs' => array('api_key' => array('title' => 'Read-Only API key', 'callback' => 'is_valid_litecoinglobal_apikey')), 'table' => 'accounts_litecoinglobal'); case "cryptostocks": return array('inputs' => array('api_email' => array('title' => 'Account e-mail', 'callback' => 'is_valid_generic_key'), 'api_key_coin' => array('title' => 'get_coin_balances API key', 'callback' => 'is_valid_generic_key'), 'api_key_share' => array('title' => 'get_share_balances API key', 'callback' => 'is_valid_generic_key')), 'table' => 'accounts_cryptostocks'); case "havelock": return array('inputs' => array('api_key' => array('title' => 'API key', 'callback' => 'is_valid_havelock_apikey')), 'table' => 'accounts_havelock'); case "bitfunder": return array('inputs' => array('btc_address' => array('title' => 'BTC Address', 'callback' => array(Currencies::getInstance('btc'), 'isValid'))), 'table' => 'accounts_bitfunder'); case "796": return array('inputs' => array('api_app_id' => array('title' => 'Application ID', 'callback' => 'is_numeric'), 'api_key' => array('title' => 'API Key', 'callback' => 'is_valid_796_apikey'), 'api_secret' => array('title' => 'API Secret', 'callback' => 'is_valid_796_apisecret')), 'table' => 'accounts_796'); case "litecoininvest": return array('inputs' => array('api_key' => array('title' => 'API key', 'callback' => 'is_valid_litecoininvest_apikey')), 'table' => 'accounts_litecoininvest'); case "btcinve": return array('inputs' => array('api_key' => array('title' => 'API key', 'callback' => 'is_valid_litecoininvest_apikey')), 'table' => 'accounts_btcinve'); // --- securities --- // --- securities --- case "individual_litecoinglobal": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_litecoinglobal_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_litecoinglobal'); case "individual_btct": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_btct_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_btct'); case "individual_bitfunder": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_bitfunder_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_bitfunder'); case "individual_cryptostocks": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_cryptostocks_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_cryptostocks'); case "individual_havelock": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_havelock_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_havelock'); case "individual_crypto-trade": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_cryptotrade_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_cryptotrade'); case "individual_796": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_796_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_796'); case "individual_litecoininvest": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_litecoininvest_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_litecoininvest'); case "individual_btcinve": return array('inputs' => array('quantity' => array('title' => t('Quantity'), 'callback' => 'is_valid_quantity'), 'security_id' => array('title' => t('Security'), 'dropdown' => 'dropdown_get_btcinve_securities', 'callback' => 'is_valid_id')), 'table' => 'accounts_individual_btcinve'); // --- other --- // --- other --- case "generic": return array('inputs' => array('api_url' => array('title' => 'URL', 'callback' => 'is_valid_generic_url', 'length' => 255), 'currency' => array('title' => t('Currency'), 'dropdown' => 'dropdown_currency_list', 'callback' => 'is_valid_currency', 'style_prefix' => 'currency_name_'), 'multiplier' => array('title' => t('Multiplier'), 'inline_title' => t('value'), 'callback' => 'is_numeric', 'length' => 6, 'default' => 1, 'number' => true)), 'table' => 'accounts_generic', 'title' => 'Generic API'); default: // --- discovered accounts --- if (Accounts::hasKey($exchange)) { $account = Accounts::getInstance($exchange); $inputs = array(); foreach ($account->getFields() as $key => $field) { $inputs[$key] = array('title' => $field['title'], 'callback' => array(new AccountFieldCheck($field), 'check')); if (isset($field['type']) && $field['type'] == "confirm") { $inputs[$key]['checkbox'] = true; } if (isset($field['note']) && $field['note']) { $inputs[$key]['note'] = t($field['note'][0], $field['note'][1]); } if (isset($field['interaction']) && $field['interaction']) { $inputs[$key]['interaction'] = $field['interaction']; } } return array('inputs' => $inputs, 'table' => 'accounts_' . safe_table_name($exchange), 'interaction' => $account instanceof \Account\UserInteractionAccount ? array($account, 'interaction') : false); } // --- offsets --- if (substr($exchange, 0, strlen("offset_")) === "offset_") { $cur = substr($exchange, strlen("offset_")); return array('inputs' => array('balance' => array('title' => t('Value'), 'inline_title' => t('value'), 'callback' => 'is_numeric', 'length' => 6, 'default' => 1, 'number' => true)), 'fixed_inputs' => array('currency' => $cur), 'table' => 'offsets', 'title' => get_currency_abbr($cur) . " offset"); } throw new Exception("Unknown accounts type '{$exchange}'"); } }