<?php
/**
 * Lead Connector Migrator
 * Copyright (C) 2025 Lead Connector
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


if ( ! defined( 'ABSPATH' ) ) {
	die( 'Well Sir You Cannot Jump Here...haha' );
}

class Lcm_Stages {

	/**
	 * Enum-like class for export stages.
	 */
	/**
	 * Export stages as an object for dot notation access.
	 */
	public static $STAGES = array(
        'CHECK_CONNECTION' => '1',
        'CREATING_CONFIG_BACKUPS' => '2',
        'LISTING_EXPORTABLE_CONTENT' => '3',
        'ARCHIVING_CONTENT' => '4',
        'EXPORTING_DATABASE' => '4',
        'UPLOAD_TO_CLOUD' => '5',
        'CLEANUP_LOCAL' => '6', 
		'START_SERVER_IMPORT' =>  '6',
        'DONE' => '7',
    );

	

	/**
	 * Get all stage keys.
	 *
	 * @return array
	 */
	public static function get_stage_keys() {
		return array_keys( get_object_vars( self::$STAGES ) );
	}

	/**
	 * Get all stage values.
	 *
	 * @return array
	 */
	public static function get_stage_values() {
		return array_values( get_object_vars( self::$STAGES ) );
	}

	/**
	 * Get stage value by key.
	 *
	 * @param string $key
	 * @return string|null
	 */
	public static function get_stage( $key ) {
		if ( property_exists( self::$STAGES, $key ) ) {
			return self::$STAGES->$key;
		}
		return null;
	}
}