[ Index ]

PHP Cross Reference of Wordpress 2.9.1

title

Body

[close]

/wp-admin/includes/ -> theme-install.php (source)

   1  <?php
   2  /**
   3   * WordPress Theme Install Administration API
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  
   9  $themes_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()),
  10      'abbr' => array('title' => array()), 'acronym' => array('title' => array()),
  11      'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(),
  12      'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(),
  13      'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(),
  14      'img' => array('src' => array(), 'class' => array(), 'alt' => array())
  15  );
  16  
  17  $theme_field_defaults = array( 'description' => true, 'sections' => false, 'tested' => true, 'requires' => true,
  18      'rating' => true, 'downloaded' => true, 'downloadlink' => true, 'last_updated' => true, 'homepage' => true,
  19      'tags' => true, 'num_ratings' => true
  20  );
  21  
  22  
  23  /**
  24   * Retrieve theme installer pages from WordPress Themes API.
  25   *
  26   * It is possible for a theme to override the Themes API result with three
  27   * filters. Assume this is for themes, which can extend on the Theme Info to
  28   * offer more choices. This is very powerful and must be used with care, when
  29   * overridding the filters.
  30   *
  31   * The first filter, 'themes_api_args', is for the args and gives the action as
  32   * the second parameter. The hook for 'themes_api_args' must ensure that an
  33   * object is returned.
  34   *
  35   * The second filter, 'themes_api', is the result that would be returned.
  36   *
  37   * @since 2.8.0
  38   *
  39   * @param string $action
  40   * @param array|object $args Optional. Arguments to serialize for the Theme Info API.
  41   * @return mixed
  42   */
  43  function themes_api($action, $args = null) {
  44  
  45      if ( is_array($args) )
  46          $args = (object)$args;
  47  
  48      if ( !isset($args->per_page) )
  49          $args->per_page = 24;
  50  
  51      $args = apply_filters('themes_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter.
  52      $res = apply_filters('themes_api', false, $action, $args); //NOTE: Allows a theme to completely override the builtin WordPress.org API.
  53  
  54      if ( ! $res ) {
  55          $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) );
  56          if ( is_wp_error($request) ) {
  57              $res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occured during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>'), $request->get_error_message() );
  58          } else {
  59              $res = unserialize($request['body']);
  60              if ( ! $res )
  61              $res = new WP_Error('themes_api_failed', __('An unknown error occured'), $request['body']);
  62          }
  63      }
  64      //var_dump(array($args, $res));
  65      return apply_filters('themes_api_result', $res, $action, $args);
  66  }
  67  
  68  /**
  69   * Retrieve list of WordPress theme features (aka theme tags)
  70   *
  71   * @since 2.8.0
  72   *
  73   * @return array
  74   */
  75  function install_themes_feature_list( ) {
  76      if ( !$cache = get_transient( 'wporg_theme_feature_list' ) )
  77          set_transient( 'wporg_theme_feature_list', array( ),  10800);
  78  
  79      if ( $cache  )
  80          return $cache;
  81  
  82      $feature_list = themes_api( 'feature_list', array( ) );
  83      if ( is_wp_error( $feature_list ) )
  84          return $features;
  85  
  86      set_transient( 'wporg_theme_feature_list', $feature_list, 10800 );
  87  
  88      return $feature_list;
  89  }
  90  
  91  add_action('install_themes_search', 'install_theme_search', 10, 1);
  92  /**
  93   * Display theme search results
  94   *
  95   * @since 2.8.0
  96   *
  97   * @param string $page
  98   */
  99  function install_theme_search($page) {
 100      global $theme_field_defaults;
 101  
 102      $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
 103      $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
 104  
 105      $args = array();
 106  
 107      switch( $type ){
 108          case 'tag':
 109              $terms = explode(',', $term);
 110              $terms = array_map('trim', $terms);
 111              $terms = array_map('sanitize_title_with_dashes', $terms);
 112              $args['tag'] = $terms;
 113              break;
 114          case 'term':
 115              $args['search'] = $term;
 116              break;
 117          case 'author':
 118              $args['author'] = $term;
 119              break;
 120      }
 121  
 122      $args['page'] = $page;
 123      $args['fields'] = $theme_field_defaults;
 124  
 125      if ( !empty( $_POST['features'] ) ) {
 126          $terms = $_POST['features'];
 127          $terms = array_map( 'trim', $terms );
 128          $terms = array_map( 'sanitize_title_with_dashes', $terms );
 129          $args['tag'] = $terms;
 130          $_REQUEST['s'] = implode( ',', $terms );
 131          $_REQUEST['type'] = 'tag';
 132      }
 133  
 134      $api = themes_api('query_themes', $args);
 135  
 136      if ( is_wp_error($api) )
 137          wp_die($api);
 138  
 139      add_action('install_themes_table_header', 'install_theme_search_form');
 140  
 141      display_themes($api->themes, $api->info['page'], $api->info['pages']);
 142  }
 143  
 144  /**
 145   * Display search form for searching themes.
 146   *
 147   * @since 2.8.0
 148   */
 149  function install_theme_search_form() {
 150      $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : '';
 151      $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';
 152      ?>
 153  <p class="install-help"><?php _e('Search for themes by keyword, author, or tag.') ?></p>
 154  
 155  <form id="search-themes" method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>">
 156      <select    name="type" id="typeselector">
 157      <option value="term" <?php selected('term', $type) ?>><?php _e('Term'); ?></option>
 158      <option value="author" <?php selected('author', $type) ?>><?php _e('Author'); ?></option>
 159      <option value="tag" <?php selected('tag', $type) ?>><?php echo _x('Tag', 'Theme Installer'); ?></option>
 160      </select>
 161      <input type="text" name="s" size="30" value="<?php echo esc_attr($term) ?>" />
 162      <input type="submit" name="search" value="<?php esc_attr_e('Search'); ?>" class="button" />
 163  </form>
 164  <?php
 165  }
 166  
 167  add_action('install_themes_dashboard', 'install_themes_dashboard');
 168  /**
 169   * Display tags filter for themes.
 170   *
 171   * @since 2.8.0
 172   */
 173  function install_themes_dashboard() {
 174      install_theme_search_form();
 175  ?>
 176  <h4><?php _e('Feature Filter') ?></h4>
 177  <form method="post" action="<?php echo admin_url( 'theme-install.php?tab=search' ); ?>">
 178  <p class="install-help"><?php _e('Find a theme based on specific features') ?></p>
 179      <?php
 180      $feature_list = install_themes_feature_list( );
 181      echo '<div class="feature-filter">';
 182      $trans = array ('Colors' => __('Colors'), 'black' => __('Black'), 'blue' => __('Blue'), 'brown' => __('Brown'),
 183          'green' => __('Green'), 'orange' => __('Orange'), 'pink' => __('Pink'), 'purple' => __('Purple'), 'red' => __('Red'),
 184          'silver' => __('Silver'), 'tan' => __('Tan'), 'white' => __('White'), 'yellow' => __('Yellow'), 'dark' => __('Dark'),
 185          'light' => __('Light'), 'Columns' => __('Columns'), 'one-column' => __('One Column'), 'two-columns' => __('Two Columns'),
 186          'three-columns' => __('Three Columns'), 'four-columns' => __('Four Columns'), 'left-sidebar' => __('Left Sidebar'),
 187          'right-sidebar' => __('Right Sidebar'), 'Width' => __('Width'), 'fixed-width' => __('Fixed Width'), 'flexible-width' => __('Flexible Width'),
 188          'Features' => __('Features'), 'custom-colors' => __('Custom Colors'), 'custom-header' => __('Custom Header'), 'theme-options' => __('Theme Options'),
 189          'threaded-comments' => __('Threaded Comments'), 'sticky-post' => __('Sticky Post'), 'microformats' => __('Microformats'),
 190          'Subject' => __('Subject'), 'holiday' => __('Holiday'), 'photoblogging' => __('Photoblogging'), 'seasonal' => __('Seasonal'),
 191      );
 192  
 193      foreach ( (array) $feature_list as $feature_name => $features ) {
 194          if ( isset($trans[$feature_name]) )
 195               $feature_name = $trans[$feature_name];
 196          $feature_name = esc_html( $feature_name );
 197          echo '<div class="feature-name">' . $feature_name . '</div>';
 198  
 199          echo '<ol style="float: left; width: 725px;" class="feature-group">';
 200          foreach ( $features as $feature ) {
 201              $feature_name = $feature;
 202              if ( isset($trans[$feature]) )
 203                  $feature_name = $trans[$feature];
 204              $feature_name = esc_html( $feature_name );
 205              $feature = esc_attr($feature);
 206  ?>
 207  
 208  <li>
 209      <input type="checkbox" name="features[<?php echo $feature; ?>]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" />
 210      <label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label>
 211  </li>
 212  
 213  <?php    } ?>
 214  </ol>
 215  <br class="clear" />
 216  <?php
 217      } ?>
 218  
 219  </div>
 220  <br class="clear" />
 221  <p><input type="submit" name="search" value="<?php esc_attr_e('Find Themes'); ?>" class="button" /></p>
 222  </form>
 223  <?php
 224  }
 225  
 226  add_action('install_themes_featured', 'install_themes_featured', 10, 1);
 227  /**
 228   * Display featured themes.
 229   *
 230   * @since 2.8.0
 231   *
 232   * @param string $page
 233   */
 234  function install_themes_featured($page = 1) {
 235      global $theme_field_defaults;
 236      $args = array('browse' => 'featured', 'page' => $page, 'fields' => $theme_field_defaults);
 237      $api = themes_api('query_themes', $args);
 238      if ( is_wp_error($api) )
 239          wp_die($api);
 240      display_themes($api->themes, $api->info['page'], $api->info['pages']);
 241  }
 242  
 243  add_action('install_themes_new', 'install_themes_new', 10, 1);
 244  /**
 245   * Display new themes/
 246   *
 247   * @since 2.8.0
 248   *
 249   * @param string $page
 250   */
 251  function install_themes_new($page = 1) {
 252      global $theme_field_defaults;
 253      $args = array('browse' => 'new', 'page' => $page, 'fields' => $theme_field_defaults);
 254      $api = themes_api('query_themes', $args);
 255      if ( is_wp_error($api) )
 256          wp_die($api);
 257      display_themes($api->themes, $api->info['page'], $api->info['pages']);
 258  }
 259  
 260  add_action('install_themes_updated', 'install_themes_updated', 10, 1);
 261  /**
 262   * Display recently updated themes.
 263   *
 264   * @since 2.8.0
 265   *
 266   * @param string $page
 267   */
 268  function install_themes_updated($page = 1) {
 269      global $theme_field_defaults;
 270      $args = array('browse' => 'updated', 'page' => $page, 'fields' => $theme_field_defaults);
 271      $api = themes_api('query_themes', $args);
 272      display_themes($api->themes, $api->info['page'], $api->info['pages']);
 273  }
 274  
 275  add_action('install_themes_upload', 'install_themes_upload', 10, 1);
 276  function install_themes_upload($page = 1) {
 277  ?>
 278  <h4><?php _e('Install a theme in .zip format') ?></h4>
 279  <p class="install-help"><?php _e('If you have a theme in a .zip format, you may install it by uploading it here.') ?></p>
 280  <form method="post" enctype="multipart/form-data" action="<?php echo admin_url('update.php?action=upload-theme') ?>">
 281      <?php wp_nonce_field( 'theme-upload') ?>
 282      <input type="file" name="themezip" />
 283      <input type="submit"
 284      class="button" value="<?php esc_attr_e('Install Now') ?>" />
 285  </form>
 286      <?php
 287  }
 288  
 289  function display_theme($theme, $actions = null, $show_details = true) {
 290      global $themes_allowedtags;
 291  
 292      if ( empty($theme) )
 293          return;
 294  
 295      $name = wp_kses($theme->name, $themes_allowedtags);
 296      $desc = wp_kses($theme->description, $themes_allowedtags);
 297      //if ( strlen($desc) > 30 )
 298      //    $desc =  substr($desc, 0, 15) . '<span class="dots">...</span><span>' . substr($desc, -15) . '</span>';
 299  
 300      $preview_link = $theme->preview_url . '?TB_iframe=true&amp;width=600&amp;height=400';
 301      if ( !is_array($actions) ) {
 302          $actions = array();
 303          $actions[] = '<a href="' . admin_url('theme-install.php?tab=theme-information&amp;theme=' . $theme->slug .
 304                                          '&amp;TB_iframe=true&amp;tbWidth=500&amp;tbHeight=350') . '" class="thickbox thickbox-preview onclick" title="' . esc_attr(sprintf(__('Install &#8220;%s&#8221;'), $name)) . '">' . __('Install') . '</a>';
 305          $actions[] = '<a href="' . $preview_link . '" class="thickbox thickbox-preview onclick previewlink" title="' . esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)) . '">' . __('Preview') . '</a>';
 306          $actions = apply_filters('theme_install_action_links', $actions, $theme);
 307      }
 308  
 309      $actions = implode ( ' | ', $actions );
 310      ?>
 311  <a class='thickbox thickbox-preview screenshot'
 312      href='<?php echo esc_url($preview_link); ?>'
 313      title='<?php echo esc_attr(sprintf(__('Preview &#8220;%s&#8221;'), $name)); ?>'>
 314  <img src='<?php echo esc_url($theme->screenshot_url); ?>' width='150' />
 315  </a>
 316  <h3><?php echo $name ?></h3>
 317  <span class='action-links'><?php echo $actions ?></span>
 318  <p><?php echo $desc ?></p>
 319  <?php if ( $show_details ) { ?>
 320  <a href="#theme_detail" class="theme-detail hide-if-no-js" tabindex='4'><?php _e('Details') ?></a>
 321  <div class="themedetaildiv hide-if-js">
 322  <p><strong><?php _e('Version:') ?></strong> <?php echo wp_kses($theme->version, $themes_allowedtags) ?></p>
 323  <p><strong><?php _e('Author:') ?></strong> <?php echo wp_kses($theme->author, $themes_allowedtags) ?></p>
 324  <?php if ( ! empty($theme->last_updated) ) : ?>
 325  <p><strong><?php _e('Last Updated:') ?></strong> <span title="<?php echo $theme->last_updated ?>"><?php printf( __('%s ago'), human_time_diff(strtotime($theme->last_updated)) ) ?></span></p>
 326  <?php endif; if ( ! empty($theme->requires) ) : ?>
 327  <p><strong><?php _e('Requires WordPress Version:') ?></strong> <?php printf(__('%s or higher'), $theme->requires) ?></p>
 328  <?php endif; if ( ! empty($theme->tested) ) : ?>
 329  <p><strong><?php _e('Compatible up to:') ?></strong> <?php echo $theme->tested ?></p>
 330  <?php endif; if ( !empty($theme->downloaded) ) : ?>
 331  <p><strong><?php _e('Downloaded:') ?></strong> <?php printf(_n('%s time', '%s times', $theme->downloaded), number_format_i18n($theme->downloaded)) ?></p>
 332  <?php endif; ?>
 333  <div class="star-holder" title="<?php printf(_n('(based on %s rating)', '(based on %s ratings)', $theme->num_ratings), number_format_i18n($theme->num_ratings)) ?>">
 334      <div class="star star-rating" style="width: <?php echo esc_attr($theme->rating) ?>px"></div>
 335      <div class="star star5"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('5 stars') ?>" /></div>
 336      <div class="star star4"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('4 stars') ?>" /></div>
 337      <div class="star star3"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('3 stars') ?>" /></div>
 338      <div class="star star2"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('2 stars') ?>" /></div>
 339      <div class="star star1"><img src="<?php echo admin_url('images/star.gif'); ?>" alt="<?php _e('1 star') ?>" /></div>
 340  </div>
 341  </div>
 342  <?php }
 343      /*
 344       object(stdClass)[59]
 345       public 'name' => string 'Magazine Basic' (length=14)
 346       public 'slug' => string 'magazine-basic' (length=14)
 347       public 'version' => string '1.1' (length=3)
 348       public 'author' => string 'tinkerpriest' (length=12)
 349       public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36)
 350       public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68)
 351       public 'rating' => float 80
 352       public 'num_ratings' => int 1
 353       public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49)
 354       public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by <a href="http://bavotasan.com">c.bavota</a> of <a href="http://tinkerpriestmedia.com">Tinker Priest Media</a>.' (length=214)
 355       public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66)
 356       */
 357  }
 358  
 359  /**
 360   * Display theme content based on theme list.
 361   *
 362   * @since 2.8.0
 363   *
 364   * @param array $themes List of themes.
 365   * @param string $page
 366   * @param int $totalpages Number of pages.
 367   */
 368  function display_themes($themes, $page = 1, $totalpages = 1) {
 369      global $themes_allowedtags;
 370  
 371      $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : '';
 372      $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : '';
 373      ?>
 374  <div class="tablenav">
 375  <div class="alignleft actions"><?php do_action('install_themes_table_header'); ?></div>
 376      <?php
 377      $url = esc_url($_SERVER['REQUEST_URI']);
 378      if ( ! empty($term) )
 379          $url = add_query_arg('s', $term, $url);
 380      if ( ! empty($type) )
 381          $url = add_query_arg('type', $type, $url);
 382  
 383      $page_links = paginate_links( array(
 384              'base' => add_query_arg('paged', '%#%', $url),
 385              'format' => '',
 386              'prev_text' => __('&laquo;'),
 387              'next_text' => __('&raquo;'),
 388              'total' => $totalpages,
 389              'current' => $page
 390      ));
 391  
 392      if ( $page_links )
 393          echo "\t\t<div class='tablenav-pages'>$page_links</div>";
 394      ?>
 395  </div>
 396  <br class="clear" />
 397  <?php
 398      if ( empty($themes) ) {
 399          _e('No themes found');
 400          return;
 401      }
 402  ?>
 403  <table id="availablethemes" cellspacing="0" cellpadding="0">
 404  <?php
 405      $rows = ceil(count($themes) / 3);
 406      $table = array();
 407      $theme_keys = array_keys($themes);
 408      for ( $row = 1; $row <= $rows; $row++ )
 409          for ( $col = 1; $col <= 3; $col++ )
 410              $table[$row][$col] = array_shift($theme_keys);
 411  
 412      foreach ( $table as $row => $cols ) {
 413      ?>
 414      <tr>
 415      <?php
 416  
 417      foreach ( $cols as $col => $theme_index ) {
 418          $class = array('available-theme');
 419          if ( $row == 1 ) $class[] = 'top';
 420          if ( $col == 1 ) $class[] = 'left';
 421          if ( $row == $rows ) $class[] = 'bottom';
 422          if ( $col == 3 ) $class[] = 'right';
 423          ?>
 424          <td class="<?php echo join(' ', $class); ?>"><?php
 425              if ( isset($themes[$theme_index]) )
 426                  display_theme($themes[$theme_index]);
 427          ?></td>
 428          <?php } // end foreach $cols ?>
 429      </tr>
 430      <?php } // end foreach $table ?>
 431  </table>
 432  
 433  <div class="tablenav"><?php if ( $page_links )
 434  echo "\t\t<div class='tablenav-pages'>$page_links</div>"; ?> <br
 435      class="clear" />
 436  </div>
 437  
 438  <?php
 439  }
 440  
 441  add_action('install_themes_pre_theme-information', 'install_theme_information');
 442  
 443  /**
 444   * Display theme information in dialog box form.
 445   *
 446   * @since 2.8.0
 447   */
 448  function install_theme_information() {
 449      //TODO: This function needs a LOT of UI work :)
 450      global $tab, $themes_allowedtags;
 451  
 452      $api = themes_api('theme_information', array('slug' => stripslashes( $_REQUEST['theme'] ) ));
 453  
 454      if ( is_wp_error($api) )
 455          wp_die($api);
 456  
 457      // Sanitize HTML
 458      foreach ( (array)$api->sections as $section_name => $content )
 459          $api->sections[$section_name] = wp_kses($content, $themes_allowedtags);
 460      foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key )
 461          $api->$key = wp_kses($api->$key, $themes_allowedtags);
 462  
 463      iframe_header( __('Theme Install') );
 464  
 465      if ( empty($api->download_link) ) {
 466          echo '<div id="message" class="error"><p>' . __('<strong>Error:</strong> This theme is currently not available. Please try again later.') . '</p></div>';
 467          iframe_footer();
 468          exit;
 469      }
 470  
 471      if ( !empty($api->tested) && version_compare($GLOBALS['wp_version'], $api->tested, '>') )
 472          echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has <strong>not been tested</strong> with your current version of WordPress.') . '</p></div>';
 473      else if ( !empty($api->requires) && version_compare($GLOBALS['wp_version'], $api->requires, '<') )
 474          echo '<div class="updated"><p>' . __('<strong>Warning:</strong> This theme has not been marked as <strong>compatible</strong> with your version of WordPress.') . '</p></div>';
 475  
 476      // Default to a "new" theme
 477      $type = 'install';
 478      // Check to see if this theme is known to be installed, and has an update awaiting it.
 479      $update_themes = get_transient('update_themes');
 480      if ( is_object($update_themes) && isset($update_themes->response) ) {
 481          foreach ( (array)$update_themes->response as $theme_slug => $theme_info ) {
 482              if ( $theme_slug === $api->slug ) {
 483                  $type = 'update_available';
 484                  $update_file = $theme_slug;
 485                  break;
 486              }
 487          }
 488      }
 489  
 490      $themes = get_themes();
 491      foreach ( $themes as $this_theme ) {
 492          if ( is_array($this_theme) && $this_theme['Stylesheet'] == $api->slug ) {
 493              if ( $this_theme['Version'] == $api->version ) {
 494                  $type = 'latest_installed';
 495              } elseif ( $this_theme['Version'] > $api->version ) {
 496                  $type = 'newer_installed';
 497                  $newer_version = $this_theme['Version'];
 498              }
 499              break;
 500          }
 501      }
 502  ?>
 503  
 504  <div class='available-theme'>
 505  <img src='<?php echo esc_url($api->screenshot_url) ?>' width='300' class="theme-preview-img" />
 506  <h3><?php echo $api->name; ?></h3>
 507  <p><?php printf(__('by %s'), $api->author); ?></p>
 508  <p><?php printf(__('Version: %s'), $api->version); ?></p>
 509  
 510  <?php
 511  $buttons = '<a class="button" id="cancel" href="#" onclick="tb_close();return false;">' . __('Cancel') . '</a> ';
 512  
 513  switch ( $type ) {
 514  default:
 515  case 'install':
 516      if ( current_user_can('install_themes') ) :
 517      $buttons .= '<a class="button-primary" id="install" href="' . wp_nonce_url(admin_url('update.php?action=install-theme&theme=' . $api->slug), 'install-theme_' . $api->slug) . '" target="_parent">' . __('Install Now') . '</a>';
 518      endif;
 519      break;
 520  case 'update_available':
 521      if ( current_user_can('update_themes') ) :
 522      $buttons .= '<a class="button-primary" id="install"    href="' . wp_nonce_url(admin_url('update.php?action=upgrade-theme&theme=' . $update_file), 'upgrade-theme_' . $update_file) . '" target="_parent">' . __('Install Update Now') . '</a>';
 523      endif;
 524      break;
 525  case 'newer_installed':
 526      if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
 527      ?><p><?php printf(__('Newer version (%s) is installed.'), $newer_version); ?></p><?php
 528      endif;
 529      break;
 530  case 'latest_installed':
 531      if ( current_user_can('install_themes') || current_user_can('update_themes') ) :
 532      ?><p><?php _e('This version is already installed.'); ?></p><?php
 533      endif;
 534      break;
 535  } ?>
 536  <br class="clear" />
 537  </div>
 538  
 539  <p class="action-button">
 540  <?php echo $buttons; ?>
 541  <br class="clear" />
 542  </p>
 543  
 544  <?php
 545      iframe_footer();
 546      exit;
 547  }


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7