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; }
/** * Возвращает место рождения в виде строки * * @return string */ public function getBirthPlace() { $c = $this->getField('birth_country'); $t = $this->getField('birth_town'); $arr = []; if ($c) { $country = HD::find($c); if ($country) { $arr[] = $country->getField('title'); } } if ($t) { $town = HDtown::find($t); if ($town) { $arr[] = $town->getField('title'); } } if (count($arr) > 0) { return join(', ', $arr); } else { return ''; } }