1. Список говнокодов пользователя Strannik1941

    Всего: 6

  2. PHP / Говнокод #19069

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public function calculateSum($products) {
            $sum = 0.0;
            array_map(function($product) use (&$sum)
            {
                    $sum += $product->hasSale() ? $product->getPriceWithSale() : $product->getPrice();
            }, $products);
            return $sum;
    }

    Человек начитался, что функциональщина это модно, но вот про её основу, immutable states, он не слышал. В общем, человек открыл для себя ещё foreach.

    Strannik1941, 23 Ноября 2015

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

    −11

    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
    public function find_all() {
            $result = parent::find_all();
    
            if ($result->count() > 0) {
                $parents_id = queryToArray::from($result->as_array())
                    ->where(function ($prod) {
                        return $prod->sys_type == 'PARENT';
                    })
                    ->select(function($k, $v) { return $v->id; })
                    ->result();
                if (count($parents_id)) {
                    $prices = unserialize(
                        Cache::instance()->get_or_call(
                            'prices_'.implode(':', $parents_id),
                             Date::HOUR * 6,
                            function() use ($parents_id) {
                                return serialize(
                                    queryToArray::from(
                                        DB::query(
                                            Database::SELECT, 
                                            'SELECT parent.id as id, (SELECT min(price) FROM products as child WHERE child.parent_id = parent.id AND child.shop_state IN (\'publicated\', \'booked\')) as min, (SELECT max(price) FROM products as child WHERE child.parent_id = parent.id AND child.shop_state IN (\'publicated\', \'booked\')) as max FROM products as parent WHERE parent.id IN :ids')
                                        ->param(':ids', $parents_id)
                                        ->execute()
                                        ->as_array())
                                    ->select(function ($k, $v) { 
                                        return array(
                                            'key' => $v['id'], 
                                            'value' => 
                                            array(
                                                'min' => (float) $v['min'], 
                                                'max' => (float) $v['max']));
    
                                    })
                                    ->result());
                        }));
                    
                    $products = $result->as_array();
                    foreach ($products as $product) {
                        if (isset($prices[$product->id])) {
                            $this->_set_prices($product, $prices[$product->id]);
                        }
                    }
                    return new Database_Result_Local($products, Database::instance()->last_query, $products[0]);
                }
            }
    
            return $result;
        }

    Strannik1941, 12 Октября 2015

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

    +166

    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
    $response = LINQ::from($products->as_array('id'))
                        ->join($images)
                        ->on(function ($from_key, $from_value, $join_key, $join_value){
                            return $from_key === $join_key;
                        })
                        ->select(function($from_key, $from_value, $join_key, $join_value)use($searchStr){
                            $replaceStr = '<span class="badge badge-success">'.$searchStr.'</span>';
                            return array(
                               'title' => str_ireplace($searchStr, $replaceStr, $from_value->title),
                               'href' => '/product/'.$from_value->alias.'.html',
                               'thumb' => '/public/'.$join_value->thumb
                            );
                        })
                        ->result();

    Так бывает когда приверженца C# заставляют писать на PHP. Он обязательно напишет свой аналог LINQ с театром и балеринами, а потом будет ныть о том, что в похапе нет нормальных лямбд.

    Strannik1941, 08 Июня 2014

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

    +154

    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
    <?php function view_admin_article_categories_show_category(Model_Article_Category $category, $marker) { ?>
        <tr>
            <td><?=$category->id?></td>
            <td><a href="<?=Route::url('admin_articles_category_edit', array('id' => $category->id))?>"><?=$marker?><?=$category->title?></a></td>
            <td><?=$category->alias?></td>
            <td><?=$category->seo_title?></td>
            <td>
                <a href="<?=Route::url('admin_articles_category_edit', array('id' => $category->id))?>"><span class="icon-edit"></span></a>
                &nbsp;
                <a href="<?=Route::url('admin_article_remove', array('id' => $category->id))?>"><span class="icon-remove"></span></a>
            </td>
        </tr>
    <?php } ?>
    <?php
        function view_admin_article_categories_show_child_categories(array $categories, array $current = null, $marker = '')
        {
            if($current === null)
            {
                $parents = queryToArray::from($categories)
                        ->where(function($value){
                            return !is_numeric($value->parent_id);
                        })
                        ->result();
                view_admin_article_categories_show_child_categories($categories, $parents, '');        
            } else {
                foreach($current as $parent)
                {
                    view_admin_article_categories_show_category($parent, $marker);
                    $childs = queryToArray::from($categories)
                        ->where(function($value)use($parent){
                            return $value->parent_id === $parent->id;
                        })
                        ->result();
                    if($childs) {
                        view_admin_article_categories_show_child_categories($categories, $childs, $marker.'&minus; ');
                    }
                }
            }
        }?>

    Проект на Kohana. Где-то во вьюхе.

    Strannik1941, 11 Мая 2014

    Комментарии (11)
  6. Java / Говнокод #15938

    +71

    1. 1
    2. 2
    config.x = Integer.parseInt(json.get("x").toString());
    config.y = Integer.parseInt(json.get("y").toString());

    Преобразование long в int.

    Strannik1941, 07 Мая 2014

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

    +156

    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
    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
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    /////////////////////////////////// функция обработки операционной системы + поисковые системы
    function getOS($userAgent) {
    // Создадим список операционных систем в виде элементов массива
    $oses = array (
            'iPhone' => '(iPhone)',
    		'Android' => '(android)',
    		'iPad' => '(iPad)',
    		'Blackberry OS' => '(rim)',
            'Windows 3.11' => 'Win16',
            'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)',
            'Windows 98' => '(Windows 98)|(Win98)',
            'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
            'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
            'Windows 2003' => '(Windows NT 5.2)',
            'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
            'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
    		'Windows 8' => '(Windows NT 6.2)|(Windows 8)',
            'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
            'Windows ME' => 'Windows ME',
            'Open BSD'=>'OpenBSD',
            'Sun OS'=>'SunOS',
            'Linux'=>'(Linux)|(X11)',
            'Safari' => '(Safari)',
            'Macintosh'=>'(Mac_PowerPC)|(Macintosh)',
            'QNX'=>'QNX',
            'BeOS'=>'BeOS',
            'OS/2'=>'OS/2',
    		'Google' => '(Googlebot)',
    		'Yahoo! | AOL' => '(Slurp) | (Yahoo! Slurp) | (Yammybot)',
    		'MSN | Live' => '(MSNBot)',
    		'Ask' => '(Teoma)',
    		'AltaVista' => '(Scooter)',
    		'Alexa' => '(ia_archiver)',
    		'Lycos' => '(Lycos)',
    		'Яндекс' => '(Yandex)',
    		'Рамблер' => '(StackRambler)',
    		'Мэйл.ру' => '(Mail.Ru)',
    		'Aport' => '(Aport)',
            'Search Bot'=>'(nuhk)|(Openbot)|(Slurp/cat)'
    );
      
    foreach($oses as $os=>$pattern){
    if(eregi($pattern, $userAgent)) { // Пройдемся по массиву $oses для поиска соответствующей операционной системы.
    return $os;
    }
    }
    return 'Unknown'; // Хрен его знает, чего у него на десктопе стоит.
    }
    $oc = getOS($_SERVER['HTTP_USER_AGENT']);
    
    
    /////////////////////////////////// #64х64 ава
    function avatar_path($id_user){
    global $ava;
    $ava=glob($_SERVER['DOCUMENT_ROOT'].'/files/ava/'.$id_user.'*');
    if ($ava)return str_replace($_SERVER['DOCUMENT_ROOT'],'',$ava[0]);
    else
    return false;
    }
    ///////////////////////////////////
    function apicms_ava64($users) {
    $ava = avatar_path($users);
    if ($ava){
    echo '<img src="'.$ava.'" alt=""  width="64" height="64"/>';
    }else{
    #если ава не загружена то выводим эту
    echo '<img src="/files/ava/0.png" width="64" height="64">';
    }
    }
    ///////////////////////////////////
    function apicms_ava32($users) {
    $ava = avatar_path($users);
    if ($ava){
    echo '<img src="'.$ava.'" alt=""  width="32" height="32"/>';
    }else{
    #если ава не загружена то выводим эту
    echo '<img src="/files/ava/0.png" width="32" height="32">';
    }
    }
    ///////////////////////////////////
    function apicms_ava40($users) {
    $ava = avatar_path($users);
    if ($ava){
    echo '<img src="'.$ava.'" alt=""  width="40" height="40"/>';
    }else{
    #если ава не загружена то выводим эту
    echo '<img src="/files/ava/0.png" width="40" height="40">';
    }
    }
    ///////////////////////////////////
    #Вывод ошибок
    function apicms_error($var){
    if (!empty($var))echo '<div class="error"><a>'. $var .'</a></div>';
    }

    Из ядра новой "рывалюционной" cms от "известного на весь интернет" автора Евгения Медянкина Kyber. Адрес заповедника говнокода таков: http://apicms.ru

    Strannik1941, 06 Мая 2014

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