@@ -26,6 +26,51 @@ class Flag extends Model\AbstractModel
26
26
*/
27
27
protected $ _flagCode = null ;
28
28
29
+ /**
30
+ * Serializer for encode/decode string/data.
31
+ *
32
+ * @var \Magento\Framework\Serialize\Serializer\Json
33
+ */
34
+ private $ json ;
35
+
36
+ /**
37
+ * Serializer for encode/decode string/data.
38
+ *
39
+ * @var \Magento\Framework\Serialize\Serializer\Serialize
40
+ */
41
+ private $ serialize ;
42
+
43
+ /**
44
+ * @param \Magento\Framework\Model\Context $context
45
+ * @param \Magento\Framework\Registry $registry
46
+ * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
47
+ * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
48
+ * @param array $data
49
+ * @param \Magento\Framework\Serialize\Serializer\Json $json
50
+ * @param \Magento\Framework\Serialize\Serializer\Serialize $serialize
51
+ */
52
+ public function __construct (
53
+ \Magento \Framework \Model \Context $ context ,
54
+ \Magento \Framework \Registry $ registry ,
55
+ \Magento \Framework \Model \ResourceModel \AbstractResource $ resource = null ,
56
+ \Magento \Framework \Data \Collection \AbstractDb $ resourceCollection = null ,
57
+ array $ data = [],
58
+ \Magento \Framework \Serialize \Serializer \Json $ json = null ,
59
+ \Magento \Framework \Serialize \Serializer \Serialize $ serialize = null
60
+ ) {
61
+ $ this ->json = $ json ?: \Magento \Framework \App \ObjectManager::getInstance ()
62
+ ->get (\Magento \Framework \Serialize \Serializer \Json::class);
63
+ $ this ->serialize = $ serialize ?: \Magento \Framework \App \ObjectManager::getInstance ()
64
+ ->get (\Magento \Framework \Serialize \Serializer \Serialize::class);
65
+ parent ::__construct (
66
+ $ context ,
67
+ $ registry ,
68
+ $ resource ,
69
+ $ resourceCollection ,
70
+ $ data
71
+ );
72
+ }
73
+
29
74
/**
30
75
* Init resource model
31
76
* Set flag_code if it is specified in arguments
@@ -68,9 +113,13 @@ public function beforeSave()
68
113
public function getFlagData ()
69
114
{
70
115
if ($ this ->hasFlagData ()) {
71
- return unserialize ($ this ->getData ('flag_data ' ));
72
- } else {
73
- return null ;
116
+ $ flagData = $ this ->getData ('flag_data ' );
117
+ $ data = $ this ->json ->unserialize ($ flagData );
118
+ if (JSON_ERROR_NONE == json_last_error ()) {
119
+ return $ data ;
120
+ } else {
121
+ return $ this ->serialize ->unserialize ($ flagData );
122
+ }
74
123
}
75
124
}
76
125
@@ -82,7 +131,7 @@ public function getFlagData()
82
131
*/
83
132
public function setFlagData ($ value )
84
133
{
85
- return $ this ->setData ('flag_data ' , serialize ($ value ));
134
+ return $ this ->setData ('flag_data ' , $ this -> json -> serialize ($ value ));
86
135
}
87
136
88
137
/**
0 commit comments