* @copyright Copyright (c) 2008 - 2015, Justin Tadlock * @link http://themehybrid.com/hybrid-core * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ /** * Singleton factory class that registers and instantiates `Hybrid_Media_Meta` classes. Use the * `hybrid_media_factory()` function to get the instance. * * @since 3.0.0 * @access public * @return void */ class Hybrid_Media_Meta_Factory { /** * Array of media meta objects created via `Hybrid_Media_Meta`. * * @since 3.0.0 * @access protected * @var array */ protected $media = array(); /** * Creates a new `Hybrid_Media_Meta` object and stores it in the `$media` array by * post ID. * * @see Hybrid_Media_Meta::__construct() * @since 3.0.0 * @access protected * @param int $post_id */ protected function create_media_meta( $post_id ) { $this->media[ $post_id ] = new Hybrid_Media_Meta( $post_id ); } /** * Gets a specific `Hybrid_Media_Meta` object by post (attachment) ID. * * @since 3.0.0 * @access public * @param int $post_id * @return object */ public function get_media_meta( $post_id ) { // If the media meta object doesn't exist, create it. if ( ! isset( $this->media[ $post_id ] ) ) $this->create_media_meta( $post_id ); return $this->media[ $post_id ]; } /** * Returns the instance of the `Hybrid_Media_Meta_Factory`. * * @since 3.0.0 * @access public * @return object */ public static function get_instance() { static $instance = null; if ( is_null( $instance ) ) $instance = new Hybrid_Media_Meta_Factory; return $instance; } }