Current Path : /home/ncdcgo/public_html/wp-content/plugins/document-library-pro/src/Grid/ |
Current File : /home/ncdcgo/public_html/wp-content/plugins/document-library-pro/src/Grid/Grid_Factory.php |
<?php namespace Barn2\Plugin\Document_Library_Pro\Grid; use Barn2\Plugin\Document_Library_Pro\Posts_Table_Pro\Table_Args; /** * A factory for creating Document_Grid objects. * * @package Barn2\posts-table-pro * @author Barn2 Plugins <support@barn2.com> * @license GPL-3.0 * @copyright Barn2 Media Ltd */ class Grid_Factory { private static $grids = []; private static $current_id = 1; /** * Create new grid based on the supplied args. * * @param array $args The args to use for the table. * @return Document_Grid The document grid object. */ public static function create( $args ) { // Merge in the default args, so our table ID reflects the full list of args, including settings page. $args = wp_parse_args( $args, Table_Args::get_site_defaults() ); $id = self::generate_id( $args ); $grid = new Document_Grid( $id, $args ); self::$grids[ $id ] = $grid; return $grid; } /** * Fetch an existing grid by ID. * * @param string $id The document grid ID. * @return Document_Grid The document grid object. */ public static function fetch( $id ) { if ( empty( $id ) ) { return false; } $grid = false; if ( isset( self::$grids[ $id ] ) ) { $grid = self::$grids[ $id ]; } elseif ( $grid = Grid_Cache::get_grid( $id ) ) { self::$grids[ $id ] = $grid; } return $grid; } /** * Generate an ID for the Grid. * * @param mixed $args * @return string */ private static function generate_id( $args ) { $id = 'dlp_grid_' . substr( md5( serialize( $args ) ), 0, 16 ) . '_' . self::$current_id; // phpcs:ignore self::$current_id ++; return $id; } }