Migration_Task
        
        extends Task
    
    
            
            in package
            
        
    
    
    
        
            Migrates transactions and addresses from the old MySQL tables to custom posts.
This cron job migrates the transactions and addresses from the custom MySQL tables of version 5.x and below to custom posts for version 6 and greater.
The process will create any currencies not already declared. It does its best to guess the currency from the symbol name.
While the process runs, the UIs are unavailable.
The process is not destructive. i.e. the old data will continue to exist, so you can safely roll back to version 5.x if needed.
To repeat the migration process, delete the wallets_migration_state option.
The process will generate transaction tags for all the tags found in the old tables.
If a transaction or address fails to be converted for whatever reason, it is skipped. Admins are notified by email about the contents of the transaction.
If the old tables don't exist, migration is marked as finished and does not do anything.
If the old tables do exist and migration has finished, admins are notified by email.
Statistics about the migration progress are shown in the admin screens to all admins.
Tags
Table of Contents
- MAX_BATCH_SIZE_ADDRESSES = 100
- MAX_BATCH_SIZE_TRANSACTIONS = 100
- $name : mixed
- $priority : mixed
- $task_start_time : mixed
- $timeout : mixed
- $verbose : mixed
- $coingecko_currencies : mixed
- Array of objects with fields: id, name, symbol
- $start_memory : mixed
- $start_time : mixed
- $state : mixed
- Counters related to the current state of the migration progress. Are persisted with a WordPress option.
- $table_name_adds : mixed
- Name for the deposit addresses MySQL table.
- $table_name_txs : mixed
- Name for the transactions MySQL table.
- __construct() : mixed
- Constructor hooks this task into the cron job action.
- create_address() : void
- create_transaction() : void
- get_address_rows() : array<string|int, mixed>
- Gets a batch of address rows from the old address table.
- is_running() : bool
- Tells you whether the migration task is currently active.
- log() : void
- Cron task logging.
- register() : void
- run() : void
- Do the task.
- get_balance_rows() : array<string|int, mixed>
- Gets a user ID and returns the SQL balances for each symbol.
- get_cron_interval() : int
- get_ids_of_migrated_posts() : array<string|int, mixed>
- get_next_user_id_after() : int|null
- get_or_make_currency() : Currency
- get_transaction_rows() : array<string|int, mixed>
- map_status() : string
Constants
MAX_BATCH_SIZE_ADDRESSES
    public
        mixed
    MAX_BATCH_SIZE_ADDRESSES
    = 100
        
        
    
MAX_BATCH_SIZE_TRANSACTIONS
    public
        mixed
    MAX_BATCH_SIZE_TRANSACTIONS
    = 100
        
        
    
Properties
$name
    protected
        mixed
    $name
    
    
        string The name of this task.
$priority
    protected
        mixed
    $priority
     = 10
    
        int The priority with which to attach to cron action.
$task_start_time
    protected
        mixed
    $task_start_time
     = 0
    
        int Timestamp at which this task is starting execution.
$timeout
    protected
        mixed
    $timeout
     = DEFAULT_CRON_TASK_TIMEOUT
    
        How many seconds this task is allowed to run. The task's run() method must respect this limit.
$verbose
    protected
        mixed
    $verbose
     = false
    
        boolean Whether to write all log() output to debug log.
$coingecko_currencies
Array of objects with fields: id, name, symbol
    private
    static    mixed
    $coingecko_currencies
     = null
    
        
    
$start_memory
    private
    static    mixed
    $start_memory
     = 0
    
        int Memory used at start of tasks batch execution, measured in bytes.
$start_time
    private
    static    mixed
    $start_time
     = 0
    
        int Timestamp at which tasks batch starts execution.
$state
Counters related to the current state of the migration progress. Are persisted with a WordPress option.
    private
    static    mixed
    $state
     = []
    
        
    
$table_name_adds
Name for the deposit addresses MySQL table.
    private
        mixed
    $table_name_adds
     = ''
    
        
    
$table_name_txs
Name for the transactions MySQL table.
    private
        mixed
    $table_name_txs
     = ''
    
        
    
Methods
__construct()
Constructor hooks this task into the cron job action.
    public
                    __construct() : mixed
        Call this after your sub-class constructor.
This way, any changes you make to $this->priority will have an effect.
WARNING: If you forget to call parent::__construct();, your task will not run.
Return values
mixed —create_address()
    public
                    create_address(object $row) : void
        
        Parameters
- $row : object
Return values
void —create_transaction()
    public
                    create_transaction(object $row) : void
        
        Parameters
- $row : object
Return values
void —get_address_rows()
Gets a batch of address rows from the old address table.
    public
                    get_address_rows(int $last_id[, int $batch_size = self::MAX_BATCH_SIZE_ADDRESSES ]) : array<string|int, mixed>
    
        Parameters
- $last_id : int
- 
                    ID of last address already processed. This batch will begin immediately after. 
- $batch_size : int = self::MAX_BATCH_SIZE_ADDRESSES
- 
                    The requested batch size. Up to this many addresses are returned. 
Tags
Return values
array<string|int, mixed> —Array of objects representing the address rows.
is_running()
Tells you whether the migration task is currently active.
    public
            static        is_running() : bool
        While a task is active, there should be no transactions or other user changes to the DB. The APIs should therefore check for this and fail if it returns true.
Return values
bool —log()
Cron task logging.
    public
        final            log(string $message[, bool $force = false ]) : void
        Migration task is always logged.
Parameters
- $message : string
- 
                    The string to log. 
- $force : bool = false
- 
                    Whether to force log the string, even if no verbose logging is checked. 
Return values
void —register()
    public
        final    static        register() : void
        
    
    
        Return values
void —run()
Do the task.
    public
                    run() : void
        Concrete implementations must do the work here in chuncks. The max execution time, usually about 15 or 30 secs must be eenough for all the tasks. So be careful!
Return values
void —get_balance_rows()
Gets a user ID and returns the SQL balances for each symbol.
    private
                    get_balance_rows(int $user_id) : array<string|int, mixed>
    
        Parameters
- $user_id : int
- 
                    The ID of the user. 
Return values
array<string|int, mixed> —Map of ticker symbols to balances as floats.
get_cron_interval()
    private
            static        get_cron_interval() : int
        
    
    
        Return values
int —get_ids_of_migrated_posts()
    private
            static        get_ids_of_migrated_posts(string $post_type) : array<string|int, mixed>
        
        Parameters
- $post_type : string
Return values
array<string|int, mixed> —get_next_user_id_after()
    private
            static        get_next_user_id_after(int $user_id) : int|null
        
        Parameters
- $user_id : int
Return values
int|null —get_or_make_currency()
    private
                    get_or_make_currency(string $symbol) : Currency
        
        Parameters
- $symbol : string
Return values
Currency —get_transaction_rows()
    private
                    get_transaction_rows(int $last_id[, int $batch_size = self::MAX_BATCH_SIZE_TRANSACTIONS ]) : array<string|int, mixed>
        
        Parameters
- $last_id : int
- $batch_size : int = self::MAX_BATCH_SIZE_TRANSACTIONS
Return values
array<string|int, mixed> —map_status()
    private
                    map_status(string $status) : string
        
        Parameters
- $status : string