<?php if ( ! defined( 'OT_VERSION') ) exit( 'No direct script access allowed' );
/**
 * OptionTree Post Formats API
 *
 * This class loads all the methods and helpers specific to build a the post format metaboxes.
 *
 * @package   OptionTree
 * @author    Derek Herman <derek@valendesigns.com>
 * @copyright Copyright (c) 2014, Derek Herman
 */
if ( ! class_exists( 'OT_Post_Formats' ) ) {

  class OT_Post_Formats {

    /**
     * Class Constructor
     *
     * @return    void
     *
     * @access    public
     * @since     2.3.0
     */
    public function __construct() {

      $this->setup_actions();

    }

    /**
     * Setup the default filters and actions
     *
     * @uses add_action() To add various actions
     * @uses add_filter() To add various filters
     *
     * @return  void
     *
     * @access  private
     * @since   2.3.0
     */
    private function setup_actions() {

      // Initialize the meta boxes
      add_action( 'admin_init',                             array( $this, 'meta_boxes'                   ), 2 );

      // Setup pings for the link & quote URLs
      add_filter( 'pre_ping',                               array( $this, 'pre_ping_post_links'      ), 10, 3 );

    }

    /**
     * Builds the default Meta Boxes.
     *
     * @return    void
     *
     * @access    private
     * @since     2.3.0
     */
    public function meta_boxes() {

      // Exit if called outside of WP admin
      if ( ! is_admin() )
        return false;

      $meta_boxes = array(
        ot_meta_box_post_format_gallery(),
        ot_meta_box_post_format_link(),
        ot_meta_box_post_format_quote(),
        ot_meta_box_post_format_video(),
        ot_meta_box_post_format_audio()
      );

      /**
       * Register our meta boxes using the
       * ot_register_meta_box() function.
       */
      foreach( $meta_boxes as $meta_box ) {

        ot_register_meta_box( $meta_box );

      }

    }

    /**
     * Setup pings for the link & quote URLs
     *
     * @param     array     $post_links The URLs to ping
     * @param     array     $pung Pinged URLs
     * @param     int       $post_id Post ID
     * @return    array
     *
     * @access    public
     * @since     2.3.0
     */
    public function pre_ping_post_links( $post_links, $pung, $post_id = null ) {

      $_link = get_post_meta( $post_id, '_format_link_url', true );
      if ( ! empty( $_link ) && ! in_array( $_link, $pung ) && ! in_array( $_link, $post_links ) )
        $post_links[] = $_link;

      $_quote = get_post_meta( $post_id, '_format_quote_source_url', true );
      if ( ! empty( $_quote ) && ! in_array( $_quote, $pung ) && ! in_array( $_quote, $post_links ) )
        $post_links[] = $_quote;

    }

  }

}

/**
 * Instantiate The Class
 *
 * @since 1.0
 */
if ( function_exists( 'ot_register_meta_box' ) ) {

  new OT_Post_Formats();

}

/* End of file ot-post-formats-api.php */
/* Location: ./includes/ot-post-formats-api.php */