- 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
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
/* -== Нормальная реализация этого пиздеца состоит из трех строк кода и применима к числам любой разрядности ==- */
<span style="font-size: .9em;">(минимально - <?php echo $group['цены']['base'][0]['price_min_dney'] ?>
<?php switch ($group['цены']['base'][0]['price_min_dney']) {
case 1: case 21: echo 'день'; break;
case 2: case 3: case 4: case 22: case 23: case 24: echo 'дня'; break;
case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14:
case 15: case 16: case 17: case 18: case 19: case 20:
case 25: case 26: case 27: case 28: case 29: case 30: echo 'дней'; break;
} ?>)</span>
/* -== Здесь же, запрос. Сначала мой коммент (не выдержал, так и ушел в коммит), ниже - коммент автора и сам запрос ==- */
/**
* О аллах, какой долбоеб это писал? период, блядь, входит в акцию, если либо его начало входит, либо конец. И пиздец. Два, блядь, условия!!!!
* И нахуй тут case с join???
* Нахуй вообще этот запрос, если у тебя, блядь, в кривом, но - все же - массиве! - рядом лежат ВСЕ ЦЕНЫ с периодами, бери и вытягивай.
*/
// 1. период вошел слева акции
// 2. период больше акции
// 3. период вошел справа акции
// 4. период в центре акции
$akzia = model('db')->sql('SELECT * FROM ' . DBPREFIX . 'groups_prices as a
LEFT JOIN (SELECT price_id, case
when "' . date("Y-m-d", $dfrom) . '" < price_start and "' . date("Y-m-d", $dto) . '" >= price_start and "' . date("Y-m-d", $dto) . '" < price_finish
then datediff("' . date("Y-m-d", $dto) . '", price_start)
when "' . date("Y-m-d", $dfrom) . '" <= price_start and "' . date("Y-m-d", $dto) . '" >= price_finish
then datediff(price_finish, price_start)
when "' . date("Y-m-d", $dfrom) . '" < price_finish and "' . date("Y-m-d", $dfrom) . '" >= price_start and "' . date("Y-m-d", $dto) . '" >= price_finish
then datediff(price_finish, "' . date("Y-m-d", $dfrom) . '")
when "' . date("Y-m-d", $dfrom) . '" >= price_start and "' . date("Y-m-d", $dto) . '" < price_finish
then datediff("' . date("Y-m-d", $dto) . '", "' . date("Y-m-d", $dfrom) . '")
end as diff
from ' . DBPREFIX . '_groups_prices
where `group_id` = ' . $group['group_id'] . '
and `price_start` < "' . date("Y-m-d", $dto) . '"
and `price_finish` >= "' . date("Y-m-d", $dfrom) . '"
) as b USING (price_id)
WHERE
a.price_id = b.price_id
and a.price_for_people >= ' . $arg['order_for_people'] . '
and a.group_id = ' . $group['group_id'] . '
and a.price_start < "' . date("Y-m-d", $dto) . '"
and a.price_finish >= "' . date("Y-m-d", $dfrom) . '"
and b.diff >= a.price_min_dney
ORDER BY a.price_type
');
Если когда-нибудь, где-нибудь, во сне или наяву, тебе приспичит написать что-то подобное - убейся головой об стену.
А если не поможет - убейся снова и снова. Самостоятельно. Иначе тебя, блядь, когда-нибудь найдут и убьют нахуй насильно.
Вопрос: а какой ценник выставили бы вы, если бы вам пришлось разгребать овердохуя кода, чуть более, чем совсем, состоящего из такого дерьма?
Или здоровье дороже?