File "Installer.php"
Full Path: /home/warrior1/public_html/plugins/google-listings-and-ads/src/DB/Installer.php
File size: 1.66 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\DB;
use Automattic\WooCommerce\GoogleListingsAndAds\DB\Migration\Migrator;
use Automattic\WooCommerce\GoogleListingsAndAds\Infrastructure\Service;
use Automattic\WooCommerce\GoogleListingsAndAds\Internal\Interfaces\FirstInstallInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Internal\Interfaces\InstallableInterface;
defined( 'ABSPATH' ) || exit;
/**
* Class Installer
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\DB
*/
class Installer implements Service, FirstInstallInterface, InstallableInterface {
/**
* @var TableManager
*/
protected $table_manager;
/**
* @var Migrator
*/
protected $migrator;
/**
* Installer constructor.
*
* @param TableManager $table_manager
* @param Migrator $migrator
*/
public function __construct( TableManager $table_manager, Migrator $migrator ) {
$this->table_manager = $table_manager;
$this->migrator = $migrator;
}
/**
* Run installation logic for this class.
*
* @param string $old_version Previous version before updating.
* @param string $new_version Current version after updating.
*/
public function install( string $old_version, string $new_version ): void {
foreach ( $this->table_manager->get_tables() as $table ) {
$table->install();
}
// Run migrations.
$this->migrator->migrate( $old_version, $new_version );
}
/**
* Logic to run when the plugin is first installed.
*/
public function first_install(): void {
foreach ( $this->table_manager->get_tables() as $table ) {
if ( $table instanceof FirstInstallInterface ) {
$table->first_install();
}
}
}
}