/** * Displays homepage. * * @return mixed */ public function actionIndex() { $model = new ParsSettings(); if ($model->load(Yii::$app->request->post())) { $model->created = date("Y-m-d H:i:s", time() + 60 * ParsSettings::TIME_WAIT); if ($model->validate()) { $model->save(); return $this->redirect(Url::toRoute('pars/index')); } } return $this->render('index', ['model' => $model]); }
public function actionCsv($pars = 0) { if ($pars) { $model = Operation::find()->where("pars = :pars", [':pars' => (int) $pars])->orderBy("url asc")->all(); } else { $model = Operation::find()->orderBy("url asc")->all(); } include Yii::getAlias('@vendor/phpoffice/phpexcel/Classes/PHPExcel.php'); include Yii::getAlias('@vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php'); $objPHPExcel = new \PHPExcel(); $objPHPExcel->getProperties()->setCreator("Php Shaman")->setLastModifiedBy("Php Shaman")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Data for yelp parsing")->setKeywords("office 2007 openxml php")->setCategory("Data for yelp parsing"); // Add some data $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'name')->setCellValue('B1', 'categories')->setCellValue('C1', 'phone')->setCellValue('D1', 'state')->setCellValue('E1', 'city')->setCellValue('F1', 'address')->setCellValue('G1', 'postal')->setCellValue('H1', 'site')->setCellValue('I1', 'description'); foreach ($model as $k => $o) { $cat = []; foreach ($o->categories as $c) { $cat[] = $c->name; } $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($k + 2), $o->name)->setCellValue('B' . ($k + 2), join(' | ', $cat))->setCellValue('C' . ($k + 2), $o->phone)->setCellValue('D' . ($k + 2), ParsSettings::getState($o->state))->setCellValue('E' . ($k + 2), $o->city)->setCellValue('F' . ($k + 2), $o->address)->setCellValue('G' . ($k + 2), $o->postal)->setCellValue('H' . ($k + 2), $o->site)->setCellValue('I' . ($k + 2), $o->description); } header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="pars.xls"'); header('Cache-Control: max-age=0'); header('Cache-Control: max-age=1'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: cache, must-revalidate'); header('Pragma: public'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); }
/** * Finds the ParsSettings model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param string $id * @return ParsSettings the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = ParsSettings::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException(Yii::t('app', 'The requested page does not exist.')); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = ParsSettings::find(); $query->orderBy("id desc"); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id]); $query->andFilterWhere(['like', 'status', $this->status])->andFilterWhere(['like', 'search', $this->search])->andFilterWhere(['like', 'city', $this->city])->andFilterWhere(['like', 'state', $this->state])->andFilterWhere(['like', 'created', $this->created]); return $dataProvider; }
use yii\helpers\Html; use yii\grid\GridView; use app\models\ParsSettings; /* @var $this yii\web\View */ /* @var $searchModel app\models\ParsSettingsSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = Yii::t('app', 'Parsing result'); $this->params['breadcrumbs'][] = $this->title; ?> <div class="pars-settings-index"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php echo Html::a(Yii::t('app', 'Create new parsing'), ['/site/index'], ['class' => 'btn btn-success']); ?> </p> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'created', ['attribute' => 'status', 'format' => 'raw', 'value' => function ($data) { return $data->status; }, 'filter' => ParsSettings::listStatus()], 'search', 'city', ['attribute' => 'state', 'format' => 'raw', 'value' => function ($data) { return ParsSettings::getState($data->state); }, 'filter' => ParsSettings::listStates()], ['label' => Yii::t('app', 'View results'), 'format' => 'raw', 'value' => function ($data) { return Html::a(Yii::t('app', 'view'), ['/operation/index', 'pars' => $data->id]); }, 'filter' => false], ['class' => 'yii\\grid\\ActionColumn', 'template' => '{delete}']]]); ?> </div>
/** * @return \yii\db\ActiveQuery */ public function getPars0() { return $this->hasOne(ParsSettings::className(), ['id' => 'pars']); }
<h1><?php echo Html::encode($this->title); ?> </h1> <p> <a href="<?php echo Url::toRoute(['operation/csv', 'pars' => $pars]); ?> " class="btn btn-warning pull-right"><?php echo Yii::t('app', 'Save in CSV'); ?> </a> <br> </p> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], ['attribute' => 'pars', 'format' => 'raw', 'value' => function ($data) { return isset($data->pars0->search) ? $data->pars0->search : ''; }, 'filter' => ArrayHelper::map(ParsSettings::find()->orderBy("id desc")->all(), 'id', 'search')], 'name', ['attribute' => 'state', 'format' => 'raw', 'value' => function ($data) { return ParsSettings::getState($data->state); }, 'filter' => ParsSettings::listStates()], 'city', ['label' => Yii::t('app', 'Categories'), 'format' => 'raw', 'value' => function ($data) { $r = '<ul class="list-unstyled">'; foreach ($data->categories as $cat) { $r .= '<li>' . $cat->name . '</li>'; } $r .= '</ul>'; return $r; }, 'filter' => false], ['class' => 'yii\\grid\\ActionColumn']]]); ?> </div>
$this->title = $model->name; $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Operations'), 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; $r = '<ul class="list-unstyled">'; foreach ($model->categories as $cat) { $r .= '<li>' . $cat->name . '</li>'; } $r .= '</ul>'; ?> <div class="operation-view"> <h1><?php echo Html::encode($this->title); ?> </h1> <p> <?php echo Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']); ?> <?php echo Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), 'method' => 'post']]); ?> </p> <?php echo DetailView::widget(['model' => $model, 'attributes' => ['id', ['attribute' => 'pars', 'format' => 'raw', 'value' => isset($model->pars0->search) ? $model->pars0->search : ''], 'name', ['attribute' => 'state', 'format' => 'raw', 'value' => ParsSettings::getState($model->state)], 'city', 'address', 'phone', 'site:url', ['label' => Yii::t('app', 'Categories'), 'format' => 'raw', 'value' => $r], 'created']]); ?> </div>
$this->registerMetaTag(['name' => 'description', 'content' => $this->title]); ?> <div class="site-index"> <div class="body-content"> <div class="row"> <div class="col-lg-10"> <h2>Setting up a new parsing</h2> <div class="page-form"> <?php $form = ActiveForm::begin(); ?> <?php echo $form->field($model, 'search')->textInput(['maxlength' => true]); ?> <?php echo $form->field($model, 'state')->dropDownList(ParsSettings::listStates(), ['prompt' => 'All states']); ?> <?php echo $form->field($model, 'city')->textInput(['maxlength' => true]); ?> <div class="form-group"> <?php echo Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> </div> <?php ActiveForm::end(); ?> </div> </div>