summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-themes-endpoint.php')
-rw-r--r--plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-themes-endpoint.php178
1 files changed, 0 insertions, 178 deletions
diff --git a/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-themes-endpoint.php b/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-themes-endpoint.php
deleted file mode 100644
index 2e32dccd..00000000
--- a/plugins/jetpack/json-endpoints/jetpack/class.jetpack-json-api-themes-endpoint.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-
-
-// THEMES
-
-/**
- * Base class for working with themes, has useful helper functions.
- */
-abstract class Jetpack_JSON_API_Themes_Endpoint extends Jetpack_JSON_API_Endpoint {
-
- protected $themes = array();
-
- protected $bulk = true;
- protected $log;
- protected $current_theme_id;
-
- static $_response_format = array(
- 'id' => '(string) The theme\'s ID.',
- 'screenshot' => '(string) A theme screenshot URL',
- 'name' => '(string) The name of the theme.',
- 'theme_uri' => '(string) The URI of the theme\'s webpage.',
- 'description' => '(string) A description of the theme.',
- 'author' => '(string) The author of the theme.',
- 'author_uri' => '(string) The website of the theme author.',
- 'tags' => '(array) Tags indicating styles and features of the theme.',
- 'log' => '(array) An array of log strings',
- 'autoupdate' => '(bool) Whether the theme is automatically updated',
- 'autoupdate_translation' => '(bool) Whether the theme is automatically updating translations',
- );
-
- protected function result() {
-
- $themes = $this->get_themes();
-
- if ( ! $this->bulk && ! empty( $themes ) ) {
- return array_pop( $themes );
- }
-
- return array( 'themes' => $themes );
-
- }
-
- /**
- * Walks through either the submitted theme or list of themes and creates the global array
- * @param $theme
- *
- * @return bool
- */
- protected function validate_input( $theme ) {
- $args = $this->input();
- // lets set what themes were requested, and validate them
- if ( ! isset( $theme ) || empty( $theme ) ) {
-
- if ( ! $args['themes'] || empty( $args['themes'] ) ) {
- return new WP_Error( 'missing_theme', __( 'You are required to specify a theme to update.', 'jetpack' ), 400 );
- }
- if ( is_array( $args['themes'] ) ) {
- $this->themes = $args['themes'];
- } else {
- $this->themes[] = $args['themes'];
- }
- } else {
- $this->themes[] = urldecode( $theme );
- $this->bulk = false;
- }
-
- if ( is_wp_error( $error = $this->validate_themes() ) ) {
- return $error;
- }
-
- return parent::validate_input( $theme );
- }
-
- /**
- * Walks through submitted themes to make sure they are valid
- * @return bool|WP_Error
- */
- protected function validate_themes() {
- foreach ( $this->themes as $theme ) {
- if ( is_wp_error( $error = wp_get_theme( $theme )->errors() ) ) {
- return new WP_Error( 'unknown_theme', $error->get_error_messages() , 404 );
- }
- }
- return true;
- }
-
- /**
- * Format a theme for the public API
- * @param object $theme WP_Theme object
- * @return array Named array of theme info used by the API
- */
- protected function format_theme( $theme ) {
-
- if ( ! ( $theme instanceof WP_Theme ) ) {
- $theme = wp_get_theme( $theme );
- }
-
- $fields = array(
- 'name' => 'Name',
- 'theme_uri' => 'ThemeURI',
- 'description' => 'Description',
- 'author' => 'Author',
- 'author_uri' => 'AuthorURI',
- 'tags' => 'Tags',
- 'version' => 'Version'
- );
-
- $id = $theme->get_stylesheet();
- $formatted_theme = array(
- 'id' => $id,
- 'screenshot' => jetpack_photon_url( $theme->get_screenshot(), array(), 'network_path' ),
- 'active' => $id === $this->current_theme_id,
- );
-
- foreach( $fields as $key => $field ) {
- $formatted_theme[ $key ] = $theme->get( $field );
- }
-
- $update_themes = get_site_transient( 'update_themes' );
- $formatted_theme['update'] = ( isset( $update_themes->response[ $id ] ) ) ? $update_themes->response[ $id ] : null;
-
- $autoupdate = in_array( $id, Jetpack_Options::get_option( 'autoupdate_themes', array() ) );
- $formatted_theme['autoupdate'] = $autoupdate;
-
- $autoupdate_translation = in_array( $id, Jetpack_Options::get_option( 'autoupdate_themes_translations', array() ) );
- $formatted_theme['autoupdate_translation'] = $autoupdate || $autoupdate_translation || Jetpack_Options::get_option( 'autoupdate_translations', false );
-
- if ( isset( $this->log[ $id ] ) ) {
- $formatted_theme['log'] = $this->log[ $id ];
- }
-
- /**
- * Filter the array of theme information that will be returned per theme by the Jetpack theme APIs.
- *
- * @module json-api
- *
- * @since 4.7.0
- *
- * @param array $formatted_theme The theme info array.
- */
- return apply_filters( 'jetpack_format_theme_details', $formatted_theme );
- }
-
- /**
- * Checks the query_args our collection endpoint was passed to ensure that it's in the proper bounds.
- * @return bool|WP_Error a WP_Error object if the args are out of bounds, true if things are good.
- */
- protected function check_query_args() {
- $args = $this->query_args();
- if ( $args['offset'] < 0 )
- return new WP_Error( 'invalid_offset', __( 'Offset must be greater than or equal to 0.', 'jetpack' ), 400 );
- if ( $args['limit'] < 0 )
- return new WP_Error( 'invalid_limit', __( 'Limit must be greater than or equal to 0.', 'jetpack' ), 400 );
- return true;
- }
-
- /**
- * Format a list of themes for public display, using the supplied offset and limit args
- * @uses WPCOM_JSON_API_Endpoint::query_args()
- * @return array Public API theme objects
- */
- protected function get_themes() {
- // ditch keys
- $themes = array_values( $this->themes );
- // do offset & limit - we've already returned a 400 error if they're bad numbers
- $args = $this->query_args();
-
- if ( isset( $args['offset'] ) )
- $themes = array_slice( $themes, (int) $args['offset'] );
- if ( isset( $args['limit'] ) )
- $themes = array_slice( $themes, 0, (int) $args['limit'] );
-
- $this->current_theme_id = wp_get_theme()->get_stylesheet();
-
- return array_map( array( $this, 'format_theme' ), $themes );
- }
-
-}