Форум русской поддержки Joomla!® CMS
06.12.2016, 10:08:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Код, смешной до невозможности

 (Прочитано 1732 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« : 22.04.2015, 19:24:15 »

Не смог не поделиться, нашел сегодня вот такое в коммерческом расширении, думаю по коду понятно в каком )
Что должно быть в голове у человека, чтобы внутри HTML элемента, вызываемого к показу внутри PHP кода обращаться к базе и чего то там перебирать через foreach.
Мой мир никогда не будет прежним, ушел за пузырем

Код
echo '<img class="dgimg" src="'.resize($obj->imgoriginalname, $ad_maxwidth, $ad_maxheight, 0, 0, $ad_showwatermark, $obj->catid)
           .'" '.get_width_height($obj->imgoriginalname, $ad_maxwidth, $ad_maxheight, $obj->catid).' alt="'.$obj->imgtitle.'" /><br />';
           echo ($ad_showrating && $ratingpos == 1)? '<div>'.showVote ($obj->id, $obj->imgvotes, $obj->imgvotesum, true, $obj->catid).'</div>' : '';
             if ($ad_slideshow) {
             $element = substr($order, 2);
             $wheredesc  = ($dir == 'DESC')? '> ':'< ';
             $whereasc = ($dir == 'ASC')? '> ':'< ';
             $db->setQuery('SELECT p.*'
             .' FROM #__datsogallery AS p'
             .' WHERE p.id != '.$obj->id
             .' AND '.$order.$whereasc.$db->Quote($obj->$element)
             .' AND p.catid = '.$obj->catid
             .' AND p.published = 1'
             .' AND p.approved = 1'
             .' AND p.language IN ('.$db->Quote($language)
             .','.$db->Quote('*').')'
             .' GROUP BY '.$order.' '.$dir
             );
             $rows = $db->loadObjectList();
             if (count($rows)) {
               foreach ($rows as $row) {
                 echo "<a class=\"viewdetails\" style=\"visibility:hidden;\" rel=\"shadowbox[viewdetails];player=img;current_id="
                 .JRoute::_("index.php?option=com_datsogallery&view=image&amp;catid=".$row->catid."&amp;id=".$row->id.$itemid.$na)
                 ."\" href=\"".JURI::root()."index.php?option=com_datsogallery&view=sbox&catid=".$row->catid."&id=".$row->id
                 ."&format=raw\" title=\"".jsspecialchars($row->imgtitle)."\"></a>\n";
               }
             }
             $db->setQuery('SELECT p.*'
             .' FROM #__datsogallery AS p'
             .' WHERE p.id != '.$obj->id
             .' AND '.$order.$wheredesc.$db->Quote($obj->$element)
             .' AND p.catid = '.$obj->catid
             .' AND p.published = 1'
             .' AND p.approved = 1'
             .' AND p.language IN ('.$db->Quote($language)
             .','.$db->Quote('*').')'
             .' GROUP BY '.$order.' '.$dir
             );
             $rows = $db->loadObjectList();
             if (count($rows)) {
               foreach ($rows as $row) {
                 echo "<a class=\"viewdetails\" style=\"visibility:hidden;\" rel=\"shadowbox[viewdetails];player=img;current_id="
                 .JRoute::_("index.php?option=com_datsogallery&view=image&amp;catid=".$row->catid."&amp;id=".$row->id.$itemid.$na)
                 ."\" href=\"".JURI::root()."index.php?option=com_datsogallery&view=sbox&catid=".$row->catid."&id=".$row->id
                 ."&format=raw\" title=\"".jsspecialchars($row->imgtitle)."\"></a>\n";
               }
             }
Записан
 
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #1 : 22.04.2015, 19:27:51 »

префикс $ad_ в именах переменных о многом говорит...
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #2 : 22.04.2015, 19:38:50 »

а что за расширение такое?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #3 : 22.04.2015, 19:48:29 »

а что за расширение такое?
Незабвенная DatsoGallery
Код с версии 1.2.8
Записан
Arkadiy
Группа развития
*****

Репутация: +431/-0
Online Online

Пол: Мужской
Сообщений: 5315


Крепитесь, други.


« Ответ #4 : 22.04.2015, 20:45:40 »

Она же еще с таким ужасом и за деньги продавалась? Azn
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #5 : 22.04.2015, 20:52:07 »

Она же еще с таким ужасом и за деньги продавалась? Azn
не поверишь, она до сих пор продается )
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #6 : 22.04.2015, 20:57:14 »

