Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack
File: class.jetpack-cli.php
$response = Client::wpcom_json_api_request_as_blog(
[1500] Fix | Delete
$resource_url,
[1501] Fix | Delete
empty( $named_args['api_version'] ) ? Client::WPCOM_JSON_API_VERSION : $named_args['api_version'],
[1502] Fix | Delete
$other_args,
[1503] Fix | Delete
empty( $decoded_body ) ? null : $decoded_body,
[1504] Fix | Delete
empty( $named_args['base_api_path'] ) ? 'rest' : $named_args['base_api_path']
[1505] Fix | Delete
);
[1506] Fix | Delete
[1507] Fix | Delete
if ( is_wp_error( $response ) ) {
[1508] Fix | Delete
WP_CLI::error(
[1509] Fix | Delete
sprintf(
[1510] Fix | Delete
/* translators: %1$s is an endpoint route (ex. /sites/123456), %2$d is an error code, %3$s is an error message. */
[1511] Fix | Delete
__( 'Request to %1$s returned an error: (%2$d) %3$s.', 'jetpack' ),
[1512] Fix | Delete
$resource_url,
[1513] Fix | Delete
$response->get_error_code(),
[1514] Fix | Delete
$response->get_error_message()
[1515] Fix | Delete
)
[1516] Fix | Delete
);
[1517] Fix | Delete
}
[1518] Fix | Delete
[1519] Fix | Delete
if ( 200 !== wp_remote_retrieve_response_code( $response ) ) {
[1520] Fix | Delete
WP_CLI::error(
[1521] Fix | Delete
sprintf(
[1522] Fix | Delete
/* translators: %1$s is an endpoint route (ex. /sites/123456), %2$d is an HTTP status code. */
[1523] Fix | Delete
__( 'Request to %1$s returned a non-200 response code: %2$d.', 'jetpack' ),
[1524] Fix | Delete
$resource_url,
[1525] Fix | Delete
wp_remote_retrieve_response_code( $response )
[1526] Fix | Delete
)
[1527] Fix | Delete
);
[1528] Fix | Delete
}
[1529] Fix | Delete
[1530] Fix | Delete
$output = wp_remote_retrieve_body( $response );
[1531] Fix | Delete
if ( isset( $named_args['pretty'] ) ) {
[1532] Fix | Delete
$decoded_output = json_decode( $output );
[1533] Fix | Delete
if ( $decoded_output ) {
[1534] Fix | Delete
$output = wp_json_encode( $decoded_output, JSON_PRETTY_PRINT );
[1535] Fix | Delete
}
[1536] Fix | Delete
}
[1537] Fix | Delete
[1538] Fix | Delete
if ( isset( $named_args['strip-success'] ) ) {
[1539] Fix | Delete
WP_CLI::log( $output );
[1540] Fix | Delete
WP_CLI::halt( 0 );
[1541] Fix | Delete
}
[1542] Fix | Delete
[1543] Fix | Delete
WP_CLI::success( $output );
[1544] Fix | Delete
}
[1545] Fix | Delete
[1546] Fix | Delete
/**
[1547] Fix | Delete
* Allows uploading SSH Credentials to the current site for backups, restores, and security scanning.
[1548] Fix | Delete
*
[1549] Fix | Delete
* ## OPTIONS
[1550] Fix | Delete
*
[1551] Fix | Delete
* [--host=<host>]
[1552] Fix | Delete
* : The SSH server's address.
[1553] Fix | Delete
*
[1554] Fix | Delete
* [--ssh-user=<user>]
[1555] Fix | Delete
* : The username to use to log in to the SSH server.
[1556] Fix | Delete
*
[1557] Fix | Delete
* [--pass=<pass>]
[1558] Fix | Delete
* : The password used to log in, if using a password. (optional)
[1559] Fix | Delete
*
[1560] Fix | Delete
* [--kpri=<kpri>]
[1561] Fix | Delete
* : The private key used to log in, if using a private key. (optional)
[1562] Fix | Delete
*
[1563] Fix | Delete
* [--pretty]
[1564] Fix | Delete
* : Will pretty print the results of a successful API call. (optional)
[1565] Fix | Delete
*
[1566] Fix | Delete
* [--strip-success]
[1567] Fix | Delete
* : Will remove the green success label from successful API calls. (optional)
[1568] Fix | Delete
*
[1569] Fix | Delete
* ## EXAMPLES
[1570] Fix | Delete
*
[1571] Fix | Delete
* wp jetpack upload_ssh_creds --host=example.com --ssh-user=example --pass=password
[1572] Fix | Delete
* wp jetpack updload_ssh_creds --host=example.com --ssh-user=example --kpri=key
[1573] Fix | Delete
*
[1574] Fix | Delete
* @param array $args Positional args.
[1575] Fix | Delete
* @param array $named_args Named args.
[1576] Fix | Delete
*/
[1577] Fix | Delete
public function upload_ssh_creds( $args, $named_args ) {
[1578] Fix | Delete
if ( ! Jetpack::is_connection_ready() ) {
[1579] Fix | Delete
WP_CLI::error( __( 'Jetpack is not currently connected to WordPress.com', 'jetpack' ) );
[1580] Fix | Delete
}
[1581] Fix | Delete
[1582] Fix | Delete
$required_args = array(
[1583] Fix | Delete
'host',
[1584] Fix | Delete
'ssh-user',
[1585] Fix | Delete
);
[1586] Fix | Delete
[1587] Fix | Delete
foreach ( $required_args as $arg ) {
[1588] Fix | Delete
if ( empty( $named_args[ $arg ] ) ) {
[1589] Fix | Delete
WP_CLI::error(
[1590] Fix | Delete
sprintf(
[1591] Fix | Delete
/* translators: %s is a slug, such as 'host'. */
[1592] Fix | Delete
__( '`%s` cannot be empty.', 'jetpack' ),
[1593] Fix | Delete
$arg
[1594] Fix | Delete
)
[1595] Fix | Delete
);
[1596] Fix | Delete
}
[1597] Fix | Delete
}
[1598] Fix | Delete
[1599] Fix | Delete
if ( empty( $named_args['pass'] ) && empty( $named_args['kpri'] ) ) {
[1600] Fix | Delete
WP_CLI::error( __( 'Both `pass` and `kpri` fields cannot be blank.', 'jetpack' ) );
[1601] Fix | Delete
}
[1602] Fix | Delete
[1603] Fix | Delete
$values = array(
[1604] Fix | Delete
'credentials' => array(
[1605] Fix | Delete
'site_url' => get_site_url(),
[1606] Fix | Delete
'abspath' => ABSPATH,
[1607] Fix | Delete
'protocol' => 'ssh',
[1608] Fix | Delete
'port' => 22,
[1609] Fix | Delete
'role' => 'main',
[1610] Fix | Delete
'host' => $named_args['host'],
[1611] Fix | Delete
'user' => $named_args['ssh-user'],
[1612] Fix | Delete
'pass' => empty( $named_args['pass'] ) ? '' : $named_args['pass'],
[1613] Fix | Delete
'kpri' => empty( $named_args['kpri'] ) ? '' : $named_args['kpri'],
[1614] Fix | Delete
),
[1615] Fix | Delete
);
[1616] Fix | Delete
[1617] Fix | Delete
$named_args = wp_parse_args(
[1618] Fix | Delete
array(
[1619] Fix | Delete
'resource' => '/activity-log/%d/update-credentials',
[1620] Fix | Delete
'method' => 'POST',
[1621] Fix | Delete
'api_version' => '1.1',
[1622] Fix | Delete
'body' => wp_json_encode( $values ),
[1623] Fix | Delete
'timeout' => 30,
[1624] Fix | Delete
),
[1625] Fix | Delete
$named_args
[1626] Fix | Delete
);
[1627] Fix | Delete
[1628] Fix | Delete
self::call_api( $args, $named_args );
[1629] Fix | Delete
}
[1630] Fix | Delete
[1631] Fix | Delete
/**
[1632] Fix | Delete
* API wrapper for getting stats from the WordPress.com API for the current site.
[1633] Fix | Delete
*
[1634] Fix | Delete
* ## OPTIONS
[1635] Fix | Delete
*
[1636] Fix | Delete
* [--quantity=<quantity>]
[1637] Fix | Delete
* : The number of units to include.
[1638] Fix | Delete
* ---
[1639] Fix | Delete
* default: 30
[1640] Fix | Delete
* ---
[1641] Fix | Delete
*
[1642] Fix | Delete
* [--period=<period>]
[1643] Fix | Delete
* : The unit of time to query stats for.
[1644] Fix | Delete
* ---
[1645] Fix | Delete
* default: day
[1646] Fix | Delete
* options:
[1647] Fix | Delete
* - day
[1648] Fix | Delete
* - week
[1649] Fix | Delete
* - month
[1650] Fix | Delete
* - year
[1651] Fix | Delete
* ---
[1652] Fix | Delete
*
[1653] Fix | Delete
* [--date=<date>]
[1654] Fix | Delete
* : The latest date to return stats for. Ex. - 2018-01-01.
[1655] Fix | Delete
*
[1656] Fix | Delete
* [--pretty]
[1657] Fix | Delete
* : Will pretty print the results of a successful API call.
[1658] Fix | Delete
*
[1659] Fix | Delete
* [--strip-success]
[1660] Fix | Delete
* : Will remove the green success label from successful API calls.
[1661] Fix | Delete
*
[1662] Fix | Delete
* ## EXAMPLES
[1663] Fix | Delete
*
[1664] Fix | Delete
* wp jetpack get_stats
[1665] Fix | Delete
*
[1666] Fix | Delete
* @param array $args Positional args.
[1667] Fix | Delete
* @param array $named_args Named args.
[1668] Fix | Delete
*/
[1669] Fix | Delete
public function get_stats( $args, $named_args ) {
[1670] Fix | Delete
$selected_args = array_intersect_key(
[1671] Fix | Delete
$named_args,
[1672] Fix | Delete
array_flip(
[1673] Fix | Delete
array(
[1674] Fix | Delete
'quantity',
[1675] Fix | Delete
'date',
[1676] Fix | Delete
)
[1677] Fix | Delete
)
[1678] Fix | Delete
);
[1679] Fix | Delete
[1680] Fix | Delete
// The API expects unit, but period seems to be more correct.
[1681] Fix | Delete
$selected_args['unit'] = $named_args['period'];
[1682] Fix | Delete
[1683] Fix | Delete
$command = sprintf(
[1684] Fix | Delete
'jetpack call_api --resource=/sites/%d/stats/%s',
[1685] Fix | Delete
Jetpack_Options::get_option( 'id' ),
[1686] Fix | Delete
add_query_arg( $selected_args, 'visits' )
[1687] Fix | Delete
);
[1688] Fix | Delete
[1689] Fix | Delete
if ( isset( $named_args['pretty'] ) ) {
[1690] Fix | Delete
$command .= ' --pretty';
[1691] Fix | Delete
}
[1692] Fix | Delete
[1693] Fix | Delete
if ( isset( $named_args['strip-success'] ) ) {
[1694] Fix | Delete
$command .= ' --strip-success';
[1695] Fix | Delete
}
[1696] Fix | Delete
[1697] Fix | Delete
WP_CLI::runcommand(
[1698] Fix | Delete
$command,
[1699] Fix | Delete
array(
[1700] Fix | Delete
'launch' => false, // Use the current process.
[1701] Fix | Delete
)
[1702] Fix | Delete
);
[1703] Fix | Delete
}
[1704] Fix | Delete
[1705] Fix | Delete
/**
[1706] Fix | Delete
* Allows management of publicize connections.
[1707] Fix | Delete
*
[1708] Fix | Delete
* ## OPTIONS
[1709] Fix | Delete
*
[1710] Fix | Delete
* <list|disconnect>
[1711] Fix | Delete
* : The action to perform.
[1712] Fix | Delete
* ---
[1713] Fix | Delete
* options:
[1714] Fix | Delete
* - list
[1715] Fix | Delete
* - disconnect
[1716] Fix | Delete
* ---
[1717] Fix | Delete
*
[1718] Fix | Delete
* [<identifier>]
[1719] Fix | Delete
* : The connection ID or service to perform an action on.
[1720] Fix | Delete
*
[1721] Fix | Delete
* [--ignore-cache]
[1722] Fix | Delete
* : Whether to ignore connections cache.
[1723] Fix | Delete
*
[1724] Fix | Delete
* [--format=<format>]
[1725] Fix | Delete
* : Allows overriding the output of the command when listing connections.
[1726] Fix | Delete
* ---
[1727] Fix | Delete
* default: table
[1728] Fix | Delete
* options:
[1729] Fix | Delete
* - table
[1730] Fix | Delete
* - json
[1731] Fix | Delete
* - csv
[1732] Fix | Delete
* - yaml
[1733] Fix | Delete
* - ids
[1734] Fix | Delete
* - count
[1735] Fix | Delete
* ---
[1736] Fix | Delete
*
[1737] Fix | Delete
* ## EXAMPLES
[1738] Fix | Delete
*
[1739] Fix | Delete
* # List all publicize connections.
[1740] Fix | Delete
* $ wp jetpack publicize list
[1741] Fix | Delete
*
[1742] Fix | Delete
* # List all publicize connections, ignoring the cache.
[1743] Fix | Delete
* $ wp jetpack publicize list --ignore-cache
[1744] Fix | Delete
*
[1745] Fix | Delete
* # List publicize connections for a given service.
[1746] Fix | Delete
* $ wp jetpack publicize list linkedin
[1747] Fix | Delete
*
[1748] Fix | Delete
* # List all publicize connections for a given user.
[1749] Fix | Delete
* $ wp --user=1 jetpack publicize list
[1750] Fix | Delete
*
[1751] Fix | Delete
* # List all publicize connections for a given user and service.
[1752] Fix | Delete
* $ wp --user=1 jetpack publicize list linkedin
[1753] Fix | Delete
*
[1754] Fix | Delete
* # Display details for a given connection.
[1755] Fix | Delete
* $ wp jetpack publicize list 123456
[1756] Fix | Delete
*
[1757] Fix | Delete
* # Diconnection a given connection.
[1758] Fix | Delete
* $ wp jetpack publicize disconnect 123456
[1759] Fix | Delete
*
[1760] Fix | Delete
* # Disconnect all connections.
[1761] Fix | Delete
* $ wp jetpack publicize disconnect all
[1762] Fix | Delete
*
[1763] Fix | Delete
* # Disconnect all connections for a given service.
[1764] Fix | Delete
* $ wp jetpack publicize disconnect linkedin
[1765] Fix | Delete
*
[1766] Fix | Delete
* @param array $args Positional args.
[1767] Fix | Delete
* @param array $named_args Named args.
[1768] Fix | Delete
*/
[1769] Fix | Delete
public function publicize( $args, $named_args ) {
[1770] Fix | Delete
if ( ! Jetpack::connection()->has_connected_owner() ) {
[1771] Fix | Delete
WP_CLI::error( __( 'Jetpack Social requires a user-level connection to WordPress.com', 'jetpack' ) );
[1772] Fix | Delete
}
[1773] Fix | Delete
[1774] Fix | Delete
if ( ! Jetpack::is_module_active( 'publicize' ) ) {
[1775] Fix | Delete
WP_CLI::error( __( 'The Jetpack Social module is not active.', 'jetpack' ) );
[1776] Fix | Delete
}
[1777] Fix | Delete
[1778] Fix | Delete
if ( ( new Status() )->is_offline_mode() ) {
[1779] Fix | Delete
if (
[1780] Fix | Delete
! defined( 'JETPACK_DEV_DEBUG' ) &&
[1781] Fix | Delete
! has_filter( 'jetpack_development_mode' ) &&
[1782] Fix | Delete
! has_filter( 'jetpack_offline_mode' ) &&
[1783] Fix | Delete
! str_contains( site_url(), '.' )
[1784] Fix | Delete
) {
[1785] Fix | Delete
WP_CLI::error( __( "Jetpack is current in offline mode because the site url does not contain a '.', which often occurs when dynamically setting the WP_SITEURL constant. While in offline mode, the Jetpack Social module will not load.", 'jetpack' ) );
[1786] Fix | Delete
}
[1787] Fix | Delete
[1788] Fix | Delete
WP_CLI::error( __( 'Jetpack is currently in offline mode, so the Jetpack Social module will not load.', 'jetpack' ) );
[1789] Fix | Delete
}
[1790] Fix | Delete
[1791] Fix | Delete
if ( ! class_exists( Publicize::class ) ) {
[1792] Fix | Delete
WP_CLI::error( __( 'The Jetpack Social module is not loaded.', 'jetpack' ) );
[1793] Fix | Delete
}
[1794] Fix | Delete
[1795] Fix | Delete
$action = $args[0];
[1796] Fix | Delete
$publicize = new Publicize();
[1797] Fix | Delete
$identifier = ! empty( $args[1] ) ? $args[1] : false;
[1798] Fix | Delete
$services = array_keys( $publicize->get_services() );
[1799] Fix | Delete
$id_is_service = in_array( $identifier, $services, true );
[1800] Fix | Delete
[1801] Fix | Delete
switch ( $action ) {
[1802] Fix | Delete
case 'list':
[1803] Fix | Delete
$_args = array(
[1804] Fix | Delete
'ignore_cache' => $named_args['ignore-cache'] ?? false,
[1805] Fix | Delete
);
[1806] Fix | Delete
// For the CLI command, let's return all connections when a user isn't specified. This
[1807] Fix | Delete
// differs from the logic in the Publicize class.
[1808] Fix | Delete
$connections_to_return = is_user_logged_in()
[1809] Fix | Delete
? Connections::get_all_for_user( $_args )
[1810] Fix | Delete
: Connections::get_all( $_args );
[1811] Fix | Delete
[1812] Fix | Delete
if ( $id_is_service && ! empty( $identifier ) && ! empty( $connections_to_return ) ) {
[1813] Fix | Delete
$temp_connections = $connections_to_return;
[1814] Fix | Delete
$connections_to_return = array();
[1815] Fix | Delete
[1816] Fix | Delete
foreach ( $temp_connections as $connection ) {
[1817] Fix | Delete
if ( $identifier === $connection['service_name'] ) {
[1818] Fix | Delete
$connections_to_return[] = $connection;
[1819] Fix | Delete
}
[1820] Fix | Delete
}
[1821] Fix | Delete
}
[1822] Fix | Delete
[1823] Fix | Delete
if ( $identifier && ! $id_is_service && ! empty( $connections_to_return ) ) {
[1824] Fix | Delete
$connections_to_return = wp_list_filter( $connections_to_return, array( 'connection_id' => $identifier ) );
[1825] Fix | Delete
}
[1826] Fix | Delete
[1827] Fix | Delete
$expected_keys = array(
[1828] Fix | Delete
'connection_id',
[1829] Fix | Delete
'service_name',
[1830] Fix | Delete
'display_name',
[1831] Fix | Delete
'external_id',
[1832] Fix | Delete
'wpcom_user_id',
[1833] Fix | Delete
'shared',
[1834] Fix | Delete
);
[1835] Fix | Delete
[1836] Fix | Delete
// Somehow, a test site ended up in a state where $connections_to_return looked like:
[1837] Fix | Delete
// array( array( array( 'id' => 0, 'service' => 0 ) ) ) // phpcs:ignore Squiz.PHP.CommentedOutCode.Found
[1838] Fix | Delete
// This caused the CLI command to error when running WP_CLI\Utils\format_items() below. So
[1839] Fix | Delete
// to minimize future issues, this nested loop will remove any connections that don't contain
[1840] Fix | Delete
// any keys that we expect.
[1841] Fix | Delete
foreach ( (array) $connections_to_return as $connection_key => $connection ) {
[1842] Fix | Delete
foreach ( $expected_keys as $expected_key ) {
[1843] Fix | Delete
if ( ! isset( $connection[ $expected_key ] ) ) {
[1844] Fix | Delete
unset( $connections_to_return[ $connection_key ] );
[1845] Fix | Delete
continue;
[1846] Fix | Delete
}
[1847] Fix | Delete
}
[1848] Fix | Delete
}
[1849] Fix | Delete
[1850] Fix | Delete
if ( empty( $connections_to_return ) ) {
[1851] Fix | Delete
return false;
[1852] Fix | Delete
}
[1853] Fix | Delete
[1854] Fix | Delete
WP_CLI\Utils\format_items( $named_args['format'], $connections_to_return, $expected_keys );
[1855] Fix | Delete
break; // list.
[1856] Fix | Delete
case 'disconnect':
[1857] Fix | Delete
if ( ! $identifier ) {
[1858] Fix | Delete
WP_CLI::error( __( 'A connection ID must be passed in order to disconnect.', 'jetpack' ) );
[1859] Fix | Delete
}
[1860] Fix | Delete
[1861] Fix | Delete
// If the connection ID is 'all' then delete all connections. If the connection ID
[1862] Fix | Delete
// matches a service, delete all connections for that service.
[1863] Fix | Delete
if ( 'all' === $identifier || $id_is_service ) {
[1864] Fix | Delete
if ( 'all' === $identifier ) {
[1865] Fix | Delete
WP_CLI::log( __( "You're about to delete all Jetpack Social connections.", 'jetpack' ) );
[1866] Fix | Delete
} else {
[1867] Fix | Delete
/* translators: %s is a lowercase string for a social network. */
[1868] Fix | Delete
WP_CLI::log( sprintf( __( "You're about to delete all Jetpack Social connections to %s.", 'jetpack' ), $identifier ) );
[1869] Fix | Delete
}
[1870] Fix | Delete
[1871] Fix | Delete
jetpack_cli_are_you_sure();
[1872] Fix | Delete
[1873] Fix | Delete
$service = $identifier;
[1874] Fix | Delete
$connections = is_user_logged_in()
[1875] Fix | Delete
? Connections::get_all_for_user()
[1876] Fix | Delete
: Connections::get_all();
[1877] Fix | Delete
[1878] Fix | Delete
if ( 'all' !== $service ) {
[1879] Fix | Delete
$connections = wp_list_filter( $connections, array( 'service_name' => $service ) );
[1880] Fix | Delete
}
[1881] Fix | Delete
[1882] Fix | Delete
if ( ! empty( $connections ) ) {
[1883] Fix | Delete
$count = is_countable( $connections ) ? count( $connections ) : 0;
[1884] Fix | Delete
$progress = \WP_CLI\Utils\make_progress_bar(
[1885] Fix | Delete
/* translators: %s is a lowercase string for a social network. */
[1886] Fix | Delete
sprintf( __( 'Disconnecting all connections to %s.', 'jetpack' ), $service ),
[1887] Fix | Delete
$count
[1888] Fix | Delete
);
[1889] Fix | Delete
[1890] Fix | Delete
foreach ( $connections as $connection ) {
[1891] Fix | Delete
$id = $connection['connection_id'];
[1892] Fix | Delete
if ( false === $publicize->disconnect( false, $id ) ) {
[1893] Fix | Delete
WP_CLI::error(
[1894] Fix | Delete
sprintf(
[1895] Fix | Delete
/* translators: %1$d is a numeric ID and %2$s is a lowercase string for a social network. */
[1896] Fix | Delete
__( 'Jetpack Social connection %d could not be disconnected', 'jetpack' ),
[1897] Fix | Delete
$id
[1898] Fix | Delete
)
[1899] Fix | Delete
);
[1900] Fix | Delete
}
[1901] Fix | Delete
[1902] Fix | Delete
// @phan-suppress-next-line PhanUndeclaredClassMethod - Class is missing from php-stubs/wp-cli-stubs 🤷
[1903] Fix | Delete
$progress->tick();
[1904] Fix | Delete
}
[1905] Fix | Delete
[1906] Fix | Delete
// @phan-suppress-next-line PhanUndeclaredClassMethod - Class is missing from php-stubs/wp-cli-stubs 🤷
[1907] Fix | Delete
$progress->finish();
[1908] Fix | Delete
[1909] Fix | Delete
if ( 'all' === $service ) {
[1910] Fix | Delete
WP_CLI::success( __( 'All Jetpack Social connections were successfully disconnected.', 'jetpack' ) );
[1911] Fix | Delete
} else {
[1912] Fix | Delete
/* translators: %s is a lowercase string for a social network. */
[1913] Fix | Delete
WP_CLI::success( sprintf( __( 'All Jetpack Social connections to %s were successfully disconnected.', 'jetpack' ), $service ) );
[1914] Fix | Delete
}
[1915] Fix | Delete
}
[1916] Fix | Delete
} elseif ( false !== $publicize->disconnect( false, $identifier ) ) {
[1917] Fix | Delete
/* translators: %d is a numeric ID. Example: 1234. */
[1918] Fix | Delete
WP_CLI::success( sprintf( __( 'Jetpack Social connection %d has been disconnected.', 'jetpack' ), $identifier ) );
[1919] Fix | Delete
} else {
[1920] Fix | Delete
/* translators: %d is a numeric ID. Example: 1234. */
[1921] Fix | Delete
WP_CLI::error( sprintf( __( 'Jetpack Social connection %d could not be disconnected.', 'jetpack' ), $identifier ) );
[1922] Fix | Delete
}
[1923] Fix | Delete
break; // disconnect.
[1924] Fix | Delete
}
[1925] Fix | Delete
}
[1926] Fix | Delete
[1927] Fix | Delete
/**
[1928] Fix | Delete
* Get the API host.
[1929] Fix | Delete
*
[1930] Fix | Delete
* @return string URL.
[1931] Fix | Delete
*/
[1932] Fix | Delete
private function get_api_host() {
[1933] Fix | Delete
$env_api_host = getenv( 'JETPACK_START_API_HOST', true );
[1934] Fix | Delete
return $env_api_host ? 'https://' . $env_api_host : JETPACK__WPCOM_JSON_API_BASE;
[1935] Fix | Delete
}
[1936] Fix | Delete
[1937] Fix | Delete
/**
[1938] Fix | Delete
* Log and exit on a partner provision error.
[1939] Fix | Delete
*
[1940] Fix | Delete
* @param WP_Error $error Error.
[1941] Fix | Delete
* @return never
[1942] Fix | Delete
*/
[1943] Fix | Delete
private function partner_provision_error( $error ) {
[1944] Fix | Delete
WP_CLI::log(
[1945] Fix | Delete
wp_json_encode(
[1946] Fix | Delete
array(
[1947] Fix | Delete
'success' => false,
[1948] Fix | Delete
'error_code' => $error->get_error_code(),
[1949] Fix | Delete
'error_message' => $error->get_error_message(),
[1950] Fix | Delete
)
[1951] Fix | Delete
)
[1952] Fix | Delete
);
[1953] Fix | Delete
exit( 1 );
[1954] Fix | Delete
}
[1955] Fix | Delete
[1956] Fix | Delete
/**
[1957] Fix | Delete
* Creates the essential files in Jetpack to start building a Gutenberg block or plugin.
[1958] Fix | Delete
*
[1959] Fix | Delete
* ## TYPES
[1960] Fix | Delete
*
[1961] Fix | Delete
* block: it creates a Jetpack block. All files will be created in a directory under extensions/blocks named based on the block title or a specific given slug.
[1962] Fix | Delete
*
[1963] Fix | Delete
* ## BLOCK TYPE OPTIONS
[1964] Fix | Delete
*
[1965] Fix | Delete
* The first parameter is the block title and it's not associative. Add it wrapped in quotes.
[1966] Fix | Delete
* The title is also used to create the slug and the edit PHP class name. If it's something like "Logo gallery", the slug will be 'logo-gallery' and the class name will be LogoGalleryEdit.
[1967] Fix | Delete
* --slug: Specific slug to identify the block that overrides the one generated based on the title.
[1968] Fix | Delete
* --description: Allows to provide a text description of the block.
[1969] Fix | Delete
* --keywords: Provide up to three keywords separated by comma so users can find this block when they search in Gutenberg's inserter.
[1970] Fix | Delete
* --variation: Allows to decide whether the block should be a production block, experimental, or beta. Defaults to Beta when arg not provided.
[1971] Fix | Delete
*
[1972] Fix | Delete
* ## BLOCK TYPE EXAMPLES
[1973] Fix | Delete
*
[1974] Fix | Delete
* wp jetpack scaffold block "Cool Block"
[1975] Fix | Delete
* wp jetpack scaffold block "Amazing Rock" --slug="good-music" --description="Rock the best music on your site"
[1976] Fix | Delete
* wp jetpack scaffold block "Jukebox" --keywords="music, audio, media"
[1977] Fix | Delete
* wp jetpack scaffold block "Jukebox" --variation="experimental"
[1978] Fix | Delete
*
[1979] Fix | Delete
* @subcommand scaffold block
[1980] Fix | Delete
* @synopsis <type> <title> [--slug] [--description] [--keywords] [--variation]
[1981] Fix | Delete
*
[1982] Fix | Delete
* @param array $args Positional parameters, when strings are passed, wrap them in quotes.
[1983] Fix | Delete
* @param array $assoc_args Associative parameters like --slug="nice-block".
[1984] Fix | Delete
*/
[1985] Fix | Delete
public function scaffold( $args, $assoc_args ) {
[1986] Fix | Delete
// It's ok not to check if it's set, because otherwise WPCLI exits earlier.
[1987] Fix | Delete
switch ( $args[0] ) {
[1988] Fix | Delete
case 'block':
[1989] Fix | Delete
$this->block( $args, $assoc_args );
[1990] Fix | Delete
break;
[1991] Fix | Delete
default:
[1992] Fix | Delete
/* translators: %s is the subcommand */
[1993] Fix | Delete
WP_CLI::error( sprintf( esc_html__( 'Invalid subcommand %s.', 'jetpack' ), $args[0] ) . ' 👻' );
[1994] Fix | Delete
exit( 1 );
[1995] Fix | Delete
}
[1996] Fix | Delete
}
[1997] Fix | Delete
[1998] Fix | Delete
/**
[1999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function