"PHP" / Говнокод #19483 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
public function getEventList($dataWhere = '', $dataOrder = '', $limit = 10, $offset = 10, $archive = false, $leftJoin = false) 

{
            global $dbh;
            $inequality = $archive ? ' < ' : ' >= ';


            $eventPopularityElement = ginst('EventPopularity');
            $eventPopularityElement->init();

            $availableTicketsCounterElement = ginst('EventAvailableTicketsCounter');
            $availableTicketsCounterElement->init();

            $events['events'] = $dbh->getAssoc("
				SELECT SQL_CALC_FOUND_ROWS
					`ce`.`event_id` AS `cid`, `ce`.`event_id`, `ce`.`poster_ext`,
					`ce`.`poster1_ext`, `cef`.`slider_ext`,
					IFNULL(`tec2`.`title`, `tec1`.`title`) AS event_title,
					`te`.`alias`, `te`.`url`,
					`ter`.`meta_name` AS rubric_meta_name,
					`ce`.`id`, `te`.`date_event`, `te`.date_event_end,
					`te`.`venue_id`, `tv`.`alias` AS `venue_alias`,
					IFNULL(`vc2`.`title`, `vc1`.`title`) AS `venue_title`,
					IFNULL(`vc2`.`address`, `vc1`.`address`) AS `address`,
					IFNULL(`cc2`.`name`, `cc1`.`name`) AS `city_name`,
					IFNULL(`cc2`.`name2`, `cc1`.`name2`) AS `name2`,
					`c`.`alias` AS `city_alias`,
					IFNULL(`country_content2`.`name`, `country_content1`.`name`) AS `country_name`,
					IFNULL(`cep`.`rating`, 0) AS `rating`,
					IFNULL(`catc`.`tickets_count`, 0) AS `tickets_count`
				FROM `c_event` AS `ce`
				LEFT JOIN `c_event_feutured` AS `cef` ON `cef`.`event_id` = `ce`.`id`
				INNER JOIN `t_event` AS `te` ON `te`.`id` = `ce`.`event_id`
				LEFT JOIN `t_event_content` AS `tec1`
					ON (`tec1`.`id`, `tec1`.`language_id`) = ROW(`te`.`id`, 1)
				LEFT JOIN `t_event_content` AS `tec2`
					ON (`tec2`.`id`, `tec2`.`language_id`) = ROW(`te`.`id`, ?)
				LEFT JOIN `t_venue` AS `tv` ON `tv`.`id` = `te`.`venue_id`
				LEFT JOIN `t_venue_content` AS `vc1` ON (`vc1`.`id`, `vc1`.`language_id`) = ROW(`tv`.`id`, 1)
				LEFT JOIN `t_venue_content` AS `vc2` ON (`vc2`.`id`, `vc2`.`language_id`) = ROW(`tv`.`id`, ?)
				LEFT JOIN `t_city` AS `c` ON `c`.`id` = `tv`.`city_id`
				LEFT JOIN `t_city_content` AS `cc1` ON (`cc1`.`id`, `cc1`.`language_id`) = ROW(`c`.`id`, 1)
				LEFT JOIN `t_city_content` AS `cc2` ON (`cc2`.`id`, `cc2`.`language_id`) = ROW(`c`.`id`, ?)
				LEFT JOIN `t_country_content` AS `country_content1` ON (`country_content1`.`id`, `country_content1`.`language_id`) = ROW(`tv`.`country_id`, 1)
				LEFT JOIN `t_country_content` AS `country_content2` ON (`country_content2`.`id`, `country_content2`.`language_id`) = ROW(`tv`.`country_id`, ?)
				LEFT JOIN `t_rubric_events` AS `tre` ON `tre`.`event_id` = `te`.`id`
				LEFT JOIN `t_event_rubric` AS `ter` ON `ter`.`id` = `tre`.`rubric_id`
				LEFT JOIN `".$eventPopularityElement->tableName."` AS `cep` ON `cep`.`c_event_id` = `ce`.`id`
				LEFT JOIN `".$availableTicketsCounterElement->tableName."` AS `catc` ON `catc`.`c_event_id` = `ce`.`id`
					{$leftJoin}
				WHERE `te`.`date_event_end` {$inequality} NOW()
					AND `te`.`active` = 1 AND `te`.`is_main` = 1
					{$dataWhere}
				GROUP BY ce.event_id
					{$dataOrder}
				LIMIT {$limit}, {$offset}
			", false, array($GLOBALS['lng']['id'], $GLOBALS['lng']['id'], $GLOBALS['lng']['id'], $GLOBALS['lng']['id']));

            $events['count'] = $dbh->getOne("SELECT FOUND_ROWS()");

            $ticketPrices = ginst('TicketType')->getMinMaxPrices(array_keys($events['events']));

            $rubrics = ginst('Rubric')->getEventsRubric(array_keys($events['events']));

            foreach ($events['events'] as $eventId => $event) {
                $events['events'][$eventId] =
                    (array)$events['events'][$eventId] +
                    (array)$rubrics[$eventId] +
                    (array)$ticketPrices[$eventId];

                if (file_exists(DOC_ROOT . 'dynamic/event/thumb_' . sprintf("%06d", $event['id']) . '_original.' . $event['poster_ext'])) {
                    $events['events'][$eventId]['thumb_name'] = '/dynamic/event/thumb_' . sprintf("%06d", $event['id']) . '_original.' . $event['poster_ext'];
                } else {
                    $events['events'][$eventId]['thumb_name'] = '/static/img/no-thumbnail.jpg';
                }
            }

            return $events;
        }

Вот что бывает, когда решаешь, что проект вполне обойдется без ОРМки.

Запостил: legacy legacy, (Updated )

Комментарии (5) RSS

  • 1. $GLOBALS['lng']['id'] ОРМ тут не поможет
    2. с ОРМ было бы тоже самое, только прожорлевей.
    Ответить
  • Думаю, настоящий говнокод мы бы увидели при попытке реализовать этот запрос в ОРМ.
    Ответить
  • $leftJoin = false

    и
    {$leftJoin}

    Опциональные параметры такие опциональные.
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8