public function up() { require_once \Yii::getAlias('@csRoot/services/simplehtmldom_1_5/simple_html_dom.php'); foreach (\app\models\HD::query()->all() as $item) { echo $item['title'] . ' => '; $doc = str_get_html($item['content']); $p = $doc->find('p'); $fields = []; if (count($p) > 0) { $sub_type = trim($p[0]->plaintext); $fields['sub_type'] = $sub_type; $items = $doc->find('select/option'); $new = []; foreach ($items as $i) { $new[] = [$item['id'], trim($i->attr['value']), trim($i->plaintext)]; } if (count($new) > 0) { \app\models\HDtown::batchInsert(['country_id', 'name', 'title'], $new); } } else { $i = $doc->find('input[name="city"]'); \app\models\HDtown::insert(['country_id' => $item['id'], 'name' => trim($i[0]->attr['value'])]); } $i = $doc->find('input[name="country_en"]'); if (count($i) > 0) { $fields['name'] = $i[0]->attr['value']; } if (count($fields)) { (new \app\models\HD($item))->update($fields); } echo 'ok' . "\n"; } }
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 ''; } }
public function up() { $this->execute('delete from gs_hd'); $this->execute('delete from gs_hd_town'); $c = new \app\services\HumanDesign2(); foreach (\app\services\HumanDesign2::$countryList as $k => $v) { echo $k . ' => '; $options = ['country' => $k, 'day' => '1', 'month' => '1', 'year' => '2015', 'hour' => '0', 'minute' => '0']; $curl = curl_init($c->url); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36'); curl_setopt($curl, CURLOPT_POST, 1); $query = http_build_query($options); curl_setopt($curl, CURLOPT_POSTFIELDS, $query); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 0); $body = curl_exec($curl); $result = new \StdClass(); $result->status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); $result->body = $body; curl_close($curl); \app\models\HD::insert(['title' => $k, 'content' => $result->body]); echo ' ok' . "\n"; } }
} }) }); JS ); $form = ActiveForm::begin(['id' => 'contact-form', 'enableAjaxValidation' => true]); ?> <?php echo $model->field($form, 'date'); ?> <?php echo $model->field($form, 'time'); ?> <?php echo $model->field($form, 'country')->dropDownList(\yii\helpers\ArrayHelper::map(\app\models\HD::query()->select('id,title')->orderBy(['title' => SORT_ASC])->all(), 'id', 'title')); ?> <?php echo $model->field($form, 'town')->dropDownList(\yii\helpers\ArrayHelper::merge([0 => 'Ничего не выбрано'], \yii\helpers\ArrayHelper::map(\app\models\HDtown::query(['country_id' => $model->country])->select('id,title')->orderBy(['title' => SORT_ASC])->all(), 'id', 'title'))); ?> <div class="form-group"> <hr> <?php echo Html::submitButton('Далее', ['class' => 'btn btn-primary', 'name' => 'contact-button', 'style' => 'width:100%', 'id' => 'buttonNext']); ?> </div> <?php ActiveForm::end(); ?> </div>
/** * AJAX * * REQUEST: * - id - int - идентификатор * * @return array */ public function actionProfile_human_design_ajax() { $id = self::getParam('id'); $item = HD::find($id); $items = HDtown::query(['country_id' => $id])->select(['id', 'title'])->all(); return self::jsonSuccess(['item' => ['sub_type' => $item->getField('sub_type')], 'items' => $items]); }