1. Ruby / Говнокод #7645

    −104

    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
    def entities(model, params = {})
            @entities                 ||= {}
            @entities[model]    ||= []
    
            if @entities[model].blank? or parameters_changed?(model, params)
              @entities[model]  = []
              include           = params[:include]  || nil
              group             = params[:group]    || nil
              order             = params[:order]    || nil
              page              = params[:page]     || nil
              entity_ids        = []
              model_role        = nil
              model_class       = model.to_s.classify.constantize
    
              if self.has_role_for?(model_class)
                self.roles_for(model_class).uniq.each do |role|
                  if role.authorizable_id.blank?
                    raise "Authorization problem! Found more than one #{model_class} model permission!" unless model_role.blank?
                    model_role = role.name
                    next
                  end
    
                  if !role.authorizable_id.blank? && MerchantRole::MERCHANT_ROLES.include?(role.name)
                    entity_ids << role.authorizable.id
                  end
                end
    
                if entity_ids.blank? and MerchantRole::MERCHANT_ROLES.include?(model_role)
                  #WARNING! RECURSION! EVIL!
                  if MerchantRole.has_entity_parent?(model)
                    parent_model    = MerchantRole.entity_parent(model)
                    parent_entities = self.entities(parent_model)
                    unless parent_entities.blank?
                      _params = {
                        :conditions => conditions_and_parameters(params, nil, ["`#{model.to_s}`.`#{parent_model.to_s.singularize}_id` IN (?)", parent_entities.map(&:id)]),
                        :include => include,
                        :order => order,
                        :group => group
                      }
                      _params.merge!(:page => page) if params.keys.include?(:page)
                      if block_given?
                        (self.is_reseller? ? self.reseller.send(model) : model_class).each(_params) do |o|
                          yield o
                        end
                      else
                        @entities[model] = (self.is_reseller? ? self.reseller.send(model) : model_class).send(params.keys.include?(:page) ? :paginate : :find, :all, _params)
                      end
                    end
                  else
                    _params = {
                      :conditions => conditions_and_parameters(params, nil),
                      :include => include,
                      :order => order,
                      :group => group
                    }
                    _params.merge!(:page => page) if params.keys.include?(:page)
       
                    if block_given?    #Find only merchants associated with the reseller or all merchants if we are no reseller.
                      (self.is_reseller? ? self.reseller.send(model) : model_class).each(_params) do |o|
                        yield o
                      end
                    else
                      @entities[model] = (self.is_reseller? ? self.reseller.send(model) : model_class).send(params.keys.include?(:page) ? :paginate : :find, :all, _params)
                    end
                  end
                else
                  _params = { :conditions => conditions_and_parameters(params, nil, ["`#{model.to_s}`.`id` IN (?)", entity_ids]),
                                       :include => include,
                                       :order => order,
                                       :group => group }
                   _params.merge!(:page => page) if params.keys.include?(:page)
                   if block_given?
                     model_class.each(_params) do |o|
                       yield o
                     end
                   else
                     @entities[model] = model_class.send(params.keys.include?(:page) ? :paginate : :find, :all, _params)
                   end
                 end
               end
            end
         entities[@model]
       end

    This method does the following (you guessed it, right?):

    #Fetch entities for which we have a read permission.
    #This is now it should work:
    #1. : If we don't have any role on the model, we won't get anything.
    #2a.: Check roles we have for whole model. If no role for whole model we can only fetch instances we have assigned.
    #2b.: Check all instances we have a role for and store them.
    #3a.: We have roles for instances -> Goto(#7)
    #3b.: We have no instance roles but have a role for the whole model.
    #4. : Check recusively if we have roles fro a parent model (channels -> merchants).
    #5a.: If we have a parent role and got parent entities returned we only fetch instances belonging to the parent entities.
    #6a.: If we have a parent role and got no entities back, then we won't get anything since we are not supposed to.
    #7. : Get all instances based on our reseller or globally for the system.

    emilpetkov, 25 Августа 2011

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

    +174

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if ($_SESSION['free'] <= 0) {
         if ($_SESSION['free'] > 0) {
              $_SESSION['free'] --;
         }
    }

    Нашел в один из онлине казино.

    webenter, 25 Августа 2011

    Комментарии (17)
  3. Java / Говнокод #7643

    +76

    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 (s.contains("-"))
                    {
                        String[] sa = s.split("-", 2);
                        for (Long i = Long.parseLong(sa[0].trim()); i<=Long.parseLong(sa[1].trim()); i++)
                        {
                            departmentsQueue.add(i);
                        }
                    }
                    else
                    {
                        Long id = Long.parseLong(s.trim());
                        departmentsQueue.add(id);
                    }

    Отличный цикл! Кстати, я бы тут ещё и s.contains() убрал

    konsoletyper, 25 Августа 2011

    Комментарии (21)
  4. C++ / Говнокод #7642

    +167

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    char *sLoop = new char[4];
    _itoa(i, sLoop, 10);
    string strField = fp1 + sLoop + fp2;
    char *str = new char[255];
    for (int i=0; i<=sizeof(strField); i++)
        str[i] = strField[i];
    _bstr_t impFieldName(str);
    // думаю, очевдно, что delete нигде не было. ;)

    Говногость, 25 Августа 2011

    Комментарии (13)
  5. C++ / Говнокод #7641

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    class GameDevTroll:public Troll{};
    
    GameDevTroll TarasB;
    TarasB.throwIn( Url("Какие проблемы в данных отрывках кода? (5 стр)") );

    http://www.gamedev.ru/flame/forum/?id=150336&page=5#m65

    TarasB:
    >Крестоламеры такие крестоламеры.

    CPPGovno, 24 Августа 2011

    Комментарии (17)
  6. Python / Говнокод #7640

    −97

    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
    i = 0
    t = 12
    r = 0
    g = 0
    while r!=1:
    	i = i + 1
    	if t%i==0:
    		g = g + 1
    	if i==5000:
    		print t, ' - ',g
    		i, g = 0, 0
    		t = t + 1
    	if t==203:
    		r = 1

    Нахождение дилителей.

    Вот так-вот, человек видимо на любит юзать цикл for=)

    KATAJIU3ATOP, 24 Августа 2011

    Комментарии (4)
  7. Java / Говнокод #7639

    +77

    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
    @SuppressWarnings("unchecked")
    public void addImage(String key, Bitmap bmp){
    		
    	if(memCache.size() >= MAX_CACHE_SIZE){
    			
    		Object[] array = (Entry[]) cacheUsage.entrySet().toArray();
    			
    		Arrays.sort(array, new Comparator<Object>(){
    				
    			public int compare(Object object1, Object object2) {
    				return (Integer)(((Map.Entry<String, Integer>)object1).getValue()) - 
    						(Integer)(((Map.Entry<String, Integer>)object2).getValue());
    			}
    		});
    			
    		String keyForRemove = ((Map.Entry<String, Integer>)array[0]).getKey();
    		memCache.remove(keyForRemove);
    		cacheUsage.remove(keyForRemove);
    	}
    	
    }

    до чего довело желание всё оптимизацировать

    KoirN, 24 Августа 2011

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

    +148

    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
    void init()
    {
        letters.push_back("q");
        letters.push_back("w");
        letters.push_back("e");
        letters.push_back("r");
        letters.push_back("t");
        letters.push_back("y");
        letters.push_back("u");
        letters.push_back("i");
        letters.push_back("o");
        letters.push_back("p");
        letters.push_back("a");
        letters.push_back("s");
        letters.push_back("d");
        letters.push_back("f");
        letters.push_back("g");
        letters.push_back("h");
        letters.push_back("j");
        letters.push_back("k");
        letters.push_back("l");
        letters.push_back("z");
        letters.push_back("x");
        letters.push_back("c");
        letters.push_back("v");
        letters.push_back("b");
        letters.push_back("n");
        letters.push_back("m");
        letters.push_back("0");
        letters.push_back("1");
        letters.push_back("2");
        letters.push_back("3");
        letters.push_back("4");
        letters.push_back("5");
        letters.push_back("6");
        letters.push_back("7");
        letters.push_back("8");
        letters.push_back("9");
    }

    пусть кому-то станет стыдно!

    Lure Of Chaos, 24 Августа 2011

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

    +138

    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
    <Свойство>
    	<Ид>74</Ид>
    	<Наименование>Цвет</Наименование>
    	<Множественное>false</Множественное>
    	<БитриксСортировка>502</БитриксСортировка>
    	<БитриксКод>COLOR</БитриксКод>
    	<БитриксЗначениеПоУмолчанию></БитриксЗначениеПоУмолчанию>
    	<БитриксТипСвойства>S</БитриксТипСвойства>
    	<БитриксСтрок>1</БитриксСтрок>
    	<БитриксКолонок>30</БитриксКолонок>
    	<БитриксТипСписка>L</БитриксТипСписка>
    	<БитриксТипыФайлов></БитриксТипыФайлов>
    	<БитриксКоличествоПолей>5</БитриксКоличествоПолей>
    	<БитриксСвязанныйИнфоблок></БитриксСвязанныйИнфоблок>
    	<БитриксОписаниеРазрешено>false</БитриксОписаниеРазрешено>
    	<БитриксПоискРазрешен>false</БитриксПоискРазрешен>
    	<БитриксФильтрРазрешен>false</БитриксФильтрРазрешен>
    	<БитриксРасширениеТипа></БитриксРасширениеТипа>
    	<БитриксОбязательное>false</БитриксОбязательное>
    </Свойство>

    ...
    БитриксБотинки
    БитриксРеактивныйРанец

    Выгрузка из Битрикса, которую людям, по идее, читать не обязательно.

    ling, 24 Августа 2011

    Комментарии (15)
  10. SQL / Говнокод #7636

    −114

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    SELECT 
    	h.id, 
    	IF(h.link ='',h.action,CONCAT('<a href=\'',h.link,'\'>',h.action,'</a>')) action,
    	DATE_FORMAT(h.time,'%d.%m.%Y %H:%i') time,
    	u.name user_name
    FROM	
    	history h LEFT JOIN users u ON h.user = u.id ORDER BY h.time DESC

    vkontakte, 24 Августа 2011

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