- 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