Генерация облака тегов на PHP

В итернете существует достаточно много рецептом как сделать облако тегов, и я не буду останавливаться на этой теме подробно. Основное, что мне не понравилось в примерах, что весь код был перемешан в одну кучу. Основа облака тегов - это формула определения размера тега. Вот для неё я и написал свою функцию (хелпер). А остальное, для вас не должно составить труда написать самостоятельно. В хелпере реализовано 2 формулы, для линейного расчета, и для логарифмического.

class TagCloudHelper
{

    public static function tagSize($count, $minCount, $maxCount, $minSize = 1, $maxSize = 10)
    {
        if ($count == 0)
        {
            return 0;
        }

        $diff = $maxCount - $minCount;

        if ($diff == 0) 
        {   
            $diff++;
        }

        $diffSize = $maxSize - $minSize;

        return round((($count - $minCount) / $diff) * $diffSize + $minSize);    
    }

    public static function logTagSize($count, $minCount, $maxCount, $minSize = 1, $maxSize = 10)
    {
        $minCount = log($minCount + 1);

        $maxCount = log($maxCount + 1);

        if ($count == 0)
        {
            return 0;
        }

        $diffSize = $maxSize - $minSize;

        $diffCount = $maxCount - $minCount;

        return round($minSize + (log(1 + $count) - $minCount) * ($diffSize / $diffCount));
    }

}
comments powered by HyperComments