- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
$subqueries = array();
                                foreach ($bit_values AS $key => $bits)
                                {
                                        $timelimit = (TIMENOW - (60 * 60 * 24 * $vbulletin->options['tagcloud_usagehistory']));
                                        $query =        "
                                                SELECT tagcontent.tagid, tag.tagtext, COUNT(*) AS searchcount
                                                FROM " . TABLE_PREFIX . "tagcontent AS tagcontent
                                                INNER JOIN " . TABLE_PREFIX . "tag AS tag ON (tagcontent.tagid = tag.tagid) " .
                                                implode("\n", $bits['join']) . "
                                                WHERE tagcontent.contenttypeid IN (" . implode(",", $bit_ids[$key]) . ") AND
                                                        tagcontent.dateline > $timelimit AND " .
                                                        implode(" AND ", $bits['where']) . "
                                                GROUP BY tagcontent.tagid, tag.tagtext
                                        ";
                                        $subqueries[] = $query;
                                }
                                if (count($subqueries))
                                {
                                        $query = "
                                                SELECT data.tagid, data.tagtext, SUM(data.searchcount) AS searchcount
                                                FROM
                                                        (" . implode(" UNION ALL ", $subqueries) . ") AS data
                                                GROUP BY data.tagid, data.tagtext
                                                ORDER BY searchcount DESC
                                                LIMIT " . $vbulletin->options['tagcloud_tags'];
                                        $tags_result = $vbulletin->db->query_read_slave($query);
                                        while ($currenttag = $vbulletin->db->fetch_array($tags_result))
                                        {
                                                $tags["$currenttag[tagtext]"] = $currenttag;
                                                $totals[$currenttag['tagid']] = $currenttag['searchcount'];
                                        }
                                }
                                 
        
            Из недр форума vbulletin. Много PHP кода, но сам говнокод именно в собираемом запросе.
Ну вот кем надо быть что бы в коммерческой системе такое писать?!
        
        
Наверное даже так - чуть менее чем все успешные платные продукты написаны хреново.
Хороший пример коммерческой системы с постоянно улучшающимся внутренним кодом - CMS bitrix.
Из некоммерческих - CMS Joomla!
В последней версии 1 ветки ввели MVC вполне удачно. Код же первых версий - это тьма )
64 килобайта прекрасного, понятного и легко поддерживаемого кода.
sceleron