76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php declare(strict_types = 1);
 | 
						|
/**
 | 
						|
 * Plugin CLI command.
 | 
						|
 *
 | 
						|
 * @package query-monitor
 | 
						|
 */
 | 
						|
 | 
						|
class QM_CLI extends QM_Plugin {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param string $file
 | 
						|
	 */
 | 
						|
	protected function __construct( $file ) {
 | 
						|
 | 
						|
		# Register command
 | 
						|
		WP_CLI::add_command( 'qm enable', array( $this, 'enable' ) );
 | 
						|
 | 
						|
		# Parent setup:
 | 
						|
		parent::__construct( $file );
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Enable QM by creating the symlink for db.php
 | 
						|
	 *
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function enable() {
 | 
						|
		$drop_in = WP_CONTENT_DIR . '/db.php';
 | 
						|
 | 
						|
		if ( file_exists( $drop_in ) ) {
 | 
						|
			$contents = file_get_contents( $drop_in );
 | 
						|
 | 
						|
			if ( false !== $contents && false !== strpos( $contents, 'class QM_DB' ) ) {
 | 
						|
				WP_CLI::success( "Query Monitor's wp-content/db.php is already in place" );
 | 
						|
				exit( 0 );
 | 
						|
			} else {
 | 
						|
				WP_CLI::error( 'Unknown wp-content/db.php is already in place' );
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		if ( defined( 'QM_DB_SYMLINK' ) && ! QM_DB_SYMLINK ) {
 | 
						|
			WP_CLI::warning( 'Creation of symlink prevented by QM_DB_SYMLINK constant.' );
 | 
						|
			exit( 0 );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( ! function_exists( 'symlink' ) ) {
 | 
						|
			WP_CLI::error( 'The symlink function is not available' );
 | 
						|
		}
 | 
						|
 | 
						|
		if ( symlink( $this->plugin_path( 'wp-content/db.php' ), $drop_in ) ) {
 | 
						|
			WP_CLI::success( 'wp-content/db.php symlink created' );
 | 
						|
			exit( 0 );
 | 
						|
		} else {
 | 
						|
			WP_CLI::error( 'Failed to create wp-content/db.php symlink' );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param string $file
 | 
						|
	 * @return self
 | 
						|
	 */
 | 
						|
	public static function init( $file = null ) {
 | 
						|
 | 
						|
		static $instance = null;
 | 
						|
 | 
						|
		if ( ! $instance ) {
 | 
						|
			$instance = new QM_CLI( $file );
 | 
						|
		}
 | 
						|
 | 
						|
		return $instance;
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
}
 |