public static function get_sql_parts_for_external_videos_matching_any_of_these_tags($external_video_library_id, $tag_ids, $external_video_provider_id = NULL, $ignore_video_id = NULL, $start = NULL, $duration = NULL, $options = array('count' => FALSE, 'principal_tags' => FALSE, 'use_ids_for_tags' => TRUE, 'union_query' => FALSE))
    {
        $sql = array();
        if ($options['count']) {
            $sql['select'] = VideoLibrary_DatabaseHelper::get_select_sql_for_external_videos_count(array('union_query' => $options['union_query']));
        } else {
            $sql['select'] = VideoLibrary_DatabaseHelper::get_select_sql_for_external_videos();
            $sql['select'] .= ' ,' . "\n" . 'COUNT( * ) AS tag_count' . "\n";
        }
        $sql['from'] = VideoLibrary_DatabaseHelper::get_from_sql_for_external_videos();
        $sql['from'] .= <<<SQL
,
    hpi_video_library_tags,
    hpi_video_library_tags_to_ext_vid_links
SQL;
        $external_video_library_id = mysql_real_escape_string($external_video_library_id);
        $sql['where'] = <<<SQL
WHERE
    hpi_video_library_external_video_libraries.id 
    = hpi_video_library_ext_vid_to_ext_vid_lib_links.external_video_library_id
AND
    hpi_video_library_external_videos.id 
    = hpi_video_library_ext_vid_to_ext_vid_lib_links.external_video_id

SQL;
        if (isset($external_video_provider_id)) {
            $sql['where'] .= <<<SQL
AND
    hpi_video_library_external_video_providers.id = '{$external_video_provider_id}'

SQL;
        }
        $sql['where'] .= <<<SQL
AND
    hpi_video_library_external_video_libraries.id = '{$external_video_library_id}'
AND
    hpi_video_library_external_videos.external_video_provider_id 
    = hpi_video_library_external_video_providers.id
    AND
    hpi_video_library_external_videos.id = hpi_video_library_tags_to_ext_vid_links.external_video_id
    AND
    hpi_video_library_tags.id = hpi_video_library_tags_to_ext_vid_links.tag_id
    AND
    hpi_video_library_external_videos.status = 'display'
AND
hpi_video_library_external_video_providers.status = 'display'


SQL;
        if (count($tag_ids) > 0) {
            $sql['where'] .= <<<SQL
    AND
(

SQL;
            $i = 0;
            foreach ($tag_ids as $tag_id) {
                $tag_id = mysql_real_escape_string($tag_id);
                if ($i != 0) {
                    $sql['where'] .= <<<SQL
    OR

SQL;
                }
                $i++;
                if ($options['principal_tags']) {
                    if ($options['use_ids_for_tags']) {
                        $sql['where'] .= <<<SQL
    ( hpi_video_library_tags.id = '{$tag_id}' AND hpi_video_library_tags.principal = 'yes' )

SQL;
                    } else {
                        $sql['where'] .= <<<SQL
    ( hpi_video_library_tags.tag = '{$tag_id}' AND hpi_video_library_tags.principal = 'yes' )

SQL;
                    }
                } else {
                    if ($options['use_ids_for_tags']) {
                        $sql['where'] .= <<<SQL
    ( hpi_video_library_tags.id = '{$tag_id}' )

SQL;
                    } else {
                        $sql['where'] .= <<<SQL
    ( hpi_video_library_tags.tag = '{$tag_id}' )

SQL;
                    }
                }
            }
            $sql['where'] .= <<<SQL
)

SQL;
        }
        if ($ignore_video_id > 0) {
            $ignore_video_id = mysql_real_escape_string($ignore_video_id);
            $sql['where'] .= <<<SQL
    AND
    hpi_video_library_external_videos.id <> {$ignore_video_id}

SQL;
        }
        if (!$options['count']) {
            $sql['group_by'] = <<<SQL
GROUP BY
    hpi_video_library_external_videos.id
SQL;
            $sql['limit'] = VideoLibrary_DatabaseHelper::get_limit_sql_for_external_videos($start, $duration);
        }
        return $sql;
    }