This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Omphaloskepsis/plugins/jetpack/json-endpoints/class.wpcom-json-api-site-settings-v1-2-endpoint.php
2018-03-21 18:19:20 +00:00

62 lines
1.7 KiB
PHP

<?php
/**
* WARNING: This file is distributed verbatim in Jetpack.
* There should be nothing WordPress.com specific in this file.
*
* @hide-in-jetpack
* @autounit api site-settings
*/
class WPCOM_JSON_API_Site_Settings_V1_2_endpoint extends WPCOM_JSON_API_Site_Settings_Endpoint {
public static $site_format = array(
'ID' => '(int) Site ID',
'name' => '(string) Title of site',
'description' => '(string) Tagline or description of site',
'URL' => '(string) Full URL to the site',
'locale' => '(string) Locale code of the site',
'settings' => '(array) An array of options/settings for the blog. Only viewable by users with post editing rights to the site.',
);
function callback( $path = '', $blog_id = 0 ) {
add_filter( 'site_settings_endpoint_update_locale', array( $this, 'update_locale' ) );
add_filter( 'site_settings_endpoint_get', array( $this, 'return_locale' ) );
add_filter( 'site_settings_site_format', array( $this, 'site_format' ) );
return parent::callback( $path, $blog_id );
}
protected function get_locale( $key ) {
if ( 'locale' == $key ) {
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
return (string) get_blog_lang_code();
} else {
return get_locale();
}
}
return false;
}
public function return_locale( $settings ) {
return $settings + array( 'locale' => $this->get_locale( 'locale' ) );
}
public function update_locale( $value ) {
if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
$lang_id = get_lang_id_by_code( $value );
if ( ! empty( $lang_id ) ) {
if ( update_option( 'lang_id', $lang_id ) ) {
return true;
}
}
}
return false;
}
public function site_format( $format ) {
return self::$site_format;
}
}