/** * Filter the project activities by date and project ID. * @return mixed */ public function filterActivities() { $query = ProjectActivity::find()->where(['>', 'date', date('Y-m-d')])->orderBy('date'); $dataProvider = new ActiveDataProvider(['query' => $query]); $query->andFilterWhere(['in', 'projectID', $this->projectIDs]); return $dataProvider; }
/** * Gets the activities associated with this project. * @return array */ public function getActivities() { return $this->hasMany(ProjectActivity::className(), ['projectID' => 'projectID'])->inverseOf('project'); }
/* @var $searchModel app\models\ProjectActivityIndex */ $this->title = 'Project Activities'; ?> <div class="project-activity-index"> <div class="page-header"> <h1><?php echo Html::encode($this->title); ?> </h1> </div> <div class="col-md-3"> <?php $form = ActiveForm::begin(['id' => 'activity-project-filter-form']); $projects = ProjectActivity::find()->select(['projectID'])->distinct()->all(); $listItems = []; foreach ($projects as $project) { $listItems[$project->projectID] = Html::encode($project->project->name); } echo $form->field($model, 'projectIDs')->checkboxList($listItems)->label('Projects'); ?> <div class="form-group"> <?php echo Html::submitButton('Filter Activities', ['class' => 'btn btn-primary']); ?> </div> <?php ActiveForm::end(); if (\Yii::$app->user->can('editActivities')) { echo Html::a('Create Activity', ['create'], ['class' => 'btn btn-success']);
/** * Sends an email with a link, for verifying the given email address. * @param integer $id * @return boolean whether the email was send */ public function sendActivityFollowersEmail($id) { $projectActivity = ProjectActivity::findOne($id); $project = $projectActivity->project; $userIds = explode(',', $projectActivity->followers->usersFollowing); foreach ($userIds as $userId) { $user = User::findOne($userId); if ($user) { \Yii::$app->mailer->compose('emailActivityFollower', ['user' => $user])->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])->setTo($user->email)->setSubject('Activity update notification for ' . $project->name . ', acitivity ' . $projectActivity->name)->send(); } } $projectFollowerIDs = explode(',', $project->followers->usersFollowing); $projectFollowerIDs = array_diff($projectFollowerIDs, $userIds); foreach ($projectFollowerIDs as $userId) { $user = User::findOne($userId); if ($user) { \Yii::$app->mailer->compose('emailProjectActivityFollower', ['user' => $user])->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])->setTo($user->email)->setSubject('Project activity update notification for ' . $project->name)->send(); } } }