Parsed: 111443

function get_theme_feature_list( $api = true ) {
  // Hard-coded list is used if API is not accessible.
  $features = array(

    __( 'Subject' )  => array(
      'blog'           => __( 'Blog' ),
      'e-commerce'     => __( 'E-Commerce' ),
      'education'      => __( 'Education' ),
      'entertainment'  => __( 'Entertainment' ),
      'food-and-drink' => __( 'Food & Drink' ),
      'holiday'        => __( 'Holiday' ),
      'news'           => __( 'News' ),
      'photography'    => __( 'Photography' ),
      'portfolio'      => __( 'Portfolio' ),
    ),

    __( 'Features' ) => array(
      'accessibility-ready'   => __( 'Accessibility Ready' ),
      'block-patterns'        => __( 'Block Editor Patterns' ),
      'block-styles'          => __( 'Block Editor Styles' ),
      'custom-background'     => __( 'Custom Background' ),
      'custom-colors'         => __( 'Custom Colors' ),
      'custom-header'         => __( 'Custom Header' ),
      'custom-logo'           => __( 'Custom Logo' ),
      'editor-style'          => __( 'Editor Style' ),
      'featured-image-header' => __( 'Featured Image Header' ),
      'featured-images'       => __( 'Featured Images' ),
      'footer-widgets'        => __( 'Footer Widgets' ),
      'full-site-editing'     => __( 'Site Editor' ),
      'full-width-template'   => __( 'Full Width Template' ),
      'post-formats'          => __( 'Post Formats' ),
      'sticky-post'           => __( 'Sticky Post' ),
      'template-editing'      => __( 'Template Editing' ),
      'theme-options'         => __( 'Theme Options' ),
    ),

    __( 'Layout' )   => array(
      'grid-layout'   => __( 'Grid Layout' ),
      'one-column'    => __( 'One Column' ),
      'two-columns'   => __( 'Two Columns' ),
      'three-columns' => __( 'Three Columns' ),
      'four-columns'  => __( 'Four Columns' ),
      'left-sidebar'  => __( 'Left Sidebar' ),
      'right-sidebar' => __( 'Right Sidebar' ),
      'wide-blocks'   => __( 'Wide Blocks' ),
    ),

  );

  if ( ! $api || ! current_user_can( 'install_themes' ) ) {
    return $features;
  }

  $feature_list = get_site_transient( 'wporg_theme_feature_list' );
  if ( ! $feature_list ) {
    set_site_transient( 'wporg_theme_feature_list', array(), 3 * HOUR_IN_SECONDS );
  }

  if ( ! $feature_list ) {
    $feature_list = themes_api( 'feature_list', array() );
    if ( is_wp_error( $feature_list ) ) {
      return $features;
    }
  }

  if ( ! $feature_list ) {
    return $features;
  }

  set_site_transient( 'wporg_theme_feature_list', $feature_list, 3 * HOUR_IN_SECONDS );

  $category_translations = array(
    'Layout'   => __( 'Layout' ),
    'Features' => __( 'Features' ),
    'Subject'  => __( 'Subject' ),
  );

  $wporg_features = array();

  // Loop over the wp.org canonical list and apply translations.
  foreach ( (array) $feature_list as $feature_category => $feature_items ) {
    if ( isset( $category_translations[ $feature_category ] ) ) {
      $feature_category = $category_translations[ $feature_category ];
    }

    $wporg_features[ $feature_category ] = array();

    foreach ( $feature_items as $feature ) {
      if ( isset( $features[ $feature_category ][ $feature ] ) ) {
        $wporg_features[ $feature_category ][ $feature ] = $features[ $feature_category ][ $feature ];
      } else {
        $wporg_features[ $feature_category ][ $feature ] = $feature;
      }
    }
  }

  return $wporg_features;
}