private function createConfig($size)
{
if (!is_array($size)) {
$size = [0, 0, $size];
}
$config = new PictureConfiguration();
$attributes = [];
if (!isset($size[2]) || !is_numeric($size[2])) {
$resizeConfig = new ResizeConfiguration();
if (isset($size[0]) && $size[0]) {
$resizeConfig->setWidth($size[0]);
}
if (isset($size[1]) && $size[1]) {
$resizeConfig->setHeight($size[1]);
}
if (isset($size[2]) && $size[2]) {
$resizeConfig->setMode($size[2]);
}
$configItem = new PictureConfigurationItem();
$configItem->setResizeConfig($resizeConfig);
if ($this->defaultDensities) {
$configItem->setDensities($this->defaultDensities);
}
$config->setSize($configItem);
return [$config, $attributes];
}
/** @var ImageSizeModel $imageSizeModel */
$imageSizeModel = $this->framework->getAdapter(ImageSizeModel::class);
$imageSizes = $imageSizeModel->findByPk($size[2]);
$config->setSize($this->createConfigItem($imageSizes));
if ($imageSizes && $imageSizes->cssClass) {
$attributes['class'] = $imageSizes->cssClass;
}
/** @var ImageSizeItemModel $imageSizeItemModel */
$imageSizeItemModel = $this->framework->getAdapter(ImageSizeItemModel::class);
$imageSizeItems = $imageSizeItemModel->findVisibleByPid($size[2], ['order' => 'sorting ASC']);
if (null !== $imageSizeItems) {
$configItems = [];
foreach ($imageSizeItems as $imageSizeItem) {
$configItems[] = $this->createConfigItem($imageSizeItem);
}
$config->setSizeItems($configItems);
}
return [$config, $attributes];
}