@@ -26,6 +26,51 @@ class Flag extends Model\AbstractModel
2626 */
2727 protected $ _flagCode = null ;
2828
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+
2974 /**
3075 * Init resource model
3176 * Set flag_code if it is specified in arguments
@@ -68,9 +113,13 @@ public function beforeSave()
68113 public function getFlagData ()
69114 {
70115 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+ }
74123 }
75124 }
76125
@@ -82,7 +131,7 @@ public function getFlagData()
82131 */
83132 public function setFlagData ($ value )
84133 {
85- return $ this ->setData ('flag_data ' , serialize ($ value ));
134+ return $ this ->setData ('flag_data ' , $ this -> json -> serialize ($ value ));
86135 }
87136
88137 /**
0 commit comments