1. PHP / Говнокод #20164

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    class TM
    {
        function TM()
        {
             $this->startBuffering();
             register_shutdown_function(array($this, 'endBuffering'));
        }
     
        public function startBuffering()
        {
            ob_start();
        }
     
        public function endBuffering()
        {
            if(ob_get_level() > 1)
            {
                $data = ob_get_contents();
                ob_end_clean();
                
                $this->insertBufferedContent($data);
                
                echo $data;
            }
        }
     
        function insertBufferedContent(&$data)
        {
            if(!empty($this->buffered))
            {
                foreach($this->buffered as $contentID => $contentData)
                {
                    $search[] = ' <!--'.$contentID.'--> ';
                }
     
                $data = str_replace($search, $this->buffered, $data);
            }
        }
     
        function showBuffered($contentID)
        {
            if(ob_get_level() > 1)
            {
                echo '<!--'.$contentID.'-->';
            }
        }
        
        function setBuffered($contentID, $data)
        {
            $this->buffered[$contentID] = $data;
        }
    }
    
    $tm = new TM();

    даже комментировать не хочется

    Взято отсюда:
    http://blog.kpitv.net/article/how-to-set-title/
    Автор:
    http://govnokod.ru/user/13961

    dead_star, 09 Июня 2016

    Комментарии (3)
  2. PHP / Говнокод #20163

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    {if 1}
        {if !empty($stickers)}
            <div class="sticker-box" style="width: 152px">
                {foreach $stickers as $sticker}
                    <span><em>{$sticker.value}</em><span><img src="/i/stickers/{$sticker.name}.png" /></span></span>
                {/foreach}
            </div>
        {/if}
        <a href="javascript:;" style="{if !empty($stickers)}top:-7px;{/if}position:relative;display: block; text-align: center;"><img src="{$i->icon[0].files.icon}" alt="{$i->icon[0].fields.title|default:$i->title}" height="{if !empty($stickers)}110{else}130{/if}" /></a>
    {else}
        <a href="javascript:;"><img src="/i/b.gif" style="background: url({$i->icon[0].files.icon}) 50% 50% no-repeat" alt="{$i->icon[0].fields.title|default:$i->title}" width="130" height="130" /></a>
    {/if}

    StTv, 09 Июня 2016

    Комментарии (0)
  3. PHP / Говнокод #20159

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if($blog) {
    		$content = get_blog($db, $blog);
    		$content = $content[0];
    		$desc = $content[1];
    		$keyw = $content[2];
    	}
    	if(!$blog) {
    		$content = get_news($db, "SELECT * FROM `news` ORDER BY `id` DESC");
    		$desc = "Блог Neon Games";
    		$keyw = "Блог, Neon, Games, NeonGames, Игры, разработка игр, Разработка";
    	}
    	$content = parse_text($content);

    parse_text на уже готовом HTML

    UsernameAK, 08 Июня 2016

    Комментарии (0)
  4. PHP / Говнокод #20157

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <?
    if($login=='')
    {
       global $APPLICATION;
       $APPLICATION->ThrowException('Имя входа должно быть заполнено.'); 
       return false;
    }
    
    // Получить последнее исключение можно методом 
    $APPLICATION->GetException()
    ?>

    Bitrix. Лучшие стандарты веб-разработки и новое ядро! Создатели логики try-catch-throw наверное перевернулись бы 100500 раз в гробу увидев такую "реализацию". Пруф как "нужно делать": https://dev.1c-bitrix.ru/api_help/main/reference/cmain/throwexception.php

    zenn1989, 08 Июня 2016

    Комментарии (17)
  5. PHP / Говнокод #20154

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    <?php
    /*
    You can place here your functions and event handlers
    
    AddEventHandler("module", "EventName", "FunctionName");
    function FunctionName(params)
    {
            //code
    }
    */
    
    AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
    CModule::IncludeModule('cleantalk.antispam');
    
    function my_onBeforeResultAdd($WEB_FORM_ID, $arFields, $arrVALUES) {
     $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0');
     if ($ct_status == 1) {
      global $APPLICATION;
      $aParams = array();
      $aParams['type'] = 'comment';
      $aParams['sender_email'] = isset($arrVALUES['email']) ? $arrVALUES['email'] : '';
      $aParams['sender_nickname'] = isset($arrVALUES['nickname']) ? $arrVALUES['nickname'] : '';
      $aParams['message_title'] = isset($arrVALUES['title']) ? $arrVALUES['title'] : '';
      $aParams['message_body'] = isset($arrVALUES['message']) ? $arrVALUES['message'] : '';
      $aResult = CleantalkAntispam::CheckAllBefore($aParams, FALSE);
      if (isset($aResult) && is_array($aResult)) {
       if ($aResult['errno'] == 0) {
        if ($aResult['allow'] == 1) {
            //Not spammer - just return;
            return;
        } else {
         if (preg_match('//u', $aResult['ct_result_comment'])) {
          $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/iu','',$aResult['ct_result_comment']);
          $err_str=preg_replace('/<[^<>]*>/iu', '', $err_str);
         } else {
          $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/i','',$aResult['ct_result_comment']);
          $err_str=preg_replace('/<[^<>]*>/i', '', $err_str);
         }
         $APPLICATION->ThrowException($err_str);
         return false;
        }
       }
      }
     }
    }
    ?>

    Четкая конторка написала четкий антиспам-модуль для битрикса и показывает как его нужно использовать. Тут все в одном флаконе - от игнорирования всех стандартов PSR разом до иррациональной реализации ... Пост на хабре: https://habrahabr.ru/company/cleantalk/blog/302800/

    zenn1989, 08 Июня 2016

    Комментарии (9)
  6. PHP / Говнокод #20149

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    код в файле load.php который блокирует установку
    
    if ( ! extension_loaded( 'mysql' ) && ! file_exists( WP_CONTENT_DIR . '/db.php' ) ) {
            wp_load_translations_early();
            die( __( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' ) );
        }

    Приветы! Есть такая ситуация: на хостинг надо установить не очень новую версию вордпрсса, на хосте установлена mysqli, но эта версия вордпресса (а нужна именно эта версия) не поддерживает mysqli, поэтому я планирую работать с удаленной базой mysql. Так вот проблема в том, что при установке вордпресса ирнсталлятор проверяет какой тип базы установлен, конечно же он видит mysqli и выдает ошибку Your PHP installation appears to be missing the MySQL extension which is required by WordPress....В файле load.php пытался закомментировать код отвечающий за проверку, но сайт после этого вообще никаких признаков жизни не падает. Как можно отключить эту проверку? Спасибо)

    viromax, 07 Июня 2016

    Комментарии (13)
  7. PHP / Говнокод #20148

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public function getAllParentCategories($category_id,&$parents = array()) {
    	$parent_id = $this->db->query("SELECT parent_id FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$category_id . "'")->row['parent_id'];
    	if ($parent_id == 0)
    		return $parents;
    	else {
    		$parents[] = $parent_id;
    		return $this->getAllParentCategories($parent_id,$parents);
    	}
    }

    рекурсивная функция с sql запросом, что может быть лучше?

    php73, 07 Июня 2016

    Комментарии (14)
  8. PHP / Говнокод #20144

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (!CModule::IncludeModule("iblock")) die();//7-оборудование. 8-отрасли. 5-разработки. 6-проекты.
    $a=0;if(strpos($_SERVER['REQUEST_URI'], '/development/')!==false) $a=5;
    elseif(strpos($_SERVER['REQUEST_URI'], '/projects/')!==false) $a=6;
    elseif(strpos($_SERVER['REQUEST_URI'], '/serial-production/')!==false) $a=13;
    elseif(strpos($_SERVER['REQUEST_URI'], '/control-systems/')!==false) $a=7;
    elseif(strpos($_SERVER['REQUEST_URI'], '/industry/')!==false) $a=8;

    Классика битрикс - разработки в индусском стиле. Проект стоил 500к+ дерева, не считая поддержки.

    ajiko, 07 Июня 2016

    Комментарии (13)
  9. PHP / Говнокод #20140

    +2

    1. 1
    public function is_isset($key)

    tazzadar, 06 Июня 2016

    Комментарии (9)
  10. PHP / Говнокод #20135

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    public function selectValueType($value)
        {
            $type = null;
            if (App::helperPhone()->parseMobile($value)) {
                $type = 1; //телефон    
            }
            if (App::helperEmail()->validate($value)) {
                $type = 2; //email
            }
            return $type;
        }
    
    
    
    А потом  в десятке методов:
    
     public function getLogin($value)
        {
            $type = $this->selectValueType($value);
            switch ($type) {
                case 1:
                    $type = 'phone';
                    break;
                case 2:
                    $type = 'email';
                    break;
            }
            if ($type) {
                $value = $type == 'phone' ? App::helperPhone()->parseMobile($value) : $value;
               // ... прочий говнокод
            }
    }

    Вот такие перлы достались в наследство. Приходится проводить полный рефакторинг :((

    Panda, 06 Июня 2016

    Комментарии (0)