Ну а что, работает главное, потенциальным покупателям неважно как оно написано. Бистрикс вроде вон тоже на 90% из г-кода состоит, вся логика в представлениях реализована, тем не менее продукт продается и в России немалой популярностью пользуется.
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #7 : 22.04.2015, 21:00:24 »

Ну а что, работает главное, потенциальным покупателям неважно как оно написано. Бистрикс вроде вон тоже на 90% из г-кода состоит, вся логика в представлениях реализована, тем не менее продукт продается и в России немалой популярностью пользуется.
Так то не поспоришь, оно работает.
Но при любой попытке внести незначительное изменение попадаешь в ад.
Мне вот понадобилось изменить тип ссылки из режима просмотра галереи, после найденного плюнул и отказался от заказа, там еще много чего надо было делать. Ковыряться в таком г.. просто невозможно.

Там же не так дико много кода, можно было бы за столько лет причесать и оформить. Когда сам же это и писал - переделать зная структуру работы на пару недель максимум.
Да и разговор то не про это, просто смешной кусок кода, надо бы сделать тему в флейме где выкладывать подобные "страшилки", я у себя в старых исходниках тоже похожее находил
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #8 : 22.04.2015, 21:11:12 »

Да, не помешало бы. Это хотя-бы может подтолкнуть разработчиков научится нормально писать. Я вот и на этом форуме на смешные коды натыкаюсь переодически. Вот например шедевр:
Код
$orderCol = 'a.name '.$orderDirn.', a.ordering'
     ||  $orderCol = 'a.date '.$orderDirn.', a.ordering' . 'a.time '.$orderDirn.', a.ordering'
     ||  $orderCol = 'a.state '.$orderDirn.', a.ordering';
 

Тоже компонент какой-то будет. А потом все кричат что Joomla отстой, когда наставять себе подобных расширений.
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #9 : 22.04.2015, 21:14:38 »

Да. последний перл стоит этой коллекции ))
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #10 : 22.04.2015, 21:16:44 »

Код
$orderCol = 'a.name '.$orderDirn.', a.ordering'
     ||  $orderCol = 'a.date '.$orderDirn.', a.ordering' . 'a.time '.$orderDirn.', a.ordering'
     ||  $orderCol = 'a.state '.$orderDirn.', a.ordering';
 
Чет я не пойму что это вообще делает, "Х = бла ИЛИ Х = бла2 ИЛИ Х = бла3", понятно что это запрос в базу, но логику не улавливаю

Кстати я понял причину подобного кода у датсы - чтобы ни один сторонний прогер не смог разобраться и покупатели обращались к производителю за доработками, нормальная такая бизнес логика )
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #11 : 22.04.2015, 21:20:15 »

оно делает $orderCol = true, а то что имел  ввиду автор бог знает, видимо запрос какой то но даже и в запросе ', a.ordering' . 'a.time ' ошибка будет . Этот шедевр еще обернут был в условие в которое автор никогда не попадает, поэтому он до сих пор убежден что оно работает.
« Последнее редактирование: 22.04.2015, 21:27:43 от zomby6888 » Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #12 : 22.04.2015, 21:26:53 »

оно делает $orderCol = true
ну, вернет оно единицу вне зависимости от типа переменной (хотя сомневаюсь что там оно объявлено), смысл сего действа непонятен.
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #13 : 13.11.2015, 22:31:18 »

Попросили меня тут  одну форму подкоректировать. Залез в компонент и..
Показать текстовый блок

Это только кусок из файла в несколко тыщ строк, коих там еще навалом. Компоненет вроде как коммерческий..
 
Записан
KKAAZZOO
Практически профи
*******

Репутация: +101/-9
Offline Offline

Сообщений: 2084


« Ответ #14 : 13.11.2015, 22:43:39 »

Sobi бесплатный компонент, но создал его солидный разработчик Радек Суски, весьма авторитетный человек в Joomla сообществе
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3582


« Ответ #15 : 13.11.2015, 22:44:17 »

Шедевр!  Roll Eyes
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #16 : 13.11.2015, 22:52:20 »

