/// <summary>
        /// Creates a list of Link items for all links recommended for a certain taxon.
        /// </summary>
        /// <param name="taxon">The taxon.</param>
        /// <returns>A list of link items.</returns>
        public static List <LinkItem> GetRecommendedLinks(ITaxon taxon, bool isInRevision)
        {
            var sp = new Stopwatch();

            sp.Start();

            var          links       = new List <LinkItem>();
            var          linkManager = new LinkManager();
            LinkItem     item        = null;
            string       url         = "";
            IUserContext userContext = CoreData.UserManager.GetCurrentUser();

            //Add link to Artfakta
            url = linkManager.GetUrlToArtfakta(taxon.Id.ToString());
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToArtfaktaLabel, url);
                links.Add(item);
            }

            //Add link to Photos from Artportalen
            url = linkManager.GetUrlToMediaAP(taxon.Id.ToString());
            if (url != "")
            {
                item = new LinkItem(
                    LinkType.Url,
                    LinkQuality.ApprovedByExpert,
                    Resources.DyntaxaResource.LinkToPhotosAPLabel,
                    url);
                links.Add(item);
            }

            //Add link to Nobanis
            url = linkManager.GetUrlToNobanis(taxon.ScientificName);
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToNobanisLabel, url);
                links.Add(item);
            }

            //Add link to SKUD
            url = linkManager.GetUrlToSkud();
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToSkudLabel, url);
                links.Add(item);
            }

            //Add link to Naturforskaren taxon information
            url = linkManager.GetUrlToNaturforskaren(taxon.ScientificName);
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToNaturforskarenLabel, url);
                links.Add(item);
            }

            if (taxon.ScientificName.IsNotEmpty())
            {
                //item = LinkItem.CreateActionLink("RedirectToGBIF", "Taxon", LinkQuality.Automatic, Resources.DyntaxaResource.LinkToGbifLabel, taxon.Id.ToString());
                //links.Add(item);

                //Add link to GBIF
                // 2015-03-10 Link to GBIF broken

                /*
                 * url = linkManager.GetUrlToGBIF(taxon.ScientificName);
                 * if (url != "")
                 * {
                 *  item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToGbifLabel, url);
                 *  links.Add(item);
                 * }
                 */

                //Add link to EoL
                url = linkManager.GetUrlToEoL(taxon.ScientificName);
                if (url != "")
                {
                    item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToEoLLabel, url);
                    links.Add(item);
                }

                //Add link to Biodiversity Heritage Library.
                url = linkManager.GetUrlToBiodiversityHeritageLibrary(taxon.ScientificName);
                if (url != "")
                {
                    item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToBHLLabel, url);
                    links.Add(item);
                }
            }

            var guidNames = taxon.GetTaxonNamesBySearchCriteria(userContext, (int)TaxonNameCategoryId.Guid, null, null, null, isInRevision, false);

            foreach (var name in guidNames)
            {
                LinkItem linkItem = null;

                //Add a link to PESI Taxon information.
                url = Resources.DyntaxaSettings.Default.UrlToGetPESITaxonInformation.Replace("[GUID]", name.Name);
                if (name.IsRecommended)
                {
                    linkItem = new LinkItem(LinkType.Url, LinkQuality.ApprovedByExpert, Resources.DyntaxaResource.LinkToPesiLabel, url);
                    links.Add(linkItem);
                }
                else
                {
                    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToPesiLabel, url);
                    links.Add(linkItem);
                }
            }

            //Add a link to ITIS Taxon information.
            var itisNumberNames = taxon.GetTaxonNamesBySearchCriteria(userContext, (int)TaxonNameCategoryId.ItisNumber, null, null, true, isInRevision, false);

            foreach (var name in itisNumberNames)
            {
                LinkItem linkItem = null;
                url      = Resources.DyntaxaSettings.Default.UrlToGetITISTaxonInformation.Replace("[Id]", name.Name);
                linkItem = new LinkItem(LinkType.Url, LinkQuality.ApprovedByExpert, Resources.DyntaxaResource.LinkToItisLabel, url);
                links.Add(linkItem);
            }

            foreach (var name in guidNames)
            {
                LinkItem linkItem = null;

                ////Add a link to Algaebase Taxon information.
                //url = linkManager.GetUrlToAlgaebaseTaxonInformation(name.Name);
                //if (url.IsNotEmpty())
                //{
                //    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToAlgaebaseLabel, url);
                //    links.Add(linkItem);

                //    url = linkManager.GetUrlToNordicMicroalgaeTaxonInformation(taxon.ScientificName);
                //    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToNordicMicroalgaeLabel, url);
                //    links.Add(linkItem);
                //}

                //Add a link to World Register of Marine Species (WoRMS) Taxon information.
                url = linkManager.GetUrlToWormsTaxonInformation(name.Name);
                if (url.IsNotEmpty())
                {
                    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToWormsLabel, url);
                    links.Add(linkItem);

                    url      = linkManager.GetUrlToNordicMicroalgaeTaxonInformation(taxon.ScientificName);
                    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToNordicMicroalgaeLabel, url);
                    links.Add(linkItem);
                }

                //Add a link to Fauna Europea Taxon information.
                url = linkManager.GetUrlToFaunaEuropeaTaxonInformation(name.Name);
                if (url.IsNotEmpty())
                {
                    linkItem = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToFaunaEuropeaLabel, url);
                    links.Add(linkItem);
                }
            }

            //Add link to WIKI taxon information
            url = linkManager.GetUrlToWikipedia(taxon.ScientificName);
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToWikipediaLabel, url);
                links.Add(item);
            }

            //Add link to Google
            url = linkManager.GetUrlToGoogleSearchResults(taxon.ScientificName);
            if (url != "")
            {
                item = new LinkItem(LinkType.Url, LinkQuality.Automatic, Resources.DyntaxaResource.LinkToGoogleLabel, url);
                links.Add(item);
            }

            sp.Stop();
            Debug.WriteLine("TaxonInfo - Retrieving links: {0:N0} milliseconds", sp.ElapsedMilliseconds);
            return(links);
        }