/**
 * Get Ideas matching the query args
 *
 * @package WP Idea Stream
 * @subpackage ideas/functions
 *
 * @since 2.0.0
 *
 * @param  array  $args custom args to merge with default ones
 * @uses   wp_idea_stream_ideas_per_page() to get the preferences about pagination
 * @uses   wp_idea_stream_get_idea_var() to get globalized vars
 * @uses   wp_parse_args to merge custom args with default ones
 * @uses   WP_Idea_Stream_Idea::get() to get the ideas if the main query is not used or overriden
 * @uses   wp_idea_stream_set_idea_var() to globally set a var
 * @uses   apply_filters() call 'wp_idea_stream_ideas_get_ideas' to override/edit the retrieved ideas
 * @return array        requested ideas
 */
function wp_idea_stream_ideas_get_ideas($args = array())
{
    $get_args = array();
    $ideas = array();
    $default = array('author' => 0, 'per_page' => wp_idea_stream_ideas_per_page(), 'page' => 1, 'search' => '', 'exclude' => '', 'include' => '', 'orderby' => 'date', 'order' => 'DESC', 'meta_query' => array(), 'tax_query' => array());
    if (!empty($args)) {
        $get_args = $args;
    } else {
        $main_query = wp_idea_stream_get_idea_var('main_query');
        if (!empty($main_query['query_vars'])) {
            $get_args = $main_query['query_vars'];
            unset($main_query['query_vars']);
        }
        $ideas = $main_query;
    }
    // Parse the args
    $r = wp_parse_args($get_args, $default);
    if (empty($ideas)) {
        $ideas = WP_Idea_Stream_Idea::get($r);
        // Reset will need to be done at the end of the loop
        wp_idea_stream_set_idea_var('needs_reset', true);
    }
    $ideas = array_merge($ideas, array('get_args' => $r));
    /**
     * @param  array $ideas     associative array to find ideas, total count and loop args
     * @param  array $r         merged args
     * @param  array $get_args  args before merge
     */
    return apply_filters('wp_idea_stream_ideas_get_ideas', $ideas, $r, $get_args);
}