Цитировать
Sobi бесплатный компонент, но создал его солидный разработчик Радек Суски, весьма авторитетный человек в Joomla сообществе

Даже не знаю что на это ответить. Код говорит сам за себя. Мне вот интересно как он угадывал в каком месте и сколько этих табуляторов "\t" поставить
Записан
vipiusss
Профи
********

Репутация: +260/-8
Offline Offline

Пол: Мужской
Сообщений: 4571


Skype: renor_


« Ответ #17 : 13.11.2015, 22:58:29 »

там DatsoGallery такая же по коду, раз столкнулся, пару суток голову ломал с выводами, модулями к ней и т.д.
может поэтому и автор кода столько ошибок сделал.
Записан
wishlight
Профи
********

Репутация: +200/-1
Offline Offline

Пол: Мужской
Сообщений: 3487


skype aqaus.com


« Ответ #18 : 13.11.2015, 23:00:11 »

Пасаны, как не стать ***кодером?
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #19 : 13.11.2015, 23:04:21 »

Цитировать
Пасаны, как не стать ***кодером?

Ну может это раздел поможет?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #20 : 13.11.2015, 23:08:40 »

Ну может это раздел поможет?
не не поможет, вон целый сайт аля баш уже много лет работает http://govnokod.ru/ а нашего полку прирастает с каждым годом )
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #21 : 13.11.2015, 23:08:52 »

Ну когда пишешь на php, язык так и подстрекает опуститься в ***кодинг.
Вот, вчера такое накодил, оцените на гкснутость.
Показать текстовый блок
Записан
vipiusss
Профи
********

Репутация: +260/-8
Offline Offline

Пол: Мужской
Сообщений: 4571


Skype: renor_


« Ответ #22 : 13.11.2015, 23:10:52 »

а куда этот ключ и столько ТРУЕ+ФАЛСЕ?
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #23 : 13.11.2015, 23:11:42 »

Воланд - у тебя тоже адовые переменные $add ))
а так то хз что у тебя там должно быть, я может быть делал через кейсы, они красивше читаются. Ну и для таких вот уровневых условий обязательно нужны комментарии, что у тебя за массив и что там за каждый элемент внутри $condition, через месяц сам не разберешься

хотя по своему маленькому опыту могу судить, что если получается вот такой быдлокод - значит надо менять саму логику приложения, бо такое не должно быть. Но - зачастую лень и оставляешь в продакшн, ведь работает а переписывать бюджета нет
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #24 : 13.11.2015, 23:18:19 »

Хм, а как там через кейсы, там 6 условий, должны учитываться одновременно, если они есть.
Записан
vipiusss
Профи
********

Репутация: +260/-8
Offline Offline

Пол: Мужской
Сообщений: 4571


Skype: renor_


« Ответ #25 : 13.11.2015, 23:18:30 »

Но - зачастую лень и оставляешь в продакшн, ведь работает а переписывать бюджета нет
вот лень=это точно, я бывает так ленюсь, что паддинги с маргинами путаю в CSS, про код вообще молчу.
и тем более я ***кодер и не умею и новичок, если сравнивать с проффесионалами в этом деле.
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #26 : 13.11.2015, 23:18:57 »

Воланд - я нашел тебе пример твоего кода http://govnokod.ru/19013
абажаю такие штуки
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #27 : 13.11.2015, 23:19:57 »


хотя по своему маленькому опыту могу судить, что если получается вот такой быдлокод - значит надо менять саму логику приложения, бо такое не должно быть. Но - зачастую лень и оставляешь в продакшн, ведь работает а переписывать бюджета нет
Там жуткий K2, еще и с доработками, его не перепишешь ))
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #28 : 13.11.2015, 23:29:37 »

Хм, а как там через кейсы, там 6 условий, должны учитываться одновременно, если они есть.

Код
switch (true) {
   case (condition):
       // do something
       break;
   case (condition):
       // do something else
       break;    
}
 
Записан
voland
Профи
********

Репутация: +487/-86
Offline Offline

Пол: Мужской
Сообщений: 8711


любит наш народ всякое гавно...


« Ответ #29 : 13.11.2015, 23:31:45 »

Только брейк мне там не нужен.
А значит, кейсы еще уменьшили бы читаемость.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet