1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
<?php
namespace WPGraphQL\Type\Plugin\Connection;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQLRelay\Relay;
use WPGraphQL\AppContext;
class PluginConnectionResolver {
public static function resolve( $source, array $args, AppContext $context, ResolveInfo $info ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
$plugins = apply_filters( 'all_plugins', get_plugins() );
$plugins_array = [];
if ( ! empty( $plugins ) && is_array( $plugins ) ) {
foreach ( $plugins as $plugin ) {
$plugins_array[] = $plugin;
}
}
$connection = Relay::connectionFromArray( $plugins_array, $args );
$nodes = [];
if ( ! empty( $connection['edges'] ) && is_array( $connection['edges'] ) ) {
foreach ( $connection['edges'] as $edge ) {
$nodes[] = ! empty( $edge['node'] ) ? $edge['node'] : null;
}
}
$connection['nodes'] = ! empty( $nodes ) ? $nodes : null;
return ! empty( $plugins_array ) ? $connection : null;
}
}