public function getUnreadEmails($reload = false) { if ($this->_unreadEmails === null || $reload) { $this->_unreadEmails = Email::find()->where(['read' => 0, 'action' => Email::ACTION_RECEIVED])->count(); } return $this->_unreadEmails; }
/** * Creates data provider instance with search query applied * @return ActiveDataProvider */ public function search($params) { // Transform the date to a unix timestamp for usage in the search query if (isset($params['EmailSearch']['created_at']) && trim($params['EmailSearch']['created_at']) != '') { $origDate = $params['EmailSearch']['created_at']; $dateCreated = strtotime($origDate); $dateCreatedBeginOfDay = \DateTime::createFromFormat('Y-m-d H:i:s', (new \DateTime())->setTimestamp($dateCreated)->format('Y-m-d 00:00:00'))->getTimestamp(); $dateCreatedEndOfDay = \DateTime::createFromFormat('Y-m-d H:i:s', (new \DateTime())->setTimestamp($dateCreated)->format('Y-m-d 23:59:59'))->getTimestamp(); } $query = Email::find(); // Add action filter $query->andFilterWhere(['action' => Yii::$app->session->get('emails.actionType')]); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]], 'pagination' => ['pageSize' => 50]]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } if (isset($dateCreatedBeginOfDay) && isset($dateCreatedEndOfDay)) { $query->andFilterWhere(['between', 'created_at', $dateCreatedBeginOfDay, $dateCreatedEndOfDay]); // Format the date for display $this->created_at = date('d-m-Y', $dateCreated); } $query->andFilterWhere(['like', 'subject', $this->subject]); $query->andFilterWhere(['like', 'from', $this->from]); $query->andFilterWhere(['like', 'to', $this->to]); $query->andFilterWhere(['like', 'form', $this->form]); return $dataProvider; }
protected function findModel($id) { if (($model = Email::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException(Yii::t('app', 'The requested item does not exist')); } }
<?php use yii\helpers\Html; use infoweb\email\models\Email; $this->title = Yii::t('app', 'View {modelClass}', ['modelClass' => Yii::t('infoweb/email', 'Email')]); $this->params['breadcrumbs'][] = ['label' => Yii::t('infoweb/email', 'Emails') . ': ' . strtolower(Email::actionTypes()[Yii::$app->session->get('emails.actionType')]), 'url' => ['index']]; $this->params['breadcrumbs'][] = ['label' => "#{$model->id}", 'url' => ['update', 'id' => $model->id]]; $this->params['breadcrumbs'][] = Yii::t('app', 'View'); ?> <div class="email-update"> <h1><?php echo Html::encode($this->title); ?> </h1> <?php echo $this->render('_form', ['model' => $model]); ?> </div>
/** * Save's the form email to the database * * @return boolean */ public function saveEmail() { $email = new Email($this->sendedMail); return $email->save(); }
/** * @return \yii\db\ActiveQuery */ public function getEmail() { return $this->hasOne(Email::className(), ['id' => 'email_id']); }
}, 'filterType' => GridView::FILTER_DATE, 'filterWidgetOptions' => ['pluginOptions' => ['format' => 'dd-mm-yyyy', 'autoclose' => true, 'todayHighlight' => true]], 'width' => '220px', 'hAlign' => 'center'], ['class' => 'kartik\\grid\\ActionColumn', 'template' => $buttonsTemplate, 'buttons' => ['resend' => function ($url, $model) { if (Yii::$app->session->get('emails.actionType') != Email::ACTION_SENT) { return false; } $resent = $model->getHistory()->resent()->count(); $resentLabel = ''; if ($resent) { $resentLabel = " <span class=\"label label-danger\">{$resent}</span>"; } return Html::a("<span class=\"glyphicon glyphicon-send\"></span>{$resentLabel}", Url::toRoute(['email/update', 'id' => $model->id]), ['title' => Yii::t('infoweb/email', 'Resend'), 'data-pjax' => '0', 'data-toggle' => 'tooltip', 'class' => 'resend-btn']); }], 'updateOptions' => ['title' => Yii::t('app', 'View'), 'data-toggle' => 'tooltip'], 'deleteOptions' => ['title' => Yii::t('app', 'Delete'), 'data-toggle' => 'tooltip'], 'width' => '120px']]; ?> <div class="email-index"> <?php // Title $actionTypes = Email::actionTypes(); if (!Yii::$app->getModule('email')->enableSent) { unset($actionTypes[Email::ACTION_SENT]); } ?> <h1> <?php echo Html::encode($this->title); ?> : <?php echo Html::radioButtonGroup('actionType', Yii::$app->session->get('emails.actionType'), $actionTypes); ?> <?php // Buttons ?>