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

    −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
    if (!function_exists('printr')) {
            function printr($array) {
                    GLOBAL $USER;
                    if (!$USER->IsAdmin()) return false;
                    $args = func_get_args();
                    if (count($args) > 1) {
                            foreach ($args as $values)
                                    printr($values);
                    } else {
                            if (is_array($array) || is_object($array)) {
                                    echo "<pre>";
                                    print_r($array);
                                    echo "</pre>";
                            } else {
                                    echo $array;
                            }
                    }
                    return true;
            }
    }
    printr($arr1,$arr2, $str, "string");

    Битрикс. Собственный уникальный print_r c Машанями и Медведем. Видио о существовании xdebug адепты bitrix не догадываются.

    http://b.pages.org.ua/php_interface/2011/03/03/universalnyy-print_r-dlya-bitriksa.html

    Keeper, 05 Мая 2016

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

    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
    class BHStorage extends BHProto {
      private static $instance;
      public static function _() {
        if(isset(self::$instance)) return self::$instance;
        self::$instance = new self();
        return self::$instance;
      }
      private $db;
      private function __construct() {
        global $DB;
        $this->db = $DB;
      }

    Недосинглтон. Скажите уже кто нибудь адептам битрикса, что на дворе уже 2016 год.
    https://github.com/dbfun/bitrix-heretic/blob/master/lib/BHStorage.php

    Keeper, 05 Мая 2016

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

    −4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // установлен ли модуль?
      public static function isInstall($module) {
        $data = COption::GetOptionString('main', 'heretic/'.$module, 'N');
        return $data == 'Y';
      }

    И снова гитхаб радует битрикс шлаком. В этот раз, нас радует репозиторий с говорящим описание "Битрикс Еретик" https://github.com/dbfun/bitrix-heretic/blob/master/lib/BHProto.php
    А установлен ли модуль? Таки да. Всегда- да!

    Keeper, 05 Мая 2016

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

    +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
    if(!strpos($amount,'.')) {
        $amount = $amount . '.00';
    } else {
    	$strlength = strlen(explode('.',$amount)[1]);
    	if($strlength != 2) {
    		if($strlength == 1) {
    			$amount = $amount . '0';
    		}
    		if($strlength > 2) {
    			$amount = round($amount,2);
    		}
    	}
    }

    Получение дробного до сотых числа

    ykpon, 05 Мая 2016

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

    −1

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    <?php
    /**
     * Provides URL shortening functionality, like tinyurl.com, bit.ly, ow.ly and other popular services.
     * (c) 2011, it-in, http://it-in.ru
     * @author Sergey Kovalev <[email protected]>
     * @version 1.0
     */
    /**
    * Basic URL path, to which short code will be added.
    */
    define("BASE_SHORT_PATH", "http://it-in.ru/~");
    /**
    * ID of the infoblock which holds information about shortned URLs.
    */
    define("TINYURL_IBLOCK_ID", 11);
    Class TinyURL
    {
    	/**
    	* Converts decimal number to any base
    	* @param integer $num Your decimal integer
    	* @param integer $base Base to which you wish to convert $num (leave it 0 if you are providing $index or omit if you're using default (62))
    	* @param string $index If you wish to use the default list of digits (0-1a-zA-Z), omit this option, otherwise provide a string (ex.: "zyxwvu")
    	* @return string
    	* @link http://www.php.net/manual/ru/function.base-convert.php#52450
    	*/
    	private static function dec2any( $num, $base=62, $index=false ) {
    		if (! $base ) {
    			$base = strlen( $index );
    		} else if (! $index ) {
    			$index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,$base );
    		}
    		$out = "";
    		for ( $t = floor( log10( $num ) / log10( $base ) ); $t >= 0; $t-- ) {
    			$a = floor( $num / pow( $base, $t ) );
    			$out = $out . substr( $index, $a, 1 );
    			$num = $num - ( $a * pow( $base, $t ) );
    		}
    		return $out;
    	}
    	/**
    	* Converts number in any base to decimal
    	* @param integer $num Your custom-based number (string) (ex.: "11011101")
    	* @param integer $base Base with which $num was encoded (leave it 0 if you are providing $index or omit if you're using default (62))
    	* @param string $index If you wish to use the default list of digits (0-1a-zA-Z), omit this option, otherwise provide a string (ex.: "abcdef")
    	* @return integer
    	* @link http://www.php.net/manual/ru/function.base-convert.php#52450
    	*/
    	private static function any2dec( $num, $base=62, $index=false ) {
    		if (! $base ) {
    			$base = strlen( $index );
    		} else if (! $index ) {
    			$index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", 0, $base );
    		}
    		$out = 0;
    		$len = strlen( $num ) - 1;
    		for ( $t = 0; $t <= $len; $t++ ) {
    			$out = $out + strpos( $index, substr( $num, $t, 1 ) ) * pow( $base, $len - $t );
    		}
    		return $out;
    	}
    	/**
    	* Shortens URL.
    	* @param string $url Absolute URL to be shortened, like http://www.yandex.ru.
    	* @return string
    	*/
    	public static function shorten($url)
    	{
    		CModule::IncludeModule("iblock") || die("Couldn't load one of the required modules. Error fe51e037.");
    		// Check if there is already shortened version of the required URL.
    		$res = CIBlockElement::GetList(
    			array(),
    			array('IBLOCK_ID' => TINYURL_IBLOCK_ID, 'PREVIEW_TEXT' => $url),
    			false,
    			false,
    			array('ID')
    		);
    		if($ob = $res->GetNextElement())
    		{
    			$arFields = $ob->GetFields();
    			return BASE_SHORT_PATH . self::dec2any($arFields['ID']);
    		}
    		
    		// Shorten new URL and create a record in database.
    		$el = new CIBlockElement;
    		$ELEMENT_ID = $el->Add(array(
    			'IBLOCK_ID' => TINYURL_IBLOCK_ID,
    			'NAME' => $url,
    			'PREVIEW_TEXT' => $url,
    			'PREVIEW_TEXT_TYPE' => 'html',
    		));
    		if($ELEMENT_ID)
    		  return BASE_SHORT_PATH . self::dec2any($ELEMENT_ID);
    		else
    		  die($el->LAST_ERROR);
    	}
    	
    	/**
    	* Converts short code to full URL, e.g. 8UdA -> http://yandex.ru.
    	* @param string $short_code
    	* @return string Full URL.

    Продолжаем копаться в недрах гитхаба в поисках изумрудов от bitrix.
    Данное творение некого адепта битрикса (из it-in, http://it-in.ru) для создания tinyurl

    Keeper, 04 Мая 2016

    Комментарии (10)
  6. JavaScript / Говнокод #19925

    0

    1. 1
    var routers = new (R(views))();

    Чет по другому не придумал как в роутер view передать

    arny, 04 Мая 2016

    Комментарии (2)
  7. JavaScript / Говнокод #19924

    0

    1. 1
    2. 2
    3. 3
    //- ASAP OR DIE♪
        //   re: ASAP OR DIE♪
        //-   next time, you should die

    mcheguevara2, 04 Мая 2016

    Комментарии (1)
  8. C++ / Говнокод #19923

    −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
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    //Сериализовать структуру со статической информацией о её полях
    template<typename T, typename T0, typename ...Args> void SerializeBinary(
    	const Tuple<T0 T::*, Args T::*...>& members, const T& src, void*& dst)
    {
    	SerializeBinary(src.*members.first, dst);
    	SerializeBinary(members.next, src, dst);
    }
    
    template<typename T, typename T0> void SerializeBinary(
    	const Tuple<T0 T::*>& members, const T& src, void*& dst)
    {
    	SerializeBinary(src.*members.first, dst);
    }
    
    //Десериализовать структуру со статической информацией о её полях
    template<typename T, typename T0, typename ...Args> void DeserializeBinary(
    	const Tuple<T0 T::*, Args T::*...>& members, T& dst, const void*& src)
    {
    	DeserializeBinary(dst.*members.first, src);
    	DeserializeBinary(members.next, dst, src);
    }
    
    template<typename T, typename T0> void DeserializeBinary(
    	const Tuple<T0 T::*>& members, T& dst, const void*& src)
    {
    	DeserializeBinary(dst.*members.first, src);
    }
    
    //Размер структуры в сериализованном виде
    template<typename T, typename T0, typename ...Args> uintptr GetSerializedBinarySize(
    	const Tuple<T0 T::*, Args T::*...>& members, const T& src)
    {
    	return GetSerializedBinarySize(src.*members.first) + GetSerializedBinarySize(members.next, src);
    }
    
    template<typename T, typename T0> uintptr GetSerializedBinarySize(
    	const Tuple<T0 T::*>& members, const T& src)
    {
    	return GetSerializedBinarySize(src.*members.first);
    }

    Сделал свой сериализатор на шаблонах и кортежах с указателями на данные-члены.

    gammaker, 03 Мая 2016

    Комментарии (3)
  9. Куча / Говнокод #19922

    +5

    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
    op =: (*&_1@|.@],[)/
    do =:  >:@>@{. ; op@>@{:
    check =: *./@(>:&0)*.*./@(2&(</\))
    ((,do@{:)`]@.(check@>@{:@{:))^:_ (,: do)0&;(i. 36)
    
    
    ┌──┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │0 │0 1 2 3 4 5 6 7 8 9 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                                   │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │1 │_1 _3 _5 _7 _9 _11 _13 _15 _17 _19 _21 _23 _25 _27 _29 _31 _33 _35 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │2 │3 7 11 15 19 23 27 31 35 _32 _28 _24 _20 _16 _12 _8 _4 0 2 6 10 14 18 22 26 30 34 _33 _29 _25 _21 _17 _13 _9 _5 _1                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │3 │_7 _15 _23 _31 32 24 16 8 0 _6 _14 _22 _30 33 25 17 9 1 _5 _13 _21 _29 34 26 18 10 2 _4 _12 _20 _28 35 27 19 11 3                   │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │4 │15 31 _24 _8 6 22 _33 _17 _1 13 29 _26 _10 4 20 _35 _19 _3 11 27 _28 _12 2 18 34 _21 _5 9 25 _30 _14 0 16 32 _23 _7                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │5 │_31 8 _22 17 _13 26 _4 35 3 _27 12 _18 21 _9 30 0 _32 7 _23 16 _14 25 _5 34 2 _28 11 _19 20 _10 29 _1 _33 6 _24 15                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │6 │_8 _17 _26 _35 27 18 9 0 _7 _16 _25 _34 28 19 10 1 _6 _15 _24 _33 29 20 11 2 _5 _14 _23 _32 30 21 12 3 _4 _13 _22 _31               │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │7 │17 35 _18 0 16 34 _19 _1 15 33 _20 _2 14 32 _21 _3 13 31 _22 _4 12 30 _23 _5 11 29 _24 _6 10 28 _25 _7 9 27 _26 _8                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │8 │_35 0 _34 1 _33 2 _32 3 _31 4 _30 5 _29 6 _28 7 _27 8 _26 9 _25 10 _24 11 _23 12 _22 13 _21 14 _20 15 _19 16 _18 17                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │9 │0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _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│
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │10│1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 _34 _32 _30 _28 _26 _24 _22 _20 _18 _16 _14 _12 _10 _8 _6 _4 _2 0                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │11│_3 _7 _11 _15 _19 _23 _27 _31 _35 32 28 24 20 16 12 8 4 0 _2 _6 _10 _14 _18 _22 _26 _30 _34 33 29 25 21 17 13 9 5 1                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │12│7 15 23 31 _32 _24 _16 _8 0 6 14 22 30 _33 _25 _17 _9 _1 5 13 21 29 _34 _26 _18 _10 _2 4 12 20 28 _35 _27 _19 _11 _3                │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │13│_15 _31 24 8 _6 _22 33 17 1 _13 _29 26 10 _4 _20 35 19 3 _11 _27 28 12 _2 _18 _34 21 5 _9 _25 30 14 0 _16 _32 23 7                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │14│31 _8 22 _17 13 _26 4 _35 _3 27 _12 18 _21 9 _30 0 32 _7 23 _16 14 _25 5 _34 _2 28 _11 19 _20 10 _29 1 33 _6 24 _15                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │15│8 17 26 35 _27 _18 _9 0 7 16 25 34 _28 _19 _10 _1 6 15 24 33 _29 _20 _11 _2 5 14 23 32 _30 _21 _12 _3 4 13 22 31                    │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │16│_17 _35 18 0 _16 _34 19 1 _15 _33 20 2 _14 _32 21 3 _13 _31 22 4 _12 _30 23 5 _11 _29 24 6 _10 _28 25 7 _9 _27 26 8                 │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │17│35 0 34 _1 33 _2 32 _3 31 _4 30 _5 29 _6 28 _7 27 _8 26 _9 25 _10 24 _11 23 _12 22 _13 21 _14 20 _15 19 _16 18 _17                  │
    ├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │18│0 1 2 3 4 5 6 7 8 9 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                                   │
    └──┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

    В общем суть такова...

    Включил я музыку, взял в руку колоду карт и начал думать о жизни. Взял я верхнюю карту и перевернул ее, положил обратно, потом взял две карты, перевернул и опять положил обратно. И так добавляя по одной карте каждый раз. В итоге, когда я дошел до конца, колода оказалась разделена на 2 половину с перевернутыми и не перевернутыми картами.

    И тут я подумал - а сколько раз нужно проделать такие манипуляции что бы колода вернулась в исходное состояние? - открыл j, и...

    kegdan, 03 Мая 2016

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

    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
    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
    <snippet>
    	<content><![CDATA[
    /**
     * стандартный класс модуля
     */
    Class adeveloper_main extends CModule
    {
    	const MODULE_ID = 'adeveloper.main';
    	var \$MODULE_ID = 'adeveloper.main'; 
    	var \$MODULE_VERSION;
    	var \$MODULE_VERSION_DATE;
    	var \$MODULE_NAME;
    	var \$MODULE_DESCRIPTION;
    	var \$MODULE_CSS;
    	var \$strError = '';
    	function __construct()
    	{
    		\$arModuleVersion = array();
    		include(dirname(__FILE__)."/version.php");
    		\$this->MODULE_VERSION = \$arModuleVersion["VERSION"];
    		\$this->MODULE_VERSION_DATE = \$arModuleVersion["VERSION_DATE"];
    		\$this->MODULE_NAME = "Module Name";
    		\$this->MODULE_DESCRIPTION = "Module desc";
    		\$this->PARTNER_NAME = "Adeveloper";
    		\$this->PARTNER_URI = "http://adeveloper.ru";
    	}
    	function InstallDB(\$arParams = array())
    	{
    		//RegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
    		return true;
    	}
    	function UnInstallDB(\$arParams = array())
    	{
    		//UnRegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
    		return true;
    	}
    	function InstallEvents()
    	{
    		return true;
    	}
    	function UnInstallEvents()
    	{
    		return true;
    	}
    	function InstallFiles(\$arParams = array())
    	{
    		return true;
    	}
    	function UnInstallFiles()
    	{
    		return true;
    	}
    	function DoInstall()
    	{
    //		global \$APPLICATION;
    	
    		RegisterModule(self::MODULE_ID);
    	}
    	/**
    	 *  @todo добавить блок удаления инфоблока, пока не делаю, чтобы лишнего не удалить
    	 */
    	function DoUninstall()
    	{
    //		global \$APPLICATION;
    		UnRegisterModule(self::MODULE_ID);
    	}
    };
    ]]></content>
    	<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    	<tabTrigger>bx-module-class</tabTrigger>
    	<!-- Optional: Set a scope to limit where the snippet will trigger -->
    	<scope>source.php</scope>
    </snippet>

    Шел 2016 год, а var и globals все никак не могу покинуть адептов битрикса.

    https://github.com/adevelopers/bitrix/blob/master/BitrixSnippets/modules/bx-module-class.sublime-snippet

    Keeper, 03 Мая 2016

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