Skip to content
Snippets Groups Projects
wp-cli-civicrm.php 11.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * WP-CLI integration based on CiviCRM `cv` functionality.
     *
     * @see https://github.com/civicrm/cv
     * @see https://github.com/christianwach/cli-tools-for-civicrm
     *
     * @since 5.69
     */
    
    /*
     * Check constants here because it is possible to include this file early using
     * the `--require` flag. The command may also be bundled as a "package" which
     * loads before WordPress itself.
     *
     * @see https://make.wordpress.org/cli/handbook/references/config/#global-parameters
     * @see https://make.wordpress.org/cli/handbook/guides/commands-cookbook/#overview
     * @see https://make.wordpress.org/cli/handbook/guides/sharing-wp-cli-packages/
     */
    
    // Bail if WP-CLI is not present.
    if (!class_exists('WP_CLI')) {
      return;
    }
    
    // Bail if either legacy or current WP-CLI tools are already loaded.
    if (class_exists('CiviCRM_Command') || class_exists('CLI_Tools_CiviCRM_Command')) {
      return;
    }
    
    // Bail if identifying constant is already set.
    if (defined('CIVICRM_WPCLI_LOADED')) {
      return;
    }
    
    // Make this the one true command.
    define('CIVICRM_WPCLI_LOADED', 1);
    
    // Set up commands.
    WP_CLI::add_hook('before_wp_load', function() {
    
      // Include files.
      require_once __DIR__ . '/commands/command-base.php';
      require_once __DIR__ . '/commands/command-civicrm.php';
      require_once __DIR__ . '/commands/command-core.php';
      require_once __DIR__ . '/commands/command-api-v3.php';
      require_once __DIR__ . '/commands/command-cache.php';
      require_once __DIR__ . '/commands/command-db.php';
      require_once __DIR__ . '/commands/command-debug.php';
      require_once __DIR__ . '/commands/command-job.php';
      require_once __DIR__ . '/commands/command-pipe.php';
    
      // ----------------------------------------------------------------------------
      // Add commands.
      // ----------------------------------------------------------------------------
    
      // Add top-level commands.
      WP_CLI::add_command('civicrm', 'CLI_Tools_CiviCRM_Command');
      WP_CLI::add_command('cv', 'CLI_Tools_CiviCRM_Command');
    
      // Add default API command.
      WP_CLI::add_command('civicrm api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
      WP_CLI::add_command('cv api', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
    
      // Add API v3 command.
      WP_CLI::add_command('civicrm api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
      WP_CLI::add_command('cv api3', 'CLI_Tools_CiviCRM_Command_API_V3', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_API_V3::check_dependencies']);
    
      // Add Cache Clear command.
      WP_CLI::add_command('civicrm cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
      WP_CLI::add_command('cv cache', 'CLI_Tools_CiviCRM_Command_Cache', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache::check_dependencies']);
    
      // Add Core command.
      WP_CLI::add_command('civicrm core', 'CLI_Tools_CiviCRM_Command_Core');
      WP_CLI::add_command('cv core', 'CLI_Tools_CiviCRM_Command_Core');
    
      // Add DB command.
      WP_CLI::add_command('civicrm db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
      WP_CLI::add_command('cv db', 'CLI_Tools_CiviCRM_Command_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_DB::check_dependencies']);
    
       // Add Debug command.
      WP_CLI::add_command('civicrm debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
      WP_CLI::add_command('cv debug', 'CLI_Tools_CiviCRM_Command_Debug', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug::check_dependencies']);
    
      // Add Job command.
      WP_CLI::add_command('civicrm job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
      WP_CLI::add_command('cv job', 'CLI_Tools_CiviCRM_Command_Job', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Job::check_dependencies']);
    
      // Add Pipe command.
      WP_CLI::add_command('civicrm pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
      WP_CLI::add_command('cv pipe', 'CLI_Tools_CiviCRM_Command_Pipe', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Pipe::check_dependencies']);
    
      // ----------------------------------------------------------------------------
      // Add deprecated legacy commands.
      // ----------------------------------------------------------------------------
    
      // Include legacy files.
      require_once __DIR__ . '/commands/legacy/command-cache-clear.php';
      require_once __DIR__ . '/commands/legacy/command-debug-disable.php';
      require_once __DIR__ . '/commands/legacy/command-debug-enable.php';
      require_once __DIR__ . '/commands/legacy/command-install.php';
      require_once __DIR__ . '/commands/legacy/command-mail-queue.php';
      require_once __DIR__ . '/commands/legacy/command-member-records.php';
      require_once __DIR__ . '/commands/legacy/command-restore.php';
      require_once __DIR__ . '/commands/legacy/command-sql-cli.php';
      require_once __DIR__ . '/commands/legacy/command-sql-conf.php';
      require_once __DIR__ . '/commands/legacy/command-sql-connect.php';
      require_once __DIR__ . '/commands/legacy/command-sql-dump.php';
      require_once __DIR__ . '/commands/legacy/command-sql-query.php';
      require_once __DIR__ . '/commands/legacy/command-update-cfg.php';
      require_once __DIR__ . '/commands/legacy/command-upgrade.php';
      require_once __DIR__ . '/commands/legacy/command-upgrade-db.php';
    
      // Deprecated: Add Cache Clear command.
      WP_CLI::add_command('civicrm cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
      WP_CLI::add_command('cv cache-clear', 'CLI_Tools_CiviCRM_Command_Cache_Clear', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Cache_Clear::check_dependencies']);
    
      // Deprecated: Add Debug Disable command.
      WP_CLI::add_command('civicrm disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
      WP_CLI::add_command('cv disable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Disable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Disable::check_dependencies']);
    
      // Deprecated: Add Debug Enable command.
      WP_CLI::add_command('civicrm enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
      WP_CLI::add_command('cv enable-debug', 'CLI_Tools_CiviCRM_Command_Debug_Enable', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Debug_Enable::check_dependencies']);
    
      // Deprecated: Add Install command.
      WP_CLI::add_command('civicrm install', 'CLI_Tools_CiviCRM_Command_Install');
      WP_CLI::add_command('cv install', 'CLI_Tools_CiviCRM_Command_Install');
    
      // Deprecated: Add Process Mail Queue command.
      WP_CLI::add_command('civicrm process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
      WP_CLI::add_command('cv process-mail-queue', 'CLI_Tools_CiviCRM_Command_Mail_Queue', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Mail_Queue::check_dependencies']);
    
      // Deprecated: Add Member Records command.
      WP_CLI::add_command('civicrm member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
      WP_CLI::add_command('cv member-records', 'CLI_Tools_CiviCRM_Command_Member_Records', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Member_Records::check_dependencies']);
    
      // Deprecated: Add Restore command.
      WP_CLI::add_command('civicrm restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
      WP_CLI::add_command('cv restore', 'CLI_Tools_CiviCRM_Command_Restore', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Restore::check_dependencies']);
    
      // Deprecated: Add SQL CLI command.
      WP_CLI::add_command('civicrm sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
      WP_CLI::add_command('cv sql-cli', 'CLI_Tools_CiviCRM_Command_SQL_CLI', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_CLI::check_dependencies']);
    
      // Deprecated: Add SQL Config command.
      WP_CLI::add_command('civicrm sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
      WP_CLI::add_command('cv sql-conf', 'CLI_Tools_CiviCRM_Command_SQL_Conf', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Conf::check_dependencies']);
    
      // Deprecated: Add SQL Connect command.
      WP_CLI::add_command('civicrm sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
      WP_CLI::add_command('cv sql-connect', 'CLI_Tools_CiviCRM_Command_SQL_Connect', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Connect::check_dependencies']);
    
      // Deprecated: Add SQL Dump command.
      WP_CLI::add_command('civicrm sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
      WP_CLI::add_command('cv sql-dump', 'CLI_Tools_CiviCRM_Command_SQL_Dump', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Dump::check_dependencies']);
    
      // Deprecated: Add SQL Query command.
      WP_CLI::add_command('civicrm sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
      WP_CLI::add_command('cv sql-query', 'CLI_Tools_CiviCRM_Command_SQL_Query', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_SQL_Query::check_dependencies']);
    
      // Deprecated: Add Update Config command.
      WP_CLI::add_command('civicrm update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
      WP_CLI::add_command('cv update-cfg', 'CLI_Tools_CiviCRM_Command_Update_Config', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Update_Config::check_dependencies']);
    
      // Deprecated: Add Upgrade command.
      WP_CLI::add_command('civicrm upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
      WP_CLI::add_command('cv upgrade', 'CLI_Tools_CiviCRM_Command_Upgrade', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade::check_dependencies']);
    
      // Deprecated: Add Upgrade DB command.
      WP_CLI::add_command('civicrm upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
      WP_CLI::add_command('cv upgrade-db', 'CLI_Tools_CiviCRM_Command_Upgrade_DB', ['before_invoke' => 'CLI_Tools_CiviCRM_Command_Upgrade_DB::check_dependencies']);
    
      // ----------------------------------------------------------------------------
      // Define CiviCRM paths.
      // ----------------------------------------------------------------------------
    
      // Set paths early.
      global $civicrm_paths;
      $wp_cli_config = WP_CLI::get_config();
    
      // If --path is set, save for later use by CiviCRM.
      if (!empty($wp_cli_config['path'])) {
        $civicrm_paths['cms.root']['path'] = $wp_cli_config['path'];
      }
    
      // If --url is set, save for later use by CiviCRM.
      if (!empty($wp_cli_config['url'])) {
        $civicrm_paths['cms.root']['url'] = $wp_cli_config['url'];
      }
    
    });