public function action() { // подготавливаю данные $country = HD::find($this->country)->getField('name'); $town = HDtown::find($this->town)->getField('name'); $datetime = $this->date->format('Y-m-d') . ' ' . $this->time; // получаю данные Дизайна Человека $extractor = new \app\modules\HumanDesign\calculate\YourHumanDesignRu(); $data = $extractor->calc(new \DateTime($datetime), $country, $town); // сохраняю картинку $url = new \cs\services\Url($data->image); $path = new SitePath('/upload/HumanDesign'); $path->add([Yii::$app->user->id, 8, $url->getExtension()]); $path->write($url->read()); $data->image = $path->getPath(); // обновляю пользовтельские данные /** @var \app\models\User $user */ $user = Yii::$app->user->identity; $fields = ['human_design' => $data->getJson(), 'birth_date' => $this->date->format('Y-m-d'), 'birth_time' => $this->time . ':00', 'birth_country' => $this->country, 'birth_town' => $this->town]; $user->update($fields); return true; }
/** * @param array $field * @param \cs\base\BaseForm $model * * @return array поля для обновления в БД */ public static function onUpdate($field, $model) { $fieldName = $field[BaseForm::POS_DB_NAME]; $v = $model->{$fieldName}; $isDelete = false; $hasFile = false; $hasUrl = false; if (ArrayHelper::getValue(Yii::$app->request->post(), $model->formName() . '.' . $fieldName . '-is_delete', 0) == 1) { $isDelete = true; } $fileModel = $v['file']; if (!is_null($fileModel)) { if ($fileModel->error == 0) { $hasFile = true; } } if ($v['url'] != '') { $hasUrl = true; } $choose = ''; if ($isDelete == false && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == false && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($isDelete == true && $hasUrl == false && $hasFile == false) { $choose = 'delete'; } if ($isDelete == true && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == true && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == true && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == false && $hasFile == true) { $choose = 'file'; } if ($isDelete == false && $hasUrl == true && $hasFile == false) { $choose = 'url'; } if ($isDelete == false && $hasUrl == true && $hasFile == true) { $choose = 'file'; } if ($choose == 'delete') { $row = $model->getRow(); $dbValue = ArrayHelper::getValue($row, $fieldName, ''); if ($dbValue != '') { // удалить старые файлы $f = new SitePath($dbValue); $f->deleteFile(); } return [$fieldName => '']; } if ($choose == 'url') { try { $data = file_get_contents($v['url']); } catch (\Exception $e) { $data = ''; } if ($data == '') { return []; } $file = File::content($data); $url = new \cs\services\Url($v['url']); $extension = $url->getExtension('jpg'); return self::save($file, $extension, $field, $model); } if ($choose == 'file') { $file = File::path($fileModel->tempName); $extension = $fileModel->extension; return self::save($file, $extension, $field, $model); } return []; }