[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/includes/ -> class-wp-application-passwords-list-table.php (source)

   1  <?php
   2  /**
   3   * List Table API: WP_Application_Passwords_List_Table class
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   * @since 5.6.0
   8   */
   9  
  10  /**
  11   * Class for displaying the list of application password items.
  12   *
  13   * @since 5.6.0
  14   * @access private
  15   *
  16   * @see WP_List_Table
  17   */
  18  class WP_Application_Passwords_List_Table extends WP_List_Table {
  19  
  20      /**
  21       * Gets the list of columns.
  22       *
  23       * @since 5.6.0
  24       *
  25       * @return array
  26       */
  27  	public function get_columns() {
  28          return array(
  29              'name'      => __( 'Name' ),
  30              'created'   => __( 'Created' ),
  31              'last_used' => __( 'Last Used' ),
  32              'last_ip'   => __( 'Last IP' ),
  33              'revoke'    => __( 'Revoke' ),
  34          );
  35      }
  36  
  37      /**
  38       * Prepares the list of items for displaying.
  39       *
  40       * @since 5.6.0
  41       *
  42       * @global int $user_id User ID.
  43       */
  44  	public function prepare_items() {
  45          global $user_id;
  46          $this->items = array_reverse( WP_Application_Passwords::get_user_application_passwords( $user_id ) );
  47      }
  48  
  49      /**
  50       * Handles the name column output.
  51       *
  52       * @since 5.6.0
  53       *
  54       * @param array $item The current application password item.
  55       */
  56  	public function column_name( $item ) {
  57          echo esc_html( $item['name'] );
  58      }
  59  
  60      /**
  61       * Handles the created column output.
  62       *
  63       * @since 5.6.0
  64       *
  65       * @param array $item The current application password item.
  66       */
  67  	public function column_created( $item ) {
  68          if ( empty( $item['created'] ) ) {
  69              echo '&mdash;';
  70          } else {
  71              echo date_i18n( __( 'F j, Y' ), $item['created'] );
  72          }
  73      }
  74  
  75      /**
  76       * Handles the last used column output.
  77       *
  78       * @since 5.6.0
  79       *
  80       * @param array $item The current application password item.
  81       */
  82  	public function column_last_used( $item ) {
  83          if ( empty( $item['last_used'] ) ) {
  84              echo '&mdash;';
  85          } else {
  86              echo date_i18n( __( 'F j, Y' ), $item['last_used'] );
  87          }
  88      }
  89  
  90      /**
  91       * Handles the last ip column output.
  92       *
  93       * @since 5.6.0
  94       *
  95       * @param array $item The current application password item.
  96       */
  97  	public function column_last_ip( $item ) {
  98          if ( empty( $item['last_ip'] ) ) {
  99              echo '&mdash;';
 100          } else {
 101              echo $item['last_ip'];
 102          }
 103      }
 104  
 105      /**
 106       * Handles the revoke column output.
 107       *
 108       * @since 5.6.0
 109       *
 110       * @param array $item The current application password item.
 111       */
 112  	public function column_revoke( $item ) {
 113          $name = 'revoke-application-password-' . $item['uuid'];
 114          printf(
 115              '<button type="button" name="%1$s" id="%1$s" class="button delete" aria-label="%2$s">%3$s</button>',
 116              esc_attr( $name ),
 117              /* translators: %s: the application password's given name. */
 118              esc_attr( sprintf( __( 'Revoke "%s"' ), $item['name'] ) ),
 119              __( 'Revoke' )
 120          );
 121      }
 122  
 123      /**
 124       * Generates content for a single row of the table
 125       *
 126       * @since 5.6.0
 127       *
 128       * @param array  $item        The current item.
 129       * @param string $column_name The current column name.
 130       */
 131  	protected function column_default( $item, $column_name ) {
 132          /**
 133           * Fires for each custom column in the Application Passwords list table.
 134           *
 135           * Custom columns are registered using the {@see 'manage_application-passwords-user_columns'} filter.
 136           *
 137           * @since 5.6.0
 138           *
 139           * @param string $column_name Name of the custom column.
 140           * @param array  $item        The application password item.
 141           */
 142          do_action( "manage_{$this->screen->id}_custom_column", $column_name, $item );
 143      }
 144  
 145      /**
 146       * Generates custom table navigation to prevent conflicting nonces.
 147       *
 148       * @since 5.6.0
 149       *
 150       * @param string $which The location of the bulk actions: 'top' or 'bottom'.
 151       */
 152  	protected function display_tablenav( $which ) {
 153          ?>
 154          <div class="tablenav <?php echo esc_attr( $which ); ?>">
 155              <?php if ( 'bottom' === $which ) : ?>
 156                  <div class="alignright">
 157                      <button type="button" name="revoke-all-application-passwords" id="revoke-all-application-passwords" class="button delete"><?php _e( 'Revoke all application passwords' ); ?></button>
 158                  </div>
 159              <?php endif; ?>
 160              <div class="alignleft actions bulkactions">
 161                  <?php $this->bulk_actions( $which ); ?>
 162              </div>
 163              <?php
 164              $this->extra_tablenav( $which );
 165              $this->pagination( $which );
 166              ?>
 167              <br class="clear" />
 168          </div>
 169          <?php
 170      }
 171  
 172      /**
 173       * Generates content for a single row of the table.
 174       *
 175       * @since 5.6.0
 176       *
 177       * @param array $item The current item.
 178       */
 179  	public function single_row( $item ) {
 180          echo '<tr data-uuid="' . esc_attr( $item['uuid'] ) . '">';
 181          $this->single_row_columns( $item );
 182          echo '</tr>';
 183      }
 184  
 185      /**
 186       * Gets the name of the default primary column.
 187       *
 188       * @since 5.6.0
 189       *
 190       * @return string Name of the default primary column, in this case, 'name'.
 191       */
 192  	protected function get_default_primary_column_name() {
 193          return 'name';
 194      }
 195  
 196      /**
 197       * Prints the JavaScript template for the new row item.
 198       *
 199       * @since 5.6.0
 200       */
 201  	public function print_js_template_row() {
 202          list( $columns, $hidden, , $primary ) = $this->get_column_info();
 203  
 204          echo '<tr data-uuid="{{ data.uuid }}">';
 205  
 206          foreach ( $columns as $column_name => $display_name ) {
 207              $is_primary = $primary === $column_name;
 208              $classes    = "{$column_name} column-{$column_name}";
 209  
 210              if ( $is_primary ) {
 211                  $classes .= ' has-row-actions column-primary';
 212              }
 213  
 214              if ( in_array( $column_name, $hidden, true ) ) {
 215                  $classes .= ' hidden';
 216              }
 217  
 218              printf( '<td class="%s" data-colname="%s">', esc_attr( $classes ), esc_attr( wp_strip_all_tags( $display_name ) ) );
 219  
 220              switch ( $column_name ) {
 221                  case 'name':
 222                      echo '{{ data.name }}';
 223                      break;
 224                  case 'created':
 225                      // JSON encoding automatically doubles backslashes to ensure they don't get lost when printing the inline JS.
 226                      echo '<# print( wp.date.dateI18n( ' . wp_json_encode( __( 'F j, Y' ) ) . ', data.created ) ) #>';
 227                      break;
 228                  case 'last_used':
 229                      echo '<# print( data.last_used !== null ? wp.date.dateI18n( ' . wp_json_encode( __( 'F j, Y' ) ) . ", data.last_used ) : '—' ) #>";
 230                      break;
 231                  case 'last_ip':
 232                      echo "{{ data.last_ip || '—' }}";
 233                      break;
 234                  case 'revoke':
 235                      printf(
 236                          '<button type="button" class="button delete" aria-label="%1$s">%2$s</button>',
 237                          /* translators: %s: the application password's given name. */
 238                          esc_attr( sprintf( __( 'Revoke "%s"' ), '{{ data.name }}' ) ),
 239                          esc_html__( 'Revoke' )
 240                      );
 241                      break;
 242                  default:
 243                      /**
 244                       * Fires in the JavaScript row template for each custom column in the Application Passwords list table.
 245                       *
 246                       * Custom columns are registered using the {@see 'manage_application-passwords-user_columns'} filter.
 247                       *
 248                       * @since 5.6.0
 249                       *
 250                       * @param string $column_name Name of the custom column.
 251                       */
 252                      do_action( "manage_{$this->screen->id}_custom_column_js_template", $column_name );
 253                      break;
 254              }
 255  
 256              if ( $is_primary ) {
 257                  echo '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>';
 258              }
 259  
 260              echo '</td>';
 261          }
 262  
 263          echo '</tr>';
 264      }
 265  }


Generated: Thu Apr 25 01:00:03 2024 Cross-referenced by PHPXref 0.7.1