WordPress.org

Make WordPress Core

Changeset 16347


Ignore:
Timestamp:
11/13/2010 04:30:20 PM (9 years ago)
Author:
scribu
Message:

Introduce WP_Plugins_List_table:single_row(). See #15318

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/class-wp-plugins-list-table.php

    r16346 r16347  
    303303
    304304    function display_rows() {
     305        global $status;
     306
     307        $screen = get_current_screen();
     308
     309        if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) )
     310            return;
     311
     312        foreach ( $this->items as $plugin_file => $plugin_data )
     313            $this->single_row( $plugin_file, $plugin_data );
     314    }
     315
     316    function single_row( $plugin_file, $plugin_data ) {
    305317        global $status, $page, $s;
    306318
     
    309321        $screen = get_current_screen();
    310322
    311         if ( is_multisite() && !$screen->is_network && in_array( $context, array( 'mustuse', 'dropins' ) ) )
    312             return;
    313 
    314         foreach ( $this->items as $plugin_file => $plugin_data ) {
    315             // preorder
    316             $actions = array(
    317                 'network_deactivate' => '', 'deactivate' => '',
    318                 'network_only' => '', 'activate' => '',
    319                 'network_activate' => '',
    320                 'edit' => '',
    321                 'delete' => '',
    322             );
    323 
    324             if ( 'mustuse' == $context ) {
     323        // preorder
     324        $actions = array(
     325            'network_deactivate' => '', 'deactivate' => '',
     326            'network_only' => '', 'activate' => '',
     327            'network_activate' => '',
     328            'edit' => '',
     329            'delete' => '',
     330        );
     331
     332        if ( 'mustuse' == $context ) {
     333            $is_active = true;
     334        } elseif ( 'dropins' == $context ) {
     335            $dropins = _get_dropins();
     336            $plugin_name = $plugin_file;
     337            if ( $plugin_file != $plugin_data['Name'] )
     338                $plugin_name .= '<br/>' . $plugin_data['Name'];
     339            if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant
    325340                $is_active = true;
    326             } elseif ( 'dropins' == $context ) {
    327                 $dropins = _get_dropins();
    328                 $plugin_name = $plugin_file;
    329                 if ( $plugin_file != $plugin_data['Name'] )
    330                     $plugin_name .= '<br/>' . $plugin_data['Name'];
    331                 if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant
    332                     $is_active = true;
    333                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
    334                 } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true
    335                     $is_active = true;
    336                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
     341                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
     342            } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true
     343                $is_active = true;
     344                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
     345            } else {
     346                $is_active = false;
     347                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="attention">' . __('Inactive:') . '</span></strong> ' . sprintf( __( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '</p>';
     348            }
     349            if ( $plugin_data['Description'] )
     350                $description .= '<p>' . $plugin_data['Description'] . '</p>';
     351        } else {
     352            $is_active_for_network = is_plugin_active_for_network($plugin_file);
     353            if ( $screen->is_network )
     354                $is_active = $is_active_for_network;
     355            else
     356                $is_active = is_plugin_active( $plugin_file );
     357
     358            if ( $is_active_for_network && !is_super_admin() && !$screen->is_network )
     359                return;
     360
     361            if ( $screen->is_network ) {
     362                if ( $is_active_for_network ) {
     363                    if ( current_user_can( 'manage_network_plugins' ) )
     364                        $actions['network_deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
    337365                } else {
    338                     $is_active = false;
    339                     $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="attention">' . __('Inactive:') . '</span></strong> ' . sprintf( __( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '</p>';
     366                    if ( current_user_can( 'manage_network_plugins' ) )
     367                        $actions['network_activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
     368                    if ( current_user_can('delete_plugins') )
     369                        $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
    340370                }
    341                 if ( $plugin_data['Description'] )
    342                     $description .= '<p>' . $plugin_data['Description'] . '</p>';
    343371            } else {
    344                 $is_active_for_network = is_plugin_active_for_network($plugin_file);
    345                 if ( $screen->is_network )
    346                     $is_active = $is_active_for_network;
    347                 else
    348                     $is_active = is_plugin_active( $plugin_file );
    349 
    350                 if ( $is_active_for_network && !is_super_admin() && !$screen->is_network )
    351                     continue;
    352 
    353                 if ( $screen->is_network ) {
    354                     if ( $is_active_for_network ) {
    355                         if ( current_user_can( 'manage_network_plugins' ) )
    356                             $actions['network_deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Network Deactivate') . '</a>';
    357                     } else {
    358                         if ( current_user_can( 'manage_network_plugins' ) )
    359                             $actions['network_activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;networkwide=1&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin for all sites in this network') . '" class="edit">' . __('Network Activate') . '</a>';
    360                         if ( current_user_can('delete_plugins') )
    361                             $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
    362                     }
     372                if ( $is_active ) {
     373                    $actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
    363374                } else {
    364                     if ( $is_active ) {
    365                         $actions['deactivate'] = '<a href="' . wp_nonce_url('plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file) . '" title="' . __('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
    366                     } else {
    367                         if ( is_network_only_plugin( $plugin_file ) && !$screen->is_network )
    368                             continue;
    369 
    370                         $actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
    371 
    372                         if ( ! is_multisite() && current_user_can('delete_plugins') )
    373                             $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
    374                     } // end if $is_active
    375                  } // end if $screen->is_network
    376 
    377                 if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
    378                     $actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
    379             } // end if $context
    380 
    381             $actions = apply_filters( 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context );
    382             $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context );
    383 
    384             $class = $is_active ? 'active' : 'inactive';
    385             $checkbox_id = md5($plugin_data['Name']) . "_checkbox";
    386             $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $plugin_data['Name'] . "</label>";
    387             if ( 'dropins' != $status ) {
    388                 $description = '<p>' . $plugin_data['Description'] . '</p>';
    389                 $plugin_name = $plugin_data['Name'];
    390             }
    391 
    392             $id = sanitize_title( $plugin_name );
    393 
    394             echo "
    395         <tr id='$id' class='$class'>
    396             <th scope='row' class='check-column'>$checkbox</th>
    397             <td class='plugin-title'>
    398                 <strong>$plugin_name</strong>
    399             ";
    400            
    401             echo $this->row_actions( $actions, true );
    402 
    403             echo "
    404             </td>
    405             <td class='column-description desc'>
    406                 <div class='plugin-description'>
    407                     $description
    408                 </div>
    409                 <div class='$class second plugin-version-author-uri'>
    410                     ";
     375                    if ( is_network_only_plugin( $plugin_file ) && !$screen->is_network )
     376                        return;
     377
     378                    $actions['activate'] = '<a href="' . wp_nonce_url('plugins.php?action=activate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'activate-plugin_' . $plugin_file) . '" title="' . __('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
     379
     380                    if ( ! is_multisite() && current_user_can('delete_plugins') )
     381                        $actions['delete'] = '<a href="' . wp_nonce_url('plugins.php?action=delete-selected&amp;checked[]=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'bulk-plugins') . '" title="' . __('Delete this plugin') . '" class="delete">' . __('Delete') . '</a>';
     382                } // end if $is_active
     383             } // end if $screen->is_network
     384
     385            if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
     386                $actions['edit'] = '<a href="plugin-editor.php?file=' . $plugin_file . '" title="' . __('Open this file in the Plugin Editor') . '" class="edit">' . __('Edit') . '</a>';
     387        } // end if $context
     388
     389        $actions = apply_filters( 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context );
     390        $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context );
     391
     392        $class = $is_active ? 'active' : 'inactive';
     393        $checkbox_id = md5($plugin_data['Name']) . "_checkbox";
     394        $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : "<input type='checkbox' name='checked[]' value='" . esc_attr( $plugin_file ) . "' id='" . $checkbox_id . "' /><label class='screen-reader-text' for='" . $checkbox_id . "' >" . __('Select') . " " . $plugin_data['Name'] . "</label>";
     395        if ( 'dropins' != $status ) {
     396            $description = '<p>' . $plugin_data['Description'] . '</p>';
     397            $plugin_name = $plugin_data['Name'];
     398        }
     399
     400        $id = sanitize_title( $plugin_name );
     401
     402
     403        echo "
     404    <tr id='$id' class='$class'>
     405        <th scope='row' class='check-column'>$checkbox</th>
     406        <td class='plugin-title'>
     407            <strong>$plugin_name</strong>
     408        ";
    411409       
    412                     $plugin_meta = array();
    413                     if ( !empty( $plugin_data['Version'] ) )
    414                         $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] );
    415                     if ( !empty( $plugin_data['Author'] ) ) {
    416                         $author = $plugin_data['Author'];
    417                         if ( !empty( $plugin_data['AuthorURI'] ) )
    418                             $author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
    419                         $plugin_meta[] = sprintf( __( 'By %s' ), $author );
    420                     }
    421                     if ( ! empty( $plugin_data['PluginURI'] ) )
    422                         $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __( 'Visit plugin site' ) . '</a>';
    423        
    424                     $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status );
    425                     echo implode( ' | ', $plugin_meta );
    426 
    427                     echo "
    428                 </div>
    429             </td>
    430         </tr>
     410        echo $this->row_actions( $actions, true );
     411
     412        echo "
     413        </td>
     414        <td class='column-description desc'>
     415            <div class='plugin-description'>
     416                $description
     417            </div>
     418            <div class='$class second plugin-version-author-uri'>
     419                ";
     420   
     421                $plugin_meta = array();
     422                if ( !empty( $plugin_data['Version'] ) )
     423                    $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] );
     424                if ( !empty( $plugin_data['Author'] ) ) {
     425                    $author = $plugin_data['Author'];
     426                    if ( !empty( $plugin_data['AuthorURI'] ) )
     427                        $author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . __( 'Visit author homepage' ) . '">' . $plugin_data['Author'] . '</a>';
     428                    $plugin_meta[] = sprintf( __( 'By %s' ), $author );
     429                }
     430                if ( ! empty( $plugin_data['PluginURI'] ) )
     431                    $plugin_meta[] = '<a href="' . $plugin_data['PluginURI'] . '" title="' . __( 'Visit plugin site' ) . '">' . __( 'Visit plugin site' ) . '</a>';
     432   
     433                $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status );
     434                echo implode( ' | ', $plugin_meta );
     435
     436                echo "
     437            </div>
     438        </td>
     439    </tr>
    431440";
    432441
    433             do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status );
    434             do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );
    435         }
     442        do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status );
     443        do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status );
    436444    }
    437445}
Note: See TracChangeset for help on using the changeset viewer.