/**
  * Handles outputting the markup for a single row of the list table.
  *
  * @param string $plugin_file The filename of the plugin being handled
  * @param array $plugin_data Data from {@link https://core.trac.wordpress.org/browser/trunk/wp-admin/includes/plugin.php#L108}) for the plugin
  */
 public function single_row($plugin_file)
 {
     $plugin = basename(dirname($plugin_file));
     $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
     $is_active = WPCOM_VIP_Plugins_UI()->is_plugin_active($plugin);
     $class = $is_active ? 'active' : 'inactive';
     if ($is_active) {
         $class .= ' active-' . $is_active;
     }
     $actions = array();
     $actions = WPCOM_VIP_Plugins_UI()->add_activate_or_deactive_action_link($actions, $plugin);
     $plugin_name = $plugin_data['Name'];
     $description = '<p>' . ($plugin_data['Description'] ? $plugin_data['Description'] : '&nbsp;') . '</p>';
     echo '<tr class="' . esc_attr($class) . '">';
     list($columns, $hidden) = $this->get_column_info();
     foreach ($columns as $column_name => $column_display_name) {
         $style = '';
         if (in_array($column_name, $hidden)) {
             $style = ' style="display:none;"';
         }
         switch ($column_name) {
             case 'name':
                 echo "<td class='plugin-title'{$style}><strong>{$plugin_name}</strong>";
                 echo $this->row_actions($actions, true);
                 echo "</td>";
                 break;
             case 'description':
                 echo "<td class='column-description desc'{$style}>\n\t\t\t\t\t\t<div class='plugin-description'>{$description}</div>\n\t\t\t\t\t\t<div class='{$class} second plugin-version-author-uri'>";
                 $plugin_meta = array();
                 $plugin_meta[] = '<a href="' . esc_url('//vip.wordpress.com/plugins/' . $plugin . '/') . '" title="' . esc_attr__('Visit our VIP Plugins Directory to learn more') . '" target="_blank">' . __('Learn More') . '</a>';
                 if (!empty($plugin_data['Author'])) {
                     $author = $plugin_data['Author'];
                     if (!empty($plugin_data['AuthorURI'])) {
                         $author = '<a href="' . $plugin_data['AuthorURI'] . '" title="' . esc_attr__('Visit author homepage') . '">' . $plugin_data['Author'] . '</a>';
                     }
                     $plugin_meta[] = sprintf(__('By %s'), $author);
                 }
                 echo implode(' | ', $plugin_meta);
                 echo '</div></td>';
                 break;
         }
     }
     echo "</tr>";
 }
    /**
     * Returns the content for a row in the list table.
     *
     * @param array  $slug Plugin slug.
     * @param string $column_name Name of the table column.
     * @return string
     */
    public function column_default($slug, $column_name)
    {
        if (!isset($slug)) {
            return;
        }
        if (!isset(WPCOM_VIP_Plugins_UI()->fpp_plugins[$slug])) {
            return;
        }
        if (WPCOM_VIP_Plugins_UI()->is_plugin_active($slug) && 'inactive' === $this->filter) {
            return;
        }
        if (!WPCOM_VIP_Plugins_UI()->is_plugin_active($slug) && 'active' === $this->filter) {
            return;
        }
        $image_src = plugins_url('assets/img/featured-plugins/' . $slug . '-2x.png', __DIR__ . '/../vip-dashboard.php');
        $lobby_url = '//vip.wordpress.com/plugins/' . $slug . '/';
        $is_active = WPCOM_VIP_Plugins_UI()->is_plugin_active($slug);
        ob_start();
        ?>
		<div class="plugin <?php 
        if ($is_active) {
            ?>
active<?php 
        }
        ?>
">
			<img src="<?php 
        echo esc_url($image_src);
        ?>
" width="48" height="48" class="fp-icon" />
			<div class="fp-content">
				<h3 class="fp-title"><?php 
        echo esc_html(WPCOM_VIP_Plugins_UI()->fpp_plugins[$slug]['name']);
        ?>
</h3>
				<p class="fp-description"><?php 
        echo esc_html(WPCOM_VIP_Plugins_UI()->fpp_plugins[$slug]['description']);
        ?>
</p>
			</div>
			<div class="interstitial">
				<div class="interstitial-inner">
					<h3 class="fp-title"><?php 
        echo esc_html(WPCOM_VIP_Plugins_UI()->fpp_plugins[$slug]['name']);
        ?>
</h3>
					<?php 
        if ($is_active) {
            if ('option' === $is_active) {
                echo '<a href="' . esc_url(WPCOM_VIP_Plugins_UI()->get_plugin_deactivation_link($slug)) . '" class="fp-button" title="' . esc_attr__('Deactivate this plugin') . '">' . esc_html__('Deactivate Plugin') . '</a>';
                echo '<span class="fp-text">' . esc_html__('Deactivating Plugin') . '</span>';
            } elseif ('manual' === $is_active) {
                echo '<span title="To deactivate this particular plugin, edit your theme\'s functions.php file" class="fp-text">' . esc_html__("Enabled via your theme's code") . '</span>';
            }
        } elseif (!$this->activation_disabled) {
            echo '<a href="' . esc_url(WPCOM_VIP_Plugins_UI()->get_plugin_activation_link($slug)) . '" class="fp-button" title="' . esc_attr__('Activate this plugin') . '" class="edit">' . esc_html__('Activate Plugin') . '</a>';
            echo '<span class="fp-text">' . esc_html__('Activating Plugin') . '</span>';
        }
        ?>
				</div>
				<div class="more-info">
					<a href="<?php 
        echo esc_url($lobby_url);
        ?>
" target="_blank" title="Learn More">
						<div class="icon"></div>
					</a>
				</div>
			</div>
		</div>
		<?php 
        return ob_get_clean();
    }
 /**
  * Filters an array of action links to add an activation or deactivation link.
  *
  * @param array $actions Existing actions.
  * @param string $plugin Plugin slug to generate the link for.
  * @return array List of actions, including the new one.
  */
 public function add_activate_or_deactive_action_link($actions, $plugin)
 {
     $is_active = WPCOM_VIP_Plugins_UI()->is_plugin_active($plugin);
     if ($is_active) {
         if ('option' == $is_active) {
             $actions['deactivate'] = '<a href="' . esc_url(WPCOM_VIP_Plugins_UI()->get_plugin_deactivation_link($plugin)) . '" title="' . esc_attr__('Deactivate this plugin') . '">' . __('Deactivate') . '</a>';
         } elseif ('manual' == $is_active) {
             $actions['deactivate-manually'] = '<span title="To deactivate this particular plugin, edit your theme\'s functions.php file">' . __("Enabled via your theme's code") . '</span>';
         }
     } elseif (!$this->activation_disabled) {
         $actions['activate'] = '<a href="' . esc_url(WPCOM_VIP_Plugins_UI()->get_plugin_activation_link($plugin)) . '" title="' . esc_attr__('Activate this plugin') . '" class="edit">' . __('Activate') . '</a>';
     }
     return $actions;
 }
<?php

require __DIR__ . '/class.wpcom-vip-plugins-ui.php';
/**
 * The main function responsible for returning the one true WPCOM_VIP_Plugins_UI instance to functions everywhere.
 *
 * Use this function like you would a global variable, except without needing to declare the global.
 * Example: <?php $WPCOM_VIP_Plugins_UI = WPCOM_VIP_Plugins_UI(); ?>
 *
 * @return WPCOM_VIP_Plugins_UI The one true WPCOM_VIP_Plugins_UI Instance
 */
function WPCOM_VIP_Plugins_UI()
{
    return WPCOM_VIP_Plugins_UI::instance();
}
// Start up the class immediately.
WPCOM_VIP_Plugins_UI();