예제 #1
0
    /**
     * @param ContentListBase $app
     * @param ChannelBlockConfiguration $configuration
     */
    private function addParamsConfiguration(ContentListBase &$app, ChannelBlockConfiguration $configuration)
    {
        $applicationLocalized = CacheApplicationTool::buildLocalizedApplicationByLocalizedId($configuration->attribute("application_localized_id"));
        if(!$applicationLocalized)
        {
            return;
        }

        // Add filter q
        if($configuration->attribute("q"))
        {
            $app->getResultHandler()->searchQuery = $configuration->attribute("q");
        }

        // Add filter fq
        if($configuration->attribute("fq"))
        {
            $app->getResultHandler()->specialFilterChannel = $configuration->getSolrFq();
        }
        else {
            $useDepth = $applicationLocalized->getCustomParameter('ShowParentArticleOnly');
            if (!$useDepth)
            {
                $useDepth = $applicationLocalized->applicationObject()->getCustomParameter('ShowParentArticleOnly');
            }
            if ($useDepth) {
                $app->getResultHandler()->specialFilterChannel = 'attr_relative_depth_i: 0';
            }
        }

        // Sorting
        if($configuration->getChannelBlock()->attribute("sorting_method"))
        {
            $app->getResultHandler()->sortBy = $configuration->getChannelBlock()->attribute("sorting_method");
            if($app->getResultHandler()->sortBy == ContentListSolrQueryHandler::SORT_RANDOM)
            {
                $app->getResultHandler()->randomSortId = "channel_".$configuration->attribute("id")."_random";
            }
        }

        // Limit
        $app->getResultHandler()->limit = $this->getLimit($configuration->getChannelBlock());
    }