Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Storage.php
Go to the documentation of this file.
1 <?php
7 
11 use Magento\Framework\DB\TransactionFactory;
15 
16 class Storage
17 {
22 
27 
31  protected $valueChecker;
32 
36  protected $configFactory;
37 
41  protected $scopeConfig;
42 
46  protected $valueProcessor;
47 
56  public function __construct(
57  TransactionFactory $transactionFactory,
63  ) {
64  $this->transactionFactory = $transactionFactory;
65  $this->backendModelFactory = $backendModelFactory;
66  $this->valueChecker = $valueChecker;
67  $this->configFactory = $configFactory;
68  $this->scopeConfig = $scopeConfig;
69  $this->valueProcessor = $valueProcessor;
70  }
71 
79  public function load($scope, $scopeId)
80  {
81  $designConfig = $this->configFactory->create($scope, $scopeId);
82  $fieldsData = $designConfig->getExtensionAttributes()->getDesignConfigData();
83  foreach ($fieldsData as &$fieldData) {
84  $value = $this->valueProcessor->process(
85  $this->scopeConfig->getValue($fieldData->getPath(), $scope, $scopeId),
86  $scope,
87  $scopeId,
88  $fieldData->getFieldConfig()
89  );
90 
91  if ($value === null) {
92  $value = '';
93  }
94  $fieldData->setValue($value);
95  }
96 
97  return $designConfig;
98  }
99 
106  public function save(DesignConfigInterface $designConfig)
107  {
108  $fieldsData = $designConfig->getExtensionAttributes()->getDesignConfigData();
109  /* @var $saveTransaction \Magento\Framework\DB\Transaction */
110  $saveTransaction = $this->transactionFactory->create();
111  /* @var $deleteTransaction \Magento\Framework\DB\Transaction */
112  $deleteTransaction = $this->transactionFactory->create();
113  foreach ($fieldsData as $fieldData) {
115  $backendModel = $this->backendModelFactory->create([
116  'value' => $fieldData->getValue(),
117  'scope' => $designConfig->getScope(),
118  'scopeId' => $designConfig->getScopeId(),
119  'config' => $fieldData->getFieldConfig()
120  ]);
121 
122  if ($fieldData->getValue() !== null
123  && $this->valueChecker->isDifferentFromDefault(
124  $fieldData->getValue(),
125  $designConfig->getScope(),
126  $designConfig->getScopeId(),
127  $fieldData->getFieldConfig()
128  )
129  ) {
130  $saveTransaction->addObject($backendModel);
131  } elseif (!$backendModel->isObjectNew()) {
132  $deleteTransaction->addObject($backendModel);
133  }
134  }
135  $saveTransaction->save();
136  $deleteTransaction->delete();
137  }
138 
145  public function delete(DesignConfigInterface $designConfig)
146  {
147  $fieldsData = $designConfig->getExtensionAttributes()->getDesignConfigData();
148  /* @var $deleteTransaction \Magento\Framework\DB\Transaction */
149  $deleteTransaction = $this->transactionFactory->create();
150  foreach ($fieldsData as $fieldData) {
152  $backendModel = $this->backendModelFactory->create([
153  'value' => $fieldData->getValue(),
154  'scope' => $designConfig->getScope(),
155  'scopeId' => $designConfig->getScopeId(),
156  'config' => $fieldData->getFieldConfig()
157  ]);
158  if (!$backendModel->isObjectNew()) {
159  $deleteTransaction->addObject($backendModel);
160  }
161  }
162  $deleteTransaction->delete();
163  }
164 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
__construct(TransactionFactory $transactionFactory, BackendModelFactory $backendModelFactory, ValueChecker $valueChecker, ConfigFactory $configFactory, ScopeConfigInterface $scopeConfig, ValueProcessor $valueProcessor)
Definition: Storage.php:56
$value
Definition: gender.phtml:16