Module: BitrixOnRails::IblockElementPropS::InstanceMethods

Defined in:
lib/bitrix_on_rails/iblock_element_prop_s.rb

Instance Method Summary collapse

Instance Method Details

#m_prop_classObject



91
92
93
# File 'lib/bitrix_on_rails/iblock_element_prop_s.rb', line 91

def m_prop_class
  self.class.m_prop_class
end

#serialize(value, type, user_type = nil) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/bitrix_on_rails/iblock_element_prop_s.rb', line 124

def serialize(value, type, user_type = nil)
  case type
  when 'S'
    if user_type == 'HTML'
      ::PHP.serialize_encoded({'TEXT' => value, 'TYPE' => 'html'})
    elsif user_type == 'DateTime'
      value.strftime('%Y-%m-%d %H:%M:%S')
    else
      # Это делается потому, что пользователь может хранить в строках не только
      # строковые значения.
      value.to_s
    end
  else
    value
  end
end

#unserialize(value, type, user_type = nil) ⇒ Object

Возможные значения для типов свойств:

  • S - строка

  • N - число

  • F - файл

  • L - список

  • E - привязка к элементам

  • G - привязка к группам.



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/bitrix_on_rails/iblock_element_prop_s.rb', line 102

def unserialize(value, type, user_type = nil)
  return nil unless value

  case type
    when 'N'
      value.is_a?(BigDecimal) ? value.to_i : value
    when 'S'
      if value.length > 5 && value[0..3] =~ /[a-z]:\d/
        v = ::PHP.unserialize_encoded(value)
        v.is_a?(Hash) && v.include?('TEXT') ? v['TEXT'] : value
      elsif user_type == 'DateTime'
        Time.parse(value).in_time_zone
      else
        value
      end
      when 'L' # id из таблицы b_iblock_property_enum
        value
    else
      value
  end
end