/** * Renders the widget. */ public function run() { if (is_null($this->variation)) { return ''; } $asset = DisplayWidgetAsset::register($this->getView()); $uploads = Uploads::findByReference($this->type, $this->type_id); return $this->render('display_widget', ['uploads' => $uploads, 'variation' => $this->variation, 'htmlOptions' => $this->htmlOptions]); }
/** * Return array of already uploaded files. Used for display uploads in update form. * @param $type * @param $type_id * @param string $variation * @return array */ public function getAlreadyUploadedByReference($type, $type_id, $variation = '_thumb') { if (is_null($type_id)) { return []; } $uploads = []; $array = Uploads::findByReference($type, $type_id); if (!is_null($array)) { foreach ($array as $item) { /** * @var $item Uploads */ array_push($uploads, array('src' => $item->getPublicFileUrl($variation), 'type' => $item->mime, 'name' => $item->original, 'size' => $item->size, 'data' => array('id' => $item->id, 'type' => $item->type, 'type_id' => $item->type_id))); } } return $uploads; }
public function updateFileIdInOwnerModel($event) { $type_id = $this->owner->getPrimaryKey(); $configs = VariationHelper::getRawConfig(); foreach ($configs as $type => $config) { if (!in_array($type, $this->registeredTypes)) { continue; } if (isset($config['_insert'])) { $attribute = array_shift($config['_insert']); $files = Uploads::findByReference($type, $type_id); if (!is_null($files)) { $file = array_shift($files); //TODO replace with ActiveRecord::updateAttributes() to avoid loops if ($this->owner->getAttribute($attribute) !== $file->id) { $this->owner->setAttribute($attribute, $file->id); $this->owner->save(); // one more loop } } } } }