23 private $entityObject;
30 private $createdObject;
36 private $dependentObjects;
52 public function __construct($entityObject, $dependentObjects = [], $customFields = [])
55 if (!empty($customFields)) {
57 $entityObject->getName(),
58 $entityObject->getType(),
59 array_merge($entityObject->getAllData(), $customFields),
60 $entityObject->getLinkedEntities(),
61 $this->stripCustomFieldsFromUniquenessData($entityObject->getUniquenessData(), $customFields),
62 $entityObject->getVarReferences()
65 $this->entityObject = clone $entityObject;
67 $this->storeCode =
null;
69 foreach ($dependentObjects as $dependentObject) {
70 $this->dependentObjects[] = $dependentObject->getCreatedObject();
83 if (!empty($storeCode)) {
84 $this->storeCode = $storeCode;
86 $curlHandler =
new CurlHandler(
'create', $this->entityObject, $this->storeCode);
87 $result = $curlHandler->executeRequest($this->dependentObjects);
88 $this->setCreatedObject(
91 $curlHandler->getRequestDataArray(),
92 $curlHandler->isContentTypeJson()
105 public function updateEntity($updateDataName, $updateDependentObjects = [])
107 foreach ($updateDependentObjects as $dependentObject) {
108 $this->dependentObjects[] = $dependentObject->getCreatedObject();
111 $curlHandler =
new CurlHandler(
'update', $updateEntityObject, $this->storeCode);
112 $result = $curlHandler->executeRequest(array_merge($this->dependentObjects, [$this->createdObject]));
113 $this->setCreatedObject(
116 $curlHandler->getRequestDataArray(),
117 $curlHandler->isContentTypeJson()
131 if (!empty($storeCode)) {
132 $this->storeCode = $storeCode;
134 $curlHandler =
new CurlHandler(
'get', $this->entityObject, $this->storeCode);
135 $result = $curlHandler->executeRequest($this->dependentObjects);
136 $this->setCreatedObject(
139 $curlHandler->getRequestDataArray(),
140 $curlHandler->isContentTypeJson()
152 $curlHandler =
new CurlHandler(
'delete', $this->createdObject, $this->storeCode);
153 $curlHandler->executeRequest($this->dependentObjects);
163 return $this->createdObject;
186 private function setCreatedObject(
$response,
$index, $requestDataArray, $isJson)
189 $responseData = json_decode(
$response,
true);
190 if (is_array($responseData) && (
null !==
$index)) {
191 $responseData = $responseData[
$index];
193 if (is_array($responseData)) {
194 $persistedData = $this->convertToFlatArray(array_merge(
196 $this->convertCustomAttributesArray($responseData)
199 $persistedData = $this->convertToFlatArray(array_merge($requestDataArray, [
'return' => $responseData]));
202 $persistedData = array_merge($this->convertToFlatArray($requestDataArray), [
'return' =>
$response]);
205 $this->createdObject =
new EntityDataObject(
206 $this->entityObject->getName(),
207 $this->entityObject->getType(),
221 private function convertToFlatArray($arrayIn, $rootKey =
'')
224 foreach ($arrayIn as $key =>
$value) {
226 if (!empty($rootKey)) {
227 $newRootKey = $rootKey .
'[' . $key .
']';
231 $arrayOut = array_merge($arrayOut, $this->convertToFlatArray(
$value, $newRootKey));
232 }
elseif (!empty($rootKey)) {
233 $arrayOut[$rootKey .
'[' . $key .
']'] =
$value;
265 private function convertCustomAttributesArray($arrayIn)
267 $keys = [
'custom_attributes'];
268 foreach ($keys as $key) {
269 if (!array_key_exists($key, $arrayIn)) {
272 $arrayCopy = $arrayIn[$key];
288 private function stripCustomFieldsFromUniquenessData($uniquenessData, $customFields)
290 $newUniquenessArray = $uniquenessData;
291 $intersectingKeys = array_intersect_key($uniquenessData, $customFields);
292 foreach ($intersectingKeys as $customFieldKey => $customFieldValue) {
293 unset($newUniquenessArray[$customFieldKey]);
296 return $newUniquenessArray;
createEntity($storeCode=null)
elseif(isset( $params[ 'redirect_parent']))
getCreatedDataByName($dataName)
__construct($entityObject, $dependentObjects=[], $customFields=[])
getEntity($index=null, $storeCode=null)
updateEntity($updateDataName, $updateDependentObjects=[])