X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi.php;h=3c9d71f929859835f0d6b1f0d94552c240d5d84a;hb=af38636c1b726f2c3b0e4aa14d9b400aab820036;hp=a018bb54d9d2ef2ff07fd2f682688783a3b13de7;hpb=fb159841848dd4a4e996433217fde75e0eb22a78;p=civicrm-core.git diff --git a/Civi.php b/Civi.php index a018bb54d9..3c9d71f929 100644 --- a/Civi.php +++ b/Civi.php @@ -1,5 +1,7 @@ 'SqlParallel'] + * Defaults: ['reset'=>FALSE, 'is_persistent'=>TRUE, 'is_autorun'=>FALSE] + * @return \CRM_Queue_Queue + * @see \CRM_Queue_Service + */ + public static function queue(string $name, array $params = []): CRM_Queue_Queue { + $defaults = ['reset' => FALSE, 'is_persistent' => TRUE]; + $params = array_merge($defaults, $params, ['name' => $name]); + return CRM_Queue_Service::singleton()->create($params); + } + + /** + * Obtain the formatting object. + * + * @return \Civi\Core\Format + */ + public static function format(): Format { + return new Civi\Core\Format(); + } + + /** + * Initiate a bidirectional pipe for exchanging a series of multiple API requests. + * + * @param string $negotiationFlags + * List of pipe initialization flags. Some combination of the following: + * - 'v': Report version in connection header. + * - 'j': Report JSON-RPC flavors in connection header. + * - 'l': Report on login support in connection header. + * - 't': Trusted session. Logins do not require credentials. API calls may execute with or without permission-checks. + * - 'u': Untrusted session. Logins require credentials. API calls may only execute with permission-checks. + * + * The `Civi::pipe()` entry-point is designed to be amenable to shell orchestration (SSH/cv/drush/wp-cli/etc). + * The negotiation flags are therefore condensed to individual characters. + * + * It is possible to preserve compatibility while adding new default-flags. However, removing default-flags + * is more likely to be a breaking-change. + * + * When adding a new flag, consider whether mutable `option()`s may be more appropriate. + * @see \Civi\Pipe\PipeSession + */ + public static function pipe(string $negotiationFlags = 'vtl'): void { + Civi::service('civi.pipe') + ->setIO(STDIN, STDOUT) + ->run($negotiationFlags); + } + /** * Fetch a service from the container. *