public function run() { $cacheKey = "ImgSearch:" . implode("_", [$this->objectId, $this->objectModelId, $this->viewFile, $this->limit, $this->offset, $this->thumbnailOnDemand ? '1' : '0', $this->thumbnailWidth, $this->thumbnailHeight]); $result = Yii::$app->cache->get($cacheKey); if ($result === false) { $images = Image::getForModel($this->objectId, $this->objectModelId); if ($this->offset > 0 || !is_null($this->limit)) { $images = array_slice($images, $this->offset, $this->limit); } $result = $this->render($this->viewFile, ['images' => $images, 'thumbnailOnDemand' => $this->thumbnailOnDemand, 'thumbnailWidth' => $this->thumbnailWidth, 'thumbnailHeight' => $this->thumbnailHeight, 'additionalParams' => $this->additionalParams]); Yii::$app->cache->set($cacheKey, $result, 86400, new \yii\caching\TagDependency(['tags' => 'Images:' . $this->objectId . ':' . $this->objectModelId])); } return $result; }
/** * Returns additional fields data by field key. * If value of field is array it will be converted to string * using multipleValuesDelimiter specified in ImportModel * @return array */ public function getAdditionalFields(array $configuration) { $result = []; if (isset($configuration['categories'], $configuration['categories']['processValuesAs']) && $configuration['categories']['enabled']) { if ($configuration['categories']['processValuesAs'] === 'id') { $result['categories'] = $this->getCategoryIds(); } else { $ids = $this->getCategoryIds(); $result['categories'] = []; foreach ($ids as $id) { $category = Category::findById($id, null, null); if ($category) { $result['categories'][] = $category->getAttribute($configuration['categories']['processValuesAs']); } unset($category); } } } if (isset($configuration['images'], $configuration['images']['processValuesAs']) && $configuration['images']['enabled']) { $object = Object::getForClass($this->className()); $images = Image::getForModel($object->id, $this->id); $result['images'] = ArrayHelper::getColumn($images, $configuration['images']['processValuesAs']); } return $result; }