public function buildSPILocationCreateStruct($locationCreateStruct, APILocation $parentLocation, $mainLocation, $contentId, $contentVersionNo)
{
if ($locationCreateStruct->priority !== null && !is_int($locationCreateStruct->priority)) {
throw new InvalidArgumentValue('priority', $locationCreateStruct->priority, 'LocationCreateStruct');
}
if (!is_bool($locationCreateStruct->hidden)) {
throw new InvalidArgumentValue('hidden', $locationCreateStruct->hidden, 'LocationCreateStruct');
}
if ($locationCreateStruct->remoteId !== null && (!is_string($locationCreateStruct->remoteId) || empty($locationCreateStruct->remoteId))) {
throw new InvalidArgumentValue('remoteId', $locationCreateStruct->remoteId, 'LocationCreateStruct');
}
if ($locationCreateStruct->sortField !== null && !$this->isValidLocationSortField($locationCreateStruct->sortField)) {
throw new InvalidArgumentValue('sortField', $locationCreateStruct->sortField, 'LocationCreateStruct');
}
if ($locationCreateStruct->sortOrder !== null && !$this->isValidLocationSortOrder($locationCreateStruct->sortOrder)) {
throw new InvalidArgumentValue('sortOrder', $locationCreateStruct->sortOrder, 'LocationCreateStruct');
}
$remoteId = $locationCreateStruct->remoteId;
if (null === $remoteId) {
$remoteId = $this->getUniqueHash($locationCreateStruct);
} else {
try {
$this->locationHandler->loadByRemoteId($remoteId);
throw new InvalidArgumentException('$locationCreateStructs', "Another Location with remoteId '{$remoteId}' exists");
} catch (NotFoundException $e) {
// Do nothing
}
}
return new SPILocationCreateStruct(array('priority' => $locationCreateStruct->priority, 'hidden' => $locationCreateStruct->hidden, 'invisible' => $locationCreateStruct->hidden === true || $parentLocation->invisible, 'remoteId' => $remoteId, 'contentId' => $contentId, 'contentVersion' => $contentVersionNo, 'pathIdentificationString' => null, 'mainLocationId' => $mainLocation, 'sortField' => $locationCreateStruct->sortField !== null ? $locationCreateStruct->sortField : Location::SORT_FIELD_NAME, 'sortOrder' => $locationCreateStruct->sortOrder !== null ? $locationCreateStruct->sortOrder : Location::SORT_ORDER_ASC, 'parentId' => $locationCreateStruct->parentLocationId));
}