Ejemplo n.º 1
0
    /**
     * This function construct different parameter for an article for template mustache
     * @param $articles
     * @param $additionalMappingTaxonomies
     * @param ChannelBlock $block
     * @return array
     */
    private function constructArticles($articles, $additionalMappingTaxonomies, ChannelBlock $block)
    {
        $taxonomyTranslations = $constructedArticles = array();
        foreach($articles as $article)
        {
            // add view parameter channel in url
            $article["url"] .= "/(channel)/".$block->attribute("id");

            // info for sorting articles cross applications
            $article["info_sort"] = array();

            if($article["online_date"])
            {
                $article["info_sort"]["date"] = solrTool::getTimestampFromSolr($article["online_date"]);
                $article["online_date"]       = solrTool::getDateFromSolr($article["online_date"]);
            }

            $article["info_sort"]["rating"]   = $article["rating"];
            $article["info_sort"]["views"]    = $article["views"];
            $article["info_sort"]["headline"] = $article["headline"];
            $article["info_sort"]["score"]    = $article["score"];

            $mediaCase = ImageArticleTool::MULTIMEDIA_APPLICATION_CASE;
            $hasImage = SolrSafeOperatorHelper::hasImageArticleFromSolr($article, $mediaCase);
            if( !$hasImage )
            {
                $mediaCase = ImageArticleTool::NEWS_APPLICATION_CASE;
                $hasImage = SolrSafeOperatorHelper::hasImageArticleFromSolr($article, $mediaCase);
            }

            // image information
            $article["hasDtImage"] = $hasImage;
            $article["hasMbImage"] = $hasImage;

            if ( $hasImage )
            {
                $article["dt_url"] = SolrSafeOperatorHelper::getImageArticleUrl($mediaCase, $article['object_id'], $article['language'], 'dt_full');
                $article["mb_url"] = SolrSafeOperatorHelper::getImageArticleUrl($mediaCase, $article['object_id'], $article['language'], 'm_full');
            }

            $promoTaxonomy = $this->getCustomParameter('PromoTaxonomy');

            foreach ($article['media_types'] as $type => $value)
            {
                $article["has_media_{$type}"] = true;
            }

            $article['hasPromoTaxonomy'] = false;

            // construct taxonomies fields
            foreach($additionalMappingTaxonomies as $taxonomyCategory => $solrField)
            {
                if ($taxonomyCategory == $promoTaxonomy)
                {
                    if (count($article[$taxonomyCategory]) == 1 && $article[$taxonomyCategory][0] != '')
                    {
                        $article['hasPromoTaxonomy'] = true;
                        $article['promoTaxonomy'] = FacetFilteringTool::getTaxonomyTranslationByCode($article[$taxonomyCategory][0]);
                    }
                }
                // special case for retrieve value of taxonomy publisher folder
                if($taxonomyCategory == "publisher_folder")
                {
                    $publisher = PublisherFolder::getPublisherFromPath($article["publisher_folder"][0]);
                    if($publisher)
                    {
                        $article["publisher_folder"] = $publisher->getTranslation()->attribute("name");
                    }
                    else
                    {
                        $article["publisher_folder"] = null;
                    }
                }
                else
                {
                    if(!empty($article[$taxonomyCategory]) && $article[$taxonomyCategory][0] != "")
                    {
                        if(empty($taxonomyTranslations[$taxonomyCategory]))
                        {
                            $taxonomyTranslations[$taxonomyCategory] = FacetFilteringTool::getTaxonomyTranslation($taxonomyCategory);
                        }

                        $article[$taxonomyCategory] = $taxonomyTranslations[$taxonomyCategory][$article[$taxonomyCategory][0]];
                    }
                    else
                    {
                        // if the category has not value, we remove the entry in article
                        unset($article[$taxonomyCategory]);
                    }
                }
            }

            $this->constructAdditionalInformations($article);
            // rebuild array for delete keys for mustache
            $constructedArticles[] = $article;
        }

        return $constructedArticles;
    }